From 1762437121c91c6972d3fb8c22266d0c8d837f0c Mon Sep 17 00:00:00 2001 From: PMunch Date: Thu, 17 Oct 2019 15:10:33 +0200 Subject: [PATCH 001/394] Add dynamic library support --- Makefile.in | 26 +++- config.h.in | 3 + configure | 35 +++++ configure.ac | 22 +++ dynlibmod/dynlibmod.c | 236 ++++++++++++++++++++++++++++++++ dynlibmod/dynlibmod.h | 71 ++++++++++ dynlibmod/examples/helloworld.c | 45 ++++++ services/modstack.c | 9 ++ util/config_file.c | 4 + util/config_file.h | 3 + util/configlexer.lex | 2 + util/configparser.y | 18 ++- util/fptr_wlist.c | 21 +++ 13 files changed, 490 insertions(+), 5 deletions(-) create mode 100644 dynlibmod/dynlibmod.c create mode 100644 dynlibmod/dynlibmod.h create mode 100644 dynlibmod/examples/helloworld.c diff --git a/Makefile.in b/Makefile.in index d9d4fe7ad..21367eec3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -25,6 +25,7 @@ DNSTAP_SRC=@DNSTAP_SRC@ DNSTAP_OBJ=@DNSTAP_OBJ@ DNSCRYPT_SRC=@DNSCRYPT_SRC@ DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ +WITH_DYNLIBMODULE=@WITH_DYNLIBMODULE@ WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ WITH_PYUNBOUND=@WITH_PYUNBOUND@ PY_MAJOR_VERSION=@PY_MAJOR_VERSION@ @@ -87,6 +88,12 @@ LINTFLAGS+="-D__uint16_t=uint16_t" "-DEVP_PKEY_ASN1_METHOD=int" "-D_RuneLocale=i INSTALL=$(SHELL) $(srcdir)/install-sh +DYNLIBMOD_SRC=dynlibmod/dynlibmod.c +DYNLIBMOD_OBJ=@DYNLIBMOD_OBJ@ +DYNLIBMOD_HEADER=@DYNLIBMOD_HEADER@ +DYNLIBMOD_EXTRALIBS=@DYNLIBMOD_EXTRALIBS@ + + #pythonmod.c is not here, it is mentioned by itself in its own rules, #makedepend fails on missing interface.h otherwise. PYTHONMOD_SRC=pythonmod/pythonmod_utils.c @@ -139,7 +146,7 @@ autotrust.lo val_anchor.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ -$(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo +$(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 COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo @@ -326,7 +333,7 @@ libunbound.la: $(LIBUNBOUND_OBJ_LINK) $(LINK_LIB) $(UBSYMS) -o $@ $(LIBUNBOUND_OBJ_LINK) -rpath $(libdir) $(SSLLIB) $(LIBS) unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) @@ -453,6 +460,7 @@ clean: rm -f unbound$(EXEEXT) unbound-checkconf$(EXEEXT) unbound-host$(EXEEXT) unbound-control$(EXEEXT) unbound-anchor$(EXEEXT) unbound-control-setup libunbound.la unbound.h rm -f $(ALL_SRC:.c=.lint) rm -f _unbound.la libunbound/python/libunbound_wrap.c libunbound/python/unbound.py pythonmod/interface.h pythonmod/unboundmodule.py + rm -f libunbound.a rm -rf autom4te.cache .libs build doc/html doc/xml realclean: clean @@ -622,6 +630,7 @@ depend: -e 's?$$(srcdir)/pythonmod/pythonmod.h?$$(PYTHONMOD_HEADER)?g' \ -e 's?$$(srcdir)/edns-subnet/subnetmod.h $$(srcdir)/edns-subnet/subnet-whitelist.h $$(srcdir)/edns-subnet/edns-subnet.h $$(srcdir)/edns-subnet/addrtree.h?$$(SUBNET_HEADER)?g' \ -e 's?$$(srcdir)/ipsecmod/ipsecmod.h $$(srcdir)/ipsecmod/ipsecmod-whitelist.h?$$(IPSECMOD_HEADER)?g' \ + -e 's?$$(srcdir)/dynlibmod/dynlibmod.h?$$(DYNLIBMOD_HEADER)?g' \ -e 's!\(.*\)\.o[ :]*!\1.lo \1.o: !g' \ > $(DEPEND_TMP) cp $(DEPEND_TARGET) $(DEPEND_TMP2) @@ -783,7 +792,7 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/ipset/ipset.h + $(srcdir)/ipset/ipset.h $(srcdir)/dynlibmod/dynlibmod.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -865,7 +874,8 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h $(PYTHONMOD_HEADER) \ $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h + $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h \ + $(srcdir)/dynlibmod/dynlibmod.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h @@ -1072,6 +1082,14 @@ dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer. dnstap/dnstap.pb-c.h dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ +dynlibmod.lo dynlibmod.o: $(srcdir)/dynlibmod/dynlibmod.c config.h $(srcdir)/dynlibmod/dynlibmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h\ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ diff --git a/config.h.in b/config.h.in index d8ec50a6d..a07b970bc 100644 --- a/config.h.in +++ b/config.h.in @@ -836,6 +836,9 @@ /* Define if you want Python module. */ #undef WITH_PYTHONMODULE +/* Define if you want dynamic library module. */ +#undef WITH_DYNLIBMODULE + /* Define if you want PyUnbound. */ #undef WITH_PYUNBOUND diff --git a/configure b/configure index 4e222879e..41984f652 100755 --- a/configure +++ b/configure @@ -697,6 +697,10 @@ PYTHON_LDFLAGS PYTHON_CPPFLAGS PYTHON PYTHON_VERSION +DYNLIBMOD_EXTRALIBS +DYNLIBMOD_HEADER +DYNLIBMOD_OBJ +WITH_DYNLIBMODULE PTHREAD_CFLAGS_ONLY PTHREAD_CFLAGS PTHREAD_LIBS @@ -851,6 +855,7 @@ enable_alloc_nonregional with_pthreads with_solaris_threads with_syslog_facility +with_dynlibmodule with_pyunbound with_pythonmodule enable_swig_version_check @@ -1607,6 +1612,8 @@ Optional Packages: --with-solaris-threads use solaris native thread library. --with-syslog-facility=LOCAL0 - LOCAL7 set SYSLOG_FACILITY, default DAEMON + --with-dynlibmodule build dynamic library module, or + --without-dynlibmodule to disable it. (default=no) --with-pyunbound build PyUnbound, or --without-pyunbound to skip it. (default=no) --with-pythonmodule build Python module, or --without-pythonmodule to @@ -17123,6 +17130,34 @@ cat >>confdefs.h <<_ACEOF _ACEOF +# Check for dynamic library module + +# Check whether --with-dynlibmodule was given. +if test "${with_dynlibmodule+set}" = set; then : + withval=$with_dynlibmodule; +else + withval="no" +fi + + +if test x_$withval != x_no; then + +$as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h + + WITH_DYNLIBMODULE=yes + + DYNLIBMOD_OBJ="dynlibmod.lo" + + DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' + + if test $on_mingw = "no"; then + DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + else + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + fi + +fi + # Check for PyUnbound # Check whether --with-pyunbound was given. diff --git a/configure.ac b/configure.ac index 216a78c65..7d108d002 100644 --- a/configure.ac +++ b/configure.ac @@ -616,6 +616,28 @@ case "${UNBOUND_SYSLOG_FACILITY}" in esac AC_DEFINE_UNQUOTED(UB_SYSLOG_FACILITY,${UNBOUND_SYSLOG_FACILITY},[the SYSLOG_FACILITY to use, default LOG_DAEMON]) +# Check for dynamic library module +AC_ARG_WITH(dynlibmodule, + AC_HELP_STRING([--with-dynlibmodule], + [build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), + [], [ withval="no" ]) + +if test x_$withval != x_no; then + AC_DEFINE(WITH_DYNLIBMODULE, 1, [Define if you want dynlib module.]) + WITH_DYNLIBMODULE=yes + AC_SUBST(WITH_DYNLIBMODULE) + DYNLIBMOD_OBJ="dynlibmod.lo" + AC_SUBST(DYNLIBMOD_OBJ) + DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' + AC_SUBST(DYNLIBMOD_HEADER) + if test $on_mingw = "no"; then + DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + else + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + fi + AC_SUBST(DYNLIBMOD_EXTRALIBS) +fi + # Check for PyUnbound AC_ARG_WITH(pyunbound, AC_HELP_STRING([--with-pyunbound], diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c new file mode 100644 index 000000000..47d315306 --- /dev/null +++ b/dynlibmod/dynlibmod.c @@ -0,0 +1,236 @@ +#include "config.h" +#include "util/module.h" +#include "util/config_file.h" +#include "dynlibmod/dynlibmod.h" + +#if HAVE_WINDOWS_H +#include +#define __DYNSYM FARPROC +#define __LOADSYM GetProcAddress +void log_dlerror() { + DWORD dwLastError = GetLastError(); + LPSTR MessageBuffer; + DWORD dwBufferLength; + DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_IGNORE_INSERTS | + FORMAT_MESSAGE_FROM_SYSTEM ; + if(dwBufferLength = FormatMessageA( + dwFormatFlags, + NULL, // module to get message from (NULL == system) + dwLastError, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language + (LPSTR) &MessageBuffer, + 0, + NULL + )) + { + DWORD dwBytesWritten; + + // + // Output message string on stderr. + // + log_info("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); + //WriteFile( + // GetStdHandle(STD_ERROR_HANDLE), + // MessageBuffer, + // dwBufferLength, + // &dwBytesWritten, + // NULL + // ); + + // + // Free the buffer allocated by the system. + // + LocalFree(MessageBuffer); + } + +} +#else +#include +#define __DYNSYM void* +#define __LOADSYM dlsym +void log_dlerror() { + log_err("dynlibmod: %s", dlerror()); +} +#endif + +/** + * Global state for the module. + */ + +typedef int (*func_init_t)(int, struct config_file*); +typedef int (*func_deinit_t)(int); +typedef int (*func_operate_t)(int, enum module_ev event, struct module_qstate* qstate, void*); +typedef int (*func_inform_t)(int, struct module_qstate* qstate, struct module_qstate* super, void*); +struct dynlibmod_env { + + /** Dynamic library filename. */ + const char* fname; + + /** Module init function */ + func_init_t func_init; + /** Module deinit function */ + func_deinit_t func_deinit; + /** Module operate function */ + func_operate_t func_operate; + /** Module super_inform function */ + func_inform_t func_inform; + + /** Module qstate. */ + struct module_qstate* qstate; +}; + +struct dynlibmod_qstate { + + /** Module per query data. */ + void* data; +}; + +/** dynlib module init */ +int dynlibmod_init(struct module_env* env, int id) { + struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); + if (!de) + { + log_err("dynlibmod: malloc failure"); + return 0; + } + + env->modinfo[id] = (void*) de; + + de->fname = env->cfg->dynlib_file; + if (de->fname == NULL || de->fname[0] == 0) { + log_err("dynlibmod: no dynamic library given."); + return 0; + } + log_info("Trying to load library %s", de->fname); +#ifndef HAVE_WINDOWS_H + void* dynamic_library = dlopen(de->fname, RTLD_LAZY | RTLD_GLOBAL); +#else + HMODULE dynamic_library = LoadLibrary(de->fname); +#endif + if (dynamic_library == NULL) { + log_dlerror(); + log_err("dynlibmod: unable to load dynamic library."); + return 0; + } else { + __DYNSYM initializer = __LOADSYM(dynamic_library,"init"); + if (initializer == NULL) { + log_err("dynlibmod: unable to load init procedure from dynamic library."); +#ifndef HAVE_WINDOWS_H + log_err("dynlibmod: %s", dlerror()); +#endif + return 0; + } else { + de->func_init = (func_init_t) initializer; + } + __DYNSYM deinitializer = __LOADSYM(dynamic_library,"deinit"); + if (deinitializer == NULL) { + log_err("dynlibmod: unable to load deinit procedure from dynamic library."); +#ifndef HAVE_WINDOWS_H + log_err("dynlibmod: %s", dlerror()); +#endif + return 0; + } else { + de->func_deinit = (func_deinit_t) deinitializer; + } + __DYNSYM operate = __LOADSYM(dynamic_library,"operate"); + if (operate == NULL) { + log_err("dynlibmod: unable to load operate procedure from dynamic library."); +#ifndef HAVE_WINDOWS_H + log_err("dynlibmod: %s", dlerror()); +#endif + return 0; + } else { + de->func_operate = (func_operate_t) operate; + } + __DYNSYM inform = __LOADSYM(dynamic_library,"inform_super"); + if (inform == NULL) { + log_err("dynlibmod: unable to load inform_super procedure from dynamic library."); +#ifndef HAVE_WINDOWS_H + log_err("dynlibmod: %s", dlerror()); +#endif + return 0; + } else { + de->func_inform = (func_inform_t) inform; + } + } + de->func_init(id, env->cfg); + return 1; +} + +/** dynlib module deinit */ +void dynlibmod_deinit(struct module_env* env, int id) { + struct dynlibmod_env* de = env->modinfo[id]; + if(de == NULL) + return; + de->func_deinit(id); + de->fname = NULL; + free(de); +} + +/** dynlib module operate on a query */ +void dynlibmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound) { + struct dynlibmod_env* de = qstate->env->modinfo[id]; + struct dynlibmod_qstate* dq = (struct dynlibmod_qstate*)qstate->minfo[id]; + + void * data = dq == NULL ? NULL : dq->data; + int ret = de->func_operate(id, event, qstate, data); + if (ret != 1) { + log_err("dynlibmod: dynamic library returned bad code from operate %d.", ret); + qstate->ext_state[id] = module_error; + } +} + +/** dynlib module */ +void dynlibmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) { + struct dynlibmod_env* de = qstate->env->modinfo[id]; + struct dynlibmod_qstate* dq = (struct dynlibmod_qstate*)qstate->minfo[id]; + + void * data = dq == NULL ? NULL : dq->data; + int ret = de->func_inform(id, qstate, super, data); + if (ret != 1) { + log_err("dynlibmod: dynamic library returned bad code from inform_super %d.", ret); + qstate->ext_state[id] = module_error; + } +} + +/** dynlib module cleanup query state */ +void dynlibmod_clear(struct module_qstate* qstate, int id) { + struct dynlibmod_qstate* dq; + if (qstate == NULL) + return; + + dq = (struct dynlibmod_qstate*)qstate->minfo[id]; + verbose(VERB_ALGO, "dynlibmod: clear, id: %d, dq:%p", id, dq); + if(dq != NULL) { + /* Free qstate */ + free(dq); + } + + qstate->minfo[id] = NULL; +} + +/** dynlib module alloc size routine */ +size_t dynlibmod_get_mem(struct module_env* env, int id) { + struct dynlibmod_env* de = (struct dynlibmod_env*)env->modinfo[id]; + verbose(VERB_ALGO, "dynlibmod: get_mem, id: %d, de:%p", id, de); + if(!de) + return 0; + return sizeof(*de); +} + +/** + * The module function block + */ +static struct module_func_block dynlibmod_block = { + "dynlib", + &dynlibmod_init, &dynlibmod_deinit, &dynlibmod_operate, &dynlibmod_inform_super, + &dynlibmod_clear, &dynlibmod_get_mem +}; + +struct module_func_block* dynlibmod_get_funcblock(void) +{ + return &dynlibmod_block; +} diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h new file mode 100644 index 000000000..ac5d737b4 --- /dev/null +++ b/dynlibmod/dynlibmod.h @@ -0,0 +1,71 @@ +/* + * dynlibmod.h: module header file + * + * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) + * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * * Neither the name of the organization nor the names of its + * contributors may be used to endorse or promote products derived from this + * software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/** + * \file + * Dynamic loading module for unbound. Loads dynamic library. + */ +#ifndef DYNLIBMOD_H +#define DYNLIBMOD_H +#include "util/module.h" +#include "services/outbound_list.h" + +/** + * Get the module function block. + * @return: function block with function pointers to module methods. + */ +struct module_func_block* dynlibmod_get_funcblock(void); + +/** dynlib module init */ +int dynlibmod_init(struct module_env* env, int id); + +/** dynlib module deinit */ +void dynlibmod_deinit(struct module_env* env, int id); + +/** dynlib module operate on a query */ +void dynlibmod_operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* outbound); + +/** dynlib module */ +void dynlibmod_inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super); + +/** dynlib module cleanup query state */ +void dynlibmod_clear(struct module_qstate* qstate, int id); + +/** dynlib module alloc size routine */ +size_t dynlibmod_get_mem(struct module_env* env, int id); + +#endif /* DYNLIBMOD_H */ diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c new file mode 100644 index 000000000..76c1df215 --- /dev/null +++ b/dynlibmod/examples/helloworld.c @@ -0,0 +1,45 @@ +/* + * This is an example to show how dynamic libraries can be made to work with + * unbound. To build a .so file simply run: + * gcc -I../.. -shared -Wall -Werror -fpic -o helloworld.so helloworld.c + * And to build for windows, first make unbound with the --with-dynlibmod + * switch, then use this command: + * x86_64-w64-mingw32-gcc -m64 -I../.. -shared -Wall -Werror -fpic -o helloworld.dll helloworld.c -L../.. -l:libunbound.a + * to cross-compile a 64-bit Windows DLL. + */ + +#include "../../config.h" +#include "../../util/module.h" + +#ifdef HAVE_WINDOWS_H +#define EXPORT __declspec(dllexport) +#else +#define EXPORT +#endif + +EXPORT int init(int id, struct config_file* cfg) { + log_info("Hello world from init"); + return 1; +} + +EXPORT int deinit(int id) { + log_info("Hello world from deinit"); + return 1; +} + +EXPORT int operate(int id, enum module_ev event, struct module_qstate* qstate, void* data) { + log_info("Hello world from operate"); + if (event == module_event_new || event == module_event_pass) { + qstate->ext_state[id] = module_wait_module; + } else if (event == module_event_moddone) { + qstate->ext_state[id] = module_finished; + } else { + qstate->ext_state[id] = module_error; + } + return 1; +} + +EXPORT int inform_super(int id, struct module_qstate* qstate, struct module_qstate* super, void* data) { + log_info("Hello world from inform_super"); + return 1; +} diff --git a/services/modstack.c b/services/modstack.c index 68e592814..a600549b1 100644 --- a/services/modstack.c +++ b/services/modstack.c @@ -51,6 +51,9 @@ #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef WITH_DYNLIBMODULE +#include "dynlibmod/dynlibmod.h" +#endif #ifdef USE_CACHEDB #include "cachedb/cachedb.h" #endif @@ -140,6 +143,9 @@ module_list_avail(void) #ifdef WITH_PYTHONMODULE "python", #endif +#ifdef WITH_DYNLIBMODULE + "dynlib", +#endif #ifdef USE_CACHEDB "cachedb", #endif @@ -171,6 +177,9 @@ module_funcs_avail(void) #ifdef WITH_PYTHONMODULE &pythonmod_get_funcblock, #endif +#ifdef WITH_DYNLIBMODULE + &dynlibmod_get_funcblock, +#endif #ifdef USE_CACHEDB &cachedb_get_funcblock, #endif diff --git a/util/config_file.c b/util/config_file.c index 119b22238..7a8fb0bbc 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -264,6 +264,7 @@ config_create(void) cfg->unblock_lan_zones = 0; cfg->insecure_lan_zones = 0; cfg->python_script = NULL; + cfg->dynlib_file = NULL; cfg->remote_control_enable = 0; cfg->control_ifs.first = NULL; cfg->control_ifs.last = NULL; @@ -610,6 +611,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("control-cert-file:", control_cert_file) else S_STR("module-config:", module_conf) else S_STRLIST("python-script:", python_script) + else S_STR("dynlib-file:", dynlib_file) else S_YNO("disable-dnssec-lame-check:", disable_dnssec_lame_check) #ifdef CLIENT_SUBNET /* Can't set max subnet prefix here, since that value is used when @@ -1062,6 +1064,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "insecure-lan-zones", insecure_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) else O_LST(opt, "python-script", python_script) + else O_STR(opt, "dynlib-file", dynlib_file) else O_YNO(opt, "disable-dnssec-lame-check", disable_dnssec_lame_check) else O_DEC(opt, "ip-ratelimit", ip_ratelimit) else O_DEC(opt, "ratelimit", ratelimit) @@ -1398,6 +1401,7 @@ config_delete(struct config_file* cfg) free(cfg->version); free(cfg->module_conf); free(cfg->outgoing_avail_ports); + free(cfg->dynlib_file); config_delstrlist(cfg->caps_whitelist); config_delstrlist(cfg->private_address); config_delstrlist(cfg->private_domain); diff --git a/util/config_file.h b/util/config_file.h index b3ef930a0..6706ab08b 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -439,6 +439,9 @@ struct config_file { /** Python script file */ struct config_strlist* python_script; + /** Dynamic library file */ + char* dynlib_file; + /** Use systemd socket activation. */ int use_systemd; diff --git a/util/configlexer.lex b/util/configlexer.lex index a86ddf55d..1010dcda9 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -404,6 +404,8 @@ control-key-file{COLON} { YDVAR(1, VAR_CONTROL_KEY_FILE) } control-cert-file{COLON} { YDVAR(1, VAR_CONTROL_CERT_FILE) } python-script{COLON} { YDVAR(1, VAR_PYTHON_SCRIPT) } python{COLON} { YDVAR(0, VAR_PYTHON) } +dynlib-file{COLON} { YDVAR(1, VAR_DYNLIB_FILE) } +dynlib{COLON} { YDVAR(0, VAR_DYNLIB) } domain-insecure{COLON} { YDVAR(1, VAR_DOMAIN_INSECURE) } minimal-responses{COLON} { YDVAR(1, VAR_MINIMAL_RESPONSES) } rrset-roundrobin{COLON} { YDVAR(1, VAR_RRSET_ROUNDROBIN) } diff --git a/util/configparser.y b/util/configparser.y index 10227a2ff..5f58d75b3 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -168,6 +168,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STREAM_WAIT_SIZE VAR_TLS_CIPHERS VAR_TLS_CIPHERSUITES %token VAR_TLS_SESSION_TICKET_KEYS %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 +%token VAR_DYNLIB VAR_DYNLIB_FILE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -175,7 +176,7 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | - ipsetstart contents_ipset | authstart contents_auth + ipsetstart contents_ipset | authstart contents_auth | dynlibstart contents_dl ; /* server: declaration */ @@ -2741,6 +2742,21 @@ py_script: VAR_PYTHON_SCRIPT STRING_ARG if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, $2)) yyerror("out of memory"); } +dynlibstart: VAR_DYNLIB + { + OUTYY(("\nP(dynlib:)\n")); + } + ; +contents_dl: contents_dl content_dl + | ; +content_dl: dl_file + ; +dl_file: VAR_DYNLIB_FILE STRING_ARG + { + OUTYY(("P(dynlib-file:%s)\n", $2)); + free(cfg_parser->cfg->dynlib_file); + cfg_parser->cfg->dynlib_file = $2; + } server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG { OUTYY(("P(disable_dnssec_lame_check:%s)\n", $2)); diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index f5da501de..20eaeb137 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -81,6 +81,9 @@ #ifdef WITH_PYTHONMODULE #include "pythonmod/pythonmod.h" #endif +#ifdef WITH_DYNLIBMODULE +#include "dynlibmod/dynlibmod.h" +#endif #ifdef USE_CACHEDB #include "cachedb/cachedb.h" #endif @@ -379,6 +382,9 @@ fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_init) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_init) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_init) return 1; #endif @@ -404,6 +410,9 @@ fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_deinit) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_deinit) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_deinit) return 1; #endif @@ -430,6 +439,9 @@ fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate* qstate, #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_operate) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_operate) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_operate) return 1; #endif @@ -456,6 +468,9 @@ fptr_whitelist_mod_inform_super(void (*fptr)( #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_inform_super) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_inform_super) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_inform_super) return 1; #endif @@ -482,6 +497,9 @@ fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate, #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_clear) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_clear) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_clear) return 1; #endif @@ -507,6 +525,9 @@ fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env, int id)) #ifdef WITH_PYTHONMODULE else if(fptr == &pythonmod_get_mem) return 1; #endif +#ifdef WITH_DYNLIBMODULE + else if(fptr == &dynlibmod_get_mem) return 1; +#endif #ifdef USE_CACHEDB else if(fptr == &cachedb_get_mem) return 1; #endif From 8eeb910e3d07f1a1b1f540ffc0fc34c5c2097f8f Mon Sep 17 00:00:00 2001 From: PMunch Date: Mon, 21 Oct 2019 14:20:33 +0200 Subject: [PATCH 002/394] Improve dynlib module and add documentation Dynamic library module is now only a thin wrapper that loads dynamic libraries and forwards all function calls directly to the loaded module. This meant adding get_mem and clear, and get_mem calls have been added in the expected places. Documentation has also been added to the example.conf and the unbound.conf manpage. --- daemon/remote.c | 10 +++ doc/example.conf.in | 10 +++ doc/unbound.conf.5.in | 20 ++++- dynlibmod/dynlibmod.c | 135 ++++++++++++++------------------ dynlibmod/dynlibmod.h | 3 +- dynlibmod/examples/helloworld.c | 21 +++-- libunbound/unbound.h | 1 + smallapp/unbound-control.c | 3 + util/shm_side/shm_main.c | 4 + 9 files changed, 119 insertions(+), 88 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 1689154f5..21ab2f3bc 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -803,6 +803,9 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, size_t dnscrypt_shared_secret = 0; size_t dnscrypt_nonce = 0; #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + size_t dynlib = 0; +#endif /* WITH_DYNLIBMODULE */ msg = slabhash_get_mem(daemon->env->msg_cache); rrset = slabhash_get_mem(&daemon->env->rrset_cache->table); val = mod_get_mem(&worker->env, "validator"); @@ -821,6 +824,9 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, dnscrypt_nonce = slabhash_get_mem(daemon->dnscenv->nonces_cache); } #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + dynlib = mod_get_mem(&worker->env, "dynlib"); +#endif /* WITH_DYNLIBMODULE */ if(!print_longnum(ssl, "mem.cache.rrset"SQ, rrset)) return 0; @@ -848,6 +854,10 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, dnscrypt_nonce)) return 0; #endif /* USE_DNSCRYPT */ +#ifdef WITH_DYNLIBMODULE + if(!print_longnum(ssl, "mem.mod.dynlibmod"SQ, dynlib)) + return 0; +#endif /* WITH_DYNLIBMODULE */ if(!print_longnum(ssl, "mem.streamwait"SQ, (size_t)s->svr.mem_stream_wait)) return 0; diff --git a/doc/example.conf.in b/doc/example.conf.in index 9d8edbf9e..ab6b43baa 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -837,6 +837,16 @@ python: # Script file to load # python-script: "@UNBOUND_SHARE_DIR@/ubmodule-tst.py" +# Dynamic library config section. To enable: +# o use --with-dynlibmodule to configure before compiling. +# o list dynlib in the module-config string (above) to enable. +# It can be placed anywhere, the dynlib module is only a very thin wrapper +# to load modules dynamically. +# o and give a dynlib-file to run. +dynlib: + # Script file to load + # dynlib-file: "@UNBOUND_SHARE_DIR@/dynlib.so" + # Remote control config section. remote-control: # Enable remote control with unbound-control(8) here. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index b7ff72326..434467995 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -940,7 +940,9 @@ EDNS client subnet support the default is "subnetcache validator iterator". Most modules that need to be listed here have to be listed at the beginning of the line. The cachedb module has to be listed just before the iterator. The python module can be listed in different places, it then processes the -output of the module it is just before. +output of the module it is just before. The dynlib module can be listed pretty +much anywhere, it is only a very thin wrapper that allows dynamic libraries to +run in its place. .TP .B trust\-anchor\-file: \fI File with trusted keys for validation. Both DS and DNSKEY entries can appear @@ -1782,6 +1784,22 @@ directory. .B python\-script: \fI\fR The script file to load. Repeat this option for every python module instance added to the \fBmodule\-config:\fR option. +.SS "Dynamic Library Module Options" +.LP +The +.B dynlib: +clause gives the settings for the \fIdynlib\fR(1) module. This module is only +a very small wrapper that allows dynamic modules to be loaded on runtime +instead of being compiled into the application. To enable the dynlib module it +has to be compiled into the daemon, and the word "dynlib" has to be put in the +\fBmodule\-config:\fR option. +.LP +The \fBdynlib\-file:\fR path should be specified as an absolute path relative +to the new path set by \fBchroot:\fR option, or as a relative path to the +working directory. +.TP +.B dynlib\-file: \fI\fR +The dynamic library file to load. .SS "DNS64 Module Options" .LP The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 47d315306..3592f7de7 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -5,6 +5,7 @@ #if HAVE_WINDOWS_H #include +#define __DYNMOD HMODULE #define __DYNSYM FARPROC #define __LOADSYM GetProcAddress void log_dlerror() { @@ -25,43 +26,39 @@ void log_dlerror() { )) { DWORD dwBytesWritten; - - // - // Output message string on stderr. - // - log_info("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); - //WriteFile( - // GetStdHandle(STD_ERROR_HANDLE), - // MessageBuffer, - // dwBufferLength, - // &dwBytesWritten, - // NULL - // ); - - // - // Free the buffer allocated by the system. - // + log_err("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); LocalFree(MessageBuffer); } } +HMODULE open_library(const char* fname) { + return LoadLibrary(fname); +} #else #include +#define __DYNMOD void* #define __DYNSYM void* #define __LOADSYM dlsym void log_dlerror() { log_err("dynlibmod: %s", dlerror()); } +void* open_library(const char* fname) { + return dlopen(fname, RTLD_LAZY | RTLD_GLOBAL); +} #endif + /** * Global state for the module. */ -typedef int (*func_init_t)(int, struct config_file*); -typedef int (*func_deinit_t)(int); -typedef int (*func_operate_t)(int, enum module_ev event, struct module_qstate* qstate, void*); -typedef int (*func_inform_t)(int, struct module_qstate* qstate, struct module_qstate* super, void*); +typedef void (*func_init_t)(struct module_env*, int); +typedef void (*func_deinit_t)(struct module_env*, int); +typedef void (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*); +typedef void (*func_inform_t)(struct module_qstate*, int, struct module_qstate*); +typedef void (*func_clear_t)(struct module_qstate*, int); +typedef size_t (*func_get_mem_t)(struct module_env*, int); + struct dynlibmod_env { /** Dynamic library filename. */ @@ -75,20 +72,19 @@ struct dynlibmod_env { func_operate_t func_operate; /** Module super_inform function */ func_inform_t func_inform; + /** Module clear function */ + func_clear_t func_clear; + /** Module get_mem function */ + func_get_mem_t func_get_mem; /** Module qstate. */ struct module_qstate* qstate; }; -struct dynlibmod_qstate { - - /** Module per query data. */ - void* data; -}; - /** dynlib module init */ int dynlibmod_init(struct module_env* env, int id) { struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); + __DYNMOD dynamic_library; if (!de) { log_err("dynlibmod: malloc failure"); @@ -102,59 +98,63 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod: no dynamic library given."); return 0; } - log_info("Trying to load library %s", de->fname); -#ifndef HAVE_WINDOWS_H - void* dynamic_library = dlopen(de->fname, RTLD_LAZY | RTLD_GLOBAL); -#else - HMODULE dynamic_library = LoadLibrary(de->fname); -#endif + verbose(VERB_ALGO, "dynlibmod: Trying to load library %s", de->fname); + dynamic_library = open_library(de->fname); if (dynamic_library == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load dynamic library."); + log_err("dynlibmod: unable to load dynamic library \"%s\".", de->fname); return 0; } else { __DYNSYM initializer = __LOADSYM(dynamic_library,"init"); if (initializer == NULL) { - log_err("dynlibmod: unable to load init procedure from dynamic library."); -#ifndef HAVE_WINDOWS_H - log_err("dynlibmod: %s", dlerror()); -#endif + log_dlerror(); + log_err("dynlibmod: unable to load init procedure from dynamic library \"%s\".", de->fname); return 0; } else { de->func_init = (func_init_t) initializer; } __DYNSYM deinitializer = __LOADSYM(dynamic_library,"deinit"); if (deinitializer == NULL) { - log_err("dynlibmod: unable to load deinit procedure from dynamic library."); -#ifndef HAVE_WINDOWS_H - log_err("dynlibmod: %s", dlerror()); -#endif + log_dlerror(); + log_err("dynlibmod: unable to load deinit procedure from dynamic library \"%s\".", de->fname); return 0; } else { de->func_deinit = (func_deinit_t) deinitializer; } __DYNSYM operate = __LOADSYM(dynamic_library,"operate"); if (operate == NULL) { - log_err("dynlibmod: unable to load operate procedure from dynamic library."); -#ifndef HAVE_WINDOWS_H - log_err("dynlibmod: %s", dlerror()); -#endif + log_dlerror(); + log_err("dynlibmod: unable to load operate procedure from dynamic library \"%s\".", de->fname); return 0; } else { de->func_operate = (func_operate_t) operate; } __DYNSYM inform = __LOADSYM(dynamic_library,"inform_super"); if (inform == NULL) { - log_err("dynlibmod: unable to load inform_super procedure from dynamic library."); -#ifndef HAVE_WINDOWS_H - log_err("dynlibmod: %s", dlerror()); -#endif + log_dlerror(); + log_err("dynlibmod: unable to load inform_super procedure from dynamic library \"%s\".", de->fname); return 0; } else { de->func_inform = (func_inform_t) inform; } + __DYNSYM clear = __LOADSYM(dynamic_library,"clear"); + if (clear == NULL) { + log_dlerror(); + log_err("dynlibmod: unable to load clear procedure from dynamic library \"%s\".", de->fname); + return 0; + } else { + de->func_clear = (func_clear_t) clear; + } + __DYNSYM get_mem = __LOADSYM(dynamic_library,"get_mem"); + if (get_mem == NULL) { + log_dlerror(); + log_err("dynlibmod: unable to load get_mem procedure from dynamic library \"%s\".", de->fname); + return 0; + } else { + de->func_get_mem = (func_get_mem_t) get_mem; + } } - de->func_init(id, env->cfg); + de->func_init(env, id); return 1; } @@ -163,7 +163,7 @@ void dynlibmod_deinit(struct module_env* env, int id) { struct dynlibmod_env* de = env->modinfo[id]; if(de == NULL) return; - de->func_deinit(id); + de->func_deinit(env, id); de->fname = NULL; free(de); } @@ -172,44 +172,23 @@ void dynlibmod_deinit(struct module_env* env, int id) { void dynlibmod_operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* outbound) { struct dynlibmod_env* de = qstate->env->modinfo[id]; - struct dynlibmod_qstate* dq = (struct dynlibmod_qstate*)qstate->minfo[id]; - void * data = dq == NULL ? NULL : dq->data; - int ret = de->func_operate(id, event, qstate, data); - if (ret != 1) { - log_err("dynlibmod: dynamic library returned bad code from operate %d.", ret); - qstate->ext_state[id] = module_error; - } + de->func_operate(qstate, event, id, outbound); } /** dynlib module */ void dynlibmod_inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) { struct dynlibmod_env* de = qstate->env->modinfo[id]; - struct dynlibmod_qstate* dq = (struct dynlibmod_qstate*)qstate->minfo[id]; - void * data = dq == NULL ? NULL : dq->data; - int ret = de->func_inform(id, qstate, super, data); - if (ret != 1) { - log_err("dynlibmod: dynamic library returned bad code from inform_super %d.", ret); - qstate->ext_state[id] = module_error; - } + de->func_inform(qstate, id, super); } /** dynlib module cleanup query state */ void dynlibmod_clear(struct module_qstate* qstate, int id) { - struct dynlibmod_qstate* dq; - if (qstate == NULL) - return; + struct dynlibmod_env* de = qstate->env->modinfo[id]; - dq = (struct dynlibmod_qstate*)qstate->minfo[id]; - verbose(VERB_ALGO, "dynlibmod: clear, id: %d, dq:%p", id, dq); - if(dq != NULL) { - /* Free qstate */ - free(dq); - } - - qstate->minfo[id] = NULL; + de->func_clear(qstate, id); } /** dynlib module alloc size routine */ @@ -218,7 +197,9 @@ size_t dynlibmod_get_mem(struct module_env* env, int id) { verbose(VERB_ALGO, "dynlibmod: get_mem, id: %d, de:%p", id, de); if(!de) return 0; - return sizeof(*de); + + size_t size = de->func_get_mem(env, id); + return size + sizeof(*de); } /** diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index ac5d737b4..1d826a1c8 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -1,8 +1,7 @@ /* * dynlibmod.h: module header file * - * Copyright (c) 2009, Zdenek Vasicek (vasicek AT fit.vutbr.cz) - * Marek Vavrusa (xvavru00 AT stud.fit.vutbr.cz) + * Copyright (c) 2019, Peter Munch-Ellingsen (peterme AT peterme.net) * * This software is open source. * diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 76c1df215..6479d8460 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -17,17 +17,15 @@ #define EXPORT #endif -EXPORT int init(int id, struct config_file* cfg) { +EXPORT void init(struct module_env* env, int id) { log_info("Hello world from init"); - return 1; } -EXPORT int deinit(int id) { +EXPORT void deinit(struct module_env* env, int id) { log_info("Hello world from deinit"); - return 1; } -EXPORT int operate(int id, enum module_ev event, struct module_qstate* qstate, void* data) { +EXPORT void operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* entry) { log_info("Hello world from operate"); if (event == module_event_new || event == module_event_pass) { qstate->ext_state[id] = module_wait_module; @@ -36,10 +34,17 @@ EXPORT int operate(int id, enum module_ev event, struct module_qstate* qstate, v } else { qstate->ext_state[id] = module_error; } - return 1; } -EXPORT int inform_super(int id, struct module_qstate* qstate, struct module_qstate* super, void* data) { +EXPORT void inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) { log_info("Hello world from inform_super"); - return 1; +} + +EXPORT void clear(struct module_qstate* qstate, int id) { + log_info("Hello world from clear"); +} + +EXPORT size_t get_mem(struct module_env* env, int id) { + log_info("Hello world from get_mem"); + return 0; } diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 682ba5530..0527d7b7d 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -641,6 +641,7 @@ struct ub_shm_stat_info { long long respip; long long dnscrypt_shared_secret; long long dnscrypt_nonce; + long long dynlib; } mem; }; diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 01e2385fa..c074b782f 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -261,6 +261,9 @@ static void print_mem(struct ub_shm_stat_info* shm_stat, #ifdef USE_IPSECMOD PR_LL("mem.mod.ipsecmod", shm_stat->mem.ipsecmod); #endif +#ifdef WITH_DYNLIBMODULE + PR_LL("mem.mod.dynlib", shm_stat->mem.dynlib); +#endif #ifdef USE_DNSCRYPT PR_LL("mem.cache.dnscrypt_shared_secret", shm_stat->mem.dnscrypt_shared_secret); diff --git a/util/shm_side/shm_main.c b/util/shm_side/shm_main.c index a783c099b..0842b9b3b 100644 --- a/util/shm_side/shm_main.c +++ b/util/shm_side/shm_main.c @@ -280,6 +280,10 @@ void shm_main_run(struct worker *worker) #ifdef USE_IPSECMOD shm_stat->mem.ipsecmod = (long long)mod_get_mem(&worker->env, "ipsecmod"); +#endif +#ifdef WITH_DYNLIBMODULE + shm_stat->mem.dynlib = (long long)mod_get_mem(&worker->env, + "dynlib"); #endif } From f177dc974c8797f02ed5c37d2b0aa3103a64a708 Mon Sep 17 00:00:00 2001 From: PMunch Date: Mon, 21 Oct 2019 15:02:03 +0200 Subject: [PATCH 003/394] Add support for multiple dynamic modules Allows the use of multiple dynamic modules. Simply add more "dynlib" entries to the "modules-config" and the same amount of "dynlib-file" entries in the dynlib configuration block. --- doc/example.conf.in | 3 ++- doc/unbound.conf.5.in | 6 ++++-- dynlibmod/dynlibmod.c | 38 ++++++++++++++++++++++++++------------ util/config_file.c | 6 +++--- util/config_file.h | 2 +- util/configparser.y | 4 ++-- 6 files changed, 38 insertions(+), 21 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index ab6b43baa..5820e5e0a 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -842,7 +842,8 @@ python: # o list dynlib in the module-config string (above) to enable. # It can be placed anywhere, the dynlib module is only a very thin wrapper # to load modules dynamically. -# o and give a dynlib-file to run. +# o and give a dynlib-file to run. If more than one dynlib entry is listed in +# the module-config then you need one dynlib-file per instance. dynlib: # Script file to load # dynlib-file: "@UNBOUND_SHARE_DIR@/dynlib.so" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 434467995..d0583d500 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1792,14 +1792,16 @@ clause gives the settings for the \fIdynlib\fR(1) module. This module is only a very small wrapper that allows dynamic modules to be loaded on runtime instead of being compiled into the application. To enable the dynlib module it has to be compiled into the daemon, and the word "dynlib" has to be put in the -\fBmodule\-config:\fR option. +\fBmodule\-config:\fR option. Multiple instances of dynamic libraries are +supported by adding the word "dynlib" more than once. .LP The \fBdynlib\-file:\fR path should be specified as an absolute path relative to the new path set by \fBchroot:\fR option, or as a relative path to the working directory. .TP .B dynlib\-file: \fI\fR -The dynamic library file to load. +The dynamic library file to load. Repeat this option for every dynlib module +instance added to the \fBmodule\-config:\fR option. .SS "DNS64 Module Options" .LP The dns64 module must be configured in the \fBmodule\-config:\fR "dns64 diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 3592f7de7..54b2a5816 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -81,34 +81,48 @@ struct dynlibmod_env { struct module_qstate* qstate; }; +/** + * counter for dynamic library module instances + * incremeted by dynlibmod_init + */ +int dynlib_mod_count = 0; + /** dynlib module init */ int dynlibmod_init(struct module_env* env, int id) { + int dynlib_mod_idx = dynlib_mod_count++; + struct config_strlist* cfg_item = env->cfg->dynlib_file; struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); __DYNMOD dynamic_library; if (!de) { - log_err("dynlibmod: malloc failure"); + log_err("dynlibmod[%d]: malloc failure", dynlib_mod_idx); return 0; } env->modinfo[id] = (void*) de; - de->fname = env->cfg->dynlib_file; - if (de->fname == NULL || de->fname[0] == 0) { - log_err("dynlibmod: no dynamic library given."); + de->fname = NULL; + for(int i = dynlib_mod_idx; + i != 0 && cfg_item != NULL; + i--, cfg_item = cfg_item->next) {} + + if (cfg_item == NULL || cfg_item->str == NULL || cfg_item->str[0] == 0) { + log_err("dynlibmod[%d]: no dynamic library given.", dynlib_mod_idx); return 0; + } else { + de->fname = cfg_item->str; } - verbose(VERB_ALGO, "dynlibmod: Trying to load library %s", de->fname); + verbose(VERB_ALGO, "dynlibmod[%d]: Trying to load library %s", dynlib_mod_idx, de->fname); dynamic_library = open_library(de->fname); if (dynamic_library == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { __DYNSYM initializer = __LOADSYM(dynamic_library,"init"); if (initializer == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load init procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load init procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_init = (func_init_t) initializer; @@ -116,7 +130,7 @@ int dynlibmod_init(struct module_env* env, int id) { __DYNSYM deinitializer = __LOADSYM(dynamic_library,"deinit"); if (deinitializer == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load deinit procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load deinit procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_deinit = (func_deinit_t) deinitializer; @@ -124,7 +138,7 @@ int dynlibmod_init(struct module_env* env, int id) { __DYNSYM operate = __LOADSYM(dynamic_library,"operate"); if (operate == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load operate procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load operate procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_operate = (func_operate_t) operate; @@ -132,7 +146,7 @@ int dynlibmod_init(struct module_env* env, int id) { __DYNSYM inform = __LOADSYM(dynamic_library,"inform_super"); if (inform == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load inform_super procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load inform_super procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_inform = (func_inform_t) inform; @@ -140,7 +154,7 @@ int dynlibmod_init(struct module_env* env, int id) { __DYNSYM clear = __LOADSYM(dynamic_library,"clear"); if (clear == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load clear procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load clear procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_clear = (func_clear_t) clear; @@ -148,7 +162,7 @@ int dynlibmod_init(struct module_env* env, int id) { __DYNSYM get_mem = __LOADSYM(dynamic_library,"get_mem"); if (get_mem == NULL) { log_dlerror(); - log_err("dynlibmod: unable to load get_mem procedure from dynamic library \"%s\".", de->fname); + log_err("dynlibmod[%d]: unable to load get_mem procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { de->func_get_mem = (func_get_mem_t) get_mem; diff --git a/util/config_file.c b/util/config_file.c index 7a8fb0bbc..1afeb46bf 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -611,7 +611,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("control-cert-file:", control_cert_file) else S_STR("module-config:", module_conf) else S_STRLIST("python-script:", python_script) - else S_STR("dynlib-file:", dynlib_file) + else S_STRLIST("dynlib-file:", dynlib_file) else S_YNO("disable-dnssec-lame-check:", disable_dnssec_lame_check) #ifdef CLIENT_SUBNET /* Can't set max subnet prefix here, since that value is used when @@ -1064,7 +1064,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "insecure-lan-zones", insecure_lan_zones) else O_DEC(opt, "max-udp-size", max_udp_size) else O_LST(opt, "python-script", python_script) - else O_STR(opt, "dynlib-file", dynlib_file) + else O_LST(opt, "dynlib-file", dynlib_file) else O_YNO(opt, "disable-dnssec-lame-check", disable_dnssec_lame_check) else O_DEC(opt, "ip-ratelimit", ip_ratelimit) else O_DEC(opt, "ratelimit", ratelimit) @@ -1401,7 +1401,6 @@ config_delete(struct config_file* cfg) free(cfg->version); free(cfg->module_conf); free(cfg->outgoing_avail_ports); - free(cfg->dynlib_file); config_delstrlist(cfg->caps_whitelist); config_delstrlist(cfg->private_address); config_delstrlist(cfg->private_domain); @@ -1441,6 +1440,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_for_domain); config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); + config_delstrlist(cfg->dynlib_file); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index 6706ab08b..972c70fb8 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -440,7 +440,7 @@ struct config_file { struct config_strlist* python_script; /** Dynamic library file */ - char* dynlib_file; + struct config_strlist* dynlib_file; /** Use systemd socket activation. */ int use_systemd; diff --git a/util/configparser.y b/util/configparser.y index 5f58d75b3..f180f188f 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2754,8 +2754,8 @@ content_dl: dl_file dl_file: VAR_DYNLIB_FILE STRING_ARG { OUTYY(("P(dynlib-file:%s)\n", $2)); - free(cfg_parser->cfg->dynlib_file); - cfg_parser->cfg->dynlib_file = $2; + if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, $2)) + yyerror("out of memory"); } server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG { From f79811435ba13cab2e397be4918fdd89530dbc86 Mon Sep 17 00:00:00 2001 From: PMunch Date: Tue, 22 Oct 2019 08:42:00 +0200 Subject: [PATCH 004/394] Cleanup some minor things in dynlibmod --- dynlibmod/dynlibmod.c | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 54b2a5816..977f45047 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -25,12 +25,12 @@ void log_dlerror() { NULL )) { - DWORD dwBytesWritten; log_err("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); LocalFree(MessageBuffer); } } + HMODULE open_library(const char* fname) { return LoadLibrary(fname); } @@ -42,6 +42,7 @@ HMODULE open_library(const char* fname) { void log_dlerror() { log_err("dynlibmod: %s", dlerror()); } + void* open_library(const char* fname) { return dlopen(fname, RTLD_LAZY | RTLD_GLOBAL); } @@ -60,10 +61,8 @@ typedef void (*func_clear_t)(struct module_qstate*, int); typedef size_t (*func_get_mem_t)(struct module_env*, int); struct dynlibmod_env { - /** Dynamic library filename. */ const char* fname; - /** Module init function */ func_init_t func_init; /** Module deinit function */ @@ -76,19 +75,11 @@ struct dynlibmod_env { func_clear_t func_clear; /** Module get_mem function */ func_get_mem_t func_get_mem; - - /** Module qstate. */ - struct module_qstate* qstate; }; -/** - * counter for dynamic library module instances - * incremeted by dynlibmod_init - */ -int dynlib_mod_count = 0; - /** dynlib module init */ int dynlibmod_init(struct module_env* env, int id) { + static int dynlib_mod_count; int dynlib_mod_idx = dynlib_mod_count++; struct config_strlist* cfg_item = env->cfg->dynlib_file; struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); From d104d3be2243dbf0d678ee5e939acb78637f58e4 Mon Sep 17 00:00:00 2001 From: PMunch Date: Fri, 1 Nov 2019 10:44:26 +0100 Subject: [PATCH 005/394] Add inplace callback to dynlibmod, improve example This adds the possibility to properly register inplace callbacks in the dynamic library module. It works by creating a wrapper procedure that is available to the dynamic library and will call the given callback through a whitelisted callback function. The dynamic library example has already been improved to include comments and some simple examples on allocating and deallocating memory and registering callbacks. --- dynlibmod/dynlibmod.c | 108 +++++++++++++++++++++++--------- dynlibmod/dynlibmod.h | 67 ++++++++++++++++++++ dynlibmod/examples/helloworld.c | 76 +++++++++++++++++++++- util/fptr_wlist.c | 24 +++++++ 4 files changed, 243 insertions(+), 32 deletions(-) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 977f45047..7c77009d7 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -48,35 +48,6 @@ void* open_library(const char* fname) { } #endif - -/** - * Global state for the module. - */ - -typedef void (*func_init_t)(struct module_env*, int); -typedef void (*func_deinit_t)(struct module_env*, int); -typedef void (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*); -typedef void (*func_inform_t)(struct module_qstate*, int, struct module_qstate*); -typedef void (*func_clear_t)(struct module_qstate*, int); -typedef size_t (*func_get_mem_t)(struct module_env*, int); - -struct dynlibmod_env { - /** Dynamic library filename. */ - const char* fname; - /** Module init function */ - func_init_t func_init; - /** Module deinit function */ - func_deinit_t func_deinit; - /** Module operate function */ - func_operate_t func_operate; - /** Module super_inform function */ - func_inform_t func_inform; - /** Module clear function */ - func_clear_t func_clear; - /** Module get_mem function */ - func_get_mem_t func_get_mem; -}; - /** dynlib module init */ int dynlibmod_init(struct module_env* env, int id) { static int dynlib_mod_count; @@ -159,6 +130,8 @@ int dynlibmod_init(struct module_env* env, int id) { de->func_get_mem = (func_get_mem_t) get_mem; } } + de->inplace_cb_delete_wrapped = &inplace_cb_delete_wrapped; + de->inplace_cb_register_wrapped = &inplace_cb_register_wrapped; de->func_init(env, id); return 1; } @@ -207,6 +180,83 @@ size_t dynlibmod_get_mem(struct module_env* env, int id) { return size + sizeof(*de); } +int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback) { + struct cb_pair* cb_pair = (struct cb_pair*) callback; + ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, + int id, void* callback) { + struct cb_pair* cb_pair = (struct cb_pair*) callback; + ((inplace_cb_query_func_type*) cb_pair->cb)(qinfo, flags, qstate, addr, addrlen, zone, zonelen, region, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate, + int id, void* cb_args) { + struct cb_pair* cb_pair = (struct cb_pair*) cb_args; + ((inplace_cb_edns_back_parsed_func_type*) cb_pair->cb)(qstate, id, cb_pair->cb_arg); +} + +int dynlib_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* cb_args) { + struct cb_pair* cb_pair = (struct cb_pair*) cb_args; + ((inplace_cb_query_response_func_type*) cb_pair->cb)(qstate, response, id, cb_pair->cb_arg); +} + +int +inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id) { + struct cb_pair* cb_pair = malloc(sizeof(struct cb_pair)); + cb_pair->cb = cb; + cb_pair->cb_arg = cbarg; + if(type >= inplace_cb_reply && type <= inplace_cb_reply_servfail) { + return inplace_cb_register(&dynlib_inplace_cb_reply_generic, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_query) { + return inplace_cb_register(&dynlib_inplace_cb_query_generic, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_query_response) { + return inplace_cb_register(&dynlib_inplace_cb_query_response, type, (void*) cb_pair, env, id); + } else if(type == inplace_cb_edns_back_parsed) { + return inplace_cb_register(&dynlib_inplace_cb_edns_back_parsed, type, (void*) cb_pair, env, id); + } else { + return 0; + } +} + +void +inplace_cb_delete_wrapped(struct module_env* env, enum inplace_cb_list_type type, + int id) { + struct inplace_cb* temp = env->inplace_cb_lists[type]; + struct inplace_cb* prev = NULL; + + while(temp) { + if(temp->id == id) { + if(!prev) { + env->inplace_cb_lists[type] = temp->next; + free(temp->cb_arg); + free(temp); + temp = env->inplace_cb_lists[type]; + } + else { + prev->next = temp->next; + free(temp->cb_arg); + free(temp); + temp = prev->next; + } + } + else { + prev = temp; + temp = temp->next; + } + } +} + + /** * The module function block */ diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index 1d826a1c8..a8ba23cc9 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -67,4 +67,71 @@ void dynlibmod_clear(struct module_qstate* qstate, int id); /** dynlib module alloc size routine */ size_t dynlibmod_get_mem(struct module_env* env, int id); +int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback); + +int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, + struct module_qstate* qstate, struct sockaddr_storage* addr, + socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, + int id, void* callback); + +int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate, + int id, void* cb_args); + +int dynlib_inplace_cb_query_response(struct module_qstate* qstate, + struct dns_msg* response, int id, void* cb_args); + +int +inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, + struct module_env* env, int id); + +void +inplace_cb_delete_wrapped(struct module_env* env, enum inplace_cb_list_type type, + int id); + +struct cb_pair { + void *cb; + void *cb_arg; +}; + +/** + * Global state for the module. + */ + +typedef void (*func_init_t)(struct module_env*, int); +typedef void (*func_deinit_t)(struct module_env*, int); +typedef void (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*); +typedef void (*func_inform_t)(struct module_qstate*, int, struct module_qstate*); +typedef void (*func_clear_t)(struct module_qstate*, int); +typedef size_t (*func_get_mem_t)(struct module_env*, int); +typedef void (*inplace_cb_delete_wrapped_t)(struct module_env*, enum inplace_cb_list_type, int); +typedef int (*inplace_cb_register_wrapped_t)(void*, enum inplace_cb_list_type, void*, struct module_env*, int); + + +struct dynlibmod_env { + /** Dynamic library filename. */ + const char* fname; + /** Module init function */ + func_init_t func_init; + /** Module deinit function */ + func_deinit_t func_deinit; + /** Module operate function */ + func_operate_t func_operate; + /** Module super_inform function */ + func_inform_t func_inform; + /** Module clear function */ + func_clear_t func_clear; + /** Module get_mem function */ + func_get_mem_t func_get_mem; + /** Wrapped inplace callback functions to circumvent callback whitelisting */ + inplace_cb_delete_wrapped_t inplace_cb_delete_wrapped; + inplace_cb_register_wrapped_t inplace_cb_register_wrapped; + /** Pointer to any data the dynamic library might want to keep */ + void *dyn_env; +}; + + #endif /* DYNLIBMOD_H */ diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 6479d8460..3d7708af0 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -4,31 +4,70 @@ * gcc -I../.. -shared -Wall -Werror -fpic -o helloworld.so helloworld.c * And to build for windows, first make unbound with the --with-dynlibmod * switch, then use this command: - * x86_64-w64-mingw32-gcc -m64 -I../.. -shared -Wall -Werror -fpic -o helloworld.dll helloworld.c -L../.. -l:libunbound.a + * x86_64-w64-mingw32-gcc -m64 -I../.. -shared -Wall -Werror -fpic + * -o helloworld.dll helloworld.c -L../.. -l:libunbound.a * to cross-compile a 64-bit Windows DLL. */ #include "../../config.h" #include "../../util/module.h" +#include "../dynlibmod.h" +/* Declare the EXPORT macro that expands to exporting the symbol for DLLs when + * compiling for Windows. All procedures marked with EXPORT in this example are + * called directly by the dynlib module and must be present for the module to + * load correctly. */ #ifdef HAVE_WINDOWS_H #define EXPORT __declspec(dllexport) #else #define EXPORT #endif +/* Forward declare a callback, implemented at the bottom of this file */ +int reply_callback(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback); + +/* Init is called when the module is first loaded. It should be used to set up + * the environment for this module and do any other initialisation required. */ EXPORT void init(struct module_env* env, int id) { log_info("Hello world from init"); + struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; + de->inplace_cb_register_wrapped(&reply_callback, + inplace_cb_reply, + NULL, env, id); + struct dynlibmod_env* local_env = env->modinfo[id]; + local_env->dyn_env = NULL; } +/* Deinit is run as the program is shutting down. It should be used to clean up + * the environment and any left over data. */ EXPORT void deinit(struct module_env* env, int id) { log_info("Hello world from deinit"); + struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; + de->inplace_cb_delete_wrapped(env, inplace_cb_reply, id); + if (de->dyn_env != NULL) free(de->dyn_env); } -EXPORT void operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* entry) { +/* Operate is called every time a query passes by this module. The event can be + * used to determine which direction in the module chain it came from. */ +EXPORT void operate(struct module_qstate* qstate, enum module_ev event, + int id, struct outbound_entry* entry) { log_info("Hello world from operate"); if (event == module_event_new || event == module_event_pass) { qstate->ext_state[id] = module_wait_module; + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env == NULL) { + env->dyn_env = calloc(3, sizeof(int)); + ((int *)env->dyn_env)[0] = 42; + ((int *)env->dyn_env)[1] = 102; + ((int *)env->dyn_env)[2] = 192; + } else { + log_err("Already has data!"); + qstate->ext_state[id] = module_error; + } } else if (event == module_event_moddone) { qstate->ext_state[id] = module_finished; } else { @@ -36,15 +75,46 @@ EXPORT void operate(struct module_qstate* qstate, enum module_ev event, int id, } } -EXPORT void inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) { +/* Inform super is called when a query is completed or errors out, but only if + * a sub-query has been registered to it by this module. Look at + * mesh_attach_sub in services/mesh.h to see how this is done. */ +EXPORT void inform_super(struct module_qstate* qstate, int id, + struct module_qstate* super) { log_info("Hello world from inform_super"); } +/* Clear is called once a query is complete and the response has been sent + * back. It is used to clear up any per-query allocations. */ EXPORT void clear(struct module_qstate* qstate, int id) { log_info("Hello world from clear"); + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env != NULL) { + free(env->dyn_env); + env->dyn_env = NULL; + } } +/* Get mem is called when Unbound is printing performance information. This + * only happens explicitly and is only used to show memory usage to the user. */ EXPORT size_t get_mem(struct module_env* env, int id) { log_info("Hello world from get_mem"); return 0; } + +/* The callback that was forward declared earlier. It is registered in the init + * procedure to run when a query is being replied to. */ +int reply_callback(struct query_info* qinfo, + struct module_qstate* qstate, struct reply_info* rep, int rcode, + struct edns_data* edns, struct edns_option** opt_list_out, + struct comm_reply* repinfo, struct regional* region, int id, + void* callback) { + log_info("Hello world from callback"); + struct dynlibmod_env* env = qstate->env->modinfo[id]; + if (env->dyn_env != NULL) { + log_info("Numbers gotten from query: %d, %d, and %d", + ((int *)env->dyn_env)[0], + ((int *)env->dyn_env)[1], + ((int *)env->dyn_env)[2]); + } + return 0; +} diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 20eaeb137..dfd05957f 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -585,18 +585,30 @@ int fptr_whitelist_inplace_cb_reply_generic(inplace_cb_reply_func_type* fptr, if(type == inplace_cb_reply) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_cache) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_local) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } else if(type == inplace_cb_reply_servfail) { #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_reply_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_reply_generic) return 1; #endif } return 0; @@ -611,6 +623,10 @@ int fptr_whitelist_inplace_cb_query(inplace_cb_query_func_type* fptr) #ifdef WITH_PYTHONMODULE if(fptr == &python_inplace_cb_query_generic) return 1; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_query_generic) + return 1; #endif (void)fptr; return 0; @@ -624,6 +640,10 @@ int fptr_whitelist_inplace_cb_edns_back_parsed( return 1; #else (void)fptr; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_edns_back_parsed) + return 1; #endif return 0; } @@ -636,6 +656,10 @@ int fptr_whitelist_inplace_cb_query_response( return 1; #else (void)fptr; +#endif +#ifdef WITH_DYNLIBMODULE + if(fptr == &dynlib_inplace_cb_query_response) + return 1; #endif return 0; } From 5eabc429bce05e40f1101e6a0b164e30de4bc9be Mon Sep 17 00:00:00 2001 From: PMunch Date: Mon, 4 Nov 2019 16:03:04 +0100 Subject: [PATCH 006/394] Add "dynlib" prefix to example output, log queries This adds the "dynlib: " prefix to all messages created by the `helloworld.c` dynamic library example. It also adds logging of queries that pass through `operate`. --- dynlibmod/examples/helloworld.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 3d7708af0..d001b3ee8 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -11,6 +11,7 @@ #include "../../config.h" #include "../../util/module.h" +#include "../../sldns/parseutil.h" #include "../dynlibmod.h" /* Declare the EXPORT macro that expands to exporting the symbol for DLLs when @@ -33,7 +34,7 @@ int reply_callback(struct query_info* qinfo, /* Init is called when the module is first loaded. It should be used to set up * the environment for this module and do any other initialisation required. */ EXPORT void init(struct module_env* env, int id) { - log_info("Hello world from init"); + log_info("dynlib: hello world from init"); struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; de->inplace_cb_register_wrapped(&reply_callback, inplace_cb_reply, @@ -45,7 +46,7 @@ EXPORT void init(struct module_env* env, int id) { /* Deinit is run as the program is shutting down. It should be used to clean up * the environment and any left over data. */ EXPORT void deinit(struct module_env* env, int id) { - log_info("Hello world from deinit"); + log_info("dynlib: hello world from deinit"); struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; de->inplace_cb_delete_wrapped(env, inplace_cb_reply, id); if (de->dyn_env != NULL) free(de->dyn_env); @@ -55,7 +56,13 @@ EXPORT void deinit(struct module_env* env, int id) { * used to determine which direction in the module chain it came from. */ EXPORT void operate(struct module_qstate* qstate, enum module_ev event, int id, struct outbound_entry* entry) { - log_info("Hello world from operate"); + log_info("dynlib: hello world from operate"); + log_info("dynlib: incoming query: %s %s(%d) %s(%d)", + qstate->qinfo.qname, + sldns_lookup_by_id(sldns_rr_classes, qstate->qinfo.qclass)->name, + qstate->qinfo.qclass, + sldns_rr_descript(qstate->qinfo.qtype)->_name, + qstate->qinfo.qtype); if (event == module_event_new || event == module_event_pass) { qstate->ext_state[id] = module_wait_module; struct dynlibmod_env* env = qstate->env->modinfo[id]; @@ -65,7 +72,7 @@ EXPORT void operate(struct module_qstate* qstate, enum module_ev event, ((int *)env->dyn_env)[1] = 102; ((int *)env->dyn_env)[2] = 192; } else { - log_err("Already has data!"); + log_err("dynlib: already has data!"); qstate->ext_state[id] = module_error; } } else if (event == module_event_moddone) { @@ -80,13 +87,13 @@ EXPORT void operate(struct module_qstate* qstate, enum module_ev event, * mesh_attach_sub in services/mesh.h to see how this is done. */ EXPORT void inform_super(struct module_qstate* qstate, int id, struct module_qstate* super) { - log_info("Hello world from inform_super"); + log_info("dynlib: hello world from inform_super"); } /* Clear is called once a query is complete and the response has been sent * back. It is used to clear up any per-query allocations. */ EXPORT void clear(struct module_qstate* qstate, int id) { - log_info("Hello world from clear"); + log_info("dynlib: hello world from clear"); struct dynlibmod_env* env = qstate->env->modinfo[id]; if (env->dyn_env != NULL) { free(env->dyn_env); @@ -97,7 +104,7 @@ EXPORT void clear(struct module_qstate* qstate, int id) { /* Get mem is called when Unbound is printing performance information. This * only happens explicitly and is only used to show memory usage to the user. */ EXPORT size_t get_mem(struct module_env* env, int id) { - log_info("Hello world from get_mem"); + log_info("dynlib: hello world from get_mem"); return 0; } @@ -108,10 +115,10 @@ int reply_callback(struct query_info* qinfo, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, int id, void* callback) { - log_info("Hello world from callback"); + log_info("dynlib: hello world from callback"); struct dynlibmod_env* env = qstate->env->modinfo[id]; if (env->dyn_env != NULL) { - log_info("Numbers gotten from query: %d, %d, and %d", + log_info("dynlib: numbers gotten from query: %d, %d, and %d", ((int *)env->dyn_env)[0], ((int *)env->dyn_env)[1], ((int *)env->dyn_env)[2]); From 8802509a61bd6eb026811fecf474b207b3f42716 Mon Sep 17 00:00:00 2001 From: PMunch Date: Wed, 20 Nov 2019 15:11:51 +0100 Subject: [PATCH 007/394] Fix return code of init to mirror native modules The return code of the init procedure was just set to be 1 in the dynamic library loading module. This ha been rectified and it will now return whatever is returned from the loaded module. --- dynlibmod/dynlibmod.c | 3 +-- dynlibmod/dynlibmod.h | 2 +- dynlibmod/examples/helloworld.c | 3 ++- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 7c77009d7..5a93a7ce5 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -132,8 +132,7 @@ int dynlibmod_init(struct module_env* env, int id) { } de->inplace_cb_delete_wrapped = &inplace_cb_delete_wrapped; de->inplace_cb_register_wrapped = &inplace_cb_register_wrapped; - de->func_init(env, id); - return 1; + return de->func_init(env, id); } /** dynlib module deinit */ diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index a8ba23cc9..1097db1e7 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -101,7 +101,7 @@ struct cb_pair { * Global state for the module. */ -typedef void (*func_init_t)(struct module_env*, int); +typedef int (*func_init_t)(struct module_env*, int); typedef void (*func_deinit_t)(struct module_env*, int); typedef void (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*); typedef void (*func_inform_t)(struct module_qstate*, int, struct module_qstate*); diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index d001b3ee8..2ec50223e 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -33,7 +33,7 @@ int reply_callback(struct query_info* qinfo, /* Init is called when the module is first loaded. It should be used to set up * the environment for this module and do any other initialisation required. */ -EXPORT void init(struct module_env* env, int id) { +EXPORT int init(struct module_env* env, int id) { log_info("dynlib: hello world from init"); struct dynlibmod_env* de = (struct dynlibmod_env*) env->modinfo[id]; de->inplace_cb_register_wrapped(&reply_callback, @@ -41,6 +41,7 @@ EXPORT void init(struct module_env* env, int id) { NULL, env, id); struct dynlibmod_env* local_env = env->modinfo[id]; local_env->dyn_env = NULL; + return 1; } /* Deinit is run as the program is shutting down. It should be used to clean up From 57aefd102e0bb80af6d4042795731e6ab6ad6946 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Jan 2020 17:12:32 +0100 Subject: [PATCH 008/394] Stream reuse branch, for TCP and TLS stream reuse. This is for upstream pipes and using them again for the next query. Signposted code for reuse_tcp structure in outside_network.h --- services/outside_network.c | 302 ++++++++++++++++++++++++++++++++++--- services/outside_network.h | 68 +++++++++ testcode/fake_event.c | 6 + util/fptr_wlist.c | 1 + 4 files changed, 356 insertions(+), 21 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index f865f13c1..a5724a42f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -131,6 +131,34 @@ serviced_cmp(const void* key1, const void* key2) return sockaddr_cmp(&q1->addr, q1->addrlen, &q2->addr, q2->addrlen); } +int +reuse_cmp(const void* key1, const void* key2) +{ + struct reuse_tcp* r1 = (struct reuse_tcp*)key1; + struct reuse_tcp* r2 = (struct reuse_tcp*)key2; + int r; + /* make sure the entries are in use (have a waiting_tcp entry) */ + if(!r1->pending->query && !r2->pending->query) + return 0; + if(r1->pending->query && !r2->pending->query) + return 1; + if(!r1->pending->query && r2->pending->query) + return -1; + + /* compare address and port */ + r = sockaddr_cmp(&r1->pending->query->addr, r1->pending->query->addrlen, + &r2->pending->query->addr, r2->pending->query->addrlen); + if(r != 0) + return r; + + /* compare if SSL-enabled */ + if(r1->pending->c->ssl && !r2->pending->c->ssl) + return 1; + if(!r1->pending->c->ssl && r2->pending->c->ssl) + return -1; + return 0; +} + /** delete waiting_tcp entry. Does not unlink from waiting list. * @param w: to delete. */ @@ -281,6 +309,20 @@ outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen) return 1; } +/** use the buffer to setup writing the query */ +static void +outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, uint8_t* pkt, + size_t pkt_len) +{ + pend->id = LDNS_ID_WIRE(pkt); + sldns_buffer_clear(pend->c->buffer); + sldns_buffer_write(pend->c->buffer, pkt, pkt_len); + sldns_buffer_flip(pend->c->buffer); + pend->c->tcp_is_reading = 0; + pend->c->tcp_byte_count = 0; + comm_point_start_listening(pend->c, s, -1); +} + /** use next free buffer to service a tcp query */ static int outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) @@ -412,19 +454,13 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) } w->pkt = NULL; w->next_waiting = (void*)pend; - pend->id = LDNS_ID_WIRE(pkt); w->outnet->num_tcp_outgoing++; w->outnet->tcp_free = pend->next_free; pend->next_free = NULL; pend->query = w; pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); - sldns_buffer_clear(pend->c->buffer); - sldns_buffer_write(pend->c->buffer, pkt, pkt_len); - sldns_buffer_flip(pend->c->buffer); - pend->c->tcp_is_reading = 0; - pend->c->tcp_byte_count = 0; - comm_point_start_listening(pend->c, s, -1); + outnet_tcp_take_query_setup(s, pend, pkt, pkt_len); return 1; } @@ -449,6 +485,42 @@ use_free_buffer(struct outside_network* outnet) } } +/** remove reused element from tree and lru list */ +static void +reuse_tcp_remove_tree_list(struct outside_network* outnet, + struct reuse_tcp* reuse) +{ + if(reuse->node.key) { + /* delete it from reuse tree */ + (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node); + reuse->node.key = NULL; + } + /* delete from reuse list */ + if(reuse->pending) { + if(reuse->prev) { + /* assert that members of the lru list are waiting + * and thus have a pending pointer to the struct */ + log_assert(reuse->prev->pending); + reuse->prev->next = reuse->next; + } else { + log_assert(!reuse->next || reuse->next->pending); + outnet->tcp_reuse_first = + (reuse->next?reuse->next->pending:NULL); + } + if(reuse->next) { + /* assert that members of the lru list are waiting + * and thus have a pending pointer to the struct */ + log_assert(reuse->next->pending); + reuse->next->prev = reuse->prev; + } else { + log_assert(!reuse->prev || reuse->prev->pending); + outnet->tcp_reuse_last = + (reuse->prev?reuse->prev->pending:NULL); + } + reuse->pending = NULL; + } +} + /** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */ static void decommission_pending_tcp(struct outside_network* outnet, @@ -464,9 +536,37 @@ decommission_pending_tcp(struct outside_network* outnet, comm_point_close(pend->c); pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; + if(pend->reuse.pending) { + /* needs unlink from the reuse tree to get deleted */ + reuse_tcp_remove_tree_list(outnet, &pend->reuse); + } waiting_tcp_delete(pend->query); pend->query = NULL; - use_free_buffer(outnet); +} + +/** insert into reuse tcp tree and LRU, false on failure (duplicate) */ +static int +reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) +{ + pend_tcp->reuse.node.key = &pend_tcp->reuse; + pend_tcp->reuse.pending = pend_tcp; + if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { + /* this is a duplicate connection, close this one */ + pend_tcp->reuse.node.key = NULL; + pend_tcp->reuse.pending = NULL; + return 0; + } + /* insert into LRU, first is newest */ + pend_tcp->reuse.prev = NULL; + if(outnet->tcp_reuse_first) { + pend_tcp->reuse.next = &outnet->tcp_reuse_first->reuse; + outnet->tcp_reuse_first->reuse.prev = &pend_tcp->reuse; + } else { + pend_tcp->reuse.next = NULL; + outnet->tcp_reuse_last = pend_tcp; + } + outnet->tcp_reuse_first = pend_tcp; + return 1; } int @@ -489,9 +589,21 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, error = NETEVENT_CLOSED; } } + if(error == NETEVENT_NOERROR) { + /* add to reuse tree so it can be reused, if not a failure. + * This is possible if the state machine wants to make a tcp + * query again to the same destination. */ + (void)reuse_tcp_insert(outnet, pend); + } fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); + /* if reused, it should not be decommissioned, TODO */ + /* or if another query wants to write, write that and read for more + * or more outstanding queries on the stream. TODO */ + /* TODO also write multiple queries over the stream, even if no + * replies have returned yet */ decommission_pending_tcp(outnet, pend); + use_free_buffer(outnet); return 0; } @@ -816,6 +928,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, outside_network_delete(outnet); return NULL; } + rbtree_init(&outnet->tcp_reuse, reuse_cmp); + outnet->tcp_reuse_max = num_tcp; /* allocate commpoints */ for(k=0; ktcp_conns[i]) { comm_point_delete(outnet->tcp_conns[i]->c); waiting_tcp_delete(outnet->tcp_conns[i]->query); + /* TODO: loop over tcpwrite wait list and + * delete waiting_tcp_delete them */ free(outnet->tcp_conns[i]); } free(outnet->tcp_conns); @@ -989,6 +1105,10 @@ outside_network_delete(struct outside_network* outnet) p = np; } } + /* was allocated in struct pending that was deleted above */ + rbtree_init(&outnet->tcp_reuse, reuse_cmp); + outnet->tcp_reuse_first = NULL; + outnet->tcp_reuse_last = NULL; if(outnet->udp_wait_first) { struct pending* p = outnet->udp_wait_first, *np; while(p) { @@ -1283,14 +1403,20 @@ outnet_tcptimer(void* arg) { struct waiting_tcp* w = (struct waiting_tcp*)arg; struct outside_network* outnet = w->outnet; - comm_point_callback_type* cb; - void* cb_arg; + int do_callback = 1; if(w->pkt) { /* it is on the waiting list */ waiting_list_remove(outnet, w); } else { /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; + /* see if it needs unlink from reuse tree */ + if(pend->reuse.pending) { + reuse_tcp_remove_tree_list(outnet, &pend->reuse); + do_callback = 0; + } + /* do failure callbacks for all the queries in the + * wait for write list and in the id-tree TODO */ if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -1303,23 +1429,100 @@ outnet_tcptimer(void* arg) pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; } - cb = w->cb; - cb_arg = w->cb_arg; - waiting_tcp_delete(w); - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); + if(do_callback) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + waiting_tcp_delete(w); + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); + } else { + waiting_tcp_delete(w); + } use_free_buffer(outnet); } +/** close the oldest reuse_tcp connection to make a fd and struct pend + * available for a new stream connection */ +static void +reuse_tcp_close_oldest(struct outside_network* outnet) +{ + struct pending_tcp* pend; + if(!outnet->tcp_reuse_last) return; + pend = outnet->tcp_reuse_last; + + /* snip off of LRU */ + log_assert(pend->reuse.next == NULL); + if(pend->reuse.prev) { + log_assert(pend->reuse.prev->pending); + outnet->tcp_reuse_last = pend->reuse.prev->pending; + pend->reuse.prev->next = NULL; + } else { + outnet->tcp_reuse_last = NULL; + outnet->tcp_reuse_first = NULL; + } + + /* TODO should only close unused in tree, not ones that are in use, + * for which we need also a tree to find in-use streams for multiple + * queries on them */ + /* free up */ + decommission_pending_tcp(outnet, pend); +} + +/** find reuse tcp stream to destination for query, or NULL if none */ +static struct reuse_tcp* +reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) +{ + struct waiting_tcp key_w; + struct pending_tcp key_p; + struct comm_point c; + memset(&key_w, 0, sizeof(key_w)); + memset(&key_p, 0, sizeof(key_p)); + memset(&c, 0, sizeof(c)); + key_p.query = &key_w; + key_p.c = &c; + key_p.reuse.pending = &key_p; + key_p.reuse.node.key = &key_p.reuse; + if(sq->ssl_upstream) /* something nonNULL for comparisons in tree */ + key_p.c->ssl = (void*)1; + if(sq->addrlen > sizeof(key_w.addr)) + return NULL; + memmove(&key_w.addr, &sq->addr, sq->addrlen); + key_w.addrlen = sq->addrlen; + + return (struct reuse_tcp*)rbtree_search(&outnet->tcp_reuse, + &key_p.reuse.node); +} + struct waiting_tcp* pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, int timeout, comm_point_callback_type* callback, void* callback_arg) { struct pending_tcp* pend = sq->outnet->tcp_free; + struct reuse_tcp* reuse = NULL; struct waiting_tcp* w; struct timeval tv; uint16_t id; + + /* find out if a reused stream to the target exists */ + /* if so, take it into use */ + reuse = reuse_tcp_find(sq->outnet, sq); + if(reuse) { + log_assert(reuse->pending); + pend = reuse->pending; + } + + /* if !pend but we have reuse streams, close a reuse stream + * to be able to open a new one to this target, no use waiting + * to reuse a file descriptor while another query needs to use + * that buffer and file descriptor now. */ + if(!pend) { + reuse_tcp_close_oldest(sq->outnet); + pend = sq->outnet->tcp_free; + } + /* if no buffer is free allocate space to store query */ + /* TODO: if reuse cannot write right now, store query even though + * pend is nonNULL */ w = (struct waiting_tcp*)malloc(sizeof(struct waiting_tcp) + (pend?0:sldns_buffer_limit(packet))); if(!w) { @@ -1347,10 +1550,26 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, comm_timer_set(w->timer, &tv); if(pend) { /* we have a buffer available right now */ - if(!outnet_tcp_take_into_use(w, sldns_buffer_begin(packet), - sldns_buffer_limit(packet))) { - waiting_tcp_delete(w); - return NULL; + if(reuse) { + /* if cannot write now, store query and put it + * in the waiting list for this stream TODO */ + /* and also delete it from waitlst if query gone, + * eg. sq is deleted TODO */ + /* and also servfail all waiting queries if + * stream closes TODO */ + /* reuse existing fd, write query and continue */ + outnet_tcp_take_query_setup(pend->c->fd, pend, + sldns_buffer_begin(packet), + sldns_buffer_limit(packet)); + } else { + /* create new fd and connect to addr, setup to + * write query */ + if(!outnet_tcp_take_into_use(w, + sldns_buffer_begin(packet), + sldns_buffer_limit(packet))) { + waiting_tcp_delete(w); + return NULL; + } } #ifdef USE_DNSTAP if(sq->outnet->dtenv && @@ -1502,6 +1721,42 @@ waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w) } } +/** reuse tcp stream, remove serviced query from stream, + * return true if the stream is kept, false if it is to be closed */ +static int +reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, + struct serviced_query* sq) +{ + struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting; + /* see if can be entered in reuse tree + * for that the FD has to be non-1 */ + if(pend_tcp->c->fd == -1) { + return 0; + } + /* if in tree and used by other queries */ + if(pend_tcp->reuse.node.key) { + /* note less use of stream */ + /* remove id value used by this svcd. */ + /* do not reset the keepalive timer, for that + * we'd need traffic, and this is where the servicedq is + * removed due to state machine internal reasons, + * eg. iterator no longer interested in this query */ + return 1; + } + /* if still open and want to keep it open */ + if(pend_tcp->c->fd != -1 && sq->outnet->tcp_reuse.count < + sq->outnet->tcp_reuse_max) { + /* note less use of stream */ + /* remove id value used by this svcd. */ + /* set a keepalive timer on it */ + if(!reuse_tcp_insert(sq->outnet, pend_tcp)) { + return 0; + } + return 1; + } + return 0; +} + /** cleanup serviced query entry */ static void serviced_delete(struct serviced_query* sq) @@ -1522,9 +1777,14 @@ serviced_delete(struct serviced_query* sq) } else { struct waiting_tcp* p = (struct waiting_tcp*) sq->pending; + /* TODO: if on stream-write-waiting list then + * remove from waiting list and waiting_tcp_delete */ if(p->pkt == NULL) { - decommission_pending_tcp(sq->outnet, - (struct pending_tcp*)p->next_waiting); + if(!reuse_tcp_remove_serviced_keep(p, sq)) { + decommission_pending_tcp(sq->outnet, + (struct pending_tcp*)p->next_waiting); + use_free_buffer(sq->outnet); + } } else { waiting_list_remove(sq->outnet, p); waiting_tcp_delete(p); diff --git a/services/outside_network.h b/services/outside_network.h index 3456a3da3..a0b277b1e 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -52,6 +52,7 @@ struct ub_randstate; struct pending_tcp; struct waiting_tcp; struct waiting_udp; +struct reuse_tcp; struct infra_cache; struct port_comm; struct port_if; @@ -150,6 +151,21 @@ struct outside_network { size_t num_tcp; /** number of tcp communication points in use. */ size_t num_tcp_outgoing; + /** + * tree of still-open and waiting tcp connections for reuse. + * can be closed and reopened to get a new tcp connection. + * or reused to the same destination again. with timeout to close. + * Entries are of type struct reuse_tcp. + * The entries are both active and empty connections. + */ + rbtree_type tcp_reuse; + /** max number of tcp_reuse entries we want to keep open */ + size_t tcp_reuse_max; + /** first and last(oldest) in lru list of reuse connections. + * the oldest can be closed to get a new free pending_tcp if needed + * The list contains empty connections, that wait for timeout or + * a new query that can use the existing connection. */ + struct pending_tcp* tcp_reuse_first, *tcp_reuse_last; /** list of tcp comm points that are free for use */ struct pending_tcp* tcp_free; /** list of tcp queries waiting for a buffer */ @@ -205,6 +221,43 @@ struct port_comm { struct comm_point* cp; }; +/** + * Reuse TCP connection, still open can be used again. + */ +struct reuse_tcp { + /** rbtree node with links in tcp_reuse tree. key is NULL when not + * in tree. Both active and empty connections are in the tree. */ + rbnode_type node; + /** lru chain, so that the oldest can be removed to get a new + * connection when all are in (re)use. oldest is last in list. + * The lru only contains empty connections waiting for reuse, + * the ones with active queries are not on the list because they + * do not need to be closed to make space for others. They already + * service a query so the close for another query does not help + * service a larger number of queries. + * TODO + */ + struct reuse_tcp* next, *prev; + /** the connection to reuse, the fd is non-1 and is open. + * the addr and port determine where the connection is going, + * and is key to the rbtree. The SSL ptr determines if it is + * a TLS connection or a plain TCP connection there. And TLS + * or not is also part of the key to the rbtree. + * There is a timeout and read event on the fd, to close it. + */ + struct pending_tcp* pending; + /** rbtree with other queries waiting on the connection, by ID number, + * of type struct waiting_tcp. It is for looking up received + * answers to the structure for callback. And also to see if ID + * numbers are unused and can be used for a new query. TODO */ + rbtree_type tree_by_id; + /** list of queries waiting to be written on the channel, + * if NULL no queries are waiting to be written and the pending->query + * is the query currently serviced. The first is the next in line. + * Once written, a query moves to the tree_by_id. TODO */ + struct waiting_tcp* write_wait_first, *write_wait_last; +}; + /** * A query that has an answer pending for it. */ @@ -255,6 +308,11 @@ struct pending_tcp { struct comm_point* c; /** the query being serviced, NULL if the pending_tcp is unused. */ struct waiting_tcp* query; + /** the pre-allocated reuse tcp structure. if ->pending is nonNULL + * it is in use and the connection is waiting for reuse. + * It is here for memory pre-allocation, and used to make this + * pending_tcp wait for reuse. */ + struct reuse_tcp reuse; }; /** @@ -266,6 +324,13 @@ struct waiting_tcp { * if pkt==0, this points to the pending_tcp structure. */ struct waiting_tcp* next_waiting; + /** next and prev in query waiting list for stream connection */ + struct waiting_tcp* write_wait_prev, *write_wait_next; + /** true if the waiting_tcp structure is on the write_wait queue */ + int write_wait_queued; + /** entry in reuse.tree_by_id, if key is NULL, not in tree, otherwise, + * this struct is key and sorted by ID from pending_tcp->id. */ + rbnode_type id_node; /** timeout event; timer keeps running whether the query is * waiting for a buffer or the tcp reply is pending */ struct comm_timer* timer; @@ -635,4 +700,7 @@ int pending_cmp(const void* key1, const void* key2); /** compare function of serviced query rbtree */ int serviced_cmp(const void* key1, const void* key2); +/** compare function of reuse_tcp rbtree */ +int reuse_cmp(const void* key1, const void* key2); + #endif /* OUTSIDE_NETWORK_H */ diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d6e904a4d..b04543f1e 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1488,6 +1488,12 @@ int serviced_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) return 0; } +int reuse_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) +{ + log_assert(0); + return 0; +} + /* timers in testbound for autotrust. statistics tested in tdir. */ struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index f5da501de..84b185160 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -210,6 +210,7 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)) else if(fptr == &fwd_cmp) return 1; else if(fptr == &pending_cmp) return 1; else if(fptr == &serviced_cmp) return 1; + else if(fptr == &reuse_cmp) return 1; else if(fptr == &name_tree_compare) return 1; else if(fptr == &order_lock_cmp) return 1; else if(fptr == &codeline_cmp) return 1; From 4f78b37c61b1d94ea43ae76d5589ab39b4c71f9b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Thu, 2 Apr 2020 18:34:03 +0200 Subject: [PATCH 009/394] Down- and upstream padding a la RFC7830 & RFC8467 --- daemon/worker.c | 1 + doc/example.conf.in | 12 + doc/unbound.conf.5.in | 20 + libunbound/libworker.c | 1 + services/authzone.c | 2 + services/outside_network.c | 17 +- services/outside_network.h | 2 + testcode/fake_event.c | 1 + util/config_file.c | 12 + util/config_file.h | 11 + util/configlexer.c | 4408 ++++++------- util/configlexer.lex | 4 + util/configparser.c | 11727 +++++++++++++++-------------------- util/configparser.h | 935 +-- util/configparser.y | 40 + util/data/msgencode.c | 46 +- util/data/msgparse.c | 2 + util/data/msgparse.h | 2 + util/edns.c | 10 + validator/autotrust.c | 1 + 20 files changed, 7866 insertions(+), 9388 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 201e77336..9f8db159f 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1286,6 +1286,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits &= EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; verbose(VERB_ALGO, "query with bad edns version."); log_addr(VERB_CLIENT,"from",&repinfo->addr, repinfo->addrlen); error_encode(c->buffer, EDNS_RCODE_BADVERS&0xf, &qinfo, diff --git a/doc/example.conf.in b/doc/example.conf.in index 091948e2d..7374a564a 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -746,6 +746,12 @@ server: # cipher setting for TLSv1.3 # tls-ciphersuites: "TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_8_SHA256:TLS_AES_128_CCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256" + # Pad responses to padded queries received over TLS + # pad-responses: yes + + # Padded responses will be padded to the closest multiple of this size. + # pad-responses-block-size: 468 + # Add the secret file for TLS Session Ticket. # Secret file must be 80 bytes of random data. # First key use to encrypt and decrypt TLS session tickets. @@ -764,6 +770,12 @@ server: # Add system certs to the cert bundle, from the Windows Cert Store # tls-win-cert: no + # Pad queries over TLS upstreams + # pad-queries: no + + # Padded queries will be padded to the closest multiple of this size. + # pad-queries-block-size: 128 + # Also serve tls on these port numbers (eg. 443, ...), by listing # tls-additional-port: portno for each of the port numbers. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd219c79a..01fd0bd7f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -546,6 +546,26 @@ and that is the default. Set the list of ciphersuites to allow when serving TLS. This is for newer TLS 1.3 connections. Use "" for defaults, and that is the default. .TP +.B pad\-responses: \fI +If enabled, TLS serviced queries that contained an EDNS Padding option will +cause responses padded to the closest multiple of the size specified in +\fBpad\-responses\-block\-size\fR. +Default is yes. +.TP +.B pad\-responses\-block\-size: \fI +The block size with which to pad responses serviced over TLS. Only responses +to padded queries will be padded. +Default is 468. +.TP +.B pad\-queries: \fI +If enabled, all queries sent over TLS upstreams will be padded to the closest +multiple of the size specified in \fBpad\-queries\-block\-size\fR. +Default is no. +.TP +.B pad\-queries\-block\-size: \fI +The block size with which to pad queries sent over TLS upstreams. +Default is 128. +.TP .B use\-systemd: \fI Enable or disable systemd socket activation. Default is no. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 24233f1d0..be32c3ae8 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -574,6 +574,7 @@ setup_qinfo_edns(struct libworker* w, struct ctx_query* q, edns->edns_version = 0; edns->bits = EDNS_DO; edns->opt_list = NULL; + edns->padding_block_size = 0; if(sldns_buffer_capacity(w->back->udp_buff) < 65535) edns->udp_size = (uint16_t)sldns_buffer_capacity( w->back->udp_buff); diff --git a/services/authzone.c b/services/authzone.c index 70fe27a5e..be02610e8 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5091,6 +5091,7 @@ xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; @@ -6278,6 +6279,7 @@ xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env* env) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; diff --git a/services/outside_network.c b/services/outside_network.c index 978e98b0e..ec380c86d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1415,7 +1415,8 @@ static struct serviced_query* serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, int want_dnssec, int nocaps, int tcp_upstream, int ssl_upstream, char* tls_auth_name, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list) + uint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list, + size_t pad_queries_block_size) { struct serviced_query* sq = (struct serviced_query*)malloc(sizeof(*sq)); #ifdef UNBOUND_DEBUG @@ -1473,6 +1474,7 @@ serviced_create(struct outside_network* outnet, sldns_buffer* buff, int dnssec, sq->status = serviced_initial; sq->retry = 0; sq->to_be_deleted = 0; + sq->padding_block_size = pad_queries_block_size; #ifdef UNBOUND_DEBUG ins = #else @@ -1591,6 +1593,7 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) if(with_edns) { /* add edns section */ struct edns_data edns; + struct edns_option padding_option; edns.edns_present = 1; edns.ext_rcode = 0; edns.edns_version = EDNS_ADVERTISED_VERSION; @@ -1613,6 +1616,14 @@ serviced_encode(struct serviced_query* sq, sldns_buffer* buff, int with_edns) edns.bits = EDNS_DO; if(sq->dnssec & BIT_CD) LDNS_CD_SET(sldns_buffer_begin(buff)); + if (sq->ssl_upstream && sq->padding_block_size) { + padding_option.opt_code = LDNS_EDNS_PADDING; + padding_option.opt_len = 0; + padding_option.opt_data = NULL; + padding_option.next = edns.opt_list; + edns.opt_list = &padding_option; + edns.padding_block_size = sq->padding_block_size; + } attach_edns_record(buff, &edns); } } @@ -2125,7 +2136,9 @@ outnet_serviced_query(struct outside_network* outnet, sq = serviced_create(outnet, buff, dnssec, want_dnssec, nocaps, tcp_upstream, ssl_upstream, tls_auth_name, addr, addrlen, zone, zonelen, (int)qinfo->qtype, - qstate->edns_opts_back_out); + qstate->edns_opts_back_out, + ( ssl_upstream && env->cfg->pad_queries + ? env->cfg->pad_queries_block_size : 0)); if(!sq) { free(cb); return NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 3fc5dde45..eeb77bb92 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -390,6 +390,8 @@ struct serviced_query { struct service_callback* cblist; /** the UDP or TCP query that is pending, see status which */ void* pending; + /** block size with which to pad encrypted queries (default: 128) */ + size_t padding_block_size; }; /** diff --git a/testcode/fake_event.c b/testcode/fake_event.c index c69fb9bfd..209257921 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1222,6 +1222,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.opt_list = qstate->edns_opts_back_out; if(dnssec) edns.bits = EDNS_DO; + edns.padding_block_size = 0; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/util/config_file.c b/util/config_file.c index 767d76b29..bd9fd278d 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -322,6 +322,10 @@ config_create(void) cfg->dnscrypt_shared_secret_cache_slabs = 4; cfg->dnscrypt_nonce_cache_size = 4*1024*1024; cfg->dnscrypt_nonce_cache_slabs = 4; + cfg->pad_responses = 1; + cfg->pad_responses_block_size = 468; /* from RFC8467 */ + cfg->pad_queries = 0; + cfg->pad_queries_block_size = 128; /* from RFC8467 */ #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; cfg->ipsecmod_ignore_bogus = 0; @@ -693,6 +697,10 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_NUMBER_OR_ZERO("fast-server-permil:", fast_server_permil) else S_YNO("qname-minimisation:", qname_minimisation) else S_YNO("qname-minimisation-strict:", qname_minimisation_strict) + else S_YNO("pad-responses:", pad_responses) + else S_SIZET_NONZERO("pad-responses-block-size:", pad_responses_block_size) + else S_YNO("pad-queries:", pad_queries) + else S_SIZET_NONZERO("pad-queries-block-size:", pad_queries_block_size) #ifdef USE_IPSECMOD else S_YNO("ipsecmod-enabled:", ipsecmod_enabled) else S_YNO("ipsecmod-ignore-bogus:", ipsecmod_ignore_bogus) @@ -1120,6 +1128,10 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) + else O_YNO(opt, "pad-responses", pad_responses) + else O_DEC(opt, "pad-responses-block-size", pad_responses_block_size) + else O_YNO(opt, "pad-queries", pad_queries) + else O_DEC(opt, "pad-queries-block-size", pad_queries_block_size) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) diff --git a/util/config_file.h b/util/config_file.h index 49c9610ce..454b88734 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -569,6 +569,17 @@ struct config_file { size_t dnscrypt_nonce_cache_size; /** number of slabs for dnscrypt nonces cache */ size_t dnscrypt_nonce_cache_slabs; + + /** EDNS padding according to FC7830 and RFC8467 */ + /** true to enable padding of responses (default: on) */ + int pad_responses; + /** block size with which to pad encrypted responses (default: 468) */ + size_t pad_responses_block_size; + /** true to enable padding of queries (default: off) */ + int pad_queries; + /** block size with which to pad encrypted queries (default: 128) */ + size_t pad_queries_block_size; + /** IPsec module */ #ifdef USE_IPSECMOD /** false to bypass the IPsec module */ diff --git a/util/configlexer.c b/util/configlexer.c index 194569a64..6e185a1ad 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 310 -#define YY_END_OF_BUFFER 311 +#define YY_NUM_RULES 314 +#define YY_END_OF_BUFFER 315 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,343 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3049] = +static const flex_int16_t yy_accept[3094] = { 0, - 1, 1, 292, 292, 296, 296, 300, 300, 304, 304, - 1, 1, 311, 308, 1, 290, 290, 309, 2, 309, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 292, 293, 293, 294, 309, 296, 297, 297, - 298, 309, 303, 300, 301, 301, 302, 309, 304, 305, - 305, 306, 309, 307, 291, 2, 295, 309, 307, 308, - 0, 1, 2, 2, 2, 2, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, + 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, + 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, + 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, + 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 292, 0, 296, 0, 303, 0, 300, 304, 0, 307, - 0, 2, 2, 307, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, + 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 307, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 114, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 122, 308, 308, 308, - 308, 308, 308, 308, 307, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 114, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 122, + 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 98, 308, 308, 308, 308, 308, 308, 8, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 115, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 127, 308, 307, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 98, 312, 312, 312, 312, 312, 312, + 312, 312, 8, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 115, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 285, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 127, 312, 311, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 307, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 56, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 224, 308, 14, 15, 308, 19, - 18, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 311, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 56, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 224, 312, 14, 15, 312, 19, 18, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 121, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 208, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 3, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 121, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 208, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 307, 308, 308, - 308, 308, 308, 308, 308, 280, 308, 308, 279, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 299, 308, 308, 308, 308, 308, - 308, 308, 55, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 311, 312, 312, 312, + 312, 312, 312, 312, 284, 312, 312, 283, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 303, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 59, - 308, 254, 308, 308, 308, 308, 308, 308, 308, 308, - 286, 287, 308, 308, 308, 308, 308, 60, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 118, 308, 308, 308, 308, 308, 308, - 308, 308, 197, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 21, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 59, 312, + 254, 312, 312, 312, 312, 312, 312, 312, 312, 290, + 291, 312, 312, 312, 312, 312, 312, 312, 60, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 118, 312, 312, 312, 312, 312, + 312, 312, 312, 197, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 21, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 146, 308, 308, 299, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 96, 308, 308, 308, 308, - 308, 308, 308, 262, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 169, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 145, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 146, 312, 312, 303, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, + 312, 312, 312, 312, 262, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 169, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 145, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 95, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 32, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 33, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 57, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 120, 308, 308, 308, 308, 308, 113, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 95, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 32, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 33, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 57, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, - 308, 308, 308, 308, 58, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 227, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 170, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 46, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 113, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 58, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 227, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 170, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 46, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 245, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 50, 308, 51, 308, 308, - 308, 308, 308, 99, 308, 100, 308, 308, 308, 308, - 97, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 7, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 217, 308, 308, - 308, 308, 148, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 245, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 50, 312, 51, 312, 312, 312, 312, 312, 99, 312, + 100, 312, 312, 312, 312, 97, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 7, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 228, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 47, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 189, 308, - 188, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 16, 17, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 217, 312, 312, 312, 312, 148, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 228, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 47, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 189, 312, 188, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 61, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 196, 308, 308, 308, 308, 308, 308, - 102, 308, 101, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 180, 308, 308, 308, 308, 308, 308, - 308, 308, 128, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 80, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 16, 17, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 61, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 196, 312, 312, 312, 312, 312, 312, 102, 312, 101, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 180, 312, 312, 312, 312, 312, 312, 312, 312, 128, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 80, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 84, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 54, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 183, 184, 308, 308, - 308, 256, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 6, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 260, 308, 308, 308, 308, - 308, 308, 281, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 84, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 54, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 183, 184, 312, 312, 312, 256, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 6, 312, 312, 312, 312, 312, 312, 275, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 42, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 44, 308, 308, 308, - 308, 308, 308, 308, 308, 176, 308, 308, 308, 123, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 201, 308, 177, 308, 308, 308, 214, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 45, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 125, 107, 308, 108, - 308, 308, 308, 106, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 312, 260, 312, 312, 312, 312, + 312, 312, 285, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 42, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 44, 312, 312, 312, + 312, 312, 312, 312, 312, 176, 312, 312, 312, 123, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 201, 312, 177, 312, 312, 312, 214, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 45, 312, 312, 312, - 308, 308, 143, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 244, 308, 308, 308, 308, 308, - 308, 308, 308, 178, 308, 308, 308, 308, 308, 181, - 308, 187, 308, 308, 308, 308, 308, 213, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 94, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 119, 308, 308, 308, 308, 308, 308, 52, 308, 308, - 308, 26, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 20, 308, 308, 308, 308, 308, 308, 27, 36, + 312, 312, 312, 312, 312, 312, 125, 107, 312, 108, + 312, 312, 312, 106, 312, 312, 312, 312, 312, 312, + 312, 312, 143, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 244, 312, 312, 312, 312, 312, + 312, 312, 312, 178, 312, 312, 312, 312, 312, 181, + 312, 187, 312, 312, 312, 312, 312, 213, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 94, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 119, 312, 312, 312, 312, 312, 312, 52, - 308, 153, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 69, 71, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 264, 308, 308, 308, - 225, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 109, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 142, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 275, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 26, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 20, 312, 312, 312, 312, 312, 312, + 27, 36, 312, 153, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 69, 71, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 264, 312, + 312, 312, 225, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 109, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 142, 312, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 147, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 207, 308, 308, 308, 308, 308, 308, 308, 308, - 284, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 164, 308, 308, 308, 308, 308, 308, 308, - 308, 103, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 159, 308, 171, 308, 308, 308, 308, 308, 131, - 308, 308, 308, 308, 308, 90, 308, 308, 308, 308, - 199, 308, 308, 308, 308, 308, 308, 215, 308, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 279, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 147, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 273, 312, 312, 312, 207, 312, 312, 312, + 312, 312, 312, 312, 312, 288, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 164, 312, 312, + 312, 312, 312, 312, 312, 312, 103, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 159, 312, 171, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 236, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 124, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 163, 308, 308, 308, 308, 308, - 72, 73, 308, 308, 308, 308, 308, 53, 308, 308, - 308, 308, 308, 79, 172, 308, 190, 308, 218, 308, - 308, 182, 257, 308, 308, 308, 308, 308, 65, 308, - 174, 308, 308, 308, 308, 308, 9, 308, 308, 308, - 93, 308, 308, 308, 308, 249, 308, 308, 308, 198, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 131, 312, 312, 312, 312, 312, + 90, 312, 312, 312, 312, 199, 312, 312, 312, 312, + 312, 312, 215, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 236, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 124, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 163, + 312, 312, 312, 312, 312, 72, 73, 312, 312, 312, + 312, 312, 53, 312, 312, 312, 312, 312, 79, 172, + 312, 190, 312, 218, 312, 312, 182, 257, 312, 312, + 312, 312, 312, 65, 312, 174, 312, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 162, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 149, 308, 263, 308, 308, 308, 308, 235, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 209, - 308, 308, 308, 308, 255, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 278, + 312, 9, 312, 312, 312, 312, 312, 93, 312, 312, + 312, 312, 249, 312, 312, 312, 198, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 162, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 149, 312, 263, + 312, 312, 312, 312, 235, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 209, 312, 312, 312, - 308, 173, 308, 308, 308, 308, 308, 308, 308, 64, - 66, 308, 308, 308, 308, 308, 308, 308, 92, 308, - 308, 308, 308, 247, 308, 308, 308, 259, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 203, - 34, 28, 30, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 35, 308, 29, 31, 308, 308, 308, 308, - 308, 308, 308, 308, 89, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 205, 202, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 255, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 282, 312, 173, 312, + 312, 312, 312, 312, 312, 312, 64, 66, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 92, 312, 312, + 312, 312, 247, 312, 312, 312, 259, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 203, 34, + 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, + 312, 312, 312, 89, 312, 312, 312, 312, 312, 312, - 308, 63, 308, 308, 126, 308, 110, 308, 308, 308, - 308, 308, 308, 308, 308, 144, 13, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 273, 308, 276, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 12, - 308, 308, 22, 308, 308, 308, 253, 308, 308, 308, - 261, 308, 308, 308, 67, 308, 211, 308, 308, 308, - 308, 204, 308, 308, 62, 308, 308, 308, 308, 23, - 308, 43, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 158, 157, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 206, 200, 308, 216, 308, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 205, 202, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 63, 312, 312, 126, 312, 110, 312, 312, 312, 312, + 312, 312, 312, 312, 144, 13, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 277, 312, 280, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, + 312, 22, 312, 312, 312, 312, 312, 253, 312, 312, + 312, 261, 312, 312, 312, 67, 312, 211, 312, 312, + 312, 312, 204, 312, 312, 62, 312, 312, 312, 312, - 308, 265, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 74, - 308, 308, 308, 248, 308, 308, 308, 308, 186, 308, - 308, 308, 308, 210, 308, 308, 308, 308, 308, 308, - 308, 308, 282, 283, 155, 308, 308, 68, 308, 308, - 308, 308, 165, 308, 308, 104, 105, 308, 308, 308, - 308, 150, 308, 152, 308, 191, 308, 308, 308, 308, - 156, 308, 308, 219, 308, 308, 308, 308, 308, 308, - 308, 133, 308, 308, 308, 308, 308, 308, 308, 308, + 23, 312, 43, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 158, 157, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 206, 200, 312, 216, + 312, 312, 265, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 74, 312, 312, 312, 248, 312, 312, 312, 312, 186, + 312, 312, 312, 312, 210, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 286, 287, 155, 312, 312, + 68, 312, 312, 312, 312, 165, 312, 312, 104, 105, - 308, 308, 308, 226, 308, 308, 308, 308, 308, 308, - 308, 24, 308, 258, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 192, 308, 308, 246, 308, - 277, 308, 185, 308, 308, 308, 308, 48, 308, 308, - 308, 308, 4, 308, 308, 308, 117, 132, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 222, 37, 38, 308, - 308, 308, 308, 308, 308, 308, 266, 308, 308, 308, - 308, 308, 308, 234, 308, 308, 308, 308, 308, 308, - 308, 195, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 312, 312, 312, 150, 312, 152, 312, 191, 312, + 312, 312, 312, 156, 312, 312, 219, 312, 312, 312, + 312, 312, 312, 312, 133, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 226, 312, 312, 312, + 312, 312, 312, 312, 24, 312, 258, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 192, 312, + 312, 246, 312, 281, 312, 185, 312, 312, 312, 312, + 48, 312, 312, 312, 312, 312, 312, 4, 312, 312, + 312, 117, 132, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 308, 77, 308, 49, 252, 308, 223, 308, 308, 308, - 308, 11, 308, 308, 308, 308, 308, 116, 308, 308, - 308, 308, 193, 81, 308, 40, 308, 308, 308, 308, - 308, 308, 308, 308, 161, 308, 308, 308, 308, 308, - 135, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 233, 308, 308, 308, 308, 129, 308, 308, 111, 112, - 308, 308, 308, 83, 87, 82, 308, 75, 308, 308, - 308, 308, 308, 10, 308, 308, 308, 250, 308, 308, - 308, 308, 289, 39, 308, 308, 308, 308, 308, 160, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 312, 222, 37, 38, 312, 312, 312, 312, 312, 312, + 312, 266, 312, 312, 312, 312, 312, 312, 234, 312, + 312, 312, 312, 312, 312, 312, 195, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 77, 312, 49, 252, + 312, 223, 312, 312, 312, 312, 11, 312, 312, 312, + 312, 312, 312, 312, 116, 312, 312, 312, 312, 193, + 81, 312, 40, 312, 312, 312, 312, 312, 312, 312, + 312, 161, 312, 312, 312, 312, 312, 135, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 233, 312, 312, + 312, 312, 129, 312, 312, 111, 112, 312, 312, 312, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 88, 86, 308, 76, 274, 308, 308, 308, - 308, 308, 308, 308, 179, 308, 308, 308, 308, 308, - 194, 308, 308, 308, 308, 308, 308, 308, 308, 151, - 70, 308, 308, 308, 308, 308, 267, 308, 308, 308, - 308, 308, 308, 308, 230, 308, 308, 229, 130, 308, - 85, 136, 137, 140, 141, 138, 139, 78, 308, 251, - 308, 308, 308, 308, 154, 308, 308, 308, 308, 308, - 221, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 167, 166, + 83, 87, 82, 312, 75, 312, 312, 312, 312, 312, + 10, 312, 312, 312, 312, 312, 250, 312, 312, 312, + 312, 293, 39, 312, 312, 312, 312, 312, 160, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 88, 86, 312, 76, 278, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 179, 312, 312, 312, 312, + 312, 194, 312, 312, 312, 312, 312, 312, 312, 312, + 151, 70, 312, 312, 312, 312, 312, 267, 312, 312, + 312, 312, 312, 312, 312, 230, 312, 312, 229, 130, - 41, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 91, 308, 220, 308, 243, - 271, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 5, 308, 308, 212, 308, 308, 272, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 231, - 25, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 232, 308, 308, 308, 134, 308, 308, - 308, 308, 308, 308, 308, 308, 168, 308, 175, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 268, 308, + 312, 85, 136, 137, 140, 141, 138, 139, 78, 276, + 312, 312, 251, 312, 312, 312, 312, 154, 312, 312, + 312, 312, 312, 221, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 167, 166, 41, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 274, 312, 312, 312, 312, + 91, 312, 220, 312, 243, 271, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 5, 312, + 312, 212, 312, 312, 272, 312, 312, 312, 312, 312, + + 312, 312, 312, 312, 231, 25, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 232, 312, + 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, + 312, 168, 312, 175, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 268, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 292, 312, 312, 239, 312, 312, 312, 312, 312, + 269, 312, 312, 312, 312, 312, 312, 270, 312, 312, + 312, 237, 312, 240, 241, 312, 312, 312, 312, 312, + 238, 242, 0 - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 288, 308, 308, 239, - 308, 308, 308, 308, 308, 269, 308, 308, 308, 308, - 308, 308, 270, 308, 308, 308, 237, 308, 240, 241, - 308, 308, 308, 308, 308, 238, 242, 0 } ; static const YY_CHAR yy_ec[256] = @@ -742,689 +748,699 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3063] = +static const flex_int16_t yy_base[3108] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2327, 1999, 81, 5940, 5940, 5940, 96, 52, + 90, 112, 1946, 1584, 81, 6029, 6029, 6029, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1735, 5940, 5940, 5940, 107, 1527, 5940, 5940, - 5940, 165, 1302, 1259, 5940, 5940, 5940, 211, 1131, 5940, - 5940, 5940, 180, 948, 5940, 217, 5940, 221, 168, 767, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 76, 135, 141, 117, 163, 134, 151, 165, 174, 179, + 190, 145, 1331, 6029, 6029, 6029, 107, 1281, 6029, 6029, + 6029, 165, 1175, 1158, 6029, 6029, 6029, 212, 1094, 6029, + 6029, 6029, 216, 816, 6029, 220, 6029, 224, 157, 782, + 228, 234, 0, 240, 0, 0, 201, 225, 85, 182, + 176, 232, 234, 114, 236, 209, 241, 224, 238, 244, + 252, 248, 249, 256, 254, 258, 257, 259, 266, 271, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 723, 379, 595, 381, 503, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 477, 464, - 465, 463, 486, 472, 488, 490, 487, 498, 499, 475, + 279, 251, 278, 281, 282, 285, 289, 287, 292, 295, + 296, 297, 307, 300, 308, 310, 314, 313, 315, 320, + 322, 321, 161, 324, 331, 325, 159, 327, 329, 337, + 332, 342, 346, 352, 351, 354, 358, 357, 359, 360, + 356, 729, 381, 686, 383, 599, 390, 452, 286, 394, + 189, 398, 402, 0, 379, 394, 403, 387, 396, 398, + 364, 400, 401, 404, 409, 407, 415, 416, 418, 421, + 422, 431, 430, 432, 434, 429, 437, 439, 445, 438, + 455, 447, 454, 456, 460, 461, 462, 463, 464, 481, + 466, 472, 467, 490, 488, 497, 500, 486, 502, 504, - 506, 504, 511, 516, 512, 489, 514, 501, 517, 491, - 518, 515, 522, 524, 525, 529, 530, 537, 534, 535, - 538, 532, 547, 543, 552, 544, 551, 555, 548, 558, - 566, 569, 549, 576, 559, 572, 573, 578, 581, 585, - 582, 580, 583, 590, 587, 589, 591, 593, 592, 600, - 610, 607, 608, 620, 609, 605, 616, 617, 618, 596, - 628, 627, 623, 632, 638, 629, 636, 639, 641, 643, - 642, 644, 646, 656, 649, 659, 652, 666, 661, 667, - 664, 676, 651, 662, 672, 673, 674, 678, 677, 679, - 684, 687, 688, 690, 691, 685, 698, 696, 700, 713, + 474, 511, 507, 514, 515, 510, 522, 518, 519, 520, + 521, 523, 524, 526, 528, 529, 534, 477, 530, 542, + 543, 535, 547, 537, 552, 544, 560, 555, 556, 564, + 557, 558, 573, 574, 569, 577, 570, 465, 578, 581, + 589, 590, 585, 572, 586, 593, 592, 594, 596, 598, + 597, 606, 614, 610, 612, 619, 609, 618, 621, 622, + 623, 601, 633, 625, 635, 629, 641, 634, 642, 644, + 640, 646, 647, 649, 648, 660, 651, 664, 666, 669, + 655, 670, 662, 678, 673, 674, 675, 677, 679, 681, + 682, 683, 685, 688, 694, 689, 698, 691, 705, 708, - 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, - 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5940, 760, 773, 771, 774, - 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5940, 815, 807, 849, - 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, - 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, - 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, - 893, 895, 902, 905, 904, 908, 916, 909, 915, 917, - 921, 922, 925, 927, 929, 923, 926, 933, 950, 931, + 697, 719, 712, 702, 710, 722, 713, 717, 714, 732, + 746, 741, 733, 742, 747, 749, 751, 724, 754, 755, + 748, 761, 762, 752, 767, 768, 775, 776, 6029, 770, + 773, 786, 784, 791, 792, 785, 798, 772, 793, 806, + 804, 805, 809, 831, 807, 808, 811, 813, 821, 6029, + 820, 824, 855, 825, 833, 849, 845, 815, 837, 844, + 853, 841, 872, 861, 863, 864, 881, 865, 873, 876, + 877, 879, 880, 897, 889, 882, 886, 894, 905, 900, + 901, 904, 913, 903, 906, 912, 907, 914, 915, 920, + 926, 918, 929, 930, 931, 933, 932, 936, 935, 938, - 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, - 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, - 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5940, 1007, 1009, 1011, 1012, 1013, 1010, 5940, 1014, 1015, - 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, - 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5940, 1071, 1077, 1080, - 1079, 1085, 1082, 1090, 1097, 1100, 1093, 1106, 1116, 1103, - 1117, 1111, 1113, 1072, 1118, 1122, 1124, 1125, 1126, 1127, - 1128, 1130, 1129, 1132, 1140, 1136, 5940, 1144, 1145, 1154, + 948, 956, 943, 953, 951, 958, 960, 962, 966, 963, + 969, 970, 971, 972, 980, 977, 978, 979, 983, 985, + 986, 989, 991, 992, 994, 996, 998, 997, 1003, 1007, + 1005, 1013, 846, 6029, 1015, 1008, 1017, 1018, 1019, 1023, + 1021, 1020, 6029, 1024, 1030, 1022, 1037, 1034, 1039, 1046, + 1035, 1045, 1052, 1047, 1048, 1060, 1038, 1059, 1070, 1057, + 1067, 1065, 1068, 1069, 1074, 1066, 1075, 1076, 1077, 1078, + 1097, 6029, 1082, 1084, 1086, 1085, 1093, 1106, 1115, 1107, + 1095, 1112, 1118, 1114, 1121, 1126, 1125, 1130, 1131, 1133, + 1134, 1136, 1140, 1138, 1141, 1139, 1142, 1145, 1143, 1144, - 1147, 1152, 1156, 1157, 1158, 1160, 1161, 1163, 1162, 1166, - 1169, 1183, 1170, 1185, 1172, 1186, 1180, 1181, 1187, 1188, - 1190, 1195, 1203, 1200, 1205, 1208, 1216, 1215, 1218, 1225, - 1201, 1220, 1193, 1212, 1221, 1224, 1228, 1226, 1232, 1230, - 1241, 1236, 1237, 1238, 1239, 1248, 1245, 1244, 1253, 1246, - 1262, 1252, 1257, 1266, 1267, 1254, 1260, 5940, 1280, 1269, - 1276, 1277, 1282, 1283, 1284, 1285, 1288, 813, 1291, 1290, - 1292, 1294, 1296, 1297, 1298, 1299, 1307, 1315, 1311, 1310, - 1323, 1322, 1324, 1300, 1326, 1333, 1330, 1334, 1336, 1332, - 1344, 1341, 1342, 1331, 1352, 1345, 1347, 1348, 1349, 1357, + 1149, 6029, 1156, 1163, 1170, 1157, 1166, 1168, 1171, 1173, + 1083, 1172, 1177, 1178, 1174, 1184, 1192, 1179, 1195, 1193, + 1194, 1196, 1198, 1199, 1200, 1202, 1201, 1215, 1206, 1208, + 1223, 1226, 1225, 1228, 1235, 1212, 1231, 1232, 1230, 1236, + 1238, 1240, 1216, 1242, 1243, 1252, 1250, 1248, 1251, 1253, + 1263, 1255, 1258, 1259, 1264, 1268, 1265, 1270, 1274, 1275, + 1276, 1277, 6029, 1284, 1285, 1288, 1289, 1295, 1296, 1297, + 1287, 1298, 1301, 1304, 1305, 1306, 1312, 1309, 1313, 1307, + 1319, 1321, 1320, 1324, 1322, 1337, 1336, 1338, 1327, 1340, + 1341, 1329, 1350, 1342, 1355, 1353, 1352, 1364, 1359, 1360, - 1359, 1360, 1367, 1362, 1365, 1377, 1372, 1368, 1379, 1375, - 1380, 1383, 1384, 1385, 1386, 1387, 1395, 1388, 1390, 1391, - 1396, 1397, 1398, 1400, 1404, 1414, 1409, 1410, 1413, 1416, - 1420, 1418, 1421, 1425, 1426, 1427, 1428, 1429, 1434, 1431, - 1440, 1433, 1448, 1439, 1441, 1449, 1452, 1456, 1457, 1458, - 1465, 1454, 1466, 1467, 1468, 1469, 1471, 1474, 1477, 1481, - 1475, 1484, 1486, 1488, 1487, 1491, 1494, 1497, 1498, 5940, - 1492, 1505, 1500, 1506, 1504, 1509, 1512, 1519, 1514, 1517, - 1515, 1518, 1521, 1544, 5940, 1523, 5940, 5940, 1525, 5940, - 5940, 1526, 1531, 1529, 1528, 1539, 1546, 1548, 1536, 1551, + 1351, 1367, 1362, 1365, 1375, 1366, 1368, 1376, 1379, 1384, + 1377, 1385, 1393, 1394, 1388, 1396, 1391, 1399, 1400, 1402, + 1403, 1404, 1405, 1412, 1407, 1408, 1409, 1414, 1415, 1416, + 1419, 1422, 1432, 1427, 1428, 1430, 1434, 1438, 1436, 1439, + 1443, 1444, 1445, 1446, 1447, 1452, 1450, 1457, 1451, 1466, + 1458, 1459, 1467, 1470, 1476, 1472, 1482, 1483, 1473, 1485, + 1475, 1486, 1489, 1490, 1494, 1493, 1497, 1495, 1503, 1504, + 1506, 1505, 1508, 1513, 1511, 1515, 6029, 1516, 1523, 1518, + 1521, 1527, 1528, 1529, 1536, 1532, 1534, 1531, 1533, 1537, + 1559, 6029, 1545, 6029, 6029, 1544, 6029, 6029, 1542, 1546, - 1550, 1558, 1571, 1555, 1561, 1562, 1567, 1574, 1569, 1579, - 1584, 1576, 1587, 1593, 1594, 1595, 1602, 1603, 1596, 1599, - 1606, 1604, 1607, 1609, 1611, 1613, 1615, 1619, 1614, 1621, - 1616, 1631, 1622, 1635, 1642, 5940, 1639, 1643, 1646, 1645, - 1653, 1648, 1649, 1652, 1657, 1659, 1654, 1661, 1663, 1623, - 1664, 1666, 1667, 1669, 1678, 1670, 5940, 1671, 1673, 1681, - 1675, 1685, 1687, 1690, 1674, 1691, 1693, 1702, 1694, 1697, - 1698, 1705, 1557, 1707, 5940, 1709, 1716, 1703, 1708, 1719, - 1721, 1722, 1723, 1726, 1720, 1725, 1727, 1732, 1728, 1736, - 1734, 1737, 1733, 1739, 1738, 1751, 1754, 1756, 1757, 1758, + 1550, 1563, 1554, 1569, 1562, 1556, 1572, 1565, 1582, 1587, + 1543, 1575, 1577, 1583, 1590, 1598, 1600, 1601, 1603, 1609, + 1611, 1612, 1614, 1621, 1622, 1580, 1604, 1613, 1625, 1627, + 1626, 1628, 1632, 1630, 1635, 1631, 1638, 1633, 1643, 1648, + 1640, 1657, 6029, 1654, 1658, 1666, 1662, 1669, 1661, 1665, + 1668, 1642, 1673, 1670, 1674, 1675, 1677, 1679, 1682, 1681, + 1686, 1687, 1683, 1694, 1689, 6029, 1690, 1693, 1701, 1695, + 1707, 1709, 1703, 1705, 1711, 1712, 1719, 1715, 1721, 1722, + 1723, 1724, 1726, 6029, 1731, 1728, 1734, 1735, 1738, 1742, + 1743, 1739, 1744, 1745, 1746, 1747, 1749, 1752, 1756, 1757, - 1760, 1761, 1762, 1763, 1764, 1766, 1774, 1770, 1778, 1771, - 1779, 1781, 1788, 1776, 1787, 1789, 1790, 1796, 1804, 1800, - 1801, 1793, 1808, 1805, 1810, 1812, 1813, 1815, 1816, 1817, - 1822, 1820, 1824, 1827, 1826, 5940, 1828, 1829, 5940, 1833, - 1834, 1856, 1835, 1837, 1839, 1847, 1838, 1858, 1849, 1857, - 1868, 1860, 1876, 1866, 1878, 1869, 1881, 1879, 1883, 1885, - 1887, 1889, 1892, 1901, 1906, 1851, 1902, 1910, 1890, 1905, - 1893, 1925, 1907, 1909, 1913, 1916, 1917, 1915, 1840, 1921, - 1922, 1923, 1930, 1932, 5940, 1940, 1943, 1937, 1947, 1954, - 1950, 1938, 5940, 1949, 1952, 1953, 1965, 1962, 1963, 1967, + 1753, 1758, 1760, 1770, 1768, 1773, 1780, 1772, 1775, 1781, + 1783, 1785, 1786, 1787, 1789, 1794, 1790, 1799, 1795, 1802, + 1803, 1807, 1798, 1800, 1813, 1810, 1821, 1825, 1823, 1814, + 1816, 1830, 1827, 1834, 1828, 1835, 1837, 1838, 1839, 1841, + 1844, 1845, 1849, 1848, 6029, 1850, 1855, 6029, 1851, 1852, + 1875, 1856, 1858, 1861, 1860, 1863, 1864, 1870, 1879, 1872, + 1881, 1898, 1887, 1890, 1889, 1900, 1899, 1902, 1903, 1908, + 1909, 1910, 1918, 1919, 1883, 1925, 1927, 1914, 1922, 1924, + 1943, 1926, 1928, 1931, 1934, 1939, 1930, 1947, 1950, 1937, + 1948, 1953, 1954, 6029, 1965, 1968, 1960, 1961, 1972, 1970, - 1964, 1966, 1968, 1973, 1970, 1974, 1975, 1976, 1992, 5940, - 1978, 5940, 1977, 1987, 1989, 1990, 1995, 1996, 1997, 1998, - 5940, 5940, 2000, 2001, 2014, 2012, 2009, 5940, 2016, 2024, - 2025, 2017, 2019, 2021, 2027, 2030, 2031, 2034, 2035, 2042, - 2037, 2039, 2040, 5940, 2047, 2038, 2048, 2051, 2049, 2057, - 2058, 2060, 5940, 2061, 2064, 2068, 2075, 2071, 2073, 2066, - 2076, 2077, 2081, 2083, 2085, 2086, 2087, 2094, 2096, 2092, - 2093, 2101, 2109, 5940, 2095, 2091, 2110, 2107, 2115, 2108, - 2116, 2118, 2119, 2120, 2121, 2124, 2126, 2127, 2134, 2135, - 2130, 2139, 2141, 2131, 2133, 2137, 2152, 2143, 2151, 2153, + 1973, 6029, 1976, 1977, 1978, 1987, 1980, 1982, 1983, 1984, + 1991, 1990, 1995, 1993, 1997, 2003, 1996, 2014, 6029, 1999, + 6029, 1998, 2000, 2011, 2017, 2016, 2018, 2019, 2021, 6029, + 6029, 2022, 2023, 2028, 2041, 2036, 2025, 2037, 6029, 2038, + 2048, 2051, 2043, 2039, 2044, 2049, 2056, 2057, 2065, 2058, + 2066, 2061, 2063, 2070, 6029, 2071, 2062, 2075, 2077, 2073, + 2081, 2085, 2079, 6029, 2087, 2088, 2092, 2100, 2096, 2097, + 2099, 2102, 2107, 2101, 2103, 2109, 2110, 2111, 2118, 2120, + 2116, 2123, 2125, 2132, 6029, 2115, 2127, 2137, 2134, 2136, + 2140, 2141, 2138, 2142, 2143, 2144, 2148, 2151, 2152, 2159, - 2154, 5940, 2155, 2157, 124, 2159, 2162, 2158, 2163, 2166, - 2165, 2167, 2182, 2184, 2180, 2169, 2181, 2183, 2188, 2189, - 2190, 2191, 2192, 2193, 2195, 5940, 2201, 2198, 2203, 2196, - 2207, 2204, 2215, 5940, 2216, 2218, 2226, 2228, 2219, 2206, - 2222, 2227, 2230, 2232, 2236, 2238, 2240, 2242, 5940, 2247, - 2244, 2248, 2250, 2252, 2254, 2256, 2259, 2260, 2262, 2264, - 2263, 2266, 2267, 2268, 2269, 2271, 2277, 2280, 2272, 2282, - 2284, 5940, 2291, 2286, 2288, 2294, 2298, 2297, 2305, 2301, - 2307, 2306, 2310, 2322, 2312, 2308, 2324, 2315, 2323, 2329, - 2332, 2334, 2337, 2343, 2333, 2346, 2348, 2336, 2340, 2350, + 2160, 2157, 2162, 2165, 2158, 2161, 2168, 2173, 2170, 2174, + 2176, 2178, 6029, 2179, 2182, 124, 2185, 2186, 2184, 2187, + 2191, 2190, 2193, 2208, 2210, 2206, 2205, 2209, 2212, 2215, + 2216, 2217, 2218, 2220, 2219, 2222, 6029, 2224, 2225, 2228, + 2230, 2236, 2231, 2233, 6029, 2243, 2235, 2254, 2248, 2250, + 2194, 2256, 2258, 2257, 2260, 2259, 2262, 2261, 2263, 6029, + 2269, 2274, 2280, 2270, 2281, 2273, 2283, 2284, 2287, 2288, + 2289, 2291, 2293, 2296, 2294, 2295, 2297, 2298, 2303, 2305, + 2309, 2310, 6029, 2317, 2312, 2314, 2320, 2323, 2321, 2336, + 2324, 2327, 2331, 2337, 2345, 2334, 2339, 2352, 2355, 2357, - 2349, 2352, 2360, 2355, 2367, 2368, 2365, 2371, 2363, 2384, - 2389, 2380, 5940, 2378, 2388, 2376, 2390, 2398, 2393, 2395, - 2396, 2402, 2401, 2404, 2405, 2412, 2407, 2409, 2413, 2416, - 2414, 2422, 2418, 2424, 2425, 2433, 2426, 2435, 2364, 5940, - 2437, 2438, 2429, 2442, 2445, 2439, 2447, 2452, 2450, 2454, - 2456, 2458, 2460, 2461, 2462, 2463, 2465, 2467, 2466, 5940, - 2470, 2471, 2476, 2478, 2479, 2485, 2488, 2491, 2489, 2495, - 2496, 2497, 2498, 5940, 2505, 2506, 2503, 2507, 2509, 2510, - 2512, 2515, 2516, 5940, 2517, 2519, 2526, 2527, 2522, 5940, - 2530, 2525, 2531, 2532, 2533, 2534, 2540, 2535, 2538, 2543, + 2342, 2365, 2361, 2367, 2369, 2360, 2373, 2375, 2363, 2371, + 2376, 2377, 2379, 2382, 2386, 2393, 2394, 2390, 2398, 2391, + 2401, 2399, 2414, 2419, 2392, 6029, 2408, 2410, 2418, 2420, + 2427, 2422, 2423, 2424, 2430, 2431, 2432, 2433, 2440, 2441, + 2435, 2445, 2448, 2446, 2449, 2437, 2452, 2456, 2463, 2454, + 2465, 2466, 6029, 2467, 2471, 2472, 2473, 2475, 2478, 2480, + 2483, 2481, 2485, 2487, 2489, 2490, 2492, 2493, 2494, 2496, + 2500, 2497, 6029, 2501, 2503, 2507, 2509, 2511, 2516, 2517, + 2523, 2520, 2526, 2527, 2528, 2529, 6029, 2536, 2537, 2534, + 2538, 2540, 2541, 2543, 2546, 2547, 6029, 2548, 2550, 2557, - 2548, 2550, 2546, 2554, 5940, 2556, 2566, 2558, 2562, 2564, - 2567, 2568, 2570, 2574, 2578, 2573, 5940, 2590, 2589, 2586, - 2600, 2577, 2591, 2592, 2598, 2595, 2601, 2602, 5940, 2604, - 2605, 2607, 2608, 2611, 2612, 2614, 2626, 2616, 2619, 2621, - 2624, 2627, 2629, 2631, 2634, 2632, 2640, 2643, 2644, 2646, - 2647, 2649, 2650, 2657, 2660, 2662, 2664, 5940, 2667, 2668, - 2669, 2656, 2659, 2671, 2675, 2676, 2679, 2680, 2684, 2681, - 2683, 2691, 2693, 2694, 2696, 2698, 2700, 2701, 2703, 2704, - 2705, 2706, 2713, 2711, 2709, 2718, 2715, 2720, 2727, 2722, - 2728, 2729, 2730, 2731, 2732, 2736, 2737, 2739, 2740, 2744, + 2558, 2553, 6029, 2561, 2556, 2562, 2563, 2564, 2565, 2571, + 2566, 2569, 2574, 2579, 2581, 2577, 2585, 6029, 2587, 2597, + 2589, 2593, 2595, 2598, 2599, 2601, 2605, 2609, 2604, 6029, + 2621, 2620, 2617, 2631, 2608, 2622, 2623, 2629, 2626, 2632, + 2633, 6029, 2635, 2636, 2638, 2639, 2642, 2643, 2645, 2657, + 2647, 2650, 2652, 2655, 2658, 2660, 2662, 2665, 2663, 2671, + 2674, 2675, 2677, 2678, 2680, 2681, 2688, 2691, 2693, 2695, + 6029, 2698, 2699, 2700, 2687, 2690, 2702, 2706, 2707, 2710, + 2711, 2715, 2712, 2714, 2722, 2724, 2725, 2727, 2729, 2731, + 2732, 2734, 2735, 2736, 2737, 2744, 2742, 2740, 2749, 2746, - 2755, 2756, 2746, 2757, 2758, 2759, 2760, 5940, 2763, 2765, - 2764, 2769, 2774, 2771, 2781, 2777, 2778, 2782, 2786, 2789, - 2783, 2788, 2794, 2801, 2797, 5940, 2798, 5940, 2799, 2800, - 2807, 2810, 2802, 5940, 2812, 5940, 2815, 2824, 2809, 2813, - 5940, 2827, 2817, 2819, 2831, 2821, 2826, 2833, 2834, 2835, - 2840, 2838, 2842, 2843, 2844, 2846, 2848, 2850, 2854, 2859, - 2861, 2851, 2862, 2853, 2867, 2870, 2864, 2872, 5940, 2880, - 2873, 2876, 2881, 2882, 2884, 2885, 2887, 2888, 2893, 2889, - 2894, 2895, 2902, 2905, 2903, 2906, 2917, 5940, 2907, 2919, - 2912, 2914, 5940, 2922, 2916, 2923, 2928, 2925, 2930, 2932, + 2751, 2758, 2753, 2759, 2760, 2761, 2762, 2763, 2767, 2768, + 2770, 2764, 2771, 2774, 2788, 2792, 2789, 2777, 2785, 2793, + 2795, 2797, 6029, 2796, 2800, 2804, 2805, 2807, 2809, 2817, + 2810, 2813, 2818, 2827, 2828, 2819, 2812, 2820, 2835, 2834, + 6029, 2836, 6029, 2822, 2837, 2844, 2847, 2838, 6029, 2849, + 6029, 2850, 2852, 2846, 2855, 6029, 2856, 2857, 2860, 2863, + 2861, 2865, 2866, 2867, 2868, 2873, 2870, 2875, 2878, 2879, + 2881, 2883, 2884, 2887, 2892, 2893, 2894, 2898, 2896, 2900, + 2904, 2905, 2907, 6029, 2910, 2913, 2906, 2915, 2916, 2917, + 2921, 2923, 2919, 2925, 2927, 2932, 2926, 2938, 2943, 2947, - 2933, 2934, 2937, 2938, 2950, 2951, 2941, 2952, 5940, 2954, - 2957, 2942, 2961, 2965, 2969, 2943, 2972, 2966, 2970, 2976, - 2977, 2978, 2979, 2980, 2987, 2988, 2985, 2992, 2984, 2991, - 2994, 2998, 3000, 3001, 3002, 3005, 3006, 3004, 3010, 3014, - 3009, 3011, 3012, 3013, 5940, 3025, 3015, 3027, 3036, 3028, - 3030, 3017, 3033, 3038, 3039, 3042, 3046, 3040, 5940, 3045, - 5940, 3048, 3050, 3062, 3064, 3057, 3052, 3068, 3067, 3059, - 3074, 3075, 3076, 3077, 3078, 3079, 3082, 3083, 3089, 3090, - 3086, 3087, 3091, 3097, 3099, 3100, 3102, 5940, 5940, 3103, - 3105, 3108, 3106, 3110, 3112, 3120, 3118, 3111, 3124, 3125, + 2929, 2950, 6029, 2951, 2953, 2954, 2955, 6029, 2957, 2956, + 2958, 2963, 2960, 2966, 2967, 2968, 2969, 2975, 2972, 2983, + 2985, 2976, 2988, 6029, 2990, 2993, 2977, 2994, 3006, 3003, + 2995, 3004, 3015, 3011, 3010, 3012, 3013, 3014, 3017, 3024, + 3025, 3021, 3028, 3027, 3031, 3038, 3035, 3029, 3033, 3039, + 3041, 3042, 3045, 3048, 3049, 3044, 3046, 3051, 3052, 6029, + 3063, 3054, 3067, 3068, 3060, 3070, 3058, 3071, 3076, 3077, + 3079, 3078, 3080, 6029, 3083, 6029, 3081, 3088, 3094, 3100, + 3095, 3097, 3101, 3109, 3105, 3102, 3111, 3112, 3110, 3114, + 3113, 3119, 3123, 3124, 3126, 3128, 3125, 3131, 3134, 3136, - 3132, 5940, 3133, 3134, 3136, 3137, 3144, 3139, 3141, 3152, - 3148, 3156, 3154, 5940, 3151, 3155, 3165, 3161, 3163, 3168, - 5940, 3167, 5940, 3164, 3170, 3173, 3176, 3177, 3178, 3179, - 3180, 3187, 3188, 3198, 3184, 3195, 3196, 3199, 3200, 3207, - 3202, 3203, 3204, 5940, 3206, 3209, 3212, 3220, 3221, 3223, - 3227, 3210, 5940, 3217, 3231, 3234, 3235, 3237, 3239, 3240, - 3241, 3243, 3245, 3242, 3244, 3252, 3250, 3249, 3259, 3269, - 3260, 3271, 5940, 3272, 3266, 3279, 3281, 3274, 3276, 3282, - 3283, 3284, 3287, 3289, 3288, 3290, 3292, 3294, 3291, 3301, - 3295, 3308, 3297, 3311, 3317, 3318, 3298, 3314, 3321, 3322, + 3137, 3147, 3143, 3139, 6029, 6029, 3140, 3142, 3154, 3156, + 3149, 3157, 3163, 3159, 3161, 3166, 3167, 3175, 6029, 3170, + 3173, 3176, 3177, 3186, 3181, 3190, 3197, 3195, 3202, 3201, + 6029, 3183, 3192, 3210, 3205, 3208, 3215, 6029, 3212, 6029, + 3194, 3214, 3216, 3219, 3221, 3222, 3223, 3225, 3227, 3236, + 3238, 3229, 3231, 3240, 3241, 3243, 3250, 3245, 3246, 3247, + 6029, 3253, 3249, 3255, 3261, 3263, 3270, 3264, 3254, 6029, + 3257, 3279, 3271, 3274, 3276, 3281, 3282, 3284, 3285, 3287, + 3283, 3288, 3298, 3289, 3293, 3294, 3304, 3306, 3313, 6029, + 3305, 3307, 3320, 3318, 3315, 3319, 3322, 3323, 3324, 3326, - 3325, 3324, 3328, 3331, 3335, 3332, 3344, 3345, 3336, 3339, - 3348, 3349, 3356, 3351, 5940, 3361, 3341, 3364, 3362, 3363, - 3368, 3369, 3371, 3372, 3373, 3374, 3381, 3376, 5940, 3383, - 3378, 3388, 3389, 3380, 3403, 3398, 3379, 3401, 3405, 3402, - 3408, 3406, 3410, 3411, 3414, 3415, 5940, 5940, 3417, 3418, - 3420, 5940, 3421, 3419, 3431, 3424, 3427, 3434, 3251, 3433, - 3436, 3437, 3439, 3441, 5940, 3445, 3452, 3444, 3447, 3459, - 3461, 3467, 3451, 3460, 3458, 3463, 3468, 3470, 3471, 3472, - 3474, 3483, 3476, 3479, 3481, 5940, 3484, 3486, 3487, 3491, - 3488, 3495, 5940, 3493, 3499, 3500, 3502, 3514, 3505, 3515, + 3329, 3328, 3330, 3336, 3334, 3332, 3331, 3335, 3345, 3351, + 3352, 3342, 3360, 3338, 3358, 3362, 3361, 3363, 3366, 3368, + 3371, 3373, 3364, 3375, 3385, 3376, 3379, 3388, 3389, 3396, + 3391, 6029, 3398, 3383, 3405, 3395, 3403, 3408, 3409, 3417, + 3402, 3404, 3412, 3419, 3418, 6029, 3428, 3423, 3429, 3425, + 3426, 3439, 3434, 3430, 3435, 3445, 3440, 3446, 3442, 3448, + 3451, 3454, 3449, 6029, 6029, 3458, 3455, 3459, 6029, 3463, + 3460, 3467, 3465, 3471, 3473, 3475, 3474, 3476, 3477, 3479, + 3484, 6029, 3485, 3493, 3486, 3489, 3497, 3499, 6029, 3494, + 3504, 3508, 3509, 3503, 3495, 3510, 3511, 3516, 3517, 3518, - 3517, 3497, 3519, 3520, 3522, 3521, 3523, 3530, 3525, 3529, - 3536, 3537, 3528, 5940, 3542, 3544, 3545, 3547, 3549, 3558, - 3556, 3559, 3554, 3561, 3562, 3569, 5940, 3564, 3567, 3570, - 3568, 3578, 3573, 3581, 3577, 5940, 3579, 3583, 3585, 5940, - 3584, 3596, 3599, 3601, 3586, 3594, 3603, 3605, 3607, 3608, - 5940, 3611, 5940, 3612, 3592, 3618, 5940, 3614, 3620, 3622, - 3624, 3621, 3628, 3629, 3636, 3625, 3631, 3637, 3638, 3639, - 3641, 3648, 3644, 3647, 3649, 3650, 5940, 3651, 3653, 3659, - 3660, 3665, 3654, 3658, 3670, 3669, 5940, 5940, 3673, 5940, - 3677, 3676, 3678, 5940, 3681, 3683, 3690, 3685, 3686, 3689, + 3520, 3528, 3525, 3524, 3526, 6029, 3527, 3531, 3532, 3534, + 3536, 3541, 6029, 3538, 3548, 3543, 3542, 3559, 3550, 3560, + 3562, 3563, 3564, 3566, 3565, 3567, 3568, 3575, 3574, 3572, + 3580, 3581, 3586, 6029, 3583, 3591, 3573, 3595, 3597, 3604, + 3605, 3606, 3601, 3608, 3609, 3616, 6029, 3611, 3614, 3612, + 3615, 3625, 3617, 3626, 3622, 6029, 3629, 3628, 3630, 6029, + 3633, 3631, 3638, 3643, 3644, 3651, 3646, 3648, 3649, 3650, + 6029, 3656, 6029, 3654, 3658, 3662, 6029, 3660, 3665, 3666, + 3668, 3669, 3674, 3675, 3682, 3673, 3676, 3683, 3684, 3686, + 3687, 3694, 3689, 3691, 3695, 3696, 6029, 3697, 3699, 3702, - 3699, 3693, 5940, 3688, 3700, 3703, 3705, 3706, 3707, 3709, - 3710, 3708, 3711, 3712, 5940, 3713, 3716, 3724, 3717, 3725, - 3729, 3736, 3730, 5940, 3737, 3738, 3739, 3743, 3744, 5940, - 3746, 5940, 3747, 3749, 3752, 3754, 3753, 5940, 3759, 3760, - 3763, 3766, 3768, 3767, 3770, 3771, 3777, 3778, 3785, 3781, - 3780, 3782, 5940, 3783, 3787, 3789, 3796, 3784, 3791, 3800, - 3803, 3804, 3805, 3810, 3807, 3814, 3816, 3818, 3820, 3812, - 5940, 3822, 3824, 3823, 3838, 3833, 3828, 5940, 3829, 3843, - 3845, 5940, 3836, 3835, 3847, 3852, 3839, 3846, 3853, 3854, - 3858, 5940, 3859, 3860, 3861, 3862, 3865, 3866, 5940, 5940, + 3704, 3706, 3708, 3712, 3714, 3716, 6029, 6029, 3722, 6029, + 3723, 3718, 3724, 6029, 3727, 3725, 3736, 2332, 3731, 3735, + 3744, 3738, 6029, 3741, 3745, 3749, 3747, 3751, 3752, 3754, + 3755, 3753, 3758, 3757, 6029, 3760, 3759, 3762, 3768, 3769, + 3774, 3770, 3778, 6029, 3782, 3781, 3784, 3785, 3788, 6029, + 3791, 6029, 3792, 3794, 3793, 3797, 3796, 6029, 3804, 3807, + 3809, 3801, 3811, 3812, 3813, 3817, 3819, 3820, 3829, 3825, + 3826, 3824, 3834, 3835, 6029, 3831, 3832, 3842, 3844, 3838, + 3847, 3854, 3851, 3855, 3852, 3859, 3849, 3862, 3864, 3866, + 3869, 3870, 6029, 3871, 3876, 3872, 3885, 3873, 3877, 6029, - 3874, 5940, 3876, 3863, 3877, 3878, 3879, 3885, 3884, 3888, - 3890, 3887, 3891, 3898, 3899, 3908, 3911, 3915, 3910, 3914, - 3900, 5940, 5940, 3917, 3918, 3921, 3924, 3925, 3927, 3928, - 3935, 3931, 3937, 3941, 3942, 3949, 5940, 3948, 3934, 3951, - 5940, 3932, 3945, 3953, 3956, 3958, 3959, 3962, 3960, 3961, - 3964, 3968, 3965, 3970, 3974, 3972, 3975, 3973, 3983, 3981, - 3982, 3990, 5940, 3991, 3984, 3993, 3995, 3996, 3997, 4001, - 4002, 4004, 5940, 4006, 4008, 4010, 4011, 4005, 4015, 4026, - 4030, 4032, 4023, 4033, 4034, 4036, 4040, 4037, 5940, 4044, - 4041, 4043, 4047, 4051, 4053, 4054, 4056, 4057, 4065, 4062, + 3886, 3887, 3890, 6029, 3881, 3891, 3896, 3900, 3897, 3901, + 3902, 3903, 3906, 6029, 3904, 3908, 3907, 3909, 3923, 3913, + 6029, 6029, 3924, 6029, 3925, 3910, 3926, 3929, 3912, 3935, + 3939, 3936, 3949, 3932, 3942, 3950, 3940, 3958, 3960, 3962, + 3961, 3959, 3963, 6029, 6029, 3966, 3969, 3968, 3972, 3973, + 3975, 3976, 3985, 3981, 3988, 3991, 3992, 3999, 6029, 3978, + 3980, 3998, 6029, 3996, 4001, 4003, 4004, 4005, 4007, 4008, + 4009, 4011, 4012, 4014, 4018, 4015, 4023, 4017, 4020, 4027, + 4031, 4035, 4033, 4038, 6029, 4039, 4040, 4041, 4042, 4044, + 4045, 4049, 4050, 4052, 6029, 4054, 4056, 4058, 4053, 4057, - 4066, 4068, 4070, 4058, 4074, 4076, 4060, 5940, 4080, 4082, - 4078, 4087, 4084, 4088, 4089, 4095, 4099, 4091, 4093, 4100, - 4104, 5940, 4101, 4105, 4107, 4109, 4115, 4106, 4112, 4116, - 5940, 4118, 4120, 4123, 4124, 4126, 4129, 4132, 4133, 4136, - 4135, 4139, 5940, 4141, 4143, 4146, 4149, 4150, 4152, 4155, - 4154, 5940, 4156, 4162, 4164, 4171, 4166, 4175, 4172, 4176, - 4168, 4170, 4182, 4186, 4188, 4189, 4190, 4178, 4200, 4202, - 4201, 5940, 4184, 5940, 4203, 4206, 4214, 4209, 4191, 5940, - 4215, 4216, 4220, 4221, 4217, 5940, 4222, 4223, 4225, 4229, - 5940, 4224, 4228, 4230, 4235, 4238, 4242, 5940, 4245, 4246, + 4063, 4074, 4078, 4080, 4067, 4072, 4083, 4081, 4087, 4089, + 6029, 4091, 4088, 4092, 4095, 4098, 4100, 4101, 4103, 4104, + 4106, 4109, 4110, 4114, 4117, 4111, 4118, 4119, 4121, 6029, + 4123, 4130, 4126, 4132, 4134, 4135, 4136, 4137, 4143, 4144, + 4146, 4147, 6029, 4150, 4148, 4155, 6029, 4151, 4156, 4157, + 4158, 4160, 4164, 4166, 4169, 6029, 4174, 4168, 4170, 4175, + 4176, 4178, 4180, 4185, 4182, 4190, 4195, 6029, 4187, 4197, + 4200, 4193, 4201, 4203, 4204, 4207, 6029, 4211, 4212, 4208, + 4225, 4210, 4226, 4222, 4229, 4221, 4228, 4232, 4230, 4236, + 4238, 4240, 4237, 4248, 4250, 4252, 6029, 4243, 6029, 4253, - 4248, 4257, 4258, 4255, 4256, 4259, 4261, 4262, 4263, 4264, - 4272, 4267, 4269, 5940, 4271, 4277, 4279, 4283, 4284, 4285, - 4286, 4292, 4287, 5940, 4289, 4295, 4296, 4297, 4298, 4299, - 4301, 4309, 4304, 4307, 5940, 4308, 4312, 4320, 4009, 4321, - 5940, 5940, 4313, 4328, 4330, 4318, 4331, 5940, 4322, 4340, - 4335, 4337, 4339, 5940, 5940, 4342, 5940, 4338, 5940, 4343, - 4345, 5940, 5940, 4346, 4349, 4350, 4353, 4360, 5940, 4363, - 5940, 4370, 4365, 4352, 4354, 4367, 5940, 4369, 4371, 4374, - 5940, 4377, 4384, 4379, 4380, 5940, 4382, 4385, 4387, 5940, - 4389, 4392, 4393, 4394, 4399, 4396, 4400, 4403, 4406, 4407, + 4254, 4264, 4259, 4257, 6029, 4265, 4266, 4270, 4261, 4271, + 6029, 4272, 4267, 4273, 4274, 6029, 4275, 4285, 4287, 4289, + 4292, 4293, 6029, 4296, 4297, 4298, 4305, 4308, 4310, 4304, + 4311, 4313, 4306, 4314, 4315, 4323, 4321, 4319, 6029, 4322, + 4327, 4329, 4331, 4332, 4334, 4338, 4340, 4337, 6029, 4343, + 4344, 4345, 4346, 4347, 4349, 4352, 4359, 4355, 4356, 6029, + 4362, 4358, 4372, 4367, 4368, 6029, 6029, 4371, 4376, 4379, + 4373, 4380, 6029, 4383, 4390, 4386, 4389, 4391, 6029, 6029, + 4393, 6029, 4394, 6029, 4395, 4397, 6029, 6029, 4396, 4402, + 4403, 4405, 4407, 6029, 4415, 6029, 4417, 4418, 4404, 4416, - 4409, 4410, 4411, 4422, 4424, 4426, 4428, 4429, 4413, 4432, - 4433, 4435, 4438, 4439, 4440, 4442, 4444, 4445, 4447, 4449, - 4452, 4453, 4454, 4455, 4456, 4457, 4459, 4466, 4469, 4471, - 4470, 4472, 4474, 4473, 4475, 4477, 4481, 4483, 4484, 5940, - 4482, 4485, 4488, 4415, 4491, 4501, 4503, 4494, 4510, 4512, - 5940, 4514, 5940, 4516, 4502, 4518, 4504, 5940, 4519, 4522, - 4521, 4524, 4525, 4526, 4528, 4527, 4531, 4532, 4535, 5940, - 4538, 4533, 4542, 4553, 5940, 4545, 4557, 4541, 4548, 4558, - 4560, 4561, 4562, 4567, 4563, 4569, 4571, 4578, 4573, 4574, - 4576, 4581, 4564, 4577, 4585, 4592, 4588, 4596, 4600, 5940, + 4421, 6029, 4422, 4424, 4423, 4425, 4430, 6029, 4431, 4439, + 4432, 4434, 6029, 4443, 4436, 4444, 6029, 4445, 4448, 4451, + 4452, 4454, 4453, 4457, 4460, 4461, 4464, 4466, 4465, 4467, + 4469, 4478, 4480, 4482, 4483, 4473, 4484, 4486, 4492, 4488, + 4490, 4494, 4496, 4498, 4499, 4504, 4506, 4508, 4501, 4509, + 4510, 4507, 4515, 4511, 4517, 4524, 4521, 4525, 4526, 4528, + 4529, 4533, 4534, 4536, 4539, 4540, 6029, 4532, 4538, 4542, + 4549, 4543, 4556, 4558, 4567, 4569, 4570, 6029, 4572, 6029, + 4574, 4544, 4548, 4564, 6029, 4576, 4577, 4578, 4579, 4580, + 4581, 4582, 4585, 4586, 4588, 4590, 6029, 4593, 4587, 4594, - 4593, 5940, 4601, 4602, 4603, 4604, 4606, 4605, 4607, 5940, - 5940, 4608, 4613, 4618, 4614, 4609, 4620, 4630, 5940, 4622, - 4631, 4633, 4623, 5940, 4638, 4639, 4641, 5940, 4642, 4643, - 4644, 4646, 4647, 4650, 4651, 4653, 4655, 4657, 4661, 5940, - 5940, 5940, 5940, 4663, 4665, 4668, 4670, 4672, 4673, 4675, - 4677, 4674, 5940, 4679, 5940, 5940, 4681, 4688, 4680, 4690, - 4691, 4692, 4696, 4698, 5940, 4697, 4702, 4703, 4700, 4710, - 4714, 4716, 4717, 4701, 4718, 4726, 4724, 4727, 4725, 4730, - 4732, 4734, 5940, 5940, 4737, 4739, 4741, 4748, 4746, 4749, - 4758, 4753, 4755, 4756, 4759, 4761, 4743, 4768, 4772, 4770, + 4598, 6029, 4602, 4608, 4610, 4612, 4613, 4614, 4615, 4616, + 4619, 4617, 4622, 4624, 4631, 4626, 4627, 4618, 4638, 4632, + 4639, 4640, 4646, 4650, 4651, 4655, 6029, 4641, 6029, 4647, + 4657, 4658, 4661, 4662, 4663, 4665, 6029, 6029, 4666, 4668, + 4673, 4664, 4669, 4675, 4677, 4678, 4685, 6029, 4680, 4690, + 4692, 4696, 6029, 4682, 4697, 4699, 6029, 4700, 4701, 4703, + 4705, 4706, 4714, 4711, 4715, 4718, 4708, 4722, 6029, 6029, + 6029, 6029, 4726, 4719, 4729, 4723, 4730, 4731, 4733, 4738, + 4732, 6029, 4745, 6029, 6029, 4746, 4748, 4735, 4750, 4752, + 4739, 4754, 4756, 6029, 4757, 4761, 4762, 4759, 4769, 4771, - 4767, 5940, 4771, 4777, 5940, 4773, 5940, 4778, 4781, 4745, - 4782, 4784, 4787, 4788, 4790, 5940, 5940, 4791, 4792, 4794, - 4798, 4800, 4802, 4801, 4804, 4805, 5940, 4806, 5940, 4807, - 4814, 4809, 4815, 4823, 4826, 4828, 4830, 4825, 4831, 5940, - 4832, 4834, 5940, 4835, 4837, 4838, 5940, 4842, 4845, 4849, - 5940, 4855, 4846, 4852, 5940, 4859, 5940, 4856, 4860, 4861, - 4868, 5940, 4863, 4869, 5940, 4872, 4875, 4877, 4866, 5940, - 4864, 5940, 4878, 4885, 4886, 4889, 4881, 4891, 4892, 4893, - 4894, 4901, 4900, 4902, 5940, 5940, 4910, 4897, 4903, 4907, - 4912, 4919, 4914, 4917, 4916, 5940, 5940, 4924, 5940, 4922, + 4773, 4776, 4765, 4775, 4784, 4777, 4785, 4779, 4787, 4789, + 4791, 6029, 6029, 4795, 4797, 4798, 4805, 4802, 4806, 4809, + 4810, 4812, 4813, 4800, 4816, 4818, 4825, 4826, 4823, 4821, + 6029, 4827, 4831, 6029, 4829, 6029, 4830, 4837, 4836, 4838, + 4840, 4843, 4844, 4846, 6029, 6029, 4847, 4848, 4850, 4857, + 4853, 4858, 4859, 4861, 4862, 6029, 4863, 6029, 4864, 4871, + 4877, 4865, 4879, 4886, 4888, 4892, 4885, 4889, 6029, 4887, + 4870, 6029, 4901, 4897, 4898, 4899, 4903, 6029, 4904, 4907, + 4909, 6029, 4911, 4912, 4914, 6029, 4921, 6029, 4915, 4917, + 4924, 4929, 6029, 4925, 4926, 6029, 4931, 4933, 4934, 4938, - 4925, 5940, 4926, 4931, 4932, 4933, 4935, 4936, 4940, 4942, - 4943, 4944, 4945, 4946, 4952, 4964, 4948, 4962, 4968, 4970, - 4972, 4974, 4966, 4976, 4977, 4978, 4979, 4980, 4983, 5940, - 4985, 4986, 4987, 5940, 4991, 4992, 4994, 4996, 5940, 5007, - 5002, 5008, 5009, 5940, 4995, 5015, 5012, 5010, 5020, 5027, - 5023, 5022, 5940, 5940, 5940, 5024, 5033, 5940, 5038, 5025, - 5028, 5030, 5940, 5034, 5040, 5940, 5940, 5041, 5042, 5044, - 5055, 5940, 5045, 5940, 5046, 5940, 5054, 5056, 5062, 5060, - 5940, 5065, 5071, 5940, 5074, 5077, 5079, 5080, 5068, 5081, - 5082, 5940, 5090, 5086, 5092, 5094, 5083, 5085, 5098, 5095, + 6029, 4939, 6029, 4940, 4942, 4943, 4947, 4948, 4950, 4952, + 4953, 4954, 4961, 4959, 4962, 6029, 6029, 4970, 4956, 4967, + 4972, 4974, 4981, 4973, 4978, 4977, 6029, 6029, 4983, 6029, + 4985, 4986, 6029, 4984, 4991, 4990, 4995, 4996, 4997, 4999, + 5002, 5004, 5012, 5005, 5003, 5016, 5026, 5010, 5028, 5030, + 5032, 5034, 5036, 5038, 5006, 5021, 5039, 5040, 5042, 5043, + 6029, 5045, 5047, 5046, 6029, 5052, 5048, 5057, 5053, 6029, + 5060, 5061, 5066, 5067, 6029, 5068, 5072, 5069, 5074, 5077, + 5078, 5079, 5088, 5080, 5081, 6029, 6029, 6029, 5092, 5085, + 6029, 5099, 5091, 5095, 5100, 6029, 5101, 5102, 6029, 6029, - 5102, 5099, 5105, 5940, 5107, 5109, 5110, 5116, 5108, 5118, - 5112, 5940, 5120, 5940, 5121, 5122, 5125, 5128, 5123, 5126, - 5050, 5131, 5130, 5141, 5138, 5940, 5143, 5147, 5940, 5144, - 5940, 5149, 5940, 5150, 5151, 5152, 5153, 5940, 5155, 5159, - 5160, 5161, 5940, 5162, 5164, 5170, 5940, 5940, 5171, 5181, - 5172, 5173, 5185, 5187, 5174, 5189, 5182, 5190, 5176, 5198, - 5197, 5200, 5201, 5203, 5204, 5205, 5940, 5940, 5940, 5210, - 5209, 5217, 5214, 5215, 5225, 5220, 5940, 5223, 5226, 5224, - 5233, 5230, 5235, 5940, 5232, 5236, 5237, 5239, 5241, 5242, - 5246, 5940, 5250, 5257, 5253, 5245, 5260, 5264, 5267, 5269, + 5103, 5104, 5106, 5115, 6029, 5107, 6029, 5108, 6029, 5111, + 5112, 5121, 5123, 6029, 5125, 5133, 6029, 5136, 5139, 5141, + 5142, 5124, 5127, 5143, 6029, 5153, 5145, 5149, 5156, 5152, + 5157, 5158, 5159, 5166, 5161, 5165, 6029, 5167, 5168, 5169, + 5175, 5162, 5172, 5179, 6029, 5183, 6029, 5180, 5184, 5185, + 5191, 5188, 5190, 5194, 5196, 5192, 5206, 5195, 6029, 5208, + 5211, 6029, 5198, 6029, 5213, 6029, 5215, 5216, 5217, 5220, + 6029, 5222, 5203, 5226, 5230, 5227, 5228, 6029, 5236, 5229, + 5239, 6029, 6029, 5234, 5246, 5244, 5241, 5252, 5256, 5242, + 5258, 5248, 5260, 5245, 5267, 5253, 5264, 5266, 5271, 5275, - 5270, 5940, 5272, 5940, 5940, 5273, 5940, 5274, 5276, 5277, - 5278, 5940, 5281, 5283, 5282, 5284, 5286, 5940, 5294, 5287, - 5289, 5290, 5940, 5940, 5301, 5940, 5304, 5305, 5306, 5315, - 5311, 5313, 5317, 5314, 5940, 5312, 5318, 5322, 5324, 5325, - 5940, 5326, 5328, 5329, 5330, 5333, 5337, 5339, 5340, 5341, - 5940, 5343, 5335, 5358, 5354, 5940, 5342, 5360, 5940, 5940, - 5345, 5364, 5365, 5940, 5940, 5940, 5367, 5940, 5371, 5377, - 5381, 5385, 5368, 5940, 5387, 5376, 5384, 5940, 5380, 5388, - 5390, 5392, 5940, 5940, 5389, 5396, 5393, 5401, 5402, 5940, - 5404, 5406, 5411, 5419, 5421, 5409, 5423, 5425, 5432, 5405, + 5273, 6029, 6029, 6029, 5268, 5279, 5287, 5283, 5285, 5290, + 5289, 6029, 5291, 5292, 5293, 5300, 5298, 5302, 6029, 5305, + 5295, 5303, 5306, 5309, 5304, 5311, 6029, 5322, 5325, 5326, + 5318, 5329, 5336, 5338, 5340, 5341, 6029, 5343, 6029, 6029, + 5314, 6029, 5327, 5330, 5344, 5347, 6029, 5351, 5345, 5353, + 5354, 5355, 5356, 5358, 6029, 5367, 5359, 5362, 5364, 6029, + 6029, 5374, 6029, 5377, 5378, 5370, 5386, 5382, 5385, 5388, + 5390, 6029, 5389, 5391, 5392, 5396, 5398, 6029, 5399, 5400, + 5401, 5402, 5405, 5410, 5412, 5403, 5413, 6029, 5415, 5414, + 5431, 5427, 6029, 5416, 5428, 6029, 6029, 5438, 5440, 5442, - 5413, 5427, 5429, 5430, 5436, 5433, 5440, 5449, 5445, 5447, - 5454, 5455, 5940, 5940, 5457, 5940, 5940, 5459, 5462, 5464, - 5466, 5468, 5470, 5472, 5940, 5407, 5474, 5475, 5476, 5477, - 5940, 5479, 5481, 5478, 5482, 5487, 5485, 5489, 5491, 5940, - 5940, 5483, 5500, 5492, 5505, 5494, 5940, 5507, 5502, 5508, - 5509, 5511, 5513, 5516, 5940, 5515, 5517, 5940, 5940, 5519, - 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5940, 5520, 5940, - 5524, 5528, 5536, 5539, 5940, 5525, 5533, 5444, 5529, 5540, - 5940, 5541, 5544, 5545, 5551, 5543, 5546, 5552, 5556, 5559, - 5557, 5560, 5561, 5562, 5566, 5563, 5567, 5569, 5940, 5940, + 6029, 6029, 6029, 5444, 6029, 5448, 5452, 5456, 5460, 5451, + 6029, 5459, 5461, 5463, 5417, 5465, 6029, 5466, 5467, 5468, + 5472, 6029, 6029, 5469, 5474, 5476, 5475, 5477, 6029, 5478, + 5482, 5488, 5498, 5500, 5490, 5501, 5495, 5509, 5516, 5493, + 5502, 5511, 5514, 5515, 5512, 5522, 5529, 5524, 5526, 5528, + 5533, 6029, 6029, 5535, 6029, 6029, 5537, 5540, 5542, 5544, + 5546, 5548, 5550, 5552, 5553, 6029, 5554, 5556, 5557, 5433, + 5558, 6029, 5561, 5560, 5562, 5568, 5564, 5569, 5567, 5572, + 6029, 6029, 5565, 5360, 5573, 5574, 5584, 6029, 5585, 5592, + 5587, 5589, 5590, 5593, 5591, 6029, 5597, 5595, 6029, 6029, - 5940, 5568, 5570, 5580, 5572, 5589, 5591, 5594, 5596, 5583, - 5586, 5597, 5598, 5599, 5601, 5605, 5613, 5608, 5609, 5610, - 5611, 5617, 5612, 5614, 5619, 5940, 5623, 5940, 5624, 5940, - 5940, 5629, 5634, 5632, 5625, 5636, 5643, 5639, 5641, 5645, - 5646, 5648, 5650, 5940, 5652, 5655, 5940, 5656, 5657, 5940, - 5658, 5660, 5662, 5659, 5663, 5666, 5669, 5677, 5668, 5940, - 5940, 5671, 5679, 5680, 5684, 5687, 5694, 5689, 5693, 5695, - 5696, 5686, 5708, 5940, 5704, 5706, 5710, 5940, 5712, 5707, - 5713, 5714, 5715, 5723, 5718, 5719, 5940, 5721, 5940, 5725, - 5727, 5730, 5728, 5729, 5731, 5740, 5738, 5742, 5940, 5745, + 5598, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, 6029, + 5600, 5612, 6029, 5606, 5617, 5621, 5623, 6029, 5608, 5618, + 5610, 5624, 5625, 6029, 5626, 5629, 5628, 5483, 5630, 5634, + 5637, 5632, 5636, 5641, 5638, 5643, 5646, 5647, 5648, 5653, + 5642, 5656, 6029, 6029, 6029, 5660, 5664, 5666, 5667, 5671, + 5672, 5678, 5680, 5668, 5675, 5682, 5681, 5683, 5689, 5690, + 5697, 5692, 5696, 5693, 5699, 6029, 5701, 5694, 5702, 5704, + 6029, 5707, 6029, 5710, 6029, 6029, 5712, 5715, 5717, 5713, + 5724, 5726, 5723, 5727, 5729, 5730, 5734, 5739, 6029, 5731, + 5736, 6029, 5741, 5742, 6029, 5743, 5744, 5745, 5747, 5753, - 5749, 5746, 5751, 5753, 5756, 5757, 5758, 5760, 5762, 5766, - 5770, 5772, 5773, 5763, 5776, 5774, 5940, 5784, 5775, 5940, - 5785, 5786, 5778, 5787, 5788, 5940, 5796, 5792, 5798, 5799, - 5802, 5803, 5940, 5805, 5808, 5809, 5940, 5813, 5940, 5940, - 5814, 5812, 5815, 5821, 5823, 5940, 5940, 5940, 5848, 5855, - 5862, 5869, 5876, 88, 5883, 5890, 5897, 5904, 5911, 5918, - 5925, 5932 + 5750, 5754, 5757, 5768, 6029, 6029, 5751, 5758, 5761, 5773, + 5765, 5781, 5777, 5774, 5782, 5783, 5784, 5791, 6029, 5790, + 5792, 5794, 6029, 5795, 5786, 5800, 5796, 5798, 5808, 5801, + 5806, 6029, 5809, 6029, 5812, 5804, 5818, 5814, 5821, 5822, + 5824, 5826, 5828, 6029, 5827, 5829, 5832, 5836, 5838, 5842, + 5843, 5844, 5846, 5849, 5855, 5859, 5860, 5861, 5852, 5864, + 5856, 6029, 5866, 5862, 6029, 5872, 5873, 5870, 5874, 5879, + 6029, 5883, 5876, 5884, 5885, 5888, 5890, 6029, 5892, 5899, + 5894, 6029, 5900, 6029, 6029, 5902, 5896, 5904, 5909, 5911, + 6029, 6029, 6029, 5937, 5944, 5951, 5958, 5965, 88, 5972, + + 5979, 5986, 5993, 6000, 6007, 6014, 6021 } ; -static const flex_int16_t yy_def[3063] = +static const flex_int16_t yy_def[3108] = { 0, - 3048, 1, 3049, 3049, 3050, 3050, 3051, 3051, 3052, 3052, - 3053, 3053, 3048, 3054, 3048, 3048, 3048, 3048, 3055, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3056, 3048, 3048, 3048, 3056, 3057, 3048, 3048, - 3048, 3057, 3058, 3048, 3048, 3048, 3048, 3058, 3059, 3048, - 3048, 3048, 3059, 3060, 3048, 3061, 3048, 3060, 3060, 3054, - 3054, 3048, 3062, 3055, 3062, 3055, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3093, 1, 3094, 3094, 3095, 3095, 3096, 3096, 3097, 3097, + 3098, 3098, 3093, 3099, 3093, 3093, 3093, 3093, 3100, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3101, 3093, 3093, 3093, 3101, 3102, 3093, 3093, + 3093, 3102, 3103, 3093, 3093, 3093, 3093, 3103, 3104, 3093, + 3093, 3093, 3104, 3105, 3093, 3106, 3093, 3105, 3105, 3099, + 3099, 3093, 3107, 3100, 3107, 3100, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3056, 3056, 3057, 3057, 3058, 3058, 3048, 3059, 3059, 3060, - 3060, 3061, 3061, 3060, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3101, 3101, 3102, 3102, 3103, 3103, 3093, 3104, 3104, + 3105, 3105, 3106, 3106, 3105, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3060, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3105, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3048, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3060, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3105, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3060, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3105, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054, 3048, 3054, - 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3093, + 3099, 3093, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3048, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, + 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3054, 3048, 3054, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3048, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3093, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3093, 3093, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, - 3048, 3054, 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3093, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, - 3054, 3048, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054, - 3054, 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048, - 3054, 3054, 3054, 3048, 3048, 3048, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3054, 3054, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, + 3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3093, 3093, + 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, + 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3093, 3099, 3099, 3093, 3093, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3048, 3054, 3048, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3048, 3054, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3054, 3048, - 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, 3054, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3048, + 3093, 3093, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3093, 3093, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3048, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, - 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3048, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, + 3099, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3093, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, + 3093, 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, - 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3054, - 3054, 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3054, 3054, 3054, 3054, - 3054, 3054, 3048, 3054, 3054, 3054, 3048, 3054, 3048, 3048, - 3054, 3054, 3054, 3054, 3054, 3048, 3048, 0, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048 + 3099, 3099, 3099, 3099, 3093, 3093, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, + 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3099, + 3099, 3093, 3099, 3099, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3099, 3099, 3099, 3099, 3099, 3099, 3093, 3099, 3099, + 3099, 3093, 3099, 3093, 3093, 3099, 3099, 3099, 3099, 3099, + 3093, 3093, 0, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + + 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; -static const flex_int16_t yy_nxt[5981] = +static const flex_int16_t yy_nxt[6070] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1437,655 +1453,665 @@ static const flex_int16_t yy_nxt[5981] = 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, + 75, 71, 75, 68, 104, 158, 103, 93, 75, 76, + 142, 142, 69, 15, 16, 17, 65, 66, 67, 71, 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, + 71, 80, 85, 88, 69, 86, 89, 152, 90, 91, + 81, 71, 94, 71, 96, 164, 71, 71, 71, 105, 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 100, 119, 101, 107, 71, 120, 226, 108, 144, 121, + 152, 144, 71, 141, 71, 111, 71, 113, 71, 122, + 123, 114, 124, 125, 155, 115, 126, 71, 130, 71, + 131, 116, 71, 127, 117, 71, 134, 128, 129, 132, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 220, 118, 152, 71, 138, 133, 135, 159, 139, 160, + 136, 137, 140, 146, 71, 146, 146, 156, 146, 149, + 149, 75, 71, 75, 75, 151, 75, 151, 151, 70, + 151, 70, 70, 154, 70, 72, 166, 71, 71, 73, + 70, 75, 157, 75, 75, 71, 75, 71, 161, 71, + 162, 71, 75, 76, 71, 170, 171, 71, 165, 174, + 167, 71, 71, 163, 71, 71, 168, 71, 169, 71, + 71, 71, 71, 172, 183, 176, 173, 184, 175, 71, + 178, 179, 177, 192, 71, 181, 190, 186, 180, 182, + 187, 71, 71, 185, 71, 71, 193, 195, 71, 150, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 71, 196, 71, 188, 189, 71, 201, 202, 71, 71, + 71, 191, 200, 71, 198, 204, 194, 197, 203, 199, + 71, 71, 205, 71, 207, 209, 71, 71, 71, 214, + 206, 208, 211, 71, 71, 71, 212, 71, 71, 216, + 71, 210, 71, 228, 71, 71, 213, 222, 217, 219, + 71, 225, 227, 215, 218, 71, 221, 231, 223, 71, + 229, 233, 224, 230, 71, 71, 237, 71, 232, 71, + 71, 71, 71, 71, 234, 238, 241, 71, 244, 240, + 235, 236, 242, 245, 142, 142, 144, 239, 254, 144, + 243, 146, 152, 146, 146, 246, 146, 149, 149, 151, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 71, 71, 288, - 289, 285, 295, 284, 286, 71, 299, 280, 71, 287, - 71, 290, 297, 298, 291, 300, 292, 302, 296, 71, + 71, 151, 151, 75, 151, 75, 75, 71, 75, 71, + 248, 71, 247, 71, 71, 154, 71, 71, 250, 252, + 71, 255, 71, 261, 251, 249, 253, 258, 71, 71, + 262, 71, 257, 256, 71, 71, 265, 260, 266, 264, + 259, 267, 71, 71, 71, 71, 268, 71, 275, 270, + 71, 71, 71, 148, 271, 277, 263, 278, 71, 272, + 71, 276, 281, 269, 283, 273, 274, 71, 71, 71, + 279, 280, 284, 71, 71, 71, 71, 71, 71, 71, + 71, 290, 291, 285, 297, 71, 287, 71, 286, 288, + 71, 282, 348, 289, 71, 292, 299, 300, 293, 71, - 71, 71, 71, 71, 71, 304, 305, 301, 293, 307, - 294, 71, 71, 308, 71, 313, 146, 71, 310, 71, - 303, 306, 309, 311, 71, 71, 317, 71, 71, 71, - 71, 71, 312, 314, 315, 71, 316, 71, 71, 318, - 320, 319, 71, 71, 325, 71, 321, 71, 71, 326, - 71, 71, 327, 322, 331, 329, 71, 71, 323, 334, - 71, 71, 71, 324, 71, 71, 328, 330, 71, 336, - 337, 71, 71, 340, 332, 333, 341, 335, 339, 71, - 338, 342, 71, 343, 344, 71, 71, 346, 348, 71, - 347, 71, 350, 71, 71, 71, 71, 351, 71, 345, + 294, 71, 301, 71, 302, 298, 326, 304, 309, 306, + 71, 307, 295, 71, 296, 71, 303, 71, 310, 305, + 71, 312, 313, 71, 71, 311, 308, 71, 71, 315, + 314, 71, 71, 71, 71, 71, 71, 71, 317, 71, + 319, 71, 71, 71, 316, 321, 323, 71, 71, 328, + 71, 324, 322, 318, 329, 71, 71, 71, 320, 334, + 71, 330, 325, 327, 332, 71, 331, 337, 71, 71, + 71, 71, 333, 71, 339, 335, 336, 71, 342, 340, + 343, 344, 71, 71, 346, 71, 71, 71, 338, 341, + 71, 71, 349, 350, 71, 347, 351, 353, 71, 71, - 71, 354, 71, 151, 71, 71, 71, 361, 144, 71, - 357, 359, 349, 71, 352, 355, 353, 362, 71, 356, - 71, 71, 71, 71, 358, 363, 364, 365, 360, 71, - 71, 71, 367, 71, 371, 372, 71, 366, 374, 370, - 71, 71, 71, 373, 369, 71, 375, 368, 376, 71, - 378, 71, 71, 379, 71, 71, 71, 71, 382, 71, - 377, 383, 71, 385, 71, 71, 387, 388, 384, 71, - 380, 381, 71, 389, 71, 71, 386, 71, 390, 71, - 71, 392, 393, 394, 395, 71, 71, 71, 399, 71, - 71, 71, 71, 396, 400, 391, 402, 71, 71, 398, + 354, 345, 71, 71, 357, 71, 152, 71, 356, 71, + 71, 71, 147, 364, 71, 360, 362, 355, 358, 71, + 352, 365, 71, 71, 359, 71, 368, 71, 366, 361, + 367, 71, 71, 363, 71, 71, 71, 369, 71, 374, + 375, 376, 71, 378, 373, 370, 71, 71, 71, 372, + 377, 379, 371, 71, 71, 71, 381, 71, 382, 71, + 71, 71, 71, 385, 71, 380, 386, 388, 71, 383, + 387, 390, 393, 71, 384, 71, 392, 71, 389, 71, + 396, 391, 71, 71, 395, 397, 71, 71, 71, 394, + 71, 71, 71, 402, 71, 71, 71, 403, 71, 145, - 71, 71, 405, 71, 71, 410, 397, 407, 401, 71, - 409, 71, 411, 71, 71, 71, 403, 71, 404, 438, - 71, 406, 421, 419, 408, 412, 71, 71, 71, 71, - 422, 425, 423, 420, 430, 413, 142, 71, 414, 431, - 71, 71, 426, 415, 416, 417, 418, 71, 424, 427, - 71, 71, 428, 429, 432, 71, 71, 71, 433, 71, - 440, 434, 435, 71, 436, 437, 71, 71, 439, 71, - 71, 442, 441, 71, 71, 447, 71, 465, 453, 443, - 71, 71, 71, 448, 71, 449, 71, 71, 444, 446, - 445, 452, 454, 451, 450, 71, 71, 71, 71, 457, + 405, 71, 71, 401, 71, 399, 398, 71, 408, 400, + 71, 71, 413, 404, 410, 71, 412, 406, 71, 407, + 409, 71, 415, 71, 414, 71, 71, 71, 424, 428, + 71, 411, 71, 423, 422, 71, 443, 71, 425, 430, + 426, 416, 143, 429, 417, 71, 71, 431, 432, 418, + 419, 420, 421, 433, 71, 71, 427, 435, 434, 71, + 71, 71, 71, 436, 71, 71, 437, 71, 71, 445, + 438, 441, 444, 442, 71, 71, 446, 439, 440, 447, + 71, 71, 452, 71, 449, 71, 71, 448, 71, 71, + 453, 457, 454, 458, 469, 71, 451, 71, 71, 71, - 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, - 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, - 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 732, 486, 480, 71, 472, 71, 473, - 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, - 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, - 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, - 71, 71, 502, 71, 489, 503, 490, 491, 492, 505, - 508, 493, 507, 71, 71, 71, 71, 506, 513, 514, - 509, 511, 516, 510, 71, 517, 71, 71, 71, 71, + 450, 455, 459, 456, 71, 71, 71, 470, 462, 460, + 463, 71, 464, 471, 465, 461, 472, 71, 71, 71, + 71, 71, 71, 473, 71, 474, 71, 466, 152, 152, + 467, 475, 468, 71, 71, 476, 489, 71, 71, 486, + 484, 487, 485, 477, 71, 478, 71, 479, 488, 504, + 71, 491, 490, 499, 71, 500, 501, 71, 71, 71, + 480, 502, 71, 481, 503, 482, 71, 483, 71, 505, + 492, 493, 506, 508, 71, 507, 71, 71, 71, 509, + 494, 586, 495, 496, 497, 71, 71, 498, 513, 71, + 71, 512, 71, 71, 71, 71, 511, 519, 514, 71, - 515, 521, 71, 512, 71, 71, 71, 71, 71, 519, - 524, 525, 526, 520, 71, 71, 518, 71, 71, 531, - 523, 71, 71, 536, 528, 533, 527, 522, 71, 71, - 71, 529, 530, 534, 71, 71, 71, 532, 71, 71, - 71, 546, 71, 547, 71, 538, 71, 537, 535, 542, - 539, 545, 541, 540, 71, 548, 71, 549, 71, 553, - 543, 151, 544, 71, 551, 550, 71, 71, 71, 556, - 552, 71, 554, 71, 555, 558, 71, 71, 559, 71, - 561, 562, 71, 71, 557, 71, 563, 71, 71, 71, - 560, 71, 568, 566, 567, 71, 71, 71, 564, 71, + 510, 515, 71, 522, 521, 518, 516, 71, 520, 517, + 71, 524, 526, 71, 71, 523, 71, 71, 71, 71, + 71, 525, 529, 530, 531, 71, 71, 71, 71, 536, + 528, 71, 538, 71, 535, 533, 532, 539, 527, 71, + 541, 534, 71, 71, 71, 71, 71, 537, 71, 71, + 542, 71, 540, 551, 547, 552, 71, 543, 550, 544, + 546, 71, 545, 554, 71, 548, 71, 549, 557, 71, + 553, 71, 556, 71, 558, 71, 71, 555, 559, 71, + 561, 563, 71, 71, 71, 71, 566, 567, 564, 562, + 71, 71, 71, 71, 568, 560, 71, 565, 71, 71, - 569, 71, 71, 71, 574, 71, 565, 570, 578, 575, - 71, 573, 71, 577, 576, 572, 571, 71, 580, 71, - 71, 582, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 579, 584, 592, 585, 587, 594, 71, 593, 71, - 71, 581, 71, 583, 591, 588, 586, 589, 590, 71, - 71, 596, 71, 71, 595, 599, 71, 602, 597, 71, - 603, 598, 604, 71, 605, 71, 71, 600, 71, 71, - 71, 601, 71, 608, 71, 71, 611, 71, 71, 607, - 612, 71, 614, 71, 71, 71, 644, 610, 606, 613, - 71, 609, 71, 71, 615, 71, 617, 628, 71, 631, + 573, 571, 71, 572, 71, 71, 569, 71, 574, 71, + 71, 71, 579, 570, 575, 580, 71, 582, 71, 578, + 71, 71, 581, 577, 576, 583, 71, 585, 71, 587, + 71, 71, 71, 71, 71, 71, 71, 71, 589, 584, + 590, 592, 588, 71, 599, 594, 601, 71, 71, 598, + 71, 71, 71, 591, 593, 595, 600, 596, 71, 71, + 71, 71, 603, 597, 602, 71, 604, 609, 606, 605, + 71, 610, 71, 71, 607, 611, 608, 612, 71, 71, + 71, 71, 71, 71, 614, 615, 618, 71, 71, 71, + 71, 71, 619, 621, 620, 71, 71, 71, 71, 71, - 616, 71, 618, 71, 626, 627, 71, 619, 632, 620, - 71, 629, 633, 71, 630, 621, 71, 622, 635, 71, - 623, 624, 636, 638, 71, 634, 71, 625, 637, 71, - 71, 71, 640, 641, 639, 71, 646, 71, 71, 71, - 71, 71, 71, 71, 149, 71, 643, 642, 652, 71, - 648, 653, 647, 71, 649, 656, 645, 71, 151, 650, - 71, 659, 658, 651, 654, 71, 657, 71, 655, 71, - 71, 71, 660, 71, 71, 71, 71, 668, 666, 71, - 661, 670, 71, 71, 663, 71, 664, 669, 662, 667, - 671, 665, 673, 71, 71, 672, 71, 674, 71, 71, + 616, 613, 617, 635, 624, 622, 71, 150, 71, 623, + 71, 625, 634, 642, 672, 633, 626, 636, 627, 71, + 71, 645, 637, 638, 628, 71, 629, 71, 71, 630, + 631, 71, 646, 639, 71, 641, 632, 640, 71, 71, + 644, 643, 648, 71, 71, 651, 71, 71, 653, 71, + 647, 71, 71, 71, 71, 71, 71, 71, 71, 148, + 659, 649, 71, 650, 654, 655, 656, 660, 663, 71, + 71, 652, 662, 657, 658, 661, 152, 666, 664, 71, + 665, 71, 667, 71, 71, 71, 71, 71, 147, 673, + 71, 71, 71, 675, 668, 676, 677, 71, 670, 678, - 71, 71, 675, 71, 679, 678, 71, 676, 71, 677, - 684, 695, 680, 71, 71, 685, 71, 687, 71, 681, - 688, 71, 682, 689, 683, 71, 686, 690, 71, 71, - 691, 71, 692, 71, 71, 693, 694, 71, 71, 71, - 698, 71, 697, 71, 696, 71, 699, 702, 703, 71, - 71, 71, 71, 704, 71, 708, 706, 71, 71, 71, - 147, 71, 700, 709, 701, 71, 71, 71, 705, 711, - 71, 710, 707, 71, 712, 71, 715, 714, 713, 71, - 71, 720, 71, 716, 718, 719, 717, 722, 721, 71, - 71, 723, 724, 71, 725, 71, 71, 71, 71, 728, + 669, 671, 680, 674, 679, 71, 71, 71, 71, 71, + 682, 71, 71, 71, 71, 71, 686, 685, 681, 71, + 694, 71, 691, 683, 687, 71, 684, 692, 71, 71, + 690, 688, 693, 696, 689, 695, 71, 697, 71, 71, + 698, 71, 699, 71, 71, 71, 700, 701, 71, 71, + 702, 71, 707, 71, 705, 71, 71, 704, 706, 710, + 709, 71, 703, 71, 71, 71, 71, 711, 71, 713, + 715, 71, 71, 716, 708, 718, 71, 71, 71, 712, + 719, 71, 722, 71, 720, 717, 714, 71, 71, 71, + 71, 729, 725, 726, 145, 721, 723, 71, 71, 724, - 727, 71, 729, 71, 71, 71, 736, 71, 734, 71, - 71, 71, 71, 71, 730, 146, 726, 733, 737, 731, - 71, 740, 742, 71, 71, 735, 744, 739, 71, 738, - 743, 749, 741, 745, 746, 71, 71, 71, 747, 71, - 751, 753, 748, 71, 71, 71, 71, 71, 752, 71, - 755, 756, 754, 750, 71, 71, 757, 71, 71, 762, - 71, 71, 71, 760, 761, 71, 765, 758, 759, 764, - 71, 767, 71, 71, 771, 71, 769, 763, 71, 768, - 71, 71, 766, 773, 774, 71, 776, 772, 71, 775, - 71, 770, 71, 71, 778, 780, 71, 71, 71, 71, + 71, 71, 71, 727, 731, 728, 732, 730, 71, 71, + 71, 71, 735, 734, 71, 736, 737, 71, 71, 71, + 71, 739, 71, 741, 743, 71, 71, 749, 733, 738, + 740, 744, 71, 71, 71, 71, 746, 71, 751, 742, + 71, 747, 71, 750, 143, 745, 748, 752, 753, 71, + 71, 71, 754, 71, 71, 71, 755, 760, 756, 758, + 761, 759, 762, 71, 71, 71, 71, 757, 71, 763, + 764, 765, 71, 71, 771, 71, 766, 71, 71, 71, + 71, 71, 776, 769, 770, 767, 768, 773, 71, 71, + 71, 780, 71, 774, 772, 778, 777, 71, 71, 775, - 71, 71, 786, 71, 71, 787, 777, 779, 71, 71, - 71, 71, 788, 71, 781, 782, 783, 71, 784, 789, - 785, 795, 71, 71, 790, 793, 71, 71, 791, 71, - 792, 71, 794, 71, 71, 797, 796, 800, 71, 71, - 71, 71, 71, 808, 71, 798, 71, 71, 799, 801, - 802, 809, 71, 71, 71, 807, 803, 804, 805, 806, - 812, 71, 71, 810, 811, 71, 813, 71, 814, 71, - 71, 71, 817, 815, 818, 816, 820, 819, 71, 71, - 71, 71, 71, 821, 71, 822, 823, 151, 71, 824, - 71, 826, 828, 829, 71, 825, 827, 71, 830, 71, + 783, 71, 781, 782, 71, 784, 71, 71, 785, 71, + 779, 787, 71, 71, 789, 71, 71, 71, 71, 795, + 71, 71, 71, 788, 796, 71, 786, 71, 71, 71, + 797, 790, 71, 791, 792, 71, 793, 798, 794, 804, + 71, 71, 799, 71, 802, 71, 800, 71, 801, 71, + 803, 71, 71, 806, 805, 809, 71, 71, 71, 71, + 71, 817, 807, 71, 71, 71, 808, 810, 811, 818, + 71, 71, 71, 816, 812, 813, 814, 815, 821, 71, + 71, 820, 819, 71, 822, 71, 71, 823, 71, 71, + 826, 824, 828, 825, 827, 71, 71, 833, 71, 71, - 71, 71, 831, 836, 71, 71, 832, 71, 837, 839, - 71, 71, 842, 71, 833, 834, 838, 71, 71, 71, - 840, 835, 71, 844, 841, 71, 848, 71, 71, 845, - 71, 71, 71, 843, 71, 849, 71, 850, 71, 71, - 144, 71, 71, 847, 71, 865, 851, 846, 862, 71, - 863, 860, 71, 866, 853, 861, 852, 71, 864, 71, - 867, 71, 854, 71, 71, 872, 855, 869, 71, 856, - 71, 71, 868, 880, 71, 71, 857, 858, 870, 859, - 71, 885, 71, 871, 71, 873, 874, 71, 875, 71, - 884, 876, 71, 882, 949, 881, 877, 71, 887, 886, + 829, 830, 71, 71, 831, 832, 71, 152, 71, 838, + 71, 835, 837, 834, 839, 836, 71, 71, 71, 71, + 845, 71, 840, 848, 71, 841, 71, 846, 71, 71, + 851, 71, 842, 843, 71, 847, 71, 849, 853, 844, + 71, 71, 71, 857, 71, 71, 71, 71, 850, 71, + 71, 852, 854, 858, 859, 71, 71, 71, 71, 71, + 856, 889, 860, 71, 871, 872, 855, 71, 875, 71, + 862, 861, 71, 869, 870, 71, 71, 863, 71, 873, + 874, 864, 71, 876, 865, 71, 877, 878, 71, 881, + 71, 866, 867, 71, 868, 71, 71, 71, 880, 879, - 71, 889, 878, 879, 888, 883, 71, 71, 71, 71, - 891, 890, 71, 892, 893, 71, 71, 71, 894, 71, - 71, 895, 71, 897, 71, 901, 71, 71, 71, 71, - 900, 896, 71, 904, 71, 71, 71, 898, 908, 899, - 909, 902, 903, 926, 71, 905, 906, 910, 71, 911, - 914, 907, 71, 915, 912, 71, 71, 913, 71, 71, - 917, 71, 71, 916, 918, 71, 71, 71, 919, 921, - 71, 922, 71, 920, 71, 923, 71, 71, 928, 71, - 71, 925, 71, 71, 71, 931, 71, 71, 71, 929, - 930, 71, 924, 933, 71, 934, 927, 936, 71, 935, + 71, 882, 883, 71, 884, 904, 893, 885, 891, 890, + 894, 71, 886, 71, 71, 896, 71, 71, 887, 888, + 895, 892, 71, 898, 71, 71, 71, 71, 900, 899, + 906, 897, 901, 902, 71, 71, 905, 903, 71, 71, + 71, 71, 910, 71, 71, 71, 71, 909, 71, 913, + 917, 71, 919, 71, 930, 71, 71, 912, 907, 908, + 911, 71, 914, 915, 920, 923, 918, 71, 916, 921, + 71, 71, 922, 924, 71, 71, 926, 927, 71, 71, + 925, 71, 71, 71, 928, 931, 71, 71, 71, 929, + 71, 932, 71, 934, 71, 71, 71, 935, 939, 71, - 71, 937, 932, 71, 71, 938, 71, 71, 945, 943, - 71, 71, 940, 941, 944, 71, 71, 939, 71, 942, - 71, 71, 71, 950, 952, 946, 955, 948, 953, 71, - 947, 951, 71, 71, 71, 71, 71, 954, 71, 71, - 71, 71, 961, 966, 963, 71, 71, 71, 142, 71, - 71, 71, 71, 956, 957, 958, 967, 971, 959, 960, - 965, 962, 968, 964, 71, 969, 970, 71, 974, 71, - 71, 71, 973, 71, 71, 71, 71, 71, 972, 71, - 976, 983, 978, 71, 71, 985, 987, 71, 988, 71, - 975, 71, 71, 977, 71, 979, 981, 984, 980, 982, + 71, 942, 71, 71, 941, 933, 71, 71, 71, 940, + 936, 937, 944, 938, 71, 945, 71, 947, 71, 946, + 71, 943, 71, 948, 71, 71, 954, 949, 71, 956, + 950, 955, 71, 952, 71, 71, 71, 71, 953, 71, + 964, 71, 961, 951, 71, 959, 963, 71, 71, 957, + 962, 71, 71, 966, 958, 71, 71, 71, 71, 71, + 71, 960, 71, 977, 974, 71, 71, 972, 965, 71, + 71, 71, 967, 71, 970, 968, 969, 971, 979, 978, + 975, 71, 973, 71, 976, 71, 71, 981, 71, 982, + 980, 984, 985, 71, 71, 983, 71, 987, 71, 71, - 71, 71, 71, 71, 986, 989, 71, 993, 990, 71, - 995, 996, 991, 71, 71, 1000, 997, 71, 71, 999, - 992, 71, 1002, 71, 994, 71, 71, 1005, 151, 71, - 71, 1004, 998, 71, 1007, 71, 1008, 71, 1001, 71, - 71, 71, 71, 1003, 1006, 1011, 71, 71, 71, 1023, - 71, 71, 71, 71, 1024, 1009, 1014, 1010, 1012, 1026, - 71, 1068, 71, 1049, 71, 1013, 1015, 1025, 1016, 71, - 71, 71, 1017, 71, 1018, 1028, 1027, 1029, 1019, 71, - 1020, 71, 71, 1033, 1030, 1021, 1031, 1032, 1034, 71, - 1022, 71, 71, 1035, 71, 1036, 71, 1038, 71, 1039, + 71, 994, 71, 71, 989, 986, 996, 71, 71, 998, + 999, 71, 71, 71, 988, 71, 71, 995, 990, 992, + 71, 991, 993, 71, 1000, 1002, 71, 71, 997, 71, + 1001, 1004, 1007, 1003, 71, 1006, 71, 1011, 71, 1008, + 71, 71, 1010, 71, 1005, 1009, 1013, 71, 71, 1016, + 152, 71, 71, 1015, 71, 1019, 1018, 71, 71, 1014, + 1012, 71, 71, 71, 71, 71, 1017, 1022, 71, 71, + 1034, 71, 1037, 71, 71, 1035, 71, 71, 1021, 1020, + 1023, 1039, 1025, 71, 1026, 71, 1027, 1024, 71, 1036, + 1042, 1028, 71, 1029, 71, 1060, 71, 1030, 1040, 1031, - 71, 1042, 71, 71, 1041, 71, 71, 1037, 1047, 1040, - 1050, 1046, 1043, 1048, 71, 71, 1045, 1051, 71, 71, - 71, 1044, 71, 71, 1054, 1052, 71, 1063, 71, 71, - 71, 1066, 1062, 1067, 71, 71, 71, 1053, 71, 1055, - 1064, 1065, 1072, 71, 1056, 71, 1057, 1074, 1069, 1073, - 71, 71, 1058, 71, 1070, 1071, 71, 1059, 1060, 1075, - 71, 1078, 71, 71, 1061, 71, 71, 71, 1079, 1076, - 1080, 1081, 1084, 1077, 1082, 71, 71, 71, 71, 71, - 71, 71, 1083, 71, 1085, 1087, 71, 71, 71, 71, - 71, 71, 1092, 1089, 1094, 1086, 1093, 1088, 1091, 1096, + 71, 1038, 71, 71, 1032, 1044, 1041, 1047, 1043, 1033, + 1045, 71, 71, 71, 1046, 71, 71, 1049, 1050, 1048, + 1053, 71, 71, 71, 1052, 1058, 1059, 71, 1051, 1057, + 1054, 71, 71, 1061, 1062, 71, 1056, 71, 71, 71, + 71, 71, 1055, 71, 71, 3093, 1074, 71, 1078, 1063, + 71, 1073, 71, 1077, 1064, 1065, 71, 1066, 1075, 1076, + 71, 71, 1067, 71, 1068, 1083, 71, 71, 1079, 1081, + 1069, 1084, 1085, 71, 71, 1070, 1071, 1080, 71, 1089, + 1082, 71, 1072, 71, 1086, 71, 71, 1088, 1090, 71, + 71, 71, 1087, 71, 1095, 71, 71, 71, 1092, 1093, - 71, 1090, 71, 71, 1098, 71, 1095, 1097, 71, 71, - 71, 71, 71, 71, 71, 1104, 1105, 1101, 1106, 1109, - 1099, 1100, 71, 1107, 1103, 71, 1102, 71, 1108, 71, - 71, 1112, 71, 1116, 71, 1110, 1113, 71, 71, 1114, - 71, 1122, 1115, 71, 71, 1111, 1117, 71, 71, 1124, - 71, 71, 71, 71, 1118, 71, 1120, 1126, 1119, 1121, - 71, 71, 71, 1128, 71, 1125, 1130, 1127, 1123, 1131, - 71, 71, 1129, 71, 71, 1133, 1134, 71, 1132, 71, - 1136, 71, 1139, 1140, 71, 1135, 71, 1138, 71, 71, - 71, 1144, 1143, 1137, 71, 1141, 71, 1142, 71, 71, + 71, 1098, 1096, 71, 71, 1091, 71, 1094, 71, 71, + 71, 71, 71, 71, 1097, 1103, 71, 1099, 1100, 1104, + 1102, 1107, 1105, 1101, 71, 1109, 1106, 71, 1108, 71, + 71, 71, 71, 1110, 71, 71, 71, 1115, 71, 1116, + 1117, 71, 1119, 1111, 1112, 1118, 1114, 1113, 1120, 71, + 71, 71, 71, 1122, 71, 1125, 71, 71, 1121, 1129, + 1126, 71, 71, 1123, 71, 1127, 1130, 1124, 1128, 71, + 71, 71, 1135, 1137, 71, 71, 71, 1131, 71, 71, + 1132, 1139, 1133, 71, 71, 1134, 71, 1141, 71, 1138, + 71, 1136, 71, 1143, 71, 1144, 1142, 1140, 71, 1146, - 71, 1150, 1148, 1151, 71, 71, 71, 71, 71, 71, - 1152, 1153, 1145, 1149, 71, 1146, 1155, 1158, 1147, 1154, - 71, 71, 71, 71, 1157, 1159, 1156, 1160, 71, 71, - 1161, 71, 71, 71, 71, 1164, 1165, 71, 1162, 71, - 71, 1170, 1171, 71, 71, 1166, 71, 71, 71, 1163, - 71, 1168, 71, 1174, 71, 1167, 71, 1173, 1172, 1169, - 1176, 1178, 1177, 1175, 71, 71, 71, 71, 71, 1184, - 71, 71, 71, 1180, 1179, 71, 71, 1190, 71, 71, - 71, 1188, 71, 1187, 1195, 1181, 1185, 1183, 1189, 1192, - 1186, 1193, 1182, 71, 71, 71, 71, 71, 1194, 1196, + 71, 71, 1145, 1147, 1148, 71, 1149, 1152, 1153, 71, + 71, 1151, 71, 71, 71, 71, 71, 1150, 1156, 1154, + 71, 1157, 71, 71, 71, 1163, 1161, 1164, 71, 71, + 1155, 71, 1158, 71, 1165, 1159, 71, 1162, 71, 1168, + 71, 1166, 1160, 1167, 1171, 71, 1169, 71, 1173, 71, + 71, 71, 1172, 71, 71, 71, 71, 71, 1177, 1178, + 1170, 71, 1174, 1175, 71, 71, 1183, 1184, 1179, 1176, + 71, 71, 71, 71, 71, 71, 1181, 1187, 71, 1180, + 1186, 71, 1191, 71, 1182, 1185, 71, 71, 1189, 71, + 1188, 71, 71, 1190, 1197, 71, 1193, 71, 71, 71, - 1191, 71, 71, 71, 71, 71, 71, 1199, 71, 71, - 1197, 71, 1202, 1205, 71, 1198, 71, 71, 1200, 71, - 71, 1203, 1220, 1201, 1208, 1206, 1209, 1204, 71, 71, - 1215, 71, 71, 1211, 1207, 71, 1216, 1210, 1217, 71, - 71, 71, 1212, 71, 1213, 71, 1219, 1214, 1218, 71, - 1224, 71, 1223, 71, 1221, 71, 1226, 71, 1222, 1229, - 71, 71, 1230, 71, 1227, 71, 1231, 71, 1225, 71, - 1233, 1234, 71, 71, 1228, 71, 71, 71, 1235, 71, - 71, 71, 71, 1232, 71, 71, 1241, 1236, 1237, 1239, - 71, 1240, 1242, 71, 1238, 71, 1246, 71, 1251, 71, + 71, 1192, 1203, 71, 71, 1201, 71, 71, 1194, 1200, + 1233, 1196, 1198, 1202, 1199, 1205, 1195, 1206, 71, 71, + 1208, 71, 71, 71, 1207, 71, 1204, 1209, 71, 71, + 71, 71, 71, 71, 1212, 71, 1218, 71, 71, 1210, + 1215, 71, 1211, 71, 71, 1213, 71, 1216, 71, 71, + 1214, 1224, 1219, 1229, 1217, 1222, 71, 1228, 1221, 1220, + 1225, 71, 1226, 71, 1223, 1227, 1230, 71, 1231, 71, + 71, 71, 71, 71, 71, 71, 71, 1232, 1237, 1236, + 1239, 1242, 71, 71, 3093, 1240, 71, 71, 1234, 1235, + 1247, 1238, 1243, 71, 71, 1241, 71, 71, 1244, 1246, - 1243, 71, 1245, 1244, 71, 1248, 1250, 71, 1247, 1253, - 71, 71, 1257, 1252, 71, 1249, 1255, 1258, 71, 71, - 71, 71, 1256, 71, 1262, 71, 3048, 1254, 71, 1272, - 1270, 1271, 1261, 1259, 1260, 71, 71, 71, 1269, 1275, - 1263, 1273, 71, 1264, 1265, 71, 71, 71, 1266, 71, - 71, 1274, 1276, 71, 1267, 1277, 71, 1278, 1268, 71, - 1280, 71, 71, 71, 1281, 71, 1282, 1279, 71, 1283, - 1287, 1284, 1285, 71, 1290, 1291, 71, 71, 71, 1329, - 71, 71, 1286, 1292, 71, 1294, 1289, 1288, 1293, 71, - 1295, 71, 1296, 71, 1297, 1303, 1298, 71, 1299, 1300, + 71, 71, 71, 1245, 71, 1248, 71, 71, 71, 71, + 71, 71, 1249, 1254, 1252, 1250, 71, 1259, 71, 1253, + 1251, 1255, 71, 71, 1264, 71, 1256, 71, 1258, 1257, + 71, 1260, 1263, 71, 71, 1266, 71, 71, 1261, 1265, + 71, 1268, 1262, 1270, 71, 71, 1269, 71, 1271, 71, + 71, 1275, 71, 1267, 1273, 71, 1272, 1274, 71, 1284, + 1282, 1283, 1992, 1276, 1287, 71, 1277, 1278, 71, 1285, + 71, 1279, 1288, 71, 71, 1286, 71, 1280, 71, 1289, + 71, 1281, 71, 1291, 71, 1290, 71, 1293, 71, 71, + 71, 1294, 71, 1295, 1292, 71, 1296, 1300, 1298, 71, - 1301, 71, 71, 71, 1302, 1307, 71, 1305, 71, 71, - 1308, 71, 1306, 1310, 71, 71, 1304, 71, 71, 1316, - 71, 1317, 71, 1311, 1312, 71, 71, 71, 1309, 71, - 1318, 71, 1315, 1313, 1320, 71, 1314, 71, 71, 71, - 1319, 1321, 71, 1325, 1322, 1326, 71, 1328, 71, 1323, - 71, 71, 71, 1330, 1327, 71, 1331, 1334, 71, 1336, - 71, 1332, 1324, 71, 1333, 71, 1337, 71, 1338, 71, - 1341, 71, 1335, 71, 71, 71, 71, 1343, 71, 71, - 71, 1345, 1347, 71, 71, 3048, 1349, 1346, 1339, 71, - 1340, 71, 71, 1342, 1351, 1344, 1352, 1348, 71, 1350, + 1303, 1304, 1297, 71, 71, 71, 71, 71, 1305, 1301, + 1299, 71, 71, 1307, 71, 1306, 1317, 1302, 1308, 1312, + 1309, 71, 1310, 71, 1311, 1318, 1313, 71, 1314, 1315, + 1316, 71, 71, 71, 1322, 71, 71, 71, 1319, 1323, + 71, 1325, 1321, 71, 71, 71, 71, 1331, 71, 1320, + 71, 1326, 1327, 71, 71, 1332, 1333, 1324, 71, 71, + 1330, 71, 71, 1328, 1329, 71, 1335, 71, 1338, 71, + 3093, 1337, 1334, 1336, 1340, 1341, 71, 1343, 71, 71, + 71, 1344, 1342, 1345, 71, 71, 71, 1349, 71, 1346, + 1339, 71, 1351, 71, 71, 1348, 71, 1352, 71, 1353, - 1353, 71, 71, 1354, 71, 1356, 1355, 1357, 71, 71, - 71, 71, 1362, 1363, 1365, 1359, 71, 1360, 71, 71, - 71, 1364, 71, 71, 1361, 71, 1358, 1369, 71, 71, - 71, 1366, 71, 1373, 1374, 71, 1368, 1376, 71, 71, - 71, 1375, 1367, 71, 71, 71, 71, 71, 71, 1370, - 1371, 71, 1377, 71, 1383, 1372, 71, 1380, 1378, 71, - 1381, 71, 1388, 71, 1379, 1382, 1387, 71, 1384, 71, - 3048, 71, 1390, 1392, 1386, 71, 1385, 71, 1393, 71, - 71, 71, 1389, 71, 1395, 1396, 71, 71, 1391, 1394, - 71, 71, 1401, 1403, 1397, 1402, 1398, 1405, 1399, 71, + 71, 1356, 71, 71, 1347, 71, 71, 71, 1358, 71, + 71, 1350, 1360, 71, 71, 1362, 71, 1364, 1361, 1354, + 71, 1355, 71, 1357, 71, 1366, 1359, 1367, 1363, 71, + 71, 1365, 1368, 71, 1369, 1370, 71, 1371, 1372, 71, + 71, 71, 71, 1377, 1378, 1380, 1374, 71, 1375, 71, + 71, 71, 1379, 71, 71, 1376, 71, 1373, 1384, 71, + 71, 71, 1381, 71, 1388, 1389, 71, 1383, 1391, 71, + 71, 71, 1390, 1382, 71, 71, 71, 71, 71, 71, + 1385, 1386, 71, 1392, 71, 1398, 1387, 71, 1395, 1393, + 71, 1396, 71, 1403, 71, 1394, 1397, 1402, 71, 1399, - 1404, 1400, 71, 71, 71, 71, 1406, 1408, 71, 1410, - 1407, 71, 1409, 71, 71, 71, 1413, 71, 71, 1415, - 71, 71, 1420, 1412, 71, 71, 1414, 71, 1421, 71, - 1411, 1417, 71, 1424, 71, 1416, 1418, 71, 1419, 71, - 71, 1425, 71, 1422, 71, 71, 1423, 71, 1427, 1431, - 1433, 1426, 1428, 71, 1432, 1429, 71, 71, 1436, 71, - 71, 1430, 71, 71, 1441, 1435, 1438, 1442, 1440, 71, - 71, 1434, 71, 71, 1437, 71, 1443, 71, 1444, 1445, - 71, 71, 71, 1439, 71, 1446, 1449, 1448, 71, 71, - 1452, 1447, 71, 71, 71, 1451, 71, 71, 1458, 1450, + 71, 3093, 71, 1405, 1407, 1401, 71, 1400, 71, 1408, + 71, 71, 71, 1404, 71, 1410, 1411, 71, 71, 1406, + 1409, 71, 71, 1416, 1418, 1412, 1417, 1413, 1420, 1414, + 71, 1419, 1415, 71, 71, 71, 71, 1421, 1423, 71, + 1425, 1422, 71, 1424, 71, 71, 71, 1428, 71, 71, + 1430, 71, 71, 1435, 1427, 71, 71, 1429, 71, 1436, + 71, 1426, 1432, 71, 1439, 71, 1431, 1433, 71, 1434, + 71, 71, 1440, 71, 1437, 71, 71, 1438, 71, 1442, + 1446, 1448, 1441, 1443, 71, 1447, 1444, 71, 71, 1451, + 71, 71, 1445, 71, 71, 1456, 1450, 1453, 1457, 1455, - 1460, 1454, 1455, 1459, 71, 1461, 71, 71, 1456, 71, - 1463, 71, 1453, 71, 71, 1457, 71, 71, 71, 71, - 1471, 1467, 71, 1466, 71, 1474, 71, 1462, 71, 1472, - 1464, 71, 1465, 71, 1477, 71, 1468, 1470, 1469, 1476, - 71, 71, 71, 71, 71, 71, 3048, 1475, 1473, 71, - 71, 1485, 71, 71, 1478, 1486, 1488, 71, 1482, 71, - 1479, 1480, 1481, 1491, 1484, 1487, 1483, 1489, 71, 71, - 71, 71, 71, 71, 1490, 1495, 71, 71, 71, 1496, - 1493, 1498, 71, 1492, 71, 1494, 1502, 71, 1504, 1503, - 71, 71, 1497, 1499, 71, 71, 71, 1500, 1501, 71, + 71, 71, 1449, 71, 71, 1452, 71, 1458, 71, 1459, + 1460, 71, 71, 71, 1454, 71, 1461, 1464, 1463, 71, + 71, 1467, 1462, 71, 71, 71, 1466, 71, 71, 1473, + 1465, 1475, 1469, 1470, 1474, 71, 1476, 71, 71, 1471, + 71, 1478, 71, 1468, 71, 71, 1472, 71, 71, 71, + 71, 1486, 1482, 71, 1481, 71, 1489, 71, 1477, 71, + 1487, 1479, 71, 1480, 71, 1492, 71, 1483, 1485, 1484, + 1491, 71, 71, 71, 71, 71, 71, 71, 1490, 1488, + 71, 71, 1500, 71, 71, 1493, 1501, 71, 3093, 1497, + 71, 1494, 1495, 1496, 1508, 1499, 1502, 1498, 71, 1504, - 1507, 71, 71, 1508, 1506, 1505, 1509, 71, 1513, 1514, - 71, 71, 71, 71, 71, 71, 1510, 1519, 1517, 1511, - 71, 1518, 71, 71, 1521, 71, 71, 1512, 71, 1515, - 71, 1522, 71, 1516, 71, 1520, 1523, 71, 1524, 71, - 71, 1528, 1525, 1526, 71, 1529, 71, 71, 71, 1530, - 1527, 71, 1533, 71, 1535, 71, 71, 71, 1539, 71, - 1531, 71, 1534, 71, 71, 1532, 71, 71, 1542, 1536, - 1537, 1544, 71, 1540, 71, 71, 1547, 71, 1545, 1541, - 71, 1538, 1543, 71, 1546, 71, 71, 1550, 1548, 71, - 1552, 1549, 1553, 71, 71, 71, 1551, 71, 71, 1560, + 1505, 71, 71, 1503, 1506, 71, 71, 1507, 71, 71, + 71, 1509, 1512, 71, 1515, 1510, 1513, 71, 71, 1519, + 71, 1511, 71, 71, 1521, 71, 71, 1520, 1516, 1514, + 71, 71, 71, 71, 1518, 71, 1524, 1517, 1522, 1523, + 71, 71, 1530, 1528, 1525, 1526, 1531, 71, 71, 71, + 71, 71, 1527, 1529, 1536, 1534, 1533, 71, 1535, 71, + 71, 1538, 71, 71, 1540, 71, 1539, 1532, 71, 71, + 71, 1537, 1543, 71, 71, 1541, 71, 1546, 71, 71, + 71, 71, 1545, 71, 1542, 1550, 71, 1552, 71, 1547, + 1544, 71, 71, 1556, 71, 1551, 71, 71, 1549, 1548, - 71, 71, 71, 1555, 1554, 1561, 71, 71, 71, 1558, - 1569, 1564, 1565, 1556, 1557, 71, 71, 1567, 71, 71, - 71, 1562, 1559, 1568, 1571, 71, 1563, 71, 1566, 71, - 71, 1573, 71, 1575, 1572, 71, 71, 1578, 71, 1570, - 1576, 71, 1579, 71, 1574, 71, 71, 71, 1584, 1583, - 71, 71, 1580, 1577, 71, 71, 71, 1600, 1590, 1591, - 1582, 1581, 1585, 71, 71, 71, 1587, 71, 1592, 1588, - 71, 1586, 1598, 1602, 71, 1595, 1594, 1597, 71, 71, - 1596, 1589, 71, 71, 1593, 71, 1601, 1599, 1603, 71, - 71, 71, 71, 71, 1609, 1610, 1608, 71, 71, 1612, + 71, 1553, 1559, 1554, 1561, 71, 71, 71, 1557, 71, + 1562, 71, 1564, 71, 1558, 1560, 1555, 71, 71, 71, + 71, 1567, 1570, 71, 1566, 1569, 71, 1563, 71, 71, + 71, 1565, 71, 1572, 71, 1577, 71, 1568, 71, 71, + 71, 1578, 71, 1575, 1571, 71, 3093, 1573, 1574, 1581, + 1582, 71, 1579, 1584, 1586, 1576, 71, 1588, 1580, 1583, + 71, 1585, 1587, 71, 71, 1590, 71, 71, 71, 71, + 71, 71, 1595, 71, 1592, 1593, 71, 1596, 1589, 71, + 71, 71, 71, 1601, 1600, 71, 1591, 1597, 71, 71, + 71, 3093, 1607, 1594, 1608, 1599, 71, 1598, 71, 1604, - 71, 71, 1604, 1611, 71, 71, 1615, 71, 1605, 1614, - 1606, 71, 1607, 71, 71, 71, 1616, 71, 71, 71, - 1613, 1624, 71, 71, 71, 71, 71, 71, 71, 1622, - 71, 1617, 1620, 1621, 1618, 1619, 1623, 1629, 71, 1627, - 71, 71, 1625, 71, 1626, 1631, 71, 1628, 1630, 71, - 1632, 71, 71, 71, 1635, 71, 1633, 1634, 71, 71, - 1637, 71, 1639, 71, 1636, 71, 1646, 1638, 1640, 1642, - 71, 1641, 71, 1643, 1647, 71, 1648, 71, 1644, 1652, - 71, 71, 1649, 1650, 1651, 1653, 1645, 71, 71, 71, - 71, 71, 71, 1655, 1656, 71, 71, 1664, 1665, 71, + 1602, 71, 1605, 71, 1609, 1603, 71, 71, 71, 1617, + 1614, 1612, 1611, 1615, 1606, 1613, 71, 71, 1618, 71, + 1610, 1616, 1619, 71, 71, 71, 71, 71, 71, 1620, + 71, 1626, 1627, 1625, 71, 1629, 1621, 71, 71, 1628, + 71, 71, 71, 1622, 71, 1623, 71, 1624, 71, 1631, + 1632, 71, 71, 1633, 71, 71, 1641, 71, 71, 71, + 1634, 71, 71, 1630, 71, 71, 1635, 71, 1637, 1638, + 1639, 71, 1636, 71, 1640, 1646, 71, 1642, 1644, 1643, + 71, 71, 1649, 71, 71, 1648, 1645, 1647, 1650, 71, + 71, 71, 71, 71, 71, 1652, 71, 1651, 1654, 1656, - 71, 1659, 71, 71, 71, 1661, 1654, 1658, 1662, 1657, - 71, 1663, 71, 71, 1660, 71, 71, 1667, 71, 71, - 1666, 71, 1674, 71, 71, 71, 1669, 1671, 1668, 1670, - 1677, 71, 1676, 71, 1678, 1675, 1673, 71, 71, 1685, - 1680, 1672, 1682, 1681, 1686, 71, 71, 71, 1679, 71, - 71, 1691, 71, 1693, 71, 1690, 1684, 71, 1683, 1694, - 1687, 71, 1688, 1696, 71, 71, 1695, 71, 71, 71, - 1692, 1689, 1700, 1697, 71, 1704, 71, 71, 71, 1702, - 71, 71, 1699, 71, 1698, 1703, 71, 1701, 1705, 71, - 71, 71, 71, 71, 1708, 1716, 1706, 71, 1709, 1714, + 1657, 71, 1653, 1658, 1663, 1655, 1664, 71, 71, 1659, + 71, 1660, 1665, 71, 71, 71, 1661, 1668, 71, 1662, + 1666, 1669, 71, 71, 71, 71, 71, 71, 1667, 1672, + 1673, 1670, 71, 1681, 1671, 1676, 71, 71, 71, 71, + 1682, 71, 1674, 1675, 71, 1678, 1680, 71, 1679, 71, + 71, 1677, 71, 71, 1688, 71, 71, 1684, 1683, 1689, + 71, 1690, 71, 1686, 1691, 1685, 1687, 71, 1694, 71, + 71, 1696, 71, 1693, 71, 1697, 71, 1698, 1692, 71, + 71, 1700, 1705, 71, 1701, 1695, 71, 1706, 71, 71, + 71, 1699, 1702, 1711, 71, 1710, 71, 1707, 1704, 71, - 71, 71, 1707, 1710, 1711, 1717, 1712, 1713, 71, 71, - 1718, 71, 71, 71, 1723, 71, 71, 71, 1727, 71, - 71, 1715, 71, 71, 3048, 71, 1722, 1720, 1719, 1729, - 71, 1721, 1725, 71, 71, 1726, 71, 1724, 1730, 1731, - 71, 1732, 1728, 1736, 71, 1735, 1734, 71, 71, 1733, - 71, 1740, 71, 71, 71, 71, 71, 71, 71, 1747, - 1738, 1742, 71, 71, 71, 71, 1737, 1741, 1743, 1739, - 1744, 1841, 71, 71, 1745, 1748, 1752, 1746, 1750, 71, - 1749, 1751, 71, 1753, 71, 71, 1756, 71, 1755, 71, - 1754, 1759, 71, 1757, 71, 71, 71, 71, 1760, 1758, + 1703, 1708, 1713, 71, 1714, 71, 3093, 71, 71, 1716, + 71, 1709, 1712, 1715, 71, 71, 1718, 1720, 71, 1719, + 1717, 71, 1724, 71, 1722, 71, 1726, 71, 71, 71, + 1723, 1721, 71, 1725, 71, 71, 71, 1728, 71, 1734, + 71, 1729, 71, 1736, 71, 1737, 1727, 1730, 1731, 71, + 1732, 71, 1733, 71, 71, 1738, 71, 1743, 71, 71, + 71, 1735, 71, 71, 1739, 1747, 71, 71, 71, 1742, + 71, 1740, 1749, 1741, 71, 1745, 71, 71, 1746, 1750, + 1744, 1751, 1748, 71, 71, 1755, 1753, 71, 1752, 71, + 1754, 1756, 71, 1760, 71, 71, 71, 71, 71, 1758, - 71, 71, 71, 71, 71, 71, 1765, 71, 71, 1769, - 71, 71, 1766, 3048, 71, 1775, 1761, 1767, 1763, 1762, - 1764, 71, 1768, 1770, 71, 1778, 1773, 71, 1772, 1777, - 71, 71, 1779, 1774, 71, 71, 1771, 71, 71, 1776, - 1783, 71, 1786, 1787, 71, 71, 1780, 1788, 71, 71, - 1781, 1784, 71, 1785, 71, 1782, 1790, 71, 71, 1791, - 1794, 71, 71, 1796, 71, 1789, 1795, 1797, 1798, 71, - 1792, 1800, 1799, 1793, 71, 71, 71, 71, 1805, 1802, - 1803, 71, 71, 1804, 71, 71, 71, 71, 1812, 71, - 1814, 71, 71, 71, 71, 1815, 71, 1806, 1807, 1808, + 71, 71, 71, 1757, 1762, 1767, 71, 71, 1759, 1761, + 1763, 71, 1764, 1770, 1768, 1765, 1771, 71, 71, 71, + 71, 1766, 1772, 1774, 1769, 1773, 71, 1776, 71, 1775, + 1777, 71, 71, 71, 1779, 71, 71, 71, 1780, 71, + 1778, 71, 71, 71, 71, 71, 1785, 71, 71, 71, + 1789, 71, 1786, 1790, 1797, 71, 1781, 1783, 71, 1782, + 1784, 1787, 1788, 1793, 71, 71, 1791, 1798, 1792, 1795, + 1794, 71, 1799, 71, 71, 71, 71, 71, 1803, 71, + 1796, 71, 1806, 1807, 71, 1808, 71, 1810, 71, 71, + 1800, 1801, 71, 1804, 1802, 1805, 71, 1809, 71, 1811, - 1801, 71, 71, 1817, 1809, 1816, 1810, 1811, 1819, 1813, - 1820, 71, 1822, 1818, 71, 71, 71, 1824, 71, 71, - 1821, 71, 1826, 71, 71, 1829, 1830, 71, 71, 1832, - 71, 71, 71, 71, 71, 1823, 1838, 71, 1837, 1827, - 71, 1825, 1834, 1835, 71, 1828, 71, 71, 1831, 71, - 71, 1844, 71, 1836, 71, 1842, 1833, 71, 71, 1848, - 71, 1839, 1840, 1847, 71, 71, 1851, 1850, 1852, 1854, - 1846, 71, 71, 71, 71, 1843, 71, 1849, 1845, 1853, - 71, 71, 1855, 71, 71, 71, 1859, 71, 1862, 71, - 1863, 1856, 71, 1858, 71, 1857, 71, 71, 1866, 71, + 1814, 71, 71, 1816, 71, 1818, 1815, 1817, 71, 71, + 1812, 71, 1820, 1813, 1819, 71, 71, 71, 71, 1822, + 1823, 71, 71, 1824, 1825, 71, 1832, 1826, 1827, 1828, + 71, 71, 71, 1821, 1829, 1834, 71, 1830, 71, 71, + 1835, 71, 71, 71, 1837, 1831, 1840, 71, 71, 1838, + 1836, 1833, 71, 71, 1839, 71, 1841, 1844, 71, 71, + 1846, 71, 71, 1842, 71, 1849, 1850, 71, 71, 1843, + 1852, 71, 71, 71, 1857, 1847, 71, 1858, 71, 1845, + 71, 1854, 1851, 1848, 71, 1855, 71, 71, 71, 71, + 71, 1864, 71, 1853, 1856, 1861, 1862, 71, 71, 71, - 71, 71, 1860, 1871, 71, 1870, 71, 1865, 71, 1864, - 71, 1861, 71, 71, 1867, 71, 1875, 1868, 71, 1876, - 1872, 1869, 1879, 1873, 1877, 1874, 1878, 71, 71, 1882, - 71, 1883, 71, 71, 71, 71, 71, 1889, 71, 1880, - 1886, 71, 71, 71, 1881, 1894, 1884, 1891, 1892, 71, - 71, 1893, 1885, 1890, 1887, 71, 1888, 71, 71, 1899, - 71, 1900, 71, 1903, 1895, 1901, 1904, 71, 1896, 71, - 1902, 71, 71, 1897, 71, 71, 1908, 71, 1898, 1906, - 71, 71, 71, 71, 1910, 1913, 71, 1907, 1915, 1909, - 71, 71, 71, 1905, 71, 1911, 71, 71, 71, 71, + 1868, 1860, 71, 1867, 1871, 1859, 71, 71, 71, 1870, + 71, 1874, 71, 1866, 1872, 1863, 71, 71, 1865, 1869, + 1875, 71, 71, 71, 71, 1877, 1873, 1876, 1878, 71, + 71, 71, 1881, 71, 1884, 1885, 1880, 71, 71, 71, + 71, 71, 1879, 1888, 71, 71, 1893, 71, 1882, 71, + 1892, 71, 1887, 3093, 71, 71, 71, 1883, 1886, 1889, + 1890, 71, 1898, 71, 1899, 1897, 1891, 1901, 1894, 1895, + 1896, 1900, 71, 71, 1904, 71, 71, 71, 71, 71, + 71, 71, 1911, 1908, 1902, 71, 71, 71, 71, 1903, + 1913, 1906, 1914, 71, 71, 1915, 71, 1905, 1907, 71, - 1920, 1925, 1916, 1919, 1917, 71, 1912, 71, 1914, 71, - 1921, 1922, 71, 1923, 71, 1918, 71, 1932, 71, 1924, - 71, 71, 1926, 1927, 71, 71, 1928, 71, 1931, 1930, - 1929, 71, 1933, 71, 71, 71, 1937, 71, 71, 1934, - 1936, 71, 71, 1938, 71, 1935, 1939, 1940, 1941, 71, - 71, 71, 71, 1943, 71, 1948, 1946, 71, 1942, 1947, - 71, 71, 71, 71, 71, 1953, 71, 71, 1944, 1950, - 1945, 71, 71, 71, 1957, 1949, 1954, 1952, 71, 1959, - 1951, 1956, 71, 71, 1955, 1963, 71, 1958, 1961, 71, - 71, 71, 1960, 1964, 71, 1962, 71, 1969, 71, 71, + 1909, 1910, 1912, 1916, 71, 1917, 1920, 1921, 71, 1922, + 71, 1923, 1925, 1926, 71, 1918, 1924, 71, 71, 71, + 1919, 71, 71, 1930, 71, 71, 1928, 71, 71, 71, + 71, 1932, 1935, 1937, 1929, 71, 1931, 1933, 71, 71, + 1927, 71, 71, 71, 71, 1943, 71, 1938, 1941, 1942, + 1944, 71, 1936, 1934, 1939, 1945, 71, 71, 1947, 71, + 1940, 71, 71, 71, 71, 1948, 1949, 71, 1950, 71, + 1953, 71, 1951, 71, 1952, 71, 1955, 1946, 71, 71, + 1959, 71, 71, 1954, 1958, 1956, 71, 71, 71, 71, + 1957, 1960, 1961, 1962, 1963, 71, 71, 71, 1965, 71, - 1971, 71, 71, 71, 1972, 1965, 71, 1966, 1975, 1967, - 1968, 1973, 71, 71, 1974, 1970, 71, 1977, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 1978, 3048, 71, - 71, 1985, 1980, 1976, 1981, 1982, 1989, 71, 71, 1984, - 1979, 1988, 71, 71, 1986, 1992, 1987, 1983, 1990, 71, - 71, 71, 71, 1996, 1993, 1995, 71, 71, 1991, 71, - 71, 1998, 71, 1994, 1999, 71, 71, 71, 2000, 2004, - 1997, 2002, 71, 71, 2006, 2008, 71, 2003, 2001, 71, - 71, 71, 2011, 71, 71, 2005, 2010, 2007, 2012, 2013, - 71, 71, 2016, 71, 71, 71, 71, 71, 71, 2017, + 71, 1970, 71, 1968, 71, 1969, 1964, 71, 71, 71, + 71, 1975, 71, 1972, 1966, 71, 1967, 71, 1979, 71, + 1971, 71, 1976, 1974, 1978, 71, 1973, 71, 1980, 71, + 1977, 71, 1983, 1981, 1985, 71, 71, 71, 71, 1986, + 71, 3093, 1984, 1991, 71, 1993, 1982, 1987, 71, 71, + 1994, 71, 1990, 1988, 71, 1989, 1995, 71, 71, 1996, + 71, 1997, 71, 1999, 71, 71, 71, 71, 71, 2000, + 71, 71, 71, 71, 2011, 71, 2007, 2002, 1998, 2003, + 2004, 71, 71, 71, 2010, 2001, 2006, 71, 2015, 2008, + 2014, 71, 2005, 2009, 71, 71, 2018, 71, 71, 2012, - 71, 2022, 71, 2019, 71, 2009, 2018, 2026, 2014, 71, - 2023, 2015, 2024, 71, 2021, 2020, 71, 71, 71, 2028, - 71, 2027, 2031, 71, 2025, 71, 2029, 71, 2033, 71, - 2034, 71, 2032, 71, 2030, 71, 71, 71, 2036, 2040, - 2035, 71, 71, 2037, 2038, 2042, 71, 2039, 71, 71, - 2043, 71, 71, 2045, 2046, 2044, 71, 2041, 71, 71, - 71, 2047, 2049, 2048, 2052, 71, 71, 71, 2050, 2051, - 2053, 71, 71, 71, 71, 71, 71, 2054, 71, 71, - 2061, 2056, 2055, 2062, 2058, 2059, 2057, 71, 2063, 71, - 71, 71, 71, 2064, 2060, 2066, 2072, 71, 71, 2067, + 2017, 71, 2013, 2020, 71, 71, 71, 71, 2021, 71, + 71, 2016, 2026, 2022, 71, 2019, 2024, 71, 2025, 2028, + 71, 2030, 71, 2023, 71, 71, 71, 2033, 2027, 2032, + 71, 2034, 71, 71, 2029, 2035, 2038, 71, 71, 71, + 2031, 2042, 71, 2039, 71, 71, 2043, 71, 71, 2041, + 2036, 71, 2040, 2037, 2047, 71, 2044, 71, 2048, 2046, + 71, 2051, 71, 2045, 71, 71, 2049, 71, 71, 2052, + 2053, 2056, 71, 2054, 2057, 71, 2058, 71, 2059, 71, + 2050, 2055, 71, 71, 71, 71, 71, 2061, 2060, 71, + 71, 2065, 2067, 2063, 71, 2069, 2064, 2068, 71, 71, - 71, 71, 2074, 71, 71, 2068, 2065, 2071, 2076, 2069, - 2073, 71, 71, 71, 3048, 2079, 2077, 2070, 2081, 2075, - 2080, 71, 2082, 71, 71, 2078, 2083, 71, 71, 2086, - 71, 71, 2087, 2085, 71, 2084, 2091, 71, 71, 2092, - 71, 71, 2095, 2090, 71, 71, 2088, 71, 71, 2096, - 71, 2097, 2093, 2098, 71, 71, 2100, 2089, 71, 2094, - 2099, 71, 71, 2105, 71, 2101, 71, 2102, 2103, 71, - 2104, 71, 71, 71, 71, 71, 2108, 71, 71, 2112, - 2114, 71, 2115, 71, 2107, 71, 71, 71, 71, 2106, - 2109, 2110, 2117, 2111, 71, 71, 71, 71, 2116, 2113, + 71, 2062, 2070, 71, 71, 2072, 2066, 2074, 2073, 71, + 71, 2071, 2077, 71, 71, 71, 71, 71, 2076, 71, + 71, 71, 71, 71, 2075, 71, 71, 2086, 2078, 2083, + 2081, 2080, 2079, 2084, 2082, 2088, 71, 71, 71, 71, + 2085, 2087, 71, 2089, 2091, 71, 2092, 3093, 71, 71, + 2095, 2097, 71, 71, 2093, 71, 2090, 2096, 2098, 2101, + 2094, 2099, 71, 71, 2100, 2104, 2103, 2106, 2102, 2107, + 2105, 71, 71, 71, 71, 71, 71, 2108, 2111, 71, + 2109, 71, 71, 2112, 2116, 71, 71, 2117, 71, 71, + 2115, 71, 2120, 71, 71, 2126, 2110, 2113, 71, 2121, - 2119, 2121, 2124, 71, 71, 2120, 71, 2122, 71, 71, - 71, 2118, 2125, 2123, 71, 71, 2126, 71, 71, 71, - 2135, 71, 71, 71, 71, 2127, 2136, 2132, 71, 2130, - 2290, 2128, 2138, 2129, 2134, 2131, 71, 2137, 2133, 71, - 2140, 2139, 2141, 71, 2142, 71, 71, 71, 2145, 71, - 71, 2143, 2148, 71, 71, 2149, 71, 71, 2146, 2144, - 71, 2147, 2150, 2154, 71, 2155, 71, 71, 2157, 71, - 71, 71, 2153, 71, 2151, 71, 2152, 2159, 71, 71, - 2162, 71, 2163, 71, 2161, 2164, 2156, 71, 2158, 71, - 2160, 71, 2167, 71, 2169, 71, 2165, 71, 2168, 2171, + 2118, 71, 2122, 2123, 71, 71, 2125, 2119, 2114, 71, + 2124, 71, 71, 2127, 71, 2128, 71, 71, 71, 2130, + 71, 71, 71, 2133, 71, 71, 2139, 71, 71, 2137, + 71, 71, 2132, 71, 2129, 2140, 71, 2135, 2134, 2131, + 71, 2142, 2136, 2141, 71, 2144, 71, 2138, 71, 2146, + 2149, 71, 71, 71, 71, 71, 2143, 71, 71, 2145, + 2150, 2147, 71, 71, 2148, 71, 71, 71, 2160, 71, + 71, 71, 2151, 2152, 2161, 2157, 71, 2155, 2153, 2162, + 71, 2154, 2159, 2156, 2163, 71, 2158, 71, 2165, 2164, + 2166, 71, 2167, 71, 71, 2168, 71, 2170, 2169, 2173, - 71, 71, 71, 2166, 71, 2174, 71, 2173, 71, 2175, - 2170, 2177, 71, 71, 71, 2172, 2181, 71, 71, 71, - 71, 2179, 71, 2178, 2176, 71, 2185, 2186, 71, 71, - 2190, 71, 2180, 71, 2182, 2184, 71, 71, 2187, 71, - 2188, 2183, 71, 2192, 2189, 71, 71, 2197, 71, 71, - 2199, 2193, 71, 2191, 71, 2200, 71, 2194, 2198, 71, - 2195, 2204, 71, 71, 2205, 71, 2203, 71, 71, 71, - 2201, 2196, 2202, 2209, 2211, 71, 2207, 71, 2214, 71, - 2212, 71, 2216, 71, 71, 71, 2208, 2206, 71, 71, - 2217, 71, 2213, 2210, 2218, 71, 2220, 71, 2221, 71, + 71, 71, 71, 2171, 71, 71, 2172, 2174, 71, 2175, + 2179, 71, 2180, 71, 71, 2182, 71, 71, 2184, 71, + 2178, 2176, 71, 71, 71, 2177, 2187, 71, 2186, 2188, + 71, 71, 71, 2181, 71, 2183, 71, 2185, 2189, 71, + 2190, 2193, 2194, 71, 2196, 71, 2191, 71, 71, 71, + 71, 2200, 2199, 2192, 2198, 2202, 71, 71, 2195, 71, + 71, 71, 2205, 71, 71, 2197, 2201, 2208, 71, 71, + 71, 71, 2213, 71, 2204, 2212, 2203, 71, 2206, 71, + 2207, 71, 71, 71, 2209, 2211, 2217, 71, 71, 71, + 2219, 71, 2210, 71, 2215, 71, 2214, 2216, 71, 2224, - 2215, 71, 71, 71, 71, 2226, 2219, 2227, 2222, 2228, - 2223, 2224, 2225, 71, 71, 71, 71, 2230, 2229, 71, - 2232, 2233, 71, 2234, 2236, 2231, 2237, 71, 71, 71, - 71, 2235, 2240, 71, 71, 71, 71, 71, 71, 2242, - 2247, 71, 71, 71, 2238, 2239, 2248, 2243, 71, 2241, - 2251, 71, 2244, 2245, 2246, 71, 2252, 2253, 71, 71, - 2250, 71, 2254, 2249, 2256, 2257, 2255, 2258, 71, 71, - 71, 71, 71, 2260, 71, 71, 71, 71, 2264, 2265, - 71, 3048, 71, 2259, 71, 71, 2261, 2267, 2268, 2262, - 71, 2270, 71, 2269, 2266, 2263, 71, 71, 71, 71, + 71, 2218, 2220, 71, 2225, 2226, 71, 2221, 71, 2222, + 71, 2227, 2230, 71, 71, 2231, 71, 71, 2232, 2223, + 71, 71, 2236, 71, 71, 71, 2228, 2234, 2229, 2238, + 2239, 2233, 2241, 2243, 71, 71, 2240, 2235, 71, 71, + 2244, 71, 71, 71, 2242, 71, 2237, 2245, 2248, 71, + 71, 71, 2249, 71, 2247, 2254, 71, 2255, 2250, 2246, + 2251, 71, 2252, 71, 2253, 71, 71, 71, 2259, 2256, + 71, 2260, 71, 2261, 71, 2258, 2257, 71, 71, 71, + 71, 2262, 2267, 71, 71, 71, 71, 71, 71, 2268, + 2263, 2274, 2264, 2269, 2265, 2266, 2271, 2270, 71, 2273, - 71, 2271, 71, 2274, 2275, 71, 2272, 2277, 71, 71, - 71, 71, 71, 2276, 71, 2281, 2284, 71, 2273, 2283, - 71, 71, 71, 2285, 2280, 71, 71, 2289, 2278, 2279, - 2288, 71, 2282, 71, 71, 71, 2291, 2287, 2286, 2297, - 2292, 71, 2293, 71, 71, 2296, 2294, 2298, 71, 2300, - 71, 71, 71, 71, 2302, 71, 71, 2295, 71, 71, - 2299, 2301, 71, 71, 2306, 71, 71, 71, 2308, 2303, - 2304, 2309, 2310, 71, 2305, 2311, 71, 2312, 71, 2313, - 71, 2314, 71, 71, 71, 2316, 2319, 71, 2307, 2315, - 71, 2321, 71, 71, 2324, 71, 2318, 71, 71, 2320, + 71, 2272, 71, 2275, 2278, 71, 71, 2279, 2280, 71, + 71, 71, 2283, 2281, 2277, 2284, 2282, 71, 71, 71, + 2276, 71, 2285, 71, 71, 2287, 71, 71, 71, 2291, + 2292, 2286, 71, 2289, 71, 71, 71, 2294, 2288, 2295, + 71, 2297, 71, 2296, 71, 71, 2290, 71, 2293, 2298, + 71, 71, 2302, 71, 2299, 2301, 71, 71, 71, 71, + 71, 2304, 71, 2303, 2308, 71, 2311, 2300, 71, 71, + 2310, 71, 71, 2307, 2312, 71, 2315, 2305, 2306, 2316, + 71, 71, 2309, 2318, 71, 71, 71, 2313, 2317, 71, + 2320, 2314, 71, 71, 2323, 2321, 71, 2325, 2319, 71, - 71, 2317, 71, 2327, 2328, 71, 71, 71, 2323, 71, - 2322, 2329, 71, 71, 2332, 2333, 71, 2325, 2326, 71, - 71, 2331, 71, 71, 71, 2330, 71, 2337, 71, 2339, - 2334, 2379, 2336, 2335, 2340, 71, 2341, 71, 2342, 71, - 2343, 71, 71, 2338, 2345, 71, 71, 2347, 71, 2348, - 2346, 71, 71, 71, 2344, 71, 2353, 71, 71, 2355, - 71, 2356, 71, 2349, 2350, 71, 71, 71, 71, 71, - 71, 2352, 71, 2351, 2359, 2362, 2357, 2354, 2358, 71, - 2360, 2365, 71, 71, 71, 71, 71, 71, 71, 2361, - 71, 2372, 2363, 2366, 71, 71, 71, 71, 71, 2364, + 2324, 2327, 71, 71, 71, 2329, 71, 71, 71, 71, + 71, 2326, 2322, 2328, 2333, 71, 71, 71, 71, 2337, + 71, 2335, 2331, 2336, 2339, 2330, 2332, 2338, 71, 71, + 71, 71, 2340, 2341, 71, 71, 71, 71, 71, 2343, + 2345, 2334, 2348, 71, 71, 71, 2350, 71, 2346, 71, + 2347, 2342, 71, 2349, 2344, 2353, 71, 71, 71, 2356, + 2357, 71, 2352, 2351, 71, 71, 71, 71, 2354, 2358, + 71, 2361, 2362, 71, 71, 2355, 2360, 71, 71, 71, + 71, 2369, 71, 2359, 2366, 2368, 71, 2363, 2364, 2365, + 2370, 71, 2371, 71, 2372, 71, 71, 71, 2367, 71, - 2369, 71, 2371, 2373, 71, 2368, 2383, 71, 3048, 2367, - 2370, 2374, 2375, 2376, 71, 71, 71, 71, 2380, 2381, - 2377, 2382, 2384, 71, 2378, 71, 2385, 71, 2386, 71, - 2387, 71, 71, 2388, 71, 71, 2390, 71, 71, 71, - 71, 71, 2389, 2397, 71, 71, 71, 2395, 71, 2401, - 2402, 71, 2391, 2392, 71, 71, 2393, 2394, 71, 2396, - 2398, 71, 2399, 2400, 2404, 2405, 71, 2406, 2403, 2407, - 71, 71, 2408, 71, 71, 71, 71, 71, 2410, 2409, - 71, 2416, 71, 2417, 71, 2418, 71, 71, 2411, 71, - 71, 71, 2412, 2413, 71, 2415, 2414, 2423, 71, 2422, + 2376, 71, 2375, 71, 2374, 71, 2377, 71, 2373, 71, + 2382, 71, 71, 2378, 71, 2379, 2384, 71, 2385, 71, + 71, 71, 71, 71, 71, 2381, 2387, 2380, 71, 2388, + 71, 2383, 2386, 2391, 71, 2389, 2394, 71, 71, 71, + 2390, 71, 71, 2395, 2392, 71, 71, 71, 2401, 71, + 2393, 71, 71, 71, 2398, 71, 71, 71, 2402, 2397, + 2400, 71, 71, 2405, 2396, 2408, 2399, 2403, 2404, 71, + 2409, 71, 2418, 2406, 2410, 2417, 2411, 71, 2407, 2412, + 71, 2413, 71, 71, 2414, 71, 2415, 71, 2416, 71, + 71, 71, 71, 71, 71, 71, 2419, 2426, 71, 71, - 2427, 71, 2420, 2425, 2419, 71, 71, 2426, 2421, 71, - 2424, 2428, 2429, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 2431, 2435, 2430, 71, 71, 2433, 2439, - 2440, 71, 2443, 71, 2432, 71, 71, 2434, 2436, 2437, - 2442, 2438, 2441, 71, 71, 2447, 71, 2444, 2446, 2448, - 2445, 71, 71, 2451, 71, 71, 71, 71, 2455, 71, - 71, 2454, 2457, 71, 71, 2453, 71, 2452, 71, 2458, - 71, 2449, 2450, 2462, 71, 2459, 71, 2463, 71, 2456, - 2465, 71, 2461, 71, 2460, 71, 71, 71, 71, 2470, - 71, 2472, 71, 71, 71, 2468, 2466, 2469, 2467, 2473, + 71, 71, 2424, 71, 2430, 2431, 71, 71, 2421, 2420, + 2434, 71, 2423, 2422, 2425, 71, 2433, 2428, 2427, 2429, + 2436, 71, 2432, 71, 2435, 71, 71, 71, 71, 71, + 71, 71, 71, 2439, 2445, 71, 2446, 71, 2447, 71, + 71, 2437, 2440, 2438, 71, 71, 2441, 2442, 2443, 2444, + 2450, 71, 71, 71, 71, 2449, 2451, 2448, 2454, 71, + 71, 2455, 2456, 71, 71, 2452, 2457, 2458, 71, 2460, + 71, 71, 2453, 2459, 71, 71, 71, 71, 71, 71, + 2464, 71, 71, 2462, 2468, 2469, 71, 2472, 71, 2461, + 71, 71, 2470, 71, 2463, 71, 2465, 2466, 71, 2467, - 2464, 71, 2471, 71, 71, 71, 2474, 2475, 2476, 71, - 71, 71, 2477, 71, 71, 71, 71, 3048, 2479, 2480, - 2482, 2483, 2485, 71, 2478, 2481, 2486, 71, 2484, 71, - 71, 71, 2489, 2491, 3048, 2488, 2487, 71, 71, 71, - 71, 2493, 2492, 71, 2496, 71, 2497, 71, 2495, 2490, - 71, 2499, 71, 2494, 71, 2501, 71, 2500, 71, 71, - 2502, 71, 71, 2498, 2503, 2505, 71, 2504, 71, 71, - 2506, 71, 71, 2507, 71, 2512, 2521, 2511, 2508, 2513, - 71, 71, 2510, 71, 71, 71, 71, 2509, 2514, 2516, - 71, 71, 2515, 2517, 71, 71, 2519, 71, 2518, 2520, + 2471, 2473, 2475, 71, 2478, 71, 2474, 2477, 2476, 71, + 71, 2482, 71, 71, 71, 2480, 71, 2486, 71, 71, + 2485, 71, 2479, 2484, 71, 2483, 2488, 71, 71, 2489, + 2481, 71, 71, 2492, 2493, 71, 71, 2490, 2487, 71, + 2494, 2496, 71, 71, 71, 71, 71, 2491, 71, 2497, + 2501, 71, 71, 2499, 2495, 2500, 2498, 2503, 71, 71, + 2502, 71, 2506, 71, 2504, 71, 2505, 71, 2507, 71, + 71, 2509, 71, 2508, 71, 71, 2510, 2511, 71, 2513, + 2514, 2516, 71, 2517, 71, 2512, 71, 2515, 71, 71, + 71, 2522, 71, 2518, 2519, 2523, 2520, 71, 71, 2524, - 71, 71, 2525, 71, 71, 71, 2523, 71, 2522, 2524, - 2530, 71, 2526, 71, 71, 71, 2534, 71, 71, 71, - 71, 2539, 71, 2527, 2532, 2528, 2529, 71, 71, 2533, - 2541, 2538, 2531, 2542, 2536, 2543, 71, 2535, 71, 71, - 2537, 71, 2544, 71, 71, 71, 2545, 71, 71, 2546, - 71, 71, 2549, 2540, 2547, 71, 2552, 2553, 71, 71, - 2548, 2554, 71, 2556, 2550, 71, 2551, 2555, 71, 71, - 2557, 2558, 71, 71, 71, 2562, 71, 71, 2560, 71, - 2563, 71, 71, 2565, 2566, 71, 2561, 2567, 71, 2559, - 71, 71, 2569, 2568, 71, 2570, 2564, 2572, 71, 71, + 71, 2527, 71, 2528, 71, 2526, 2521, 2525, 71, 2530, + 71, 71, 2532, 71, 2531, 71, 2536, 2533, 71, 71, + 2534, 2529, 71, 71, 2535, 71, 71, 2537, 2540, 71, + 2538, 71, 2543, 2544, 71, 2539, 71, 2541, 71, 71, + 71, 2545, 71, 71, 71, 2547, 2546, 2548, 2550, 71, + 71, 71, 2542, 71, 2549, 2551, 71, 71, 2556, 71, + 71, 71, 2554, 71, 2553, 2555, 71, 2552, 2557, 2561, + 71, 71, 71, 2565, 71, 71, 71, 71, 71, 2558, + 2563, 2559, 2560, 71, 71, 2562, 2572, 2564, 2569, 2570, + 71, 2567, 71, 2573, 2566, 2574, 2579, 2568, 71, 71, - 2573, 2574, 71, 2576, 71, 71, 71, 71, 2580, 2575, - 71, 2571, 2581, 71, 71, 71, 71, 2583, 2577, 2582, - 71, 2579, 2584, 71, 2578, 71, 2589, 71, 2592, 71, - 71, 2588, 71, 2585, 2591, 71, 2586, 71, 71, 71, - 2587, 2595, 2593, 2594, 71, 71, 71, 2597, 71, 71, - 3048, 2600, 2590, 71, 2604, 71, 71, 71, 71, 71, - 2606, 71, 2598, 2599, 2596, 71, 2601, 2603, 2607, 2602, - 2605, 2611, 2608, 2610, 2614, 71, 2612, 71, 2609, 71, - 2613, 71, 2615, 71, 2616, 71, 2617, 71, 2618, 71, - 71, 71, 71, 71, 2620, 2619, 71, 2626, 71, 71, + 71, 71, 71, 2571, 2575, 71, 2576, 2577, 2580, 2578, + 71, 71, 71, 2581, 71, 2582, 71, 71, 2585, 2586, + 71, 2587, 71, 2588, 71, 71, 2583, 71, 71, 2589, + 71, 2584, 2590, 2591, 71, 2593, 2595, 71, 71, 71, + 2598, 2596, 71, 2599, 71, 2600, 71, 71, 2592, 2594, + 2601, 71, 71, 71, 2605, 71, 71, 2606, 2597, 2607, + 71, 71, 2609, 71, 2602, 71, 71, 71, 2613, 71, + 2603, 2614, 71, 2604, 71, 71, 2608, 2616, 2610, 2615, + 71, 2612, 2617, 71, 2611, 71, 71, 71, 2622, 2625, + 71, 71, 2618, 2621, 71, 2624, 71, 71, 71, 71, - 71, 2623, 2627, 2629, 71, 71, 2631, 71, 71, 71, - 2621, 3048, 2630, 2624, 2632, 71, 2625, 2622, 2628, 2633, - 71, 71, 71, 71, 2634, 71, 2637, 2638, 71, 2639, - 2635, 2636, 2640, 71, 2642, 71, 71, 71, 71, 2643, - 71, 71, 2646, 71, 2645, 2647, 71, 71, 2641, 2644, - 2648, 71, 2649, 71, 71, 71, 2652, 71, 71, 71, - 3048, 2651, 2657, 71, 2655, 2653, 2650, 71, 71, 71, - 2658, 2699, 2660, 71, 2661, 71, 2662, 2656, 71, 2654, - 2659, 71, 2663, 2664, 71, 2665, 2667, 71, 2666, 2668, - 71, 2669, 71, 71, 71, 71, 71, 2674, 71, 71, + 2619, 2626, 2628, 71, 71, 2620, 2627, 2630, 71, 71, + 71, 2623, 71, 2633, 2637, 71, 71, 71, 71, 71, + 2631, 2632, 2629, 71, 2653, 71, 2636, 2634, 2639, 71, + 2635, 2638, 2641, 2644, 71, 2642, 2640, 2643, 2645, 71, + 2647, 71, 2646, 71, 2648, 71, 2649, 71, 2650, 71, + 2651, 71, 71, 71, 2654, 71, 71, 2659, 71, 71, + 71, 71, 2656, 2660, 2662, 71, 71, 2652, 2663, 2664, + 71, 2665, 2666, 71, 71, 2657, 2658, 2661, 2655, 71, + 71, 71, 71, 2667, 2671, 71, 2672, 71, 2668, 2669, + 71, 71, 71, 71, 71, 2677, 2673, 2682, 71, 2670, - 2673, 2671, 2670, 71, 2675, 71, 2677, 71, 71, 2682, - 2676, 71, 71, 2672, 2678, 71, 2680, 2684, 71, 2679, - 71, 71, 71, 71, 2685, 71, 2681, 2686, 2687, 71, - 2688, 71, 2692, 71, 71, 71, 71, 2683, 71, 71, - 2689, 71, 2695, 71, 71, 2691, 2690, 2693, 2694, 2700, - 2696, 71, 2697, 2702, 71, 2704, 71, 71, 2698, 2705, - 71, 2707, 71, 71, 71, 71, 71, 2712, 71, 2701, - 2703, 2711, 71, 71, 71, 71, 2716, 71, 2706, 2708, - 2709, 2710, 2718, 71, 71, 71, 71, 71, 2720, 71, - 2721, 2717, 2713, 2715, 71, 71, 2714, 2723, 71, 2724, + 2678, 71, 2675, 2680, 71, 71, 2679, 2676, 71, 2674, + 2681, 2683, 71, 71, 71, 71, 71, 71, 2684, 71, + 71, 71, 2692, 2687, 71, 71, 2690, 2688, 71, 2695, + 2696, 2686, 2693, 2685, 71, 2697, 71, 71, 71, 2691, + 71, 2689, 2694, 2699, 3093, 2698, 71, 2700, 2702, 71, + 2701, 2703, 71, 2704, 71, 71, 71, 2706, 71, 2707, + 2709, 2708, 71, 2710, 2705, 71, 71, 2711, 2712, 71, + 71, 71, 71, 2717, 71, 71, 2715, 2719, 71, 71, + 71, 71, 71, 2713, 2720, 71, 2721, 2722, 71, 2723, + 2716, 2714, 71, 71, 2724, 2727, 71, 71, 71, 2718, - 71, 2726, 71, 71, 2719, 2731, 2728, 2725, 2722, 2730, - 71, 71, 2729, 71, 71, 2735, 71, 71, 71, 2737, - 2736, 2727, 71, 71, 2740, 2733, 2741, 71, 71, 2732, - 71, 2742, 2743, 71, 2734, 2738, 71, 71, 71, 71, - 2748, 2745, 2739, 71, 2746, 71, 71, 2751, 71, 71, - 71, 2744, 71, 2756, 71, 71, 2747, 2752, 71, 71, - 2749, 2750, 2759, 71, 3048, 2755, 71, 2753, 2758, 2760, - 71, 2761, 2762, 71, 2757, 2754, 2764, 71, 2763, 2765, - 71, 2766, 71, 71, 2768, 71, 71, 71, 2767, 71, - 71, 71, 2773, 2774, 71, 71, 71, 71, 2778, 71, + 2725, 71, 2730, 71, 71, 71, 2728, 71, 71, 71, + 2729, 71, 2726, 2731, 2735, 2734, 71, 2732, 2737, 71, + 2739, 71, 2733, 2740, 71, 2742, 71, 2738, 71, 71, + 71, 2736, 2741, 71, 2747, 71, 2748, 2750, 2746, 71, + 71, 71, 71, 71, 2743, 2744, 2745, 71, 2749, 71, + 2753, 2755, 71, 2757, 71, 71, 2754, 71, 71, 71, + 2752, 71, 2758, 2751, 2760, 71, 71, 2756, 2761, 71, + 2763, 71, 2765, 71, 2768, 2762, 2759, 71, 2767, 71, + 71, 71, 2766, 2772, 71, 2769, 71, 2774, 71, 2770, + 2764, 2773, 71, 2775, 2777, 2778, 71, 2780, 71, 2771, - 71, 2779, 71, 71, 3048, 2769, 2777, 71, 2782, 2770, - 2775, 2771, 2772, 2783, 71, 2776, 2784, 71, 71, 71, - 2780, 2781, 2787, 2785, 71, 71, 71, 71, 71, 2790, - 71, 71, 2791, 2786, 2789, 71, 2788, 71, 71, 71, - 2794, 71, 71, 71, 2796, 2792, 71, 2797, 71, 2795, - 71, 2793, 71, 71, 71, 71, 71, 2813, 71, 2806, - 2798, 2807, 2799, 2800, 2801, 2809, 2802, 71, 2808, 2803, - 2804, 71, 2810, 71, 2805, 2811, 2814, 71, 71, 2816, - 71, 71, 2815, 2817, 71, 2824, 2812, 2818, 2819, 71, - 71, 2820, 2821, 71, 71, 2822, 2823, 71, 71, 2825, + 71, 2779, 71, 71, 71, 71, 71, 2785, 71, 2782, + 2783, 71, 2776, 71, 2788, 71, 71, 71, 71, 71, + 2781, 2793, 71, 3093, 71, 2784, 2790, 71, 2786, 2787, + 2789, 71, 2792, 2795, 2796, 71, 2794, 2797, 71, 71, + 71, 2791, 71, 71, 2798, 2799, 2806, 2800, 2801, 71, + 2802, 71, 2803, 71, 71, 2805, 71, 71, 71, 2804, + 71, 2810, 2807, 2811, 71, 2808, 71, 71, 71, 71, + 2817, 71, 71, 71, 2818, 71, 2926, 71, 2816, 2809, + 71, 2814, 2821, 71, 2812, 2813, 2822, 71, 2815, 2823, + 71, 71, 2819, 2826, 2820, 71, 2824, 2825, 71, 71, - 71, 71, 71, 71, 2831, 71, 71, 2826, 2830, 71, - 2834, 2827, 2848, 2828, 71, 71, 2833, 71, 71, 71, - 71, 2829, 71, 2835, 71, 2839, 71, 2832, 2838, 2869, - 2836, 2840, 71, 2841, 71, 2837, 71, 2842, 71, 2846, - 71, 2843, 71, 71, 2847, 71, 71, 2844, 2852, 71, - 2845, 2849, 2855, 71, 2853, 2850, 2856, 71, 71, 2858, - 71, 2904, 71, 2851, 2857, 2854, 2859, 71, 71, 2861, - 71, 2862, 71, 2860, 2863, 71, 2864, 71, 2865, 71, - 2866, 71, 2867, 71, 2868, 71, 2870, 71, 71, 71, - 71, 71, 71, 2875, 71, 71, 71, 2871, 71, 2879, + 2829, 71, 71, 71, 71, 71, 2828, 2827, 2830, 71, + 2833, 71, 71, 71, 71, 71, 71, 2835, 71, 3093, + 2836, 2834, 2831, 71, 2832, 71, 71, 71, 71, 71, + 71, 2845, 2837, 2846, 2838, 2839, 2840, 2844, 2848, 2841, + 71, 71, 2842, 2843, 71, 2849, 71, 2847, 2867, 2850, + 2852, 71, 2853, 71, 2851, 71, 2855, 71, 2915, 2854, + 2856, 71, 2857, 2858, 71, 71, 2859, 2860, 2863, 71, + 2861, 2862, 71, 71, 71, 2866, 71, 2864, 71, 71, + 71, 71, 71, 2865, 2872, 71, 2871, 71, 71, 71, + 71, 71, 2868, 2875, 2874, 71, 71, 2876, 2954, 2869, - 71, 2872, 71, 2881, 71, 71, 2876, 71, 2877, 2888, - 2873, 2874, 2878, 71, 2882, 71, 2883, 2880, 71, 2885, - 71, 71, 71, 2887, 71, 2886, 71, 2890, 71, 71, - 71, 2884, 71, 71, 2894, 2889, 2897, 71, 71, 2895, - 2899, 71, 71, 2891, 2892, 2893, 71, 2896, 2900, 71, - 2898, 2901, 71, 71, 71, 2903, 71, 71, 71, 71, - 2912, 2902, 2905, 2909, 71, 71, 2910, 2906, 2908, 71, - 71, 2911, 71, 71, 71, 71, 71, 2907, 2913, 71, - 71, 71, 71, 71, 2919, 71, 2916, 2923, 2914, 2918, - 2915, 2920, 2926, 71, 2927, 2924, 71, 2921, 2917, 71, + 2870, 71, 2880, 71, 2879, 2877, 71, 2873, 71, 2878, + 2881, 71, 2882, 71, 71, 71, 2887, 2885, 2883, 2884, + 2886, 2888, 71, 2889, 71, 71, 3093, 71, 71, 71, + 2891, 2890, 2893, 2894, 2896, 71, 2897, 71, 2899, 71, + 2900, 71, 71, 2898, 2895, 2892, 71, 2902, 71, 2903, + 71, 2901, 2904, 71, 2905, 71, 2906, 71, 2907, 71, + 2908, 71, 2909, 71, 2910, 71, 71, 71, 2913, 71, + 71, 71, 2918, 71, 71, 71, 2912, 71, 71, 2914, + 71, 71, 71, 2922, 2924, 71, 71, 71, 2928, 2921, + 2919, 2916, 2911, 2917, 2920, 2923, 2925, 71, 71, 2931, - 2922, 2928, 71, 2925, 71, 2929, 2930, 71, 2931, 71, - 71, 71, 71, 2934, 71, 2932, 2935, 2936, 71, 2933, - 2939, 71, 71, 71, 71, 71, 71, 71, 2942, 2944, - 71, 2947, 71, 2938, 2941, 2940, 71, 71, 71, 2937, - 2945, 2950, 71, 2954, 2943, 71, 2946, 71, 2951, 71, - 2955, 2948, 71, 2952, 71, 2949, 71, 2953, 71, 71, - 2960, 71, 2961, 71, 2959, 71, 2956, 2957, 71, 71, - 71, 71, 71, 71, 2965, 71, 71, 2958, 2967, 71, - 2974, 71, 71, 2964, 71, 2969, 2962, 2972, 2963, 2970, - 71, 2966, 71, 71, 2968, 2973, 2978, 71, 2971, 71, + 71, 2930, 71, 71, 71, 71, 71, 2933, 71, 3093, + 71, 71, 2927, 71, 2932, 2929, 2937, 2938, 2940, 71, + 2936, 71, 2934, 71, 2935, 71, 2939, 2948, 2941, 2943, + 71, 71, 2942, 2944, 71, 2945, 71, 71, 71, 71, + 2947, 71, 71, 71, 2946, 71, 2953, 71, 2956, 71, + 71, 71, 2950, 2952, 71, 71, 71, 2949, 2955, 71, + 71, 71, 2951, 2957, 2958, 2966, 71, 2959, 2963, 71, + 2960, 2962, 2964, 71, 2968, 2967, 2961, 71, 2971, 71, + 71, 71, 2965, 2973, 71, 71, 2974, 2969, 71, 2972, + 2975, 71, 2976, 71, 71, 71, 71, 2970, 2979, 2980, - 71, 2980, 71, 2981, 2975, 2979, 71, 71, 71, 71, - 2976, 2982, 2977, 2983, 2984, 2986, 2987, 71, 2985, 71, - 71, 71, 2989, 71, 2988, 71, 71, 71, 71, 2990, - 2995, 71, 71, 2992, 71, 2998, 71, 2999, 71, 2991, - 71, 71, 71, 71, 71, 2997, 2993, 2994, 3002, 3000, - 2996, 71, 3001, 71, 3006, 71, 3007, 3005, 71, 71, - 3003, 3004, 71, 3010, 71, 3012, 71, 3013, 3008, 71, - 71, 71, 3017, 71, 3014, 71, 71, 3015, 3011, 71, - 3018, 3019, 3020, 71, 3009, 71, 71, 71, 71, 71, - 3016, 71, 3021, 3022, 3024, 3023, 3026, 71, 71, 71, + 2977, 2981, 71, 71, 2984, 71, 71, 71, 2978, 71, + 71, 2987, 71, 2989, 71, 71, 2992, 71, 2983, 2985, + 71, 2986, 2990, 71, 2995, 71, 71, 2982, 71, 2996, + 71, 2999, 2988, 3000, 2991, 2993, 71, 71, 2997, 71, + 71, 2994, 71, 71, 71, 2998, 3005, 71, 3004, 71, + 3001, 3006, 71, 3002, 71, 71, 71, 71, 71, 3010, + 71, 3003, 3012, 71, 71, 3007, 71, 71, 3009, 3008, + 71, 71, 3017, 3014, 71, 3018, 3011, 3013, 71, 3015, + 3019, 71, 3016, 3024, 3020, 3023, 71, 71, 3025, 3021, + 71, 3026, 3027, 3022, 71, 71, 71, 71, 3031, 71, - 71, 71, 3032, 3028, 3029, 71, 3025, 3027, 3033, 71, - 3030, 71, 71, 3036, 3037, 71, 71, 3039, 71, 3031, - 3040, 71, 71, 3038, 3034, 71, 71, 71, 71, 3041, - 3035, 3042, 3043, 3046, 71, 3047, 71, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3044, 3048, 3048, 3045, 43, 43, - 43, 43, 43, 43, 43, 48, 48, 48, 48, 48, - 48, 48, 53, 53, 53, 53, 53, 53, 53, 59, - 59, 59, 59, 59, 59, 59, 64, 64, 64, 64, - 64, 64, 64, 74, 74, 3048, 74, 74, 74, 74, - 141, 141, 3048, 3048, 3048, 141, 141, 143, 143, 3048, + 3028, 3029, 3032, 71, 71, 71, 3034, 71, 71, 71, + 3033, 71, 3035, 71, 71, 3040, 3030, 71, 3036, 71, + 3037, 71, 71, 3043, 3044, 71, 3045, 71, 3038, 3046, + 3039, 71, 3042, 3041, 71, 71, 3047, 71, 3051, 71, + 71, 71, 71, 3055, 3052, 71, 3048, 3093, 3050, 71, + 3057, 71, 3058, 3049, 3053, 71, 71, 71, 3062, 71, + 3059, 3093, 71, 3060, 3056, 71, 3054, 3063, 71, 71, + 3064, 3065, 71, 71, 71, 71, 3061, 71, 3071, 71, + 3066, 3067, 3069, 71, 3068, 71, 71, 71, 3070, 71, + 3073, 3074, 71, 3077, 3072, 3078, 71, 71, 71, 3081, - 3048, 143, 3048, 143, 145, 3048, 3048, 3048, 3048, 3048, - 145, 148, 148, 3048, 3048, 3048, 148, 148, 150, 3048, - 3048, 3048, 3048, 3048, 150, 152, 152, 3048, 152, 152, - 152, 152, 75, 75, 3048, 75, 75, 75, 75, 13, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048 + 3082, 71, 3075, 71, 3084, 71, 3076, 71, 3079, 71, + 3083, 3085, 71, 71, 3086, 71, 3080, 71, 3087, 3093, + 3088, 3091, 71, 3092, 71, 3093, 3093, 3093, 3089, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3090, 43, 43, 43, + 43, 43, 43, 43, 48, 48, 48, 48, 48, 48, + 48, 53, 53, 53, 53, 53, 53, 53, 59, 59, + 59, 59, 59, 59, 59, 64, 64, 64, 64, 64, + 64, 64, 74, 74, 3093, 74, 74, 74, 74, 142, + 142, 3093, 3093, 3093, 142, 142, 144, 144, 3093, 3093, + 144, 3093, 144, 146, 3093, 3093, 3093, 3093, 3093, 146, + + 149, 149, 3093, 3093, 3093, 149, 149, 151, 3093, 3093, + 3093, 3093, 3093, 151, 153, 153, 3093, 153, 153, 153, + 153, 75, 75, 3093, 75, 75, 75, 75, 13, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; -static const flex_int16_t yy_chk[5981] = +static const flex_int16_t yy_chk[6070] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2095,655 +2121,665 @@ static const flex_int16_t yy_chk[5981] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3054, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3099, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1005, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 23, 23, 21, 21, 24, 12, 21, 84, 23, 24, + 34, 21, 23, 24, 12, 23, 24, 1016, 24, 24, + 21, 26, 26, 27, 27, 84, 28, 36, 32, 32, + 28, 34, 27, 28, 33, 33, 26, 32, 42, 33, + 28, 36, 28, 32, 37, 37, 127, 32, 52, 37, + 69, 52, 127, 42, 123, 33, 35, 35, 38, 37, + 37, 35, 37, 38, 69, 35, 38, 39, 39, 81, + 39, 35, 40, 38, 35, 80, 40, 38, 38, 39, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 123, 35, 151, 41, 41, 39, 40, 80, 41, 81, + 40, 40, 41, 58, 77, 58, 58, 77, 58, 63, + 63, 66, 86, 66, 66, 68, 66, 68, 68, 71, + 68, 71, 71, 66, 71, 72, 86, 88, 78, 72, + 71, 74, 78, 74, 74, 82, 74, 83, 82, 85, + 83, 89, 74, 74, 87, 88, 88, 90, 85, 91, + 87, 92, 93, 83, 102, 91, 87, 95, 87, 94, + 97, 96, 98, 89, 97, 92, 90, 98, 91, 99, + 94, 94, 93, 102, 100, 95, 101, 100, 94, 96, + 100, 103, 101, 99, 104, 105, 103, 104, 106, 149, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 108, 104, 107, 100, 100, 109, 107, 108, 110, 111, + 112, 101, 106, 114, 105, 110, 103, 104, 109, 105, + 113, 115, 111, 116, 113, 115, 118, 117, 119, 119, + 112, 114, 117, 120, 122, 121, 117, 124, 126, 121, + 128, 116, 129, 129, 125, 131, 118, 125, 121, 122, + 130, 126, 128, 120, 121, 132, 124, 130, 125, 133, + 129, 131, 125, 129, 135, 134, 135, 136, 130, 141, + 138, 137, 139, 140, 132, 135, 137, 161, 140, 136, + 133, 134, 138, 141, 143, 143, 145, 135, 161, 145, + 139, 147, 155, 147, 147, 155, 147, 150, 150, 152, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 192, 190, 191, 187, - 188, 185, 190, 184, 185, 194, 194, 180, 200, 186, - 189, 189, 192, 193, 189, 195, 189, 196, 191, 193, + 158, 152, 152, 153, 152, 153, 153, 156, 153, 159, + 157, 160, 156, 162, 163, 153, 157, 164, 158, 160, + 166, 162, 165, 168, 159, 157, 160, 165, 167, 168, + 168, 169, 164, 163, 170, 171, 171, 167, 172, 170, + 166, 173, 176, 173, 172, 174, 173, 175, 175, 174, + 177, 180, 178, 148, 174, 177, 169, 178, 179, 174, + 182, 176, 181, 173, 182, 174, 174, 183, 181, 184, + 179, 180, 183, 185, 186, 187, 188, 189, 238, 191, + 193, 188, 189, 184, 191, 192, 186, 201, 185, 186, + 218, 181, 238, 187, 190, 190, 193, 194, 190, 198, - 197, 195, 206, 196, 210, 198, 199, 195, 189, 200, - 189, 198, 199, 201, 208, 206, 145, 202, 203, 201, - 197, 199, 202, 204, 203, 205, 210, 207, 212, 204, - 209, 211, 205, 207, 208, 213, 209, 214, 215, 211, - 213, 212, 216, 217, 218, 222, 214, 219, 220, 218, - 218, 221, 219, 215, 223, 221, 224, 226, 216, 225, - 223, 229, 233, 217, 227, 225, 220, 222, 228, 227, - 228, 230, 235, 231, 224, 224, 232, 226, 230, 231, - 229, 233, 232, 234, 235, 236, 237, 237, 239, 234, - 238, 238, 240, 242, 239, 241, 243, 241, 240, 236, + 190, 195, 195, 194, 196, 192, 218, 197, 201, 199, + 196, 200, 190, 197, 190, 199, 196, 200, 202, 198, + 203, 204, 205, 206, 202, 203, 200, 204, 205, 207, + 206, 208, 209, 210, 211, 207, 212, 213, 209, 214, + 211, 215, 216, 219, 208, 213, 215, 217, 222, 220, + 224, 216, 214, 210, 220, 220, 221, 226, 212, 225, + 223, 221, 217, 219, 223, 225, 222, 227, 228, 229, + 231, 232, 224, 227, 229, 226, 226, 230, 232, 230, + 233, 234, 235, 237, 236, 244, 233, 234, 228, 231, + 236, 239, 239, 240, 240, 237, 241, 242, 243, 245, - 245, 243, 246, 244, 247, 249, 248, 250, 143, 260, - 246, 248, 239, 250, 241, 244, 242, 251, 256, 245, - 252, 253, 255, 251, 247, 252, 253, 254, 249, 257, - 258, 259, 256, 254, 260, 261, 263, 255, 263, 259, - 262, 261, 266, 262, 258, 264, 264, 257, 265, 267, - 267, 265, 268, 268, 269, 271, 270, 272, 271, 273, - 266, 272, 275, 274, 283, 277, 276, 277, 273, 274, - 269, 270, 276, 278, 279, 284, 275, 281, 279, 278, - 280, 280, 281, 282, 283, 285, 286, 287, 287, 282, - 289, 288, 290, 284, 288, 279, 290, 291, 296, 286, + 243, 235, 241, 242, 245, 247, 246, 248, 244, 249, + 251, 250, 146, 252, 262, 248, 250, 243, 246, 252, + 241, 253, 257, 254, 247, 255, 256, 253, 254, 249, + 255, 258, 256, 251, 259, 260, 261, 257, 264, 262, + 263, 264, 266, 266, 261, 258, 263, 268, 265, 260, + 265, 267, 259, 271, 267, 269, 269, 270, 270, 272, + 273, 275, 274, 273, 277, 268, 274, 276, 281, 271, + 275, 278, 281, 276, 272, 283, 280, 278, 277, 279, + 283, 279, 280, 282, 282, 284, 285, 286, 287, 281, + 288, 284, 289, 289, 290, 291, 292, 290, 293, 144, - 292, 293, 293, 294, 295, 297, 285, 295, 289, 298, - 296, 297, 298, 299, 301, 302, 291, 303, 292, 315, - 315, 294, 303, 301, 295, 299, 300, 304, 305, 306, - 304, 305, 304, 302, 309, 300, 141, 307, 300, 309, - 309, 311, 306, 300, 300, 300, 300, 312, 304, 307, - 308, 310, 308, 308, 310, 313, 314, 318, 311, 317, - 317, 311, 312, 316, 313, 314, 319, 320, 316, 321, - 322, 319, 318, 327, 323, 324, 336, 336, 329, 320, - 70, 324, 325, 325, 329, 325, 328, 330, 321, 323, - 322, 328, 330, 327, 325, 331, 332, 333, 335, 332, + 292, 294, 296, 288, 298, 286, 285, 295, 295, 287, + 301, 297, 299, 291, 297, 304, 298, 293, 299, 294, + 296, 300, 301, 305, 300, 303, 307, 309, 305, 307, + 308, 297, 302, 304, 303, 306, 318, 318, 306, 309, + 306, 302, 142, 308, 302, 310, 313, 310, 310, 302, + 302, 302, 302, 311, 312, 314, 306, 312, 311, 311, + 315, 321, 316, 313, 317, 324, 313, 319, 320, 320, + 314, 316, 319, 317, 322, 323, 321, 315, 315, 322, + 325, 326, 327, 330, 324, 338, 331, 323, 327, 328, + 328, 331, 328, 332, 338, 70, 326, 333, 336, 332, - 331, 332, 334, 337, 342, 334, 331, 335, 346, 337, - 339, 333, 338, 338, 343, 339, 340, 344, 334, 340, - 349, 334, 346, 334, 342, 340, 568, 345, 348, 340, - 351, 348, 344, 568, 349, 343, 356, 340, 341, 341, - 352, 341, 345, 357, 354, 351, 353, 348, 355, 352, - 354, 353, 353, 361, 341, 356, 359, 341, 357, 341, - 360, 341, 350, 358, 350, 350, 360, 362, 363, 355, - 365, 366, 358, 368, 350, 359, 350, 350, 350, 361, - 364, 350, 363, 367, 369, 370, 364, 362, 368, 369, - 364, 366, 371, 365, 372, 372, 373, 374, 371, 375, + 325, 328, 333, 330, 334, 335, 339, 339, 335, 334, + 335, 337, 336, 340, 337, 334, 341, 341, 342, 340, + 345, 346, 343, 342, 347, 343, 348, 337, 358, 64, + 337, 343, 337, 351, 349, 343, 351, 352, 354, 347, + 345, 348, 346, 343, 344, 344, 355, 344, 349, 358, + 359, 352, 351, 354, 362, 355, 356, 360, 357, 433, + 344, 356, 356, 344, 357, 344, 361, 344, 353, 359, + 353, 353, 360, 362, 364, 361, 365, 366, 368, 363, + 353, 433, 353, 353, 353, 363, 369, 353, 367, 370, + 371, 366, 372, 373, 367, 376, 365, 372, 367, 377, - 370, 376, 377, 367, 378, 379, 381, 376, 382, 374, - 379, 380, 380, 375, 380, 383, 373, 385, 384, 385, - 378, 386, 388, 388, 382, 386, 381, 377, 389, 387, - 390, 383, 384, 387, 391, 392, 396, 385, 393, 397, - 394, 396, 395, 397, 400, 390, 398, 389, 387, 394, - 391, 395, 393, 392, 405, 398, 403, 399, 401, 403, - 394, 64, 394, 399, 401, 400, 402, 404, 406, 406, - 402, 407, 404, 409, 405, 408, 408, 410, 409, 411, - 411, 412, 413, 414, 407, 415, 413, 412, 416, 417, - 410, 418, 418, 416, 417, 419, 420, 421, 414, 422, + 364, 368, 375, 375, 374, 371, 369, 378, 373, 370, + 374, 377, 379, 380, 381, 376, 384, 382, 379, 385, + 387, 378, 382, 383, 383, 386, 383, 388, 389, 388, + 381, 392, 389, 390, 387, 385, 384, 390, 380, 391, + 391, 386, 393, 394, 395, 397, 396, 388, 399, 398, + 392, 400, 390, 399, 397, 400, 403, 393, 398, 394, + 396, 401, 395, 402, 405, 397, 404, 397, 405, 402, + 401, 406, 404, 407, 406, 408, 410, 403, 407, 409, + 409, 411, 411, 412, 413, 414, 414, 415, 412, 410, + 416, 417, 418, 415, 416, 408, 419, 413, 420, 421, - 418, 423, 425, 427, 423, 424, 415, 419, 427, 424, - 428, 422, 426, 426, 425, 421, 420, 429, 429, 430, - 432, 432, 433, 437, 434, 435, 436, 439, 440, 443, - 441, 428, 434, 442, 435, 437, 444, 446, 443, 442, - 452, 430, 444, 433, 441, 439, 436, 439, 440, 445, - 447, 446, 448, 449, 445, 448, 450, 451, 447, 453, - 452, 447, 453, 451, 454, 455, 458, 449, 456, 457, - 454, 450, 459, 456, 461, 460, 459, 462, 463, 455, - 460, 464, 462, 465, 468, 484, 484, 458, 454, 461, - 469, 457, 471, 470, 463, 473, 465, 470, 472, 473, + 421, 419, 422, 420, 423, 424, 417, 425, 421, 426, + 428, 427, 426, 418, 422, 427, 429, 429, 431, 425, + 430, 436, 428, 424, 423, 430, 432, 432, 435, 435, + 437, 438, 439, 442, 441, 446, 440, 444, 437, 431, + 438, 440, 436, 445, 447, 442, 449, 448, 451, 446, + 447, 457, 449, 439, 441, 444, 448, 444, 452, 450, + 454, 455, 451, 445, 450, 453, 452, 456, 453, 452, + 460, 457, 458, 456, 454, 458, 455, 459, 462, 466, + 461, 463, 464, 459, 460, 461, 464, 465, 467, 468, + 469, 470, 465, 467, 466, 473, 511, 474, 476, 475, - 464, 466, 466, 474, 468, 469, 477, 466, 474, 466, - 475, 471, 474, 476, 472, 466, 480, 466, 476, 478, - 466, 466, 477, 479, 482, 475, 483, 466, 478, 479, - 481, 485, 480, 481, 479, 486, 486, 487, 488, 489, - 490, 491, 493, 492, 59, 494, 483, 482, 492, 496, - 488, 493, 487, 495, 489, 496, 485, 498, 499, 490, - 501, 500, 499, 491, 494, 502, 498, 500, 495, 503, - 504, 505, 501, 506, 507, 509, 508, 509, 507, 510, - 502, 511, 511, 513, 504, 515, 505, 510, 503, 508, - 512, 506, 514, 517, 518, 513, 512, 515, 514, 516, + 462, 459, 463, 475, 470, 468, 477, 59, 481, 469, + 471, 471, 474, 481, 511, 473, 471, 476, 471, 478, + 480, 484, 477, 478, 471, 482, 471, 484, 479, 471, + 471, 483, 484, 479, 485, 480, 471, 479, 487, 486, + 483, 482, 486, 488, 489, 489, 490, 491, 491, 492, + 485, 494, 496, 493, 495, 497, 499, 500, 498, 54, + 497, 487, 501, 488, 492, 493, 494, 498, 501, 503, + 506, 490, 500, 495, 496, 499, 504, 505, 503, 507, + 504, 508, 506, 505, 509, 512, 510, 515, 53, 512, + 513, 514, 518, 514, 507, 515, 516, 516, 509, 517, - 519, 520, 516, 521, 520, 519, 533, 517, 522, 518, - 523, 533, 521, 524, 531, 523, 523, 525, 525, 521, - 526, 526, 521, 527, 522, 534, 524, 528, 528, 527, - 529, 529, 530, 532, 535, 531, 532, 536, 530, 538, - 536, 537, 535, 540, 534, 539, 537, 540, 541, 542, - 543, 544, 545, 542, 541, 546, 544, 548, 547, 550, - 54, 546, 538, 547, 539, 552, 549, 556, 543, 549, - 553, 548, 545, 557, 549, 551, 551, 550, 549, 554, - 555, 556, 560, 552, 554, 555, 553, 559, 557, 561, - 562, 560, 561, 559, 562, 563, 564, 565, 566, 564, + 508, 510, 519, 513, 518, 517, 520, 521, 519, 522, + 521, 523, 524, 525, 527, 526, 525, 524, 520, 529, + 530, 530, 528, 522, 526, 536, 523, 528, 528, 543, + 527, 526, 529, 532, 526, 531, 531, 533, 533, 532, + 534, 534, 535, 539, 537, 538, 536, 537, 535, 540, + 538, 541, 543, 542, 541, 544, 545, 540, 542, 546, + 545, 548, 539, 547, 549, 546, 550, 547, 552, 549, + 551, 553, 554, 552, 544, 554, 551, 555, 557, 548, + 554, 556, 556, 558, 554, 553, 550, 559, 560, 561, + 562, 564, 559, 560, 48, 555, 557, 564, 565, 558, - 563, 567, 565, 570, 569, 571, 572, 572, 570, 573, - 574, 575, 576, 584, 566, 53, 562, 569, 573, 567, - 577, 576, 578, 580, 579, 571, 580, 575, 578, 574, - 579, 584, 577, 581, 581, 582, 581, 583, 582, 585, - 586, 588, 583, 587, 594, 590, 586, 588, 587, 589, - 590, 591, 589, 585, 592, 593, 591, 591, 596, 595, - 597, 598, 599, 594, 594, 595, 598, 592, 593, 597, - 600, 600, 601, 602, 603, 604, 602, 596, 605, 601, - 603, 608, 599, 605, 606, 607, 607, 604, 610, 606, - 606, 602, 609, 611, 609, 611, 612, 613, 614, 615, + 571, 566, 567, 561, 566, 562, 567, 565, 568, 569, + 570, 572, 569, 568, 573, 570, 571, 574, 575, 576, + 580, 573, 578, 575, 577, 577, 579, 583, 567, 572, + 574, 578, 581, 583, 582, 585, 580, 584, 585, 576, + 589, 581, 592, 584, 43, 579, 582, 586, 586, 587, + 586, 588, 587, 590, 591, 594, 588, 593, 589, 591, + 594, 592, 595, 593, 601, 597, 596, 590, 595, 596, + 597, 598, 599, 600, 602, 603, 598, 598, 604, 606, + 602, 607, 607, 601, 601, 599, 600, 604, 605, 608, + 611, 610, 609, 605, 603, 609, 608, 610, 612, 606, - 616, 618, 617, 619, 620, 618, 608, 610, 617, 621, - 622, 623, 619, 624, 612, 613, 614, 625, 615, 620, - 616, 626, 627, 628, 621, 624, 629, 626, 622, 630, - 623, 632, 625, 631, 633, 628, 627, 631, 634, 635, - 636, 637, 638, 638, 640, 629, 642, 639, 630, 632, - 633, 639, 644, 641, 645, 637, 634, 635, 635, 636, - 642, 643, 646, 640, 641, 647, 643, 652, 644, 648, - 649, 650, 647, 645, 648, 646, 650, 649, 651, 653, - 654, 655, 656, 651, 657, 652, 653, 658, 661, 654, - 659, 656, 658, 659, 660, 655, 657, 662, 660, 663, + 613, 615, 611, 612, 617, 613, 613, 614, 614, 616, + 609, 616, 618, 619, 618, 620, 621, 622, 623, 624, + 625, 626, 627, 617, 625, 624, 615, 628, 629, 630, + 626, 619, 631, 620, 621, 632, 622, 627, 623, 633, + 634, 635, 628, 636, 631, 633, 629, 637, 630, 639, + 632, 638, 640, 635, 634, 638, 641, 642, 643, 644, + 645, 645, 636, 647, 649, 646, 637, 639, 640, 646, + 648, 651, 652, 644, 641, 642, 642, 643, 649, 650, + 653, 648, 647, 654, 650, 656, 659, 651, 661, 655, + 654, 652, 656, 653, 655, 657, 658, 661, 660, 662, - 665, 664, 661, 666, 666, 671, 662, 667, 667, 668, - 668, 669, 672, 673, 663, 664, 667, 675, 672, 674, - 669, 665, 676, 674, 671, 677, 678, 679, 681, 675, - 680, 682, 678, 673, 683, 679, 686, 680, 689, 692, - 48, 695, 694, 677, 693, 695, 681, 676, 692, 699, - 693, 686, 696, 696, 683, 689, 682, 684, 694, 697, - 697, 698, 684, 701, 700, 702, 684, 699, 704, 684, - 773, 702, 698, 704, 705, 706, 684, 684, 700, 684, - 707, 709, 709, 701, 703, 703, 703, 708, 703, 712, - 708, 703, 710, 706, 773, 705, 703, 711, 711, 710, + 657, 658, 663, 664, 659, 660, 666, 665, 668, 666, + 667, 663, 665, 662, 667, 664, 669, 670, 672, 671, + 673, 673, 668, 675, 675, 669, 674, 674, 676, 678, + 679, 680, 670, 671, 681, 674, 679, 676, 681, 672, + 682, 683, 684, 685, 688, 686, 689, 687, 678, 685, + 690, 680, 682, 686, 687, 699, 711, 696, 693, 700, + 684, 711, 688, 701, 699, 700, 683, 703, 703, 706, + 690, 689, 691, 693, 696, 705, 702, 691, 708, 701, + 702, 691, 704, 704, 691, 707, 705, 706, 712, 709, + 713, 691, 691, 726, 691, 709, 714, 14, 708, 707, - 713, 713, 703, 703, 712, 707, 714, 715, 716, 719, - 715, 714, 720, 716, 717, 717, 718, 722, 718, 721, - 723, 719, 724, 721, 725, 725, 726, 729, 727, 731, - 724, 720, 728, 728, 730, 733, 750, 722, 732, 723, - 733, 726, 727, 750, 732, 729, 730, 734, 734, 735, - 738, 731, 737, 739, 735, 735, 738, 737, 740, 739, - 741, 742, 743, 740, 742, 744, 741, 747, 743, 745, - 745, 746, 746, 744, 748, 747, 749, 751, 752, 752, - 753, 749, 754, 756, 758, 755, 759, 765, 761, 753, - 754, 755, 748, 758, 760, 759, 751, 761, 762, 760, + 710, 710, 710, 715, 710, 726, 715, 710, 713, 712, + 716, 716, 710, 717, 718, 718, 719, 727, 710, 710, + 717, 714, 720, 720, 721, 722, 728, 723, 722, 721, + 728, 719, 723, 724, 724, 725, 727, 725, 729, 731, + 730, 732, 732, 734, 736, 733, 738, 731, 735, 735, + 739, 737, 741, 741, 752, 752, 739, 734, 729, 730, + 733, 740, 736, 737, 742, 745, 740, 744, 738, 742, + 742, 745, 744, 746, 749, 747, 748, 749, 750, 746, + 747, 751, 748, 754, 750, 753, 753, 755, 756, 751, + 757, 754, 758, 756, 760, 759, 763, 757, 761, 761, - 763, 762, 756, 764, 766, 763, 767, 769, 769, 768, - 770, 771, 765, 766, 768, 768, 778, 764, 772, 767, - 774, 779, 776, 774, 776, 770, 779, 772, 777, 777, - 771, 774, 780, 785, 781, 782, 783, 778, 786, 784, - 787, 789, 785, 790, 787, 788, 793, 791, 43, 790, - 792, 795, 794, 780, 781, 782, 791, 795, 783, 784, - 789, 786, 792, 788, 796, 793, 794, 797, 798, 798, - 799, 800, 797, 801, 802, 803, 804, 805, 796, 806, - 800, 807, 802, 808, 810, 809, 811, 807, 812, 814, - 799, 809, 811, 801, 812, 803, 805, 808, 804, 806, + 762, 764, 765, 767, 763, 755, 768, 764, 770, 762, + 758, 759, 767, 760, 769, 768, 773, 770, 774, 769, + 771, 765, 772, 771, 775, 776, 777, 772, 778, 778, + 773, 777, 777, 775, 779, 780, 781, 782, 776, 783, + 786, 786, 783, 774, 785, 781, 785, 787, 788, 779, + 783, 789, 792, 788, 780, 790, 791, 793, 794, 795, + 796, 782, 797, 799, 796, 798, 801, 794, 787, 799, + 800, 802, 789, 803, 792, 790, 791, 793, 801, 800, + 797, 805, 795, 804, 798, 808, 806, 803, 809, 804, + 802, 806, 807, 807, 810, 805, 811, 809, 812, 813, - 815, 813, 816, 817, 810, 813, 822, 816, 814, 818, - 818, 819, 815, 820, 821, 823, 820, 819, 824, 822, - 815, 823, 825, 825, 817, 826, 827, 828, 828, 829, - 830, 827, 821, 832, 830, 831, 831, 833, 824, 835, - 834, 837, 838, 826, 829, 834, 840, 841, 843, 843, - 844, 847, 845, 879, 844, 832, 838, 833, 835, 846, - 846, 879, 849, 866, 866, 837, 840, 845, 841, 842, - 850, 848, 842, 852, 842, 848, 847, 849, 842, 854, - 842, 851, 856, 853, 850, 842, 851, 852, 853, 853, - 842, 855, 858, 854, 857, 855, 859, 856, 860, 857, + 814, 816, 815, 817, 811, 808, 818, 816, 819, 820, + 821, 823, 818, 824, 810, 820, 821, 817, 812, 814, + 822, 813, 815, 826, 822, 824, 825, 830, 819, 831, + 823, 825, 828, 824, 827, 827, 829, 832, 828, 829, + 833, 835, 831, 832, 826, 830, 834, 834, 836, 837, + 837, 838, 839, 836, 840, 840, 839, 841, 842, 835, + 833, 844, 843, 846, 849, 850, 838, 843, 847, 852, + 852, 853, 855, 855, 854, 853, 856, 857, 842, 841, + 844, 857, 847, 858, 849, 860, 850, 846, 851, 854, + 860, 851, 859, 851, 861, 875, 875, 851, 858, 851, - 861, 859, 862, 869, 858, 863, 871, 855, 864, 857, - 867, 863, 860, 865, 864, 867, 862, 868, 870, 865, - 873, 861, 874, 868, 871, 869, 875, 874, 878, 876, - 877, 877, 873, 878, 880, 881, 882, 870, 872, 872, - 875, 876, 883, 883, 872, 884, 872, 886, 880, 884, - 888, 892, 872, 886, 881, 882, 887, 872, 872, 887, - 889, 890, 894, 891, 872, 895, 896, 890, 891, 888, - 892, 894, 897, 889, 895, 898, 899, 901, 897, 902, - 900, 903, 896, 905, 898, 900, 904, 906, 907, 908, - 913, 911, 905, 902, 907, 899, 906, 901, 904, 909, + 863, 856, 865, 864, 851, 862, 859, 864, 861, 851, + 862, 862, 867, 866, 863, 868, 869, 865, 866, 864, + 868, 870, 871, 872, 867, 873, 874, 878, 866, 872, + 869, 873, 874, 876, 877, 879, 871, 880, 876, 882, + 877, 883, 870, 887, 884, 13, 883, 885, 887, 878, + 890, 882, 886, 886, 879, 880, 881, 881, 884, 885, + 888, 891, 881, 889, 881, 892, 892, 893, 888, 890, + 881, 893, 895, 897, 898, 881, 881, 889, 895, 899, + 891, 896, 881, 900, 896, 899, 901, 898, 900, 903, + 904, 905, 897, 907, 906, 908, 909, 910, 903, 904, - 914, 903, 915, 916, 913, 909, 908, 911, 917, 918, - 919, 920, 14, 923, 924, 919, 920, 916, 923, 926, - 914, 915, 927, 924, 918, 926, 917, 925, 925, 929, - 932, 930, 933, 932, 934, 927, 930, 930, 931, 931, - 935, 938, 931, 936, 937, 929, 933, 938, 939, 940, - 941, 946, 942, 943, 934, 940, 936, 942, 935, 937, - 945, 947, 949, 945, 948, 941, 947, 943, 939, 948, - 950, 951, 946, 952, 954, 950, 951, 955, 949, 960, - 954, 956, 957, 958, 958, 952, 959, 956, 957, 961, - 962, 962, 961, 955, 963, 959, 964, 960, 965, 966, + 906, 909, 907, 912, 911, 901, 914, 905, 913, 917, + 915, 922, 920, 923, 908, 914, 916, 910, 911, 915, + 913, 918, 916, 912, 924, 922, 917, 918, 920, 926, + 925, 927, 928, 923, 929, 932, 933, 928, 937, 929, + 932, 934, 934, 924, 925, 933, 927, 926, 935, 936, + 938, 940, 944, 937, 935, 941, 943, 945, 936, 943, + 941, 941, 946, 938, 942, 942, 944, 940, 942, 947, + 948, 950, 949, 951, 952, 957, 953, 945, 949, 951, + 946, 953, 947, 954, 956, 948, 960, 956, 958, 952, + 959, 950, 963, 958, 961, 959, 957, 954, 962, 961, - 967, 968, 966, 969, 976, 970, 971, 968, 975, 969, - 970, 971, 963, 967, 972, 964, 973, 977, 965, 972, - 978, 980, 973, 977, 976, 978, 975, 979, 979, 981, - 980, 982, 983, 984, 985, 983, 984, 986, 981, 987, - 988, 989, 990, 991, 994, 985, 995, 989, 990, 982, - 996, 987, 992, 993, 993, 986, 998, 992, 991, 988, - 995, 997, 996, 994, 999, 997, 1000, 1001, 1003, 1004, - 1004, 1008, 1006, 999, 998, 1007, 1009, 1011, 1011, 1010, - 1012, 1009, 1016, 1008, 1016, 1000, 1006, 1003, 1010, 1013, - 1007, 1014, 1001, 1015, 1017, 1013, 1018, 1014, 1015, 1017, + 965, 966, 960, 962, 963, 967, 965, 968, 969, 969, + 970, 967, 971, 968, 974, 972, 975, 966, 972, 970, + 973, 973, 976, 977, 978, 979, 977, 980, 986, 981, + 971, 979, 974, 980, 981, 975, 982, 978, 983, 984, + 987, 982, 976, 983, 988, 984, 986, 989, 990, 990, + 988, 993, 989, 991, 992, 994, 995, 996, 994, 995, + 987, 997, 991, 992, 998, 999, 1000, 1001, 996, 993, + 1002, 1005, 1000, 1001, 1006, 1003, 998, 1004, 1004, 997, + 1003, 1007, 1008, 1009, 999, 1002, 1008, 1010, 1006, 1011, + 1005, 1012, 1014, 1007, 1015, 1015, 1010, 1019, 1017, 1018, - 1012, 1019, 1020, 1021, 1022, 1023, 1024, 1020, 1025, 1030, - 1018, 1028, 1023, 1027, 1027, 1019, 1029, 1032, 1021, 1040, - 1031, 1024, 1040, 1022, 1030, 1028, 1031, 1025, 1033, 1035, - 1035, 1036, 1039, 1033, 1029, 1041, 1036, 1032, 1037, 1037, - 1042, 1038, 1033, 1043, 1033, 1044, 1039, 1033, 1038, 1045, - 1044, 1046, 1043, 1047, 1041, 1048, 1046, 1051, 1042, 1050, - 1050, 1052, 1051, 1053, 1047, 1054, 1052, 1055, 1045, 1056, - 1054, 1055, 1057, 1058, 1048, 1059, 1061, 1060, 1056, 1062, - 1063, 1064, 1065, 1053, 1066, 1069, 1062, 1057, 1058, 1060, - 1067, 1061, 1063, 1068, 1059, 1070, 1067, 1071, 1073, 1074, + 1020, 1009, 1022, 1022, 1021, 1020, 1023, 1051, 1011, 1019, + 1051, 1014, 1017, 1021, 1018, 1024, 1012, 1025, 1027, 1026, + 1027, 1024, 1028, 1025, 1026, 1029, 1023, 1028, 1030, 1031, + 1032, 1033, 1035, 1034, 1031, 1036, 1038, 1038, 1039, 1029, + 1034, 1040, 1030, 1041, 1043, 1032, 1044, 1035, 1047, 1042, + 1033, 1044, 1039, 1047, 1036, 1042, 1046, 1046, 1041, 1040, + 1044, 1049, 1044, 1050, 1043, 1044, 1048, 1048, 1049, 1052, + 1054, 1053, 1056, 1055, 1058, 1057, 1059, 1050, 1055, 1054, + 1057, 1061, 1061, 1064, 0, 1058, 1066, 1062, 1052, 1053, + 1066, 1056, 1062, 1063, 1065, 1059, 1067, 1068, 1063, 1065, - 1064, 1075, 1066, 1065, 1073, 1069, 1071, 1076, 1068, 1075, - 1078, 1077, 1079, 1074, 1080, 1070, 1077, 1079, 1079, 1082, - 1081, 1086, 1078, 1083, 1083, 1085, 13, 1076, 1088, 1088, - 1086, 1087, 1082, 1080, 1081, 1084, 1089, 1087, 1085, 1091, - 1084, 1089, 1090, 1084, 1084, 1091, 1095, 1092, 1084, 1098, - 1093, 1090, 1092, 1099, 1084, 1093, 1094, 1094, 1084, 1096, - 1096, 1097, 1101, 1100, 1097, 1102, 1097, 1095, 1104, 1098, - 1102, 1099, 1100, 1103, 1105, 1106, 1109, 1139, 1107, 1139, - 1105, 1106, 1101, 1107, 1108, 1109, 1104, 1103, 1108, 1116, - 1109, 1114, 1109, 1112, 1109, 1114, 1109, 1110, 1110, 1111, + 1069, 1070, 1071, 1064, 1072, 1067, 1073, 1075, 1076, 1074, + 1077, 1078, 1068, 1073, 1071, 1069, 1079, 1078, 1080, 1072, + 1070, 1074, 1081, 1082, 1084, 1085, 1075, 1086, 1077, 1076, + 1084, 1079, 1082, 1087, 1089, 1086, 1088, 1091, 1080, 1085, + 1092, 1088, 1081, 1090, 1093, 1818, 1089, 1096, 1090, 1090, + 1094, 1094, 1097, 1087, 1092, 1101, 1091, 1093, 1095, 1098, + 1096, 1097, 1818, 1095, 1101, 1098, 1095, 1095, 1099, 1099, + 1100, 1095, 1102, 1106, 1103, 1100, 1109, 1095, 1102, 1103, + 1104, 1095, 1105, 1105, 1110, 1104, 1107, 1107, 1108, 1111, + 1112, 1108, 1113, 1108, 1106, 1114, 1109, 1113, 1111, 1115, - 1111, 1115, 1111, 1117, 1112, 1118, 1119, 1116, 1120, 1121, - 1118, 1118, 1117, 1120, 1123, 1122, 1115, 1124, 1125, 1126, - 1127, 1127, 1128, 1121, 1122, 1126, 1129, 1131, 1119, 1130, - 1128, 1133, 1125, 1123, 1130, 1132, 1124, 1134, 1135, 1137, - 1129, 1131, 1143, 1135, 1132, 1136, 1136, 1138, 1138, 1133, - 1141, 1142, 1146, 1141, 1137, 1144, 1142, 1145, 1145, 1147, - 1147, 1143, 1134, 1149, 1144, 1148, 1148, 1150, 1149, 1151, - 1152, 1152, 1146, 1153, 1154, 1155, 1156, 1154, 1157, 1159, - 1158, 1156, 1158, 1161, 1162, 0, 1161, 1157, 1150, 1163, - 1151, 1164, 1165, 1153, 1163, 1155, 1164, 1159, 1166, 1162, + 1116, 1117, 1110, 1118, 1120, 1125, 1116, 1117, 1118, 1114, + 1112, 1119, 1122, 1120, 1121, 1119, 1125, 1115, 1120, 1121, + 1120, 1127, 1120, 1128, 1120, 1127, 1122, 1123, 1123, 1124, + 1124, 1129, 1124, 1130, 1131, 1132, 1133, 1134, 1128, 1131, + 1131, 1133, 1130, 1135, 1136, 1137, 1138, 1139, 1141, 1129, + 1146, 1134, 1135, 1139, 1140, 1140, 1141, 1132, 1142, 1144, + 1138, 1143, 1145, 1136, 1137, 1147, 1143, 1150, 1146, 1148, + 0, 1145, 1142, 1144, 1148, 1149, 1149, 1151, 1151, 1152, + 1154, 1152, 1150, 1154, 1155, 1156, 1157, 1158, 1158, 1155, + 1147, 1159, 1160, 1160, 1162, 1157, 1161, 1161, 1163, 1162, - 1165, 1167, 1169, 1166, 1168, 1168, 1167, 1169, 1170, 1171, - 1172, 1173, 1175, 1176, 1178, 1171, 1177, 1172, 1175, 1176, - 1178, 1177, 1179, 1180, 1173, 1181, 1170, 1182, 1182, 1183, - 1185, 1179, 1186, 1187, 1188, 1189, 1181, 1191, 1192, 1187, - 1188, 1189, 1180, 1191, 1193, 1194, 1195, 1196, 1198, 1183, - 1185, 1199, 1192, 1197, 1197, 1186, 1200, 1194, 1192, 1203, - 1195, 1201, 1202, 1202, 1193, 1196, 1201, 1204, 1198, 1206, - 0, 1208, 1204, 1207, 1200, 1209, 1199, 1210, 1207, 1207, - 1211, 1212, 1203, 1213, 1209, 1210, 1216, 1214, 1206, 1208, - 1222, 1215, 1214, 1215, 1211, 1214, 1212, 1218, 1213, 1220, + 1164, 1165, 1165, 1166, 1156, 1167, 1168, 1169, 1167, 1170, + 1172, 1159, 1169, 1171, 1174, 1171, 1175, 1174, 1170, 1163, + 1176, 1164, 1177, 1166, 1178, 1176, 1168, 1177, 1172, 1179, + 1180, 1175, 1178, 1182, 1179, 1180, 1181, 1181, 1182, 1183, + 1184, 1185, 1186, 1188, 1189, 1191, 1184, 1190, 1185, 1188, + 1189, 1191, 1190, 1192, 1193, 1186, 1194, 1183, 1195, 1195, + 1196, 1198, 1192, 1199, 1200, 1201, 1202, 1194, 1204, 1205, + 1200, 1201, 1202, 1193, 1204, 1206, 1207, 1208, 1209, 1211, + 1196, 1198, 1212, 1205, 1210, 1210, 1199, 1213, 1207, 1205, + 1216, 1208, 1214, 1215, 1215, 1206, 1209, 1214, 1217, 1211, - 1216, 1213, 1219, 1218, 1223, 1224, 1219, 1221, 1226, 1222, - 1220, 1225, 1221, 1221, 1227, 1228, 1225, 1230, 1231, 1227, - 1232, 1233, 1233, 1224, 1234, 1235, 1226, 1236, 1234, 1238, - 1223, 1230, 1239, 1237, 1240, 1228, 1231, 1241, 1232, 1237, - 1242, 1238, 1243, 1235, 1244, 1246, 1236, 1245, 1240, 1244, - 1246, 1239, 1241, 1247, 1245, 1242, 1248, 1249, 1249, 1250, - 1251, 1243, 1252, 1253, 1254, 1248, 1251, 1255, 1253, 1262, - 1254, 1247, 1263, 1255, 1250, 1256, 1256, 1257, 1257, 1259, - 1259, 1260, 1261, 1252, 1264, 1260, 1263, 1262, 1265, 1266, - 1266, 1261, 1267, 1268, 1270, 1265, 1271, 1269, 1272, 1264, + 1219, 0, 1221, 1217, 1220, 1213, 1222, 1212, 1223, 1220, + 1220, 1224, 1225, 1216, 1226, 1222, 1223, 1229, 1227, 1219, + 1221, 1235, 1228, 1227, 1228, 1224, 1227, 1225, 1231, 1226, + 1233, 1229, 1226, 1232, 1231, 1236, 1237, 1232, 1234, 1239, + 1235, 1233, 1238, 1234, 1234, 1240, 1241, 1238, 1243, 1244, + 1240, 1245, 1246, 1246, 1237, 1247, 1248, 1239, 1249, 1247, + 1251, 1236, 1243, 1252, 1250, 1253, 1241, 1244, 1254, 1245, + 1250, 1255, 1251, 1256, 1248, 1257, 1259, 1249, 1258, 1253, + 1257, 1259, 1252, 1254, 1260, 1258, 1255, 1261, 1262, 1262, + 1263, 1264, 1256, 1265, 1266, 1267, 1261, 1264, 1268, 1266, - 1273, 1268, 1269, 1272, 1272, 1273, 1273, 1274, 1270, 1275, - 1275, 1276, 1267, 1277, 1278, 1271, 1279, 1280, 1281, 1282, - 1283, 1279, 1285, 1278, 1284, 1286, 1283, 1274, 1287, 1284, - 1276, 1286, 1277, 1288, 1289, 1290, 1280, 1282, 1281, 1288, - 1289, 1291, 1292, 1293, 1294, 1295, 0, 1287, 1285, 1296, - 1297, 1297, 1298, 1299, 1290, 1298, 1300, 1300, 1294, 1303, - 1291, 1292, 1293, 1303, 1296, 1299, 1295, 1301, 1301, 1302, - 1304, 1305, 1306, 1307, 1302, 1307, 1309, 1311, 1310, 1307, - 1305, 1309, 1312, 1304, 1314, 1306, 1313, 1313, 1315, 1314, - 1316, 1317, 1307, 1310, 1315, 1318, 1321, 1311, 1312, 1319, + 1275, 1267, 1260, 1276, 1268, 1263, 1269, 1269, 1270, 1270, + 1272, 1272, 1273, 1274, 1265, 1277, 1273, 1276, 1275, 1278, + 1279, 1279, 1274, 1280, 1281, 1283, 1278, 1284, 1282, 1285, + 1277, 1286, 1281, 1282, 1285, 1285, 1286, 1286, 1287, 1283, + 1288, 1288, 1289, 1280, 1290, 1291, 1284, 1292, 1293, 1294, + 1295, 1296, 1292, 1298, 1291, 1297, 1299, 1296, 1287, 1300, + 1297, 1289, 1299, 1290, 1301, 1302, 1303, 1293, 1295, 1294, + 1301, 1302, 1304, 1305, 1306, 1307, 1308, 1312, 1300, 1298, + 1309, 1310, 1310, 1311, 1313, 1303, 1311, 1314, 0, 1307, + 1318, 1304, 1305, 1306, 1318, 1309, 1312, 1308, 1319, 1314, - 1318, 1322, 1320, 1319, 1317, 1316, 1320, 1323, 1324, 1325, - 1325, 1327, 1329, 1330, 1324, 1333, 1321, 1332, 1330, 1322, - 1331, 1331, 1339, 1332, 1335, 1335, 1340, 1323, 1337, 1327, - 1343, 1337, 1344, 1329, 1346, 1333, 1338, 1338, 1339, 1347, - 1342, 1344, 1340, 1342, 1345, 1345, 1348, 1349, 1350, 1346, - 1343, 1352, 1349, 1351, 1351, 1353, 1354, 1355, 1355, 1356, - 1347, 1357, 1350, 1358, 1362, 1348, 1364, 1359, 1358, 1352, - 1353, 1360, 1360, 1356, 1361, 1363, 1363, 1367, 1361, 1357, - 1365, 1354, 1359, 1366, 1362, 1368, 1371, 1366, 1364, 1372, - 1368, 1365, 1370, 1370, 1373, 1374, 1367, 1375, 1376, 1376, + 1315, 1315, 1317, 1313, 1316, 1316, 1320, 1317, 1321, 1324, + 1322, 1319, 1322, 1325, 1324, 1320, 1322, 1326, 1327, 1328, + 1328, 1321, 1329, 1331, 1330, 1337, 1332, 1329, 1325, 1322, + 1330, 1333, 1336, 1338, 1327, 1344, 1333, 1326, 1331, 1332, + 1334, 1335, 1339, 1337, 1334, 1335, 1340, 1340, 1339, 1342, + 1345, 1348, 1336, 1338, 1347, 1345, 1344, 1346, 1346, 1354, + 1347, 1350, 1350, 1352, 1353, 1353, 1352, 1342, 1355, 1357, + 1358, 1348, 1357, 1359, 1361, 1354, 1360, 1360, 1362, 1363, + 1364, 1365, 1359, 1367, 1355, 1364, 1366, 1366, 1368, 1361, + 1358, 1369, 1370, 1370, 1371, 1365, 1372, 1373, 1363, 1362, - 1377, 1378, 1380, 1372, 1371, 1377, 1379, 1381, 1382, 1374, - 1385, 1380, 1381, 1373, 1373, 1383, 1385, 1383, 1384, 1386, - 1389, 1378, 1375, 1384, 1387, 1391, 1379, 1392, 1382, 1395, - 1387, 1390, 1390, 1392, 1389, 1394, 1396, 1396, 1398, 1386, - 1394, 1397, 1397, 1399, 1391, 1400, 1401, 1402, 1402, 1401, - 1403, 1404, 1398, 1395, 1407, 1412, 1416, 1416, 1406, 1407, - 1400, 1399, 1403, 1405, 1406, 1408, 1405, 1410, 1408, 1405, - 1411, 1404, 1414, 1418, 1413, 1411, 1410, 1413, 1414, 1418, - 1412, 1405, 1415, 1419, 1408, 1417, 1417, 1415, 1419, 1420, - 1421, 1422, 1423, 1424, 1425, 1426, 1424, 1429, 1427, 1428, + 1374, 1367, 1373, 1368, 1375, 1375, 1376, 1377, 1371, 1379, + 1376, 1378, 1378, 1380, 1372, 1374, 1369, 1381, 1382, 1387, + 1383, 1381, 1385, 1385, 1380, 1383, 1386, 1377, 1388, 1389, + 1390, 1379, 1393, 1387, 1391, 1391, 1392, 1382, 1394, 1397, + 1395, 1392, 1401, 1389, 1386, 1396, 0, 1388, 1388, 1395, + 1396, 1398, 1393, 1398, 1400, 1390, 1399, 1402, 1394, 1397, + 1400, 1399, 1401, 1402, 1404, 1405, 1405, 1406, 1407, 1410, + 1409, 1411, 1411, 1413, 1407, 1409, 1412, 1412, 1404, 1414, + 1415, 1416, 1417, 1417, 1416, 1419, 1406, 1413, 1418, 1422, + 1427, 0, 1421, 1410, 1422, 1415, 1420, 1414, 1421, 1420, - 1425, 1426, 1420, 1427, 1430, 1428, 1431, 1431, 1421, 1430, - 1422, 1432, 1423, 1433, 1434, 1435, 1432, 1438, 1436, 1437, - 1429, 1440, 1441, 1439, 1442, 1443, 1444, 1440, 1447, 1438, - 1452, 1433, 1436, 1437, 1434, 1435, 1439, 1446, 1446, 1443, - 1448, 1450, 1441, 1451, 1442, 1448, 1453, 1444, 1447, 1449, - 1449, 1454, 1455, 1458, 1452, 1456, 1450, 1451, 1460, 1457, - 1454, 1462, 1456, 1463, 1453, 1467, 1463, 1455, 1457, 1458, - 1466, 1457, 1470, 1460, 1464, 1464, 1465, 1465, 1460, 1469, - 1469, 1468, 1466, 1467, 1468, 1470, 1462, 1471, 1472, 1473, - 1474, 1475, 1476, 1472, 1473, 1477, 1478, 1480, 1481, 1481, + 1418, 1423, 1420, 1425, 1423, 1419, 1426, 1428, 1431, 1431, + 1428, 1426, 1425, 1429, 1420, 1427, 1430, 1432, 1432, 1429, + 1423, 1430, 1433, 1435, 1434, 1436, 1437, 1438, 1433, 1434, + 1439, 1440, 1441, 1439, 1442, 1443, 1435, 1440, 1441, 1442, + 1444, 1443, 1448, 1436, 1445, 1437, 1449, 1438, 1447, 1445, + 1446, 1446, 1450, 1447, 1451, 1452, 1455, 1456, 1453, 1457, + 1448, 1454, 1455, 1444, 1458, 1459, 1449, 1462, 1451, 1452, + 1453, 1467, 1450, 1465, 1454, 1461, 1461, 1456, 1458, 1457, + 1463, 1464, 1464, 1466, 1468, 1463, 1459, 1462, 1465, 1469, + 1470, 1472, 1471, 1473, 1477, 1467, 1475, 1466, 1469, 1471, - 1482, 1476, 1479, 1480, 1483, 1478, 1471, 1475, 1478, 1474, - 1484, 1479, 1485, 1486, 1477, 1487, 1490, 1483, 1491, 1493, - 1482, 1492, 1492, 1494, 1498, 1495, 1485, 1487, 1484, 1486, - 1495, 1497, 1494, 1496, 1496, 1493, 1491, 1499, 1500, 1501, - 1497, 1490, 1498, 1497, 1501, 1501, 1503, 1504, 1496, 1505, - 1506, 1507, 1508, 1509, 1509, 1506, 1500, 1507, 1499, 1510, - 1503, 1511, 1504, 1512, 1515, 1510, 1511, 1513, 1516, 1512, - 1508, 1505, 1517, 1513, 1518, 1520, 1519, 1524, 1517, 1519, - 1522, 1520, 1516, 1525, 1515, 1519, 1526, 1518, 1522, 1527, - 1528, 1529, 1530, 1531, 1526, 1533, 1524, 1535, 1527, 1532, + 1472, 1478, 1468, 1472, 1478, 1470, 1479, 1479, 1481, 1473, + 1482, 1475, 1480, 1480, 1483, 1486, 1475, 1483, 1485, 1477, + 1481, 1484, 1484, 1489, 1487, 1488, 1491, 1490, 1482, 1487, + 1488, 1485, 1492, 1495, 1486, 1491, 1493, 1494, 1497, 1495, + 1496, 1496, 1489, 1490, 1498, 1493, 1494, 1499, 1493, 1500, + 1501, 1492, 1504, 1507, 1502, 1508, 1503, 1498, 1497, 1502, + 1502, 1503, 1511, 1500, 1504, 1499, 1501, 1509, 1509, 1510, + 1512, 1511, 1514, 1508, 1515, 1512, 1513, 1513, 1507, 1516, + 1517, 1514, 1518, 1520, 1514, 1510, 1521, 1518, 1518, 1522, + 1523, 1513, 1515, 1524, 1525, 1523, 1532, 1520, 1517, 1524, - 1532, 1533, 1525, 1528, 1529, 1534, 1530, 1531, 1536, 1537, - 1535, 1534, 1538, 1539, 1540, 1541, 1542, 1543, 1545, 1545, - 1540, 1532, 1546, 1552, 0, 1547, 1539, 1537, 1536, 1547, - 1554, 1538, 1542, 1548, 1549, 1543, 1550, 1541, 1548, 1549, - 1551, 1550, 1546, 1555, 1555, 1554, 1552, 1556, 1557, 1551, - 1558, 1559, 1559, 1560, 1561, 1564, 1562, 1565, 1563, 1566, - 1557, 1561, 1568, 1567, 1659, 1566, 1556, 1560, 1562, 1558, - 1563, 1659, 1569, 1571, 1564, 1567, 1571, 1565, 1569, 1575, - 1568, 1570, 1570, 1572, 1572, 1574, 1576, 1578, 1575, 1579, - 1574, 1579, 1576, 1577, 1577, 1580, 1581, 1582, 1580, 1578, + 1516, 1521, 1526, 1526, 1527, 1533, 0, 1541, 1528, 1529, + 1527, 1522, 1525, 1528, 1530, 1529, 1532, 1534, 1535, 1533, + 1530, 1536, 1537, 1534, 1536, 1539, 1541, 1542, 1537, 1543, + 1536, 1535, 1544, 1539, 1545, 1546, 1547, 1543, 1548, 1549, + 1549, 1544, 1552, 1550, 1553, 1551, 1542, 1545, 1546, 1550, + 1547, 1551, 1548, 1554, 1555, 1552, 1556, 1557, 1558, 1559, + 1560, 1549, 1563, 1557, 1553, 1562, 1562, 1569, 1564, 1556, + 1571, 1554, 1564, 1555, 1565, 1559, 1566, 1568, 1560, 1565, + 1558, 1566, 1563, 1567, 1573, 1571, 1568, 1574, 1567, 1575, + 1569, 1572, 1572, 1576, 1576, 1577, 1581, 1578, 1579, 1574, - 1583, 1585, 1584, 1586, 1589, 1587, 1585, 1588, 1591, 1589, - 1593, 1597, 1586, 0, 1590, 1593, 1581, 1587, 1583, 1582, - 1584, 1592, 1588, 1590, 1594, 1596, 1592, 1598, 1591, 1595, - 1595, 1596, 1597, 1592, 1599, 1600, 1590, 1602, 1601, 1594, - 1601, 1603, 1603, 1604, 1604, 1606, 1598, 1605, 1605, 1609, - 1599, 1602, 1610, 1602, 1617, 1600, 1607, 1607, 1608, 1608, - 1611, 1611, 1612, 1613, 1614, 1606, 1612, 1614, 1616, 1613, - 1609, 1618, 1617, 1610, 1616, 1619, 1620, 1618, 1623, 1620, - 1621, 1621, 1622, 1622, 1623, 1624, 1625, 1626, 1627, 1628, - 1630, 1631, 1637, 1634, 1627, 1630, 1630, 1624, 1624, 1624, + 1580, 1582, 1584, 1573, 1578, 1583, 1585, 1586, 1575, 1577, + 1579, 1583, 1580, 1586, 1584, 1581, 1587, 1587, 1591, 1588, + 1592, 1582, 1588, 1591, 1585, 1589, 1589, 1593, 1595, 1592, + 1594, 1594, 1596, 1593, 1596, 1597, 1598, 1599, 1597, 1600, + 1595, 1602, 1601, 1603, 1607, 1606, 1602, 1605, 1608, 1604, + 1606, 1614, 1603, 1607, 1612, 1612, 1598, 1600, 1609, 1599, + 1601, 1604, 1605, 1609, 1610, 1611, 1607, 1613, 1608, 1610, + 1609, 1615, 1614, 1613, 1617, 1616, 1618, 1623, 1618, 1619, + 1611, 1620, 1620, 1621, 1621, 1622, 1622, 1624, 1624, 1626, + 1615, 1616, 1627, 1619, 1617, 1619, 1634, 1623, 1625, 1625, - 1619, 1632, 1633, 1632, 1624, 1631, 1625, 1626, 1634, 1628, - 1635, 1636, 1637, 1633, 1638, 1640, 1635, 1639, 1639, 1642, - 1636, 1641, 1641, 1643, 1644, 1644, 1645, 1645, 1646, 1649, - 1649, 1650, 1654, 1651, 1653, 1638, 1656, 1656, 1655, 1642, - 1657, 1640, 1651, 1653, 1655, 1643, 1660, 1658, 1646, 1661, - 1662, 1662, 1663, 1654, 1664, 1660, 1650, 1668, 1666, 1667, - 1669, 1657, 1658, 1666, 1673, 1667, 1670, 1669, 1671, 1673, - 1664, 1675, 1670, 1674, 1671, 1661, 1676, 1668, 1663, 1672, - 1672, 1677, 1674, 1678, 1679, 1680, 1678, 1681, 1681, 1683, - 1682, 1675, 1684, 1677, 1685, 1676, 1682, 1687, 1685, 1688, + 1628, 1628, 1629, 1630, 1631, 1633, 1629, 1631, 1636, 1630, + 1626, 1633, 1635, 1627, 1634, 1641, 1637, 1642, 1635, 1637, + 1638, 1638, 1639, 1639, 1640, 1643, 1644, 1641, 1641, 1641, + 1640, 1645, 1644, 1636, 1641, 1647, 1648, 1642, 1650, 1651, + 1647, 1647, 1649, 1654, 1649, 1643, 1652, 1653, 1655, 1650, + 1648, 1645, 1652, 1657, 1651, 1659, 1653, 1656, 1656, 1658, + 1658, 1660, 1663, 1654, 1661, 1661, 1662, 1662, 1667, 1655, + 1666, 1666, 1668, 1671, 1672, 1659, 1670, 1673, 1673, 1657, + 1672, 1668, 1663, 1660, 1674, 1670, 1675, 1677, 1676, 1678, + 1679, 1679, 1680, 1667, 1671, 1676, 1677, 1681, 1683, 1685, - 1689, 1691, 1679, 1690, 1690, 1689, 1694, 1684, 1692, 1683, - 1702, 1680, 1695, 1696, 1685, 1697, 1695, 1687, 1699, 1696, - 1691, 1688, 1699, 1692, 1697, 1694, 1698, 1698, 1700, 1701, - 1701, 1702, 1703, 1704, 1706, 1705, 1707, 1708, 1709, 1700, - 1705, 1713, 1710, 1708, 1700, 1713, 1703, 1710, 1711, 1711, - 1712, 1712, 1704, 1709, 1706, 1715, 1707, 1716, 1717, 1718, - 1718, 1719, 1719, 1721, 1715, 1720, 1722, 1723, 1716, 1721, - 1720, 1720, 1722, 1716, 1724, 1725, 1726, 1728, 1717, 1724, - 1729, 1731, 1726, 1730, 1729, 1732, 1733, 1725, 1734, 1728, - 1735, 1732, 1737, 1723, 1734, 1730, 1738, 1741, 1739, 1745, + 1684, 1675, 1686, 1683, 1687, 1674, 1684, 1690, 1695, 1686, + 1687, 1691, 1688, 1681, 1688, 1678, 1694, 1691, 1680, 1685, + 1692, 1692, 1693, 1696, 1697, 1694, 1690, 1693, 1695, 1698, + 1699, 1700, 1698, 1701, 1701, 1702, 1697, 1704, 1703, 1705, + 1707, 1702, 1696, 1705, 1708, 1709, 1710, 1710, 1699, 1711, + 1709, 1714, 1704, 0, 1712, 1717, 1716, 1700, 1703, 1705, + 1707, 1715, 1716, 1719, 1717, 1715, 1708, 1719, 1711, 1712, + 1714, 1718, 1718, 1720, 1721, 1721, 1722, 1723, 1725, 1724, + 1726, 1727, 1728, 1725, 1720, 1730, 1737, 1729, 1728, 1720, + 1730, 1723, 1731, 1731, 1732, 1732, 1735, 1722, 1724, 1733, - 1741, 1746, 1735, 1739, 1737, 1755, 1731, 1746, 1733, 1742, - 1742, 1743, 1743, 1744, 1744, 1738, 1747, 1755, 1748, 1745, - 1749, 1750, 1747, 1748, 1752, 1754, 1749, 1758, 1754, 1752, - 1750, 1756, 1756, 1759, 1762, 1760, 1761, 1761, 1766, 1758, - 1760, 1763, 1764, 1762, 1767, 1759, 1763, 1764, 1765, 1765, - 1768, 1769, 1770, 1767, 1771, 1772, 1770, 1773, 1766, 1771, - 1774, 1772, 1775, 1776, 1778, 1778, 1779, 1783, 1768, 1774, - 1769, 1784, 1780, 1781, 1781, 1773, 1778, 1776, 1782, 1783, - 1775, 1780, 1786, 1785, 1779, 1789, 1789, 1782, 1785, 1792, - 1791, 1793, 1784, 1791, 1795, 1786, 1796, 1797, 1798, 1799, + 1726, 1727, 1729, 1733, 1736, 1735, 1737, 1738, 1738, 1739, + 1739, 1740, 1741, 1742, 1743, 1736, 1740, 1740, 1741, 1742, + 1736, 1744, 1745, 1746, 1748, 1750, 1744, 1749, 1751, 1746, + 1753, 1749, 1752, 1754, 1745, 1755, 1748, 1750, 1752, 1754, + 1743, 1758, 1757, 1759, 1762, 1762, 1761, 1755, 1759, 1761, + 1763, 1763, 1753, 1751, 1757, 1764, 1764, 1765, 1766, 1767, + 1758, 1768, 1769, 1770, 1766, 1767, 1768, 1774, 1769, 1772, + 1774, 1775, 1770, 1778, 1772, 1776, 1776, 1765, 1779, 1780, + 1781, 1781, 1782, 1775, 1780, 1778, 1786, 1783, 1784, 1787, + 1779, 1782, 1783, 1784, 1785, 1785, 1788, 1789, 1787, 1790, - 1799, 1804, 1800, 1797, 1800, 1792, 1802, 1793, 1804, 1795, - 1796, 1801, 1801, 1805, 1802, 1798, 1806, 1806, 1807, 1808, - 1809, 1812, 1810, 1811, 1813, 1814, 1816, 1807, 0, 1817, - 1819, 1814, 1809, 1805, 1810, 1811, 1818, 1818, 1820, 1813, - 1808, 1817, 1821, 1823, 1814, 1821, 1816, 1812, 1819, 1822, - 1825, 1826, 1827, 1826, 1822, 1825, 1828, 1829, 1820, 1831, - 1833, 1828, 1834, 1823, 1829, 1835, 1837, 1836, 1831, 1836, - 1827, 1834, 1839, 1840, 1839, 1841, 1841, 1835, 1833, 1842, - 1844, 1843, 1844, 1845, 1846, 1837, 1843, 1840, 1845, 1846, - 1847, 1848, 1849, 1851, 1850, 1852, 1854, 1858, 1849, 1850, + 1791, 1792, 1793, 1790, 1794, 1791, 1786, 1792, 1795, 1796, + 1798, 1798, 1799, 1794, 1788, 1800, 1789, 1801, 1801, 1802, + 1793, 1803, 1798, 1796, 1800, 1804, 1795, 1805, 1802, 1806, + 1799, 1812, 1805, 1803, 1809, 1809, 1811, 1813, 1816, 1811, + 1815, 0, 1806, 1817, 1819, 1819, 1804, 1812, 1820, 1817, + 1820, 1822, 1816, 1813, 1824, 1815, 1821, 1821, 1825, 1822, + 1827, 1824, 1826, 1826, 1828, 1829, 1832, 1830, 1831, 1827, + 1834, 1833, 1837, 1836, 1838, 1838, 1834, 1829, 1825, 1830, + 1831, 1839, 1840, 1842, 1837, 1828, 1833, 1841, 1842, 1834, + 1841, 1843, 1832, 1836, 1846, 1845, 1846, 1847, 1848, 1839, - 1855, 1856, 1856, 1852, 1859, 1842, 1851, 1860, 1847, 1857, - 1857, 1848, 1858, 1860, 1855, 1854, 1861, 1862, 1863, 1862, - 1865, 1861, 1864, 1864, 1859, 1870, 1863, 1866, 1866, 1867, - 1867, 1868, 1865, 1869, 1863, 1872, 1874, 1873, 1869, 1873, - 1868, 1877, 1879, 1870, 1872, 1875, 1876, 1872, 1884, 1883, - 1875, 1875, 1887, 1877, 1879, 1876, 1880, 1874, 1881, 1888, - 1885, 1880, 1883, 1881, 1886, 1886, 1889, 1890, 1884, 1885, - 1887, 1891, 1893, 1894, 1895, 1896, 1904, 1888, 1897, 1898, - 1896, 1890, 1889, 1897, 1893, 1894, 1891, 1901, 1898, 1903, - 1905, 1906, 1907, 1901, 1895, 1903, 1909, 1909, 1908, 1904, + 1845, 1849, 1840, 1848, 1851, 1853, 1855, 1854, 1849, 1857, + 1856, 1843, 1856, 1851, 1862, 1847, 1854, 1859, 1855, 1859, + 1860, 1861, 1861, 1853, 1863, 1864, 1865, 1864, 1857, 1863, + 1866, 1865, 1867, 1868, 1860, 1866, 1869, 1872, 1870, 1871, + 1862, 1873, 1869, 1870, 1876, 1877, 1873, 1873, 1874, 1872, + 1867, 1880, 1871, 1868, 1878, 1878, 1874, 1879, 1879, 1877, + 1881, 1882, 1887, 1876, 1883, 1885, 1880, 1882, 1884, 1883, + 1884, 1886, 1886, 1885, 1887, 1888, 1888, 1889, 1889, 1890, + 1881, 1885, 1891, 1892, 1894, 1896, 1898, 1891, 1890, 1895, + 1899, 1895, 1897, 1894, 1905, 1898, 1894, 1897, 1897, 1901, - 1912, 1910, 1911, 1911, 1913, 1905, 1901, 1908, 1913, 1906, - 1910, 1914, 1915, 1921, 0, 1916, 1914, 1907, 1917, 1912, - 1916, 1916, 1918, 1919, 1917, 1915, 1919, 1920, 1918, 1924, - 1924, 1925, 1925, 1921, 1926, 1920, 1927, 1927, 1928, 1928, - 1929, 1930, 1931, 1926, 1932, 1942, 1925, 1939, 1931, 1932, - 1933, 1933, 1929, 1934, 1934, 1935, 1936, 1925, 1943, 1930, - 1935, 1938, 1936, 1943, 1940, 1938, 1944, 1939, 1940, 1945, - 1942, 1946, 1947, 1949, 1950, 1948, 1946, 1951, 1953, 1950, - 1952, 1952, 1953, 1954, 1945, 1956, 1958, 1955, 1957, 1944, - 1947, 1948, 1955, 1949, 1960, 1961, 1959, 1965, 1954, 1951, + 1902, 1892, 1899, 1903, 1906, 1902, 1896, 1905, 1903, 1907, + 1909, 1901, 1908, 1908, 1910, 1911, 1912, 1915, 1907, 1913, + 1917, 1916, 1918, 1926, 1906, 1929, 1920, 1918, 1909, 1915, + 1912, 1911, 1910, 1916, 1913, 1920, 1919, 1923, 1925, 1927, + 1917, 1919, 1928, 1923, 1925, 1934, 1926, 0, 1930, 1932, + 1929, 1931, 1931, 1937, 1927, 1935, 1923, 1930, 1932, 1935, + 1928, 1933, 1933, 1936, 1934, 1938, 1937, 1939, 1936, 1940, + 1938, 1938, 1942, 1939, 1941, 1940, 1943, 1941, 1946, 1946, + 1942, 1948, 1947, 1947, 1949, 1949, 1950, 1950, 1951, 1952, + 1948, 1960, 1953, 1961, 1954, 1960, 1943, 1947, 1953, 1954, - 1957, 1959, 1962, 1962, 1964, 1958, 1966, 1960, 1967, 1968, - 1969, 1956, 1964, 1961, 1970, 1971, 1965, 1972, 1978, 1974, - 1975, 1975, 2139, 1976, 1977, 1966, 1976, 1971, 1979, 1969, - 2139, 1967, 1978, 1968, 1974, 1970, 1983, 1977, 1972, 1980, - 1980, 1979, 1981, 1981, 1982, 1982, 1984, 1985, 1985, 1986, - 1988, 1983, 1987, 1987, 1991, 1988, 1992, 1990, 1986, 1984, - 1993, 1986, 1990, 1994, 1994, 1995, 1995, 1996, 1997, 1997, - 1998, 2004, 1993, 2007, 1991, 2000, 1992, 1999, 1999, 2001, - 2002, 2002, 2003, 2003, 2001, 2004, 1996, 2005, 1998, 2006, - 2000, 2011, 2007, 2009, 2010, 2010, 2005, 2013, 2009, 2012, + 1951, 1955, 1955, 1956, 1956, 1957, 1958, 1952, 1947, 1964, + 1957, 1962, 1958, 1961, 1965, 1962, 1966, 1967, 1968, 1965, + 1969, 1970, 1971, 1968, 1972, 1973, 1974, 1974, 1976, 1972, + 1978, 1975, 1967, 1979, 1964, 1975, 1977, 1970, 1969, 1966, + 1980, 1977, 1971, 1976, 1981, 1979, 1983, 1973, 1982, 1981, + 1984, 1984, 1986, 1987, 1988, 1989, 1978, 1990, 1991, 1980, + 1986, 1982, 1992, 1993, 1983, 1994, 1999, 1996, 1997, 1997, + 2000, 1998, 1987, 1988, 1998, 1993, 2001, 1991, 1989, 1999, + 2005, 1990, 1996, 1992, 2000, 2006, 1994, 2002, 2002, 2001, + 2003, 2003, 2004, 2004, 2008, 2005, 2007, 2007, 2006, 2009, - 2012, 2014, 2015, 2006, 2018, 2015, 2019, 2014, 2016, 2016, - 2011, 2017, 2017, 2020, 2023, 2013, 2021, 2021, 2024, 2028, - 2025, 2019, 2026, 2018, 2016, 2029, 2026, 2027, 2027, 2030, - 2032, 2032, 2020, 2033, 2023, 2025, 2034, 2035, 2028, 2036, - 2029, 2024, 2037, 2034, 2030, 2038, 2039, 2039, 2041, 2040, - 2041, 2035, 2042, 2033, 2044, 2042, 2045, 2036, 2040, 2046, - 2037, 2045, 2047, 2048, 2046, 2049, 2044, 2051, 2050, 2053, - 2042, 2038, 2042, 2050, 2053, 2054, 2048, 2055, 2056, 2057, - 2054, 2061, 2058, 2062, 2056, 2059, 2049, 2047, 2058, 2060, - 2059, 2068, 2055, 2051, 2060, 2063, 2062, 2073, 2063, 2064, + 2009, 2013, 2010, 2008, 2012, 2014, 2008, 2010, 2015, 2012, + 2016, 2016, 2017, 2017, 2018, 2019, 2019, 2020, 2021, 2021, + 2015, 2013, 2022, 2023, 2026, 2014, 2024, 2024, 2023, 2025, + 2025, 2027, 2028, 2018, 2029, 2020, 2031, 2022, 2026, 2033, + 2027, 2031, 2032, 2032, 2034, 2034, 2028, 2035, 2036, 2037, + 2038, 2038, 2037, 2029, 2036, 2039, 2039, 2040, 2033, 2041, + 2042, 2045, 2042, 2044, 2048, 2035, 2038, 2046, 2046, 2049, + 2050, 2051, 2052, 2052, 2041, 2051, 2040, 2053, 2044, 2054, + 2045, 2058, 2055, 2059, 2048, 2050, 2057, 2057, 2060, 2061, + 2059, 2062, 2049, 2063, 2054, 2065, 2053, 2055, 2064, 2064, - 2057, 2065, 2066, 2067, 2079, 2068, 2061, 2069, 2064, 2070, - 2065, 2066, 2067, 2069, 2071, 2070, 2075, 2073, 2071, 2076, - 2076, 2077, 2078, 2078, 2079, 2075, 2079, 2077, 2081, 2082, - 2085, 2078, 2083, 2083, 2084, 2087, 2088, 2092, 2089, 2085, - 2092, 2093, 2090, 2094, 2081, 2082, 2093, 2087, 2095, 2084, - 2096, 2096, 2088, 2089, 2090, 2097, 2097, 2099, 2099, 2100, - 2095, 2101, 2100, 2094, 2102, 2103, 2101, 2104, 2104, 2105, - 2102, 2103, 2106, 2106, 2107, 2108, 2109, 2110, 2110, 2111, - 2112, 0, 2113, 2105, 2115, 2111, 2107, 2113, 2115, 2108, - 2116, 2117, 2117, 2116, 2112, 2109, 2118, 2119, 2120, 2121, + 2069, 2058, 2060, 2066, 2065, 2066, 2072, 2061, 2067, 2062, + 2070, 2067, 2069, 2071, 2073, 2070, 2074, 2075, 2071, 2063, + 2076, 2080, 2075, 2082, 2078, 2079, 2067, 2073, 2067, 2078, + 2079, 2072, 2081, 2083, 2086, 2084, 2080, 2074, 2081, 2083, + 2084, 2087, 2085, 2089, 2082, 2088, 2076, 2085, 2088, 2090, + 2093, 2091, 2089, 2092, 2087, 2094, 2098, 2095, 2090, 2086, + 2091, 2094, 2092, 2095, 2093, 2096, 2100, 2101, 2101, 2096, + 2104, 2102, 2103, 2103, 2109, 2100, 2098, 2102, 2106, 2107, + 2113, 2103, 2108, 2108, 2110, 2112, 2114, 2115, 2117, 2109, + 2104, 2117, 2104, 2110, 2106, 2107, 2113, 2112, 2118, 2115, - 2123, 2118, 2125, 2121, 2122, 2122, 2119, 2125, 2126, 2127, - 2128, 2129, 2130, 2123, 2131, 2129, 2132, 2133, 2120, 2131, - 2134, 2136, 2132, 2133, 2128, 2137, 2143, 2138, 2126, 2127, - 2137, 2146, 2130, 2138, 2140, 2149, 2140, 2136, 2134, 2149, - 2143, 2144, 2144, 2145, 2147, 2147, 2145, 2150, 2151, 2152, - 2152, 2158, 2153, 2150, 2156, 2156, 2160, 2146, 2161, 2164, - 2151, 2153, 2165, 2166, 2164, 2174, 2167, 2175, 2166, 2158, - 2160, 2167, 2168, 2168, 2161, 2170, 2170, 2172, 2173, 2173, - 2176, 2174, 2178, 2172, 2179, 2176, 2180, 2180, 2165, 2175, - 2182, 2183, 2184, 2185, 2187, 2187, 2179, 2183, 2188, 2182, + 2119, 2114, 2120, 2118, 2121, 2121, 2122, 2122, 2124, 2124, + 2125, 2126, 2127, 2125, 2120, 2128, 2126, 2130, 2127, 2133, + 2119, 2128, 2129, 2129, 2131, 2131, 2132, 2134, 2135, 2135, + 2136, 2130, 2138, 2133, 2137, 2140, 2136, 2138, 2132, 2140, + 2141, 2142, 2142, 2141, 2143, 2144, 2134, 2145, 2137, 2143, + 2148, 2146, 2147, 2147, 2144, 2146, 2150, 2151, 2152, 2153, + 2154, 2150, 2155, 2148, 2154, 2156, 2157, 2145, 2158, 2159, + 2156, 2162, 2157, 2153, 2158, 2161, 2162, 2151, 2152, 2163, + 2164, 2165, 2155, 2165, 2168, 2163, 2171, 2159, 2164, 2169, + 2169, 2161, 2170, 2172, 2172, 2170, 2174, 2175, 2168, 2176, - 2189, 2178, 2191, 2191, 2192, 2192, 2193, 2194, 2185, 2196, - 2184, 2193, 2195, 2197, 2196, 2197, 2198, 2188, 2189, 2199, - 2200, 2195, 2201, 2202, 2203, 2194, 2209, 2201, 2244, 2203, - 2198, 2244, 2200, 2199, 2204, 2204, 2205, 2205, 2206, 2206, - 2207, 2207, 2208, 2202, 2209, 2210, 2211, 2211, 2212, 2212, - 2210, 2213, 2214, 2215, 2208, 2216, 2217, 2217, 2218, 2219, - 2219, 2220, 2220, 2213, 2214, 2221, 2222, 2223, 2224, 2225, - 2226, 2216, 2227, 2215, 2223, 2226, 2221, 2218, 2222, 2228, - 2224, 2229, 2229, 2231, 2230, 2232, 2234, 2233, 2235, 2225, - 2236, 2236, 2227, 2230, 2237, 2241, 2238, 2239, 2242, 2228, + 2174, 2177, 2177, 2175, 2178, 2181, 2181, 2183, 2185, 2189, + 2186, 2176, 2171, 2178, 2189, 2190, 2191, 2199, 2192, 2193, + 2193, 2191, 2185, 2192, 2197, 2183, 2186, 2195, 2195, 2200, + 2197, 2198, 2198, 2199, 2201, 2203, 2205, 2204, 2206, 2201, + 2204, 2190, 2207, 2207, 2209, 2211, 2210, 2212, 2205, 2215, + 2206, 2200, 2210, 2209, 2203, 2214, 2214, 2216, 2218, 2218, + 2219, 2219, 2212, 2211, 2220, 2221, 2223, 2222, 2215, 2220, + 2224, 2223, 2224, 2225, 2226, 2216, 2222, 2227, 2229, 2228, + 2230, 2231, 2231, 2221, 2228, 2230, 2236, 2225, 2226, 2227, + 2232, 2232, 2233, 2233, 2234, 2234, 2235, 2237, 2229, 2238, - 2233, 2243, 2235, 2237, 2245, 2232, 2248, 2248, 0, 2231, - 2234, 2238, 2239, 2241, 2246, 2255, 2247, 2257, 2245, 2246, - 2242, 2247, 2249, 2249, 2243, 2250, 2250, 2252, 2252, 2254, - 2254, 2256, 2259, 2255, 2261, 2260, 2257, 2262, 2263, 2264, - 2266, 2265, 2256, 2265, 2267, 2268, 2272, 2263, 2269, 2269, - 2271, 2271, 2259, 2260, 2278, 2273, 2261, 2262, 2276, 2264, - 2266, 2279, 2267, 2268, 2273, 2274, 2274, 2276, 2272, 2277, - 2277, 2280, 2278, 2281, 2282, 2283, 2285, 2293, 2280, 2279, - 2284, 2286, 2286, 2287, 2287, 2288, 2289, 2290, 2281, 2291, - 2294, 2288, 2282, 2283, 2292, 2285, 2284, 2293, 2295, 2292, + 2238, 2240, 2237, 2241, 2236, 2239, 2239, 2242, 2235, 2243, + 2244, 2244, 2245, 2240, 2249, 2241, 2246, 2246, 2247, 2247, + 2252, 2248, 2250, 2251, 2254, 2243, 2249, 2242, 2253, 2250, + 2255, 2245, 2248, 2253, 2257, 2251, 2256, 2256, 2258, 2259, + 2252, 2260, 2261, 2257, 2254, 2268, 2262, 2263, 2263, 2264, + 2255, 2269, 2265, 2266, 2260, 2270, 2272, 2282, 2264, 2259, + 2262, 2283, 2271, 2268, 2258, 2271, 2261, 2265, 2266, 2273, + 2272, 2274, 2283, 2269, 2273, 2282, 2274, 2284, 2270, 2275, + 2275, 2276, 2276, 2277, 2277, 2279, 2279, 2281, 2281, 2286, + 2287, 2288, 2289, 2290, 2291, 2292, 2284, 2292, 2293, 2294, - 2297, 2297, 2290, 2295, 2289, 2296, 2301, 2296, 2291, 2298, - 2294, 2298, 2299, 2299, 2303, 2304, 2305, 2306, 2308, 2307, - 2309, 2312, 2316, 2303, 2307, 2301, 2313, 2315, 2305, 2313, - 2314, 2314, 2317, 2317, 2304, 2320, 2323, 2306, 2308, 2309, - 2316, 2312, 2315, 2318, 2321, 2322, 2322, 2318, 2321, 2323, - 2320, 2325, 2326, 2327, 2327, 2329, 2330, 2331, 2332, 2332, - 2333, 2331, 2334, 2334, 2335, 2330, 2336, 2329, 2337, 2335, - 2338, 2325, 2326, 2339, 2339, 2336, 2344, 2344, 2345, 2333, - 2346, 2346, 2338, 2347, 2337, 2348, 2349, 2352, 2350, 2351, - 2351, 2354, 2354, 2359, 2357, 2349, 2347, 2350, 2348, 2357, + 2299, 2295, 2290, 2296, 2296, 2298, 2298, 2300, 2287, 2286, + 2301, 2301, 2289, 2288, 2291, 2303, 2300, 2294, 2293, 2295, + 2304, 2304, 2299, 2305, 2303, 2306, 2307, 2308, 2309, 2310, + 2312, 2318, 2311, 2307, 2313, 2313, 2314, 2314, 2315, 2316, + 2317, 2305, 2308, 2306, 2315, 2320, 2309, 2310, 2311, 2312, + 2318, 2319, 2321, 2322, 2328, 2317, 2319, 2316, 2322, 2323, + 2330, 2323, 2324, 2324, 2325, 2320, 2325, 2326, 2326, 2330, + 2331, 2332, 2321, 2328, 2333, 2334, 2335, 2342, 2336, 2339, + 2334, 2340, 2343, 2332, 2340, 2341, 2341, 2344, 2344, 2331, + 2345, 2346, 2342, 2349, 2333, 2354, 2335, 2336, 2347, 2339, - 2345, 2358, 2352, 2360, 2361, 2362, 2358, 2359, 2360, 2363, - 2366, 2364, 2361, 2369, 2374, 2367, 2368, 0, 2363, 2364, - 2367, 2368, 2370, 2370, 2362, 2366, 2371, 2371, 2369, 2372, - 2373, 2375, 2374, 2376, 0, 2373, 2372, 2377, 2379, 2376, - 2378, 2378, 2377, 2380, 2381, 2381, 2382, 2382, 2380, 2375, - 2385, 2386, 2386, 2379, 2387, 2388, 2397, 2387, 2410, 2389, - 2388, 2388, 2390, 2385, 2389, 2391, 2392, 2390, 2393, 2394, - 2392, 2391, 2395, 2393, 2396, 2398, 2410, 2397, 2394, 2399, - 2401, 2398, 2396, 2400, 2403, 2399, 2406, 2395, 2400, 2403, - 2404, 2408, 2401, 2404, 2409, 2411, 2408, 2412, 2406, 2409, + 2343, 2345, 2347, 2350, 2351, 2351, 2346, 2350, 2349, 2352, + 2355, 2356, 2356, 2358, 2359, 2354, 2360, 2361, 2361, 2362, + 2360, 2367, 2352, 2359, 2364, 2358, 2363, 2363, 2365, 2364, + 2355, 2366, 2374, 2367, 2368, 2368, 2376, 2365, 2362, 2373, + 2373, 2375, 2375, 2377, 2378, 2381, 2379, 2366, 2388, 2376, + 2380, 2380, 2391, 2378, 2374, 2379, 2377, 2383, 2383, 2386, + 2381, 2387, 2388, 2389, 2386, 2390, 2387, 2392, 2389, 2393, + 2395, 2391, 2398, 2390, 2396, 2397, 2392, 2393, 2403, 2396, + 2397, 2399, 2399, 2400, 2400, 2395, 2401, 2398, 2404, 2402, + 2406, 2405, 2408, 2401, 2402, 2406, 2403, 2405, 2407, 2407, - 2413, 2414, 2414, 2415, 2418, 2419, 2412, 2420, 2411, 2413, - 2421, 2421, 2415, 2422, 2424, 2423, 2425, 2425, 2426, 2428, - 2430, 2432, 2432, 2418, 2423, 2419, 2420, 2431, 2433, 2424, - 2434, 2431, 2422, 2435, 2428, 2436, 2434, 2426, 2438, 2435, - 2430, 2436, 2437, 2437, 2439, 2441, 2438, 2442, 2444, 2439, - 2445, 2446, 2444, 2433, 2441, 2448, 2448, 2449, 2449, 2453, - 2442, 2450, 2450, 2453, 2445, 2454, 2446, 2452, 2452, 2458, - 2454, 2456, 2456, 2459, 2460, 2461, 2463, 2471, 2459, 2469, - 2461, 2461, 2464, 2464, 2466, 2466, 2460, 2467, 2467, 2458, - 2468, 2473, 2469, 2468, 2477, 2471, 2463, 2474, 2474, 2475, + 2409, 2410, 2410, 2411, 2411, 2409, 2404, 2408, 2414, 2415, + 2415, 2416, 2417, 2424, 2416, 2418, 2420, 2417, 2417, 2419, + 2418, 2414, 2420, 2421, 2419, 2422, 2423, 2421, 2424, 2425, + 2422, 2426, 2427, 2428, 2430, 2423, 2429, 2425, 2427, 2428, + 2432, 2429, 2435, 2437, 2433, 2432, 2430, 2433, 2437, 2439, + 2438, 2440, 2426, 2441, 2435, 2438, 2442, 2443, 2443, 2444, + 2447, 2448, 2441, 2449, 2440, 2442, 2451, 2439, 2444, 2450, + 2450, 2452, 2453, 2454, 2454, 2455, 2457, 2459, 2462, 2447, + 2452, 2448, 2449, 2471, 2460, 2451, 2463, 2453, 2460, 2461, + 2461, 2457, 2463, 2464, 2455, 2465, 2471, 2459, 2467, 2464, - 2475, 2476, 2476, 2478, 2478, 2479, 2480, 2481, 2482, 2477, - 2488, 2473, 2483, 2483, 2482, 2484, 2489, 2487, 2479, 2484, - 2490, 2481, 2487, 2487, 2480, 2491, 2492, 2493, 2495, 2495, - 2494, 2491, 2492, 2488, 2494, 2500, 2489, 2498, 2501, 2503, - 2490, 2501, 2498, 2500, 2504, 2505, 2506, 2504, 2507, 2508, - 0, 2506, 2493, 2509, 2510, 2510, 2511, 2512, 2513, 2514, - 2512, 2517, 2505, 2505, 2503, 2515, 2507, 2509, 2512, 2508, - 2511, 2516, 2513, 2515, 2518, 2518, 2516, 2516, 2514, 2523, - 2517, 2519, 2519, 2520, 2520, 2521, 2521, 2522, 2522, 2524, - 2525, 2526, 2527, 2528, 2524, 2523, 2529, 2531, 2531, 2532, + 2470, 2465, 2468, 2462, 2466, 2466, 2467, 2468, 2473, 2470, + 2474, 2475, 2476, 2474, 2473, 2475, 2477, 2479, 2479, 2480, + 2480, 2481, 2481, 2483, 2483, 2484, 2476, 2485, 2489, 2484, + 2490, 2477, 2485, 2487, 2487, 2490, 2492, 2491, 2494, 2495, + 2495, 2492, 2492, 2497, 2497, 2498, 2498, 2499, 2489, 2491, + 2499, 2500, 2502, 2504, 2505, 2505, 2506, 2506, 2494, 2507, + 2507, 2508, 2509, 2509, 2500, 2510, 2511, 2512, 2513, 2519, + 2502, 2514, 2514, 2504, 2513, 2515, 2508, 2518, 2510, 2515, + 2520, 2512, 2518, 2518, 2511, 2521, 2524, 2522, 2523, 2526, + 2526, 2525, 2519, 2522, 2523, 2525, 2529, 2534, 2531, 2532, - 2533, 2527, 2532, 2535, 2535, 2536, 2537, 2537, 2545, 2538, - 2525, 0, 2536, 2528, 2538, 2541, 2529, 2526, 2533, 2540, - 2540, 2542, 2543, 2548, 2541, 2547, 2545, 2546, 2546, 2547, - 2542, 2543, 2548, 2549, 2550, 2552, 2551, 2556, 2560, 2550, - 2550, 2561, 2556, 2562, 2552, 2557, 2557, 2564, 2549, 2551, - 2559, 2559, 2560, 2565, 2568, 2569, 2564, 2570, 2573, 2575, - 0, 2562, 2571, 2621, 2569, 2565, 2561, 2577, 2571, 2578, - 2573, 2621, 2577, 2580, 2578, 2579, 2579, 2570, 2582, 2568, - 2575, 2589, 2580, 2582, 2583, 2583, 2585, 2585, 2583, 2586, - 2586, 2587, 2587, 2588, 2590, 2591, 2597, 2593, 2598, 2594, + 2520, 2529, 2532, 2536, 2535, 2521, 2531, 2535, 2537, 2538, + 2539, 2524, 2540, 2537, 2541, 2541, 2545, 2542, 2544, 2555, + 2536, 2536, 2534, 2548, 2555, 2543, 2540, 2538, 2543, 2546, + 2539, 2542, 2544, 2547, 2556, 2545, 2543, 2546, 2547, 2547, + 2549, 2549, 2548, 2550, 2550, 2551, 2551, 2552, 2552, 2553, + 2553, 2554, 2557, 2558, 2556, 2559, 2560, 2562, 2562, 2564, + 2563, 2567, 2558, 2563, 2566, 2566, 2569, 2554, 2567, 2568, + 2568, 2569, 2571, 2571, 2572, 2559, 2560, 2564, 2557, 2573, + 2574, 2576, 2578, 2572, 2577, 2577, 2578, 2579, 2573, 2574, + 2580, 2581, 2582, 2584, 2585, 2583, 2579, 2590, 2590, 2576, - 2591, 2589, 2588, 2593, 2594, 2595, 2596, 2596, 2600, 2601, - 2595, 2599, 2602, 2590, 2597, 2601, 2599, 2603, 2603, 2598, - 2605, 2609, 2606, 2607, 2605, 2611, 2600, 2606, 2607, 2608, - 2608, 2610, 2613, 2613, 2615, 2616, 2619, 2602, 2617, 2620, - 2609, 2618, 2617, 2623, 2622, 2611, 2610, 2615, 2616, 2622, - 2618, 2625, 2619, 2624, 2624, 2627, 2627, 2630, 2620, 2628, - 2628, 2632, 2632, 2634, 2635, 2636, 2637, 2639, 2639, 2623, - 2625, 2637, 2640, 2641, 2642, 2644, 2644, 2645, 2630, 2634, - 2635, 2636, 2646, 2646, 2649, 2651, 2652, 2655, 2650, 2659, - 2651, 2645, 2640, 2642, 2650, 2657, 2641, 2653, 2653, 2654, + 2583, 2583, 2581, 2585, 2593, 2589, 2584, 2582, 2594, 2580, + 2589, 2592, 2592, 2595, 2597, 2598, 2601, 2602, 2593, 2603, + 2606, 2608, 2604, 2597, 2610, 2611, 2602, 2598, 2604, 2610, + 2611, 2595, 2606, 2594, 2612, 2612, 2613, 2622, 2615, 2603, + 2623, 2601, 2608, 2615, 0, 2613, 2616, 2616, 2618, 2618, + 2616, 2619, 2619, 2620, 2620, 2621, 2624, 2622, 2627, 2623, + 2626, 2624, 2628, 2627, 2621, 2630, 2626, 2628, 2629, 2629, + 2631, 2632, 2633, 2634, 2635, 2642, 2632, 2636, 2636, 2634, + 2638, 2639, 2640, 2630, 2638, 2643, 2639, 2640, 2641, 2641, + 2633, 2631, 2644, 2648, 2642, 2646, 2646, 2649, 2650, 2635, - 2654, 2656, 2656, 2658, 2649, 2660, 2657, 2655, 2652, 2659, - 2661, 2660, 2658, 2662, 2663, 2664, 2664, 2665, 2666, 2666, - 2665, 2656, 2671, 2670, 2672, 2662, 2673, 2673, 2674, 2661, - 2672, 2674, 2675, 2676, 2663, 2670, 2678, 2680, 2675, 2679, - 2681, 2678, 2671, 2682, 2679, 2685, 2681, 2683, 2683, 2686, - 2687, 2676, 2688, 2689, 2689, 2690, 2680, 2685, 2696, 2691, - 2682, 2682, 2693, 2693, 0, 2688, 2695, 2686, 2691, 2694, - 2694, 2695, 2696, 2697, 2690, 2687, 2698, 2698, 2697, 2699, - 2699, 2700, 2700, 2701, 2703, 2703, 2706, 2708, 2701, 2709, - 2710, 2711, 2711, 2713, 2713, 2715, 2714, 2716, 2717, 2717, + 2643, 2652, 2650, 2653, 2651, 2656, 2648, 2654, 2658, 2655, + 2649, 2663, 2644, 2651, 2655, 2654, 2673, 2652, 2657, 2657, + 2660, 2660, 2653, 2661, 2661, 2665, 2665, 2658, 2667, 2668, + 2669, 2656, 2663, 2670, 2672, 2672, 2673, 2675, 2670, 2674, + 2676, 2677, 2680, 2675, 2667, 2668, 2669, 2684, 2674, 2679, + 2679, 2681, 2681, 2685, 2687, 2690, 2680, 2686, 2694, 2685, + 2677, 2692, 2686, 2676, 2688, 2688, 2696, 2684, 2689, 2689, + 2691, 2691, 2692, 2693, 2695, 2690, 2687, 2697, 2694, 2698, + 2695, 2705, 2693, 2699, 2699, 2696, 2701, 2701, 2700, 2697, + 2691, 2700, 2706, 2705, 2707, 2708, 2708, 2710, 2709, 2698, - 2720, 2719, 2721, 2722, 0, 2706, 2716, 2719, 2722, 2708, - 2714, 2709, 2710, 2725, 2725, 2715, 2727, 2727, 2728, 2729, - 2720, 2721, 2730, 2728, 2731, 2736, 2732, 2734, 2730, 2733, - 2733, 2737, 2734, 2729, 2732, 2738, 2731, 2739, 2740, 2742, - 2738, 2743, 2744, 2745, 2740, 2736, 2746, 2742, 2753, 2739, - 2747, 2737, 2748, 2749, 2750, 2757, 2752, 2761, 2761, 2750, - 2743, 2752, 2744, 2745, 2746, 2754, 2747, 2755, 2753, 2748, - 2748, 2754, 2755, 2758, 2749, 2757, 2762, 2762, 2763, 2767, - 2767, 2773, 2763, 2769, 2769, 2773, 2758, 2770, 2770, 2776, - 2770, 2771, 2771, 2779, 2771, 2772, 2772, 2777, 2772, 2775, + 2707, 2709, 2711, 2710, 2713, 2714, 2715, 2716, 2721, 2713, + 2714, 2717, 2706, 2716, 2718, 2718, 2722, 2725, 2720, 2723, + 2711, 2724, 2724, 0, 2726, 2715, 2721, 2741, 2717, 2717, + 2720, 2731, 2723, 2726, 2728, 2728, 2725, 2729, 2729, 2730, + 2743, 2722, 2732, 2744, 2730, 2731, 2741, 2732, 2733, 2733, + 2734, 2734, 2735, 2735, 2736, 2738, 2738, 2745, 2749, 2736, + 2746, 2746, 2743, 2748, 2748, 2744, 2750, 2751, 2752, 2753, + 2754, 2754, 2757, 2884, 2756, 2758, 2884, 2759, 2753, 2745, + 2756, 2751, 2759, 2766, 2749, 2750, 2762, 2762, 2752, 2764, + 2764, 2765, 2757, 2767, 2758, 2768, 2765, 2766, 2769, 2767, - 2775, 2780, 2785, 2781, 2782, 2782, 2787, 2776, 2781, 2786, - 2787, 2777, 2800, 2779, 2788, 2789, 2786, 2791, 2800, 2792, - 2826, 2780, 2796, 2788, 2793, 2793, 2801, 2785, 2792, 2826, - 2789, 2794, 2794, 2795, 2795, 2791, 2797, 2796, 2798, 2799, - 2802, 2797, 2803, 2804, 2799, 2799, 2806, 2798, 2804, 2805, - 2798, 2801, 2807, 2807, 2805, 2802, 2808, 2878, 2809, 2810, - 2810, 2878, 2808, 2803, 2809, 2806, 2811, 2811, 2812, 2815, - 2815, 2818, 2818, 2812, 2819, 2819, 2820, 2820, 2821, 2821, - 2822, 2822, 2823, 2823, 2824, 2824, 2827, 2827, 2828, 2829, - 2830, 2834, 2832, 2833, 2833, 2835, 2842, 2828, 2837, 2837, + 2770, 2770, 2773, 2771, 2774, 2775, 2769, 2768, 2771, 2776, + 2775, 2777, 2779, 2780, 2781, 2782, 2786, 2777, 2783, 0, + 2779, 2776, 2773, 2784, 2774, 2785, 2787, 2790, 2789, 2794, + 2815, 2787, 2780, 2789, 2781, 2782, 2783, 2786, 2791, 2784, + 2792, 2795, 2785, 2785, 2791, 2792, 2870, 2790, 2815, 2794, + 2798, 2798, 2799, 2799, 2795, 2800, 2804, 2804, 2870, 2800, + 2806, 2806, 2807, 2807, 2810, 2807, 2808, 2808, 2810, 2808, + 2809, 2809, 2812, 2809, 2813, 2814, 2814, 2812, 2816, 2818, + 2819, 2820, 2824, 2813, 2821, 2821, 2820, 2825, 2827, 2826, + 2828, 2830, 2816, 2826, 2825, 2831, 2928, 2827, 2928, 2818, - 2836, 2829, 2838, 2839, 2839, 2844, 2834, 2846, 2835, 2849, - 2830, 2832, 2836, 2843, 2842, 2849, 2843, 2838, 2845, 2845, - 2848, 2850, 2851, 2848, 2852, 2846, 2853, 2851, 2856, 2854, - 2857, 2844, 2860, 2869, 2856, 2850, 2869, 2871, 2876, 2857, - 2872, 2872, 2879, 2852, 2853, 2854, 2877, 2860, 2873, 2873, - 2871, 2874, 2874, 2880, 2882, 2877, 2886, 2883, 2884, 2887, - 2887, 2876, 2879, 2884, 2885, 2888, 2885, 2880, 2883, 2889, - 2891, 2886, 2890, 2892, 2893, 2894, 2896, 2882, 2888, 2895, - 2897, 2902, 2898, 2903, 2894, 2905, 2891, 2898, 2889, 2893, - 2890, 2895, 2904, 2904, 2905, 2902, 2910, 2896, 2892, 2911, + 2819, 2832, 2832, 2835, 2831, 2828, 2840, 2824, 2837, 2830, + 2833, 2833, 2834, 2834, 2836, 2841, 2838, 2837, 2835, 2836, + 2837, 2838, 2838, 2839, 2842, 2845, 0, 2843, 2844, 2839, + 2841, 2840, 2843, 2844, 2846, 2846, 2847, 2848, 2849, 2849, + 2850, 2850, 2847, 2848, 2845, 2842, 2851, 2854, 2854, 2857, + 2857, 2851, 2858, 2858, 2859, 2859, 2860, 2860, 2861, 2861, + 2862, 2862, 2863, 2863, 2864, 2864, 2865, 2867, 2868, 2868, + 2869, 2871, 2874, 2874, 2873, 2875, 2867, 2877, 2883, 2869, + 2879, 2876, 2878, 2878, 2880, 2880, 2885, 2886, 2886, 2877, + 2875, 2871, 2865, 2873, 2876, 2879, 2883, 2887, 2889, 2890, - 2897, 2906, 2906, 2903, 2907, 2907, 2908, 2908, 2909, 2909, - 2912, 2913, 2914, 2912, 2915, 2910, 2913, 2914, 2916, 2911, - 2917, 2918, 2919, 2920, 2921, 2923, 2917, 2924, 2920, 2922, - 2922, 2925, 2925, 2916, 2919, 2918, 2927, 2929, 2935, 2915, - 2923, 2932, 2932, 2936, 2921, 2934, 2924, 2933, 2933, 2936, - 2937, 2927, 2938, 2934, 2939, 2929, 2937, 2935, 2940, 2941, - 2942, 2942, 2943, 2943, 2941, 2945, 2938, 2939, 2946, 2948, - 2949, 2951, 2954, 2952, 2949, 2953, 2955, 2940, 2952, 2956, - 2959, 2959, 2957, 2948, 2962, 2954, 2945, 2957, 2946, 2955, - 2958, 2951, 2963, 2964, 2953, 2958, 2965, 2965, 2956, 2972, + 2891, 2889, 2892, 2893, 2895, 2890, 2894, 2892, 2898, 0, + 2897, 2901, 2885, 2911, 2891, 2887, 2897, 2898, 2911, 2914, + 2895, 2919, 2893, 2921, 2894, 2912, 2901, 2921, 2912, 2915, + 2915, 2920, 2914, 2916, 2916, 2917, 2917, 2922, 2923, 2925, + 2920, 2927, 2926, 2929, 2919, 2932, 2927, 2930, 2930, 2933, + 2931, 2935, 2923, 2926, 2934, 2941, 2936, 2922, 2929, 2937, + 2938, 2939, 2925, 2931, 2932, 2940, 2940, 2933, 2937, 2942, + 2934, 2936, 2938, 2946, 2942, 2941, 2935, 2947, 2948, 2948, + 2949, 2954, 2939, 2950, 2950, 2951, 2951, 2946, 2955, 2949, + 2952, 2952, 2953, 2953, 2957, 2956, 2958, 2947, 2956, 2957, - 2966, 2967, 2968, 2968, 2962, 2966, 2969, 2967, 2970, 2971, - 2963, 2969, 2964, 2970, 2971, 2973, 2975, 2975, 2972, 2976, - 2980, 2973, 2977, 2977, 2976, 2979, 2981, 2982, 2983, 2979, - 2984, 2985, 2986, 2981, 2988, 2988, 2984, 2990, 2990, 2980, - 2991, 2993, 2994, 2992, 2995, 2986, 2982, 2983, 2992, 2991, - 2985, 2997, 2991, 2996, 2996, 2998, 2997, 2995, 3000, 3002, - 2993, 2994, 3001, 3001, 3003, 3003, 3004, 3004, 2998, 3005, - 3006, 3007, 3008, 3008, 3005, 3009, 3014, 3006, 3002, 3010, - 3009, 3010, 3011, 3011, 3000, 3012, 3013, 3016, 3019, 3015, - 3007, 3023, 3012, 3013, 3015, 3014, 3018, 3018, 3021, 3022, + 2954, 2958, 2959, 2960, 2961, 2962, 2964, 2968, 2955, 2963, + 2961, 2964, 2965, 2967, 2967, 2969, 2970, 2970, 2960, 2962, + 2972, 2963, 2968, 2974, 2977, 2977, 2980, 2959, 2978, 2978, + 2979, 2981, 2965, 2982, 2969, 2972, 2983, 2981, 2979, 2982, + 2984, 2974, 2985, 2986, 2990, 2980, 2987, 2987, 2986, 2991, + 2983, 2988, 2988, 2984, 2993, 2994, 2996, 2997, 2998, 2994, + 2999, 2985, 2997, 3001, 3007, 2990, 3000, 3002, 2993, 2991, + 3003, 3008, 3002, 2999, 3009, 3003, 2996, 2998, 3011, 3000, + 3004, 3004, 3001, 3011, 3007, 3010, 3010, 3014, 3012, 3008, + 3013, 3013, 3014, 3009, 3012, 3015, 3016, 3017, 3018, 3025, - 3024, 3025, 3025, 3021, 3022, 3028, 3016, 3019, 3027, 3027, - 3023, 3029, 3030, 3030, 3031, 3031, 3032, 3034, 3034, 3024, - 3035, 3035, 3036, 3032, 3028, 3042, 3038, 3041, 3043, 3036, - 3029, 3038, 3041, 3044, 3044, 3045, 3045, 0, 0, 0, - 0, 0, 0, 0, 3042, 0, 0, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3050, 3050, 3050, 3050, 3050, - 3050, 3050, 3051, 3051, 3051, 3051, 3051, 3051, 3051, 3052, - 3052, 3052, 3052, 3052, 3052, 3052, 3053, 3053, 3053, 3053, - 3053, 3053, 3053, 3055, 3055, 0, 3055, 3055, 3055, 3055, - 3056, 3056, 0, 0, 0, 3056, 3056, 3057, 3057, 0, + 3015, 3016, 3020, 3020, 3018, 3021, 3022, 3022, 3024, 3027, + 3021, 3028, 3024, 3026, 3030, 3029, 3017, 3036, 3025, 3031, + 3026, 3029, 3033, 3033, 3035, 3035, 3036, 3038, 3027, 3036, + 3028, 3037, 3031, 3030, 3039, 3040, 3037, 3041, 3041, 3042, + 3045, 3043, 3046, 3046, 3042, 3047, 3038, 0, 3040, 3048, + 3048, 3049, 3049, 3039, 3043, 3050, 3051, 3052, 3053, 3053, + 3050, 0, 3054, 3051, 3047, 3059, 3045, 3054, 3055, 3061, + 3055, 3056, 3056, 3057, 3058, 3064, 3052, 3060, 3063, 3063, + 3057, 3058, 3060, 3068, 3059, 3066, 3067, 3069, 3061, 3073, + 3066, 3067, 3070, 3070, 3064, 3072, 3072, 3074, 3075, 3075, - 0, 3057, 0, 3057, 3058, 0, 0, 0, 0, 0, - 3058, 3059, 3059, 0, 0, 0, 3059, 3059, 3060, 0, - 0, 0, 0, 0, 3060, 3061, 3061, 0, 3061, 3061, - 3061, 3061, 3062, 3062, 0, 3062, 3062, 3062, 3062, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048, 3048 + 3076, 3076, 3068, 3077, 3079, 3079, 3069, 3081, 3073, 3087, + 3077, 3080, 3080, 3083, 3081, 3086, 3074, 3088, 3083, 0, + 3086, 3089, 3089, 3090, 3090, 0, 0, 0, 3087, 0, + 0, 0, 0, 0, 0, 0, 3088, 3094, 3094, 3094, + 3094, 3094, 3094, 3094, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097, + 3097, 3097, 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, + 3098, 3098, 3100, 3100, 0, 3100, 3100, 3100, 3100, 3101, + 3101, 0, 0, 0, 3101, 3101, 3102, 3102, 0, 0, + 3102, 0, 3102, 3103, 0, 0, 0, 0, 0, 3103, + + 3104, 3104, 0, 0, 0, 3104, 3104, 3105, 0, 0, + 0, 0, 0, 3105, 3106, 3106, 0, 3106, 3106, 3106, + 3106, 3107, 3107, 0, 3107, 3107, 3107, 3107, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, + 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093, 3093 } ; static yy_state_type yy_last_accepting_state; @@ -2942,7 +2978,7 @@ static void config_end_include(void) } #endif -#line 2943 "" +#line 2980 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2951,9 +2987,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2952 "" +#line 2989 "" -#line 2954 "" +#line 2991 "" #define INITIAL 0 #define quotedstring 1 @@ -3175,7 +3211,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3176 "" +#line 3213 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3208,13 +3244,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5940 ); + while ( yy_base[yy_current_state] != 6029 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4615,123 +4651,143 @@ YY_RULE_SETUP case 273: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_PAD_RESPONSES) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_PAD_QUERIES) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 290: -/* rule 290 can match eol */ YY_RULE_SETUP #line 508 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V4) } + YY_BREAK +case 291: +YY_RULE_SETUP +#line 509 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V6) } + YY_BREAK +case 292: +YY_RULE_SETUP +#line 510 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 511 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 294: +/* rule 294 can match eol */ +YY_RULE_SETUP +#line 512 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 291: +case 295: YY_RULE_SETUP -#line 511 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 512 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 292: +case 296: YY_RULE_SETUP -#line 517 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 293: -/* rule 293 can match eol */ +case 297: +/* rule 297 can match eol */ YY_RULE_SETUP -#line 518 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 294: +case 298: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4744,34 +4800,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 295: +case 299: YY_RULE_SETUP -#line 532 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 533 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: +case 300: YY_RULE_SETUP -#line 538 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 297: -/* rule 297 can match eol */ +case 301: +/* rule 301 can match eol */ YY_RULE_SETUP -#line 539 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 302: YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4784,38 +4840,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 299: +case 303: YY_RULE_SETUP -#line 553 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 555 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 300: +case 304: YY_RULE_SETUP -#line 559 "./util/configlexer.lex" +#line 563 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 301: -/* rule 301 can match eol */ +case 305: +/* rule 305 can match eol */ YY_RULE_SETUP -#line 560 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 302: +case 306: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 303: +case 307: YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 566 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4823,27 +4879,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 567 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 304: +case 308: YY_RULE_SETUP -#line 571 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 305: -/* rule 305 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 306: +case 310: YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4853,7 +4909,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 580 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4865,33 +4921,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 307: +case 311: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 308: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 599 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 309: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 310: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4892 "" +#line 4949 "" case YY_END_OF_BUFFER: { @@ -5186,7 +5242,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5214,11 +5270,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3049 ) + if ( yy_current_state >= 3094 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3048); + yy_is_jam = (yy_current_state == 3093); return yy_is_jam ? 0 : yy_current_state; } @@ -5857,6 +5913,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 603 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index e4baf13f9..5200a5f2f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -488,6 +488,10 @@ dnscrypt-shared-secret-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } dnscrypt-nonce-cache-size{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } dnscrypt-nonce-cache-slabs{COLON} { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +pad-responses{COLON} { YDVAR(1, VAR_PAD_RESPONSES) } +pad-responses-block-size{COLON} { YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) } +pad-queries{COLON} { YDVAR(1, VAR_PAD_QUERIES) } +pad-queries-block-size{COLON} { YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) } ipsecmod-enabled{COLON} { YDVAR(1, VAR_IPSECMOD_ENABLED) } ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } diff --git a/util/configparser.c b/util/configparser.c index 657f99579..6f3e29eea 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,73 +1,23 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* original parser id follows */ +/* yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93" */ +/* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */ -/* Bison implementation for Yacc-like parsers in C +#define YYBYACC 1 +#define YYMAJOR 1 +#define YYMINOR 9 +#define YYPATCH 20140715 - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. +#define YYEMPTY (-1) +#define yyclearin (yychar = YYEMPTY) +#define yyerrok (yyerrflag = 0) +#define YYRECOVERING() (yyerrflag != 0) +#define YYENOMEM (-2) +#define YYEOF 0 +#define YYPREFIX "yy" - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* C LALR(1) parser skeleton written by Richard Stallman, by - simplifying the original so-called "semantic" parser. */ - -/* All symbols defined below should begin with yy or YY, to avoid - infringing on user name space. This should be done even for local - variables, as they might otherwise be expanded by user macros. - There are some unavoidable exceptions within include files to - define necessary library symbols; they are noted "INFRINGES ON - USER NAME SPACE" below. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -/* Identify Bison output. */ -#define YYBISON 1 - -/* Bison version. */ -#define YYBISON_VERSION "3.4.1" - -/* Skeleton name. */ -#define YYSKELETON_NAME "yacc.c" - -/* Pure parsers. */ #define YYPURE 0 -/* Push parsers. */ -#define YYPUSH 0 - -/* Pull parsers. */ -#define YYPULL 1 - - - - -/* First part of user prologue. */ -#line 38 "./util/configparser.y" - +#line 39 "./util/configparser.y" #include "config.h" #include @@ -94,6531 +44,1751 @@ extern struct config_parser_state* cfg_parser; #define OUTYY(s) #endif - -#line 99 "util/configparser.c" - -# ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif -# else -# define YY_NULLPTR ((void*)0) -# endif -# endif - -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, - VAR_FOR_UPSTREAM = 507, - VAR_AUTH_ZONE = 508, - VAR_ZONEFILE = 509, - VAR_MASTER = 510, - VAR_URL = 511, - VAR_FOR_DOWNSTREAM = 512, - VAR_FALLBACK_ENABLED = 513, - VAR_TLS_ADDITIONAL_PORT = 514, - VAR_LOW_RTT = 515, - VAR_LOW_RTT_PERMIL = 516, - VAR_FAST_SERVER_PERMIL = 517, - VAR_FAST_SERVER_NUM = 518, - VAR_ALLOW_NOTIFY = 519, - VAR_TLS_WIN_CERT = 520, - VAR_TCP_CONNECTION_LIMIT = 521, - VAR_FORWARD_NO_CACHE = 522, - VAR_STUB_NO_CACHE = 523, - VAR_LOG_SERVFAIL = 524, - VAR_DENY_ANY = 525, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, - VAR_LOG_TAG_QUERYREPLY = 527, - VAR_STREAM_WAIT_SIZE = 528, - VAR_TLS_CIPHERS = 529, - VAR_TLS_CIPHERSUITES = 530, - VAR_IPSET = 531, - VAR_IPSET_NAME_V4 = 532, - VAR_IPSET_NAME_V6 = 533, - VAR_TLS_SESSION_TICKET_KEYS = 534, - VAR_RPZ = 535, - VAR_TAGS = 536, - VAR_RPZ_ACTION_OVERRIDE = 537, - VAR_RPZ_CNAME_OVERRIDE = 538, - VAR_RPZ_LOG = 539, - VAR_RPZ_LOG_NAME = 540 - }; -#endif -/* Tokens. */ -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 -#define VAR_FOR_UPSTREAM 507 -#define VAR_AUTH_ZONE 508 -#define VAR_ZONEFILE 509 -#define VAR_MASTER 510 -#define VAR_URL 511 -#define VAR_FOR_DOWNSTREAM 512 -#define VAR_FALLBACK_ENABLED 513 -#define VAR_TLS_ADDITIONAL_PORT 514 -#define VAR_LOW_RTT 515 -#define VAR_LOW_RTT_PERMIL 516 -#define VAR_FAST_SERVER_PERMIL 517 -#define VAR_FAST_SERVER_NUM 518 -#define VAR_ALLOW_NOTIFY 519 -#define VAR_TLS_WIN_CERT 520 -#define VAR_TCP_CONNECTION_LIMIT 521 -#define VAR_FORWARD_NO_CACHE 522 -#define VAR_STUB_NO_CACHE 523 -#define VAR_LOG_SERVFAIL 524 -#define VAR_DENY_ANY 525 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 -#define VAR_LOG_TAG_QUERYREPLY 527 -#define VAR_STREAM_WAIT_SIZE 528 -#define VAR_TLS_CIPHERS 529 -#define VAR_TLS_CIPHERSUITES 530 -#define VAR_IPSET 531 -#define VAR_IPSET_NAME_V4 532 -#define VAR_IPSET_NAME_V6 533 -#define VAR_TLS_SESSION_TICKET_KEYS 534 -#define VAR_RPZ 535 -#define VAR_TAGS 536 -#define VAR_RPZ_ACTION_OVERRIDE 537 -#define VAR_RPZ_CNAME_OVERRIDE 538 -#define VAR_RPZ_LOG 539 -#define VAR_RPZ_LOG_NAME 540 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ #line 66 "./util/configparser.y" - +#ifdef YYSTYPE +#undef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +#endif +#ifndef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +typedef union { char* str; +} YYSTYPE; +#endif /* !YYSTYPE_IS_DECLARED */ +#line 59 "util/configparser.c" -#line 716 "util/configparser.c" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ - - - -#ifdef short -# undef short -#endif - -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; -#endif - -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; -#else -typedef signed char yytype_int8; -#endif - -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; -#else -typedef short yytype_int16; -#endif - -#ifndef YYSIZE_T -# ifdef __SIZE_TYPE__ -# define YYSIZE_T __SIZE_TYPE__ -# elif defined size_t -# define YYSIZE_T size_t -# elif ! defined YYSIZE_T -# include /* INFRINGES ON USER NAME SPACE */ -# define YYSIZE_T size_t +/* compatibility with bison */ +#ifdef YYPARSE_PARAM +/* compatibility with FreeBSD */ +# ifdef YYPARSE_PARAM_TYPE +# define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM) # else -# define YYSIZE_T unsigned +# define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM) # endif -#endif - -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) - -#ifndef YY_ -# if defined YYENABLE_NLS && YYENABLE_NLS -# if ENABLE_NLS -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_(Msgid) dgettext ("bison-runtime", Msgid) -# endif -# endif -# ifndef YY_ -# define YY_(Msgid) Msgid -# endif -#endif - -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -/* Suppress unused-variable warnings by "using" E. */ -#if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YYPARSE_DECL() yyparse(void) #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Parameters sent to lex. */ +#ifdef YYLEX_PARAM +# define YYLEX_DECL() yylex(void *YYLEX_PARAM) +# define YYLEX yylex(YYLEX_PARAM) #else -# define YY_INITIAL_VALUE(Value) Value -#endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ +# define YYLEX_DECL() yylex(void) +# define YYLEX yylex() #endif +/* Parameters sent to yyerror. */ +#ifndef YYERROR_DECL +#define YYERROR_DECL() yyerror(const char *s) +#endif +#ifndef YYERROR_CALL +#define YYERROR_CALL(msg) yyerror(msg) +#endif -#define YY_ASSERT(E) ((void) (0 && (E))) +extern int YYPARSE_DECL(); -#if ! defined yyoverflow || YYERROR_VERBOSE - -/* The parser invokes alloca or malloc; define the necessary symbols. */ - -# ifdef YYSTACK_USE_ALLOCA -# if YYSTACK_USE_ALLOCA -# ifdef __GNUC__ -# define YYSTACK_ALLOC __builtin_alloca -# elif defined __BUILTIN_VA_ARG_INCR -# include /* INFRINGES ON USER NAME SPACE */ -# elif defined _AIX -# define YYSTACK_ALLOC __alloca -# elif defined _MSC_VER -# include /* INFRINGES ON USER NAME SPACE */ -# define alloca _alloca -# else -# define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS -# include /* INFRINGES ON USER NAME SPACE */ - /* Use EXIT_SUCCESS as a witness for stdlib.h. */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# endif -# endif -# endif - -# ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -# ifndef YYSTACK_ALLOC_MAXIMUM - /* The OS might guarantee only one guard page at the bottom of the stack, - and a page size can be as small as 4096 bytes. So we cannot safely - invoke alloca (N) if N exceeds 4096. Use a slightly smaller number - to allow for a few compiler-allocated temporary stack slots. */ -# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ -# endif -# else -# define YYSTACK_ALLOC YYMALLOC -# define YYSTACK_FREE YYFREE -# ifndef YYSTACK_ALLOC_MAXIMUM -# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM -# endif -# if (defined __cplusplus && ! defined EXIT_SUCCESS \ - && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) -# include /* INFRINGES ON USER NAME SPACE */ -# ifndef EXIT_SUCCESS -# define EXIT_SUCCESS 0 -# endif -# endif -# ifndef YYMALLOC -# define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS -void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# ifndef YYFREE -# define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS -void free (void *); /* INFRINGES ON USER NAME SPACE */ -# endif -# endif -# endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - - -#if (! defined yyoverflow \ - && (! defined __cplusplus \ - || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) - -/* A type that is properly aligned for any stack member. */ -union yyalloc -{ - yytype_int16 yyss_alloc; - YYSTYPE yyvs_alloc; +#define SPACE 257 +#define LETTER 258 +#define NEWLINE 259 +#define COMMENT 260 +#define COLON 261 +#define ANY 262 +#define ZONESTR 263 +#define STRING_ARG 264 +#define VAR_SERVER 265 +#define VAR_VERBOSITY 266 +#define VAR_NUM_THREADS 267 +#define VAR_PORT 268 +#define VAR_OUTGOING_RANGE 269 +#define VAR_INTERFACE 270 +#define VAR_PREFER_IP4 271 +#define VAR_DO_IP4 272 +#define VAR_DO_IP6 273 +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_TCP_IDLE_TIMEOUT 279 +#define VAR_EDNS_TCP_KEEPALIVE 280 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281 +#define VAR_CHROOT 282 +#define VAR_USERNAME 283 +#define VAR_DIRECTORY 284 +#define VAR_LOGFILE 285 +#define VAR_PIDFILE 286 +#define VAR_MSG_CACHE_SIZE 287 +#define VAR_MSG_CACHE_SLABS 288 +#define VAR_NUM_QUERIES_PER_THREAD 289 +#define VAR_RRSET_CACHE_SIZE 290 +#define VAR_RRSET_CACHE_SLABS 291 +#define VAR_OUTGOING_NUM_TCP 292 +#define VAR_INFRA_HOST_TTL 293 +#define VAR_INFRA_LAME_TTL 294 +#define VAR_INFRA_CACHE_SLABS 295 +#define VAR_INFRA_CACHE_NUMHOSTS 296 +#define VAR_INFRA_CACHE_LAME_SIZE 297 +#define VAR_NAME 298 +#define VAR_STUB_ZONE 299 +#define VAR_STUB_HOST 300 +#define VAR_STUB_ADDR 301 +#define VAR_TARGET_FETCH_POLICY 302 +#define VAR_HARDEN_SHORT_BUFSIZE 303 +#define VAR_HARDEN_LARGE_QUERIES 304 +#define VAR_FORWARD_ZONE 305 +#define VAR_FORWARD_HOST 306 +#define VAR_FORWARD_ADDR 307 +#define VAR_DO_NOT_QUERY_ADDRESS 308 +#define VAR_HIDE_IDENTITY 309 +#define VAR_HIDE_VERSION 310 +#define VAR_IDENTITY 311 +#define VAR_VERSION 312 +#define VAR_HARDEN_GLUE 313 +#define VAR_MODULE_CONF 314 +#define VAR_TRUST_ANCHOR_FILE 315 +#define VAR_TRUST_ANCHOR 316 +#define VAR_VAL_OVERRIDE_DATE 317 +#define VAR_BOGUS_TTL 318 +#define VAR_VAL_CLEAN_ADDITIONAL 319 +#define VAR_VAL_PERMISSIVE_MODE 320 +#define VAR_INCOMING_NUM_TCP 321 +#define VAR_MSG_BUFFER_SIZE 322 +#define VAR_KEY_CACHE_SIZE 323 +#define VAR_KEY_CACHE_SLABS 324 +#define VAR_TRUSTED_KEYS_FILE 325 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326 +#define VAR_USE_SYSLOG 327 +#define VAR_OUTGOING_INTERFACE 328 +#define VAR_ROOT_HINTS 329 +#define VAR_DO_NOT_QUERY_LOCALHOST 330 +#define VAR_CACHE_MAX_TTL 331 +#define VAR_HARDEN_DNSSEC_STRIPPED 332 +#define VAR_ACCESS_CONTROL 333 +#define VAR_LOCAL_ZONE 334 +#define VAR_LOCAL_DATA 335 +#define VAR_INTERFACE_AUTOMATIC 336 +#define VAR_STATISTICS_INTERVAL 337 +#define VAR_DO_DAEMONIZE 338 +#define VAR_USE_CAPS_FOR_ID 339 +#define VAR_STATISTICS_CUMULATIVE 340 +#define VAR_OUTGOING_PORT_PERMIT 341 +#define VAR_OUTGOING_PORT_AVOID 342 +#define VAR_DLV_ANCHOR_FILE 343 +#define VAR_DLV_ANCHOR 344 +#define VAR_NEG_CACHE_SIZE 345 +#define VAR_HARDEN_REFERRAL_PATH 346 +#define VAR_PRIVATE_ADDRESS 347 +#define VAR_PRIVATE_DOMAIN 348 +#define VAR_REMOTE_CONTROL 349 +#define VAR_CONTROL_ENABLE 350 +#define VAR_CONTROL_INTERFACE 351 +#define VAR_CONTROL_PORT 352 +#define VAR_SERVER_KEY_FILE 353 +#define VAR_SERVER_CERT_FILE 354 +#define VAR_CONTROL_KEY_FILE 355 +#define VAR_CONTROL_CERT_FILE 356 +#define VAR_CONTROL_USE_CERT 357 +#define VAR_EXTENDED_STATISTICS 358 +#define VAR_LOCAL_DATA_PTR 359 +#define VAR_JOSTLE_TIMEOUT 360 +#define VAR_STUB_PRIME 361 +#define VAR_UNWANTED_REPLY_THRESHOLD 362 +#define VAR_LOG_TIME_ASCII 363 +#define VAR_DOMAIN_INSECURE 364 +#define VAR_PYTHON 365 +#define VAR_PYTHON_SCRIPT 366 +#define VAR_VAL_SIG_SKEW_MIN 367 +#define VAR_VAL_SIG_SKEW_MAX 368 +#define VAR_CACHE_MIN_TTL 369 +#define VAR_VAL_LOG_LEVEL 370 +#define VAR_AUTO_TRUST_ANCHOR_FILE 371 +#define VAR_KEEP_MISSING 372 +#define VAR_ADD_HOLDDOWN 373 +#define VAR_DEL_HOLDDOWN 374 +#define VAR_SO_RCVBUF 375 +#define VAR_EDNS_BUFFER_SIZE 376 +#define VAR_PREFETCH 377 +#define VAR_PREFETCH_KEY 378 +#define VAR_SO_SNDBUF 379 +#define VAR_SO_REUSEPORT 380 +#define VAR_HARDEN_BELOW_NXDOMAIN 381 +#define VAR_IGNORE_CD_FLAG 382 +#define VAR_LOG_QUERIES 383 +#define VAR_LOG_REPLIES 384 +#define VAR_LOG_LOCAL_ACTIONS 385 +#define VAR_TCP_UPSTREAM 386 +#define VAR_SSL_UPSTREAM 387 +#define VAR_SSL_SERVICE_KEY 388 +#define VAR_SSL_SERVICE_PEM 389 +#define VAR_SSL_PORT 390 +#define VAR_FORWARD_FIRST 391 +#define VAR_STUB_SSL_UPSTREAM 392 +#define VAR_FORWARD_SSL_UPSTREAM 393 +#define VAR_TLS_CERT_BUNDLE 394 +#define VAR_STUB_FIRST 395 +#define VAR_MINIMAL_RESPONSES 396 +#define VAR_RRSET_ROUNDROBIN 397 +#define VAR_MAX_UDP_SIZE 398 +#define VAR_DELAY_CLOSE 399 +#define VAR_UNBLOCK_LAN_ZONES 400 +#define VAR_INSECURE_LAN_ZONES 401 +#define VAR_INFRA_CACHE_MIN_RTT 402 +#define VAR_DNS64_PREFIX 403 +#define VAR_DNS64_SYNTHALL 404 +#define VAR_DNS64_IGNORE_AAAA 405 +#define VAR_DNSTAP 406 +#define VAR_DNSTAP_ENABLE 407 +#define VAR_DNSTAP_SOCKET_PATH 408 +#define VAR_DNSTAP_IP 409 +#define VAR_DNSTAP_TLS 410 +#define VAR_DNSTAP_TLS_SERVER_NAME 411 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 412 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414 +#define VAR_DNSTAP_SEND_IDENTITY 415 +#define VAR_DNSTAP_SEND_VERSION 416 +#define VAR_DNSTAP_IDENTITY 417 +#define VAR_DNSTAP_VERSION 418 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424 +#define VAR_RESPONSE_IP_TAG 425 +#define VAR_RESPONSE_IP 426 +#define VAR_RESPONSE_IP_DATA 427 +#define VAR_HARDEN_ALGO_DOWNGRADE 428 +#define VAR_IP_TRANSPARENT 429 +#define VAR_IP_DSCP 430 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 +#define VAR_IP_RATELIMIT 432 +#define VAR_IP_RATELIMIT_SLABS 433 +#define VAR_IP_RATELIMIT_SIZE 434 +#define VAR_RATELIMIT 435 +#define VAR_RATELIMIT_SLABS 436 +#define VAR_RATELIMIT_SIZE 437 +#define VAR_RATELIMIT_FOR_DOMAIN 438 +#define VAR_RATELIMIT_BELOW_DOMAIN 439 +#define VAR_IP_RATELIMIT_FACTOR 440 +#define VAR_RATELIMIT_FACTOR 441 +#define VAR_SEND_CLIENT_SUBNET 442 +#define VAR_CLIENT_SUBNET_ZONE 443 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 +#define VAR_CLIENT_SUBNET_OPCODE 445 +#define VAR_MAX_CLIENT_SUBNET_IPV4 446 +#define VAR_MAX_CLIENT_SUBNET_IPV6 447 +#define VAR_MIN_CLIENT_SUBNET_IPV4 448 +#define VAR_MIN_CLIENT_SUBNET_IPV6 449 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 +#define VAR_CAPS_WHITELIST 452 +#define VAR_CACHE_MAX_NEGATIVE_TTL 453 +#define VAR_PERMIT_SMALL_HOLDDOWN 454 +#define VAR_QNAME_MINIMISATION 455 +#define VAR_QNAME_MINIMISATION_STRICT 456 +#define VAR_IP_FREEBIND 457 +#define VAR_DEFINE_TAG 458 +#define VAR_LOCAL_ZONE_TAG 459 +#define VAR_ACCESS_CONTROL_TAG 460 +#define VAR_LOCAL_ZONE_OVERRIDE 461 +#define VAR_ACCESS_CONTROL_TAG_ACTION 462 +#define VAR_ACCESS_CONTROL_TAG_DATA 463 +#define VAR_VIEW 464 +#define VAR_ACCESS_CONTROL_VIEW 465 +#define VAR_VIEW_FIRST 466 +#define VAR_SERVE_EXPIRED 467 +#define VAR_SERVE_EXPIRED_TTL 468 +#define VAR_SERVE_EXPIRED_TTL_RESET 469 +#define VAR_SERVE_EXPIRED_REPLY_TTL 470 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 +#define VAR_FAKE_DSA 472 +#define VAR_FAKE_SHA1 473 +#define VAR_LOG_IDENTITY 474 +#define VAR_HIDE_TRUSTANCHOR 475 +#define VAR_TRUST_ANCHOR_SIGNALING 476 +#define VAR_AGGRESSIVE_NSEC 477 +#define VAR_USE_SYSTEMD 478 +#define VAR_SHM_ENABLE 479 +#define VAR_SHM_KEY 480 +#define VAR_ROOT_KEY_SENTINEL 481 +#define VAR_DNSCRYPT 482 +#define VAR_DNSCRYPT_ENABLE 483 +#define VAR_DNSCRYPT_PORT 484 +#define VAR_DNSCRYPT_PROVIDER 485 +#define VAR_DNSCRYPT_SECRET_KEY 486 +#define VAR_DNSCRYPT_PROVIDER_CERT 487 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 +#define VAR_PAD_RESPONSES 493 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 494 +#define VAR_PAD_QUERIES 495 +#define VAR_PAD_QUERIES_BLOCK_SIZE 496 +#define VAR_IPSECMOD_ENABLED 497 +#define VAR_IPSECMOD_HOOK 498 +#define VAR_IPSECMOD_IGNORE_BOGUS 499 +#define VAR_IPSECMOD_MAX_TTL 500 +#define VAR_IPSECMOD_WHITELIST 501 +#define VAR_IPSECMOD_STRICT 502 +#define VAR_CACHEDB 503 +#define VAR_CACHEDB_BACKEND 504 +#define VAR_CACHEDB_SECRETSEED 505 +#define VAR_CACHEDB_REDISHOST 506 +#define VAR_CACHEDB_REDISPORT 507 +#define VAR_CACHEDB_REDISTIMEOUT 508 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509 +#define VAR_FOR_UPSTREAM 510 +#define VAR_AUTH_ZONE 511 +#define VAR_ZONEFILE 512 +#define VAR_MASTER 513 +#define VAR_URL 514 +#define VAR_FOR_DOWNSTREAM 515 +#define VAR_FALLBACK_ENABLED 516 +#define VAR_TLS_ADDITIONAL_PORT 517 +#define VAR_LOW_RTT 518 +#define VAR_LOW_RTT_PERMIL 519 +#define VAR_FAST_SERVER_PERMIL 520 +#define VAR_FAST_SERVER_NUM 521 +#define VAR_ALLOW_NOTIFY 522 +#define VAR_TLS_WIN_CERT 523 +#define VAR_TCP_CONNECTION_LIMIT 524 +#define VAR_FORWARD_NO_CACHE 525 +#define VAR_STUB_NO_CACHE 526 +#define VAR_LOG_SERVFAIL 527 +#define VAR_DENY_ANY 528 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529 +#define VAR_LOG_TAG_QUERYREPLY 530 +#define VAR_STREAM_WAIT_SIZE 531 +#define VAR_TLS_CIPHERS 532 +#define VAR_TLS_CIPHERSUITES 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define YYERRCODE 256 +typedef short YYINT; +static const YYINT yylhs[] = { -1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 3, 3, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, + 4, 5, 5, 220, 220, 220, 220, 220, 220, 220, + 6, 7, 7, 228, 228, 228, 228, 228, 228, 14, + 15, 15, 235, 235, 235, 235, 235, 235, 235, 22, + 23, 23, 243, 243, 243, 243, 243, 243, 243, 243, + 252, 253, 254, 255, 256, 24, 25, 25, 257, 257, + 257, 257, 257, 257, 257, 257, 257, 257, 27, 28, + 91, 94, 103, 191, 192, 29, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 42, 82, 30, 95, + 96, 53, 75, 90, 31, 32, 35, 36, 33, 34, + 37, 38, 39, 40, 41, 126, 203, 127, 129, 130, + 131, 205, 210, 206, 217, 218, 219, 187, 92, 81, + 107, 124, 125, 215, 212, 128, 43, 44, 45, 46, + 47, 83, 97, 98, 113, 69, 79, 70, 195, 196, + 108, 63, 64, 194, 65, 66, 117, 121, 135, 144, + 170, 147, 216, 118, 76, 48, 49, 50, 105, 136, + 137, 138, 51, 52, 54, 55, 57, 58, 56, 142, + 59, 60, 61, 67, 86, 122, 100, 143, 93, 166, + 101, 102, 119, 120, 213, 106, 62, 84, 87, 68, + 71, 109, 110, 85, 167, 111, 72, 73, 74, 204, + 123, 180, 181, 182, 183, 184, 185, 193, 112, 80, + 114, 115, 116, 168, 77, 78, 99, 88, 89, 104, + 132, 133, 214, 134, 139, 140, 141, 171, 172, 174, + 176, 177, 175, 178, 188, 145, 146, 150, 151, 148, + 149, 152, 153, 155, 154, 207, 209, 208, 169, 179, + 258, 259, 260, 261, 197, 199, 198, 200, 201, 202, + 221, 222, 223, 225, 226, 227, 224, 229, 230, 231, + 232, 233, 234, 244, 245, 246, 247, 251, 248, 249, + 250, 236, 237, 240, 241, 238, 242, 239, 10, 11, + 11, 262, 262, 262, 262, 262, 262, 262, 262, 263, + 265, 264, 270, 266, 267, 268, 269, 12, 13, 13, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 8, 9, 9, 290, + 291, 173, 186, 189, 190, 16, 17, 17, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 292, 293, 294, + 295, 297, 298, 296, 299, 300, 301, 302, 18, 19, + 19, 303, 303, 303, 303, 303, 304, 305, 306, 307, + 308, 211, 20, 21, 21, 309, 309, 310, 311, }; - -/* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) - -/* The size of an array large to enough to hold all stacks, each with - N elements. */ -# define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ - + YYSTACK_GAP_MAXIMUM) - -# define YYCOPY_NEEDED 1 - -/* Relocate STACK from its old location to the new one. The - local variables YYSIZE and YYSTACKSIZE give the old and new number of - elements in the stack, and YYPTR gives the new location of the - stack. Advance YYPTR to a properly aligned location for the next - stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) - -#endif - -#if defined YYCOPY_NEEDED && YYCOPY_NEEDED -/* Copy COUNT objects from SRC to DST. The source and destination do - not overlap. */ -# ifndef YYCOPY -# if defined __GNUC__ && 1 < __GNUC__ -# define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) -# else -# define YYCOPY(Dst, Src, Count) \ - do \ - { \ - YYSIZE_T yyi; \ - for (yyi = 0; yyi < (Count); yyi++) \ - (Dst)[yyi] = (Src)[yyi]; \ - } \ - while (0) -# endif -# endif -#endif /* !YYCOPY_NEEDED */ - -/* YYFINAL -- State number of the termination state. */ -#define YYFINAL 2 -/* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 606 - -/* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 286 -/* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 309 -/* YYNRULES -- Number of rules. */ -#define YYNRULES 596 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 887 - -#define YYUNDEFTOK 2 -#define YYMAXUTOK 540 - -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) - -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ -static const yytype_uint16 yytranslate[] = -{ - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285 +static const YYINT yylen[] = { 2, + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 4, 4, 4, 3, 3, 2, 2, 2, 2, 2, + 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2, }; - +static const YYINT yydefred[] = { 1, + 0, 15, 211, 221, 489, 547, 508, 230, 556, 579, + 240, 593, 256, 2, 17, 213, 223, 549, 491, 510, + 232, 558, 581, 595, 242, 258, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 16, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 0, 0, 0, 0, 0, + 0, 0, 212, 214, 215, 216, 217, 218, 219, 220, + 0, 0, 0, 0, 0, 0, 222, 224, 225, 226, + 227, 228, 229, 0, 548, 550, 0, 0, 0, 0, + 0, 0, 0, 0, 490, 492, 493, 494, 495, 496, + 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 509, 511, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 0, 0, 0, 0, 0, 0, 0, 231, 233, 234, + 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 557, 559, 560, 561, 562, + 563, 564, 565, 566, 567, 568, 0, 0, 0, 0, + 0, 580, 582, 583, 584, 585, 586, 0, 0, 594, + 596, 597, 0, 0, 0, 0, 0, 0, 0, 0, + 241, 243, 244, 245, 246, 247, 248, 249, 250, 0, + 0, 0, 0, 0, 259, 260, 262, 263, 264, 261, + 265, 266, 267, 268, 257, 270, 269, 276, 289, 287, + 299, 295, 296, 300, 297, 298, 301, 302, 303, 304, + 305, 327, 328, 329, 330, 331, 356, 357, 358, 363, + 364, 292, 365, 366, 369, 367, 368, 371, 372, 373, + 387, 342, 343, 345, 346, 374, 390, 336, 338, 391, + 397, 398, 399, 293, 355, 415, 416, 337, 410, 320, + 288, 332, 388, 394, 375, 0, 0, 419, 294, 271, + 319, 379, 272, 290, 291, 333, 334, 417, 377, 381, + 382, 273, 420, 359, 386, 321, 341, 392, 393, 396, + 409, 335, 413, 411, 412, 347, 354, 383, 384, 348, + 349, 376, 401, 322, 323, 326, 306, 308, 309, 310, + 311, 312, 421, 422, 424, 360, 361, 362, 370, 425, + 426, 427, 0, 0, 0, 378, 350, 352, 552, 436, + 440, 438, 437, 441, 439, 0, 0, 444, 445, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 380, + 395, 414, 449, 450, 351, 428, 0, 0, 0, 0, + 0, 0, 402, 403, 404, 405, 406, 407, 408, 553, + 344, 339, 400, 318, 274, 275, 340, 455, 457, 456, + 458, 459, 460, 307, 314, 446, 448, 447, 313, 0, + 325, 385, 423, 324, 353, 315, 316, 317, 461, 462, + 463, 467, 466, 464, 465, 468, 469, 470, 471, 473, + 472, 551, 500, 502, 501, 504, 505, 506, 507, 503, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 541, 542, 543, 544, 545, 546, 482, 0, + 486, 487, 0, 0, 488, 569, 570, 571, 574, 572, + 573, 575, 576, 577, 578, 587, 588, 589, 590, 591, + 598, 599, 474, 480, 475, 476, 477, 479, 481, 478, + 251, 252, 253, 254, 255, 389, 418, 435, 554, 555, + 442, 443, 429, 430, 0, 0, 0, 434, 592, 483, + 484, 485, 433, 431, 432, +}; +static const YYINT yydgoto[] = { 1, + 14, 15, 27, 16, 28, 17, 29, 18, 30, 19, + 31, 20, 32, 21, 33, 22, 34, 23, 35, 24, + 36, 25, 37, 26, 38, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 433, + 434, 435, 436, 437, 438, 439, 440, 447, 448, 449, + 450, 451, 452, 453, 518, 519, 520, 521, 522, 523, + 524, 525, 571, 572, 573, 574, 575, 576, 577, 578, + 579, 590, 591, 592, 593, 594, 595, 0, 0, 0, + 0, 465, 466, 467, 468, 469, 470, 471, 472, 473, + 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 455, + 456, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 552, 553, 554, 555, 556, 557, 560, 561, + 562, +}; +static const YYINT yysindex[] = { 0, + -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 369, -290, -280, -357, + -322, -335, -298, -445, -485, -529, -240, -293, -252, -239, + -216, -215, -214, -212, -211, -210, -209, -208, -205, -204, + -202, -201, -200, -199, -198, -197, -196, -195, -194, -174, + -173, -172, -167, -166, -165, -164, -161, -160, -158, -157, + -156, -155, -154, -152, -150, -149, -148, -146, -145, -144, + -143, -142, -141, -140, -139, -138, -137, -134, -133, -132, + -131, -130, -129, -128, -127, -126, -125, -124, -123, -122, + -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, + -111, -110, -109, -108, -107, -105, -104, -103, -102, -101, + -100, -99, -98, -97, -95, -94, -93, -92, -91, -90, + -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, + -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, + -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, + -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, + -49, -47, -46, -42, -41, -40, -39, -38, -37, -36, + -34, -33, -32, -31, -29, -27, -26, -25, -24, -23, + -22, -21, -20, -13, -12, -11, -10, -8, -7, -6, + -5, -4, -3, -2, 7, 19, 20, 21, 23, 24, + 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 40, 41, 46, 47, 52, 53, 58, 59, 60, 61, + 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 63, 64, 65, 66, 67, + 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 71, 72, 73, 74, 75, 0, 0, 0, 0, + 0, 0, 0, 76, 0, 0, 77, 78, 79, 80, + 81, 82, 83, 84, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 85, 90, 91, 92, 106, 107, 108, + 109, 110, 111, 112, 113, 118, 119, 120, 121, 122, + 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 124, 125, 126, 127, 132, 133, 138, 0, 0, 0, + 0, 0, 0, 0, 0, 139, 140, 141, 142, 147, + 148, 149, 150, 151, 152, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 153, 154, 159, 160, + 161, 0, 0, 0, 0, 0, 0, 162, 163, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, + 173, 174, 175, 176, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 177, 182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 183, 184, 185, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 186, 187, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 189, 190, 191, + 192, 193, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, + 0, 0, 200, 205, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 206, 207, 208, 0, 0, 0, + 0, 0, 0, 0, 0, +}; +static const YYINT yyrindex[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, + 13, 14, 15, 16, 93, 94, 95, 96, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, +}; +static const YYINT yygindex[] = { 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -14, 226, 227, 239, 0, 0, 0, + 319, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, +}; +#define YYTABLESIZE 906 +static const YYINT yytable[] = { 511, + 3, 4, 5, 6, 563, 558, 559, 426, 454, 427, + 428, 596, 7, 8, 9, 10, 2, 441, 547, 548, + 549, 550, 551, 585, 597, 442, 443, 457, 458, 459, + 460, 461, 462, 463, 464, 512, 513, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 598, 599, 600, + 3, 601, 602, 603, 604, 605, 4, 563, 606, 607, + 514, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 429, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 490, 491, 617, + 618, 619, 11, 12, 13, 14, 620, 621, 622, 623, + 5, 430, 624, 625, 431, 626, 627, 628, 629, 630, + 444, 631, 445, 632, 633, 634, 6, 635, 636, 637, + 638, 639, 640, 641, 642, 643, 644, 515, 516, 645, + 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, + 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 7, 673, 674, + 675, 676, 677, 678, 679, 680, 681, 517, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 728, 8, 729, 730, 565, 566, + 567, 731, 732, 733, 734, 735, 736, 737, 570, 738, + 739, 740, 741, 9, 742, 432, 743, 744, 745, 746, + 747, 748, 749, 750, 446, 580, 581, 582, 583, 584, + 751, 752, 753, 754, 10, 755, 756, 757, 758, 759, + 760, 761, 11, 586, 587, 3, 4, 5, 6, 564, + 762, 565, 566, 567, 568, 569, 588, 7, 8, 9, + 10, 570, 763, 764, 765, 12, 766, 767, 768, 13, + 769, 770, 771, 772, 773, 774, 775, 776, 777, 3, + 4, 5, 6, 778, 779, 3, 4, 5, 6, 780, + 781, 7, 8, 9, 10, 782, 783, 7, 8, 9, + 10, 784, 785, 786, 787, 788, 789, 790, 791, 792, + 793, 794, 795, 796, 797, 798, 799, 800, 801, 802, + 803, 804, 805, 806, 807, 808, 809, 810, 811, 3, + 4, 5, 6, 812, 813, 814, 589, 11, 12, 13, + 14, 7, 8, 9, 10, 3, 4, 5, 6, 815, + 816, 817, 818, 819, 820, 821, 822, 7, 8, 9, + 10, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 11, 12, 13, 14, 833, 834, 11, 12, 13, + 14, 835, 836, 837, 838, 839, 3, 4, 5, 6, + 840, 841, 842, 843, 844, 845, 846, 847, 7, 8, + 9, 10, 848, 849, 850, 851, 852, 853, 854, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 11, 12, 13, 14, 867, 868, 869, 870, 871, + 872, 873, 874, 875, 876, 877, 878, 11, 12, 13, + 14, 879, 880, 881, 3, 4, 5, 6, 882, 883, + 884, 885, 0, 0, 0, 0, 7, 8, 9, 10, + 0, 0, 3, 4, 5, 6, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 11, 12, + 13, 14, 0, 3, 4, 5, 6, 0, 0, 0, + 0, 3, 4, 5, 6, 7, 8, 9, 10, 0, + 0, 0, 0, 7, 8, 9, 10, 0, 0, 0, + 0, 0, 0, 0, 3, 4, 5, 6, 3, 4, + 5, 6, 0, 0, 0, 0, 7, 8, 9, 10, + 7, 8, 9, 10, 0, 0, 11, 12, 13, 14, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 11, 12, 13, 14, 0, + 0, 0, 0, 11, 12, 13, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 11, 12, 13, 14, + 11, 12, 13, 14, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 0, 0, 0, 0, + 71, 72, 73, 0, 0, 0, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 115, 116, 117, 0, + 118, 119, 120, 0, 0, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 0, + 0, 0, 145, 0, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 0, 195, 0, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 211, 212, 213, 214, 215, + 216, 0, 0, 0, 0, 0, 0, 217, 0, 0, + 0, 0, 0, 0, 0, 218, 219, 0, 220, 221, + 0, 222, 223, 0, 0, 224, 225, 226, 227, 228, + 229, 230, 0, 0, 0, 231, +}; +static const YYINT yycheck[] = { 298, + 0, 0, 0, 0, 298, 535, 536, 298, 366, 300, + 301, 264, 0, 0, 0, 0, 265, 298, 504, 505, + 506, 507, 508, 38, 264, 306, 307, 350, 351, 352, + 353, 354, 355, 356, 357, 334, 335, 483, 484, 485, + 486, 487, 488, 489, 490, 491, 492, 264, 264, 264, + 299, 264, 264, 264, 264, 264, 305, 298, 264, 264, + 359, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 361, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 264, + 264, 264, 0, 0, 0, 0, 264, 264, 264, 264, + 349, 392, 264, 264, 395, 264, 264, 264, 264, 264, + 391, 264, 393, 264, 264, 264, 365, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 426, 427, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 406, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 466, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 464, 264, 264, 512, 513, + 514, 264, 264, 264, 264, 264, 264, 264, 522, 264, + 264, 264, 264, 482, 264, 526, 264, 264, 264, 264, + 264, 264, 264, 264, 525, 539, 540, 541, 542, 543, + 264, 264, 264, 264, 503, 264, 264, 264, 264, 264, + 264, 264, 511, 38, 38, 265, 265, 265, 265, 510, + 264, 512, 513, 514, 515, 516, 38, 265, 265, 265, + 265, 522, 264, 264, 264, 534, 264, 264, 264, 538, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 299, + 299, 299, 299, 264, 264, 305, 305, 305, 305, 264, + 264, 299, 299, 299, 299, 264, 264, 305, 305, 305, + 305, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 349, + 349, 349, 349, 264, 264, 264, 38, 265, 265, 265, + 265, 349, 349, 349, 349, 365, 365, 365, 365, 264, + 264, 264, 264, 264, 264, 264, 264, 365, 365, 365, + 365, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 299, 299, 299, 299, 264, 264, 305, 305, 305, + 305, 264, 264, 264, 264, 264, 406, 406, 406, 406, + 264, 264, 264, 264, 264, 264, 264, 264, 406, 406, + 406, 406, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 349, 349, 349, 349, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 365, 365, 365, + 365, 264, 264, 264, 464, 464, 464, 464, 264, 264, + 264, 264, -1, -1, -1, -1, 464, 464, 464, 464, + -1, -1, 482, 482, 482, 482, -1, -1, -1, -1, + -1, -1, -1, -1, 482, 482, 482, 482, 406, 406, + 406, 406, -1, 503, 503, 503, 503, -1, -1, -1, + -1, 511, 511, 511, 511, 503, 503, 503, 503, -1, + -1, -1, -1, 511, 511, 511, 511, -1, -1, -1, + -1, -1, -1, -1, 534, 534, 534, 534, 538, 538, + 538, 538, -1, -1, -1, -1, 534, 534, 534, 534, + 538, 538, 538, 538, -1, -1, 464, 464, 464, 464, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 482, 482, 482, 482, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 503, 503, 503, 503, -1, + -1, -1, -1, 511, 511, 511, 511, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 534, 534, 534, 534, + 538, 538, 538, 538, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, -1, -1, -1, -1, + 302, 303, 304, -1, -1, -1, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 358, 359, 360, -1, + 362, 363, 364, -1, -1, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, -1, + -1, -1, 394, -1, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, -1, 465, -1, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 497, 498, 499, 500, 501, + 502, -1, -1, -1, -1, -1, -1, 509, -1, -1, + -1, -1, -1, -1, -1, 517, 518, -1, 520, 521, + -1, 523, 524, -1, -1, 527, 528, 529, 530, 531, + 532, 533, -1, -1, -1, 537, +}; +#define YYFINAL 1 +#ifndef YYDEBUG +#define YYDEBUG 0 +#endif +#define YYMAXTOKEN 543 +#define YYUNDFTOKEN 857 +#define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a)) #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = -{ - 0, 178, 178, 178, 179, 179, 180, 180, 181, 181, - 181, 182, 182, 183, 183, 184, 188, 193, 194, 195, - 195, 195, 196, 196, 197, 197, 197, 198, 198, 199, - 199, 199, 200, 200, 201, 201, 201, 202, 202, 202, - 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, - 208, 208, 209, 209, 210, 210, 211, 211, 211, 212, - 212, 212, 213, 213, 213, 214, 214, 215, 215, 216, - 216, 217, 217, 218, 218, 218, 219, 219, 220, 220, - 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, - 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, - 230, 230, 231, 231, 231, 232, 232, 233, 233, 233, - 234, 234, 234, 235, 235, 235, 236, 236, 236, 236, - 237, 238, 238, 238, 239, 239, 239, 240, 240, 241, - 241, 242, 242, 242, 243, 243, 244, 244, 244, 245, - 246, 246, 247, 247, 248, 249, 249, 250, 250, 251, - 251, 252, 253, 253, 254, 254, 255, 255, 256, 256, - 257, 257, 258, 258, 258, 259, 259, 260, 260, 261, - 261, 262, 262, 263, 263, 264, 264, 265, 265, 265, - 266, 266, 266, 267, 267, 267, 268, 268, 269, 270, - 270, 271, 271, 272, 272, 273, 273, 274, 274, 274, - 275, 275, 275, 276, 276, 276, 277, 277, 278, 278, - 279, 279, 281, 293, 294, 295, 295, 295, 295, 295, - 296, 296, 298, 310, 311, 312, 312, 312, 312, 313, - 313, 315, 329, 330, 331, 331, 331, 331, 332, 332, - 332, 334, 351, 352, 353, 353, 353, 353, 354, 354, - 354, 355, 358, 377, 394, 402, 412, 420, 437, 438, - 439, 439, 439, 439, 439, 440, 440, 440, 441, 441, - 443, 452, 461, 472, 481, 490, 499, 510, 519, 531, - 545, 560, 571, 588, 605, 622, 639, 654, 669, 682, - 697, 706, 715, 724, 733, 742, 751, 760, 769, 778, - 787, 796, 805, 814, 823, 836, 845, 858, 867, 876, - 885, 892, 899, 908, 915, 924, 932, 939, 946, 954, - 963, 972, 986, 995, 1004, 1013, 1022, 1031, 1040, 1047, - 1054, 1080, 1088, 1095, 1102, 1109, 1116, 1124, 1132, 1140, - 1147, 1158, 1169, 1176, 1185, 1194, 1203, 1210, 1217, 1225, - 1233, 1243, 1253, 1263, 1277, 1285, 1298, 1309, 1317, 1330, - 1339, 1348, 1357, 1367, 1377, 1385, 1398, 1407, 1415, 1424, - 1432, 1445, 1454, 1461, 1471, 1481, 1491, 1501, 1511, 1521, - 1531, 1541, 1548, 1555, 1562, 1571, 1580, 1589, 1598, 1605, - 1615, 1635, 1642, 1660, 1673, 1686, 1695, 1704, 1713, 1722, - 1732, 1742, 1753, 1762, 1771, 1780, 1789, 1798, 1807, 1820, - 1833, 1842, 1849, 1858, 1867, 1876, 1885, 1893, 1906, 1914, - 1955, 1962, 1977, 1987, 1997, 2004, 2011, 2018, 2027, 2035, - 2049, 2070, 2091, 2103, 2115, 2127, 2136, 2157, 2167, 2176, - 2184, 2192, 2205, 2218, 2233, 2248, 2257, 2266, 2272, 2281, - 2290, 2300, 2310, 2323, 2336, 2348, 2362, 2374, 2388, 2398, - 2405, 2412, 2421, 2430, 2440, 2450, 2460, 2467, 2474, 2483, - 2492, 2502, 2512, 2519, 2526, 2533, 2541, 2551, 2561, 2571, - 2581, 2620, 2630, 2638, 2646, 2661, 2670, 2675, 2676, 2677, - 2677, 2677, 2678, 2678, 2678, 2679, 2679, 2681, 2691, 2700, - 2707, 2714, 2721, 2728, 2735, 2742, 2747, 2748, 2749, 2749, - 2750, 2750, 2750, 2751, 2752, 2752, 2753, 2753, 2754, 2754, - 2755, 2756, 2757, 2758, 2759, 2760, 2762, 2771, 2778, 2785, - 2794, 2801, 2808, 2815, 2822, 2831, 2840, 2847, 2854, 2864, - 2874, 2884, 2894, 2904, 2914, 2919, 2920, 2921, 2923, 2929, - 2939, 2946, 2955, 2963, 2968, 2969, 2971, 2971, 2971, 2972, - 2972, 2973, 2974, 2975, 2976, 2977, 2979, 2989, 2998, 3005, - 3014, 3021, 3030, 3038, 3051, 3059, 3072, 3077, 3078, 3079, - 3079, 3080, 3080, 3080, 3082, 3094, 3106, 3118, 3133, 3146, - 3157, 3162, 3163, 3164, 3164, 3166, 3181 +static const char *const yyname[] = { + +"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"SPACE","LETTER","NEWLINE", +"COMMENT","COLON","ANY","ZONESTR","STRING_ARG","VAR_SERVER","VAR_VERBOSITY", +"VAR_NUM_THREADS","VAR_PORT","VAR_OUTGOING_RANGE","VAR_INTERFACE", +"VAR_PREFER_IP4","VAR_DO_IP4","VAR_DO_IP6","VAR_PREFER_IP6","VAR_DO_UDP", +"VAR_DO_TCP","VAR_TCP_MSS","VAR_OUTGOING_TCP_MSS","VAR_TCP_IDLE_TIMEOUT", +"VAR_EDNS_TCP_KEEPALIVE","VAR_EDNS_TCP_KEEPALIVE_TIMEOUT","VAR_CHROOT", +"VAR_USERNAME","VAR_DIRECTORY","VAR_LOGFILE","VAR_PIDFILE","VAR_MSG_CACHE_SIZE", +"VAR_MSG_CACHE_SLABS","VAR_NUM_QUERIES_PER_THREAD","VAR_RRSET_CACHE_SIZE", +"VAR_RRSET_CACHE_SLABS","VAR_OUTGOING_NUM_TCP","VAR_INFRA_HOST_TTL", +"VAR_INFRA_LAME_TTL","VAR_INFRA_CACHE_SLABS","VAR_INFRA_CACHE_NUMHOSTS", +"VAR_INFRA_CACHE_LAME_SIZE","VAR_NAME","VAR_STUB_ZONE","VAR_STUB_HOST", +"VAR_STUB_ADDR","VAR_TARGET_FETCH_POLICY","VAR_HARDEN_SHORT_BUFSIZE", +"VAR_HARDEN_LARGE_QUERIES","VAR_FORWARD_ZONE","VAR_FORWARD_HOST", +"VAR_FORWARD_ADDR","VAR_DO_NOT_QUERY_ADDRESS","VAR_HIDE_IDENTITY", +"VAR_HIDE_VERSION","VAR_IDENTITY","VAR_VERSION","VAR_HARDEN_GLUE", +"VAR_MODULE_CONF","VAR_TRUST_ANCHOR_FILE","VAR_TRUST_ANCHOR", +"VAR_VAL_OVERRIDE_DATE","VAR_BOGUS_TTL","VAR_VAL_CLEAN_ADDITIONAL", +"VAR_VAL_PERMISSIVE_MODE","VAR_INCOMING_NUM_TCP","VAR_MSG_BUFFER_SIZE", +"VAR_KEY_CACHE_SIZE","VAR_KEY_CACHE_SLABS","VAR_TRUSTED_KEYS_FILE", +"VAR_VAL_NSEC3_KEYSIZE_ITERATIONS","VAR_USE_SYSLOG","VAR_OUTGOING_INTERFACE", +"VAR_ROOT_HINTS","VAR_DO_NOT_QUERY_LOCALHOST","VAR_CACHE_MAX_TTL", +"VAR_HARDEN_DNSSEC_STRIPPED","VAR_ACCESS_CONTROL","VAR_LOCAL_ZONE", +"VAR_LOCAL_DATA","VAR_INTERFACE_AUTOMATIC","VAR_STATISTICS_INTERVAL", +"VAR_DO_DAEMONIZE","VAR_USE_CAPS_FOR_ID","VAR_STATISTICS_CUMULATIVE", +"VAR_OUTGOING_PORT_PERMIT","VAR_OUTGOING_PORT_AVOID","VAR_DLV_ANCHOR_FILE", +"VAR_DLV_ANCHOR","VAR_NEG_CACHE_SIZE","VAR_HARDEN_REFERRAL_PATH", +"VAR_PRIVATE_ADDRESS","VAR_PRIVATE_DOMAIN","VAR_REMOTE_CONTROL", +"VAR_CONTROL_ENABLE","VAR_CONTROL_INTERFACE","VAR_CONTROL_PORT", +"VAR_SERVER_KEY_FILE","VAR_SERVER_CERT_FILE","VAR_CONTROL_KEY_FILE", +"VAR_CONTROL_CERT_FILE","VAR_CONTROL_USE_CERT","VAR_EXTENDED_STATISTICS", +"VAR_LOCAL_DATA_PTR","VAR_JOSTLE_TIMEOUT","VAR_STUB_PRIME", +"VAR_UNWANTED_REPLY_THRESHOLD","VAR_LOG_TIME_ASCII","VAR_DOMAIN_INSECURE", +"VAR_PYTHON","VAR_PYTHON_SCRIPT","VAR_VAL_SIG_SKEW_MIN","VAR_VAL_SIG_SKEW_MAX", +"VAR_CACHE_MIN_TTL","VAR_VAL_LOG_LEVEL","VAR_AUTO_TRUST_ANCHOR_FILE", +"VAR_KEEP_MISSING","VAR_ADD_HOLDDOWN","VAR_DEL_HOLDDOWN","VAR_SO_RCVBUF", +"VAR_EDNS_BUFFER_SIZE","VAR_PREFETCH","VAR_PREFETCH_KEY","VAR_SO_SNDBUF", +"VAR_SO_REUSEPORT","VAR_HARDEN_BELOW_NXDOMAIN","VAR_IGNORE_CD_FLAG", +"VAR_LOG_QUERIES","VAR_LOG_REPLIES","VAR_LOG_LOCAL_ACTIONS","VAR_TCP_UPSTREAM", +"VAR_SSL_UPSTREAM","VAR_SSL_SERVICE_KEY","VAR_SSL_SERVICE_PEM","VAR_SSL_PORT", +"VAR_FORWARD_FIRST","VAR_STUB_SSL_UPSTREAM","VAR_FORWARD_SSL_UPSTREAM", +"VAR_TLS_CERT_BUNDLE","VAR_STUB_FIRST","VAR_MINIMAL_RESPONSES", +"VAR_RRSET_ROUNDROBIN","VAR_MAX_UDP_SIZE","VAR_DELAY_CLOSE", +"VAR_UNBLOCK_LAN_ZONES","VAR_INSECURE_LAN_ZONES","VAR_INFRA_CACHE_MIN_RTT", +"VAR_DNS64_PREFIX","VAR_DNS64_SYNTHALL","VAR_DNS64_IGNORE_AAAA","VAR_DNSTAP", +"VAR_DNSTAP_ENABLE","VAR_DNSTAP_SOCKET_PATH","VAR_DNSTAP_IP","VAR_DNSTAP_TLS", +"VAR_DNSTAP_TLS_SERVER_NAME","VAR_DNSTAP_TLS_CERT_BUNDLE", +"VAR_DNSTAP_TLS_CLIENT_KEY_FILE","VAR_DNSTAP_TLS_CLIENT_CERT_FILE", +"VAR_DNSTAP_SEND_IDENTITY","VAR_DNSTAP_SEND_VERSION","VAR_DNSTAP_IDENTITY", +"VAR_DNSTAP_VERSION","VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", +"VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", +"VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", +"VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES","VAR_RESPONSE_IP_TAG", +"VAR_RESPONSE_IP","VAR_RESPONSE_IP_DATA","VAR_HARDEN_ALGO_DOWNGRADE", +"VAR_IP_TRANSPARENT","VAR_IP_DSCP","VAR_DISABLE_DNSSEC_LAME_CHECK", +"VAR_IP_RATELIMIT","VAR_IP_RATELIMIT_SLABS","VAR_IP_RATELIMIT_SIZE", +"VAR_RATELIMIT","VAR_RATELIMIT_SLABS","VAR_RATELIMIT_SIZE", +"VAR_RATELIMIT_FOR_DOMAIN","VAR_RATELIMIT_BELOW_DOMAIN", +"VAR_IP_RATELIMIT_FACTOR","VAR_RATELIMIT_FACTOR","VAR_SEND_CLIENT_SUBNET", +"VAR_CLIENT_SUBNET_ZONE","VAR_CLIENT_SUBNET_ALWAYS_FORWARD", +"VAR_CLIENT_SUBNET_OPCODE","VAR_MAX_CLIENT_SUBNET_IPV4", +"VAR_MAX_CLIENT_SUBNET_IPV6","VAR_MIN_CLIENT_SUBNET_IPV4", +"VAR_MIN_CLIENT_SUBNET_IPV6","VAR_MAX_ECS_TREE_SIZE_IPV4", +"VAR_MAX_ECS_TREE_SIZE_IPV6","VAR_CAPS_WHITELIST","VAR_CACHE_MAX_NEGATIVE_TTL", +"VAR_PERMIT_SMALL_HOLDDOWN","VAR_QNAME_MINIMISATION", +"VAR_QNAME_MINIMISATION_STRICT","VAR_IP_FREEBIND","VAR_DEFINE_TAG", +"VAR_LOCAL_ZONE_TAG","VAR_ACCESS_CONTROL_TAG","VAR_LOCAL_ZONE_OVERRIDE", +"VAR_ACCESS_CONTROL_TAG_ACTION","VAR_ACCESS_CONTROL_TAG_DATA","VAR_VIEW", +"VAR_ACCESS_CONTROL_VIEW","VAR_VIEW_FIRST","VAR_SERVE_EXPIRED", +"VAR_SERVE_EXPIRED_TTL","VAR_SERVE_EXPIRED_TTL_RESET", +"VAR_SERVE_EXPIRED_REPLY_TTL","VAR_SERVE_EXPIRED_CLIENT_TIMEOUT","VAR_FAKE_DSA", +"VAR_FAKE_SHA1","VAR_LOG_IDENTITY","VAR_HIDE_TRUSTANCHOR", +"VAR_TRUST_ANCHOR_SIGNALING","VAR_AGGRESSIVE_NSEC","VAR_USE_SYSTEMD", +"VAR_SHM_ENABLE","VAR_SHM_KEY","VAR_ROOT_KEY_SENTINEL","VAR_DNSCRYPT", +"VAR_DNSCRYPT_ENABLE","VAR_DNSCRYPT_PORT","VAR_DNSCRYPT_PROVIDER", +"VAR_DNSCRYPT_SECRET_KEY","VAR_DNSCRYPT_PROVIDER_CERT", +"VAR_DNSCRYPT_PROVIDER_CERT_ROTATED","VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", +"VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS","VAR_DNSCRYPT_NONCE_CACHE_SIZE", +"VAR_DNSCRYPT_NONCE_CACHE_SLABS","VAR_PAD_RESPONSES", +"VAR_PAD_RESPONSES_BLOCK_SIZE","VAR_PAD_QUERIES","VAR_PAD_QUERIES_BLOCK_SIZE", +"VAR_IPSECMOD_ENABLED","VAR_IPSECMOD_HOOK","VAR_IPSECMOD_IGNORE_BOGUS", +"VAR_IPSECMOD_MAX_TTL","VAR_IPSECMOD_WHITELIST","VAR_IPSECMOD_STRICT", +"VAR_CACHEDB","VAR_CACHEDB_BACKEND","VAR_CACHEDB_SECRETSEED", +"VAR_CACHEDB_REDISHOST","VAR_CACHEDB_REDISPORT","VAR_CACHEDB_REDISTIMEOUT", +"VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM","VAR_FOR_UPSTREAM","VAR_AUTH_ZONE", +"VAR_ZONEFILE","VAR_MASTER","VAR_URL","VAR_FOR_DOWNSTREAM", +"VAR_FALLBACK_ENABLED","VAR_TLS_ADDITIONAL_PORT","VAR_LOW_RTT", +"VAR_LOW_RTT_PERMIL","VAR_FAST_SERVER_PERMIL","VAR_FAST_SERVER_NUM", +"VAR_ALLOW_NOTIFY","VAR_TLS_WIN_CERT","VAR_TCP_CONNECTION_LIMIT", +"VAR_FORWARD_NO_CACHE","VAR_STUB_NO_CACHE","VAR_LOG_SERVFAIL","VAR_DENY_ANY", +"VAR_UNKNOWN_SERVER_TIME_LIMIT","VAR_LOG_TAG_QUERYREPLY","VAR_STREAM_WAIT_SIZE", +"VAR_TLS_CIPHERS","VAR_TLS_CIPHERSUITES","VAR_IPSET","VAR_IPSET_NAME_V4", +"VAR_IPSET_NAME_V6","VAR_TLS_SESSION_TICKET_KEYS","VAR_RPZ","VAR_TAGS", +"VAR_RPZ_ACTION_OVERRIDE","VAR_RPZ_CNAME_OVERRIDE","VAR_RPZ_LOG", +"VAR_RPZ_LOG_NAME",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, +0,0,0,"illegal-symbol", +}; +static const char *const yyrule[] = { +"$accept : toplevelvars", +"toplevelvars :", +"toplevelvars : toplevelvars toplevelvar", +"toplevelvar : serverstart contents_server", +"toplevelvar : stubstart contents_stub", +"toplevelvar : forwardstart contents_forward", +"toplevelvar : pythonstart contents_py", +"toplevelvar : rcstart contents_rc", +"toplevelvar : dtstart contents_dt", +"toplevelvar : viewstart contents_view", +"toplevelvar : dnscstart contents_dnsc", +"toplevelvar : cachedbstart contents_cachedb", +"toplevelvar : ipsetstart contents_ipset", +"toplevelvar : authstart contents_auth", +"toplevelvar : rpzstart contents_rpz", +"serverstart : VAR_SERVER", +"contents_server : contents_server content_server", +"contents_server :", +"content_server : server_num_threads", +"content_server : server_verbosity", +"content_server : server_port", +"content_server : server_outgoing_range", +"content_server : server_do_ip4", +"content_server : server_do_ip6", +"content_server : server_prefer_ip4", +"content_server : server_prefer_ip6", +"content_server : server_do_udp", +"content_server : server_do_tcp", +"content_server : server_tcp_mss", +"content_server : server_outgoing_tcp_mss", +"content_server : server_tcp_idle_timeout", +"content_server : server_tcp_keepalive", +"content_server : server_tcp_keepalive_timeout", +"content_server : server_interface", +"content_server : server_chroot", +"content_server : server_username", +"content_server : server_directory", +"content_server : server_logfile", +"content_server : server_pidfile", +"content_server : server_msg_cache_size", +"content_server : server_msg_cache_slabs", +"content_server : server_num_queries_per_thread", +"content_server : server_rrset_cache_size", +"content_server : server_rrset_cache_slabs", +"content_server : server_outgoing_num_tcp", +"content_server : server_infra_host_ttl", +"content_server : server_infra_lame_ttl", +"content_server : server_infra_cache_slabs", +"content_server : server_infra_cache_numhosts", +"content_server : server_infra_cache_lame_size", +"content_server : server_target_fetch_policy", +"content_server : server_harden_short_bufsize", +"content_server : server_harden_large_queries", +"content_server : server_do_not_query_address", +"content_server : server_hide_identity", +"content_server : server_hide_version", +"content_server : server_identity", +"content_server : server_version", +"content_server : server_harden_glue", +"content_server : server_module_conf", +"content_server : server_trust_anchor_file", +"content_server : server_trust_anchor", +"content_server : server_val_override_date", +"content_server : server_bogus_ttl", +"content_server : server_val_clean_additional", +"content_server : server_val_permissive_mode", +"content_server : server_incoming_num_tcp", +"content_server : server_msg_buffer_size", +"content_server : server_key_cache_size", +"content_server : server_key_cache_slabs", +"content_server : server_trusted_keys_file", +"content_server : server_val_nsec3_keysize_iterations", +"content_server : server_use_syslog", +"content_server : server_outgoing_interface", +"content_server : server_root_hints", +"content_server : server_do_not_query_localhost", +"content_server : server_cache_max_ttl", +"content_server : server_harden_dnssec_stripped", +"content_server : server_access_control", +"content_server : server_local_zone", +"content_server : server_local_data", +"content_server : server_interface_automatic", +"content_server : server_statistics_interval", +"content_server : server_do_daemonize", +"content_server : server_use_caps_for_id", +"content_server : server_statistics_cumulative", +"content_server : server_outgoing_port_permit", +"content_server : server_outgoing_port_avoid", +"content_server : server_dlv_anchor_file", +"content_server : server_dlv_anchor", +"content_server : server_neg_cache_size", +"content_server : server_harden_referral_path", +"content_server : server_private_address", +"content_server : server_private_domain", +"content_server : server_extended_statistics", +"content_server : server_local_data_ptr", +"content_server : server_jostle_timeout", +"content_server : server_unwanted_reply_threshold", +"content_server : server_log_time_ascii", +"content_server : server_domain_insecure", +"content_server : server_val_sig_skew_min", +"content_server : server_val_sig_skew_max", +"content_server : server_cache_min_ttl", +"content_server : server_val_log_level", +"content_server : server_auto_trust_anchor_file", +"content_server : server_add_holddown", +"content_server : server_del_holddown", +"content_server : server_keep_missing", +"content_server : server_so_rcvbuf", +"content_server : server_edns_buffer_size", +"content_server : server_prefetch", +"content_server : server_prefetch_key", +"content_server : server_so_sndbuf", +"content_server : server_harden_below_nxdomain", +"content_server : server_ignore_cd_flag", +"content_server : server_log_queries", +"content_server : server_log_replies", +"content_server : server_tcp_upstream", +"content_server : server_ssl_upstream", +"content_server : server_log_local_actions", +"content_server : server_ssl_service_key", +"content_server : server_ssl_service_pem", +"content_server : server_ssl_port", +"content_server : server_minimal_responses", +"content_server : server_rrset_roundrobin", +"content_server : server_max_udp_size", +"content_server : server_so_reuseport", +"content_server : server_delay_close", +"content_server : server_unblock_lan_zones", +"content_server : server_insecure_lan_zones", +"content_server : server_dns64_prefix", +"content_server : server_dns64_synthall", +"content_server : server_dns64_ignore_aaaa", +"content_server : server_infra_cache_min_rtt", +"content_server : server_harden_algo_downgrade", +"content_server : server_ip_transparent", +"content_server : server_ip_ratelimit", +"content_server : server_ratelimit", +"content_server : server_ip_dscp", +"content_server : server_ip_ratelimit_slabs", +"content_server : server_ratelimit_slabs", +"content_server : server_ip_ratelimit_size", +"content_server : server_ratelimit_size", +"content_server : server_ratelimit_for_domain", +"content_server : server_ratelimit_below_domain", +"content_server : server_ratelimit_factor", +"content_server : server_ip_ratelimit_factor", +"content_server : server_send_client_subnet", +"content_server : server_client_subnet_zone", +"content_server : server_client_subnet_always_forward", +"content_server : server_client_subnet_opcode", +"content_server : server_max_client_subnet_ipv4", +"content_server : server_max_client_subnet_ipv6", +"content_server : server_min_client_subnet_ipv4", +"content_server : server_min_client_subnet_ipv6", +"content_server : server_max_ecs_tree_size_ipv4", +"content_server : server_max_ecs_tree_size_ipv6", +"content_server : server_caps_whitelist", +"content_server : server_cache_max_negative_ttl", +"content_server : server_permit_small_holddown", +"content_server : server_qname_minimisation", +"content_server : server_ip_freebind", +"content_server : server_define_tag", +"content_server : server_local_zone_tag", +"content_server : server_disable_dnssec_lame_check", +"content_server : server_access_control_tag", +"content_server : server_local_zone_override", +"content_server : server_access_control_tag_action", +"content_server : server_access_control_tag_data", +"content_server : server_access_control_view", +"content_server : server_qname_minimisation_strict", +"content_server : server_serve_expired", +"content_server : server_serve_expired_ttl", +"content_server : server_serve_expired_ttl_reset", +"content_server : server_serve_expired_reply_ttl", +"content_server : server_serve_expired_client_timeout", +"content_server : server_fake_dsa", +"content_server : server_log_identity", +"content_server : server_use_systemd", +"content_server : server_response_ip_tag", +"content_server : server_response_ip", +"content_server : server_response_ip_data", +"content_server : server_shm_enable", +"content_server : server_shm_key", +"content_server : server_fake_sha1", +"content_server : server_hide_trustanchor", +"content_server : server_trust_anchor_signaling", +"content_server : server_root_key_sentinel", +"content_server : server_ipsecmod_enabled", +"content_server : server_ipsecmod_hook", +"content_server : server_ipsecmod_ignore_bogus", +"content_server : server_ipsecmod_max_ttl", +"content_server : server_ipsecmod_whitelist", +"content_server : server_ipsecmod_strict", +"content_server : server_udp_upstream_without_downstream", +"content_server : server_aggressive_nsec", +"content_server : server_tls_cert_bundle", +"content_server : server_tls_additional_port", +"content_server : server_low_rtt", +"content_server : server_fast_server_permil", +"content_server : server_fast_server_num", +"content_server : server_tls_win_cert", +"content_server : server_tcp_connection_limit", +"content_server : server_log_servfail", +"content_server : server_deny_any", +"content_server : server_unknown_server_time_limit", +"content_server : server_log_tag_queryreply", +"content_server : server_stream_wait_size", +"content_server : server_tls_ciphers", +"content_server : server_tls_ciphersuites", +"content_server : server_tls_session_ticket_keys", +"stubstart : VAR_STUB_ZONE", +"contents_stub : contents_stub content_stub", +"contents_stub :", +"content_stub : stub_name", +"content_stub : stub_host", +"content_stub : stub_addr", +"content_stub : stub_prime", +"content_stub : stub_first", +"content_stub : stub_no_cache", +"content_stub : stub_ssl_upstream", +"forwardstart : VAR_FORWARD_ZONE", +"contents_forward : contents_forward content_forward", +"contents_forward :", +"content_forward : forward_name", +"content_forward : forward_host", +"content_forward : forward_addr", +"content_forward : forward_first", +"content_forward : forward_no_cache", +"content_forward : forward_ssl_upstream", +"viewstart : VAR_VIEW", +"contents_view : contents_view content_view", +"contents_view :", +"content_view : view_name", +"content_view : view_local_zone", +"content_view : view_local_data", +"content_view : view_first", +"content_view : view_response_ip", +"content_view : view_response_ip_data", +"content_view : view_local_data_ptr", +"authstart : VAR_AUTH_ZONE", +"contents_auth : contents_auth content_auth", +"contents_auth :", +"content_auth : auth_name", +"content_auth : auth_zonefile", +"content_auth : auth_master", +"content_auth : auth_url", +"content_auth : auth_for_downstream", +"content_auth : auth_for_upstream", +"content_auth : auth_fallback_enabled", +"content_auth : auth_allow_notify", +"rpz_tag : VAR_TAGS STRING_ARG", +"rpz_action_override : VAR_RPZ_ACTION_OVERRIDE STRING_ARG", +"rpz_cname_override : VAR_RPZ_CNAME_OVERRIDE STRING_ARG", +"rpz_log : VAR_RPZ_LOG STRING_ARG", +"rpz_log_name : VAR_RPZ_LOG_NAME STRING_ARG", +"rpzstart : VAR_RPZ", +"contents_rpz : contents_rpz content_rpz", +"contents_rpz :", +"content_rpz : auth_name", +"content_rpz : auth_zonefile", +"content_rpz : rpz_tag", +"content_rpz : auth_master", +"content_rpz : auth_url", +"content_rpz : auth_allow_notify", +"content_rpz : rpz_action_override", +"content_rpz : rpz_cname_override", +"content_rpz : rpz_log", +"content_rpz : rpz_log_name", +"server_num_threads : VAR_NUM_THREADS STRING_ARG", +"server_verbosity : VAR_VERBOSITY STRING_ARG", +"server_statistics_interval : VAR_STATISTICS_INTERVAL STRING_ARG", +"server_statistics_cumulative : VAR_STATISTICS_CUMULATIVE STRING_ARG", +"server_extended_statistics : VAR_EXTENDED_STATISTICS STRING_ARG", +"server_shm_enable : VAR_SHM_ENABLE STRING_ARG", +"server_shm_key : VAR_SHM_KEY STRING_ARG", +"server_port : VAR_PORT STRING_ARG", +"server_send_client_subnet : VAR_SEND_CLIENT_SUBNET STRING_ARG", +"server_client_subnet_zone : VAR_CLIENT_SUBNET_ZONE STRING_ARG", +"server_client_subnet_always_forward : VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG", +"server_client_subnet_opcode : VAR_CLIENT_SUBNET_OPCODE STRING_ARG", +"server_max_client_subnet_ipv4 : VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG", +"server_max_client_subnet_ipv6 : VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG", +"server_min_client_subnet_ipv4 : VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG", +"server_min_client_subnet_ipv6 : VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG", +"server_max_ecs_tree_size_ipv4 : VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG", +"server_max_ecs_tree_size_ipv6 : VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG", +"server_interface : VAR_INTERFACE STRING_ARG", +"server_outgoing_interface : VAR_OUTGOING_INTERFACE STRING_ARG", +"server_outgoing_range : VAR_OUTGOING_RANGE STRING_ARG", +"server_outgoing_port_permit : VAR_OUTGOING_PORT_PERMIT STRING_ARG", +"server_outgoing_port_avoid : VAR_OUTGOING_PORT_AVOID STRING_ARG", +"server_outgoing_num_tcp : VAR_OUTGOING_NUM_TCP STRING_ARG", +"server_incoming_num_tcp : VAR_INCOMING_NUM_TCP STRING_ARG", +"server_interface_automatic : VAR_INTERFACE_AUTOMATIC STRING_ARG", +"server_do_ip4 : VAR_DO_IP4 STRING_ARG", +"server_do_ip6 : VAR_DO_IP6 STRING_ARG", +"server_do_udp : VAR_DO_UDP STRING_ARG", +"server_do_tcp : VAR_DO_TCP STRING_ARG", +"server_prefer_ip4 : VAR_PREFER_IP4 STRING_ARG", +"server_prefer_ip6 : VAR_PREFER_IP6 STRING_ARG", +"server_tcp_mss : VAR_TCP_MSS STRING_ARG", +"server_outgoing_tcp_mss : VAR_OUTGOING_TCP_MSS STRING_ARG", +"server_tcp_idle_timeout : VAR_TCP_IDLE_TIMEOUT STRING_ARG", +"server_tcp_keepalive : VAR_EDNS_TCP_KEEPALIVE STRING_ARG", +"server_tcp_keepalive_timeout : VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG", +"server_tcp_upstream : VAR_TCP_UPSTREAM STRING_ARG", +"server_udp_upstream_without_downstream : VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG", +"server_ssl_upstream : VAR_SSL_UPSTREAM STRING_ARG", +"server_ssl_service_key : VAR_SSL_SERVICE_KEY STRING_ARG", +"server_ssl_service_pem : VAR_SSL_SERVICE_PEM STRING_ARG", +"server_ssl_port : VAR_SSL_PORT STRING_ARG", +"server_tls_cert_bundle : VAR_TLS_CERT_BUNDLE STRING_ARG", +"server_tls_win_cert : VAR_TLS_WIN_CERT STRING_ARG", +"server_tls_additional_port : VAR_TLS_ADDITIONAL_PORT STRING_ARG", +"server_tls_ciphers : VAR_TLS_CIPHERS STRING_ARG", +"server_tls_ciphersuites : VAR_TLS_CIPHERSUITES STRING_ARG", +"server_tls_session_ticket_keys : VAR_TLS_SESSION_TICKET_KEYS STRING_ARG", +"server_use_systemd : VAR_USE_SYSTEMD STRING_ARG", +"server_do_daemonize : VAR_DO_DAEMONIZE STRING_ARG", +"server_use_syslog : VAR_USE_SYSLOG STRING_ARG", +"server_log_time_ascii : VAR_LOG_TIME_ASCII STRING_ARG", +"server_log_queries : VAR_LOG_QUERIES STRING_ARG", +"server_log_replies : VAR_LOG_REPLIES STRING_ARG", +"server_log_tag_queryreply : VAR_LOG_TAG_QUERYREPLY STRING_ARG", +"server_log_servfail : VAR_LOG_SERVFAIL STRING_ARG", +"server_log_local_actions : VAR_LOG_LOCAL_ACTIONS STRING_ARG", +"server_chroot : VAR_CHROOT STRING_ARG", +"server_username : VAR_USERNAME STRING_ARG", +"server_directory : VAR_DIRECTORY STRING_ARG", +"server_logfile : VAR_LOGFILE STRING_ARG", +"server_pidfile : VAR_PIDFILE STRING_ARG", +"server_root_hints : VAR_ROOT_HINTS STRING_ARG", +"server_dlv_anchor_file : VAR_DLV_ANCHOR_FILE STRING_ARG", +"server_dlv_anchor : VAR_DLV_ANCHOR STRING_ARG", +"server_auto_trust_anchor_file : VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG", +"server_trust_anchor_file : VAR_TRUST_ANCHOR_FILE STRING_ARG", +"server_trusted_keys_file : VAR_TRUSTED_KEYS_FILE STRING_ARG", +"server_trust_anchor : VAR_TRUST_ANCHOR STRING_ARG", +"server_trust_anchor_signaling : VAR_TRUST_ANCHOR_SIGNALING STRING_ARG", +"server_root_key_sentinel : VAR_ROOT_KEY_SENTINEL STRING_ARG", +"server_domain_insecure : VAR_DOMAIN_INSECURE STRING_ARG", +"server_hide_identity : VAR_HIDE_IDENTITY STRING_ARG", +"server_hide_version : VAR_HIDE_VERSION STRING_ARG", +"server_hide_trustanchor : VAR_HIDE_TRUSTANCHOR STRING_ARG", +"server_identity : VAR_IDENTITY STRING_ARG", +"server_version : VAR_VERSION STRING_ARG", +"server_so_rcvbuf : VAR_SO_RCVBUF STRING_ARG", +"server_so_sndbuf : VAR_SO_SNDBUF STRING_ARG", +"server_so_reuseport : VAR_SO_REUSEPORT STRING_ARG", +"server_ip_transparent : VAR_IP_TRANSPARENT STRING_ARG", +"server_ip_freebind : VAR_IP_FREEBIND STRING_ARG", +"server_ip_dscp : VAR_IP_DSCP STRING_ARG", +"server_stream_wait_size : VAR_STREAM_WAIT_SIZE STRING_ARG", +"server_edns_buffer_size : VAR_EDNS_BUFFER_SIZE STRING_ARG", +"server_msg_buffer_size : VAR_MSG_BUFFER_SIZE STRING_ARG", +"server_msg_cache_size : VAR_MSG_CACHE_SIZE STRING_ARG", +"server_msg_cache_slabs : VAR_MSG_CACHE_SLABS STRING_ARG", +"server_num_queries_per_thread : VAR_NUM_QUERIES_PER_THREAD STRING_ARG", +"server_jostle_timeout : VAR_JOSTLE_TIMEOUT STRING_ARG", +"server_delay_close : VAR_DELAY_CLOSE STRING_ARG", +"server_unblock_lan_zones : VAR_UNBLOCK_LAN_ZONES STRING_ARG", +"server_insecure_lan_zones : VAR_INSECURE_LAN_ZONES STRING_ARG", +"server_rrset_cache_size : VAR_RRSET_CACHE_SIZE STRING_ARG", +"server_rrset_cache_slabs : VAR_RRSET_CACHE_SLABS STRING_ARG", +"server_infra_host_ttl : VAR_INFRA_HOST_TTL STRING_ARG", +"server_infra_lame_ttl : VAR_INFRA_LAME_TTL STRING_ARG", +"server_infra_cache_numhosts : VAR_INFRA_CACHE_NUMHOSTS STRING_ARG", +"server_infra_cache_lame_size : VAR_INFRA_CACHE_LAME_SIZE STRING_ARG", +"server_infra_cache_slabs : VAR_INFRA_CACHE_SLABS STRING_ARG", +"server_infra_cache_min_rtt : VAR_INFRA_CACHE_MIN_RTT STRING_ARG", +"server_target_fetch_policy : VAR_TARGET_FETCH_POLICY STRING_ARG", +"server_harden_short_bufsize : VAR_HARDEN_SHORT_BUFSIZE STRING_ARG", +"server_harden_large_queries : VAR_HARDEN_LARGE_QUERIES STRING_ARG", +"server_harden_glue : VAR_HARDEN_GLUE STRING_ARG", +"server_harden_dnssec_stripped : VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG", +"server_harden_below_nxdomain : VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG", +"server_harden_referral_path : VAR_HARDEN_REFERRAL_PATH STRING_ARG", +"server_harden_algo_downgrade : VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG", +"server_use_caps_for_id : VAR_USE_CAPS_FOR_ID STRING_ARG", +"server_caps_whitelist : VAR_CAPS_WHITELIST STRING_ARG", +"server_private_address : VAR_PRIVATE_ADDRESS STRING_ARG", +"server_private_domain : VAR_PRIVATE_DOMAIN STRING_ARG", +"server_prefetch : VAR_PREFETCH STRING_ARG", +"server_prefetch_key : VAR_PREFETCH_KEY STRING_ARG", +"server_deny_any : VAR_DENY_ANY STRING_ARG", +"server_unwanted_reply_threshold : VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG", +"server_do_not_query_address : VAR_DO_NOT_QUERY_ADDRESS STRING_ARG", +"server_do_not_query_localhost : VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG", +"server_access_control : VAR_ACCESS_CONTROL STRING_ARG STRING_ARG", +"server_module_conf : VAR_MODULE_CONF STRING_ARG", +"server_val_override_date : VAR_VAL_OVERRIDE_DATE STRING_ARG", +"server_val_sig_skew_min : VAR_VAL_SIG_SKEW_MIN STRING_ARG", +"server_val_sig_skew_max : VAR_VAL_SIG_SKEW_MAX STRING_ARG", +"server_cache_max_ttl : VAR_CACHE_MAX_TTL STRING_ARG", +"server_cache_max_negative_ttl : VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG", +"server_cache_min_ttl : VAR_CACHE_MIN_TTL STRING_ARG", +"server_bogus_ttl : VAR_BOGUS_TTL STRING_ARG", +"server_val_clean_additional : VAR_VAL_CLEAN_ADDITIONAL STRING_ARG", +"server_val_permissive_mode : VAR_VAL_PERMISSIVE_MODE STRING_ARG", +"server_aggressive_nsec : VAR_AGGRESSIVE_NSEC STRING_ARG", +"server_ignore_cd_flag : VAR_IGNORE_CD_FLAG STRING_ARG", +"server_serve_expired : VAR_SERVE_EXPIRED STRING_ARG", +"server_serve_expired_ttl : VAR_SERVE_EXPIRED_TTL STRING_ARG", +"server_serve_expired_ttl_reset : VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG", +"server_serve_expired_reply_ttl : VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG", +"server_serve_expired_client_timeout : VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG", +"server_fake_dsa : VAR_FAKE_DSA STRING_ARG", +"server_fake_sha1 : VAR_FAKE_SHA1 STRING_ARG", +"server_val_log_level : VAR_VAL_LOG_LEVEL STRING_ARG", +"server_val_nsec3_keysize_iterations : VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG", +"server_add_holddown : VAR_ADD_HOLDDOWN STRING_ARG", +"server_del_holddown : VAR_DEL_HOLDDOWN STRING_ARG", +"server_keep_missing : VAR_KEEP_MISSING STRING_ARG", +"server_permit_small_holddown : VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG", +"server_key_cache_size : VAR_KEY_CACHE_SIZE STRING_ARG", +"server_key_cache_slabs : VAR_KEY_CACHE_SLABS STRING_ARG", +"server_neg_cache_size : VAR_NEG_CACHE_SIZE STRING_ARG", +"server_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG", +"server_local_data : VAR_LOCAL_DATA STRING_ARG", +"server_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG", +"server_minimal_responses : VAR_MINIMAL_RESPONSES STRING_ARG", +"server_rrset_roundrobin : VAR_RRSET_ROUNDROBIN STRING_ARG", +"server_unknown_server_time_limit : VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG", +"server_max_udp_size : VAR_MAX_UDP_SIZE STRING_ARG", +"server_dns64_prefix : VAR_DNS64_PREFIX STRING_ARG", +"server_dns64_synthall : VAR_DNS64_SYNTHALL STRING_ARG", +"server_dns64_ignore_aaaa : VAR_DNS64_IGNORE_AAAA STRING_ARG", +"server_define_tag : VAR_DEFINE_TAG STRING_ARG", +"server_local_zone_tag : VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG", +"server_access_control_tag : VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG", +"server_access_control_tag_action : VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG", +"server_access_control_tag_data : VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG", +"server_local_zone_override : VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG", +"server_access_control_view : VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG", +"server_response_ip_tag : VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG", +"server_ip_ratelimit : VAR_IP_RATELIMIT STRING_ARG", +"server_ratelimit : VAR_RATELIMIT STRING_ARG", +"server_ip_ratelimit_size : VAR_IP_RATELIMIT_SIZE STRING_ARG", +"server_ratelimit_size : VAR_RATELIMIT_SIZE STRING_ARG", +"server_ip_ratelimit_slabs : VAR_IP_RATELIMIT_SLABS STRING_ARG", +"server_ratelimit_slabs : VAR_RATELIMIT_SLABS STRING_ARG", +"server_ratelimit_for_domain : VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG", +"server_ratelimit_below_domain : VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG", +"server_ip_ratelimit_factor : VAR_IP_RATELIMIT_FACTOR STRING_ARG", +"server_ratelimit_factor : VAR_RATELIMIT_FACTOR STRING_ARG", +"server_low_rtt : VAR_LOW_RTT STRING_ARG", +"server_fast_server_num : VAR_FAST_SERVER_NUM STRING_ARG", +"server_fast_server_permil : VAR_FAST_SERVER_PERMIL STRING_ARG", +"server_qname_minimisation : VAR_QNAME_MINIMISATION STRING_ARG", +"server_qname_minimisation_strict : VAR_QNAME_MINIMISATION_STRICT STRING_ARG", +"server_pad_responses : VAR_PAD_RESPONSES STRING_ARG", +"server_pad_responses_block_size : VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG", +"server_pad_queries : VAR_PAD_QUERIES STRING_ARG", +"server_pad_queries_block_size : VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG", +"server_ipsecmod_enabled : VAR_IPSECMOD_ENABLED STRING_ARG", +"server_ipsecmod_ignore_bogus : VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG", +"server_ipsecmod_hook : VAR_IPSECMOD_HOOK STRING_ARG", +"server_ipsecmod_max_ttl : VAR_IPSECMOD_MAX_TTL STRING_ARG", +"server_ipsecmod_whitelist : VAR_IPSECMOD_WHITELIST STRING_ARG", +"server_ipsecmod_strict : VAR_IPSECMOD_STRICT STRING_ARG", +"stub_name : VAR_NAME STRING_ARG", +"stub_host : VAR_STUB_HOST STRING_ARG", +"stub_addr : VAR_STUB_ADDR STRING_ARG", +"stub_first : VAR_STUB_FIRST STRING_ARG", +"stub_no_cache : VAR_STUB_NO_CACHE STRING_ARG", +"stub_ssl_upstream : VAR_STUB_SSL_UPSTREAM STRING_ARG", +"stub_prime : VAR_STUB_PRIME STRING_ARG", +"forward_name : VAR_NAME STRING_ARG", +"forward_host : VAR_FORWARD_HOST STRING_ARG", +"forward_addr : VAR_FORWARD_ADDR STRING_ARG", +"forward_first : VAR_FORWARD_FIRST STRING_ARG", +"forward_no_cache : VAR_FORWARD_NO_CACHE STRING_ARG", +"forward_ssl_upstream : VAR_FORWARD_SSL_UPSTREAM STRING_ARG", +"auth_name : VAR_NAME STRING_ARG", +"auth_zonefile : VAR_ZONEFILE STRING_ARG", +"auth_master : VAR_MASTER STRING_ARG", +"auth_url : VAR_URL STRING_ARG", +"auth_allow_notify : VAR_ALLOW_NOTIFY STRING_ARG", +"auth_for_downstream : VAR_FOR_DOWNSTREAM STRING_ARG", +"auth_for_upstream : VAR_FOR_UPSTREAM STRING_ARG", +"auth_fallback_enabled : VAR_FALLBACK_ENABLED STRING_ARG", +"view_name : VAR_NAME STRING_ARG", +"view_local_zone : VAR_LOCAL_ZONE STRING_ARG STRING_ARG", +"view_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG", +"view_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG", +"view_local_data : VAR_LOCAL_DATA STRING_ARG", +"view_local_data_ptr : VAR_LOCAL_DATA_PTR STRING_ARG", +"view_first : VAR_VIEW_FIRST STRING_ARG", +"rcstart : VAR_REMOTE_CONTROL", +"contents_rc : contents_rc content_rc", +"contents_rc :", +"content_rc : rc_control_enable", +"content_rc : rc_control_interface", +"content_rc : rc_control_port", +"content_rc : rc_server_key_file", +"content_rc : rc_server_cert_file", +"content_rc : rc_control_key_file", +"content_rc : rc_control_cert_file", +"content_rc : rc_control_use_cert", +"rc_control_enable : VAR_CONTROL_ENABLE STRING_ARG", +"rc_control_port : VAR_CONTROL_PORT STRING_ARG", +"rc_control_interface : VAR_CONTROL_INTERFACE STRING_ARG", +"rc_control_use_cert : VAR_CONTROL_USE_CERT STRING_ARG", +"rc_server_key_file : VAR_SERVER_KEY_FILE STRING_ARG", +"rc_server_cert_file : VAR_SERVER_CERT_FILE STRING_ARG", +"rc_control_key_file : VAR_CONTROL_KEY_FILE STRING_ARG", +"rc_control_cert_file : VAR_CONTROL_CERT_FILE STRING_ARG", +"dtstart : VAR_DNSTAP", +"contents_dt : contents_dt content_dt", +"contents_dt :", +"content_dt : dt_dnstap_enable", +"content_dt : dt_dnstap_socket_path", +"content_dt : dt_dnstap_ip", +"content_dt : dt_dnstap_tls", +"content_dt : dt_dnstap_tls_server_name", +"content_dt : dt_dnstap_tls_cert_bundle", +"content_dt : dt_dnstap_tls_client_key_file", +"content_dt : dt_dnstap_tls_client_cert_file", +"content_dt : dt_dnstap_send_identity", +"content_dt : dt_dnstap_send_version", +"content_dt : dt_dnstap_identity", +"content_dt : dt_dnstap_version", +"content_dt : dt_dnstap_log_resolver_query_messages", +"content_dt : dt_dnstap_log_resolver_response_messages", +"content_dt : dt_dnstap_log_client_query_messages", +"content_dt : dt_dnstap_log_client_response_messages", +"content_dt : dt_dnstap_log_forwarder_query_messages", +"content_dt : dt_dnstap_log_forwarder_response_messages", +"dt_dnstap_enable : VAR_DNSTAP_ENABLE STRING_ARG", +"dt_dnstap_socket_path : VAR_DNSTAP_SOCKET_PATH STRING_ARG", +"dt_dnstap_ip : VAR_DNSTAP_IP STRING_ARG", +"dt_dnstap_tls : VAR_DNSTAP_TLS STRING_ARG", +"dt_dnstap_tls_server_name : VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG", +"dt_dnstap_tls_cert_bundle : VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG", +"dt_dnstap_tls_client_key_file : VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG", +"dt_dnstap_tls_client_cert_file : VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG", +"dt_dnstap_send_identity : VAR_DNSTAP_SEND_IDENTITY STRING_ARG", +"dt_dnstap_send_version : VAR_DNSTAP_SEND_VERSION STRING_ARG", +"dt_dnstap_identity : VAR_DNSTAP_IDENTITY STRING_ARG", +"dt_dnstap_version : VAR_DNSTAP_VERSION STRING_ARG", +"dt_dnstap_log_resolver_query_messages : VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_resolver_response_messages : VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG", +"dt_dnstap_log_client_query_messages : VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_client_response_messages : VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG", +"dt_dnstap_log_forwarder_query_messages : VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG", +"dt_dnstap_log_forwarder_response_messages : VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG", +"pythonstart : VAR_PYTHON", +"contents_py : contents_py content_py", +"contents_py :", +"content_py : py_script", +"py_script : VAR_PYTHON_SCRIPT STRING_ARG", +"server_disable_dnssec_lame_check : VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG", +"server_log_identity : VAR_LOG_IDENTITY STRING_ARG", +"server_response_ip : VAR_RESPONSE_IP STRING_ARG STRING_ARG", +"server_response_ip_data : VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG", +"dnscstart : VAR_DNSCRYPT", +"contents_dnsc : contents_dnsc content_dnsc", +"contents_dnsc :", +"content_dnsc : dnsc_dnscrypt_enable", +"content_dnsc : dnsc_dnscrypt_port", +"content_dnsc : dnsc_dnscrypt_provider", +"content_dnsc : dnsc_dnscrypt_secret_key", +"content_dnsc : dnsc_dnscrypt_provider_cert", +"content_dnsc : dnsc_dnscrypt_provider_cert_rotated", +"content_dnsc : dnsc_dnscrypt_shared_secret_cache_size", +"content_dnsc : dnsc_dnscrypt_shared_secret_cache_slabs", +"content_dnsc : dnsc_dnscrypt_nonce_cache_size", +"content_dnsc : dnsc_dnscrypt_nonce_cache_slabs", +"dnsc_dnscrypt_enable : VAR_DNSCRYPT_ENABLE STRING_ARG", +"dnsc_dnscrypt_port : VAR_DNSCRYPT_PORT STRING_ARG", +"dnsc_dnscrypt_provider : VAR_DNSCRYPT_PROVIDER STRING_ARG", +"dnsc_dnscrypt_provider_cert : VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG", +"dnsc_dnscrypt_provider_cert_rotated : VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG", +"dnsc_dnscrypt_secret_key : VAR_DNSCRYPT_SECRET_KEY STRING_ARG", +"dnsc_dnscrypt_shared_secret_cache_size : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG", +"dnsc_dnscrypt_shared_secret_cache_slabs : VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG", +"dnsc_dnscrypt_nonce_cache_size : VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG", +"dnsc_dnscrypt_nonce_cache_slabs : VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG", +"cachedbstart : VAR_CACHEDB", +"contents_cachedb : contents_cachedb content_cachedb", +"contents_cachedb :", +"content_cachedb : cachedb_backend_name", +"content_cachedb : cachedb_secret_seed", +"content_cachedb : redis_server_host", +"content_cachedb : redis_server_port", +"content_cachedb : redis_timeout", +"cachedb_backend_name : VAR_CACHEDB_BACKEND STRING_ARG", +"cachedb_secret_seed : VAR_CACHEDB_SECRETSEED STRING_ARG", +"redis_server_host : VAR_CACHEDB_REDISHOST STRING_ARG", +"redis_server_port : VAR_CACHEDB_REDISPORT STRING_ARG", +"redis_timeout : VAR_CACHEDB_REDISTIMEOUT STRING_ARG", +"server_tcp_connection_limit : VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG", +"ipsetstart : VAR_IPSET", +"contents_ipset : contents_ipset content_ipset", +"contents_ipset :", +"content_ipset : ipset_name_v4", +"content_ipset : ipset_name_v6", +"ipset_name_v4 : VAR_IPSET_NAME_V4 STRING_ARG", +"ipset_name_v6 : VAR_IPSET_NAME_V6 STRING_ARG", + }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 -/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. - First, the terminals, then, starting at YYNTOKENS, nonterminals. */ -static const char *const yytname[] = -{ - "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY", - "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", - "VAR_PREFER_IP4", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", - "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", - "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", - "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", - "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", - "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD", - "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", - "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", - "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", - "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", - "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", - "VAR_HARDEN_LARGE_QUERIES", "VAR_FORWARD_ZONE", "VAR_FORWARD_HOST", - "VAR_FORWARD_ADDR", "VAR_DO_NOT_QUERY_ADDRESS", "VAR_HIDE_IDENTITY", - "VAR_HIDE_VERSION", "VAR_IDENTITY", "VAR_VERSION", "VAR_HARDEN_GLUE", - "VAR_MODULE_CONF", "VAR_TRUST_ANCHOR_FILE", "VAR_TRUST_ANCHOR", - "VAR_VAL_OVERRIDE_DATE", "VAR_BOGUS_TTL", "VAR_VAL_CLEAN_ADDITIONAL", - "VAR_VAL_PERMISSIVE_MODE", "VAR_INCOMING_NUM_TCP", "VAR_MSG_BUFFER_SIZE", - "VAR_KEY_CACHE_SIZE", "VAR_KEY_CACHE_SLABS", "VAR_TRUSTED_KEYS_FILE", - "VAR_VAL_NSEC3_KEYSIZE_ITERATIONS", "VAR_USE_SYSLOG", - "VAR_OUTGOING_INTERFACE", "VAR_ROOT_HINTS", "VAR_DO_NOT_QUERY_LOCALHOST", - "VAR_CACHE_MAX_TTL", "VAR_HARDEN_DNSSEC_STRIPPED", "VAR_ACCESS_CONTROL", - "VAR_LOCAL_ZONE", "VAR_LOCAL_DATA", "VAR_INTERFACE_AUTOMATIC", - "VAR_STATISTICS_INTERVAL", "VAR_DO_DAEMONIZE", "VAR_USE_CAPS_FOR_ID", - "VAR_STATISTICS_CUMULATIVE", "VAR_OUTGOING_PORT_PERMIT", - "VAR_OUTGOING_PORT_AVOID", "VAR_DLV_ANCHOR_FILE", "VAR_DLV_ANCHOR", - "VAR_NEG_CACHE_SIZE", "VAR_HARDEN_REFERRAL_PATH", "VAR_PRIVATE_ADDRESS", - "VAR_PRIVATE_DOMAIN", "VAR_REMOTE_CONTROL", "VAR_CONTROL_ENABLE", - "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE", - "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE", - "VAR_CONTROL_USE_CERT", "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", - "VAR_JOSTLE_TIMEOUT", "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", - "VAR_LOG_TIME_ASCII", "VAR_DOMAIN_INSECURE", "VAR_PYTHON", - "VAR_PYTHON_SCRIPT", "VAR_VAL_SIG_SKEW_MIN", "VAR_VAL_SIG_SKEW_MAX", - "VAR_CACHE_MIN_TTL", "VAR_VAL_LOG_LEVEL", "VAR_AUTO_TRUST_ANCHOR_FILE", - "VAR_KEEP_MISSING", "VAR_ADD_HOLDDOWN", "VAR_DEL_HOLDDOWN", - "VAR_SO_RCVBUF", "VAR_EDNS_BUFFER_SIZE", "VAR_PREFETCH", - "VAR_PREFETCH_KEY", "VAR_SO_SNDBUF", "VAR_SO_REUSEPORT", - "VAR_HARDEN_BELOW_NXDOMAIN", "VAR_IGNORE_CD_FLAG", "VAR_LOG_QUERIES", - "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", - "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", - "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", - "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST", - "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", - "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", - "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES", - "VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES", "VAR_RESPONSE_IP_TAG", - "VAR_RESPONSE_IP", "VAR_RESPONSE_IP_DATA", "VAR_HARDEN_ALGO_DOWNGRADE", - "VAR_IP_TRANSPARENT", "VAR_IP_DSCP", "VAR_DISABLE_DNSSEC_LAME_CHECK", - "VAR_IP_RATELIMIT", "VAR_IP_RATELIMIT_SLABS", "VAR_IP_RATELIMIT_SIZE", - "VAR_RATELIMIT", "VAR_RATELIMIT_SLABS", "VAR_RATELIMIT_SIZE", - "VAR_RATELIMIT_FOR_DOMAIN", "VAR_RATELIMIT_BELOW_DOMAIN", - "VAR_IP_RATELIMIT_FACTOR", "VAR_RATELIMIT_FACTOR", - "VAR_SEND_CLIENT_SUBNET", "VAR_CLIENT_SUBNET_ZONE", - "VAR_CLIENT_SUBNET_ALWAYS_FORWARD", "VAR_CLIENT_SUBNET_OPCODE", - "VAR_MAX_CLIENT_SUBNET_IPV4", "VAR_MAX_CLIENT_SUBNET_IPV6", - "VAR_MIN_CLIENT_SUBNET_IPV4", "VAR_MIN_CLIENT_SUBNET_IPV6", - "VAR_MAX_ECS_TREE_SIZE_IPV4", "VAR_MAX_ECS_TREE_SIZE_IPV6", - "VAR_CAPS_WHITELIST", "VAR_CACHE_MAX_NEGATIVE_TTL", - "VAR_PERMIT_SMALL_HOLDDOWN", "VAR_QNAME_MINIMISATION", - "VAR_QNAME_MINIMISATION_STRICT", "VAR_IP_FREEBIND", "VAR_DEFINE_TAG", - "VAR_LOCAL_ZONE_TAG", "VAR_ACCESS_CONTROL_TAG", - "VAR_LOCAL_ZONE_OVERRIDE", "VAR_ACCESS_CONTROL_TAG_ACTION", - "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", - "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", - "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", - "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", - "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", - "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", - "VAR_DNSCRYPT_SECRET_KEY", "VAR_DNSCRYPT_PROVIDER_CERT", - "VAR_DNSCRYPT_PROVIDER_CERT_ROTATED", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE", - "VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS", - "VAR_DNSCRYPT_NONCE_CACHE_SIZE", "VAR_DNSCRYPT_NONCE_CACHE_SLABS", - "VAR_IPSECMOD_ENABLED", "VAR_IPSECMOD_HOOK", "VAR_IPSECMOD_IGNORE_BOGUS", - "VAR_IPSECMOD_MAX_TTL", "VAR_IPSECMOD_WHITELIST", "VAR_IPSECMOD_STRICT", - "VAR_CACHEDB", "VAR_CACHEDB_BACKEND", "VAR_CACHEDB_SECRETSEED", - "VAR_CACHEDB_REDISHOST", "VAR_CACHEDB_REDISPORT", - "VAR_CACHEDB_REDISTIMEOUT", "VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM", - "VAR_FOR_UPSTREAM", "VAR_AUTH_ZONE", "VAR_ZONEFILE", "VAR_MASTER", - "VAR_URL", "VAR_FOR_DOWNSTREAM", "VAR_FALLBACK_ENABLED", - "VAR_TLS_ADDITIONAL_PORT", "VAR_LOW_RTT", "VAR_LOW_RTT_PERMIL", - "VAR_FAST_SERVER_PERMIL", "VAR_FAST_SERVER_NUM", "VAR_ALLOW_NOTIFY", - "VAR_TLS_WIN_CERT", "VAR_TCP_CONNECTION_LIMIT", "VAR_FORWARD_NO_CACHE", - "VAR_STUB_NO_CACHE", "VAR_LOG_SERVFAIL", "VAR_DENY_ANY", - "VAR_UNKNOWN_SERVER_TIME_LIMIT", "VAR_LOG_TAG_QUERYREPLY", - "VAR_STREAM_WAIT_SIZE", "VAR_TLS_CIPHERS", "VAR_TLS_CIPHERSUITES", - "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", - "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", - "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", - "VAR_RPZ_LOG_NAME", "$accept", "toplevelvars", "toplevelvar", - "serverstart", "contents_server", "content_server", "stubstart", - "contents_stub", "content_stub", "forwardstart", "contents_forward", - "content_forward", "viewstart", "contents_view", "content_view", - "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", - "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", - "server_client_subnet_always_forward", "server_client_subnet_opcode", - "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", - "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", - "server_max_ecs_tree_size_ipv4", "server_max_ecs_tree_size_ipv6", - "server_interface", "server_outgoing_interface", "server_outgoing_range", - "server_outgoing_port_permit", "server_outgoing_port_avoid", - "server_outgoing_num_tcp", "server_incoming_num_tcp", - "server_interface_automatic", "server_do_ip4", "server_do_ip6", - "server_do_udp", "server_do_tcp", "server_prefer_ip4", - "server_prefer_ip6", "server_tcp_mss", "server_outgoing_tcp_mss", - "server_tcp_idle_timeout", "server_tcp_keepalive", - "server_tcp_keepalive_timeout", "server_tcp_upstream", - "server_udp_upstream_without_downstream", "server_ssl_upstream", - "server_ssl_service_key", "server_ssl_service_pem", "server_ssl_port", - "server_tls_cert_bundle", "server_tls_win_cert", - "server_tls_additional_port", "server_tls_ciphers", - "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", - "server_log_local_actions", "server_chroot", "server_username", - "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", - "server_auto_trust_anchor_file", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_trust_anchor_signaling", "server_root_key_sentinel", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_identity", "server_version", - "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", - "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", - "server_stream_wait_size", "server_edns_buffer_size", - "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_jostle_timeout", "server_delay_close", - "server_unblock_lan_zones", "server_insecure_lan_zones", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", - "server_val_nsec3_keysize_iterations", "server_add_holddown", - "server_del_holddown", "server_keep_missing", - "server_permit_small_holddown", "server_key_cache_size", - "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone", - "server_local_data", "server_local_data_ptr", "server_minimal_responses", - "server_rrset_roundrobin", "server_unknown_server_time_limit", - "server_max_udp_size", "server_dns64_prefix", "server_dns64_synthall", - "server_dns64_ignore_aaaa", "server_define_tag", "server_local_zone_tag", - "server_access_control_tag", "server_access_control_tag_action", - "server_access_control_tag_data", "server_local_zone_override", - "server_access_control_view", "server_response_ip_tag", - "server_ip_ratelimit", "server_ratelimit", "server_ip_ratelimit_size", - "server_ratelimit_size", "server_ip_ratelimit_slabs", - "server_ratelimit_slabs", "server_ratelimit_for_domain", - "server_ratelimit_below_domain", "server_ip_ratelimit_factor", - "server_ratelimit_factor", "server_low_rtt", "server_fast_server_num", - "server_fast_server_permil", "server_qname_minimisation", - "server_qname_minimisation_strict", "server_ipsecmod_enabled", - "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", - "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", - "auth_for_upstream", "auth_fallback_enabled", "view_name", - "view_local_zone", "view_response_ip", "view_response_ip_data", - "view_local_data", "view_local_data_ptr", "view_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", - "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", - "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", - "dt_dnstap_send_identity", "dt_dnstap_send_version", - "dt_dnstap_identity", "dt_dnstap_version", - "dt_dnstap_log_resolver_query_messages", - "dt_dnstap_log_resolver_response_messages", - "dt_dnstap_log_client_query_messages", - "dt_dnstap_log_client_response_messages", - "dt_dnstap_log_forwarder_query_messages", - "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", - "server_disable_dnssec_lame_check", "server_log_identity", - "server_response_ip", "server_response_ip_data", "dnscstart", - "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", - "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", - "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated", - "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", - "dnsc_dnscrypt_shared_secret_cache_slabs", - "dnsc_dnscrypt_nonce_cache_size", "dnsc_dnscrypt_nonce_cache_slabs", - "cachedbstart", "contents_cachedb", "content_cachedb", - "cachedb_backend_name", "cachedb_secret_seed", "redis_server_host", - "redis_server_port", "redis_timeout", "server_tcp_connection_limit", - "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", - "ipset_name_v6", YY_NULLPTR -}; -#endif - -# ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540 -}; -# endif - -#define YYPACT_NINF -270 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-270))) - -#define YYTABLE_NINF -1 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - -270, 0, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, 269, -42, - -37, -41, -21, -43, -44, -87, -106, -205, -229, -269, - 2, 3, 4, 12, 24, 25, 26, 27, 28, 31, - 32, 33, 34, 36, 37, 38, 39, 40, 50, 51, - 52, 53, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 87, 88, 91, 93, 94, 95, 96, - 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 204, 205, - 206, 207, 208, 209, 210, 212, 213, 214, 215, 217, - 219, 222, 234, 236, 237, 238, 239, 240, 241, 242, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 267, 268, 303, 304, 305, 306, 310, 311, - 312, 354, 355, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 356, 357, 358, - 359, 360, 361, 362, -270, -270, -270, -270, -270, -270, - -270, -270, 366, 370, 371, 396, 397, 398, -270, -270, - -270, -270, -270, -270, -270, 400, 411, 412, 413, 414, - 415, 416, -270, -270, -270, -270, -270, -270, -270, -270, - 417, 418, 419, 420, 421, 422, 423, 424, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 425, 426, 427, - 428, 429, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, 469, 471, 487, 488, 489, 490, 491, - 492, -270, -270, -270, -270, -270, -270, -270, -270, -270, - 493, 494, 495, 496, 497, 504, 505, 506, 507, 508, - 509, 511, 512, 513, 514, 515, 516, 517, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 520, -270, -270, - 523, 526, 527, 535, 536, 537, 539, 540, 541, 542, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 543, 544, 545, 546, 547, -270, -270, -270, -270, - -270, -270, 548, 549, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 550, 551, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, 552, 553, 554, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, 555, 556, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, 557, 558, - 559, 560, 561, 562, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, 563, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, 564, -270, -270, 565, 566, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, 567, 568, 569, -270, - -270, -270, -270, -270, -270, -270, -270 -}; - - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 2, 0, 1, 16, 212, 222, 486, 544, 505, 231, - 553, 576, 241, 590, 257, 3, 18, 214, 224, 233, - 243, 259, 488, 507, 546, 555, 578, 592, 4, 5, - 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 17, 19, 20, 83, 86, 95, 183, - 184, 21, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 34, 74, 22, 87, 88, 45, 67, 82, - 23, 24, 27, 28, 25, 26, 29, 30, 31, 32, - 33, 118, 195, 119, 121, 122, 123, 197, 202, 198, - 209, 210, 211, 179, 84, 73, 99, 116, 117, 207, - 204, 120, 35, 36, 37, 38, 39, 75, 89, 90, - 105, 61, 71, 62, 187, 188, 100, 55, 56, 186, - 57, 58, 109, 113, 127, 136, 162, 139, 208, 110, - 68, 40, 41, 42, 97, 128, 129, 130, 43, 44, - 46, 47, 49, 50, 48, 134, 51, 52, 53, 59, - 78, 114, 92, 135, 85, 158, 93, 94, 111, 112, - 205, 98, 54, 76, 79, 60, 63, 101, 102, 77, - 159, 103, 64, 65, 66, 196, 115, 172, 173, 174, - 175, 176, 177, 185, 104, 72, 106, 107, 108, 160, - 69, 70, 91, 80, 81, 96, 124, 125, 206, 126, - 131, 132, 133, 163, 164, 166, 168, 169, 167, 170, - 180, 137, 138, 142, 143, 140, 141, 144, 145, 147, - 146, 199, 201, 200, 161, 171, 189, 191, 190, 192, - 193, 194, 165, 178, 181, 182, 203, 0, 0, 0, - 0, 0, 0, 0, 213, 215, 216, 217, 219, 220, - 221, 218, 0, 0, 0, 0, 0, 0, 223, 225, - 226, 227, 228, 229, 230, 0, 0, 0, 0, 0, - 0, 0, 232, 234, 235, 238, 239, 236, 240, 237, - 0, 0, 0, 0, 0, 0, 0, 0, 242, 244, - 245, 246, 247, 251, 248, 249, 250, 0, 0, 0, - 0, 0, 262, 266, 267, 268, 269, 258, 260, 261, - 263, 264, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 487, 489, 491, 490, 496, 492, 493, 494, 495, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 508, - 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 0, 545, 547, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 554, 556, 557, 558, 560, 561, 559, 562, 563, 564, - 565, 0, 0, 0, 0, 0, 577, 579, 580, 581, - 582, 583, 0, 0, 591, 593, 594, 271, 270, 277, - 290, 288, 300, 296, 297, 301, 298, 299, 302, 303, - 304, 305, 306, 328, 329, 330, 331, 332, 357, 358, - 359, 364, 365, 293, 366, 367, 370, 368, 369, 372, - 373, 374, 388, 343, 344, 346, 347, 375, 391, 337, - 339, 392, 398, 399, 400, 294, 356, 416, 417, 338, - 411, 321, 289, 333, 389, 395, 376, 0, 0, 420, - 295, 272, 320, 380, 273, 291, 292, 334, 335, 418, - 378, 382, 383, 274, 421, 360, 387, 322, 342, 393, - 394, 397, 410, 336, 414, 412, 413, 348, 355, 384, - 385, 349, 350, 377, 402, 323, 324, 327, 307, 309, - 310, 311, 312, 313, 422, 423, 425, 361, 362, 363, - 371, 426, 427, 428, 0, 0, 0, 379, 351, 353, - 549, 437, 441, 439, 438, 442, 440, 0, 0, 445, - 446, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 381, 396, 415, 450, 451, 352, 429, 0, 0, - 0, 0, 0, 0, 403, 404, 405, 406, 407, 408, - 409, 550, 345, 340, 401, 319, 275, 276, 341, 452, - 454, 453, 455, 456, 457, 308, 315, 447, 449, 448, - 314, 0, 326, 386, 424, 325, 354, 316, 317, 318, - 458, 459, 460, 464, 463, 461, 462, 465, 466, 467, - 468, 470, 469, 479, 0, 483, 484, 0, 0, 485, - 471, 477, 472, 473, 474, 476, 478, 475, 252, 253, - 254, 255, 256, 497, 499, 498, 501, 502, 503, 504, - 500, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 548, - 566, 567, 568, 571, 569, 570, 572, 573, 574, 575, - 584, 585, 586, 587, 588, 595, 596, 390, 419, 436, - 551, 552, 443, 444, 430, 431, 0, 0, 0, 435, - 589, 480, 481, 482, 434, 432, 433 -}; - - /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int16 yypgoto[] = -{ - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -23, 570, 571, - 572, 573, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270, -270, - -270, -270, -270, -270, -270, -270, -270, -270, -270 -}; - - /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 1, 15, 16, 28, 233, 17, 29, 434, 18, - 30, 448, 19, 31, 462, 20, 32, 478, 492, 493, - 494, 495, 496, 21, 33, 497, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 435, 436, 437, 438, 439, 440, - 441, 449, 450, 451, 452, 453, 454, 479, 480, 481, - 482, 483, 484, 485, 486, 463, 464, 465, 466, 467, - 468, 469, 22, 34, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 23, 35, 538, 539, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 24, 36, 558, 559, 422, 423, - 424, 425, 25, 37, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 580, 26, 38, 586, 587, 588, - 589, 590, 591, 426, 27, 39, 594, 595, 596 -}; - - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = -{ - 2, 470, 427, 455, 428, 429, 557, 442, 592, 593, - 498, 3, 597, 598, 599, 443, 444, 581, 582, 583, - 584, 585, 600, 470, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 601, 602, 603, 604, 605, 456, - 457, 606, 607, 608, 609, 4, 610, 611, 612, 613, - 614, 5, 503, 504, 505, 506, 507, 508, 509, 510, - 615, 616, 617, 618, 458, 430, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 6, 431, 630, 631, 432, - 445, 632, 446, 633, 634, 635, 636, 637, 638, 639, - 640, 7, 641, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, - 659, 459, 460, 660, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 8, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, - 696, 461, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, - 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, - 9, 472, 473, 474, 735, 736, 737, 738, 739, 740, - 741, 477, 742, 743, 744, 745, 433, 746, 10, 747, - 447, 471, 748, 472, 473, 474, 475, 476, 487, 488, - 489, 490, 491, 477, 749, 11, 750, 751, 752, 753, - 754, 755, 756, 12, 757, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, - 773, 774, 775, 776, 777, 778, 13, 779, 780, 0, - 14, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 781, 782, 783, 784, 72, 73, 74, - 785, 786, 787, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 788, 789, 790, 791, 792, 793, - 794, 795, 796, 116, 117, 118, 797, 119, 120, 121, - 798, 799, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 800, 801, 802, 146, - 803, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 804, 805, 806, 807, 808, 809, 810, 811, 812, - 813, 814, 815, 816, 817, 818, 819, 820, 821, 822, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 823, - 196, 824, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 825, 826, 827, - 828, 829, 830, 831, 832, 833, 834, 835, 212, 213, - 214, 215, 216, 217, 836, 837, 838, 839, 840, 841, - 218, 842, 843, 844, 845, 846, 847, 848, 219, 220, - 849, 221, 222, 850, 223, 224, 851, 852, 225, 226, - 227, 228, 229, 230, 231, 853, 854, 855, 232, 856, - 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 499, 500, 501, 502 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 44, 44, 44, 46, 47, 112, 44, 277, 278, - 33, 11, 10, 10, 10, 52, 53, 246, 247, 248, - 249, 250, 10, 44, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 10, 10, 10, 10, 10, 80, - 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 96, 97, 98, 99, 100, 101, 102, 103, - 10, 10, 10, 10, 105, 107, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, - 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, - 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 254, 255, 256, 10, 10, 10, 10, 10, 10, - 10, 264, 10, 10, 10, 10, 268, 10, 228, 10, - 267, 252, 10, 254, 255, 256, 257, 258, 281, 282, - 283, 284, 285, 264, 10, 245, 10, 10, 10, 10, - 10, 10, 10, 253, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 276, 10, 10, -1, - 280, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 10, 10, 10, 10, 48, 49, 50, - 10, 10, 10, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 104, 105, 106, 10, 108, 109, 110, - 10, 10, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 10, 10, 10, 140, - 10, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 10, - 211, 10, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 239, 240, - 241, 242, 243, 244, 10, 10, 10, 10, 10, 10, - 251, 10, 10, 10, 10, 10, 10, 10, 259, 260, - 10, 262, 263, 10, 265, 266, 10, 10, 269, 270, - 271, 272, 273, 274, 275, 10, 10, 10, 279, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, 33, 33, 33 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 0, 287, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 253, 276, 280, 288, 289, 292, 295, 298, - 301, 309, 528, 539, 560, 568, 581, 590, 290, 293, - 296, 299, 302, 310, 529, 540, 561, 569, 582, 591, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 48, 49, 50, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, - 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 251, 259, - 260, 262, 263, 265, 266, 269, 270, 271, 272, 273, - 274, 275, 279, 291, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 564, 565, 566, 567, 589, 44, 46, 47, - 107, 138, 141, 268, 294, 500, 501, 502, 503, 504, - 505, 506, 44, 52, 53, 137, 139, 267, 297, 507, - 508, 509, 510, 511, 512, 44, 80, 81, 105, 172, - 173, 212, 300, 521, 522, 523, 524, 525, 526, 527, - 44, 252, 254, 255, 256, 257, 258, 264, 303, 513, - 514, 515, 516, 517, 518, 519, 520, 281, 282, 283, - 284, 285, 304, 305, 306, 307, 308, 311, 513, 514, - 515, 516, 517, 96, 97, 98, 99, 100, 101, 102, - 103, 530, 531, 532, 533, 534, 535, 536, 537, 538, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 541, 542, - 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 558, 559, 112, 562, 563, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 246, 247, 248, 249, 250, 583, 584, 585, 586, - 587, 588, 277, 278, 592, 593, 594, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10 -}; - - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = -{ - 0, 286, 287, 287, 288, 288, 288, 288, 288, 288, - 288, 288, 288, 288, 288, 288, 289, 290, 290, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 292, 293, 293, 294, 294, 294, 294, 294, - 294, 294, 295, 296, 296, 297, 297, 297, 297, 297, - 297, 298, 299, 299, 300, 300, 300, 300, 300, 300, - 300, 301, 302, 302, 303, 303, 303, 303, 303, 303, - 303, 303, 304, 305, 306, 307, 308, 309, 310, 310, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, - 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 529, 530, - 530, 530, 530, 530, 530, 530, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 539, 540, 540, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, - 541, 541, 541, 541, 541, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 569, 570, 570, 570, 570, - 570, 570, 570, 570, 570, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 582, 583, - 583, 583, 583, 583, 584, 585, 586, 587, 588, 589, - 590, 591, 591, 592, 592, 593, 594 -}; - - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 4, 4, 4, 3, 3, 2, 2, 2, - 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 2, 2, - 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 -}; - - -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 - -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab - - -#define YYRECOVERING() (!!yyerrstatus) - -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) - -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - - - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - 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, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) - - -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ - -static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - FILE *yyoutput = yyo; - YYUSE (yyoutput); - if (!yyvaluep) - return; -# ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); -# endif - YYUSE (yytype); -} - - -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ - -static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) -{ - YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); -} - -/*------------------------------------------------------------------. -| yy_stack_print -- Print the state stack from its BOTTOM up to its | -| TOP (included). | -`------------------------------------------------------------------*/ - -static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -{ - YYFPRINTF (stderr, "Stack now"); - for (; yybottom <= yytop; yybottom++) - { - int yybot = *yybottom; - YYFPRINTF (stderr, " %d", yybot); - } - YYFPRINTF (stderr, "\n"); -} - -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) - - -/*------------------------------------------------. -| Report that the YYRULE is going to be reduced. | -`------------------------------------------------*/ - -static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) -{ - unsigned long yylno = yyrline[yyrule]; - int yynrhs = yyr2[yyrule]; - int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); - /* The symbols being reduced. */ - for (yyi = 0; yyi < yynrhs; yyi++) - { - YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); - YYFPRINTF (stderr, "\n"); - } -} - -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, Rule); \ -} while (0) - -/* Nonzero means print parse trace. It is left uninitialized so that - multiple parsers can coexist. */ -int yydebug; -#else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) -# define YY_STACK_PRINT(Bottom, Top) -# define YY_REDUCE_PRINT(Rule) -#endif /* !YYDEBUG */ - - -/* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH -# define YYINITDEPTH 200 -#endif - -/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only - if the built-in stack extension method is used). - - Do not make this value too large; the results are undefined if - YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) - evaluated with infinite-precision integer arithmetic. */ - -#ifndef YYMAXDEPTH -# define YYMAXDEPTH 10000 -#endif - - -#if YYERROR_VERBOSE - -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif - -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ - -/*-----------------------------------------------. -| Release the memory associated to this symbol. | -`-----------------------------------------------*/ - -static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) -{ - YYUSE (yyvaluep); - if (!yymsg) - yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END -} - - - - -/* The lookahead symbol. */ -int yychar; - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; - - -/*----------. -| yyparse. | -`----------*/ - -int -yyparse (void) -{ - int yystate; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; - - int yyn; - int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) - - /* The number of symbols on the RHS of the reduced rule. - Keep to zero when no symbol should be popped. */ - int yylen = 0; - - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - - YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ - goto yysetstate; - - -/*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | -`------------------------------------------------------------*/ -yynewstate: - /* In all cases, when you get here, the value and location stacks - have just been pushed. So pushing a state here evens the stacks. */ - yyssp++; - - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; - - if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; +int yydebug; +int yynerrs; + +int yyerrflag; +int yychar; +YYSTYPE yyval; +YYSTYPE yylval; + +/* define the initial stack-sizes */ +#ifdef YYSTACKSIZE +#undef YYMAXDEPTH +#define YYMAXDEPTH YYSTACKSIZE #else - { - /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); - -# if defined yyoverflow - { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yystacksize); - yyss = yyss1; - yyvs = yyvs1; - } -# else /* defined YYSTACK_RELOCATE */ - /* Extend the stack our own way. */ - if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; - yystacksize *= 2; - if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; - - { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); - } -# endif - - yyssp = yyss + yysize - 1; - yyvsp = yyvs + yysize - 1; - - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); - - if (yyss + yystacksize - 1 <= yyssp) - YYABORT; - } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ - - if (yystate == YYFINAL) - YYACCEPT; - - goto yybackup; - - -/*-----------. -| yybackup. | -`-----------*/ -yybackup: - /* Do appropriate processing given the current state. Read a - lookahead token if we need one and don't already have one. */ - - /* First try to decide what to do without reference to lookahead token. */ - yyn = yypact[yystate]; - if (yypact_value_is_default (yyn)) - goto yydefault; - - /* Not known => get a lookahead token if don't already have one. */ - - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ - if (yychar == YYEMPTY) - { - YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (); - } - - if (yychar <= YYEOF) - { - yychar = yytoken = YYEOF; - YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { - yytoken = YYTRANSLATE (yychar); - YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); - } - - /* If the proper action on seeing token YYTOKEN is to reduce or to - detect an error, take that action. */ - yyn += yytoken; - if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) - goto yydefault; - yyn = yytable[yyn]; - if (yyn <= 0) - { - if (yytable_value_is_error (yyn)) - goto yyerrlab; - yyn = -yyn; - goto yyreduce; - } - - /* Count tokens shifted since error; after three, turn off error - status. */ - if (yyerrstatus) - yyerrstatus--; - - /* Shift the lookahead token. */ - YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - - yystate = yyn; - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - goto yynewstate; - - -/*-----------------------------------------------------------. -| yydefault -- do the default action for the current state. | -`-----------------------------------------------------------*/ -yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; - goto yyreduce; - - -/*-----------------------------. -| yyreduce -- do a reduction. | -`-----------------------------*/ -yyreduce: - /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; - - /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. - - Otherwise, the following line sets YYVAL to garbage. - This behavior is undocumented and Bison - users should not rely upon it. Assigning to YYVAL - unconditionally makes the parser a bit smaller, and it avoids a - GCC warning that YYVAL may be used uninitialized. */ - yyval = yyvsp[1-yylen]; - - - YY_REDUCE_PRINT (yyn); - switch (yyn) - { - case 16: -#line 189 "./util/configparser.y" - { - OUTYY(("\nP(server:)\n")); - } -#line 2706 "util/configparser.c" - break; - - case 212: -#line 282 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(stub_zone:)\n")); - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->stubs; - cfg_parser->cfg->stubs = s; - } else - yyerror("out of memory"); - } -#line 2721 "util/configparser.c" - break; - - case 222: -#line 299 "./util/configparser.y" - { - struct config_stub* s; - OUTYY(("\nP(forward_zone:)\n")); - s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); - if(s) { - s->next = cfg_parser->cfg->forwards; - cfg_parser->cfg->forwards = s; - } else - yyerror("out of memory"); - } -#line 2736 "util/configparser.c" - break; - - case 231: -#line 316 "./util/configparser.y" - { - struct config_view* s; - OUTYY(("\nP(view:)\n")); - s = (struct config_view*)calloc(1, sizeof(struct config_view)); - if(s) { - s->next = cfg_parser->cfg->views; - if(s->next && !s->next->name) - yyerror("view without name"); - cfg_parser->cfg->views = s; - } else - yyerror("out of memory"); - } -#line 2753 "util/configparser.c" - break; - - case 241: -#line 335 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(auth_zone:)\n")); - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for auth zone */ - s->for_downstream = 1; - s->for_upstream = 1; - s->fallback_enabled = 0; - s->isrpz = 0; - } else - yyerror("out of memory"); - } -#line 2773 "util/configparser.c" - break; - - case 252: -#line 359 "./util/configparser.y" - { - uint8_t* bitlist; - size_t len = 0; - OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); - bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), - &len); - free((yyvsp[0].str)); - if(!bitlist) { - yyerror("could not parse tags, (define-tag them first)"); - } - if(bitlist) { - cfg_parser->cfg->auths->rpz_taglist = bitlist; - cfg_parser->cfg->auths->rpz_taglistlen = len; - - } - } -#line 2794 "util/configparser.c" - break; - - case 253: -#line 378 "./util/configparser.y" - { - OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && - strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && - strcmp((yyvsp[0].str), "cname")!=0 && strcmp((yyvsp[0].str), "disabled")!=0) { - yyerror("rpz-action-override action: expected nxdomain, " - "nodata, passthru, drop, cname or disabled"); - free((yyvsp[0].str)); - cfg_parser->cfg->auths->rpz_action_override = NULL; - } - else { - cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); - } - } -#line 2813 "util/configparser.c" - break; - - case 254: -#line 395 "./util/configparser.y" - { - OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_cname); - cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); - } -#line 2823 "util/configparser.c" - break; - - case 255: -#line 403 "./util/configparser.y" - { - OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2835 "util/configparser.c" - break; - - case 256: -#line 413 "./util/configparser.y" - { - OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->auths->rpz_log_name); - cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); - } -#line 2845 "util/configparser.c" - break; - - case 257: -#line 421 "./util/configparser.y" - { - struct config_auth* s; - OUTYY(("\nP(rpz:)\n")); - s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); - if(s) { - s->next = cfg_parser->cfg->auths; - cfg_parser->cfg->auths = s; - /* defaults for RPZ auth zone */ - s->for_downstream = 0; - s->for_upstream = 0; - s->fallback_enabled = 0; - s->isrpz = 1; - } else - yyerror("out of memory"); - } -#line 2865 "util/configparser.c" - break; - - case 270: -#line 444 "./util/configparser.y" - { - OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2877 "util/configparser.c" - break; - - case 271: -#line 453 "./util/configparser.y" - { - OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2889 "util/configparser.c" - break; - - case 272: -#line 462 "./util/configparser.y" - { - OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->stat_interval = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2903 "util/configparser.c" - break; - - case 273: -#line 473 "./util/configparser.y" - { - OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2915 "util/configparser.c" - break; - - case 274: -#line 482 "./util/configparser.y" - { - OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2927 "util/configparser.c" - break; - - case 275: -#line 491 "./util/configparser.y" - { - OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 2939 "util/configparser.c" - break; - - case 276: -#line 500 "./util/configparser.y" - { - OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) - cfg_parser->cfg->shm_key = 0; - else if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2953 "util/configparser.c" - break; - - case 277: -#line 511 "./util/configparser.y" - { - OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 2965 "util/configparser.c" - break; - - case 278: -#line 520 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 2980 "util/configparser.c" - break; - - case 279: -#line 532 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, - (yyvsp[0].str))) - fatal_exit("out of memory adding client-subnet-zone"); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 2996 "util/configparser.c" - break; - - case 280: -#line 546 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->client_subnet_always_forward = - (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3014 "util/configparser.c" - break; - - case 281: -#line 561 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); - OUTYY(("P(Deprecated option, ignoring)\n")); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3028 "util/configparser.c" - break; - - case 282: -#line 572 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->max_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv4 = 0; - else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3048 "util/configparser.c" - break; - - case 283: -#line 589 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->max_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_client_subnet_ipv6 = 0; - else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3068 "util/configparser.c" - break; - - case 284: -#line 606 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 32) - cfg_parser->cfg->min_client_subnet_ipv4 = 32; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv4 = 0; - else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3088 "util/configparser.c" - break; - - case 285: -#line 623 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("Ipv6 subnet length expected"); - else if (atoi((yyvsp[0].str)) > 128) - cfg_parser->cfg->min_client_subnet_ipv6 = 128; - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->min_client_subnet_ipv6 = 0; - else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3108 "util/configparser.c" - break; - - case 286: -#line 640 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv4 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3126 "util/configparser.c" - break; - - case 287: -#line 655 "./util/configparser.y" - { - #ifdef CLIENT_SUBNET - OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("IPv6 ECS tree size expected"); - else if (atoi((yyvsp[0].str)) < 0) - cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; - else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 3144 "util/configparser.c" - break; - - case 288: -#line 670 "./util/configparser.y" - { - OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_ifs == 0) - cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, - (cfg_parser->cfg->num_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); - } -#line 3160 "util/configparser.c" - break; - - case 289: -#line 683 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->num_out_ifs == 0) - cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); - else cfg_parser->cfg->out_ifs = realloc( - cfg_parser->cfg->out_ifs, - (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*)); - if(!cfg_parser->cfg->out_ifs) - yyerror("out of memory"); - else - cfg_parser->cfg->out_ifs[ - cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); - } -#line 3178 "util/configparser.c" - break; - - case 290: -#line 698 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3190 "util/configparser.c" - break; - - case 291: -#line 707 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 1, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3202 "util/configparser.c" - break; - - case 292: -#line 716 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); - if(!cfg_mark_ports((yyvsp[0].str), 0, - cfg_parser->cfg->outgoing_avail_ports, 65536)) - yyerror("port number or range (\"low-high\") expected"); - free((yyvsp[0].str)); - } -#line 3214 "util/configparser.c" - break; - - case 293: -#line 725 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3226 "util/configparser.c" - break; - - case 294: -#line 734 "./util/configparser.y" - { - OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3238 "util/configparser.c" - break; - - case 295: -#line 743 "./util/configparser.y" - { - OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3250 "util/configparser.c" - break; - - case 296: -#line 752 "./util/configparser.y" - { - OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3262 "util/configparser.c" - break; - - case 297: -#line 761 "./util/configparser.y" - { - OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3274 "util/configparser.c" - break; - - case 298: -#line 770 "./util/configparser.y" - { - OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3286 "util/configparser.c" - break; - - case 299: -#line 779 "./util/configparser.y" - { - OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3298 "util/configparser.c" - break; - - case 300: -#line 788 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3310 "util/configparser.c" - break; - - case 301: -#line 797 "./util/configparser.y" - { - OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3322 "util/configparser.c" - break; - - case 302: -#line 806 "./util/configparser.y" - { - OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3334 "util/configparser.c" - break; - - case 303: -#line 815 "./util/configparser.y" - { - OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3346 "util/configparser.c" - break; - - case 304: -#line 824 "./util/configparser.y" - { - OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 120000) - cfg_parser->cfg->tcp_idle_timeout = 120000; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_idle_timeout = 1; - else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3362 "util/configparser.c" - break; - - case 305: -#line 837 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3374 "util/configparser.c" - break; - - case 306: -#line 846 "./util/configparser.y" - { - OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 6553500) - cfg_parser->cfg->tcp_keepalive_timeout = 6553500; - else if (atoi((yyvsp[0].str)) < 1) - cfg_parser->cfg->tcp_keepalive_timeout = 0; - else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3390 "util/configparser.c" - break; - - case 307: -#line 859 "./util/configparser.y" - { - OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3402 "util/configparser.c" - break; - - case 308: -#line 868 "./util/configparser.y" - { - OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3414 "util/configparser.c" - break; - - case 309: -#line 877 "./util/configparser.y" - { - OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3426 "util/configparser.c" - break; - - case 310: -#line 886 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_key); - cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); - } -#line 3436 "util/configparser.c" - break; - - case 311: -#line 893 "./util/configparser.y" - { - OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ssl_service_pem); - cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); - } -#line 3446 "util/configparser.c" - break; - - case 312: -#line 900 "./util/configparser.y" - { - OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3458 "util/configparser.c" - break; - - case 313: -#line 909 "./util/configparser.y" - { - OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_cert_bundle); - cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); - } -#line 3468 "util/configparser.c" - break; - - case 314: -#line 916 "./util/configparser.y" - { - OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3480 "util/configparser.c" - break; - - case 315: -#line 925 "./util/configparser.y" - { - OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3491 "util/configparser.c" - break; - - case 316: -#line 933 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphers); - cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); - } -#line 3501 "util/configparser.c" - break; - - case 317: -#line 940 "./util/configparser.y" - { - OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->tls_ciphersuites); - cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); - } -#line 3511 "util/configparser.c" - break; - - case 318: -#line 947 "./util/configparser.y" - { - OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3522 "util/configparser.c" - break; - - case 319: -#line 955 "./util/configparser.y" - { - OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3534 "util/configparser.c" - break; - - case 320: -#line 964 "./util/configparser.y" - { - OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3546 "util/configparser.c" - break; - - case 321: -#line 973 "./util/configparser.y" - { - OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_syslog = (strcmp((yyvsp[0].str), "yes")==0); -#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) - if(strcmp((yyvsp[0].str), "yes") == 0) - yyerror("no syslog services are available. " - "(reconfigure and compile to add)"); -#endif - free((yyvsp[0].str)); - } -#line 3563 "util/configparser.c" - break; - - case 322: -#line 987 "./util/configparser.y" - { - OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3575 "util/configparser.c" - break; - - case 323: -#line 996 "./util/configparser.y" - { - OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3587 "util/configparser.c" - break; - - case 324: -#line 1005 "./util/configparser.y" - { - OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3599 "util/configparser.c" - break; - - case 325: -#line 1014 "./util/configparser.y" - { - OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3611 "util/configparser.c" - break; - - case 326: -#line 1023 "./util/configparser.y" - { - OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3623 "util/configparser.c" - break; - - case 327: -#line 1032 "./util/configparser.y" - { - OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3635 "util/configparser.c" - break; - - case 328: -#line 1041 "./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 3645 "util/configparser.c" - break; - - case 329: -#line 1048 "./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 3655 "util/configparser.c" - break; - - case 330: -#line 1055 "./util/configparser.y" - { - OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->directory); - cfg_parser->cfg->directory = (yyvsp[0].str); - /* change there right away for includes relative to this */ - if((yyvsp[0].str)[0]) { - char* d; -#ifdef UB_ON_WINDOWS - w_config_adjust_directory(cfg_parser->cfg); -#endif - d = cfg_parser->cfg->directory; - /* adjust directory if we have already chroot, - * like, we reread after sighup */ - if(cfg_parser->chroot && cfg_parser->chroot[0] && - strncmp(d, cfg_parser->chroot, strlen( - cfg_parser->chroot)) == 0) - d += strlen(cfg_parser->chroot); - if(d[0]) { - if(chdir(d)) - log_err("cannot chdir to directory: %s (%s)", - d, strerror(errno)); - } - } - } -#line 3684 "util/configparser.c" - break; - - case 331: -#line 1081 "./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 3695 "util/configparser.c" - break; - - case 332: -#line 1089 "./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 3705 "util/configparser.c" - break; - - case 333: -#line 1096 "./util/configparser.y" - { - OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3715 "util/configparser.c" - break; - - case 334: -#line 1103 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); - } -#line 3725 "util/configparser.c" - break; - - case 335: -#line 1110 "./util/configparser.y" - { - OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3735 "util/configparser.c" - break; - - case 336: -#line 1117 "./util/configparser.y" - { - OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - auto_trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3746 "util/configparser.c" - break; - - case 337: -#line 1125 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trust_anchor_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3757 "util/configparser.c" - break; - - case 338: -#line 1133 "./util/configparser.y" - { - OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg-> - trusted_keys_file_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3768 "util/configparser.c" - break; - - case 339: -#line 1141 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3778 "util/configparser.c" - break; - - case 340: -#line 1148 "./util/configparser.y" - { - OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->trust_anchor_signaling = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3792 "util/configparser.c" - break; - - case 341: -#line 1159 "./util/configparser.y" - { - OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->root_key_sentinel = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3806 "util/configparser.c" - break; - - case 342: -#line 1170 "./util/configparser.y" - { - OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 3816 "util/configparser.c" - break; - - case 343: -#line 1177 "./util/configparser.y" - { - OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3828 "util/configparser.c" - break; - - case 344: -#line 1186 "./util/configparser.y" - { - OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3840 "util/configparser.c" - break; - - case 345: -#line 1195 "./util/configparser.y" - { - OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3852 "util/configparser.c" - break; - - case 346: -#line 1204 "./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 3862 "util/configparser.c" - break; - - case 347: -#line 1211 "./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 3872 "util/configparser.c" - break; - - case 348: -#line 1218 "./util/configparser.y" - { - OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 3883 "util/configparser.c" - break; - - case 349: -#line 1226 "./util/configparser.y" - { - OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) - yyerror("buffer size expected"); - free((yyvsp[0].str)); - } -#line 3894 "util/configparser.c" - break; - - case 350: -#line 1234 "./util/configparser.y" - { - OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->so_reuseport = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3907 "util/configparser.c" - break; - - case 351: -#line 1244 "./util/configparser.y" - { - OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_transparent = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3920 "util/configparser.c" - break; - - case 352: -#line 1254 "./util/configparser.y" - { - OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ip_freebind = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 3933 "util/configparser.c" - break; - - case 353: -#line 1264 "./util/configparser.y" - { - OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) > 63) - yyerror("value too large (max 63)"); - else if (atoi((yyvsp[0].str)) < 0) - yyerror("value too small (min 0)"); - else - cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3950 "util/configparser.c" - break; - - case 354: -#line 1278 "./util/configparser.y" - { - OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 3961 "util/configparser.c" - break; - - case 355: -#line 1286 "./util/configparser.y" - { - OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 12) - yyerror("edns buffer size too small"); - else if (atoi((yyvsp[0].str)) > 65535) - cfg_parser->cfg->edns_buffer_size = 65535; - else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3977 "util/configparser.c" - break; - - case 356: -#line 1299 "./util/configparser.y" - { - OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else if (atoi((yyvsp[0].str)) < 4096) - yyerror("message buffer size too small (use 4096)"); - else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 3991 "util/configparser.c" - break; - - case 357: -#line 1310 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4002 "util/configparser.c" - break; - - case 358: -#line 1318 "./util/configparser.y" - { - OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->msg_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4018 "util/configparser.c" - break; - - case 359: -#line 1331 "./util/configparser.y" - { - OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4030 "util/configparser.c" - break; - - case 360: -#line 1340 "./util/configparser.y" - { - OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4042 "util/configparser.c" - break; - - case 361: -#line 1349 "./util/configparser.y" - { - OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4054 "util/configparser.c" - break; - - case 362: -#line 1358 "./util/configparser.y" - { - OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->unblock_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4067 "util/configparser.c" - break; - - case 363: -#line 1368 "./util/configparser.y" - { - OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->insecure_lan_zones = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4080 "util/configparser.c" - break; - - case 364: -#line 1378 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4091 "util/configparser.c" - break; - - case 365: -#line 1386 "./util/configparser.y" - { - OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->rrset_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4107 "util/configparser.c" - break; - - case 366: -#line 1399 "./util/configparser.y" - { - OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4119 "util/configparser.c" - break; - - case 367: -#line 1408 "./util/configparser.y" - { - OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " - "removed, use infra-host-ttl)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4130 "util/configparser.c" - break; - - case 368: -#line 1416 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4142 "util/configparser.c" - break; - - case 369: -#line 1425 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); - verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " - "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4153 "util/configparser.c" - break; - - case 370: -#line 1433 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->infra_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4169 "util/configparser.c" - break; - - case 371: -#line 1446 "./util/configparser.y" - { - OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4181 "util/configparser.c" - break; - - case 372: -#line 1455 "./util/configparser.y" - { - OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->target_fetch_policy); - cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); - } -#line 4191 "util/configparser.c" - break; - - case 373: -#line 1462 "./util/configparser.y" - { - OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_short_bufsize = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4204 "util/configparser.c" - break; - - case 374: -#line 1472 "./util/configparser.y" - { - OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_large_queries = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4217 "util/configparser.c" - break; - - case 375: -#line 1482 "./util/configparser.y" - { - OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_glue = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4230 "util/configparser.c" - break; - - case 376: -#line 1492 "./util/configparser.y" - { - OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_dnssec_stripped = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4243 "util/configparser.c" - break; - - case 377: -#line 1502 "./util/configparser.y" - { - OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_below_nxdomain = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4256 "util/configparser.c" - break; - - case 378: -#line 1512 "./util/configparser.y" - { - OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_referral_path = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4269 "util/configparser.c" - break; - - case 379: -#line 1522 "./util/configparser.y" - { - OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->harden_algo_downgrade = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4282 "util/configparser.c" - break; - - case 380: -#line 1532 "./util/configparser.y" - { - OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->use_caps_bits_for_id = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4295 "util/configparser.c" - break; - - case 381: -#line 1542 "./util/configparser.y" - { - OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4305 "util/configparser.c" - break; - - case 382: -#line 1549 "./util/configparser.y" - { - OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4315 "util/configparser.c" - break; - - case 383: -#line 1556 "./util/configparser.y" - { - OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4325 "util/configparser.c" - break; - - case 384: -#line 1563 "./util/configparser.y" - { - OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4337 "util/configparser.c" - break; - - case 385: -#line 1572 "./util/configparser.y" - { - OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4349 "util/configparser.c" - break; - - case 386: -#line 1581 "./util/configparser.y" - { - OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4361 "util/configparser.c" - break; - - case 387: -#line 1590 "./util/configparser.y" - { - OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4373 "util/configparser.c" - break; - - case 388: -#line 1599 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 4383 "util/configparser.c" - break; - - case 389: -#line 1606 "./util/configparser.y" - { - OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->donotquery_localhost = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4396 "util/configparser.c" - break; - - case 390: -#line 1616 "./util/configparser.y" - { - OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && - strcmp((yyvsp[0].str), "deny_non_local")!=0 && - strcmp((yyvsp[0].str), "refuse_non_local")!=0 && - strcmp((yyvsp[0].str), "allow_setrd")!=0 && - strcmp((yyvsp[0].str), "allow")!=0 && - strcmp((yyvsp[0].str), "allow_snoop")!=0) { - 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"); - } - } -#line 4419 "util/configparser.c" - break; - - case 391: -#line 1636 "./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 4429 "util/configparser.c" - break; - - case 392: -#line 1643 "./util/configparser.y" - { - OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_date_override = 0; - } else if(strlen((yyvsp[0].str)) == 14) { - cfg_parser->cfg->val_date_override = - cfg_convert_timeval((yyvsp[0].str)); - if(!cfg_parser->cfg->val_date_override) - yyerror("bad date/time specification"); - } else { - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - cfg_parser->cfg->val_date_override = atoi((yyvsp[0].str)); - } - free((yyvsp[0].str)); - } -#line 4450 "util/configparser.c" - break; - - case 393: -#line 1661 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_min = 0; - } else { - cfg_parser->cfg->val_sig_skew_min = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_min) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4466 "util/configparser.c" - break; - - case 394: -#line 1674 "./util/configparser.y" - { - OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); - if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { - cfg_parser->cfg->val_sig_skew_max = 0; - } else { - cfg_parser->cfg->val_sig_skew_max = atoi((yyvsp[0].str)); - if(!cfg_parser->cfg->val_sig_skew_max) - yyerror("number expected"); - } - free((yyvsp[0].str)); - } -#line 4482 "util/configparser.c" - break; - - case 395: -#line 1687 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4494 "util/configparser.c" - break; - - case 396: -#line 1696 "./util/configparser.y" - { - OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4506 "util/configparser.c" - break; - - case 397: -#line 1705 "./util/configparser.y" - { - OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4518 "util/configparser.c" - break; - - case 398: -#line 1714 "./util/configparser.y" - { - OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4530 "util/configparser.c" - break; - - case 399: -#line 1723 "./util/configparser.y" - { - OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_clean_additional = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4543 "util/configparser.c" - break; - - case 400: -#line 1733 "./util/configparser.y" - { - OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->val_permissive_mode = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4556 "util/configparser.c" - break; - - case 401: -#line 1743 "./util/configparser.y" - { - OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else - cfg_parser->cfg->aggressive_nsec = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4570 "util/configparser.c" - break; - - case 402: -#line 1754 "./util/configparser.y" - { - OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4582 "util/configparser.c" - break; - - case 403: -#line 1763 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4594 "util/configparser.c" - break; - - case 404: -#line 1772 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4606 "util/configparser.c" - break; - - case 405: -#line 1781 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4618 "util/configparser.c" - break; - - case 406: -#line 1790 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4630 "util/configparser.c" - break; - - case 407: -#line 1799 "./util/configparser.y" - { - OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4642 "util/configparser.c" - break; - - case 408: -#line 1808 "./util/configparser.y" - { - OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_dsa = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_dsa) - log_warn("test option fake_dsa is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 4658 "util/configparser.c" - break; - - case 409: -#line 1821 "./util/configparser.y" - { - OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); -#if defined(HAVE_SSL) || defined(HAVE_NETTLE) - else fake_sha1 = (strcmp((yyvsp[0].str), "yes")==0); - if(fake_sha1) - log_warn("test option fake_sha1 is enabled"); -#endif - free((yyvsp[0].str)); - } -#line 4674 "util/configparser.c" - break; - - case 410: -#line 1834 "./util/configparser.y" - { - OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4686 "util/configparser.c" - break; - - case 411: -#line 1843 "./util/configparser.y" - { - OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->val_nsec3_key_iterations); - cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); - } -#line 4696 "util/configparser.c" - break; - - case 412: -#line 1850 "./util/configparser.y" - { - OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4708 "util/configparser.c" - break; - - case 413: -#line 1859 "./util/configparser.y" - { - OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4720 "util/configparser.c" - break; - - case 414: -#line 1868 "./util/configparser.y" - { - OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4732 "util/configparser.c" - break; - - case 415: -#line 1877 "./util/configparser.y" - { - OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->permit_small_holddown = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4745 "util/configparser.c" - break; - - case 416: -#line 1886 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4756 "util/configparser.c" - break; - - case 417: -#line 1894 "./util/configparser.y" - { - OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->key_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 4772 "util/configparser.c" - break; - - case 418: -#line 1907 "./util/configparser.y" - { - OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 4783 "util/configparser.c" - break; - - case 419: -#line 1915 "./util/configparser.y" - { - OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 - && strcmp((yyvsp[0].str), "inform_redirect") != 0 - && strcmp((yyvsp[0].str), "ipset") != 0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 4827 "util/configparser.c" - break; - - case 420: -#line 1956 "./util/configparser.y" - { - OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) - fatal_exit("out of memory adding local-data"); - } -#line 4837 "util/configparser.c" - break; - - case 421: -#line 1963 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 4855 "util/configparser.c" - break; - - case 422: -#line 1978 "./util/configparser.y" - { - OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->minimal_responses = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4868 "util/configparser.c" - break; - - case 423: -#line 1988 "./util/configparser.y" - { - OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->rrset_roundrobin = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4881 "util/configparser.c" - break; - - case 424: -#line 1998 "./util/configparser.y" - { - OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4891 "util/configparser.c" - break; - - case 425: -#line 2005 "./util/configparser.y" - { - OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 4901 "util/configparser.c" - break; - - case 426: -#line 2012 "./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 4911 "util/configparser.c" - break; - - case 427: -#line 2019 "./util/configparser.y" - { - OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 4923 "util/configparser.c" - break; - - case 428: -#line 2028 "./util/configparser.y" - { - OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, - (yyvsp[0].str))) - fatal_exit("out of memory adding dns64-ignore-aaaa"); - } -#line 4934 "util/configparser.c" - break; - - case 429: -#line 2036 "./util/configparser.y" - { - char* p, *s = (yyvsp[0].str); - OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); - while((p=strsep(&s, " \t\n")) != NULL) { - if(*p) { - if(!config_add_tag(cfg_parser->cfg, p)) - yyerror("could not define-tag, " - "out of memory"); - } - } - free((yyvsp[0].str)); - } -#line 4951 "util/configparser.c" - break; - - case 430: -#line 2050 "./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_local_zone_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->local_zone_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 4975 "util/configparser.c" - break; - - case 431: -#line 2071 "./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_access_control_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->acl_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 4999 "util/configparser.c" - break; - - case 432: -#line 2092 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_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 5014 "util/configparser.c" - break; - - case 433: -#line 2104 "./util/configparser.y" - { - OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->acl_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 5029 "util/configparser.c" - break; - - case 434: -#line 2116 "./util/configparser.y" - { - OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, - (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 5044 "util/configparser.c" - break; - - case 435: -#line 2128 "./util/configparser.y" - { - OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, - (yyvsp[-1].str), (yyvsp[0].str))) { - yyerror("out of memory"); - } - } -#line 5056 "util/configparser.c" - break; - - case 436: -#line 2137 "./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(response_ip_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->respip_tags, - (yyvsp[-1].str), bitlist, len)) { - yyerror("out of memory"); - free((yyvsp[-1].str)); - } - } - } -#line 5080 "util/configparser.c" - break; - - case 437: -#line 2158 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5092 "util/configparser.c" - break; - - case 438: -#line 2168 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5104 "util/configparser.c" - break; - - case 439: -#line 2177 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5115 "util/configparser.c" - break; - - case 440: -#line 2185 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 5126 "util/configparser.c" - break; - - case 441: -#line 2193 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ip_ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5142 "util/configparser.c" - break; - - case 442: -#line 2206 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->ratelimit_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 5158 "util/configparser.c" - break; - - case 443: -#line 2219 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_for_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-for-domain"); - } - } -#line 5176 "util/configparser.c" - break; - - case 444: -#line 2234 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { - yyerror("number expected"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else { - if(!cfg_str2list_insert(&cfg_parser->cfg-> - ratelimit_below_domain, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding " - "ratelimit-below-domain"); - } - } -#line 5194 "util/configparser.c" - break; - - case 445: -#line 2249 "./util/configparser.y" - { - OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5206 "util/configparser.c" - break; - - case 446: -#line 2258 "./util/configparser.y" - { - OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5218 "util/configparser.c" - break; - - case 447: -#line 2267 "./util/configparser.y" - { - OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); - free((yyvsp[0].str)); - } -#line 5227 "util/configparser.c" - break; - - case 448: -#line 2273 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) <= 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5239 "util/configparser.c" - break; - - case 449: -#line 2282 "./util/configparser.y" - { - OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5251 "util/configparser.c" - break; - - case 450: -#line 2291 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5264 "util/configparser.c" - break; - - case 451: -#line 2301 "./util/configparser.y" - { - OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->qname_minimisation_strict = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5277 "util/configparser.c" - break; - - case 452: -#line 2311 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_enabled = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5293 "util/configparser.c" - break; - - case 453: -#line 2324 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp((yyvsp[0].str), "yes")==0); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 5309 "util/configparser.c" - break; - - case 454: -#line 2337 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->ipsecmod_hook); - cfg_parser->cfg->ipsecmod_hook = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5324 "util/configparser.c" - break; - - case 455: -#line 2349 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) - yyerror("number expected"); - else cfg_parser->cfg->ipsecmod_max_ttl = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5341 "util/configparser.c" - break; - - case 456: -#line 2363 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) - yyerror("out of memory"); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5356 "util/configparser.c" - break; - - case 457: -#line 2375 "./util/configparser.y" - { - #ifdef USE_IPSECMOD - OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->ipsecmod_strict = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without IPsec module, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 5373 "util/configparser.c" - break; - - case 458: -#line 2389 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->stubs->name) - yyerror("stub name override, there must be one name " - "for one stub-zone"); - free(cfg_parser->cfg->stubs->name); - cfg_parser->cfg->stubs->name = (yyvsp[0].str); - } -#line 5386 "util/configparser.c" - break; - - case 459: -#line 2399 "./util/configparser.y" - { - OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5396 "util/configparser.c" - break; - - case 460: -#line 2406 "./util/configparser.y" - { - OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5406 "util/configparser.c" - break; - - case 461: -#line 2413 "./util/configparser.y" - { - OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5418 "util/configparser.c" - break; - - case 462: -#line 2422 "./util/configparser.y" - { - OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5430 "util/configparser.c" - break; - - case 463: -#line 2431 "./util/configparser.y" - { - OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5443 "util/configparser.c" - break; - - case 464: -#line 2441 "./util/configparser.y" - { - OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->stubs->isprime = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5456 "util/configparser.c" - break; - - case 465: -#line 2451 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->forwards->name) - yyerror("forward name override, there must be one " - "name for one forward-zone"); - free(cfg_parser->cfg->forwards->name); - cfg_parser->cfg->forwards->name = (yyvsp[0].str); - } -#line 5469 "util/configparser.c" - break; - - case 466: -#line 2461 "./util/configparser.y" - { - OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5479 "util/configparser.c" - break; - - case 467: -#line 2468 "./util/configparser.y" - { - OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5489 "util/configparser.c" - break; - - case 468: -#line 2475 "./util/configparser.y" - { - OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5501 "util/configparser.c" - break; - - case 469: -#line 2484 "./util/configparser.y" - { - OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5513 "util/configparser.c" - break; - - case 470: -#line 2493 "./util/configparser.y" - { - OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->forwards->ssl_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5526 "util/configparser.c" - break; - - case 471: -#line 2503 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->auths->name) - yyerror("auth name override, there must be one name " - "for one auth-zone"); - free(cfg_parser->cfg->auths->name); - cfg_parser->cfg->auths->name = (yyvsp[0].str); - } -#line 5539 "util/configparser.c" - break; - - case 472: -#line 2513 "./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 5549 "util/configparser.c" - break; - - case 473: -#line 2520 "./util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5559 "util/configparser.c" - break; - - case 474: -#line 2527 "./util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5569 "util/configparser.c" - break; - - case 475: -#line 2534 "./util/configparser.y" - { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5580 "util/configparser.c" - break; - - case 476: -#line 2542 "./util/configparser.y" - { - OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_downstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5593 "util/configparser.c" - break; - - case 477: -#line 2552 "./util/configparser.y" - { - OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->for_upstream = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5606 "util/configparser.c" - break; - - case 478: -#line 2562 "./util/configparser.y" - { - OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->auths->fallback_enabled = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5619 "util/configparser.c" - break; - - case 479: -#line 2572 "./util/configparser.y" - { - OUTYY(("P(name:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->views->name) - yyerror("view name override, there must be one " - "name for one view"); - free(cfg_parser->cfg->views->name); - cfg_parser->cfg->views->name = (yyvsp[0].str); - } -#line 5632 "util/configparser.c" - break; - - case 480: -#line 2582 "./util/configparser.y" - { - OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && - strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && - strcmp((yyvsp[0].str), "transparent")!=0 && strcmp((yyvsp[0].str), "nodefault")!=0 - && strcmp((yyvsp[0].str), "typetransparent")!=0 - && strcmp((yyvsp[0].str), "always_transparent")!=0 - && strcmp((yyvsp[0].str), "always_refuse")!=0 - && strcmp((yyvsp[0].str), "always_nxdomain")!=0 - && strcmp((yyvsp[0].str), "noview")!=0 - && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0) { - yyerror("local-zone type: expected static, deny, " - "refuse, redirect, transparent, " - "typetransparent, inform, inform_deny, " - "always_transparent, always_refuse, " - "always_nxdomain, noview or nodefault"); - free((yyvsp[-1].str)); - free((yyvsp[0].str)); - } else if(strcmp((yyvsp[0].str), "nodefault")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_nodefault, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#ifdef USE_IPSET - } else if(strcmp((yyvsp[0].str), "ipset")==0) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_zones_ipset, (yyvsp[-1].str))) - fatal_exit("out of memory adding local-zone"); - free((yyvsp[0].str)); -#endif - } else { - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->local_zones, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding local-zone"); - } - } -#line 5674 "util/configparser.c" - break; - - case 481: -#line 2621 "./util/configparser.y" - { - OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert( - &cfg_parser->cfg->views->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding per-view " - "response-ip action"); - } -#line 5687 "util/configparser.c" - break; - - case 482: -#line 2631 "./util/configparser.y" - { - OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); - 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 5698 "util/configparser.c" - break; - - case 483: -#line 2639 "./util/configparser.y" - { - OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { - fatal_exit("out of memory adding local-data"); - } - } -#line 5709 "util/configparser.c" - break; - - case 484: -#line 2647 "./util/configparser.y" - { - char* ptr; - OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); - ptr = cfg_ptr_reverse((yyvsp[0].str)); - free((yyvsp[0].str)); - if(ptr) { - if(!cfg_strlist_insert(&cfg_parser->cfg->views-> - local_data, ptr)) - fatal_exit("out of memory adding local-data"); - } else { - yyerror("local-data-ptr could not be reversed"); - } - } -#line 5727 "util/configparser.c" - break; - - case 485: -#line 2662 "./util/configparser.y" - { - OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5739 "util/configparser.c" - break; - - case 486: -#line 2671 "./util/configparser.y" - { - OUTYY(("\nP(remote-control:)\n")); - } -#line 5747 "util/configparser.c" - break; - - case 497: -#line 2682 "./util/configparser.y" - { - OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->remote_control_enable = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5760 "util/configparser.c" - break; - - case 498: -#line 2692 "./util/configparser.y" - { - OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("control port number expected"); - else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 5772 "util/configparser.c" - break; - - case 499: -#line 2701 "./util/configparser.y" - { - OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5782 "util/configparser.c" - break; - - case 500: -#line 2708 "./util/configparser.y" - { - OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); - cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5792 "util/configparser.c" - break; - - case 501: -#line 2715 "./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 5802 "util/configparser.c" - break; - - case 502: -#line 2722 "./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 5812 "util/configparser.c" - break; - - case 503: -#line 2729 "./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 5822 "util/configparser.c" - break; - - case 504: -#line 2736 "./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 5832 "util/configparser.c" - break; - - case 505: -#line 2743 "./util/configparser.y" - { - OUTYY(("\nP(dnstap:)\n")); - } -#line 5840 "util/configparser.c" - break; - - case 526: -#line 2763 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5852 "util/configparser.c" - break; - - case 527: -#line 2772 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_socket_path); - cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); - } -#line 5862 "util/configparser.c" - break; - - case 528: -#line 2779 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_ip); - cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); - } -#line 5872 "util/configparser.c" - break; - - case 529: -#line 2786 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5884 "util/configparser.c" - break; - - case 530: -#line 2795 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_server_name); - cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); - } -#line 5894 "util/configparser.c" - break; - - case 531: -#line 2802 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_cert_bundle); - cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); - } -#line 5904 "util/configparser.c" - break; - - case 532: -#line 2809 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_key_file); - cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); - } -#line 5914 "util/configparser.c" - break; - - case 533: -#line 2816 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_tls_client_cert_file); - cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); - } -#line 5924 "util/configparser.c" - break; - - case 534: -#line 2823 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5936 "util/configparser.c" - break; - - case 535: -#line 2832 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5948 "util/configparser.c" - break; - - case 536: -#line 2841 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_identity); - cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); - } -#line 5958 "util/configparser.c" - break; - - case 537: -#line 2848 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnstap_version); - cfg_parser->cfg->dnstap_version = (yyvsp[0].str); - } -#line 5968 "util/configparser.c" - break; - - case 538: -#line 2855 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5981 "util/configparser.c" - break; - - case 539: -#line 2865 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_resolver_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 5994 "util/configparser.c" - break; - - case 540: -#line 2875 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6007 "util/configparser.c" - break; - - case 541: -#line 2885 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_client_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6020 "util/configparser.c" - break; - - case 542: -#line 2895 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_query_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6033 "util/configparser.c" - break; - - case 543: -#line 2905 "./util/configparser.y" - { - OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnstap_log_forwarder_response_messages = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6046 "util/configparser.c" - break; - - case 544: -#line 2915 "./util/configparser.y" - { - OUTYY(("\nP(python:)\n")); - } -#line 6054 "util/configparser.c" - break; - - case 548: -#line 2924 "./util/configparser.y" - { - OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 6064 "util/configparser.c" - break; - - case 549: -#line 2930 "./util/configparser.y" - { - OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); - if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->disable_dnssec_lame_check = - (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6077 "util/configparser.c" - break; - - case 550: -#line 2940 "./util/configparser.y" - { - OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->log_identity); - cfg_parser->cfg->log_identity = (yyvsp[0].str); - } -#line 6087 "util/configparser.c" - break; - - case 551: -#line 2947 "./util/configparser.y" - { - OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - validate_respip_action((yyvsp[0].str)); - if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, - (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding response-ip"); - } -#line 6099 "util/configparser.c" - break; - - case 552: -#line 2956 "./util/configparser.y" - { - OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); - 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 6110 "util/configparser.c" - break; - - case 553: -#line 2964 "./util/configparser.y" - { - OUTYY(("\nP(dnscrypt:)\n")); - } -#line 6118 "util/configparser.c" - break; - - case 566: -#line 2980 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); - if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) - yyerror("expected yes or no."); - else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); - free((yyvsp[0].str)); - } -#line 6130 "util/configparser.c" - break; - - case 567: -#line 2990 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); - free((yyvsp[0].str)); - } -#line 6142 "util/configparser.c" - break; - - case 568: -#line 2999 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dnscrypt_provider); - cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); - } -#line 6152 "util/configparser.c" - break; - - case 569: -#line 3006 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert"); - } -#line 6164 "util/configparser.c" - break; - - case 570: -#line 3015 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); - } -#line 6174 "util/configparser.c" - break; - - case 571: -#line 3022 "./util/configparser.y" - { - OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); - if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) - fatal_exit("out of memory adding dnscrypt-secret-key"); - } -#line 6186 "util/configparser.c" - break; - - case 572: -#line 3031 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 6197 "util/configparser.c" - break; - - case 573: -#line 3039 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 6213 "util/configparser.c" - break; - - case 574: -#line 3052 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); - if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) - yyerror("memory size expected"); - free((yyvsp[0].str)); - } -#line 6224 "util/configparser.c" - break; - - case 575: -#line 3060 "./util/configparser.y" - { - OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("number expected"); - else { - cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi((yyvsp[0].str)); - if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) - yyerror("must be a power of 2"); - } - free((yyvsp[0].str)); - } -#line 6240 "util/configparser.c" - break; - - case 576: -#line 3073 "./util/configparser.y" - { - OUTYY(("\nP(cachedb:)\n")); - } -#line 6248 "util/configparser.c" - break; - - case 584: -#line 3083 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_backend); - cfg_parser->cfg->cachedb_backend = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6263 "util/configparser.c" - break; - - case 585: -#line 3095 "./util/configparser.y" - { - #ifdef USE_CACHEDB - OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->cachedb_secret); - cfg_parser->cfg->cachedb_secret = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6278 "util/configparser.c" - break; - - case 586: -#line 3107 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->redis_server_host); - cfg_parser->cfg->redis_server_host = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6293 "util/configparser.c" - break; - - case 587: -#line 3119 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - int port; - OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); - port = atoi((yyvsp[0].str)); - if(port == 0 || port < 0 || port > 65535) - yyerror("valid redis server port number expected"); - else cfg_parser->cfg->redis_server_port = port; - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 6311 "util/configparser.c" - break; - - case 588: -#line 3134 "./util/configparser.y" - { - #if defined(USE_CACHEDB) && defined(USE_REDIS) - OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("redis timeout value expected"); - else cfg_parser->cfg->redis_timeout = atoi((yyvsp[0].str)); - #else - OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); - #endif - free((yyvsp[0].str)); - } -#line 6327 "util/configparser.c" - break; - - case 589: -#line 3147 "./util/configparser.y" - { - OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - if (atoi((yyvsp[0].str)) < 0) - yyerror("positive number expected"); - else { - if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, (yyvsp[-1].str), (yyvsp[0].str))) - fatal_exit("out of memory adding tcp connection limit"); - } - } -#line 6341 "util/configparser.c" - break; - - case 590: -#line 3158 "./util/configparser.y" - { - OUTYY(("\nP(ipset:)\n")); - } -#line 6349 "util/configparser.c" - break; - - case 595: -#line 3167 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v4) - yyerror("ipset name v4 override, there must be one " - "name for ip v4"); - free(cfg_parser->cfg->ipset_name_v4); - cfg_parser->cfg->ipset_name_v4 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6367 "util/configparser.c" - break; - - case 596: -#line 3182 "./util/configparser.y" - { - #ifdef USE_IPSET - OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); - if(cfg_parser->cfg->ipset_name_v6) - yyerror("ipset name v6 override, there must be one " - "name for ip v6"); - free(cfg_parser->cfg->ipset_name_v6); - cfg_parser->cfg->ipset_name_v6 = (yyvsp[0].str); - #else - OUTYY(("P(Compiled without ipset, ignoring)\n")); - free((yyvsp[0].str)); - #endif - } -#line 6385 "util/configparser.c" - break; - - -#line 6389 "util/configparser.c" - - default: break; - } - /* User semantic actions sometimes alter yychar, and that requires - that yytoken be updated with the new translation. We take the - approach of translating immediately before every use of yytoken. - One alternative is translating here after every semantic action, - but that translation would be missed if the semantic action invokes - YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or - if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an - incorrect destructor might then be invoked immediately. In the - case of YYERROR or YYBACKUP, subsequent parser actions might lead - to an incorrect destructor call or verbose syntax error message - before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); - - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - - *++yyvsp = yyval; - - /* Now 'shift' the result of the reduction. Determine what state - that goes to, based on the state we popped back to and the rule - number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } - - goto yynewstate; - - -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ -yyerrlab: - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - - /* If not already recovering from an error, report this error. */ - if (!yyerrstatus) - { - ++yynerrs; -#if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); +#ifdef YYMAXDEPTH +#define YYSTACKSIZE YYMAXDEPTH #else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR +#define YYSTACKSIZE 10000 +#define YYMAXDEPTH 10000 #endif - } - - - - if (yyerrstatus == 3) - { - /* If just tried and failed to reuse lookahead token after an - error, discard it. */ - - if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } - else - { - yydestruct ("Error: discarding", - yytoken, &yylval); - yychar = YYEMPTY; - } - } - - /* Else will try to reuse lookahead token after shifting the error - token. */ - goto yyerrlab1; - - -/*---------------------------------------------------. -| yyerrorlab -- error raised explicitly by YYERROR. | -`---------------------------------------------------*/ -yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; - - /* Do not reclaim the symbols of the rule whose action triggered - this YYERROR. */ - YYPOPSTACK (yylen); - yylen = 0; - YY_STACK_PRINT (yyss, yyssp); - yystate = *yyssp; - goto yyerrlab1; - - -/*-------------------------------------------------------------. -| yyerrlab1 -- common code for both syntax error and YYERROR. | -`-------------------------------------------------------------*/ -yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ - - for (;;) - { - yyn = yypact[yystate]; - if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } - - /* Pop the current state because it cannot handle the error token. */ - if (yyssp == yyss) - YYABORT; - - - yydestruct ("Error: popping", - yystos[yystate], yyvsp); - YYPOPSTACK (1); - yystate = *yyssp; - YY_STACK_PRINT (yyss, yyssp); - } - - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - *++yyvsp = yylval; - YY_IGNORE_MAYBE_UNINITIALIZED_END - - - /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); - - yystate = yyn; - goto yynewstate; - - -/*-------------------------------------. -| yyacceptlab -- YYACCEPT comes here. | -`-------------------------------------*/ -yyacceptlab: - yyresult = 0; - goto yyreturn; - - -/*-----------------------------------. -| yyabortlab -- YYABORT comes here. | -`-----------------------------------*/ -yyabortlab: - yyresult = 1; - goto yyreturn; - - -#if !defined yyoverflow || YYERROR_VERBOSE -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ -yyexhaustedlab: - yyerror (YY_("memory exhausted")); - yyresult = 2; - /* Fall through. */ #endif +#define YYINITSTACKSIZE 200 -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ -yyreturn: - if (yychar != YYEMPTY) - { - /* Make sure we have latest lookahead translation. See comments at - user semantic actions for why this is necessary. */ - yytoken = YYTRANSLATE (yychar); - yydestruct ("Cleanup: discarding lookahead", - yytoken, &yylval); - } - /* Do not reclaim the symbols of the rule whose action triggered - this YYABORT or YYACCEPT. */ - YYPOPSTACK (yylen); - YY_STACK_PRINT (yyss, yyssp); - while (yyssp != yyss) - { - yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); - YYPOPSTACK (1); - } -#ifndef yyoverflow - if (yyss != yyssa) - YYSTACK_FREE (yyss); -#endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif - return yyresult; -} -#line 3196 "./util/configparser.y" - +typedef struct { + unsigned stacksize; + YYINT *s_base; + YYINT *s_mark; + YYINT *s_last; + YYSTYPE *l_base; + YYSTYPE *l_mark; +} YYSTACKDATA; +/* variables for the parser stack */ +static YYSTACKDATA yystack; +#line 3237 "./util/configparser.y" /* parse helper routines could be here */ static void @@ -6639,3 +1809,3430 @@ validate_respip_action(const char* action) } +#line 1813 "util/configparser.c" + +#if YYDEBUG +#include /* needed for printf */ +#endif + +#include /* needed for malloc, etc */ +#include /* needed for memset */ + +/* allocate initial stack or double stack size, up to YYMAXDEPTH */ +static int yygrowstack(YYSTACKDATA *data) +{ + int i; + unsigned newsize; + YYINT *newss; + YYSTYPE *newvs; + + if ((newsize = data->stacksize) == 0) + newsize = YYINITSTACKSIZE; + else if (newsize >= YYMAXDEPTH) + return YYENOMEM; + else if ((newsize *= 2) > YYMAXDEPTH) + newsize = YYMAXDEPTH; + + i = (int) (data->s_mark - data->s_base); + newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss)); + if (newss == 0) + return YYENOMEM; + + data->s_base = newss; + data->s_mark = newss + i; + + newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs)); + if (newvs == 0) + return YYENOMEM; + + data->l_base = newvs; + data->l_mark = newvs + i; + + data->stacksize = newsize; + data->s_last = data->s_base + newsize - 1; + return 0; +} + +#if YYPURE || defined(YY_NO_LEAKS) +static void yyfreestack(YYSTACKDATA *data) +{ + free(data->s_base); + free(data->l_base); + memset(data, 0, sizeof(*data)); +} +#else +#define yyfreestack(data) /* nothing */ +#endif + +#define YYABORT goto yyabort +#define YYREJECT goto yyabort +#define YYACCEPT goto yyaccept +#define YYERROR goto yyerrlab + +int +YYPARSE_DECL() +{ + int yym, yyn, yystate; +#if YYDEBUG + const char *yys; + + if ((yys = getenv("YYDEBUG")) != 0) + { + yyn = *yys; + if (yyn >= '0' && yyn <= '9') + yydebug = yyn - '0'; + } +#endif + + yynerrs = 0; + yyerrflag = 0; + yychar = YYEMPTY; + yystate = 0; + +#if YYPURE + memset(&yystack, 0, sizeof(yystack)); +#endif + + if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow; + yystack.s_mark = yystack.s_base; + yystack.l_mark = yystack.l_base; + yystate = 0; + *yystack.s_mark = 0; + +yyloop: + if ((yyn = yydefred[yystate]) != 0) goto yyreduce; + if (yychar < 0) + { + if ((yychar = YYLEX) < 0) yychar = YYEOF; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + } + if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, shifting to state %d\n", + YYPREFIX, yystate, yytable[yyn]); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + yystate = yytable[yyn]; + *++yystack.s_mark = yytable[yyn]; + *++yystack.l_mark = yylval; + yychar = YYEMPTY; + if (yyerrflag > 0) --yyerrflag; + goto yyloop; + } + if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yychar) + { + yyn = yytable[yyn]; + goto yyreduce; + } + if (yyerrflag) goto yyinrecovery; + + YYERROR_CALL("syntax error"); + + goto yyerrlab; + +yyerrlab: + ++yynerrs; + +yyinrecovery: + if (yyerrflag < 3) + { + yyerrflag = 3; + for (;;) + { + if ((yyn = yysindex[*yystack.s_mark]) && (yyn += YYERRCODE) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, error recovery shifting\ + to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + yystate = yytable[yyn]; + *++yystack.s_mark = yytable[yyn]; + *++yystack.l_mark = yylval; + goto yyloop; + } + else + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: error recovery discarding state %d\n", + YYPREFIX, *yystack.s_mark); +#endif + if (yystack.s_mark <= yystack.s_base) goto yyabort; + --yystack.s_mark; + --yystack.l_mark; + } + } + } + else + { + if (yychar == YYEOF) goto yyabort; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, error recovery discards token %d (%s)\n", + YYPREFIX, yystate, yychar, yys); + } +#endif + yychar = YYEMPTY; + goto yyloop; + } + +yyreduce: +#if YYDEBUG + if (yydebug) + printf("%sdebug: state %d, reducing by rule %d (%s)\n", + YYPREFIX, yystate, yyn, yyrule[yyn]); +#endif + yym = yylen[yyn]; + if (yym) + yyval = yystack.l_mark[1-yym]; + else + memset(&yyval, 0, sizeof yyval); + switch (yyn) + { +case 15: +#line 191 "./util/configparser.y" + { + OUTYY(("\nP(server:)\n")); + } +break; +case 211: +#line 284 "./util/configparser.y" + { + struct config_stub* s; + OUTYY(("\nP(stub_zone:)\n")); + s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); + if(s) { + s->next = cfg_parser->cfg->stubs; + cfg_parser->cfg->stubs = s; + } else + yyerror("out of memory"); + } +break; +case 221: +#line 301 "./util/configparser.y" + { + struct config_stub* s; + OUTYY(("\nP(forward_zone:)\n")); + s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); + if(s) { + s->next = cfg_parser->cfg->forwards; + cfg_parser->cfg->forwards = s; + } else + yyerror("out of memory"); + } +break; +case 230: +#line 318 "./util/configparser.y" + { + struct config_view* s; + OUTYY(("\nP(view:)\n")); + s = (struct config_view*)calloc(1, sizeof(struct config_view)); + if(s) { + s->next = cfg_parser->cfg->views; + if(s->next && !s->next->name) + yyerror("view without name"); + cfg_parser->cfg->views = s; + } else + yyerror("out of memory"); + } +break; +case 240: +#line 337 "./util/configparser.y" + { + struct config_auth* s; + OUTYY(("\nP(auth_zone:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for auth zone */ + s->for_downstream = 1; + s->for_upstream = 1; + s->fallback_enabled = 0; + s->isrpz = 0; + } else + yyerror("out of memory"); + } +break; +case 251: +#line 361 "./util/configparser.y" + { + uint8_t* bitlist; + size_t len = 0; + OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[0].str)); + bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + } + if(bitlist) { + cfg_parser->cfg->auths->rpz_taglist = bitlist; + cfg_parser->cfg->auths->rpz_taglistlen = len; + + } + } +break; +case 252: +#line 380 "./util/configparser.y" + { + OUTYY(("P(rpz_action_override:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "nxdomain")!=0 && strcmp(yystack.l_mark[0].str, "nodata")!=0 && + strcmp(yystack.l_mark[0].str, "passthru")!=0 && strcmp(yystack.l_mark[0].str, "drop")!=0 && + strcmp(yystack.l_mark[0].str, "cname")!=0 && strcmp(yystack.l_mark[0].str, "disabled")!=0) { + yyerror("rpz-action-override action: expected nxdomain, " + "nodata, passthru, drop, cname or disabled"); + free(yystack.l_mark[0].str); + cfg_parser->cfg->auths->rpz_action_override = NULL; + } + else { + cfg_parser->cfg->auths->rpz_action_override = yystack.l_mark[0].str; + } + } +break; +case 253: +#line 397 "./util/configparser.y" + { + OUTYY(("P(rpz_cname_override:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->rpz_cname); + cfg_parser->cfg->auths->rpz_cname = yystack.l_mark[0].str; + } +break; +case 254: +#line 405 "./util/configparser.y" + { + OUTYY(("P(rpz_log:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->rpz_log = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 255: +#line 415 "./util/configparser.y" + { + OUTYY(("P(rpz_log_name:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->rpz_log_name); + cfg_parser->cfg->auths->rpz_log_name = yystack.l_mark[0].str; + } +break; +case 256: +#line 423 "./util/configparser.y" + { + struct config_auth* s; + OUTYY(("\nP(rpz:)\n")); + s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); + if(s) { + s->next = cfg_parser->cfg->auths; + cfg_parser->cfg->auths = s; + /* defaults for RPZ auth zone */ + s->for_downstream = 0; + s->for_upstream = 0; + s->fallback_enabled = 0; + s->isrpz = 1; + } else + yyerror("out of memory"); + } +break; +case 269: +#line 446 "./util/configparser.y" + { + OUTYY(("P(server_num_threads:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->num_threads = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 270: +#line 455 "./util/configparser.y" + { + OUTYY(("P(server_verbosity:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->verbosity = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 271: +#line 464 "./util/configparser.y" + { + OUTYY(("P(server_statistics_interval:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) + cfg_parser->cfg->stat_interval = 0; + else if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->stat_interval = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 272: +#line 475 "./util/configparser.y" + { + OUTYY(("P(server_statistics_cumulative:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_cumulative = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 273: +#line 484 "./util/configparser.y" + { + OUTYY(("P(server_extended_statistics:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stat_extended = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 274: +#line 493 "./util/configparser.y" + { + OUTYY(("P(server_shm_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->shm_enable = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 275: +#line 502 "./util/configparser.y" + { + OUTYY(("P(server_shm_key:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "") == 0 || strcmp(yystack.l_mark[0].str, "0") == 0) + cfg_parser->cfg->shm_key = 0; + else if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->shm_key = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 276: +#line 513 "./util/configparser.y" + { + OUTYY(("P(server_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 277: +#line 522 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_send_client_subnet:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, yystack.l_mark[0].str)) + fatal_exit("out of memory adding client-subnet"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 278: +#line 534 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_zone:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, + yystack.l_mark[0].str)) + fatal_exit("out of memory adding client-subnet-zone"); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 279: +#line 548 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(server_client_subnet_always_forward:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->client_subnet_always_forward = + (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 280: +#line 563 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(client_subnet_opcode:%s)\n", yystack.l_mark[0].str)); + OUTYY(("P(Deprecated option, ignoring)\n")); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 281: +#line 574 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 32) + cfg_parser->cfg->max_client_subnet_ipv4 = 32; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_client_subnet_ipv4 = 0; + else cfg_parser->cfg->max_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 282: +#line 591 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 128) + cfg_parser->cfg->max_client_subnet_ipv6 = 128; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_client_subnet_ipv6 = 0; + else cfg_parser->cfg->max_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 283: +#line 608 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(min_client_subnet_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 32) + cfg_parser->cfg->min_client_subnet_ipv4 = 32; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->min_client_subnet_ipv4 = 0; + else cfg_parser->cfg->min_client_subnet_ipv4 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 284: +#line 625 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(min_client_subnet_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("Ipv6 subnet length expected"); + else if (atoi(yystack.l_mark[0].str) > 128) + cfg_parser->cfg->min_client_subnet_ipv6 = 128; + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->min_client_subnet_ipv6 = 0; + else cfg_parser->cfg->min_client_subnet_ipv6 = (uint8_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 285: +#line 642 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv4 ECS tree size expected"); + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv4 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv4 = (uint32_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 286: +#line 657 "./util/configparser.y" + { + #ifdef CLIENT_SUBNET + OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("IPv6 ECS tree size expected"); + else if (atoi(yystack.l_mark[0].str) < 0) + cfg_parser->cfg->max_ecs_tree_size_ipv6 = 0; + else cfg_parser->cfg->max_ecs_tree_size_ipv6 = (uint32_t)atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without edns subnet option, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 287: +#line 672 "./util/configparser.y" + { + OUTYY(("P(server_interface:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->num_ifs == 0) + cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->ifs = realloc(cfg_parser->cfg->ifs, + (cfg_parser->cfg->num_ifs+1)*sizeof(char*)); + if(!cfg_parser->cfg->ifs) + yyerror("out of memory"); + else + cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = yystack.l_mark[0].str; + } +break; +case 288: +#line 685 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_interface:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->num_out_ifs == 0) + cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); + else cfg_parser->cfg->out_ifs = realloc( + cfg_parser->cfg->out_ifs, + (cfg_parser->cfg->num_out_ifs+1)*sizeof(char*)); + if(!cfg_parser->cfg->out_ifs) + yyerror("out of memory"); + else + cfg_parser->cfg->out_ifs[ + cfg_parser->cfg->num_out_ifs++] = yystack.l_mark[0].str; + } +break; +case 289: +#line 700 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_range:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_ports = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 290: +#line 709 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_port_permit:%s)\n", yystack.l_mark[0].str)); + if(!cfg_mark_ports(yystack.l_mark[0].str, 1, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free(yystack.l_mark[0].str); + } +break; +case 291: +#line 718 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_port_avoid:%s)\n", yystack.l_mark[0].str)); + if(!cfg_mark_ports(yystack.l_mark[0].str, 0, + cfg_parser->cfg->outgoing_avail_ports, 65536)) + yyerror("port number or range (\"low-high\") expected"); + free(yystack.l_mark[0].str); + } +break; +case 292: +#line 727 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_num_tcp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_num_tcp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 293: +#line 736 "./util/configparser.y" + { + OUTYY(("P(server_incoming_num_tcp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->incoming_num_tcp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 294: +#line 745 "./util/configparser.y" + { + OUTYY(("P(server_interface_automatic:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->if_automatic = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 295: +#line 754 "./util/configparser.y" + { + OUTYY(("P(server_do_ip4:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 296: +#line 763 "./util/configparser.y" + { + OUTYY(("P(server_do_ip6:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 297: +#line 772 "./util/configparser.y" + { + OUTYY(("P(server_do_udp:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_udp = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 298: +#line 781 "./util/configparser.y" + { + OUTYY(("P(server_do_tcp:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_tcp = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 299: +#line 790 "./util/configparser.y" + { + OUTYY(("P(server_prefer_ip4:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip4 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 300: +#line 799 "./util/configparser.y" + { + OUTYY(("P(server_prefer_ip6:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefer_ip6 = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 301: +#line 808 "./util/configparser.y" + { + OUTYY(("P(server_tcp_mss:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->tcp_mss = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 302: +#line 817 "./util/configparser.y" + { + OUTYY(("P(server_outgoing_tcp_mss:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->outgoing_tcp_mss = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 303: +#line 826 "./util/configparser.y" + { + OUTYY(("P(server_tcp_idle_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 120000) + cfg_parser->cfg->tcp_idle_timeout = 120000; + else if (atoi(yystack.l_mark[0].str) < 1) + cfg_parser->cfg->tcp_idle_timeout = 1; + else cfg_parser->cfg->tcp_idle_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 304: +#line 839 "./util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_tcp_keepalive = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 305: +#line 848 "./util/configparser.y" + { + OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 6553500) + cfg_parser->cfg->tcp_keepalive_timeout = 6553500; + else if (atoi(yystack.l_mark[0].str) < 1) + cfg_parser->cfg->tcp_keepalive_timeout = 0; + else cfg_parser->cfg->tcp_keepalive_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 306: +#line 861 "./util/configparser.y" + { + OUTYY(("P(server_tcp_upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tcp_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 307: +#line 870 "./util/configparser.y" + { + OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 308: +#line 879 "./util/configparser.y" + { + OUTYY(("P(server_ssl_upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ssl_upstream = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 309: +#line 888 "./util/configparser.y" + { + OUTYY(("P(server_ssl_service_key:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ssl_service_key); + cfg_parser->cfg->ssl_service_key = yystack.l_mark[0].str; + } +break; +case 310: +#line 895 "./util/configparser.y" + { + OUTYY(("P(server_ssl_service_pem:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ssl_service_pem); + cfg_parser->cfg->ssl_service_pem = yystack.l_mark[0].str; + } +break; +case 311: +#line 902 "./util/configparser.y" + { + OUTYY(("P(server_ssl_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->ssl_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 312: +#line 911 "./util/configparser.y" + { + OUTYY(("P(server_tls_cert_bundle:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_cert_bundle); + cfg_parser->cfg->tls_cert_bundle = yystack.l_mark[0].str; + } +break; +case 313: +#line 918 "./util/configparser.y" + { + OUTYY(("P(server_tls_win_cert:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->tls_win_cert = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 314: +#line 927 "./util/configparser.y" + { + OUTYY(("P(server_tls_additional_port:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 315: +#line 935 "./util/configparser.y" + { + OUTYY(("P(server_tls_ciphers:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_ciphers); + cfg_parser->cfg->tls_ciphers = yystack.l_mark[0].str; + } +break; +case 316: +#line 942 "./util/configparser.y" + { + OUTYY(("P(server_tls_ciphersuites:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->tls_ciphersuites); + cfg_parser->cfg->tls_ciphersuites = yystack.l_mark[0].str; + } +break; +case 317: +#line 949 "./util/configparser.y" + { + OUTYY(("P(server_tls_session_ticket_keys:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 318: +#line 957 "./util/configparser.y" + { + OUTYY(("P(server_use_systemd:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_systemd = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 319: +#line 966 "./util/configparser.y" + { + OUTYY(("P(server_do_daemonize:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->do_daemonize = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 320: +#line 975 "./util/configparser.y" + { + OUTYY(("P(server_use_syslog:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_syslog = (strcmp(yystack.l_mark[0].str, "yes")==0); +#if !defined(HAVE_SYSLOG_H) && !defined(UB_ON_WINDOWS) + if(strcmp(yystack.l_mark[0].str, "yes") == 0) + yyerror("no syslog services are available. " + "(reconfigure and compile to add)"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 321: +#line 989 "./util/configparser.y" + { + OUTYY(("P(server_log_time_ascii:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_time_ascii = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 322: +#line 998 "./util/configparser.y" + { + OUTYY(("P(server_log_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_queries = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 323: +#line 1007 "./util/configparser.y" + { + OUTYY(("P(server_log_replies:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_replies = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 324: +#line 1016 "./util/configparser.y" + { + OUTYY(("P(server_log_tag_queryreply:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_tag_queryreply = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 325: +#line 1025 "./util/configparser.y" + { + OUTYY(("P(server_log_servfail:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_servfail = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 326: +#line 1034 "./util/configparser.y" + { + OUTYY(("P(server_log_local_actions:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->log_local_actions = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 327: +#line 1043 "./util/configparser.y" + { + OUTYY(("P(server_chroot:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->chrootdir); + cfg_parser->cfg->chrootdir = yystack.l_mark[0].str; + } +break; +case 328: +#line 1050 "./util/configparser.y" + { + OUTYY(("P(server_username:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->username); + cfg_parser->cfg->username = yystack.l_mark[0].str; + } +break; +case 329: +#line 1057 "./util/configparser.y" + { + OUTYY(("P(server_directory:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->directory); + cfg_parser->cfg->directory = yystack.l_mark[0].str; + /* change there right away for includes relative to this */ + if(yystack.l_mark[0].str[0]) { + char* d; +#ifdef UB_ON_WINDOWS + w_config_adjust_directory(cfg_parser->cfg); +#endif + d = cfg_parser->cfg->directory; + /* adjust directory if we have already chroot, + * like, we reread after sighup */ + if(cfg_parser->chroot && cfg_parser->chroot[0] && + strncmp(d, cfg_parser->chroot, strlen( + cfg_parser->chroot)) == 0) + d += strlen(cfg_parser->chroot); + if(d[0]) { + if(chdir(d)) + log_err("cannot chdir to directory: %s (%s)", + d, strerror(errno)); + } + } + } +break; +case 330: +#line 1083 "./util/configparser.y" + { + OUTYY(("P(server_logfile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->logfile); + cfg_parser->cfg->logfile = yystack.l_mark[0].str; + cfg_parser->cfg->use_syslog = 0; + } +break; +case 331: +#line 1091 "./util/configparser.y" + { + OUTYY(("P(server_pidfile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->pidfile); + cfg_parser->cfg->pidfile = yystack.l_mark[0].str; + } +break; +case 332: +#line 1098 "./util/configparser.y" + { + OUTYY(("P(server_root_hints:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 333: +#line 1105 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dlv_anchor_file); + cfg_parser->cfg->dlv_anchor_file = yystack.l_mark[0].str; + } +break; +case 334: +#line 1112 "./util/configparser.y" + { + OUTYY(("P(server_dlv_anchor:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 335: +#line 1119 "./util/configparser.y" + { + OUTYY(("P(server_auto_trust_anchor_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + auto_trust_anchor_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 336: +#line 1127 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trust_anchor_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 337: +#line 1135 "./util/configparser.y" + { + OUTYY(("P(server_trusted_keys_file:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg-> + trusted_keys_file_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 338: +#line 1143 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 339: +#line 1150 "./util/configparser.y" + { + OUTYY(("P(server_trust_anchor_signaling:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->trust_anchor_signaling = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 340: +#line 1161 "./util/configparser.y" + { + OUTYY(("P(server_root_key_sentinel:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->root_key_sentinel = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 341: +#line 1172 "./util/configparser.y" + { + OUTYY(("P(server_domain_insecure:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 342: +#line 1179 "./util/configparser.y" + { + OUTYY(("P(server_hide_identity:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_identity = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 343: +#line 1188 "./util/configparser.y" + { + OUTYY(("P(server_hide_version:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_version = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 344: +#line 1197 "./util/configparser.y" + { + OUTYY(("P(server_hide_trustanchor:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->hide_trustanchor = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 345: +#line 1206 "./util/configparser.y" + { + OUTYY(("P(server_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->identity); + cfg_parser->cfg->identity = yystack.l_mark[0].str; + } +break; +case 346: +#line 1213 "./util/configparser.y" + { + OUTYY(("P(server_version:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->version); + cfg_parser->cfg->version = yystack.l_mark[0].str; + } +break; +case 347: +#line 1220 "./util/configparser.y" + { + OUTYY(("P(server_so_rcvbuf:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_rcvbuf)) + yyerror("buffer size expected"); + free(yystack.l_mark[0].str); + } +break; +case 348: +#line 1228 "./util/configparser.y" + { + OUTYY(("P(server_so_sndbuf:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->so_sndbuf)) + yyerror("buffer size expected"); + free(yystack.l_mark[0].str); + } +break; +case 349: +#line 1236 "./util/configparser.y" + { + OUTYY(("P(server_so_reuseport:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->so_reuseport = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 350: +#line 1246 "./util/configparser.y" + { + OUTYY(("P(server_ip_transparent:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_transparent = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 351: +#line 1256 "./util/configparser.y" + { + OUTYY(("P(server_ip_freebind:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ip_freebind = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 352: +#line 1266 "./util/configparser.y" + { + OUTYY(("P(server_ip_dscp:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) > 63) + yyerror("value too large (max 63)"); + else if (atoi(yystack.l_mark[0].str) < 0) + yyerror("value too small (min 0)"); + else + cfg_parser->cfg->ip_dscp = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 353: +#line 1280 "./util/configparser.y" + { + OUTYY(("P(server_stream_wait_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->stream_wait_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 354: +#line 1288 "./util/configparser.y" + { + OUTYY(("P(server_edns_buffer_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) < 12) + yyerror("edns buffer size too small"); + else if (atoi(yystack.l_mark[0].str) > 65535) + cfg_parser->cfg->edns_buffer_size = 65535; + else cfg_parser->cfg->edns_buffer_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 355: +#line 1301 "./util/configparser.y" + { + OUTYY(("P(server_msg_buffer_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else if (atoi(yystack.l_mark[0].str) < 4096) + yyerror("message buffer size too small (use 4096)"); + else cfg_parser->cfg->msg_buffer_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 356: +#line 1312 "./util/configparser.y" + { + OUTYY(("P(server_msg_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->msg_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 357: +#line 1320 "./util/configparser.y" + { + OUTYY(("P(server_msg_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->msg_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->msg_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 358: +#line 1333 "./util/configparser.y" + { + OUTYY(("P(server_num_queries_per_thread:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->num_queries_per_thread = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 359: +#line 1342 "./util/configparser.y" + { + OUTYY(("P(server_jostle_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->jostle_time = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 360: +#line 1351 "./util/configparser.y" + { + OUTYY(("P(server_delay_close:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->delay_close = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 361: +#line 1360 "./util/configparser.y" + { + OUTYY(("P(server_unblock_lan_zones:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->unblock_lan_zones = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 362: +#line 1370 "./util/configparser.y" + { + OUTYY(("P(server_insecure_lan_zones:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->insecure_lan_zones = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 363: +#line 1380 "./util/configparser.y" + { + OUTYY(("P(server_rrset_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->rrset_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 364: +#line 1388 "./util/configparser.y" + { + OUTYY(("P(server_rrset_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->rrset_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->rrset_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 365: +#line 1401 "./util/configparser.y" + { + OUTYY(("P(server_infra_host_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->host_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 366: +#line 1410 "./util/configparser.y" + { + OUTYY(("P(server_infra_lame_ttl:%s)\n", yystack.l_mark[0].str)); + verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " + "removed, use infra-host-ttl)", yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 367: +#line 1418 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_numhosts:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->infra_cache_numhosts = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 368: +#line 1427 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_lame_size:%s)\n", yystack.l_mark[0].str)); + verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " + "(option removed, use infra-cache-numhosts)", yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 369: +#line 1435 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->infra_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->infra_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 370: +#line 1448 "./util/configparser.y" + { + OUTYY(("P(server_infra_cache_min_rtt:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->infra_cache_min_rtt = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 371: +#line 1457 "./util/configparser.y" + { + OUTYY(("P(server_target_fetch_policy:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->target_fetch_policy); + cfg_parser->cfg->target_fetch_policy = yystack.l_mark[0].str; + } +break; +case 372: +#line 1464 "./util/configparser.y" + { + OUTYY(("P(server_harden_short_bufsize:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_short_bufsize = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 373: +#line 1474 "./util/configparser.y" + { + OUTYY(("P(server_harden_large_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_large_queries = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 374: +#line 1484 "./util/configparser.y" + { + OUTYY(("P(server_harden_glue:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_glue = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 375: +#line 1494 "./util/configparser.y" + { + OUTYY(("P(server_harden_dnssec_stripped:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_dnssec_stripped = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 376: +#line 1504 "./util/configparser.y" + { + OUTYY(("P(server_harden_below_nxdomain:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_below_nxdomain = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 377: +#line 1514 "./util/configparser.y" + { + OUTYY(("P(server_harden_referral_path:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_referral_path = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 378: +#line 1524 "./util/configparser.y" + { + OUTYY(("P(server_harden_algo_downgrade:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->harden_algo_downgrade = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 379: +#line 1534 "./util/configparser.y" + { + OUTYY(("P(server_use_caps_for_id:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->use_caps_bits_for_id = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 380: +#line 1544 "./util/configparser.y" + { + OUTYY(("P(server_caps_whitelist:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 381: +#line 1551 "./util/configparser.y" + { + OUTYY(("P(server_private_address:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 382: +#line 1558 "./util/configparser.y" + { + OUTYY(("P(server_private_domain:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 383: +#line 1565 "./util/configparser.y" + { + OUTYY(("P(server_prefetch:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 384: +#line 1574 "./util/configparser.y" + { + OUTYY(("P(server_prefetch_key:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->prefetch_key = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 385: +#line 1583 "./util/configparser.y" + { + OUTYY(("P(server_deny_any:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->deny_any = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 386: +#line 1592 "./util/configparser.y" + { + OUTYY(("P(server_unwanted_reply_threshold:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->unwanted_threshold = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 387: +#line 1601 "./util/configparser.y" + { + OUTYY(("P(server_do_not_query_address:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 388: +#line 1608 "./util/configparser.y" + { + OUTYY(("P(server_do_not_query_localhost:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->donotquery_localhost = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 389: +#line 1618 "./util/configparser.y" + { + OUTYY(("P(server_access_control:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "deny")!=0 && strcmp(yystack.l_mark[0].str, "refuse")!=0 && + strcmp(yystack.l_mark[0].str, "deny_non_local")!=0 && + strcmp(yystack.l_mark[0].str, "refuse_non_local")!=0 && + strcmp(yystack.l_mark[0].str, "allow_setrd")!=0 && + strcmp(yystack.l_mark[0].str, "allow")!=0 && + strcmp(yystack.l_mark[0].str, "allow_snoop")!=0) { + yyerror("expected deny, refuse, deny_non_local, " + "refuse_non_local, allow, allow_setrd or " + "allow_snoop in access control action"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->acls, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding acl"); + } + } +break; +case 390: +#line 1638 "./util/configparser.y" + { + OUTYY(("P(server_module_conf:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->module_conf); + cfg_parser->cfg->module_conf = yystack.l_mark[0].str; + } +break; +case 391: +#line 1645 "./util/configparser.y" + { + OUTYY(("P(server_val_override_date:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_date_override = 0; + } else if(strlen(yystack.l_mark[0].str) == 14) { + cfg_parser->cfg->val_date_override = + cfg_convert_timeval(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_date_override) + yyerror("bad date/time specification"); + } else { + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + cfg_parser->cfg->val_date_override = atoi(yystack.l_mark[0].str); + } + free(yystack.l_mark[0].str); + } +break; +case 392: +#line 1663 "./util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_min:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_sig_skew_min = 0; + } else { + cfg_parser->cfg->val_sig_skew_min = atoi(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_sig_skew_min) + yyerror("number expected"); + } + free(yystack.l_mark[0].str); + } +break; +case 393: +#line 1676 "./util/configparser.y" + { + OUTYY(("P(server_val_sig_skew_max:%s)\n", yystack.l_mark[0].str)); + if(*yystack.l_mark[0].str == '\0' || strcmp(yystack.l_mark[0].str, "0") == 0) { + cfg_parser->cfg->val_sig_skew_max = 0; + } else { + cfg_parser->cfg->val_sig_skew_max = atoi(yystack.l_mark[0].str); + if(!cfg_parser->cfg->val_sig_skew_max) + yyerror("number expected"); + } + free(yystack.l_mark[0].str); + } +break; +case 394: +#line 1689 "./util/configparser.y" + { + OUTYY(("P(server_cache_max_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 395: +#line 1698 "./util/configparser.y" + { + OUTYY(("P(server_cache_max_negative_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->max_negative_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 396: +#line 1707 "./util/configparser.y" + { + OUTYY(("P(server_cache_min_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->min_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 397: +#line 1716 "./util/configparser.y" + { + OUTYY(("P(server_bogus_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->bogus_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 398: +#line 1725 "./util/configparser.y" + { + OUTYY(("P(server_val_clean_additional:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->val_clean_additional = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 399: +#line 1735 "./util/configparser.y" + { + OUTYY(("P(server_val_permissive_mode:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->val_permissive_mode = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 400: +#line 1745 "./util/configparser.y" + { + OUTYY(("P(server_aggressive_nsec:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else + cfg_parser->cfg->aggressive_nsec = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 401: +#line 1756 "./util/configparser.y" + { + OUTYY(("P(server_ignore_cd_flag:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ignore_cd = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 402: +#line 1765 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 403: +#line 1774 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 404: +#line 1783 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 405: +#line 1792 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_reply_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 406: +#line 1801 "./util/configparser.y" + { + OUTYY(("P(server_serve_expired_client_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->serve_expired_client_timeout = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 407: +#line 1810 "./util/configparser.y" + { + OUTYY(("P(server_fake_dsa:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_dsa = (strcmp(yystack.l_mark[0].str, "yes")==0); + if(fake_dsa) + log_warn("test option fake_dsa is enabled"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 408: +#line 1823 "./util/configparser.y" + { + OUTYY(("P(server_fake_sha1:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); +#if defined(HAVE_SSL) || defined(HAVE_NETTLE) + else fake_sha1 = (strcmp(yystack.l_mark[0].str, "yes")==0); + if(fake_sha1) + log_warn("test option fake_sha1 is enabled"); +#endif + free(yystack.l_mark[0].str); + } +break; +case 409: +#line 1836 "./util/configparser.y" + { + OUTYY(("P(server_val_log_level:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->val_log_level = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 410: +#line 1845 "./util/configparser.y" + { + OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->val_nsec3_key_iterations); + cfg_parser->cfg->val_nsec3_key_iterations = yystack.l_mark[0].str; + } +break; +case 411: +#line 1852 "./util/configparser.y" + { + OUTYY(("P(server_add_holddown:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->add_holddown = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 412: +#line 1861 "./util/configparser.y" + { + OUTYY(("P(server_del_holddown:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->del_holddown = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 413: +#line 1870 "./util/configparser.y" + { + OUTYY(("P(server_keep_missing:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->keep_missing = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 414: +#line 1879 "./util/configparser.y" + { + OUTYY(("P(server_permit_small_holddown:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->permit_small_holddown = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 415: +#line 1888 "./util/configparser.y" + { + OUTYY(("P(server_key_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->key_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 416: +#line 1896 "./util/configparser.y" + { + OUTYY(("P(server_key_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->key_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->key_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 417: +#line 1909 "./util/configparser.y" + { + OUTYY(("P(server_neg_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->neg_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 418: +#line 1917 "./util/configparser.y" + { + OUTYY(("P(server_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 && + strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 && + strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0 + && strcmp(yystack.l_mark[0].str, "typetransparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_transparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_refuse")!=0 + && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0 + && strcmp(yystack.l_mark[0].str, "noview")!=0 + && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0 + && strcmp(yystack.l_mark[0].str, "inform_redirect") != 0 + && strcmp(yystack.l_mark[0].str, "ipset") != 0) { + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "inform_redirect, always_transparent, " + "always_refuse, always_nxdomain, noview " + ", nodefault or ipset"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_nodefault, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#ifdef USE_IPSET + } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_zones_ipset, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#endif + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg->local_zones, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-zone"); + } + } +break; +case 419: +#line 1958 "./util/configparser.y" + { + OUTYY(("P(server_local_data:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-data"); + } +break; +case 420: +#line 1965 "./util/configparser.y" + { + char* ptr; + OUTYY(("P(server_local_data_ptr:%s)\n", yystack.l_mark[0].str)); + ptr = cfg_ptr_reverse(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } +break; +case 421: +#line 1980 "./util/configparser.y" + { + OUTYY(("P(server_minimal_responses:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->minimal_responses = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 422: +#line 1990 "./util/configparser.y" + { + OUTYY(("P(server_rrset_roundrobin:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->rrset_roundrobin = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 423: +#line 2000 "./util/configparser.y" + { + OUTYY(("P(server_unknown_server_time_limit:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->unknown_server_time_limit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 424: +#line 2007 "./util/configparser.y" + { + OUTYY(("P(server_max_udp_size:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->max_udp_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 425: +#line 2014 "./util/configparser.y" + { + OUTYY(("P(dns64_prefix:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dns64_prefix); + cfg_parser->cfg->dns64_prefix = yystack.l_mark[0].str; + } +break; +case 426: +#line 2021 "./util/configparser.y" + { + OUTYY(("P(server_dns64_synthall:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dns64_synthall = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 427: +#line 2030 "./util/configparser.y" + { + OUTYY(("P(dns64_ignore_aaaa:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, + yystack.l_mark[0].str)) + fatal_exit("out of memory adding dns64-ignore-aaaa"); + } +break; +case 428: +#line 2038 "./util/configparser.y" + { + char* p, *s = yystack.l_mark[0].str; + OUTYY(("P(server_define_tag:%s)\n", yystack.l_mark[0].str)); + while((p=strsep(&s, " \t\n")) != NULL) { + if(*p) { + if(!config_add_tag(cfg_parser->cfg, p)) + yyerror("could not define-tag, " + "out of memory"); + } + } + free(yystack.l_mark[0].str); + } +break; +case 429: +#line 2052 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(server_local_zone_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->local_zone_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 430: +#line 2073 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(server_access_control_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->acl_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 431: +#line 2094 "./util/configparser.y" + { + OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 432: +#line 2106 "./util/configparser.y" + { + OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 433: +#line 2118 "./util/configparser.y" + { + OUTYY(("P(server_local_zone_override:%s %s %s)\n", yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, + yystack.l_mark[-2].str, yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + free(yystack.l_mark[-2].str); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } + } +break; +case 434: +#line 2130 "./util/configparser.y" + { + OUTYY(("P(server_access_control_view:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) { + yyerror("out of memory"); + } + } +break; +case 435: +#line 2139 "./util/configparser.y" + { + size_t len = 0; + uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, yystack.l_mark[0].str, + &len); + free(yystack.l_mark[0].str); + OUTYY(("P(response_ip_tag:%s)\n", yystack.l_mark[-1].str)); + if(!bitlist) { + yyerror("could not parse tags, (define-tag them first)"); + free(yystack.l_mark[-1].str); + } + if(bitlist) { + if(!cfg_strbytelist_insert( + &cfg_parser->cfg->respip_tags, + yystack.l_mark[-1].str, bitlist, len)) { + yyerror("out of memory"); + free(yystack.l_mark[-1].str); + } + } + } +break; +case 436: +#line 2160 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 437: +#line 2170 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 438: +#line 2179 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ip_ratelimit_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 439: +#line 2187 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->ratelimit_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 440: +#line 2195 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ip_ratelimit_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->ip_ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 441: +#line 2208 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->ratelimit_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->ratelimit_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 442: +#line 2221 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) { + yyerror("number expected"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg-> + ratelimit_for_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding " + "ratelimit-for-domain"); + } + } +break; +case 443: +#line 2236 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) { + yyerror("number expected"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else { + if(!cfg_str2list_insert(&cfg_parser->cfg-> + ratelimit_below_domain, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding " + "ratelimit-below-domain"); + } + } +break; +case 444: +#line 2251 "./util/configparser.y" + { + OUTYY(("P(server_ip_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ip_ratelimit_factor = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 445: +#line 2260 "./util/configparser.y" + { + OUTYY(("P(server_ratelimit_factor:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ratelimit_factor = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 446: +#line 2269 "./util/configparser.y" + { + OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); + free(yystack.l_mark[0].str); + } +break; +case 447: +#line 2275 "./util/configparser.y" + { + OUTYY(("P(server_fast_server_num:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) <= 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_num = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 448: +#line 2284 "./util/configparser.y" + { + OUTYY(("P(server_fast_server_permil:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->fast_server_permil = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 449: +#line 2293 "./util/configparser.y" + { + OUTYY(("P(server_qname_minimisation:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 450: +#line 2303 "./util/configparser.y" + { + OUTYY(("P(server_qname_minimisation_strict:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->qname_minimisation_strict = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 451: +#line 2313 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_responses = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 452: +#line 2323 "./util/configparser.y" + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 453: +#line 2332 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_queries = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 454: +#line 2342 "./util/configparser.y" + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 455: +#line 2351 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_enabled:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_enabled = (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 456: +#line 2364 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_ignore_bogus = (strcmp(yystack.l_mark[0].str, "yes")==0); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 457: +#line 2377 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_hook:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->ipsecmod_hook); + cfg_parser->cfg->ipsecmod_hook = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 458: +#line 2389 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0 && strcmp(yystack.l_mark[0].str, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->ipsecmod_max_ttl = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 459: +#line 2403 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_whitelist:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, yystack.l_mark[0].str)) + yyerror("out of memory"); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 460: +#line 2415 "./util/configparser.y" + { + #ifdef USE_IPSECMOD + OUTYY(("P(server_ipsecmod_strict:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->ipsecmod_strict = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without IPsec module, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 461: +#line 2429 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->stubs->name) + yyerror("stub name override, there must be one name " + "for one stub-zone"); + free(cfg_parser->cfg->stubs->name); + cfg_parser->cfg->stubs->name = yystack.l_mark[0].str; + } +break; +case 462: +#line 2439 "./util/configparser.y" + { + OUTYY(("P(stub-host:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 463: +#line 2446 "./util/configparser.y" + { + OUTYY(("P(stub-addr:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 464: +#line 2453 "./util/configparser.y" + { + OUTYY(("P(stub-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 465: +#line 2462 "./util/configparser.y" + { + OUTYY(("P(stub-no-cache:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 466: +#line 2471 "./util/configparser.y" + { + OUTYY(("P(stub-ssl-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->ssl_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 467: +#line 2481 "./util/configparser.y" + { + OUTYY(("P(stub-prime:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->stubs->isprime = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 468: +#line 2491 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->forwards->name) + yyerror("forward name override, there must be one " + "name for one forward-zone"); + free(cfg_parser->cfg->forwards->name); + cfg_parser->cfg->forwards->name = yystack.l_mark[0].str; + } +break; +case 469: +#line 2501 "./util/configparser.y" + { + OUTYY(("P(forward-host:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 470: +#line 2508 "./util/configparser.y" + { + OUTYY(("P(forward-addr:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 471: +#line 2515 "./util/configparser.y" + { + OUTYY(("P(forward-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 472: +#line 2524 "./util/configparser.y" + { + OUTYY(("P(forward-no-cache:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->no_cache=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 473: +#line 2533 "./util/configparser.y" + { + OUTYY(("P(forward-ssl-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->forwards->ssl_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 474: +#line 2543 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->auths->name) + yyerror("auth name override, there must be one name " + "for one auth-zone"); + free(cfg_parser->cfg->auths->name); + cfg_parser->cfg->auths->name = yystack.l_mark[0].str; + } +break; +case 475: +#line 2553 "./util/configparser.y" + { + OUTYY(("P(zonefile:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->auths->zonefile); + cfg_parser->cfg->auths->zonefile = yystack.l_mark[0].str; + } +break; +case 476: +#line 2560 "./util/configparser.y" + { + OUTYY(("P(master:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 477: +#line 2567 "./util/configparser.y" + { + OUTYY(("P(url:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 478: +#line 2574 "./util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 479: +#line 2582 "./util/configparser.y" + { + OUTYY(("P(for-downstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_downstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 480: +#line 2592 "./util/configparser.y" + { + OUTYY(("P(for-upstream:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->for_upstream = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 481: +#line 2602 "./util/configparser.y" + { + OUTYY(("P(fallback-enabled:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->auths->fallback_enabled = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 482: +#line 2612 "./util/configparser.y" + { + OUTYY(("P(name:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->views->name) + yyerror("view name override, there must be one " + "name for one view"); + free(cfg_parser->cfg->views->name); + cfg_parser->cfg->views->name = yystack.l_mark[0].str; + } +break; +case 483: +#line 2622 "./util/configparser.y" + { + OUTYY(("P(view_local_zone:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "static")!=0 && strcmp(yystack.l_mark[0].str, "deny")!=0 && + strcmp(yystack.l_mark[0].str, "refuse")!=0 && strcmp(yystack.l_mark[0].str, "redirect")!=0 && + strcmp(yystack.l_mark[0].str, "transparent")!=0 && strcmp(yystack.l_mark[0].str, "nodefault")!=0 + && strcmp(yystack.l_mark[0].str, "typetransparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_transparent")!=0 + && strcmp(yystack.l_mark[0].str, "always_refuse")!=0 + && strcmp(yystack.l_mark[0].str, "always_nxdomain")!=0 + && strcmp(yystack.l_mark[0].str, "noview")!=0 + && strcmp(yystack.l_mark[0].str, "inform")!=0 && strcmp(yystack.l_mark[0].str, "inform_deny")!=0) { + yyerror("local-zone type: expected static, deny, " + "refuse, redirect, transparent, " + "typetransparent, inform, inform_deny, " + "always_transparent, always_refuse, " + "always_nxdomain, noview or nodefault"); + free(yystack.l_mark[-1].str); + free(yystack.l_mark[0].str); + } else if(strcmp(yystack.l_mark[0].str, "nodefault")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_nodefault, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#ifdef USE_IPSET + } else if(strcmp(yystack.l_mark[0].str, "ipset")==0) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_zones_ipset, yystack.l_mark[-1].str)) + fatal_exit("out of memory adding local-zone"); + free(yystack.l_mark[0].str); +#endif + } else { + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->local_zones, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding local-zone"); + } + } +break; +case 484: +#line 2661 "./util/configparser.y" + { + OUTYY(("P(view_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + validate_respip_action(yystack.l_mark[0].str); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_actions, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding per-view " + "response-ip action"); + } +break; +case 485: +#line 2671 "./util/configparser.y" + { + OUTYY(("P(view_response_ip_data:%s)\n", yystack.l_mark[-1].str)); + if(!cfg_str2list_insert( + &cfg_parser->cfg->views->respip_data, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip-data"); + } +break; +case 486: +#line 2679 "./util/configparser.y" + { + OUTYY(("P(view_local_data:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, yystack.l_mark[0].str)) { + fatal_exit("out of memory adding local-data"); + } + } +break; +case 487: +#line 2687 "./util/configparser.y" + { + char* ptr; + OUTYY(("P(view_local_data_ptr:%s)\n", yystack.l_mark[0].str)); + ptr = cfg_ptr_reverse(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + if(ptr) { + if(!cfg_strlist_insert(&cfg_parser->cfg->views-> + local_data, ptr)) + fatal_exit("out of memory adding local-data"); + } else { + yyerror("local-data-ptr could not be reversed"); + } + } +break; +case 488: +#line 2702 "./util/configparser.y" + { + OUTYY(("P(view-first:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->views->isfirst=(strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 489: +#line 2711 "./util/configparser.y" + { + OUTYY(("\nP(remote-control:)\n")); + } +break; +case 500: +#line 2722 "./util/configparser.y" + { + OUTYY(("P(control_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->remote_control_enable = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 501: +#line 2732 "./util/configparser.y" + { + OUTYY(("P(control_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("control port number expected"); + else cfg_parser->cfg->control_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 502: +#line 2741 "./util/configparser.y" + { + OUTYY(("P(control_interface:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 503: +#line 2748 "./util/configparser.y" + { + OUTYY(("P(control_use_cert:%s)\n", yystack.l_mark[0].str)); + cfg_parser->cfg->control_use_cert = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 504: +#line 2755 "./util/configparser.y" + { + OUTYY(("P(rc_server_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->server_key_file); + cfg_parser->cfg->server_key_file = yystack.l_mark[0].str; + } +break; +case 505: +#line 2762 "./util/configparser.y" + { + OUTYY(("P(rc_server_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->server_cert_file); + cfg_parser->cfg->server_cert_file = yystack.l_mark[0].str; + } +break; +case 506: +#line 2769 "./util/configparser.y" + { + OUTYY(("P(rc_control_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->control_key_file); + cfg_parser->cfg->control_key_file = yystack.l_mark[0].str; + } +break; +case 507: +#line 2776 "./util/configparser.y" + { + OUTYY(("P(rc_control_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->control_cert_file); + cfg_parser->cfg->control_cert_file = yystack.l_mark[0].str; + } +break; +case 508: +#line 2783 "./util/configparser.y" + { + OUTYY(("\nP(dnstap:)\n")); + } +break; +case 529: +#line 2803 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 530: +#line 2812 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_socket_path:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_socket_path); + cfg_parser->cfg->dnstap_socket_path = yystack.l_mark[0].str; + } +break; +case 531: +#line 2819 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_ip:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_ip); + cfg_parser->cfg->dnstap_ip = yystack.l_mark[0].str; + } +break; +case 532: +#line 2826 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_tls = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 533: +#line 2835 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_server_name); + cfg_parser->cfg->dnstap_tls_server_name = yystack.l_mark[0].str; + } +break; +case 534: +#line 2842 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_cert_bundle); + cfg_parser->cfg->dnstap_tls_cert_bundle = yystack.l_mark[0].str; + } +break; +case 535: +#line 2849 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_client_key_file); + cfg_parser->cfg->dnstap_tls_client_key_file = yystack.l_mark[0].str; + } +break; +case 536: +#line 2856 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_tls_client_cert_file); + cfg_parser->cfg->dnstap_tls_client_cert_file = yystack.l_mark[0].str; + } +break; +case 537: +#line 2863 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_identity:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_identity = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 538: +#line 2872 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_send_version:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_send_version = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 539: +#line 2881 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_identity); + cfg_parser->cfg->dnstap_identity = yystack.l_mark[0].str; + } +break; +case 540: +#line 2888 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_version:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnstap_version); + cfg_parser->cfg->dnstap_version = yystack.l_mark[0].str; + } +break; +case 541: +#line 2895 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 542: +#line 2905 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_resolver_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 543: +#line 2915 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 544: +#line 2925 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_client_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 545: +#line 2935 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_query_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 546: +#line 2945 "./util/configparser.y" + { + OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_log_forwarder_response_messages = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 547: +#line 2955 "./util/configparser.y" + { + OUTYY(("\nP(python:)\n")); + } +break; +case 551: +#line 2964 "./util/configparser.y" + { + OUTYY(("P(python-script:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, yystack.l_mark[0].str)) + yyerror("out of memory"); + } +break; +case 552: +#line 2970 "./util/configparser.y" + { + OUTYY(("P(disable_dnssec_lame_check:%s)\n", yystack.l_mark[0].str)); + if (strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->disable_dnssec_lame_check = + (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 553: +#line 2980 "./util/configparser.y" + { + OUTYY(("P(server_log_identity:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->log_identity); + cfg_parser->cfg->log_identity = yystack.l_mark[0].str; + } +break; +case 554: +#line 2987 "./util/configparser.y" + { + OUTYY(("P(server_response_ip:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + validate_respip_action(yystack.l_mark[0].str); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip"); + } +break; +case 555: +#line 2996 "./util/configparser.y" + { + OUTYY(("P(server_response_ip_data:%s)\n", yystack.l_mark[-1].str)); + if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, + yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding response-ip-data"); + } +break; +case 556: +#line 3004 "./util/configparser.y" + { + OUTYY(("\nP(dnscrypt:)\n")); + } +break; +case 569: +#line 3020 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", yystack.l_mark[0].str)); + if(strcmp(yystack.l_mark[0].str, "yes") != 0 && strcmp(yystack.l_mark[0].str, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnscrypt = (strcmp(yystack.l_mark[0].str, "yes")==0); + free(yystack.l_mark[0].str); + } +break; +case 570: +#line 3030 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_port:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->dnscrypt_port = atoi(yystack.l_mark[0].str); + free(yystack.l_mark[0].str); + } +break; +case 571: +#line 3039 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->dnscrypt_provider); + cfg_parser->cfg->dnscrypt_provider = yystack.l_mark[0].str; + } +break; +case 572: +#line 3046 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", yystack.l_mark[0].str)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str)) + log_warn("dnscrypt-provider-cert %s is a duplicate", yystack.l_mark[0].str); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-provider-cert"); + } +break; +case 573: +#line 3055 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", yystack.l_mark[0].str)); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); + } +break; +case 574: +#line 3062 "./util/configparser.y" + { + OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", yystack.l_mark[0].str)); + if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str)) + log_warn("dnscrypt-secret-key: %s is a duplicate", yystack.l_mark[0].str); + if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, yystack.l_mark[0].str)) + fatal_exit("out of memory adding dnscrypt-secret-key"); + } +break; +case 575: +#line 3071 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 576: +#line 3079 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->dnscrypt_shared_secret_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 577: +#line 3092 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", yystack.l_mark[0].str)); + if(!cfg_parse_memsize(yystack.l_mark[0].str, &cfg_parser->cfg->dnscrypt_nonce_cache_size)) + yyerror("memory size expected"); + free(yystack.l_mark[0].str); + } +break; +case 578: +#line 3100 "./util/configparser.y" + { + OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("number expected"); + else { + cfg_parser->cfg->dnscrypt_nonce_cache_slabs = atoi(yystack.l_mark[0].str); + if(!is_pow2(cfg_parser->cfg->dnscrypt_nonce_cache_slabs)) + yyerror("must be a power of 2"); + } + free(yystack.l_mark[0].str); + } +break; +case 579: +#line 3113 "./util/configparser.y" + { + OUTYY(("\nP(cachedb:)\n")); + } +break; +case 587: +#line 3123 "./util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(backend:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->cachedb_backend); + cfg_parser->cfg->cachedb_backend = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 588: +#line 3135 "./util/configparser.y" + { + #ifdef USE_CACHEDB + OUTYY(("P(secret-seed:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->cachedb_secret); + cfg_parser->cfg->cachedb_secret = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 589: +#line 3147 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_server_host:%s)\n", yystack.l_mark[0].str)); + free(cfg_parser->cfg->redis_server_host); + cfg_parser->cfg->redis_server_host = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 590: +#line 3159 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + int port; + OUTYY(("P(redis_server_port:%s)\n", yystack.l_mark[0].str)); + port = atoi(yystack.l_mark[0].str); + if(port == 0 || port < 0 || port > 65535) + yyerror("valid redis server port number expected"); + else cfg_parser->cfg->redis_server_port = port; + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 591: +#line 3174 "./util/configparser.y" + { + #if defined(USE_CACHEDB) && defined(USE_REDIS) + OUTYY(("P(redis_timeout:%s)\n", yystack.l_mark[0].str)); + if(atoi(yystack.l_mark[0].str) == 0) + yyerror("redis timeout value expected"); + else cfg_parser->cfg->redis_timeout = atoi(yystack.l_mark[0].str); + #else + OUTYY(("P(Compiled without cachedb or redis, ignoring)\n")); + #endif + free(yystack.l_mark[0].str); + } +break; +case 592: +#line 3187 "./util/configparser.y" + { + OUTYY(("P(server_tcp_connection_limit:%s %s)\n", yystack.l_mark[-1].str, yystack.l_mark[0].str)); + if (atoi(yystack.l_mark[0].str) < 0) + yyerror("positive number expected"); + else { + if(!cfg_str2list_insert(&cfg_parser->cfg->tcp_connection_limits, yystack.l_mark[-1].str, yystack.l_mark[0].str)) + fatal_exit("out of memory adding tcp connection limit"); + } + } +break; +case 593: +#line 3198 "./util/configparser.y" + { + OUTYY(("\nP(ipset:)\n")); + } +break; +case 598: +#line 3207 "./util/configparser.y" + { + #ifdef USE_IPSET + OUTYY(("P(name-v4:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->ipset_name_v4) + yyerror("ipset name v4 override, there must be one " + "name for ip v4"); + free(cfg_parser->cfg->ipset_name_v4); + cfg_parser->cfg->ipset_name_v4 = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +case 599: +#line 3222 "./util/configparser.y" + { + #ifdef USE_IPSET + OUTYY(("P(name-v6:%s)\n", yystack.l_mark[0].str)); + if(cfg_parser->cfg->ipset_name_v6) + yyerror("ipset name v6 override, there must be one " + "name for ip v6"); + free(cfg_parser->cfg->ipset_name_v6); + cfg_parser->cfg->ipset_name_v6 = yystack.l_mark[0].str; + #else + OUTYY(("P(Compiled without ipset, ignoring)\n")); + free(yystack.l_mark[0].str); + #endif + } +break; +#line 5180 "util/configparser.c" + } + yystack.s_mark -= yym; + yystate = *yystack.s_mark; + yystack.l_mark -= yym; + yym = yylhs[yyn]; + if (yystate == 0 && yym == 0) + { +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state 0 to\ + state %d\n", YYPREFIX, YYFINAL); +#endif + yystate = YYFINAL; + *++yystack.s_mark = YYFINAL; + *++yystack.l_mark = yyval; + if (yychar < 0) + { + if ((yychar = YYLEX) < 0) yychar = YYEOF; +#if YYDEBUG + if (yydebug) + { + yys = yyname[YYTRANSLATE(yychar)]; + printf("%sdebug: state %d, reading %d (%s)\n", + YYPREFIX, YYFINAL, yychar, yys); + } +#endif + } + if (yychar == YYEOF) goto yyaccept; + goto yyloop; + } + if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 && + yyn <= YYTABLESIZE && yycheck[yyn] == yystate) + yystate = yytable[yyn]; + else + yystate = yydgoto[yym]; +#if YYDEBUG + if (yydebug) + printf("%sdebug: after reduction, shifting from state %d \ +to state %d\n", YYPREFIX, *yystack.s_mark, yystate); +#endif + if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) + { + goto yyoverflow; + } + *++yystack.s_mark = (YYINT) yystate; + *++yystack.l_mark = yyval; + goto yyloop; + +yyoverflow: + YYERROR_CALL("yacc stack overflow"); + +yyabort: + yyfreestack(&yystack); + return (1); + +yyaccept: + yyfreestack(&yystack); + return (0); +} diff --git a/util/configparser.h b/util/configparser.h index f5958de4b..0b383b6d1 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,643 +1,298 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 +#define SPACE 257 +#define LETTER 258 +#define NEWLINE 259 +#define COMMENT 260 +#define COLON 261 +#define ANY 262 +#define ZONESTR 263 +#define STRING_ARG 264 +#define VAR_SERVER 265 +#define VAR_VERBOSITY 266 +#define VAR_NUM_THREADS 267 +#define VAR_PORT 268 +#define VAR_OUTGOING_RANGE 269 +#define VAR_INTERFACE 270 +#define VAR_PREFER_IP4 271 +#define VAR_DO_IP4 272 +#define VAR_DO_IP6 273 +#define VAR_PREFER_IP6 274 +#define VAR_DO_UDP 275 +#define VAR_DO_TCP 276 +#define VAR_TCP_MSS 277 +#define VAR_OUTGOING_TCP_MSS 278 +#define VAR_TCP_IDLE_TIMEOUT 279 +#define VAR_EDNS_TCP_KEEPALIVE 280 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 281 +#define VAR_CHROOT 282 +#define VAR_USERNAME 283 +#define VAR_DIRECTORY 284 +#define VAR_LOGFILE 285 +#define VAR_PIDFILE 286 +#define VAR_MSG_CACHE_SIZE 287 +#define VAR_MSG_CACHE_SLABS 288 +#define VAR_NUM_QUERIES_PER_THREAD 289 +#define VAR_RRSET_CACHE_SIZE 290 +#define VAR_RRSET_CACHE_SLABS 291 +#define VAR_OUTGOING_NUM_TCP 292 +#define VAR_INFRA_HOST_TTL 293 +#define VAR_INFRA_LAME_TTL 294 +#define VAR_INFRA_CACHE_SLABS 295 +#define VAR_INFRA_CACHE_NUMHOSTS 296 +#define VAR_INFRA_CACHE_LAME_SIZE 297 +#define VAR_NAME 298 +#define VAR_STUB_ZONE 299 +#define VAR_STUB_HOST 300 +#define VAR_STUB_ADDR 301 +#define VAR_TARGET_FETCH_POLICY 302 +#define VAR_HARDEN_SHORT_BUFSIZE 303 +#define VAR_HARDEN_LARGE_QUERIES 304 +#define VAR_FORWARD_ZONE 305 +#define VAR_FORWARD_HOST 306 +#define VAR_FORWARD_ADDR 307 +#define VAR_DO_NOT_QUERY_ADDRESS 308 +#define VAR_HIDE_IDENTITY 309 +#define VAR_HIDE_VERSION 310 +#define VAR_IDENTITY 311 +#define VAR_VERSION 312 +#define VAR_HARDEN_GLUE 313 +#define VAR_MODULE_CONF 314 +#define VAR_TRUST_ANCHOR_FILE 315 +#define VAR_TRUST_ANCHOR 316 +#define VAR_VAL_OVERRIDE_DATE 317 +#define VAR_BOGUS_TTL 318 +#define VAR_VAL_CLEAN_ADDITIONAL 319 +#define VAR_VAL_PERMISSIVE_MODE 320 +#define VAR_INCOMING_NUM_TCP 321 +#define VAR_MSG_BUFFER_SIZE 322 +#define VAR_KEY_CACHE_SIZE 323 +#define VAR_KEY_CACHE_SLABS 324 +#define VAR_TRUSTED_KEYS_FILE 325 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 326 +#define VAR_USE_SYSLOG 327 +#define VAR_OUTGOING_INTERFACE 328 +#define VAR_ROOT_HINTS 329 +#define VAR_DO_NOT_QUERY_LOCALHOST 330 +#define VAR_CACHE_MAX_TTL 331 +#define VAR_HARDEN_DNSSEC_STRIPPED 332 +#define VAR_ACCESS_CONTROL 333 +#define VAR_LOCAL_ZONE 334 +#define VAR_LOCAL_DATA 335 +#define VAR_INTERFACE_AUTOMATIC 336 +#define VAR_STATISTICS_INTERVAL 337 +#define VAR_DO_DAEMONIZE 338 +#define VAR_USE_CAPS_FOR_ID 339 +#define VAR_STATISTICS_CUMULATIVE 340 +#define VAR_OUTGOING_PORT_PERMIT 341 +#define VAR_OUTGOING_PORT_AVOID 342 +#define VAR_DLV_ANCHOR_FILE 343 +#define VAR_DLV_ANCHOR 344 +#define VAR_NEG_CACHE_SIZE 345 +#define VAR_HARDEN_REFERRAL_PATH 346 +#define VAR_PRIVATE_ADDRESS 347 +#define VAR_PRIVATE_DOMAIN 348 +#define VAR_REMOTE_CONTROL 349 +#define VAR_CONTROL_ENABLE 350 +#define VAR_CONTROL_INTERFACE 351 +#define VAR_CONTROL_PORT 352 +#define VAR_SERVER_KEY_FILE 353 +#define VAR_SERVER_CERT_FILE 354 +#define VAR_CONTROL_KEY_FILE 355 +#define VAR_CONTROL_CERT_FILE 356 +#define VAR_CONTROL_USE_CERT 357 +#define VAR_EXTENDED_STATISTICS 358 +#define VAR_LOCAL_DATA_PTR 359 +#define VAR_JOSTLE_TIMEOUT 360 +#define VAR_STUB_PRIME 361 +#define VAR_UNWANTED_REPLY_THRESHOLD 362 +#define VAR_LOG_TIME_ASCII 363 +#define VAR_DOMAIN_INSECURE 364 +#define VAR_PYTHON 365 +#define VAR_PYTHON_SCRIPT 366 +#define VAR_VAL_SIG_SKEW_MIN 367 +#define VAR_VAL_SIG_SKEW_MAX 368 +#define VAR_CACHE_MIN_TTL 369 +#define VAR_VAL_LOG_LEVEL 370 +#define VAR_AUTO_TRUST_ANCHOR_FILE 371 +#define VAR_KEEP_MISSING 372 +#define VAR_ADD_HOLDDOWN 373 +#define VAR_DEL_HOLDDOWN 374 +#define VAR_SO_RCVBUF 375 +#define VAR_EDNS_BUFFER_SIZE 376 +#define VAR_PREFETCH 377 +#define VAR_PREFETCH_KEY 378 +#define VAR_SO_SNDBUF 379 +#define VAR_SO_REUSEPORT 380 +#define VAR_HARDEN_BELOW_NXDOMAIN 381 +#define VAR_IGNORE_CD_FLAG 382 +#define VAR_LOG_QUERIES 383 +#define VAR_LOG_REPLIES 384 +#define VAR_LOG_LOCAL_ACTIONS 385 +#define VAR_TCP_UPSTREAM 386 +#define VAR_SSL_UPSTREAM 387 +#define VAR_SSL_SERVICE_KEY 388 +#define VAR_SSL_SERVICE_PEM 389 +#define VAR_SSL_PORT 390 +#define VAR_FORWARD_FIRST 391 +#define VAR_STUB_SSL_UPSTREAM 392 +#define VAR_FORWARD_SSL_UPSTREAM 393 +#define VAR_TLS_CERT_BUNDLE 394 +#define VAR_STUB_FIRST 395 +#define VAR_MINIMAL_RESPONSES 396 +#define VAR_RRSET_ROUNDROBIN 397 +#define VAR_MAX_UDP_SIZE 398 +#define VAR_DELAY_CLOSE 399 +#define VAR_UNBLOCK_LAN_ZONES 400 +#define VAR_INSECURE_LAN_ZONES 401 +#define VAR_INFRA_CACHE_MIN_RTT 402 +#define VAR_DNS64_PREFIX 403 +#define VAR_DNS64_SYNTHALL 404 +#define VAR_DNS64_IGNORE_AAAA 405 +#define VAR_DNSTAP 406 +#define VAR_DNSTAP_ENABLE 407 +#define VAR_DNSTAP_SOCKET_PATH 408 +#define VAR_DNSTAP_IP 409 +#define VAR_DNSTAP_TLS 410 +#define VAR_DNSTAP_TLS_SERVER_NAME 411 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 412 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 413 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 414 +#define VAR_DNSTAP_SEND_IDENTITY 415 +#define VAR_DNSTAP_SEND_VERSION 416 +#define VAR_DNSTAP_IDENTITY 417 +#define VAR_DNSTAP_VERSION 418 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 419 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 420 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 424 +#define VAR_RESPONSE_IP_TAG 425 +#define VAR_RESPONSE_IP 426 +#define VAR_RESPONSE_IP_DATA 427 +#define VAR_HARDEN_ALGO_DOWNGRADE 428 +#define VAR_IP_TRANSPARENT 429 +#define VAR_IP_DSCP 430 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 +#define VAR_IP_RATELIMIT 432 +#define VAR_IP_RATELIMIT_SLABS 433 +#define VAR_IP_RATELIMIT_SIZE 434 +#define VAR_RATELIMIT 435 +#define VAR_RATELIMIT_SLABS 436 +#define VAR_RATELIMIT_SIZE 437 +#define VAR_RATELIMIT_FOR_DOMAIN 438 +#define VAR_RATELIMIT_BELOW_DOMAIN 439 +#define VAR_IP_RATELIMIT_FACTOR 440 +#define VAR_RATELIMIT_FACTOR 441 +#define VAR_SEND_CLIENT_SUBNET 442 +#define VAR_CLIENT_SUBNET_ZONE 443 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 +#define VAR_CLIENT_SUBNET_OPCODE 445 +#define VAR_MAX_CLIENT_SUBNET_IPV4 446 +#define VAR_MAX_CLIENT_SUBNET_IPV6 447 +#define VAR_MIN_CLIENT_SUBNET_IPV4 448 +#define VAR_MIN_CLIENT_SUBNET_IPV6 449 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 +#define VAR_CAPS_WHITELIST 452 +#define VAR_CACHE_MAX_NEGATIVE_TTL 453 +#define VAR_PERMIT_SMALL_HOLDDOWN 454 +#define VAR_QNAME_MINIMISATION 455 +#define VAR_QNAME_MINIMISATION_STRICT 456 +#define VAR_IP_FREEBIND 457 +#define VAR_DEFINE_TAG 458 +#define VAR_LOCAL_ZONE_TAG 459 +#define VAR_ACCESS_CONTROL_TAG 460 +#define VAR_LOCAL_ZONE_OVERRIDE 461 +#define VAR_ACCESS_CONTROL_TAG_ACTION 462 +#define VAR_ACCESS_CONTROL_TAG_DATA 463 +#define VAR_VIEW 464 +#define VAR_ACCESS_CONTROL_VIEW 465 +#define VAR_VIEW_FIRST 466 +#define VAR_SERVE_EXPIRED 467 +#define VAR_SERVE_EXPIRED_TTL 468 +#define VAR_SERVE_EXPIRED_TTL_RESET 469 +#define VAR_SERVE_EXPIRED_REPLY_TTL 470 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 +#define VAR_FAKE_DSA 472 +#define VAR_FAKE_SHA1 473 +#define VAR_LOG_IDENTITY 474 +#define VAR_HIDE_TRUSTANCHOR 475 +#define VAR_TRUST_ANCHOR_SIGNALING 476 +#define VAR_AGGRESSIVE_NSEC 477 +#define VAR_USE_SYSTEMD 478 +#define VAR_SHM_ENABLE 479 +#define VAR_SHM_KEY 480 +#define VAR_ROOT_KEY_SENTINEL 481 +#define VAR_DNSCRYPT 482 +#define VAR_DNSCRYPT_ENABLE 483 +#define VAR_DNSCRYPT_PORT 484 +#define VAR_DNSCRYPT_PROVIDER 485 +#define VAR_DNSCRYPT_SECRET_KEY 486 +#define VAR_DNSCRYPT_PROVIDER_CERT 487 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 +#define VAR_PAD_RESPONSES 493 +#define VAR_PAD_RESPONSES_BLOCK_SIZE 494 +#define VAR_PAD_QUERIES 495 +#define VAR_PAD_QUERIES_BLOCK_SIZE 496 +#define VAR_IPSECMOD_ENABLED 497 +#define VAR_IPSECMOD_HOOK 498 +#define VAR_IPSECMOD_IGNORE_BOGUS 499 +#define VAR_IPSECMOD_MAX_TTL 500 +#define VAR_IPSECMOD_WHITELIST 501 +#define VAR_IPSECMOD_STRICT 502 +#define VAR_CACHEDB 503 +#define VAR_CACHEDB_BACKEND 504 +#define VAR_CACHEDB_SECRETSEED 505 +#define VAR_CACHEDB_REDISHOST 506 +#define VAR_CACHEDB_REDISPORT 507 +#define VAR_CACHEDB_REDISTIMEOUT 508 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 509 +#define VAR_FOR_UPSTREAM 510 +#define VAR_AUTH_ZONE 511 +#define VAR_ZONEFILE 512 +#define VAR_MASTER 513 +#define VAR_URL 514 +#define VAR_FOR_DOWNSTREAM 515 +#define VAR_FALLBACK_ENABLED 516 +#define VAR_TLS_ADDITIONAL_PORT 517 +#define VAR_LOW_RTT 518 +#define VAR_LOW_RTT_PERMIL 519 +#define VAR_FAST_SERVER_PERMIL 520 +#define VAR_FAST_SERVER_NUM 521 +#define VAR_ALLOW_NOTIFY 522 +#define VAR_TLS_WIN_CERT 523 +#define VAR_TCP_CONNECTION_LIMIT 524 +#define VAR_FORWARD_NO_CACHE 525 +#define VAR_STUB_NO_CACHE 526 +#define VAR_LOG_SERVFAIL 527 +#define VAR_DENY_ANY 528 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 529 +#define VAR_LOG_TAG_QUERYREPLY 530 +#define VAR_STREAM_WAIT_SIZE 531 +#define VAR_TLS_CIPHERS 532 +#define VAR_TLS_CIPHERSUITES 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#ifdef YYSTYPE +#undef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 #endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, - VAR_FOR_UPSTREAM = 507, - VAR_AUTH_ZONE = 508, - VAR_ZONEFILE = 509, - VAR_MASTER = 510, - VAR_URL = 511, - VAR_FOR_DOWNSTREAM = 512, - VAR_FALLBACK_ENABLED = 513, - VAR_TLS_ADDITIONAL_PORT = 514, - VAR_LOW_RTT = 515, - VAR_LOW_RTT_PERMIL = 516, - VAR_FAST_SERVER_PERMIL = 517, - VAR_FAST_SERVER_NUM = 518, - VAR_ALLOW_NOTIFY = 519, - VAR_TLS_WIN_CERT = 520, - VAR_TCP_CONNECTION_LIMIT = 521, - VAR_FORWARD_NO_CACHE = 522, - VAR_STUB_NO_CACHE = 523, - VAR_LOG_SERVFAIL = 524, - VAR_DENY_ANY = 525, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, - VAR_LOG_TAG_QUERYREPLY = 527, - VAR_STREAM_WAIT_SIZE = 528, - VAR_TLS_CIPHERS = 529, - VAR_TLS_CIPHERSUITES = 530, - VAR_IPSET = 531, - VAR_IPSET_NAME_V4 = 532, - VAR_IPSET_NAME_V6 = 533, - VAR_TLS_SESSION_TICKET_KEYS = 534, - VAR_RPZ = 535, - VAR_TAGS = 536, - VAR_RPZ_ACTION_OVERRIDE = 537, - VAR_RPZ_CNAME_OVERRIDE = 538, - VAR_RPZ_LOG = 539, - VAR_RPZ_LOG_NAME = 540 - }; -#endif -/* Tokens. */ -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 -#define VAR_FOR_UPSTREAM 507 -#define VAR_AUTH_ZONE 508 -#define VAR_ZONEFILE 509 -#define VAR_MASTER 510 -#define VAR_URL 511 -#define VAR_FOR_DOWNSTREAM 512 -#define VAR_FALLBACK_ENABLED 513 -#define VAR_TLS_ADDITIONAL_PORT 514 -#define VAR_LOW_RTT 515 -#define VAR_LOW_RTT_PERMIL 516 -#define VAR_FAST_SERVER_PERMIL 517 -#define VAR_FAST_SERVER_NUM 518 -#define VAR_ALLOW_NOTIFY 519 -#define VAR_TLS_WIN_CERT 520 -#define VAR_TCP_CONNECTION_LIMIT 521 -#define VAR_FORWARD_NO_CACHE 522 -#define VAR_STUB_NO_CACHE 523 -#define VAR_LOG_SERVFAIL 524 -#define VAR_DENY_ANY 525 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 -#define VAR_LOG_TAG_QUERYREPLY 527 -#define VAR_STREAM_WAIT_SIZE 528 -#define VAR_TLS_CIPHERS 529 -#define VAR_TLS_CIPHERSUITES 530 -#define VAR_IPSET 531 -#define VAR_IPSET_NAME_V4 532 -#define VAR_IPSET_NAME_V6 533 -#define VAR_TLS_SESSION_TICKET_KEYS 534 -#define VAR_RPZ 535 -#define VAR_TAGS 536 -#define VAR_RPZ_ACTION_OVERRIDE 537 -#define VAR_RPZ_CNAME_OVERRIDE 538 -#define VAR_RPZ_LOG 539 -#define VAR_RPZ_LOG_NAME 540 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 66 "./util/configparser.y" - +#ifndef YYSTYPE_IS_DECLARED +#define YYSTYPE_IS_DECLARED 1 +typedef union { char* str; - -#line 631 "util/configparser.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - - +} YYSTYPE; +#endif /* !YYSTYPE_IS_DECLARED */ extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ diff --git a/util/configparser.y b/util/configparser.y index f7be1019c..bbefeb431 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -158,6 +158,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS %token VAR_DNSCRYPT_NONCE_CACHE_SIZE %token VAR_DNSCRYPT_NONCE_CACHE_SLABS +%token VAR_PAD_RESPONSES VAR_PAD_RESPONSES_BLOCK_SIZE +%token VAR_PAD_QUERIES VAR_PAD_QUERIES_BLOCK_SIZE %token VAR_IPSECMOD_ENABLED VAR_IPSECMOD_HOOK VAR_IPSECMOD_IGNORE_BOGUS %token VAR_IPSECMOD_MAX_TTL VAR_IPSECMOD_WHITELIST VAR_IPSECMOD_STRICT %token VAR_CACHEDB VAR_CACHEDB_BACKEND VAR_CACHEDB_SECRETSEED @@ -2307,6 +2309,44 @@ server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG free($2); } ; +server_pad_responses: VAR_PAD_RESPONSES STRING_ARG + { + OUTYY(("P(server_pad_responses:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_responses = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_responses_block_size: VAR_PAD_RESPONSES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_responses_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_responses_block_size = atoi($2); + free($2); + } + ; +server_pad_queries: VAR_PAD_QUERIES STRING_ARG + { + OUTYY(("P(server_pad_queries:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->pad_queries = + (strcmp($2, "yes")==0); + free($2); + } + ; +server_pad_queries_block_size: VAR_PAD_QUERIES_BLOCK_SIZE STRING_ARG + { + OUTYY(("P(server_pad_queries_block_size:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("number expected"); + else cfg_parser->cfg->pad_queries_block_size = atoi($2); + free($2); + } + ; server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG { #ifdef USE_IPSECMOD diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..debb9eed1 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -798,14 +798,14 @@ calc_edns_field_size(struct edns_data* edns) return 1 + 2 + 2 + 4 + 2 + rdatalen; } -void -attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +static void +attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, + uint16_t max_msg_sz) { size_t len; size_t rdatapos; struct edns_option* opt; - if(!edns || !edns->edns_present) - return; + struct edns_option* padding_option = NULL; /* inc additional count */ sldns_buffer_write_u16_at(pkt, 10, sldns_buffer_read_u16_at(pkt, 10) + 1); @@ -823,17 +823,53 @@ attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) sldns_buffer_write_u16(pkt, 0); /* rdatalen */ /* write rdata */ for(opt=edns->opt_list; opt; opt=opt->next) { + if (opt->opt_code == LDNS_EDNS_PADDING) { + padding_option = opt; + continue; + } sldns_buffer_write_u16(pkt, opt->opt_code); sldns_buffer_write_u16(pkt, opt->opt_len); if(opt->opt_len != 0) sldns_buffer_write(pkt, opt->opt_data, opt->opt_len); } + if (padding_option && edns->padding_block_size ) { + size_t pad_pos = sldns_buffer_position(pkt); + size_t msg_sz = ((pad_pos + 3) / edns->padding_block_size + 1) + * edns->padding_block_size; + size_t pad_sz; + + if (msg_sz > max_msg_sz) + msg_sz = max_msg_sz; + + /* By use of calc_edns_field_size, calling functions should + * have made sure that there is enough space for at least a + * zero sized padding option, but it cannot harm to leave it + * out if there isn't. + */ + log_assert(pad_pos + 4 <= msg_sz); + + pad_sz = msg_sz - pad_pos - 4; + sldns_buffer_write_u16(pkt, LDNS_EDNS_PADDING); + sldns_buffer_write_u16(pkt, pad_sz); + if (pad_sz) { + memset(sldns_buffer_current(pkt), 0, pad_sz); + sldns_buffer_skip(pkt, pad_sz); + } + } if(edns->opt_list) sldns_buffer_write_u16_at(pkt, rdatapos, sldns_buffer_position(pkt)-rdatapos-2); sldns_buffer_flip(pkt); } +void +attach_edns_record(sldns_buffer* pkt, struct edns_data* edns) +{ + if(!edns || !edns->edns_present) + return; + attach_edns_record_max_msg_sz(pkt, edns, edns->udp_size); +} + int reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, uint16_t id, uint16_t qflags, sldns_buffer* pkt, time_t timenow, @@ -882,7 +918,7 @@ reply_info_answer_encode(struct query_info* qinf, struct reply_info* rep, } if(attach_edns && sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+attach_edns) - attach_edns_record(pkt, edns); + attach_edns_record_max_msg_sz(pkt, edns, udpsize+attach_edns); return 1; } diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fb3123703..d553472bf 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -1016,6 +1016,7 @@ parse_extract_edns(struct msg_parse* msg, struct edns_data* edns, edns->bits = sldns_read_uint16(&found->rr_last->ttl_data[2]); edns->udp_size = ntohs(found->rrset_class); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = found->rr_first->size-2; @@ -1089,6 +1090,7 @@ parse_edns_from_pkt(sldns_buffer* pkt, struct edns_data* edns, edns->edns_version = sldns_buffer_read_u8(pkt); edns->bits = sldns_buffer_read_u16(pkt); edns->opt_list = NULL; + edns->padding_block_size = 0; /* take the options */ rdata_len = sldns_buffer_read_u16(pkt); diff --git a/util/data/msgparse.h b/util/data/msgparse.h index fd04f9f6f..533130c79 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -225,6 +225,8 @@ struct edns_data { uint16_t udp_size; /** rdata element list, or NULL if none */ struct edns_option* opt_list; + /** block size to pad */ + uint16_t padding_block_size; }; /** diff --git a/util/edns.c b/util/edns.c index d19952df0..8376fb1c5 100644 --- a/util/edns.c +++ b/util/edns.c @@ -79,5 +79,15 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, !edns_keepalive(edns_out, edns_in, c, region)) return 0; + if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl + || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) + ; /* pass */ + + else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING + , 0, NULL, region)) + return 0; + else + edns_out->padding_block_size = cfg->pad_responses_block_size; + return 1; } diff --git a/validator/autotrust.c b/validator/autotrust.c index fd9fb3cf1..7ce07e0d8 100644 --- a/validator/autotrust.c +++ b/validator/autotrust.c @@ -2365,6 +2365,7 @@ probe_anchor(struct module_env* env, struct trust_anchor* tp) edns.edns_version = 0; edns.bits = EDNS_DO; edns.opt_list = NULL; + edns.padding_block_size = 0; if(sldns_buffer_capacity(buf) < 65535) edns.udp_size = (uint16_t)sldns_buffer_capacity(buf); else edns.udp_size = 65535; From 2c8a91c2f9de8a4bfde7ef0567c317ff1301b382 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 14 Apr 2020 08:52:51 +0200 Subject: [PATCH 010/394] pad-queries default yes --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- util/config_file.c | 2 +- util/data/msgencode.c | 3 +-- 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index ff68db014..ac282950f 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -771,7 +771,7 @@ server: # tls-win-cert: no # Pad queries over TLS upstreams - # pad-queries: no + # pad-queries: yes # Padded queries will be padded to the closest multiple of this size. # pad-queries-block-size: 128 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 12c2b20f6..107ccb938 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -560,7 +560,7 @@ Default is 468. .B pad\-queries: \fI If enabled, all queries sent over TLS upstreams will be padded to the closest multiple of the size specified in \fBpad\-queries\-block\-size\fR. -Default is no. +Default is yes. .TP .B pad\-queries\-block\-size: \fI The block size with which to pad queries sent over TLS upstreams. diff --git a/util/config_file.c b/util/config_file.c index 7f7f2dc22..1071f9a7b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -324,7 +324,7 @@ config_create(void) cfg->dnscrypt_nonce_cache_slabs = 4; cfg->pad_responses = 1; cfg->pad_responses_block_size = 468; /* from RFC8467 */ - cfg->pad_queries = 0; + cfg->pad_queries = 1; cfg->pad_queries_block_size = 128; /* from RFC8467 */ #ifdef USE_IPSECMOD cfg->ipsecmod_enabled = 1; diff --git a/util/data/msgencode.c b/util/data/msgencode.c index debb9eed1..49e48954b 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -843,8 +843,7 @@ attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data* edns, /* By use of calc_edns_field_size, calling functions should * have made sure that there is enough space for at least a - * zero sized padding option, but it cannot harm to leave it - * out if there isn't. + * zero sized padding option. */ log_assert(pad_pos + 4 <= msg_sz); From 055f5e68a3b200a40a9572edd1c5b28a2ae29a9c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 22 Apr 2020 16:29:06 +0200 Subject: [PATCH 011/394] Add infra-keep-probing: yes option. Hosts that are down are probed more frequently. --- doc/example.conf.in | 3 + doc/unbound.conf.5.in | 6 + services/cache/infra.c | 28 +- services/cache/infra.h | 2 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 4279 ++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 3023 ++++++++++++++-------------- util/configparser.h | 560 +++--- util/configparser.y | 14 +- 11 files changed, 4001 insertions(+), 3920 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index a1a687422..2e1db9181 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -188,6 +188,9 @@ server: # minimum wait time for responses, increase if uplink is long. In msec. # infra-cache-min-rtt: 50 + # enable to make server probe down hosts more frequently. + # infra-keep-probing: no + # the number of slabs to use for the Infrastructure cache. # the number of slabs must be a power of 2. # more slabs reduce lock contention, but fragment memory usage. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 37692db5e..e178238e4 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -376,6 +376,12 @@ Lower limit for dynamic retransmit timeout calculation in infrastructure cache. Default is 50 milliseconds. Increase this value if using forwarders needing more time to do recursive name resolution. .TP +.B infra\-keep\-probing: \fI +If enabled the server keeps probing hosts that are down, in the one probe +at a time regime. Default is no. Hosts that are down, eg. they did +not respond during the one probe at a time period, are marked as down and +it may take \fBinfra\-host\-ttl\fR time to get probed again. +.TP .B define\-tag: \fI<"list of tags"> Define the tags that can be used with local\-zone and access\-control. Enclose the list between quotes ("") and put spaces between tags. diff --git a/services/cache/infra.c b/services/cache/infra.c index c2484a9f1..2d16bcd6e 100644 --- a/services/cache/infra.c +++ b/services/cache/infra.c @@ -244,6 +244,7 @@ infra_create(struct config_file* cfg) return NULL; } infra->host_ttl = cfg->host_ttl; + infra->infra_keep_probing = cfg->infra_keep_probing; infra_dp_ratelimit = cfg->ratelimit; infra->domain_rates = slabhash_create(cfg->ratelimit_slabs, INFRA_HOST_STARTSIZE, cfg->ratelimit_size, @@ -297,6 +298,7 @@ infra_adjust(struct infra_cache* infra, struct config_file* cfg) if(!infra) return infra_create(cfg); infra->host_ttl = cfg->host_ttl; + infra->infra_keep_probing = cfg->infra_keep_probing; infra_dp_ratelimit = cfg->ratelimit; infra_ip_ratelimit = cfg->ip_ratelimit; maxmem = cfg->infra_cache_numhosts * (sizeof(struct infra_key)+ @@ -445,6 +447,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, if(e && ((struct infra_data*)e->data)->ttl < timenow) { /* it expired, try to reuse existing entry */ int old = ((struct infra_data*)e->data)->rtt.rto; + time_t tprobe = ((struct infra_data*)e->data)->probedelay; uint8_t tA = ((struct infra_data*)e->data)->timeout_A; uint8_t tAAAA = ((struct infra_data*)e->data)->timeout_AAAA; uint8_t tother = ((struct infra_data*)e->data)->timeout_other; @@ -460,6 +463,7 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, if(old >= USEFUL_SERVER_TOP_TIMEOUT) { ((struct infra_data*)e->data)->rtt.rto = USEFUL_SERVER_TOP_TIMEOUT; + ((struct infra_data*)e->data)->probedelay = tprobe; ((struct infra_data*)e->data)->timeout_A = tA; ((struct infra_data*)e->data)->timeout_AAAA = tAAAA; ((struct infra_data*)e->data)->timeout_other = tother; @@ -482,7 +486,8 @@ infra_host(struct infra_cache* infra, struct sockaddr_storage* addr, *edns_vs = data->edns_version; *edns_lame_known = data->edns_lame_known; *to = rtt_timeout(&data->rtt); - if(*to >= PROBE_MAXRTO && rtt_notimeout(&data->rtt)*4 <= *to) { + if(*to >= PROBE_MAXRTO && (infra->infra_keep_probing || + rtt_notimeout(&data->rtt)*4 <= *to)) { /* delay other queries, this is the probe query */ if(!wr) { lock_rw_unlock(&e->lock); @@ -566,18 +571,27 @@ infra_rtt_update(struct infra_cache* infra, struct sockaddr_storage* addr, struct lruhash_entry* e = infra_lookup_nottl(infra, addr, addrlen, nm, nmlen, 1); struct infra_data* data; - int needtoinsert = 0; + int needtoinsert = 0, expired = 0; int rto = 1; + time_t oldprobedelay = 0; if(!e) { if(!(e = new_entry(infra, addr, addrlen, nm, nmlen, timenow))) return 0; needtoinsert = 1; } else if(((struct infra_data*)e->data)->ttl < timenow) { + oldprobedelay = ((struct infra_data*)e->data)->probedelay; data_entry_init(infra, e, timenow); + expired = 1; } /* have an entry, update the rtt */ data = (struct infra_data*)e->data; if(roundtrip == -1) { + if(needtoinsert || expired) { + /* timeout on entry that has expired before the timer + * keep old timeout from the function caller */ + data->rtt.rto = orig_rtt; + data->probedelay = oldprobedelay; + } rtt_lost(&data->rtt, orig_rtt); if(qtype == LDNS_RR_TYPE_A) { if(data->timeout_A < TIMEOUT_COUNT_MAX) @@ -681,7 +695,12 @@ infra_get_lame_rtt(struct infra_cache* infra, return 0; host = (struct infra_data*)e->data; *rtt = rtt_unclamped(&host->rtt); - if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay + if(host->rtt.rto >= PROBE_MAXRTO && timenow >= host->probedelay + && infra->infra_keep_probing) { + /* single probe, keep probing */ + if(*rtt >= USEFUL_SERVER_TOP_TIMEOUT) + *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; + } else if(host->rtt.rto >= PROBE_MAXRTO && timenow < host->probedelay && rtt_notimeout(&host->rtt)*4 <= host->rtt.rto) { /* single probe for this domain, and we are not probing */ /* unless the query type allows a probe to happen */ @@ -704,7 +723,8 @@ infra_get_lame_rtt(struct infra_cache* infra, /* see if this can be a re-probe of an unresponsive server */ /* minus 1000 because that is outside of the RTTBAND, so * blacklisted servers stay blacklisted if this is chosen */ - if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT) { + if(host->rtt.rto >= USEFUL_SERVER_TOP_TIMEOUT || + infra->infra_keep_probing) { lock_rw_unlock(&e->lock); *rtt = USEFUL_SERVER_TOP_TIMEOUT-1000; *lame = 0; diff --git a/services/cache/infra.h b/services/cache/infra.h index e33f2a6c0..14f97c4c6 100644 --- a/services/cache/infra.h +++ b/services/cache/infra.h @@ -114,6 +114,8 @@ struct infra_cache { struct slabhash* hosts; /** TTL value for host information, in seconds */ int host_ttl; + /** the hosts that are down are kept probed for recovery */ + int infra_keep_probing; /** hash table with query rates per name: rate_key, rate_data */ struct slabhash* domain_rates; /** ratelimit settings for domains, struct domain_limit_data */ diff --git a/util/config_file.c b/util/config_file.c index 2a809f875..7ae0f384b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -162,6 +162,7 @@ config_create(void) cfg->infra_cache_slabs = 4; cfg->infra_cache_numhosts = 10000; cfg->infra_cache_min_rtt = 50; + cfg->infra_keep_probing = 0; cfg->delay_close = 0; if(!(cfg->outgoing_avail_ports = (int*)calloc(65536, sizeof(int)))) goto error_exit; @@ -544,6 +545,7 @@ int config_set_option(struct config_file* cfg, const char* opt, IS_NUMBER_OR_ZERO; cfg->infra_cache_min_rtt = atoi(val); RTT_MIN_TIMEOUT=cfg->infra_cache_min_rtt; } + else S_YNO("infra-keep-probing:", infra_keep_probing) else S_NUMBER_OR_ZERO("infra-host-ttl:", host_ttl) else S_POW2("infra-cache-slabs:", infra_cache_slabs) else S_SIZET_NONZERO("infra-cache-numhosts:", infra_cache_numhosts) @@ -940,6 +942,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "infra-host-ttl", host_ttl) else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs) else O_DEC(opt, "infra-cache-min-rtt", infra_cache_min_rtt) + else O_YNO(opt, "infra-keep-probing", infra_keep_probing) else O_MEM(opt, "infra-cache-numhosts", infra_cache_numhosts) else O_UNS(opt, "delay-close", delay_close) else O_YNO(opt, "do-ip4", do_ip4) diff --git a/util/config_file.h b/util/config_file.h index cc3fe4ae1..f422bf75a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -166,6 +166,8 @@ struct config_file { size_t infra_cache_numhosts; /** min value for infra cache rtt */ int infra_cache_min_rtt; + /** keep probing hosts that are down */ + int infra_keep_probing; /** delay close of udp-timeouted ports, if 0 no delayclose. in msec */ int delay_close; diff --git a/util/configlexer.c b/util/configlexer.c index 09fd4b003..279dee6d2 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 312 -#define YY_END_OF_BUFFER 313 +#define YY_NUM_RULES 313 +#define YY_END_OF_BUFFER 314 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,345 +363,347 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3071] = +static const flex_int16_t yy_accept[3084] = { 0, - 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 313, 310, 1, 292, 292, 311, 2, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 294, 295, 295, 296, 311, 298, 299, 299, - 300, 311, 305, 302, 303, 303, 304, 311, 306, 307, - 307, 308, 311, 309, 293, 2, 297, 311, 309, 310, - 0, 1, 2, 2, 2, 2, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 1, 1, 295, 295, 299, 299, 303, 303, 307, 307, + 1, 1, 314, 311, 1, 293, 293, 312, 2, 312, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 295, 296, 296, 297, 312, 299, 300, 300, + 301, 312, 306, 303, 304, 304, 305, 312, 307, 308, + 308, 309, 312, 310, 294, 2, 298, 312, 310, 311, + 0, 1, 2, 2, 2, 2, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 294, 0, 298, 0, 305, 0, 302, 306, 0, 309, - 0, 2, 2, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 295, 0, 299, 0, 306, 0, 303, 307, 0, 310, + 0, 2, 2, 310, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 310, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 115, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 123, 310, 310, 310, - 310, 310, 310, 310, 309, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 116, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 124, 311, 311, 311, + 311, 311, 311, 311, 310, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 99, 310, 310, 310, 310, 310, 310, 8, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 116, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 128, 310, 309, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 100, 311, 311, 311, 311, 311, 311, 8, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 117, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 129, 311, 310, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 287, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 288, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 57, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 225, 310, 14, 15, 310, - 19, 18, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 310, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 57, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 226, 311, 14, 15, 311, + 19, 18, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 122, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 209, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 3, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 123, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 210, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 3, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 309, 310, 310, 310, 310, 310, 310, 310, 281, 310, - 310, 280, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 301, 310, 310, - 310, 310, 310, 310, 310, 56, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 310, 311, 311, 311, 311, 311, 311, 311, 282, + 311, 311, 281, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 302, 311, + 311, 311, 311, 311, 311, 311, 311, 56, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 60, 310, 255, 310, 310, 310, 310, 310, - 310, 310, 310, 288, 289, 310, 310, 310, 310, 310, - 61, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 119, 310, 310, - 310, 310, 310, 310, 310, 310, 198, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 21, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 60, 311, 256, 311, 311, 311, + 311, 311, 311, 311, 311, 289, 290, 311, 311, 311, + 311, 311, 61, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 120, + 311, 311, 311, 311, 311, 311, 311, 311, 199, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 21, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 147, 310, 310, 301, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 97, 310, 310, 310, 310, 310, 310, 310, 263, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 170, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 146, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 148, 311, + 311, 302, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 98, 311, 311, 311, 311, 311, 311, 311, + 264, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 171, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 147, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 96, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 32, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 33, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 58, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 121, 310, 310, 310, 310, 310, 114, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 97, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 32, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 33, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 58, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 122, 311, 311, 311, 311, 311, 115, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 59, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 228, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 171, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 47, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 59, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 229, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 172, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 47, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 246, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 51, 310, 52, 310, 310, 310, 310, - 310, 100, 310, 101, 310, 310, 310, 310, 98, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 7, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 218, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 247, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 51, 311, 52, + 311, 311, 311, 311, 311, 101, 311, 102, 311, 311, + 311, 311, 99, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 7, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 149, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 229, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 48, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 190, 310, 189, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 16, 17, 310, 310, + 219, 311, 311, 311, 311, 150, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 230, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 48, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 191, 311, 190, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 62, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 197, 310, 310, 310, 310, 310, 310, - 103, 310, 102, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 181, 310, 310, 310, 310, 310, - 310, 310, 310, 129, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 81, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 16, 17, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 62, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 198, 311, + 311, 311, 311, 311, 311, 104, 311, 103, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 182, + 311, 311, 311, 311, 311, 311, 311, 311, 130, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 82, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 85, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 55, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 184, 185, 310, - 310, 310, 257, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 6, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 261, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 86, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 55, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 185, 186, 311, 311, 311, 258, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 6, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 310, 310, 310, 310, 282, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 42, 310, 310, 310, 310, - 44, 310, 310, 310, 310, 310, 310, 310, 310, 45, - 310, 310, 310, 310, 310, 310, 310, 310, 177, 310, - 310, 310, 124, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 202, 310, 178, 310, 310, 310, 215, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 46, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 126, + 311, 311, 311, 262, 311, 311, 311, 311, 311, 311, + 283, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 42, 311, 311, 311, 311, 44, 311, 311, 311, + 311, 311, 311, 311, 311, 45, 311, 311, 311, 311, + 311, 311, 311, 311, 178, 311, 311, 311, 125, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 203, + 311, 179, 311, 311, 311, 216, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 46, 311, 311, 311, 311, - 108, 310, 109, 310, 310, 310, 107, 310, 310, 310, - 310, 310, 310, 310, 310, 144, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 245, 310, 310, - 310, 310, 310, 310, 310, 310, 179, 310, 310, 310, - 310, 310, 182, 310, 188, 310, 310, 310, 310, 310, - 214, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 95, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 120, 310, 310, 310, 310, 310, - 310, 53, 310, 310, 310, 26, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 127, 109, 311, 110, 311, + 311, 311, 108, 311, 311, 311, 311, 311, 311, 311, + 311, 145, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 246, 311, 311, 311, 311, 311, + 311, 311, 311, 180, 311, 311, 311, 311, 311, 183, + 311, 189, 311, 311, 311, 311, 311, 215, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 96, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 121, 311, 311, 311, 311, 311, 311, 53, 311, - 310, 310, 310, 310, 310, 20, 310, 310, 310, 310, - 310, 310, 27, 36, 310, 154, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 70, 72, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 265, 310, 310, 310, 226, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 110, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 143, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 26, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 20, 311, 311, 311, 311, 311, 311, 27, + 36, 311, 155, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 70, 72, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 266, 311, 311, + 311, 227, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 111, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 144, 311, 311, 311, 311, 311, 311, - 310, 310, 276, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 148, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 208, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 285, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 165, 310, 310, - 310, 310, 310, 310, 310, 310, 104, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 160, 310, 172, 310, - 310, 310, 310, 310, 132, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 277, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 149, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 209, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 286, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 166, 311, 311, 311, 311, + 311, 311, 311, 311, 105, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 161, 311, 173, 311, 311, 311, - 91, 310, 310, 310, 310, 200, 310, 310, 310, 310, - 310, 310, 216, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 237, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 125, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 164, - 310, 310, 310, 310, 310, 73, 74, 310, 310, 310, - 310, 310, 54, 310, 310, 310, 310, 310, 80, 173, - 310, 191, 310, 219, 310, 310, 183, 258, 310, 310, - 310, 310, 310, 66, 310, 175, 310, 310, 310, 310, - 310, 9, 310, 310, 310, 94, 310, 310, 310, 310, + 311, 311, 133, 311, 311, 311, 311, 311, 92, 311, + 311, 311, 311, 201, 311, 311, 311, 311, 311, 311, + 217, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 238, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 126, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 165, 311, 311, + 311, 311, 311, 73, 311, 74, 311, 311, 311, 311, + 311, 54, 311, 311, 311, 311, 311, 81, 174, 311, + 192, 311, 220, 311, 311, 184, 259, 311, 311, 311, + 311, 311, 66, 311, 176, 311, 311, 311, 311, 311, - 250, 310, 310, 310, 310, 199, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 163, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 150, 310, 264, 310, - 310, 310, 310, 236, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 210, 310, 310, 310, 310, - 256, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 9, 311, 311, 311, 95, 311, 311, 311, 311, 251, + 311, 311, 311, 311, 200, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 164, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 151, 311, 265, 311, 311, + 311, 311, 237, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 211, 311, 311, 311, 311, 257, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 279, 310, 174, 310, 310, - 310, 310, 310, 310, 310, 65, 67, 310, 310, 310, - 310, 310, 310, 310, 93, 310, 310, 310, 310, 248, - 310, 310, 310, 310, 260, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 204, 34, 28, 30, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 35, - 310, 29, 31, 310, 310, 310, 310, 310, 310, 310, - 310, 90, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 206, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 280, 311, 175, 311, 311, + 311, 311, 311, 311, 311, 65, 67, 311, 311, 311, + 311, 311, 311, 311, 94, 311, 311, 311, 311, 249, + 311, 311, 311, 311, 261, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 205, 34, 28, 30, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 35, + 311, 29, 31, 311, 311, 311, 311, 311, 311, 311, + 311, 91, 311, 311, 311, 311, 311, 311, 311, 311, - 203, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 64, 310, - 310, 127, 310, 111, 310, 310, 310, 310, 310, 310, - 310, 310, 145, 13, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 274, 310, 277, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 12, 310, 310, 22, - 310, 310, 310, 254, 310, 310, 310, 310, 262, 310, - 310, 310, 68, 310, 212, 310, 310, 310, 310, 205, - 310, 310, 63, 310, 310, 310, 310, 23, 310, 43, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 207, + 204, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 64, 311, + 311, 128, 311, 112, 311, 311, 311, 311, 311, 311, + 311, 311, 146, 13, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 275, 311, 278, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 12, 311, 311, + 22, 311, 311, 311, 255, 311, 311, 311, 311, 263, + 311, 311, 311, 68, 311, 213, 311, 311, 311, 311, + 206, 311, 311, 63, 311, 311, 311, 311, 23, 311, - 310, 310, 159, 158, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 207, 201, 310, 217, 310, 310, 266, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 75, 310, 310, - 310, 249, 310, 310, 310, 310, 187, 310, 310, 310, - 310, 211, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 283, 284, 156, 310, 310, 69, 310, 310, 310, - 310, 166, 310, 310, 105, 106, 310, 310, 310, 310, - 151, 310, 153, 310, 192, 310, 310, 310, 310, 157, + 43, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 160, 159, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 208, 202, 311, 218, 311, 311, + 267, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 75, 311, + 311, 311, 311, 250, 311, 311, 311, 311, 188, 311, + 311, 311, 311, 212, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 284, 285, 157, 311, 311, 69, 311, + 311, 311, 311, 167, 311, 311, 106, 107, 311, 311, - 310, 310, 220, 310, 310, 310, 310, 310, 310, 310, - 134, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 227, 310, 310, 310, 310, 310, 310, 310, - 24, 310, 259, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 193, 310, 310, 247, 310, 278, - 310, 186, 310, 310, 310, 310, 49, 310, 310, 310, - 310, 4, 310, 310, 310, 310, 118, 133, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 223, 37, 38, 310, - 310, 310, 310, 310, 310, 310, 267, 310, 310, 310, + 311, 311, 152, 311, 154, 311, 193, 311, 311, 311, + 311, 158, 311, 311, 221, 311, 311, 311, 311, 311, + 311, 311, 135, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 228, 311, 311, 311, 311, 311, + 311, 311, 24, 311, 260, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 79, 194, 311, 311, + 248, 311, 279, 311, 187, 311, 311, 311, 311, 49, + 311, 311, 311, 311, 4, 311, 311, 311, 311, 119, + 134, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 224, - 310, 310, 310, 235, 310, 310, 310, 310, 310, 310, - 310, 196, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 78, 310, 50, 253, 310, 224, 310, 310, 310, - 310, 11, 310, 310, 310, 310, 310, 310, 117, 310, - 310, 310, 310, 194, 82, 310, 40, 310, 310, 310, - 310, 310, 310, 310, 310, 162, 310, 310, 310, 310, - 310, 136, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 234, 310, 310, 310, 310, 130, 310, 310, 112, - 113, 310, 310, 310, 84, 88, 83, 310, 76, 310, - 310, 310, 310, 310, 10, 310, 310, 310, 251, 286, + 37, 38, 311, 311, 311, 311, 311, 311, 311, 268, + 311, 311, 311, 311, 311, 311, 236, 311, 311, 311, + 311, 311, 311, 311, 197, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 78, 311, 50, 254, 311, 225, + 311, 311, 311, 311, 11, 311, 311, 311, 311, 311, + 311, 118, 311, 311, 311, 311, 195, 83, 311, 40, + 311, 311, 311, 311, 311, 311, 311, 311, 163, 311, + 311, 311, 311, 311, 137, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 235, 311, 311, 311, 311, 131, + 311, 311, 113, 114, 311, 311, 311, 85, 89, 84, - 310, 310, 310, 310, 291, 39, 310, 310, 310, 310, - 310, 161, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 89, 87, 310, 77, 275, 310, - 310, 310, 310, 310, 310, 310, 180, 310, 310, 310, - 310, 310, 195, 310, 310, 310, 310, 310, 310, 310, - 310, 152, 71, 310, 310, 310, 310, 310, 268, 310, - 310, 310, 310, 310, 310, 310, 231, 310, 310, 230, - 131, 310, 86, 137, 138, 141, 142, 139, 140, 79, - 310, 252, 310, 310, 310, 310, 155, 310, 310, 310, + 311, 76, 311, 311, 311, 311, 311, 10, 311, 311, + 311, 252, 287, 311, 311, 311, 311, 292, 39, 311, + 311, 311, 311, 311, 162, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 90, 88, 311, + 77, 276, 311, 311, 311, 311, 311, 311, 311, 181, + 311, 311, 311, 311, 311, 196, 311, 311, 311, 311, + 311, 311, 311, 311, 153, 71, 311, 311, 311, 311, + 311, 269, 311, 311, 311, 311, 311, 311, 311, 232, + 311, 311, 231, 132, 311, 87, 138, 139, 142, 143, - 310, 310, 222, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 168, 167, 41, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 92, 310, 221, - 310, 244, 272, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 5, 310, 310, 213, 310, - 310, 273, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 232, 25, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 233, 310, 310, 310, 135, + 140, 141, 80, 311, 253, 311, 311, 311, 311, 156, + 311, 311, 311, 311, 311, 223, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 169, 168, 41, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 93, 311, 222, 311, 245, 273, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 5, 311, + 311, 214, 311, 311, 274, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 233, 25, 311, 311, 311, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 169, 310, - 176, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 269, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 290, 310, - 310, 240, 310, 310, 310, 310, 310, 270, 310, 310, - 310, 310, 310, 310, 271, 310, 310, 310, 238, 310, - 241, 242, 310, 310, 310, 310, 310, 239, 243, 0 + 311, 311, 311, 311, 311, 311, 311, 311, 234, 311, + 311, 311, 136, 311, 311, 311, 311, 311, 311, 311, + 311, 170, 311, 177, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 270, 311, 311, 311, 311, 311, 311, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 311, 291, 311, 311, 241, 311, 311, 311, 311, 311, + 271, 311, 311, 311, 311, 311, 311, 272, 311, 311, + 311, 239, 311, 242, 243, 311, 311, 311, 311, 311, + 240, 244, 0 } ; static const YY_CHAR yy_ec[256] = @@ -744,15 +746,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3085] = +static const flex_int16_t yy_base[3098] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2197, 2057, 81, 5988, 5988, 5988, 96, 52, + 90, 112, 2237, 1788, 81, 6010, 6010, 6010, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1959, 5988, 5988, 5988, 107, 1846, 5988, 5988, - 5988, 165, 1569, 1315, 5988, 5988, 5988, 211, 1269, 5988, - 5988, 5988, 180, 948, 5988, 217, 5988, 221, 168, 767, + 189, 152, 1748, 6010, 6010, 6010, 107, 1464, 6010, 6010, + 6010, 165, 1434, 1375, 6010, 6010, 6010, 211, 1257, 6010, + 6010, 6010, 180, 948, 6010, 217, 6010, 221, 168, 767, 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, @@ -781,9 +783,9 @@ static const flex_int16_t yy_base[3085] = 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5988, 760, 773, 771, 774, + 756, 757, 761, 768, 769, 6010, 760, 773, 771, 774, 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5988, 815, 807, 849, + 825, 791, 801, 804, 814, 795, 6010, 815, 807, 849, 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, @@ -793,644 +795,648 @@ static const flex_int16_t yy_base[3085] = 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5988, 1007, 1009, 1011, 1012, 1013, 1010, 5988, 1014, 1015, + 6010, 1007, 1009, 1011, 1012, 1013, 1010, 6010, 1014, 1015, 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5988, 1071, 1077, 1080, + 1061, 1064, 1065, 1068, 1070, 1088, 6010, 1071, 1077, 1080, 1079, 1085, 1082, 1090, 1097, 1100, 1103, 1106, 1116, 1093, 1117, 1111, 1113, 1072, 1118, 1123, 1125, 1126, 1127, 1128, - 1129, 1130, 1132, 1131, 1137, 1139, 5988, 1144, 1154, 1155, + 1129, 1130, 1132, 1131, 1137, 1139, 6010, 1144, 1154, 1155, 1136, 1146, 1156, 1157, 1159, 1160, 1162, 1163, 1165, 1164, 1169, 1179, 1170, 1183, 1180, 1181, 1185, 1186, 1188, 1187, 1189, 1191, 1203, 1196, 1195, 1211, 1206, 1213, 1215, 1222, 1204, 1217, 1218, 1219, 1221, 1224, 1226, 1228, 1230, 1232, - 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1246, - 1254, 1257, 1247, 1266, 1267, 1260, 1258, 5988, 1276, 1268, - 1278, 1279, 1280, 1284, 1286, 1282, 1288, 813, 1289, 1290, - 1292, 1294, 1299, 1296, 1297, 1300, 1304, 1307, 1311, 1318, - 1322, 1323, 1324, 1310, 1325, 1333, 1330, 1337, 1338, 1340, - 1348, 1336, 1343, 1346, 1350, 1334, 1352, 1354, 1355, 1357, + 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1254, + 1246, 1255, 1258, 1263, 1266, 1267, 1260, 6010, 1276, 1269, + 1277, 1279, 1282, 1285, 1284, 1286, 1290, 813, 1291, 1292, + 1293, 1295, 1298, 1296, 1300, 1301, 1299, 1309, 1306, 1314, + 1321, 1320, 1322, 1324, 1325, 1332, 1328, 1335, 1331, 1336, + 1344, 1337, 1340, 1346, 1354, 1330, 1347, 1352, 1355, 1358, - 1360, 1368, 1369, 1362, 1372, 1379, 1380, 1364, 1382, 1376, - 1383, 1314, 1370, 1387, 1390, 1391, 1398, 1393, 1394, 1399, - 1400, 1401, 1402, 1396, 1407, 1410, 1406, 1412, 1413, 1416, - 1423, 1418, 1417, 1425, 1426, 1428, 1429, 1437, 1430, 1438, - 1439, 1441, 1440, 1448, 1446, 1449, 1450, 1457, 1455, 1459, - 1456, 1465, 1467, 1469, 1471, 1472, 1473, 1475, 1474, 1478, - 1484, 1477, 1483, 1489, 1493, 1490, 1495, 1496, 1499, 1500, - 5988, 1501, 1508, 1503, 1506, 1512, 1513, 1514, 1521, 1517, - 1519, 1516, 1518, 1522, 1544, 5988, 1530, 5988, 5988, 1529, - 5988, 5988, 1527, 1531, 1535, 1548, 1539, 1554, 1547, 1541, + 1360, 1361, 1368, 1369, 1371, 1378, 1373, 1345, 1380, 1383, + 1384, 1385, 1387, 1388, 1389, 1390, 1397, 1392, 1395, 1394, + 1398, 1393, 1399, 1400, 1401, 1420, 1407, 1415, 1417, 1419, + 1422, 1423, 1424, 1425, 1428, 1429, 1430, 1431, 1432, 1449, + 1437, 1439, 1444, 1452, 1451, 1442, 1455, 1459, 1460, 1462, + 1470, 1471, 1454, 1473, 1474, 1463, 1478, 1479, 1481, 1482, + 1484, 1489, 1490, 1492, 1494, 1493, 1496, 1497, 1501, 1502, + 6010, 1504, 1515, 1505, 1512, 1510, 1513, 1517, 1524, 1519, + 1521, 1526, 1520, 1529, 1550, 6010, 1531, 6010, 6010, 1530, + 6010, 6010, 1532, 1533, 1536, 1553, 1542, 1560, 1537, 1540, - 1557, 1550, 1567, 1572, 1528, 1560, 1562, 1568, 1575, 1583, - 1585, 1586, 1588, 1594, 1596, 1597, 1599, 1606, 1607, 1565, - 1589, 1598, 1610, 1612, 1611, 1613, 1617, 1615, 1620, 1616, - 1623, 1618, 1628, 1633, 1625, 1642, 5988, 1639, 1643, 1651, - 1647, 1654, 1646, 1650, 1653, 1627, 1658, 1655, 1659, 1660, - 1662, 1664, 1667, 1670, 1668, 1678, 1671, 5988, 1673, 1675, - 1674, 1680, 1686, 1688, 1687, 1689, 1681, 1693, 1694, 1705, - 1696, 1700, 1701, 1708, 1709, 1710, 5988, 1712, 1719, 1711, - 1722, 1716, 1723, 1724, 1725, 1726, 1729, 1728, 1730, 1731, - 1735, 1742, 1739, 1740, 1741, 1745, 1750, 1753, 1757, 1764, + 1551, 1534, 1573, 1574, 1563, 1556, 1564, 1566, 1580, 1585, + 1587, 1588, 1590, 1595, 1596, 1598, 1599, 1601, 1608, 1609, + 1604, 1610, 1613, 1612, 1614, 1571, 1618, 1615, 1620, 1621, + 1623, 1624, 1625, 1637, 1635, 1627, 1644, 6010, 1645, 1648, + 1652, 1649, 1657, 1653, 1655, 1658, 1660, 1663, 1664, 1665, + 1668, 1667, 1669, 1671, 1675, 1677, 1682, 1678, 6010, 1680, + 1681, 1679, 1686, 1687, 1692, 1693, 1694, 1699, 1700, 1701, + 1711, 1706, 1702, 1704, 1712, 1713, 1715, 6010, 1720, 1728, + 1719, 1725, 1729, 1716, 1731, 1732, 1733, 1734, 1735, 1738, + 1739, 1741, 1752, 1747, 1749, 1744, 1745, 1762, 1755, 1765, - 1755, 1761, 1758, 1765, 1766, 1768, 1769, 1771, 1780, 1782, - 1779, 1783, 1772, 1787, 1795, 1794, 1784, 1785, 1796, 1799, - 1806, 1808, 1809, 1800, 1804, 1816, 1811, 1814, 1815, 1819, - 1822, 1823, 1825, 1826, 1828, 1832, 1830, 1834, 5988, 1836, - 1837, 5988, 1839, 1840, 1862, 1841, 1843, 1848, 1845, 1849, - 1854, 1855, 1866, 1864, 1868, 1885, 1872, 1877, 1875, 1887, - 1876, 1889, 1891, 1895, 1896, 1897, 1904, 1906, 1857, 1912, - 1914, 1899, 1901, 1909, 1928, 1911, 1913, 1917, 1925, 1932, - 1919, 1922, 1926, 1938, 1939, 1944, 1941, 5988, 1952, 1950, - 1949, 1951, 1961, 1960, 1956, 5988, 1962, 1963, 1966, 1973, + 1767, 1764, 1771, 1772, 1773, 1774, 1775, 1776, 1778, 1783, + 1785, 1782, 1793, 1786, 1805, 1807, 1800, 1789, 1790, 1809, + 1791, 1815, 1817, 1818, 1813, 1819, 1826, 1803, 1825, 1822, + 1828, 1830, 1827, 1834, 1835, 1837, 1841, 1839, 1843, 6010, + 1845, 1846, 6010, 1847, 1849, 1871, 1850, 1848, 1853, 1855, + 1856, 1873, 1857, 1864, 1858, 1865, 1889, 1884, 1886, 1885, + 1891, 1893, 1894, 1895, 1897, 1901, 1904, 1913, 1914, 1912, + 1921, 1923, 1903, 1919, 1922, 1941, 1920, 1924, 1930, 1927, + 1933, 1926, 1928, 1937, 1935, 1943, 1946, 1948, 6010, 1956, + 1963, 1953, 1959, 1957, 1971, 1968, 1958, 6010, 1866, 1969, - 1969, 1970, 1974, 1915, 1976, 1977, 1980, 1984, 1985, 1981, - 1983, 2001, 5988, 1986, 5988, 1991, 1988, 1996, 1998, 1999, - 2003, 2004, 2006, 5988, 5988, 2014, 2007, 2020, 2028, 2010, - 5988, 2013, 2031, 2032, 2024, 2026, 2034, 2035, 2037, 2039, - 2038, 2047, 2042, 2049, 2044, 2045, 2046, 5988, 2058, 2048, - 2063, 2065, 2056, 2066, 2073, 2064, 5988, 2074, 2067, 2075, - 2085, 2087, 2082, 2077, 2089, 2093, 2084, 2088, 2090, 2096, - 2098, 2103, 2106, 2104, 2108, 2112, 2120, 5988, 2101, 2105, - 2121, 2118, 2127, 2122, 2124, 2116, 2128, 2129, 2135, 2130, - 2136, 2137, 2139, 2146, 2148, 2144, 2145, 2152, 2143, 2153, + 1974, 1981, 1976, 1979, 1982, 1980, 1983, 1984, 1989, 1986, + 1993, 1988, 1991, 2005, 6010, 1996, 6010, 1992, 2003, 2007, + 2010, 2009, 2013, 2011, 2014, 6010, 6010, 2015, 2021, 2017, + 2031, 2022, 6010, 2029, 2038, 2039, 2033, 2034, 2041, 2042, + 2044, 2046, 2049, 2053, 2050, 2057, 2052, 2055, 2054, 6010, + 2063, 2056, 2069, 2071, 2065, 2073, 2075, 2072, 6010, 2079, + 2082, 2083, 2092, 2088, 2090, 2091, 2093, 2094, 2097, 2100, + 2101, 2102, 2103, 2110, 2112, 2108, 2117, 2118, 2120, 6010, + 2107, 2111, 2130, 2127, 2129, 2126, 2133, 2134, 2136, 2137, + 2138, 1628, 2139, 2144, 2143, 2151, 2153, 2146, 2149, 2159, - 2156, 2161, 2155, 2160, 2163, 2164, 5988, 2165, 2171, 124, - 2166, 2172, 2174, 2176, 2179, 2178, 2175, 2191, 2196, 2192, - 2198, 2194, 2193, 2201, 2203, 2202, 2204, 2205, 2206, 2209, - 5988, 2211, 2213, 2214, 2216, 2218, 2219, 2229, 5988, 2225, - 2230, 2237, 2233, 2238, 2241, 2242, 2246, 2247, 2249, 2250, - 2253, 2251, 2255, 5988, 2260, 2263, 2265, 2257, 2266, 2272, - 2273, 2275, 2278, 2267, 2279, 2280, 2281, 2284, 2283, 2285, - 2287, 2292, 2289, 2294, 2297, 2299, 5988, 2307, 2309, 2303, - 2300, 2310, 2312, 2319, 2316, 2322, 2321, 2325, 2337, 2327, - 2329, 2339, 2330, 2343, 2332, 2353, 2344, 2352, 2354, 2351, + 2148, 2150, 2160, 2169, 2163, 2166, 2168, 2170, 6010, 2171, + 2174, 124, 2177, 2178, 2176, 2179, 2180, 2183, 2185, 2192, + 2200, 2196, 2197, 2198, 2202, 2204, 2206, 2207, 2208, 2210, + 2209, 2212, 6010, 2214, 2215, 2219, 2220, 2226, 2221, 2228, + 6010, 2238, 2225, 2246, 2236, 2234, 2249, 2240, 2250, 2251, + 2253, 2254, 2256, 2255, 2257, 6010, 2263, 2264, 2265, 2267, + 2272, 2271, 2274, 2278, 2279, 2280, 2284, 2282, 2281, 2286, + 2285, 2289, 2290, 2295, 2291, 2292, 2300, 2302, 6010, 2309, + 2305, 2307, 2313, 2314, 2316, 2317, 2324, 2322, 2325, 2327, + 2331, 2342, 2335, 2328, 2344, 2345, 2349, 2334, 2358, 2357, - 2358, 2361, 2362, 2363, 2365, 2367, 2368, 2369, 2370, 2377, - 2384, 2375, 2385, 2386, 2390, 2396, 2392, 5988, 2397, 2398, - 2399, 2405, 2416, 2409, 2407, 2419, 2408, 2411, 2412, 2421, - 2423, 2432, 2427, 2425, 2430, 2434, 2435, 2436, 2438, 2441, - 2442, 2451, 2443, 2453, 2220, 5988, 2376, 2454, 2446, 2448, - 2461, 2455, 2463, 2467, 2464, 2470, 2471, 2473, 2474, 2476, - 2477, 2478, 2480, 2482, 2481, 5988, 2485, 2486, 2490, 2493, - 2498, 2496, 2500, 2506, 2508, 2510, 2502, 2512, 2514, 2513, - 5988, 2522, 2523, 2519, 2531, 2527, 2528, 2529, 2533, 2530, - 5988, 2534, 2535, 2543, 2544, 2539, 5988, 2548, 2541, 2546, + 2359, 2366, 2353, 2368, 2370, 2336, 2360, 2363, 2371, 2376, + 2379, 2377, 2386, 2388, 2384, 2383, 2385, 2396, 2409, 2400, + 6010, 2398, 2404, 2390, 2412, 2416, 2413, 2392, 2418, 2417, + 2420, 2424, 2425, 2426, 2433, 2434, 2428, 2432, 2437, 2438, + 2430, 2441, 2445, 2448, 2450, 2447, 2455, 2456, 6010, 2457, + 2461, 2463, 2464, 2468, 2451, 2475, 2476, 2478, 2465, 2469, + 2480, 2472, 2481, 2485, 2488, 2487, 2489, 2494, 6010, 2495, + 2499, 2497, 2501, 2503, 2509, 2506, 2513, 2519, 2516, 2504, + 2523, 2500, 2524, 6010, 2531, 2532, 2528, 2536, 2534, 2527, + 2538, 2540, 2535, 6010, 2541, 2542, 2550, 2551, 2547, 6010, - 2551, 2553, 2552, 2556, 2549, 2559, 2560, 2568, 2565, 2562, - 2571, 5988, 2572, 2580, 2575, 2577, 2581, 2582, 2583, 2587, - 2592, 2588, 2594, 5988, 2601, 2599, 2604, 2612, 2607, 2609, - 2610, 2613, 2614, 2616, 2617, 5988, 2619, 2620, 2622, 2623, - 2625, 2627, 2630, 2642, 2631, 2634, 2641, 2639, 2644, 2646, - 2647, 2650, 2651, 2648, 2658, 2660, 2662, 2663, 2664, 2668, - 2676, 2678, 2674, 2679, 5988, 2682, 2683, 2684, 2671, 2686, - 2688, 2690, 2691, 2694, 2696, 2701, 2695, 2698, 2708, 2711, - 2699, 2712, 2715, 2716, 2718, 2720, 2721, 2722, 2723, 2730, - 2726, 2728, 2738, 2729, 2733, 2743, 2736, 2744, 2745, 2746, + 2554, 2552, 2556, 2557, 2559, 2560, 2562, 2564, 2558, 2567, + 2570, 2580, 2568, 2577, 6010, 2571, 2587, 2574, 2588, 2593, + 2589, 2594, 2595, 2599, 2596, 2600, 6010, 2608, 2611, 2605, + 2618, 2606, 2619, 2620, 2621, 2622, 2623, 2624, 6010, 2627, + 2629, 2630, 2631, 2633, 2634, 2635, 2642, 2639, 2643, 2646, + 2649, 2650, 2653, 2656, 2659, 2658, 2655, 2667, 2668, 2670, + 2671, 2657, 2674, 2681, 2686, 2688, 2683, 2689, 6010, 2692, + 2693, 2687, 2694, 2695, 2698, 2699, 2700, 2702, 2703, 2705, + 2704, 2707, 2720, 2729, 2715, 2716, 2708, 2721, 2724, 2725, + 2731, 2732, 2736, 2743, 2734, 2738, 2747, 2742, 2745, 2755, - 2747, 2749, 2751, 2752, 2756, 2750, 2758, 2768, 2769, 2771, - 2760, 2772, 2776, 2777, 5988, 2780, 2782, 2778, 2784, 2785, - 2791, 2792, 2794, 2795, 2786, 2800, 2802, 2803, 2808, 2809, - 2811, 2818, 2814, 5988, 2815, 5988, 2816, 2817, 2819, 2829, - 2821, 5988, 2825, 5988, 2832, 2839, 2826, 2830, 5988, 2840, - 2834, 2836, 2847, 2844, 2849, 2850, 2851, 2852, 2857, 2853, - 2855, 2860, 2861, 2863, 2865, 2867, 2871, 2868, 2878, 2880, - 2872, 2881, 2874, 2887, 2889, 2888, 2890, 5988, 2900, 2891, - 2894, 2897, 2901, 2902, 2903, 2905, 2906, 2911, 2912, 2913, - 2914, 2920, 2919, 2929, 2925, 2936, 5988, 2928, 2933, 2935, + 2744, 2746, 2748, 2753, 2756, 2757, 2758, 2759, 2766, 2762, + 2776, 2780, 2777, 2781, 2771, 2783, 2786, 2787, 6010, 2790, + 2791, 2788, 2794, 2795, 2798, 2800, 2807, 2802, 2809, 2810, + 2812, 2819, 2804, 2813, 2818, 2826, 2828, 6010, 2821, 6010, + 2825, 2829, 2832, 2836, 2835, 6010, 2841, 6010, 2842, 2844, + 2837, 2847, 6010, 2848, 2849, 2850, 2856, 2852, 2854, 2858, + 2860, 2862, 2870, 2864, 2861, 2866, 2868, 2882, 2872, 2874, + 2880, 2884, 2888, 2890, 2878, 2895, 2889, 2891, 2897, 2900, + 2903, 6010, 2905, 2906, 2907, 2909, 2912, 2910, 2913, 2915, + 2916, 2917, 2918, 2925, 2922, 2931, 2934, 2938, 2923, 2946, - 2937, 5988, 2939, 2938, 2940, 2946, 2949, 2948, 2950, 2952, - 2956, 2958, 2951, 2961, 2959, 2968, 2969, 5988, 2974, 2975, - 2960, 2978, 2982, 2984, 2986, 2990, 2998, 2994, 2993, 2977, - 2996, 2997, 3000, 3007, 3008, 3004, 3011, 3010, 3013, 3020, - 3016, 3012, 3014, 3022, 3023, 3024, 3027, 3028, 3031, 3026, - 3029, 3036, 3032, 5988, 3044, 3035, 3040, 3047, 3051, 3054, - 3052, 3056, 3058, 3057, 3062, 3061, 3059, 5988, 3063, 5988, - 3060, 3077, 3065, 3082, 3079, 3071, 3084, 3093, 3086, 3088, - 3090, 3096, 3094, 3098, 3097, 3100, 3103, 3102, 3110, 3109, - 3105, 3116, 3117, 3118, 3120, 3121, 5988, 5988, 3122, 3123, + 6010, 2941, 2945, 2947, 2948, 6010, 2951, 2949, 2952, 2957, + 2950, 2959, 2960, 2962, 2967, 2969, 2963, 2976, 2978, 2980, + 2971, 6010, 2961, 2984, 2986, 2988, 2993, 2992, 2995, 2998, + 3006, 3002, 3001, 3003, 3004, 3005, 3009, 3016, 3019, 3015, + 3024, 3008, 3017, 3027, 3028, 3029, 3030, 3032, 3034, 3035, + 3039, 3040, 3042, 3037, 3038, 3041, 3044, 3043, 6010, 3046, + 3055, 3060, 3062, 3056, 3059, 3066, 3067, 3068, 3069, 3072, + 3074, 3076, 6010, 3078, 6010, 3070, 3088, 3081, 3097, 3082, + 3087, 3099, 3101, 3103, 3089, 3104, 3106, 3107, 3112, 3110, + 3113, 3115, 3114, 3131, 3118, 3120, 3121, 3129, 3122, 3130, - 3126, 3124, 3128, 3134, 3130, 3142, 3138, 3144, 3146, 3148, - 3156, 5988, 3149, 3153, 3152, 3159, 3171, 3157, 3161, 3176, - 3172, 3179, 3178, 5988, 3169, 3180, 3187, 3182, 3183, 3191, - 5988, 3188, 5988, 3190, 3193, 3197, 3198, 3200, 3201, 3202, - 3203, 3211, 3221, 3224, 3206, 3223, 3208, 3220, 3225, 3226, - 3233, 3229, 3230, 3231, 5988, 3235, 3236, 3237, 3199, 3240, - 3242, 3243, 3248, 5988, 3250, 3254, 3255, 3257, 3258, 3260, - 3261, 3263, 3264, 3266, 3262, 3267, 3279, 3268, 3272, 3282, - 3284, 3286, 3292, 5988, 3293, 3285, 3301, 3297, 3299, 3300, - 3303, 3304, 3305, 3307, 3308, 3309, 3310, 3316, 3315, 3312, + 3133, 6010, 6010, 3135, 3137, 3138, 3141, 3142, 3143, 3149, + 3144, 3154, 3152, 3158, 3162, 3167, 6010, 3163, 3168, 3165, + 3169, 3178, 3171, 3176, 3188, 3181, 3190, 3185, 6010, 3173, + 3192, 3200, 3195, 3196, 3203, 6010, 3201, 6010, 3198, 3202, + 3204, 3207, 3210, 3211, 3213, 3214, 3219, 3226, 3231, 3222, + 3230, 3232, 3215, 3234, 3236, 3243, 3238, 3239, 3241, 6010, + 3245, 3242, 3246, 3251, 3258, 3261, 3248, 3247, 6010, 3254, + 3265, 3267, 3268, 3271, 3273, 3274, 3275, 3277, 3279, 3276, + 3278, 3287, 3284, 3283, 3293, 3303, 3294, 3305, 6010, 3306, + 3300, 3313, 3315, 3308, 3310, 3316, 3317, 3318, 3321, 3323, - 3313, 3318, 3329, 3331, 3332, 3321, 3339, 3323, 3337, 3342, - 3340, 3343, 3348, 3349, 3352, 3354, 3346, 3368, 3369, 3355, - 3357, 3372, 3359, 3379, 3374, 5988, 3381, 3365, 3386, 3382, - 3384, 3389, 3390, 3398, 3396, 3385, 3393, 3400, 3397, 5988, - 3412, 3402, 3399, 3403, 3404, 3424, 3420, 3421, 3422, 3426, - 3423, 3427, 3430, 3431, 3432, 3435, 3436, 5988, 5988, 3438, - 3439, 3442, 5988, 3445, 3440, 3452, 3448, 3444, 3455, 3459, - 3458, 3457, 3462, 3460, 3468, 5988, 3469, 3477, 3472, 3473, - 3481, 3482, 3479, 3485, 3487, 3488, 3491, 3489, 3494, 3493, - 3495, 3498, 3506, 3509, 3502, 3504, 3512, 5988, 3505, 3507, + 3322, 3324, 3326, 3328, 3325, 3335, 3329, 3342, 3331, 3345, + 3351, 3352, 3332, 3348, 3355, 3356, 3359, 3358, 3362, 3365, + 3369, 3366, 3378, 3379, 3370, 3373, 3382, 3383, 3390, 3385, + 6010, 3395, 3375, 3398, 3396, 3397, 3402, 3403, 3405, 3406, + 3407, 3408, 3409, 3416, 3411, 6010, 3423, 3414, 3413, 3424, + 3430, 3438, 3433, 3434, 3436, 3440, 3437, 3443, 3441, 3446, + 3447, 3450, 3451, 6010, 6010, 3453, 3455, 3456, 6010, 3458, + 3460, 3470, 3473, 3462, 3459, 3285, 3466, 3469, 3476, 3478, + 3482, 6010, 3479, 3491, 3486, 3487, 3496, 3499, 3489, 3492, + 3500, 3501, 3503, 3502, 3505, 3507, 3510, 3511, 3519, 3523, - 3513, 3515, 3517, 3520, 5988, 3523, 3524, 3527, 3530, 3538, - 3540, 3534, 3547, 3531, 3541, 3543, 3548, 3549, 3551, 3560, - 3557, 3556, 3559, 3563, 3566, 5988, 3565, 3567, 3568, 3576, - 5988, 3580, 3587, 3590, 3591, 3573, 3577, 3589, 3598, 5988, - 3593, 3596, 3594, 3595, 3603, 3602, 3610, 3607, 5988, 3609, - 3608, 3611, 5988, 3612, 3613, 3618, 3623, 3625, 3632, 3628, - 3630, 3631, 3629, 5988, 3636, 5988, 3639, 3640, 3643, 5988, - 3646, 3647, 3648, 3650, 3651, 3656, 3657, 3655, 3663, 3664, - 3666, 3667, 3665, 3670, 3674, 3671, 3672, 3676, 3677, 5988, - 3678, 3680, 3687, 3692, 3688, 3695, 3682, 3699, 3700, 5988, + 3515, 3516, 3520, 6010, 3518, 3526, 3527, 3529, 3530, 3537, + 6010, 3534, 3539, 3541, 3533, 3545, 3546, 3551, 3555, 3556, + 3557, 3559, 3558, 3560, 3561, 3570, 3568, 3569, 3566, 3572, + 3575, 6010, 3576, 3582, 3584, 3587, 6010, 3589, 3596, 3597, + 3600, 3592, 3601, 3599, 3608, 6010, 3603, 3605, 3607, 3610, + 3620, 3612, 3622, 3613, 6010, 3617, 3621, 3623, 6010, 3624, + 3630, 3633, 3637, 3626, 3644, 3639, 3642, 3643, 3641, 6010, + 3648, 6010, 3651, 3652, 3655, 6010, 3657, 3658, 3660, 3662, + 3659, 3666, 3667, 3674, 3663, 3675, 3676, 3677, 3678, 3680, + 3687, 3679, 3686, 3688, 3689, 6010, 3690, 3692, 3698, 3699, - 5988, 3702, 5988, 3705, 3706, 3709, 5988, 3711, 3710, 3718, - 3714, 3715, 3717, 3721, 3727, 5988, 3723, 3728, 3732, 3729, - 3734, 3737, 3739, 3740, 3736, 3741, 3744, 5988, 3745, 3742, - 3747, 3743, 3753, 3757, 3759, 3758, 5988, 3766, 3767, 3768, - 3770, 3772, 5988, 3774, 5988, 3776, 3780, 3781, 3782, 3777, - 5988, 3785, 3788, 3791, 3792, 3795, 3797, 3798, 3801, 3804, - 3805, 3813, 3809, 3808, 3811, 5988, 3810, 3812, 3816, 3823, - 3817, 3820, 3833, 3830, 3834, 3828, 3831, 3838, 3841, 3842, - 3844, 3848, 3849, 3850, 5988, 3851, 3856, 3852, 3865, 3861, - 3855, 5988, 3862, 3866, 3872, 5988, 3869, 3875, 3876, 3879, + 3704, 3693, 3701, 3709, 3708, 6010, 6010, 3712, 6010, 3715, + 3716, 3717, 6010, 3719, 3723, 3726, 3724, 3727, 3729, 3736, + 3730, 6010, 3739, 3725, 3742, 3740, 3744, 3747, 3748, 3751, + 3750, 3752, 3753, 3755, 6010, 3756, 3757, 3764, 3754, 3767, + 3770, 3775, 3771, 6010, 3777, 3779, 3783, 3784, 3785, 6010, + 3786, 6010, 3788, 3790, 3793, 3794, 3797, 6010, 3798, 3803, + 3808, 3802, 3804, 3810, 3813, 3814, 3811, 3815, 3826, 3822, + 3821, 3823, 6010, 3824, 3825, 3833, 3836, 3830, 3838, 3846, + 3842, 3848, 3841, 3844, 3854, 3849, 3855, 3862, 3857, 3864, + 3865, 6010, 3867, 3868, 3851, 3881, 3873, 3874, 6010, 3877, - 3880, 3881, 3884, 3883, 3886, 5988, 3890, 3891, 3887, 3888, - 3889, 3896, 5988, 5988, 3904, 5988, 3906, 3892, 3909, 3908, - 3911, 3913, 3917, 3918, 3920, 3914, 3921, 3929, 3928, 3938, - 3945, 3946, 3944, 3935, 3930, 5988, 5988, 3949, 3951, 3953, - 3955, 3956, 3958, 3942, 3965, 3963, 3971, 3974, 3964, 3967, - 5988, 3975, 3976, 3978, 5988, 3980, 3981, 3983, 3984, 3985, - 3989, 3987, 3988, 3992, 3991, 3994, 3998, 3995, 4004, 4000, - 4011, 4001, 4012, 4014, 4015, 4019, 5988, 4016, 4021, 4022, - 4025, 4028, 4030, 4029, 4031, 4032, 5988, 4036, 4035, 4039, - 4044, 4045, 4047, 4037, 4055, 4062, 4056, 4063, 4064, 4058, + 3885, 3887, 6010, 3871, 3878, 3888, 3894, 3891, 3895, 3896, + 3900, 3901, 6010, 3899, 3903, 3902, 3905, 3918, 3908, 6010, + 6010, 3919, 6010, 3920, 3904, 3906, 3924, 3907, 3928, 3930, + 3931, 3934, 3935, 3939, 3936, 3944, 3951, 3952, 3953, 3955, + 3948, 3949, 6010, 6010, 3960, 3961, 3963, 3965, 3966, 3968, + 3970, 3977, 3973, 3974, 3982, 3979, 3989, 6010, 3986, 3985, + 3991, 6010, 3992, 3993, 3996, 3994, 3997, 4000, 3999, 4001, + 4003, 4004, 4007, 4010, 4012, 4011, 4013, 4020, 4022, 4023, + 4024, 4025, 4030, 6010, 4034, 4031, 4033, 4035, 4036, 4038, + 4040, 4044, 4045, 6010, 4047, 4049, 4051, 4046, 4053, 4055, - 4069, 4072, 5988, 4073, 4046, 4074, 4075, 4080, 4082, 4083, - 4085, 4086, 4089, 4090, 4091, 4093, 4098, 4095, 4099, 4100, - 4101, 5988, 4106, 4113, 4103, 4116, 4107, 4117, 4118, 4126, - 4129, 4119, 4124, 4130, 4132, 5988, 4133, 4134, 4135, 4136, - 4144, 4137, 4141, 4145, 4147, 5988, 4152, 4148, 4154, 4155, - 4158, 4159, 4163, 4164, 4166, 4170, 4178, 5988, 4167, 4180, - 4182, 4174, 4171, 4173, 4183, 4186, 5988, 4190, 4192, 4191, - 4207, 4193, 4208, 4200, 4204, 4203, 4210, 4213, 4211, 4215, - 4217, 4218, 4219, 4231, 4235, 4230, 5988, 4221, 5988, 4236, - 4237, 4246, 4242, 4232, 5988, 4239, 4244, 4248, 4249, 4250, + 4063, 4070, 4071, 4075, 4065, 4072, 4076, 4078, 4082, 4079, + 6010, 4083, 4086, 4089, 4091, 4093, 4095, 4096, 4098, 4099, + 4101, 4104, 4102, 4111, 4113, 4108, 4105, 4116, 4118, 6010, + 4120, 4124, 4121, 4127, 4128, 4129, 4131, 4132, 4139, 4136, + 4141, 4142, 4144, 6010, 4145, 4147, 4149, 4150, 4152, 4153, + 4157, 4158, 4159, 6010, 4167, 4160, 4168, 4163, 4169, 4171, + 4176, 4178, 4181, 4182, 4183, 6010, 4185, 4188, 4191, 4192, + 4194, 4195, 4199, 4198, 6010, 4200, 4206, 4208, 4215, 4210, + 4218, 4214, 4220, 4213, 4221, 4226, 4227, 4228, 4230, 4232, + 4233, 4246, 4248, 4245, 6010, 4235, 6010, 4243, 4250, 4259, - 5988, 4253, 4256, 4258, 4257, 5988, 4263, 4262, 4261, 4268, - 4271, 4274, 5988, 4277, 4279, 4278, 4290, 4291, 4287, 4288, - 4292, 4289, 4294, 4295, 4296, 4304, 4299, 4300, 5988, 4303, - 4306, 4311, 4312, 4315, 4316, 4318, 4320, 4321, 5988, 4323, - 4325, 4326, 4327, 4329, 4330, 4332, 4344, 4342, 4331, 5988, - 4335, 4347, 4359, 4354, 4355, 5988, 5988, 4356, 4339, 4358, - 4343, 4363, 5988, 4367, 4366, 4365, 4373, 4374, 5988, 5988, - 4376, 5988, 4368, 5988, 4378, 4379, 5988, 5988, 4380, 4381, - 4382, 4384, 4391, 5988, 4394, 5988, 4402, 4397, 4388, 4399, - 4400, 5988, 4401, 4403, 4409, 5988, 4410, 4412, 4411, 4413, + 4256, 4244, 6010, 4254, 4258, 4261, 4262, 4263, 6010, 4267, + 4268, 4271, 4269, 6010, 4273, 4275, 4278, 4282, 4288, 4289, + 6010, 4292, 4293, 4295, 4303, 4305, 4302, 4304, 4306, 4308, + 4309, 4310, 4311, 4319, 4314, 4316, 6010, 4322, 4324, 4331, + 4332, 4325, 4315, 4336, 4339, 4333, 6010, 4342, 4341, 4343, + 4344, 4345, 4348, 4350, 4357, 4353, 4352, 6010, 4356, 4360, + 4373, 4354, 4283, 6010, 4366, 6010, 4364, 4376, 4371, 4369, + 4379, 6010, 4381, 4388, 4384, 4387, 4383, 6010, 6010, 4390, + 6010, 4391, 6010, 4393, 4394, 6010, 6010, 4397, 4398, 4399, + 4400, 4412, 6010, 4414, 6010, 4421, 4416, 4403, 4401, 4420, - 5988, 4417, 4422, 4414, 4418, 5988, 4423, 4427, 4430, 4431, - 4432, 4434, 4438, 4437, 4442, 4443, 4445, 4444, 4447, 4454, - 4458, 4460, 4462, 4463, 4448, 4465, 4467, 4471, 4469, 4473, - 4474, 4476, 4478, 4479, 4483, 4487, 4480, 4484, 4488, 4489, - 4490, 4497, 4493, 4499, 4504, 4500, 4505, 4506, 4507, 4508, - 4511, 4514, 4512, 4518, 4522, 5988, 4516, 4517, 4523, 4524, - 4528, 4530, 4536, 4544, 4548, 4549, 5988, 4551, 5988, 4553, - 4538, 4529, 4545, 5988, 4555, 4558, 4557, 4560, 4559, 4561, - 4563, 4562, 4566, 4567, 4569, 5988, 4572, 4573, 4574, 4578, - 5988, 4587, 4589, 4586, 4590, 4591, 4592, 4593, 4594, 4597, + 6010, 4408, 4406, 4429, 6010, 4422, 4432, 4430, 4434, 6010, + 4436, 4437, 4433, 4438, 6010, 4441, 4444, 4445, 4439, 4446, + 4453, 4459, 4451, 4454, 4460, 4462, 4463, 4464, 4471, 4474, + 4476, 4478, 4479, 4466, 4480, 4481, 4486, 4488, 4489, 4490, + 4492, 4494, 4495, 4497, 4499, 4502, 4503, 4504, 4505, 4506, + 4507, 4509, 4516, 4519, 4521, 4520, 4522, 4524, 4523, 4525, + 4527, 4531, 4533, 4534, 6010, 4532, 4535, 4538, 4541, 4545, + 4551, 4553, 4555, 4563, 4564, 6010, 4566, 6010, 4568, 4552, + 4560, 4572, 6010, 4573, 4574, 4575, 4576, 4577, 4578, 4579, + 4580, 4583, 4584, 4587, 6010, 4590, 4582, 4585, 4606, 6010, - 4599, 4601, 4603, 4615, 4605, 4606, 4610, 4614, 4616, 4617, - 4620, 4622, 4627, 4628, 4632, 5988, 4633, 5988, 4634, 4635, - 4638, 4639, 4640, 4641, 4644, 5988, 5988, 4642, 4646, 4648, - 4651, 4653, 4656, 4660, 5988, 4657, 4665, 4668, 4670, 5988, - 4658, 4674, 4675, 4677, 5988, 4678, 4679, 4680, 4682, 4685, - 4687, 4691, 4689, 4692, 4693, 4700, 5988, 5988, 5988, 5988, - 4701, 4697, 4707, 4703, 4709, 4711, 4712, 4714, 4710, 5988, - 4718, 5988, 5988, 4723, 4724, 4726, 4727, 4730, 4715, 4733, - 4731, 5988, 4735, 4736, 4743, 4737, 4745, 4747, 4749, 4753, - 4751, 4754, 4761, 4757, 4759, 4763, 4765, 4767, 4774, 5988, + 4599, 4610, 4595, 4603, 4607, 4611, 4612, 4615, 4616, 4617, + 4619, 4623, 4631, 4620, 4624, 4627, 4628, 4629, 4635, 4637, + 4640, 4641, 4648, 4649, 4653, 6010, 4644, 6010, 4650, 4654, + 4656, 4658, 4660, 4661, 4664, 6010, 6010, 4662, 4666, 4671, + 4672, 4667, 4675, 4676, 6010, 4677, 4684, 4690, 4686, 6010, + 4679, 4691, 4693, 4696, 6010, 4697, 4698, 4700, 4702, 4703, + 4706, 4710, 4708, 4712, 4714, 4719, 6010, 6010, 6010, 6010, + 4720, 4716, 4724, 4727, 4729, 4725, 4730, 4732, 4733, 6010, + 4736, 6010, 6010, 4741, 4744, 4737, 4745, 4747, 4743, 4752, + 4756, 6010, 4753, 4754, 4758, 4757, 4766, 4770, 4760, 4771, - 5988, 4764, 4776, 4768, 4785, 4781, 4782, 4789, 4788, 4790, - 4791, 4793, 4794, 4780, 4803, 4804, 4805, 4799, 5988, 4807, - 4806, 5988, 4813, 5988, 4814, 4815, 4816, 4817, 4818, 4822, - 4823, 4826, 5988, 5988, 4821, 4828, 4832, 4837, 4833, 4829, - 4839, 4842, 4843, 5988, 4844, 5988, 4845, 4846, 4856, 4847, - 4863, 4864, 4866, 4868, 4853, 4869, 5988, 4870, 4871, 5988, - 4873, 4875, 4876, 5988, 4880, 4878, 4883, 4886, 5988, 4888, - 4890, 4892, 5988, 4899, 5988, 4893, 4895, 4902, 4907, 5988, - 4903, 4904, 5988, 4909, 4911, 4912, 4916, 5988, 4917, 5988, - 4918, 4920, 4921, 4925, 4926, 4928, 4930, 4931, 4932, 4939, + 4773, 4774, 4781, 4777, 4778, 4780, 4783, 4785, 4787, 6010, + 6010, 4789, 4794, 4796, 4804, 4800, 4801, 4813, 4808, 4809, + 4810, 4811, 4815, 4797, 4822, 4827, 4820, 4817, 6010, 4828, + 4831, 6010, 4824, 6010, 4830, 4832, 4838, 4839, 4840, 4841, + 4842, 4844, 6010, 6010, 4845, 4846, 4848, 4855, 4851, 4857, + 4859, 4847, 4861, 4863, 6010, 4865, 6010, 4869, 4870, 4872, + 4873, 4881, 4883, 4884, 4886, 4879, 4888, 6010, 4890, 4891, + 6010, 4892, 4894, 4895, 6010, 4900, 4897, 4903, 4906, 6010, + 4912, 4909, 4914, 6010, 4917, 6010, 4907, 4918, 4920, 4930, + 6010, 4921, 4925, 6010, 4934, 4936, 4928, 4937, 6010, 4922, - 4937, 4940, 5988, 5988, 4948, 4934, 4945, 4950, 4952, 4959, - 4951, 4956, 4955, 5988, 5988, 4961, 5988, 4963, 4964, 5988, - 4962, 4969, 4968, 4973, 4974, 4975, 4977, 4980, 4982, 4990, - 4983, 4981, 4994, 5004, 4988, 5006, 5008, 5010, 5012, 5014, - 5016, 4984, 4999, 5017, 5018, 5020, 5021, 5988, 5023, 5025, - 5024, 5988, 5030, 5026, 5035, 5031, 5988, 5038, 5039, 5044, - 5045, 5988, 5046, 5050, 5047, 5052, 5055, 5063, 5056, 5058, - 5068, 5988, 5988, 5988, 5060, 5074, 5988, 5076, 5066, 5059, - 5071, 5988, 5077, 5078, 5988, 5988, 5079, 5082, 5081, 5093, - 5988, 5083, 5988, 5085, 5988, 5092, 5094, 5102, 5096, 5988, + 6010, 4938, 4943, 4944, 4947, 4939, 4949, 4951, 4952, 4953, + 4961, 4957, 4959, 6010, 6010, 4966, 4962, 4968, 4969, 4971, + 4978, 4973, 4975, 4981, 6010, 6010, 4982, 6010, 4976, 4983, + 6010, 4974, 4990, 4991, 4992, 4994, 4995, 4996, 5001, 5002, + 5003, 5004, 5005, 5011, 5023, 5007, 5021, 5027, 5029, 5031, + 5033, 5025, 5035, 5036, 5013, 5037, 5038, 5042, 6010, 5044, + 5048, 5049, 5045, 6010, 5051, 5053, 5055, 5059, 6010, 5066, + 5061, 5067, 5068, 6010, 5057, 5072, 5069, 5074, 5078, 5085, + 5081, 5080, 5082, 6010, 6010, 6010, 5087, 5091, 6010, 5096, + 5088, 5097, 5098, 6010, 5099, 5100, 6010, 6010, 5101, 5104, - 5107, 5109, 5988, 5115, 5117, 5119, 5111, 5088, 5121, 5122, - 5988, 5129, 5125, 5126, 5133, 5124, 5128, 5134, 5135, 5143, - 5136, 5145, 5988, 5146, 5147, 5151, 5154, 5138, 5148, 5158, - 5988, 5160, 5988, 5162, 5164, 5165, 5167, 5166, 5168, 5171, - 5180, 5170, 5173, 5174, 5988, 5184, 5189, 5988, 5181, 5988, - 5191, 5988, 5192, 5194, 5195, 5198, 5988, 5200, 5186, 5197, - 5204, 5988, 5212, 5201, 5205, 5217, 5988, 5988, 5207, 5225, - 5209, 5218, 5222, 5229, 5226, 5231, 5232, 5233, 5234, 5241, - 5236, 5237, 5238, 5245, 5248, 5252, 5988, 5988, 5988, 5247, - 5256, 5263, 5261, 5262, 5270, 5266, 5988, 5267, 5268, 5269, + 5103, 5111, 6010, 5106, 6010, 5107, 6010, 5109, 5110, 5119, + 5121, 6010, 5124, 5131, 6010, 5134, 5137, 5139, 5140, 5125, + 5127, 5142, 6010, 5150, 5143, 5151, 5153, 5141, 5154, 5155, + 5158, 5163, 5161, 5165, 6010, 5162, 5167, 5168, 5169, 5171, + 5174, 5177, 6010, 5179, 6010, 5180, 5181, 5183, 5182, 5184, + 5185, 5188, 5198, 5192, 5202, 5195, 6010, 6010, 5206, 5208, + 6010, 5199, 6010, 5210, 6010, 5211, 5212, 5213, 5216, 6010, + 5223, 5215, 5217, 5219, 6010, 5224, 5230, 5226, 5232, 6010, + 6010, 5233, 5242, 5234, 5237, 5247, 5249, 5241, 5251, 5243, + 5255, 5252, 5262, 5257, 5263, 5258, 5266, 5268, 5273, 6010, - 5277, 5274, 5279, 5988, 5275, 5280, 5281, 5282, 5286, 5283, - 5290, 5988, 5294, 5297, 5300, 5289, 5304, 5308, 5311, 5313, - 5314, 5988, 5316, 5988, 5988, 5301, 5988, 5317, 5318, 5321, - 5322, 5988, 5325, 5327, 5326, 5328, 5330, 5332, 5988, 5342, - 5333, 5335, 5344, 5988, 5988, 5348, 5988, 5351, 5352, 5345, - 5361, 5356, 5358, 5363, 5360, 5988, 5364, 5367, 5369, 5370, - 5371, 5988, 5372, 5373, 5375, 5376, 5379, 5378, 5381, 5383, - 5385, 5988, 5386, 5388, 5406, 5402, 5988, 5389, 5401, 5988, - 5988, 5411, 5413, 5334, 5988, 5988, 5988, 5416, 5988, 5418, - 5422, 5426, 5430, 5421, 5988, 5432, 5429, 5434, 5988, 5988, + 6010, 6010, 5267, 5260, 5283, 5282, 5284, 5291, 5286, 6010, + 5288, 5289, 5290, 5298, 5295, 5297, 6010, 5299, 5300, 5301, + 5302, 5306, 5303, 5307, 6010, 5320, 5324, 5325, 5314, 5327, + 5334, 5336, 5338, 5339, 6010, 5341, 6010, 6010, 5310, 6010, + 5321, 5331, 5342, 5345, 6010, 5348, 5349, 5350, 5308, 5352, + 5355, 6010, 5362, 5357, 5359, 5360, 6010, 6010, 5367, 6010, + 5369, 5371, 5358, 5379, 5374, 5375, 5381, 5382, 6010, 5384, + 5385, 5388, 5389, 5390, 6010, 5391, 5392, 5394, 5395, 5398, + 5397, 5400, 5402, 5403, 6010, 5407, 5406, 5425, 5422, 6010, + 5409, 5420, 6010, 6010, 5431, 5435, 5424, 6010, 6010, 6010, - 5433, 5435, 5436, 5438, 5988, 5988, 5439, 5442, 5440, 5443, - 5445, 5988, 5450, 5454, 5456, 5459, 5462, 5451, 5465, 5467, - 5475, 5477, 5472, 5473, 5478, 5480, 5481, 5482, 5484, 5493, - 5489, 5491, 5503, 5500, 5988, 5988, 5507, 5988, 5988, 5509, - 5511, 5513, 5515, 5517, 5519, 5521, 5988, 5522, 5524, 5525, - 5393, 5526, 5988, 5528, 5530, 5527, 5532, 5492, 5535, 5533, - 5538, 5988, 5988, 5539, 5540, 5541, 5549, 5544, 5988, 5551, - 5558, 5555, 5556, 5553, 5559, 5560, 5988, 5564, 5565, 5988, - 5988, 5563, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, - 5568, 5988, 5566, 5581, 5583, 5585, 5988, 5573, 5586, 5494, + 5437, 6010, 5439, 5443, 5447, 5451, 5442, 6010, 5453, 5432, + 5454, 6010, 6010, 5455, 5456, 5457, 5459, 6010, 6010, 5460, + 5463, 5461, 5464, 5466, 6010, 5469, 5471, 5477, 5483, 5489, + 5479, 5467, 5484, 5492, 5501, 5474, 5490, 5497, 5498, 5502, + 5500, 5509, 5510, 5506, 5514, 5516, 5517, 6010, 6010, 5521, + 6010, 6010, 5524, 5526, 5528, 5530, 5532, 5534, 5536, 6010, + 5537, 5539, 5540, 5541, 5542, 6010, 5544, 5548, 5543, 5551, + 5545, 5554, 5550, 5560, 6010, 6010, 5552, 5566, 5556, 5567, + 5561, 6010, 5571, 5578, 5573, 5575, 5576, 5581, 5577, 6010, + 5583, 5585, 6010, 6010, 5586, 6010, 6010, 6010, 6010, 6010, - 5587, 5575, 5988, 5588, 5590, 5592, 5098, 5591, 5593, 5599, - 5598, 5600, 5603, 5602, 5605, 5604, 5609, 5608, 5610, 5623, - 5988, 5988, 5988, 5622, 5614, 5616, 5624, 5626, 5631, 5638, - 5640, 5635, 5641, 5642, 5643, 5644, 5646, 5647, 5656, 5651, - 5652, 5653, 5655, 5660, 5657, 5663, 5667, 5988, 5668, 5988, - 5669, 5988, 5988, 5674, 5676, 5670, 5679, 5686, 5690, 5681, - 5688, 5685, 5689, 5692, 5697, 5988, 5693, 5699, 5988, 5702, - 5703, 5988, 5700, 5705, 5706, 5708, 5709, 5711, 5712, 5713, - 5724, 5988, 5988, 5715, 5726, 5727, 5729, 5731, 5738, 5733, - 5737, 5740, 5743, 5739, 5747, 5988, 5750, 5751, 5753, 5988, + 6010, 6010, 6010, 5588, 6010, 5584, 5603, 5605, 5607, 6010, + 5590, 5600, 5592, 5598, 5608, 6010, 5610, 5410, 5611, 5612, + 5615, 5619, 5621, 5617, 5623, 5624, 5625, 5627, 5626, 5631, + 5628, 5632, 5639, 6010, 6010, 6010, 5637, 5638, 5646, 5647, + 5654, 5659, 5662, 5664, 5629, 5655, 5665, 5666, 5667, 5657, + 5669, 5676, 5673, 5674, 5678, 5677, 5680, 5681, 5685, 5689, + 6010, 5690, 6010, 5691, 6010, 6010, 5693, 5694, 5698, 5699, + 5707, 5708, 5700, 5703, 5710, 5712, 5720, 5722, 6010, 5711, + 5713, 6010, 5723, 5724, 6010, 5715, 5725, 5726, 5727, 5731, + 5734, 5736, 5738, 5747, 6010, 6010, 5739, 5742, 5748, 5750, + + 5751, 5758, 5754, 5757, 5761, 5763, 5764, 5771, 6010, 5770, + 5772, 5774, 6010, 5775, 5776, 5778, 5780, 5781, 5788, 5784, + 5789, 6010, 5786, 6010, 5791, 5792, 5793, 5794, 5796, 5797, + 5805, 5807, 5808, 6010, 5809, 5816, 5811, 5818, 5822, 5820, + 5824, 5814, 5827, 5829, 5836, 5840, 5837, 5841, 5828, 5845, + 5832, 6010, 5843, 5846, 6010, 5849, 5852, 5853, 5855, 5858, + 6010, 5861, 5856, 5862, 5863, 5867, 5869, 6010, 5871, 5878, + 5873, 6010, 5879, 6010, 6010, 5882, 5883, 5885, 5889, 5891, + 6010, 6010, 6010, 5918, 5925, 5932, 5939, 5946, 88, 5953, + 5960, 5967, 5974, 5981, 5988, 5995, 6002 - 5755, 5754, 5757, 5760, 5761, 5768, 5763, 5765, 5988, 5766, - 5988, 5770, 5772, 5771, 5774, 5775, 5777, 5785, 5783, 5787, - 5988, 5789, 5791, 5795, 5796, 5798, 5801, 5802, 5803, 5805, - 5807, 5808, 5817, 5811, 5813, 5819, 5821, 5823, 5988, 5825, - 5827, 5988, 5828, 5829, 5830, 5831, 5835, 5988, 5840, 5832, - 5837, 5843, 5848, 5845, 5988, 5854, 5858, 5855, 5988, 5859, - 5988, 5988, 5860, 5861, 5863, 5867, 5869, 5988, 5988, 5988, - 5896, 5903, 5910, 5917, 5924, 88, 5931, 5938, 5945, 5952, - 5959, 5966, 5973, 5980 } ; -static const flex_int16_t yy_def[3085] = +static const flex_int16_t yy_def[3098] = { 0, - 3070, 1, 3071, 3071, 3072, 3072, 3073, 3073, 3074, 3074, - 3075, 3075, 3070, 3076, 3070, 3070, 3070, 3070, 3077, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3078, 3070, 3070, 3070, 3078, 3079, 3070, 3070, - 3070, 3079, 3080, 3070, 3070, 3070, 3070, 3080, 3081, 3070, - 3070, 3070, 3081, 3082, 3070, 3083, 3070, 3082, 3082, 3076, - 3076, 3070, 3084, 3077, 3084, 3077, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3083, 1, 3084, 3084, 3085, 3085, 3086, 3086, 3087, 3087, + 3088, 3088, 3083, 3089, 3083, 3083, 3083, 3083, 3090, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3091, 3083, 3083, 3083, 3091, 3092, 3083, 3083, + 3083, 3092, 3093, 3083, 3083, 3083, 3083, 3093, 3094, 3083, + 3083, 3083, 3094, 3095, 3083, 3096, 3083, 3095, 3095, 3089, + 3089, 3083, 3097, 3090, 3097, 3090, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3078, 3078, 3079, 3079, 3080, 3080, 3070, 3081, 3081, 3082, - 3082, 3083, 3083, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3091, 3091, 3092, 3092, 3093, 3093, 3083, 3094, 3094, 3095, + 3095, 3096, 3096, 3095, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3095, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3082, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3095, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3082, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3095, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3083, 3089, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3082, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3095, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, + 3083, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, - 3070, 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, - 3076, 3070, 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3083, 3089, 3083, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3083, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3083, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3070, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3083, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3083, 3083, 3089, 3089, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3089, 3083, 3089, 3083, 3089, 3083, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, + 3083, 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3076, 3076, 3070, 3070, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3070, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3083, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3083, 3083, 3083, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3083, 3089, + 3083, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3083, 3083, 3089, 3083, 3083, 3083, 3083, 3083, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, + 3083, 3083, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3083, + 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3083, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3083, 3083, 3089, 3089, 3089, 3089, + + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, + 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, 3089, + 3089, 3083, 3089, 3089, 3083, 3089, 3089, 3089, 3089, 3089, + 3083, 3089, 3089, 3089, 3089, 3089, 3089, 3083, 3089, 3089, + 3089, 3083, 3089, 3083, 3083, 3089, 3089, 3089, 3089, 3089, + 3083, 3083, 0, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083 - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070 } ; -static const flex_int16_t yy_nxt[6029] = +static const flex_int16_t yy_nxt[6051] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1523,7 +1529,7 @@ static const flex_int16_t yy_nxt[6029] = 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 733, 486, 480, 71, 472, 71, 473, + 71, 484, 481, 734, 486, 480, 71, 472, 71, 473, 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, @@ -1570,534 +1576,536 @@ static const flex_int16_t yy_nxt[6029] = 71, 71, 71, 695, 71, 71, 696, 71, 694, 71, 699, 71, 698, 71, 700, 71, 704, 71, 71, 703, 71, 697, 71, 707, 705, 71, 71, 709, 71, 71, - 71, 710, 702, 71, 701, 706, 71, 71, 716, 712, - 71, 71, 711, 71, 713, 708, 718, 715, 714, 71, - 71, 71, 149, 723, 719, 720, 722, 721, 717, 71, - 724, 71, 71, 71, 725, 71, 726, 71, 728, 71, + 717, 710, 702, 71, 701, 706, 71, 71, 71, 712, + 149, 71, 711, 71, 713, 708, 71, 714, 715, 71, + 71, 720, 71, 724, 721, 716, 718, 719, 723, 71, + 71, 725, 71, 726, 722, 71, 727, 71, 71, 71, - 729, 71, 71, 71, 730, 71, 737, 71, 735, 71, - 71, 731, 71, 71, 743, 734, 147, 71, 727, 732, - 71, 738, 741, 71, 71, 736, 740, 71, 739, 742, - 744, 71, 746, 747, 745, 71, 71, 71, 71, 748, - 752, 750, 749, 71, 754, 783, 71, 71, 753, 71, - 71, 71, 751, 71, 755, 757, 71, 764, 756, 71, - 758, 71, 759, 71, 761, 71, 765, 71, 71, 760, - 71, 769, 767, 71, 766, 71, 773, 71, 762, 763, - 770, 71, 71, 71, 771, 71, 776, 774, 768, 71, - 775, 777, 71, 71, 778, 71, 71, 780, 782, 772, + 729, 730, 731, 71, 71, 71, 71, 738, 71, 71, + 736, 71, 71, 71, 71, 732, 744, 735, 728, 71, + 739, 733, 71, 742, 743, 745, 737, 71, 740, 741, + 746, 747, 748, 71, 71, 71, 749, 71, 71, 753, + 750, 71, 755, 71, 71, 71, 754, 756, 71, 71, + 71, 758, 752, 71, 757, 751, 759, 71, 71, 71, + 71, 765, 766, 760, 762, 71, 761, 71, 71, 767, + 768, 71, 770, 71, 71, 774, 147, 772, 763, 764, + 771, 71, 71, 780, 71, 777, 71, 779, 769, 776, + 778, 71, 773, 71, 775, 781, 71, 71, 71, 783, - 71, 784, 779, 71, 71, 788, 71, 71, 781, 71, - 789, 71, 71, 71, 71, 71, 790, 797, 785, 71, - 71, 795, 786, 71, 787, 71, 71, 791, 792, 71, - 71, 71, 793, 798, 794, 796, 71, 799, 71, 71, - 802, 71, 71, 71, 811, 800, 804, 809, 801, 803, - 71, 71, 71, 71, 71, 812, 805, 806, 807, 71, - 808, 71, 71, 71, 810, 814, 816, 815, 71, 71, - 71, 813, 71, 821, 823, 817, 819, 820, 71, 822, - 71, 818, 71, 824, 71, 71, 71, 151, 71, 826, - 71, 71, 831, 827, 832, 829, 71, 71, 825, 828, + 71, 71, 71, 71, 789, 71, 71, 71, 71, 790, + 71, 71, 71, 71, 71, 782, 784, 791, 785, 786, + 71, 787, 792, 788, 794, 796, 793, 798, 71, 797, + 71, 795, 71, 71, 799, 71, 71, 71, 71, 803, + 800, 71, 71, 71, 71, 71, 812, 146, 810, 801, + 71, 802, 71, 805, 804, 71, 806, 71, 811, 807, + 808, 809, 71, 815, 71, 71, 813, 71, 71, 814, + 817, 816, 71, 71, 819, 71, 71, 144, 822, 821, + 818, 820, 823, 71, 71, 826, 71, 71, 824, 825, + 829, 71, 71, 827, 151, 71, 828, 71, 833, 832, - 830, 833, 71, 71, 834, 835, 71, 839, 71, 71, - 840, 842, 71, 71, 71, 845, 71, 836, 841, 71, - 837, 71, 843, 847, 838, 71, 71, 71, 851, 71, - 71, 71, 71, 844, 71, 71, 846, 848, 852, 853, - 71, 71, 71, 71, 71, 850, 883, 854, 71, 865, - 866, 849, 71, 869, 71, 856, 855, 71, 863, 864, - 71, 71, 857, 71, 867, 868, 858, 71, 870, 859, - 71, 871, 872, 71, 875, 71, 860, 861, 71, 862, - 71, 71, 146, 874, 873, 71, 876, 877, 71, 878, - 898, 887, 879, 885, 884, 888, 71, 880, 71, 71, + 830, 834, 71, 71, 831, 71, 71, 71, 840, 71, + 71, 841, 836, 843, 71, 71, 835, 71, 71, 842, + 837, 838, 846, 71, 844, 71, 71, 839, 71, 848, + 71, 852, 71, 71, 71, 849, 845, 71, 847, 71, + 853, 854, 71, 71, 71, 71, 71, 71, 851, 71, + 71, 850, 867, 71, 866, 71, 870, 855, 856, 864, + 865, 872, 857, 71, 71, 868, 71, 875, 858, 71, + 869, 873, 859, 71, 871, 860, 71, 71, 874, 71, + 876, 884, 861, 862, 71, 863, 71, 71, 877, 878, + 885, 879, 905, 71, 880, 886, 888, 889, 71, 881, - 890, 71, 71, 881, 882, 889, 886, 71, 892, 71, - 71, 71, 71, 894, 893, 900, 891, 895, 896, 71, - 71, 899, 897, 71, 71, 71, 71, 904, 71, 71, - 71, 71, 903, 71, 907, 911, 71, 913, 71, 924, - 71, 71, 906, 901, 902, 905, 71, 908, 909, 914, - 917, 912, 71, 910, 915, 71, 71, 916, 918, 71, - 71, 920, 921, 71, 71, 919, 71, 71, 71, 922, - 925, 71, 71, 71, 923, 71, 926, 71, 928, 931, - 71, 71, 929, 71, 71, 934, 71, 71, 71, 933, - 927, 71, 932, 71, 71, 936, 930, 937, 939, 71, + 71, 71, 891, 71, 887, 882, 883, 890, 71, 71, + 894, 71, 71, 893, 71, 896, 895, 71, 892, 897, + 898, 71, 71, 71, 899, 71, 71, 71, 71, 900, + 902, 71, 906, 71, 71, 909, 71, 71, 71, 915, + 71, 71, 901, 907, 913, 903, 904, 908, 71, 911, + 71, 916, 1176, 914, 910, 919, 917, 71, 71, 920, + 912, 71, 71, 918, 922, 71, 71, 921, 71, 923, + 71, 71, 926, 71, 924, 927, 71, 71, 71, 925, + 71, 71, 71, 933, 71, 928, 930, 931, 71, 936, + 71, 71, 71, 71, 71, 71, 929, 934, 935, 71, - 71, 71, 71, 935, 941, 942, 71, 71, 940, 71, - 949, 938, 947, 71, 71, 945, 943, 948, 71, 944, - 946, 71, 71, 71, 71, 71, 954, 956, 950, 71, - 952, 957, 71, 951, 955, 71, 71, 71, 71, 71, - 959, 71, 71, 71, 71, 958, 953, 967, 71, 970, - 960, 965, 71, 71, 71, 71, 961, 962, 71, 964, - 963, 971, 968, 71, 966, 972, 71, 969, 71, 975, - 71, 71, 974, 973, 71, 977, 978, 71, 71, 71, - 976, 71, 71, 980, 71, 71, 982, 987, 979, 988, - 990, 981, 71, 71, 992, 71, 71, 71, 71, 983, + 71, 932, 938, 939, 941, 71, 71, 71, 943, 942, + 937, 944, 71, 71, 71, 71, 940, 71, 949, 71, + 951, 945, 947, 950, 71, 71, 71, 948, 71, 71, + 952, 956, 71, 71, 954, 958, 953, 946, 71, 957, + 959, 71, 71, 961, 71, 71, 71, 71, 71, 963, + 955, 71, 71, 960, 71, 969, 967, 71, 71, 972, + 71, 142, 71, 962, 964, 71, 966, 965, 71, 973, + 970, 968, 976, 971, 974, 71, 975, 71, 71, 980, + 71, 977, 978, 979, 71, 71, 71, 71, 71, 71, + 989, 71, 990, 982, 984, 71, 71, 981, 71, 71, - 71, 985, 993, 984, 986, 991, 989, 71, 71, 71, - 996, 994, 71, 71, 998, 1001, 995, 71, 997, 71, - 1000, 71, 71, 1005, 71, 1002, 1007, 71, 71, 71, - 1004, 1003, 71, 999, 1010, 151, 71, 1009, 71, 71, - 1013, 71, 1012, 71, 1006, 71, 1008, 71, 1016, 71, - 71, 1011, 71, 71, 71, 1028, 71, 1031, 71, 144, - 1029, 71, 71, 1014, 1019, 1015, 1017, 71, 71, 1054, - 71, 1033, 1020, 1018, 1021, 71, 1030, 71, 1022, 71, - 1023, 71, 1036, 1034, 1024, 71, 1025, 1032, 71, 71, - 71, 1026, 1038, 1035, 1041, 1037, 1027, 1039, 71, 1040, + 992, 71, 71, 71, 71, 983, 71, 985, 987, 991, + 986, 988, 994, 71, 995, 998, 71, 996, 71, 993, + 71, 997, 71, 999, 1003, 1001, 71, 1000, 71, 1002, + 71, 71, 71, 1007, 1004, 71, 1008, 1009, 71, 71, + 71, 71, 1012, 151, 1005, 1006, 1011, 71, 71, 1015, + 71, 1014, 71, 1010, 71, 1013, 71, 1018, 71, 71, + 71, 71, 71, 71, 1030, 1031, 71, 1033, 71, 71, + 71, 71, 1016, 1021, 1017, 1019, 1038, 71, 71, 71, + 1022, 1032, 1020, 1023, 71, 1036, 71, 1024, 1089, 1025, + 1035, 1037, 1039, 1026, 1034, 1027, 1040, 71, 71, 71, - 71, 1046, 71, 1043, 71, 1044, 1042, 1047, 71, 71, - 71, 1052, 71, 1053, 71, 1045, 1051, 71, 1048, 71, - 1055, 1056, 71, 1050, 71, 71, 71, 71, 71, 1049, - 71, 1068, 71, 1058, 1057, 71, 1067, 1072, 71, 71, - 1059, 71, 1060, 1073, 1069, 71, 1071, 1061, 1093, 1062, - 1070, 71, 71, 1074, 71, 1063, 1077, 71, 1078, 1079, - 1064, 1065, 71, 71, 71, 71, 1080, 1066, 1083, 71, - 1075, 1076, 142, 71, 71, 71, 71, 1082, 1084, 71, - 1089, 1081, 71, 71, 1086, 1087, 71, 71, 1085, 71, - 71, 1090, 1092, 71, 71, 1088, 71, 71, 71, 71, + 1028, 1041, 71, 1043, 71, 1029, 71, 71, 71, 1046, + 71, 1042, 1049, 1045, 71, 1044, 71, 71, 1048, 1047, + 1054, 1055, 1050, 1053, 1056, 71, 71, 71, 1052, 1057, + 1058, 1051, 71, 71, 71, 71, 71, 71, 1059, 71, + 71, 71, 1070, 71, 1074, 1069, 71, 1073, 71, 1075, + 71, 1060, 1072, 1061, 71, 1062, 71, 1071, 1079, 71, + 1063, 71, 1064, 1081, 1076, 1080, 71, 1077, 1065, 71, + 71, 71, 71, 1066, 1067, 1078, 71, 1084, 1086, 1082, + 1068, 71, 71, 1085, 71, 1083, 1087, 71, 1092, 71, + 1088, 1090, 71, 71, 71, 71, 71, 71, 1093, 71, - 1099, 71, 1091, 1094, 71, 1096, 1097, 1098, 1101, 71, - 1095, 71, 71, 1100, 71, 1102, 71, 71, 1103, 71, - 71, 1104, 1109, 71, 1110, 1106, 71, 71, 1105, 1112, - 1107, 1108, 1111, 71, 1113, 1114, 1115, 71, 1117, 71, - 1121, 71, 1116, 1118, 71, 71, 1119, 71, 71, 1120, - 71, 71, 71, 1122, 1128, 71, 1130, 71, 71, 71, - 71, 71, 71, 1132, 1124, 1126, 1127, 1123, 1125, 71, - 71, 71, 1131, 1133, 1134, 1129, 71, 71, 71, 71, - 71, 1136, 1135, 1137, 1139, 1138, 71, 71, 71, 1141, - 71, 1140, 1145, 1142, 1144, 71, 1143, 71, 71, 1146, + 1095, 71, 71, 1091, 71, 71, 71, 1102, 1100, 71, + 1097, 1094, 1104, 1096, 1099, 1101, 71, 1098, 71, 1106, + 71, 1103, 71, 71, 71, 1105, 71, 71, 71, 1112, + 71, 1116, 1113, 1114, 71, 71, 1107, 1109, 1117, 1108, + 1110, 1111, 71, 1115, 71, 1120, 71, 71, 1118, 1124, + 1121, 71, 71, 1122, 71, 71, 1123, 71, 1119, 71, + 1131, 1125, 71, 71, 1133, 71, 71, 71, 71, 71, + 71, 1127, 1129, 1135, 1126, 1128, 71, 1130, 71, 1137, + 1134, 1136, 71, 1132, 71, 71, 71, 1139, 71, 1140, + 1138, 1142, 71, 1143, 1141, 71, 71, 1144, 1145, 1148, - 71, 71, 71, 71, 1147, 1149, 71, 1150, 1148, 71, - 1156, 71, 1154, 1157, 71, 1151, 71, 71, 71, 71, - 1152, 71, 1158, 1153, 1155, 71, 1159, 1161, 1164, 71, - 1160, 71, 1162, 71, 71, 71, 1165, 71, 1163, 1166, - 71, 71, 71, 71, 1167, 1171, 1168, 1169, 71, 71, - 71, 1172, 71, 1177, 1173, 1178, 71, 71, 71, 71, - 1170, 71, 1175, 1180, 1181, 71, 71, 1174, 71, 71, - 1185, 1176, 1179, 71, 71, 1182, 71, 71, 71, 71, - 1183, 1184, 1187, 1191, 71, 71, 1186, 71, 71, 71, - 1197, 71, 71, 1192, 1195, 1188, 3070, 1190, 1199, 1194, + 1149, 71, 1147, 71, 71, 71, 71, 71, 1153, 1152, + 71, 1146, 1150, 71, 71, 71, 71, 1159, 1157, 1160, + 71, 71, 1151, 71, 71, 71, 1161, 1164, 1154, 1158, + 71, 71, 1155, 71, 1156, 1162, 1163, 1167, 1165, 71, + 71, 1169, 71, 71, 1166, 1168, 71, 71, 1170, 71, + 71, 71, 71, 1174, 1175, 1171, 71, 71, 1180, 71, + 1181, 71, 71, 71, 71, 1172, 71, 1183, 1173, 1178, + 1177, 1184, 71, 71, 1182, 1179, 71, 1186, 1188, 71, + 1185, 71, 71, 71, 71, 1187, 1194, 71, 1190, 71, + 71, 71, 71, 71, 1189, 1200, 71, 1198, 71, 1202, - 1193, 1196, 1189, 1200, 71, 71, 71, 71, 1198, 71, - 1201, 71, 1203, 1202, 71, 71, 71, 71, 71, 71, - 1204, 1206, 71, 1212, 71, 1209, 71, 71, 1205, 71, - 1207, 71, 71, 71, 1210, 1337, 1208, 1216, 71, 1222, - 1213, 1211, 71, 71, 1215, 1214, 71, 1218, 1223, 1224, - 71, 71, 1217, 1225, 71, 71, 1219, 1227, 1220, 71, - 71, 1221, 71, 71, 71, 1226, 71, 1231, 71, 1230, - 71, 1233, 1236, 71, 1228, 1234, 71, 1229, 71, 71, - 71, 1237, 1232, 1238, 1240, 71, 71, 1235, 71, 1241, - 1239, 71, 71, 71, 71, 1242, 71, 71, 71, 1245, + 1191, 1197, 1199, 1193, 1195, 71, 1196, 1203, 1192, 71, + 71, 71, 1205, 71, 1204, 71, 1206, 71, 1201, 71, + 71, 71, 71, 71, 1209, 71, 1215, 71, 71, 1207, + 1212, 1208, 71, 71, 71, 1210, 3083, 1213, 71, 71, + 1211, 71, 1216, 1226, 1214, 1219, 1221, 71, 1218, 71, + 1217, 71, 1225, 71, 1220, 1222, 1228, 1223, 1227, 71, + 1224, 1229, 71, 71, 71, 1230, 71, 71, 71, 71, + 71, 1234, 1231, 1233, 1236, 1239, 71, 71, 71, 1237, + 71, 1232, 1240, 1241, 71, 71, 1235, 71, 1244, 1238, + 1243, 71, 71, 71, 71, 71, 1245, 71, 71, 71, - 71, 1248, 71, 1243, 1246, 71, 1244, 71, 1247, 1249, - 71, 1253, 71, 71, 1258, 1250, 71, 1254, 1252, 1251, - 71, 1257, 71, 71, 1260, 71, 1264, 1255, 1262, 71, - 1256, 1265, 71, 1261, 71, 71, 1259, 1263, 71, 1269, - 71, 3070, 71, 71, 1279, 71, 1278, 1268, 1266, 1267, - 71, 1277, 71, 1276, 1281, 1270, 71, 71, 1271, 1272, - 1282, 1280, 1283, 1273, 71, 71, 71, 71, 1285, 1274, - 1284, 71, 1287, 1275, 71, 71, 71, 1288, 71, 1289, - 71, 71, 71, 71, 1297, 1286, 1294, 1292, 71, 71, - 71, 1298, 1338, 1299, 1291, 1290, 1295, 71, 71, 71, + 1242, 1251, 71, 71, 71, 71, 1246, 1247, 71, 1249, + 1250, 1252, 1248, 71, 1256, 71, 1261, 1253, 71, 1257, + 71, 1255, 71, 1254, 1260, 1258, 71, 71, 1263, 71, + 71, 1268, 1262, 1259, 1266, 71, 1269, 71, 71, 3083, + 71, 71, 1267, 1265, 71, 1273, 1264, 71, 71, 71, + 1281, 1282, 1271, 1272, 1270, 71, 1285, 71, 71, 1283, + 1274, 1280, 71, 1275, 1276, 1286, 71, 1284, 1277, 1294, + 71, 71, 71, 71, 1278, 1287, 71, 1288, 1279, 71, + 1289, 71, 1291, 71, 71, 1296, 1292, 1290, 1293, 71, + 71, 1295, 71, 1301, 1298, 1302, 71, 71, 71, 71, - 1293, 1296, 1300, 71, 1306, 71, 1307, 1308, 1301, 71, - 71, 71, 71, 1302, 1310, 1303, 1309, 1304, 71, 1305, - 71, 71, 71, 1314, 71, 71, 1311, 1313, 1315, 71, - 1312, 1316, 71, 1320, 71, 1319, 71, 1318, 71, 1324, - 71, 1325, 1317, 71, 1321, 71, 1326, 71, 71, 71, - 1323, 71, 1328, 1322, 71, 71, 71, 1327, 1330, 71, - 1333, 71, 1329, 1334, 71, 1336, 71, 71, 71, 1331, - 1341, 1335, 1339, 1342, 71, 1344, 71, 71, 1340, 1332, - 71, 1345, 1346, 71, 71, 1349, 71, 71, 1343, 71, - 71, 71, 1351, 71, 71, 71, 1353, 1355, 71, 71, + 1304, 71, 1303, 71, 1297, 71, 1299, 1305, 1300, 71, + 1310, 71, 1306, 71, 1307, 1314, 1308, 71, 1309, 1311, + 1312, 1316, 71, 1318, 1313, 71, 71, 1321, 1319, 71, + 71, 71, 1315, 71, 1317, 1320, 1322, 71, 71, 71, + 1328, 71, 1324, 71, 1323, 71, 71, 71, 1329, 1330, + 71, 71, 1334, 1327, 71, 1332, 1325, 1326, 71, 1331, + 71, 71, 1338, 71, 71, 1333, 1337, 1340, 71, 71, + 71, 1341, 1335, 1342, 71, 1339, 71, 71, 71, 1343, + 1346, 71, 71, 1336, 1347, 71, 1345, 1348, 71, 71, + 1349, 71, 1353, 71, 71, 1344, 1350, 1355, 71, 1351, - 3070, 1357, 1354, 71, 1347, 1348, 71, 1350, 1359, 71, - 1352, 71, 1356, 71, 1358, 71, 1361, 1362, 1363, 71, - 1360, 71, 1365, 71, 1364, 71, 71, 71, 1366, 1371, - 1372, 1368, 71, 1367, 1369, 71, 71, 1373, 1374, 1370, - 71, 71, 71, 71, 71, 1378, 71, 71, 71, 1375, - 1382, 1383, 71, 1377, 71, 1385, 71, 71, 1384, 71, - 1376, 71, 71, 1379, 71, 71, 71, 1380, 1386, 71, - 1392, 1381, 71, 71, 1387, 71, 1389, 1397, 71, 1388, - 1390, 71, 1393, 1391, 71, 71, 1396, 1401, 71, 1399, - 71, 1395, 1402, 71, 71, 71, 71, 1394, 1398, 1404, + 71, 71, 71, 1352, 1359, 1354, 1357, 71, 71, 1358, + 71, 1361, 71, 71, 71, 1363, 71, 71, 1356, 71, + 1373, 1365, 71, 3083, 1367, 1360, 71, 1362, 1364, 71, + 1366, 1368, 71, 1369, 1370, 1371, 71, 71, 1375, 1376, + 71, 71, 1372, 1378, 71, 71, 1377, 71, 71, 71, + 1374, 71, 1382, 71, 71, 71, 1379, 1386, 1387, 1380, + 71, 1389, 1381, 71, 71, 71, 1388, 71, 1383, 71, + 71, 71, 71, 71, 1384, 71, 1396, 71, 1385, 1390, + 71, 71, 1393, 71, 71, 1391, 1394, 71, 1400, 1392, + 71, 1395, 1401, 71, 1405, 1403, 1398, 1397, 1399, 1406, - 71, 71, 1405, 1412, 1400, 71, 1403, 71, 1414, 1406, - 1410, 1407, 71, 1411, 71, 1408, 1415, 71, 1409, 1417, - 71, 1413, 71, 71, 1418, 71, 71, 71, 1416, 71, - 71, 1422, 71, 71, 1424, 71, 71, 1429, 71, 1419, - 71, 1421, 1430, 71, 71, 1423, 1426, 71, 1420, 1433, - 1425, 1427, 71, 1428, 71, 71, 1434, 71, 1431, 71, - 71, 71, 1432, 71, 71, 1440, 1435, 1437, 1436, 1442, - 1441, 71, 1438, 71, 1445, 71, 71, 71, 1439, 1443, - 1444, 71, 1447, 1450, 71, 1451, 1449, 71, 1452, 71, - 1446, 71, 71, 1453, 1454, 71, 71, 71, 1448, 71, + 71, 71, 71, 1404, 1402, 1407, 71, 71, 71, 71, + 1408, 1416, 71, 71, 1409, 1418, 1410, 1414, 71, 71, + 1415, 71, 1411, 1412, 71, 1421, 1413, 1417, 1419, 1420, + 1422, 71, 71, 71, 71, 71, 71, 71, 1423, 1426, + 71, 1428, 71, 71, 71, 1433, 71, 71, 71, 1437, + 1434, 1425, 71, 1427, 1430, 71, 71, 1429, 1424, 71, + 1431, 1432, 71, 71, 1438, 1435, 71, 1436, 71, 71, + 71, 71, 71, 1440, 1444, 1439, 1446, 1441, 1442, 1445, + 71, 71, 1449, 71, 71, 1443, 1447, 71, 1454, 1448, + 1451, 1452, 1453, 1455, 71, 1456, 71, 1457, 1450, 71, - 1455, 71, 1457, 71, 71, 1461, 1456, 71, 71, 71, - 1460, 71, 71, 1458, 71, 1467, 1459, 1463, 1469, 1464, - 1468, 71, 1465, 1470, 71, 71, 1472, 1462, 71, 71, - 1466, 71, 1471, 71, 71, 71, 71, 1480, 1476, 71, - 1475, 71, 71, 71, 1481, 1483, 71, 1473, 1474, 71, - 1486, 71, 1485, 1477, 1479, 1478, 71, 71, 71, 71, - 71, 1484, 71, 71, 71, 71, 1494, 1482, 1487, 71, - 1497, 71, 1495, 71, 1491, 1496, 1488, 1489, 1490, 1493, - 1498, 71, 71, 1492, 71, 71, 1501, 1499, 1500, 71, - 71, 71, 1504, 71, 1502, 71, 1505, 71, 71, 71, + 71, 71, 71, 1458, 1459, 71, 71, 71, 71, 1461, + 1460, 71, 71, 71, 1466, 71, 71, 71, 71, 1465, + 71, 71, 1463, 1469, 1468, 1462, 1464, 1472, 71, 71, + 1477, 1470, 1473, 71, 71, 1467, 1474, 71, 71, 1471, + 1478, 1475, 71, 1481, 71, 71, 1480, 71, 1476, 71, + 1485, 71, 1486, 1479, 1488, 71, 71, 71, 71, 71, + 71, 71, 1491, 1482, 1490, 1483, 71, 1484, 71, 71, + 71, 71, 71, 1499, 1489, 71, 1492, 1487, 1493, 71, + 1494, 3083, 1500, 1496, 71, 1495, 1498, 1501, 1502, 71, + 71, 1497, 1503, 71, 71, 1504, 71, 1506, 1505, 71, - 1508, 1514, 1503, 1512, 71, 71, 1509, 71, 71, 1506, - 1513, 1507, 1516, 71, 1511, 71, 71, 1510, 1517, 1518, - 1519, 71, 71, 1515, 71, 1523, 1524, 71, 71, 71, - 71, 71, 71, 1528, 71, 1527, 1529, 1531, 71, 71, - 1521, 1520, 71, 71, 1522, 71, 1525, 71, 1532, 71, - 1526, 1533, 71, 71, 1530, 1534, 1536, 71, 1538, 1535, - 71, 1539, 71, 71, 71, 71, 71, 1537, 71, 1543, - 71, 1545, 1540, 71, 71, 1546, 71, 1550, 71, 1544, - 71, 71, 1542, 1541, 71, 71, 1547, 71, 1548, 1553, - 1555, 71, 1551, 71, 71, 1558, 1554, 1556, 1552, 1549, + 71, 71, 1509, 71, 71, 1507, 1510, 71, 71, 1513, + 1517, 71, 1508, 71, 1519, 71, 1514, 71, 1518, 1511, + 71, 1512, 71, 71, 1516, 71, 71, 1515, 1522, 1523, + 1520, 71, 71, 1528, 71, 1521, 1524, 1525, 71, 71, + 1529, 71, 71, 1534, 1526, 71, 1533, 1532, 71, 71, + 71, 1527, 1530, 1536, 71, 71, 1538, 71, 1537, 1531, + 71, 71, 71, 71, 1541, 71, 1539, 71, 1535, 71, + 1544, 71, 1543, 71, 71, 71, 1540, 71, 1548, 71, + 1545, 71, 1542, 71, 1550, 71, 1551, 71, 1546, 1549, + 1547, 71, 1552, 71, 1553, 71, 1555, 71, 1558, 1556, - 71, 71, 71, 71, 71, 1557, 1561, 71, 1563, 1559, - 71, 1560, 1564, 71, 71, 71, 71, 1571, 71, 71, - 1562, 1566, 1565, 1572, 71, 71, 71, 71, 1569, 1567, - 1568, 1576, 71, 71, 1575, 1578, 1580, 1579, 71, 1573, - 1570, 71, 71, 1582, 1574, 1584, 71, 1577, 71, 71, - 71, 71, 71, 71, 1589, 1583, 1586, 1587, 1581, 71, - 1590, 71, 71, 71, 71, 71, 1601, 1585, 1594, 71, - 1595, 71, 71, 71, 71, 1588, 1591, 1598, 1593, 1592, - 1599, 71, 71, 1596, 1597, 1603, 1602, 71, 71, 1609, - 71, 71, 1600, 1606, 1608, 71, 1605, 71, 1607, 71, + 1560, 71, 71, 71, 71, 1557, 1554, 1561, 71, 1563, + 71, 1562, 1559, 71, 1566, 1565, 71, 1569, 71, 71, + 71, 1568, 71, 71, 1564, 71, 71, 1576, 71, 71, + 71, 71, 1567, 1577, 1571, 71, 71, 1570, 71, 1574, + 1580, 1572, 1573, 1581, 71, 1585, 1583, 71, 1575, 1578, + 1579, 71, 1584, 1587, 71, 1582, 1586, 1589, 71, 71, + 71, 71, 71, 71, 71, 71, 1594, 1591, 1588, 1592, + 71, 1595, 71, 71, 71, 71, 71, 1596, 1599, 1590, + 71, 1600, 71, 1610, 71, 1606, 1593, 1608, 1598, 71, + 1597, 71, 1603, 71, 1601, 1604, 1602, 71, 1607, 71, - 1611, 1604, 1610, 71, 1612, 1613, 71, 71, 1616, 71, - 71, 71, 1614, 71, 1620, 1621, 1619, 71, 1623, 1615, - 71, 71, 1622, 71, 71, 71, 71, 71, 1617, 71, - 1618, 1625, 1626, 71, 1627, 71, 71, 71, 1635, 71, - 71, 71, 71, 1628, 71, 71, 1624, 1629, 71, 71, - 1631, 1632, 1633, 71, 1634, 1630, 1640, 71, 1642, 1636, - 71, 1643, 1637, 1638, 71, 71, 1639, 71, 1641, 71, - 71, 71, 71, 71, 71, 71, 71, 1658, 71, 1644, - 1648, 1645, 1650, 1651, 71, 1649, 1652, 1647, 1653, 1646, - 71, 1654, 71, 1657, 1659, 71, 1655, 71, 1656, 71, + 1614, 71, 1611, 1609, 1613, 71, 71, 1605, 71, 1616, + 1615, 71, 1617, 1618, 71, 71, 71, 71, 71, 71, + 1619, 71, 71, 1625, 1612, 1624, 1626, 1620, 71, 71, + 71, 1628, 71, 1627, 1621, 1630, 1622, 71, 1623, 1631, + 71, 71, 71, 71, 1629, 71, 1632, 71, 71, 1640, + 71, 71, 71, 71, 71, 71, 71, 71, 1646, 71, + 1633, 1636, 1637, 1634, 1638, 1635, 1639, 1642, 71, 71, + 1641, 1644, 71, 71, 1643, 71, 1649, 1645, 1648, 71, + 71, 71, 71, 71, 1650, 71, 1651, 71, 1647, 71, + 1654, 71, 1656, 1664, 71, 71, 1657, 1655, 1653, 1658, - 1662, 71, 1661, 71, 1660, 1663, 71, 71, 1666, 71, - 71, 71, 1664, 71, 1667, 71, 71, 1675, 71, 1670, - 1665, 1676, 71, 71, 1674, 1672, 1668, 1669, 1673, 71, - 71, 71, 1671, 71, 71, 71, 71, 71, 1677, 71, - 1685, 71, 1678, 71, 1689, 1680, 1682, 71, 1679, 1681, - 1687, 71, 1688, 1686, 1684, 71, 1693, 71, 1690, 71, - 1683, 71, 71, 1697, 1691, 71, 71, 1692, 1698, 71, - 71, 3070, 71, 1705, 71, 1694, 1699, 1702, 1703, 1696, - 1695, 1700, 71, 1706, 71, 71, 1708, 1701, 1704, 71, - 1707, 71, 71, 71, 1712, 71, 71, 1709, 1716, 1714, + 71, 71, 71, 1652, 1663, 1659, 1660, 1666, 1662, 1665, + 71, 1661, 71, 1669, 71, 1668, 71, 71, 1667, 71, + 71, 1671, 1672, 71, 1673, 71, 71, 71, 71, 1670, + 1682, 71, 1676, 71, 71, 71, 1680, 1678, 1681, 1674, + 1679, 1675, 71, 71, 71, 1677, 71, 1684, 71, 1686, + 71, 71, 1691, 1683, 71, 71, 71, 71, 1688, 1687, + 1685, 1694, 71, 1695, 1693, 71, 1697, 71, 1690, 1698, + 1692, 71, 1699, 1689, 1703, 71, 71, 1696, 71, 1704, + 71, 71, 71, 1700, 71, 1709, 71, 1708, 1711, 71, + 1705, 71, 1701, 1702, 71, 1712, 1706, 1714, 71, 1713, - 71, 71, 1710, 71, 71, 1715, 71, 1711, 1713, 1717, - 71, 71, 71, 71, 71, 71, 71, 1743, 1720, 71, - 1721, 71, 1718, 1726, 71, 1719, 1722, 1723, 1728, 1724, - 1725, 1729, 1730, 71, 71, 1731, 71, 71, 71, 71, - 1736, 1732, 71, 71, 71, 1727, 71, 1740, 71, 71, - 71, 1733, 1735, 71, 1742, 71, 71, 1734, 1744, 1738, - 1745, 71, 1739, 71, 1737, 1746, 1749, 71, 71, 1741, - 71, 71, 1753, 71, 71, 71, 71, 71, 1748, 71, - 71, 71, 1751, 1755, 1747, 71, 1760, 1750, 1754, 1756, - 1752, 1757, 71, 1761, 1758, 71, 1764, 71, 71, 71, + 1707, 71, 1710, 71, 1715, 71, 1716, 1718, 71, 71, + 1722, 71, 1720, 71, 71, 71, 71, 71, 1721, 1717, + 71, 1719, 1723, 71, 71, 1726, 71, 71, 71, 1727, + 1724, 1732, 71, 1734, 1725, 71, 1728, 1729, 1735, 71, + 1730, 1731, 1737, 71, 71, 71, 1739, 71, 1736, 71, + 1742, 71, 71, 1733, 71, 71, 71, 1746, 71, 71, + 71, 71, 1741, 1748, 71, 1738, 1740, 71, 1744, 1749, + 1752, 71, 1745, 1743, 71, 1747, 1750, 1755, 71, 1751, + 71, 71, 1754, 1753, 71, 1759, 71, 71, 71, 71, + 71, 71, 71, 1757, 1766, 1761, 71, 71, 71, 1756, - 1759, 1763, 1765, 1762, 1766, 71, 71, 1768, 1769, 1770, - 71, 1767, 71, 71, 71, 1772, 71, 71, 71, 1773, - 71, 71, 71, 71, 1771, 71, 71, 1778, 71, 71, - 1782, 71, 1779, 1790, 71, 1783, 71, 1774, 1776, 1777, - 1775, 1780, 71, 1781, 71, 71, 1791, 1786, 1784, 1788, - 71, 1785, 71, 71, 1787, 71, 71, 1792, 1796, 71, - 1789, 71, 71, 1799, 1800, 71, 1801, 71, 71, 1793, - 71, 1794, 71, 1795, 3070, 1797, 1808, 1798, 71, 1802, - 1803, 71, 71, 1804, 1807, 71, 1809, 71, 1811, 1805, - 1810, 1806, 71, 1813, 71, 71, 1812, 71, 71, 71, + 71, 1760, 1762, 1758, 1763, 1861, 71, 71, 1764, 1767, + 1771, 1765, 1769, 71, 1768, 1770, 71, 1772, 71, 71, + 1775, 71, 1774, 71, 1773, 1778, 71, 1776, 71, 71, + 71, 71, 1779, 1777, 71, 71, 71, 71, 71, 71, + 1784, 71, 71, 1788, 71, 71, 1785, 3083, 71, 1794, + 1780, 1786, 1782, 1781, 1783, 71, 1787, 1789, 71, 1797, + 1792, 71, 1791, 1796, 71, 71, 1798, 1793, 71, 71, + 1790, 71, 71, 1795, 1802, 71, 1805, 1806, 71, 71, + 1799, 1807, 71, 71, 1800, 1803, 71, 1804, 71, 1801, + 1809, 71, 71, 1810, 1813, 71, 71, 1815, 71, 1808, - 1815, 1816, 71, 71, 1817, 1818, 71, 1825, 3070, 71, - 71, 71, 71, 71, 1830, 71, 71, 71, 1823, 1827, - 1814, 1819, 1820, 1821, 1828, 71, 1824, 1831, 1822, 1829, - 1826, 1833, 1832, 71, 71, 71, 71, 71, 1837, 71, - 71, 1839, 1834, 71, 71, 71, 1842, 1843, 71, 71, - 1845, 71, 71, 71, 1835, 71, 1836, 71, 71, 1850, - 1851, 71, 1838, 1840, 1847, 71, 1841, 1848, 71, 1844, - 71, 71, 71, 71, 1849, 71, 1857, 1846, 1852, 1854, - 1855, 71, 71, 1853, 1861, 71, 71, 1860, 1864, 1865, - 71, 1866, 71, 1863, 71, 71, 1856, 1859, 71, 1858, + 1814, 1816, 1817, 71, 1811, 1819, 1818, 1812, 71, 71, + 71, 71, 1824, 1821, 1822, 71, 71, 1823, 71, 71, + 71, 71, 71, 1832, 71, 3083, 71, 71, 1837, 71, + 1834, 1825, 1826, 1827, 1820, 1835, 71, 71, 1828, 1830, + 1829, 1836, 1831, 71, 1833, 1840, 71, 71, 1838, 71, + 71, 71, 1844, 71, 71, 1841, 71, 1846, 1839, 71, + 71, 1849, 1850, 71, 71, 1852, 71, 1842, 71, 71, + 1843, 71, 71, 71, 1847, 71, 1845, 1857, 1854, 71, + 1855, 1848, 71, 71, 1851, 1858, 71, 1860, 1862, 71, + 1864, 71, 71, 1853, 1856, 71, 1859, 1867, 1868, 71, - 71, 71, 71, 1867, 71, 1862, 71, 71, 71, 1868, - 1872, 71, 1875, 1876, 1871, 71, 1877, 71, 71, 71, - 71, 1869, 71, 1870, 1873, 71, 71, 1885, 71, 1880, - 71, 1884, 1879, 71, 1874, 1878, 71, 71, 1882, 3070, - 71, 1889, 1883, 71, 71, 1881, 1890, 71, 1887, 1886, - 1892, 71, 1891, 71, 71, 1888, 71, 1893, 1894, 1896, - 71, 71, 71, 1895, 71, 1897, 1900, 1903, 1898, 71, - 71, 1906, 71, 71, 1905, 1899, 71, 1907, 71, 71, - 71, 71, 1901, 1908, 1902, 1904, 71, 1909, 1913, 71, - 71, 1910, 1914, 71, 1915, 1920, 1911, 1917, 1918, 1916, + 71, 1873, 71, 1871, 71, 71, 1872, 1870, 1863, 71, + 1874, 1866, 71, 71, 71, 71, 71, 1865, 71, 1869, + 71, 1879, 1875, 71, 71, 1882, 1883, 1878, 71, 71, + 1884, 71, 71, 71, 1876, 1877, 71, 1887, 1880, 71, + 71, 1892, 71, 71, 1886, 1891, 71, 71, 1885, 1881, + 71, 1889, 71, 1888, 71, 1898, 1896, 1899, 71, 71, + 1897, 1890, 1893, 1900, 71, 1894, 1895, 1903, 71, 71, + 71, 71, 71, 71, 71, 1901, 1907, 1910, 1913, 71, + 1902, 71, 71, 71, 1905, 71, 1914, 1912, 71, 71, + 1904, 1906, 1915, 1908, 1909, 71, 1911, 71, 1916, 1920, - 71, 1912, 71, 71, 71, 1922, 71, 71, 71, 71, - 1927, 71, 1919, 1924, 1921, 71, 71, 1929, 1923, 1925, - 71, 71, 71, 71, 71, 71, 71, 1935, 1934, 1933, - 1936, 71, 1930, 1926, 1931, 1937, 71, 1928, 71, 1939, - 1932, 71, 71, 71, 71, 71, 3070, 1940, 1941, 71, - 1942, 1943, 71, 71, 1944, 1945, 71, 1947, 1938, 71, - 71, 71, 1951, 71, 71, 1946, 1950, 1955, 71, 71, - 71, 1948, 1949, 1952, 1953, 1954, 71, 71, 71, 71, - 71, 1962, 1960, 71, 71, 71, 1957, 71, 1961, 71, - 71, 71, 1967, 71, 1964, 71, 1956, 1958, 3070, 1959, + 71, 1921, 71, 1922, 1924, 71, 1917, 1925, 1923, 71, + 71, 1918, 71, 71, 71, 1929, 71, 1919, 71, 1927, + 71, 71, 1931, 71, 1928, 71, 71, 1934, 1930, 1936, + 71, 1926, 1932, 71, 71, 71, 71, 71, 1937, 71, + 1941, 1940, 1938, 71, 1942, 1943, 71, 1935, 1933, 1944, + 71, 1946, 71, 1939, 71, 71, 71, 71, 1947, 1945, + 1948, 71, 1949, 1950, 71, 71, 1951, 1952, 71, 1954, + 71, 71, 71, 71, 1958, 71, 71, 1953, 1957, 71, + 71, 1959, 1955, 1956, 1960, 1961, 1962, 71, 71, 71, + 71, 71, 71, 71, 1969, 1967, 1963, 1964, 1968, 71, - 71, 71, 1963, 1968, 1966, 71, 1971, 1965, 71, 1970, - 1972, 1969, 71, 71, 1977, 71, 1974, 1975, 71, 71, - 1973, 1978, 71, 71, 71, 1983, 1976, 71, 71, 1985, - 71, 71, 1986, 1987, 71, 1979, 71, 1982, 1980, 1981, - 71, 71, 71, 1989, 1984, 71, 1991, 71, 1988, 71, - 71, 1992, 71, 71, 71, 71, 71, 71, 71, 2003, - 71, 1990, 1994, 1999, 1995, 1996, 71, 2002, 1993, 1998, - 71, 71, 71, 2006, 2004, 1997, 2000, 2007, 2001, 71, - 71, 71, 2010, 71, 2009, 71, 2005, 71, 2012, 71, - 71, 2008, 2013, 71, 71, 71, 2014, 2018, 71, 2011, + 71, 71, 71, 71, 1974, 71, 71, 1965, 1971, 1966, + 1970, 71, 71, 1978, 71, 1975, 1973, 71, 1980, 1972, + 1977, 71, 71, 1976, 1984, 71, 1979, 1982, 71, 71, + 71, 1985, 71, 1990, 1983, 1981, 71, 71, 71, 71, + 71, 1992, 71, 71, 1993, 1986, 1987, 1988, 1994, 71, + 1989, 1995, 71, 71, 1991, 71, 1998, 71, 1997, 1996, + 71, 71, 1999, 71, 71, 71, 71, 71, 71, 71, + 71, 3083, 2001, 2002, 2007, 2004, 2011, 71, 2000, 2003, + 71, 2006, 2010, 71, 71, 2012, 2014, 2008, 71, 2009, + 71, 2005, 71, 2015, 2018, 2017, 71, 71, 71, 71, - 2020, 71, 2016, 2022, 71, 71, 2017, 2015, 71, 2019, - 71, 71, 2025, 2024, 71, 2021, 2026, 71, 71, 2027, - 2030, 71, 71, 71, 71, 71, 71, 2031, 2036, 71, - 71, 2023, 2033, 71, 2032, 2028, 71, 2037, 2029, 2035, - 2040, 71, 2034, 71, 71, 2038, 71, 71, 2041, 2042, - 2046, 71, 2044, 2039, 71, 71, 2048, 71, 2049, 2043, - 2045, 71, 71, 71, 71, 71, 2047, 2051, 71, 71, - 2050, 2055, 2057, 2053, 71, 71, 2054, 2058, 71, 71, - 2060, 2052, 71, 2059, 2062, 71, 2056, 2061, 71, 71, - 2063, 2067, 71, 71, 71, 2064, 71, 71, 2066, 71, + 2013, 71, 2020, 71, 2016, 2021, 71, 71, 2022, 2026, + 71, 71, 2024, 2028, 2019, 71, 71, 71, 2025, 2023, + 2030, 71, 2032, 71, 71, 2033, 71, 71, 71, 2027, + 2029, 2034, 2035, 2038, 71, 71, 71, 71, 71, 71, + 2039, 2031, 2036, 71, 2041, 2044, 71, 2040, 2037, 71, + 2045, 71, 2043, 2048, 71, 71, 2042, 71, 2046, 71, + 2049, 71, 71, 2050, 71, 2052, 2054, 71, 71, 2056, + 71, 2047, 2051, 2053, 2055, 71, 2057, 71, 71, 2058, + 71, 71, 2059, 2063, 71, 2064, 71, 71, 2065, 2061, + 71, 71, 2062, 2066, 71, 2067, 2060, 2072, 71, 2068, - 71, 71, 71, 71, 71, 71, 2076, 2077, 2065, 71, - 2071, 2068, 2069, 2070, 2072, 2073, 2074, 71, 2078, 71, - 2075, 71, 71, 2079, 71, 2081, 71, 71, 2082, 2087, - 71, 71, 2089, 71, 71, 2086, 2080, 2083, 2091, 2084, - 2088, 71, 71, 71, 3070, 2094, 2090, 2092, 71, 2085, - 2095, 71, 2096, 2097, 2093, 71, 2099, 71, 71, 71, - 2098, 2101, 71, 2100, 71, 2102, 71, 2106, 71, 71, - 2107, 71, 2110, 2109, 2115, 2105, 71, 71, 71, 2103, - 71, 2111, 2114, 2108, 71, 2112, 2113, 71, 71, 71, - 2104, 71, 2116, 71, 71, 2118, 71, 71, 71, 2120, + 71, 71, 2069, 2070, 71, 2071, 2075, 71, 71, 71, + 2074, 2073, 71, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 2076, 2084, 2081, 2078, 2077, 2079, 2082, 2080, + 2086, 71, 71, 71, 2091, 2083, 2085, 71, 2087, 2089, + 2090, 71, 2095, 71, 71, 2093, 2097, 71, 71, 71, + 2094, 2088, 71, 2096, 2100, 2092, 2099, 71, 2102, 2104, + 2105, 71, 71, 2103, 71, 71, 71, 2098, 71, 2107, + 2101, 2106, 2109, 71, 71, 2110, 71, 2114, 71, 71, + 2115, 71, 2108, 71, 2118, 2113, 71, 71, 2120, 2111, + 71, 2119, 71, 2116, 2121, 71, 2123, 2122, 71, 71, - 71, 71, 71, 2123, 71, 71, 2129, 71, 71, 2117, - 2127, 71, 2122, 71, 71, 2130, 2125, 71, 2119, 2121, - 2124, 2126, 2132, 2131, 71, 71, 2128, 71, 71, 71, - 2136, 2139, 71, 2135, 71, 71, 2134, 2140, 71, 2133, - 2137, 71, 71, 71, 71, 71, 2138, 2150, 71, 71, - 71, 2155, 71, 2141, 2142, 2151, 2147, 71, 71, 71, - 71, 2143, 2145, 2146, 2149, 2144, 2148, 2156, 71, 71, - 2152, 71, 2153, 2154, 2157, 71, 71, 71, 2160, 2166, - 2161, 2163, 71, 2162, 2158, 71, 71, 71, 71, 2159, - 2164, 2165, 2169, 71, 2170, 71, 71, 2172, 71, 71, + 2112, 2117, 71, 2124, 71, 71, 71, 71, 2126, 71, + 71, 2128, 71, 71, 71, 2131, 71, 71, 2125, 2137, + 71, 2135, 2130, 71, 71, 71, 71, 2138, 2133, 2140, + 2127, 2132, 2129, 71, 2134, 71, 71, 71, 71, 2136, + 2139, 2144, 2147, 71, 71, 2142, 71, 71, 71, 71, + 2145, 71, 2141, 71, 2143, 2148, 2146, 71, 71, 71, + 71, 2158, 71, 2149, 71, 2150, 71, 2159, 71, 2155, + 2153, 2151, 2160, 2152, 2154, 2157, 71, 2163, 71, 2156, + 2161, 2162, 2164, 71, 71, 71, 2165, 2166, 71, 71, + 2169, 71, 71, 2167, 2172, 71, 71, 2173, 2168, 71, - 2168, 2174, 71, 71, 71, 2177, 71, 2167, 71, 2176, - 2178, 71, 71, 71, 71, 2171, 71, 2173, 2175, 71, - 71, 2180, 2179, 3070, 2183, 2184, 71, 2181, 2186, 71, - 71, 71, 71, 2182, 2189, 2185, 2188, 71, 2187, 71, - 2190, 2192, 71, 71, 2196, 71, 71, 71, 71, 71, - 71, 2193, 2194, 2200, 71, 2191, 2201, 71, 71, 2203, - 71, 71, 2195, 2199, 2206, 71, 2197, 71, 71, 2202, - 2198, 71, 71, 2204, 2208, 2205, 71, 71, 2213, 71, - 71, 2207, 2209, 71, 71, 2215, 71, 71, 2214, 2210, - 2211, 71, 2219, 71, 2216, 71, 71, 2223, 2220, 71, + 2170, 2174, 71, 2171, 71, 2178, 71, 2179, 71, 71, + 2181, 71, 71, 2183, 71, 71, 2177, 71, 71, 2175, + 2185, 71, 2176, 2186, 71, 2187, 71, 2189, 2180, 71, + 2182, 71, 2184, 71, 71, 2188, 2193, 71, 2192, 2195, + 71, 71, 71, 2190, 71, 71, 2199, 2198, 2197, 71, + 2191, 2201, 71, 2194, 71, 71, 2205, 71, 71, 2196, + 71, 2200, 71, 71, 2210, 71, 71, 2209, 2202, 2203, + 71, 71, 71, 71, 2204, 2212, 71, 2208, 2206, 2215, + 71, 71, 71, 2207, 71, 2211, 2213, 2214, 2217, 71, + 2218, 71, 2222, 2216, 71, 71, 71, 2224, 71, 2225, - 2221, 2225, 2212, 71, 71, 71, 71, 2224, 2227, 2217, - 2228, 2218, 2222, 71, 2230, 2232, 71, 71, 2233, 2229, - 71, 71, 2234, 71, 71, 2226, 71, 2231, 71, 2237, - 71, 71, 71, 2238, 71, 3070, 2236, 2239, 2243, 2240, - 2241, 2235, 2244, 71, 71, 71, 2242, 2245, 71, 71, - 71, 2248, 71, 2249, 2246, 71, 2250, 71, 2247, 71, - 2256, 71, 71, 71, 2251, 2252, 71, 2253, 2254, 71, - 71, 71, 2258, 2255, 71, 71, 71, 2257, 2259, 2263, - 2264, 71, 2262, 2267, 71, 2260, 2261, 71, 2268, 2269, - 71, 71, 71, 2266, 2265, 2270, 2271, 2272, 2273, 2274, + 2219, 71, 2220, 2223, 71, 71, 2229, 71, 71, 2230, + 2228, 71, 71, 71, 2226, 2221, 2227, 2234, 2236, 71, + 2232, 71, 2239, 71, 2237, 2241, 71, 71, 71, 2233, + 2231, 71, 2242, 71, 71, 3083, 2238, 2235, 2243, 71, + 71, 71, 2246, 71, 2240, 71, 71, 2245, 71, 2247, + 2248, 2244, 2249, 2252, 2250, 2253, 71, 71, 71, 71, + 2251, 71, 2254, 71, 2257, 2256, 2258, 71, 2255, 71, + 2259, 71, 71, 2265, 71, 71, 71, 2261, 2260, 2262, + 71, 71, 71, 2263, 71, 2267, 71, 2264, 71, 2272, + 2266, 71, 2268, 2273, 2271, 71, 71, 2269, 2316, 2270, - 71, 71, 71, 71, 71, 71, 2276, 71, 71, 71, - 2280, 2281, 71, 71, 2277, 2275, 71, 71, 2283, 71, - 2284, 2278, 2285, 2286, 71, 71, 2282, 2279, 71, 71, - 2287, 71, 2291, 71, 71, 2290, 71, 2288, 71, 71, - 71, 2293, 71, 71, 71, 71, 2297, 2292, 71, 2289, - 2299, 2300, 71, 2309, 2296, 71, 71, 71, 2294, 2295, - 71, 2301, 2302, 2298, 2303, 2304, 2305, 71, 71, 71, - 2307, 71, 71, 2314, 2310, 2306, 71, 2312, 71, 71, - 71, 71, 2311, 2308, 2313, 2316, 71, 71, 2318, 71, - 2315, 71, 71, 71, 71, 71, 2317, 71, 2322, 2319, + 2276, 71, 71, 2277, 2278, 71, 71, 2275, 71, 2279, + 2281, 2274, 2282, 2280, 2283, 71, 71, 71, 71, 71, + 2285, 71, 71, 71, 71, 2289, 2290, 71, 71, 71, + 3083, 2284, 71, 2286, 2292, 71, 2287, 71, 71, 2293, + 2294, 2291, 2288, 2295, 71, 71, 71, 2297, 2298, 71, + 2296, 2300, 71, 2299, 71, 71, 71, 71, 71, 2301, + 2302, 71, 2306, 71, 2309, 71, 71, 71, 2308, 71, + 71, 2305, 2310, 71, 2303, 2315, 2304, 71, 2313, 71, + 2314, 2307, 71, 2311, 71, 2312, 71, 2320, 2317, 71, + 2319, 2318, 71, 2322, 71, 2324, 71, 71, 2323, 2326, - 2324, 71, 2325, 2326, 71, 2320, 2327, 71, 2321, 2328, - 71, 2329, 71, 71, 71, 71, 71, 2330, 2332, 2337, - 2323, 2335, 71, 71, 71, 71, 71, 71, 2334, 2340, - 71, 71, 2336, 2333, 2331, 71, 71, 2344, 2341, 2345, - 71, 2339, 2338, 71, 71, 71, 2342, 71, 2346, 2343, - 71, 71, 2349, 2350, 2348, 71, 71, 71, 71, 3070, - 71, 71, 2347, 2354, 2351, 2356, 2357, 71, 2353, 2352, - 2358, 71, 2359, 71, 2360, 71, 71, 2355, 71, 2362, - 71, 2364, 71, 2363, 71, 2365, 71, 71, 2361, 71, - 2370, 71, 71, 71, 2366, 2372, 71, 71, 2367, 2373, + 71, 71, 2328, 71, 71, 2327, 71, 71, 2321, 2325, + 71, 71, 71, 71, 71, 2332, 71, 2334, 2335, 71, + 2330, 71, 2329, 2331, 2336, 71, 2337, 71, 2338, 71, + 2339, 2344, 2340, 71, 71, 71, 2341, 2333, 2342, 2347, + 2343, 2345, 71, 71, 2346, 71, 71, 71, 2350, 71, + 71, 71, 71, 2351, 71, 2354, 2355, 71, 71, 71, + 3083, 2348, 2349, 2356, 71, 2352, 71, 71, 2358, 2353, + 2357, 2359, 71, 71, 2360, 71, 71, 71, 2361, 71, + 2364, 2362, 2366, 2367, 71, 2363, 2368, 71, 2369, 71, + 2370, 71, 71, 71, 71, 2374, 2365, 2372, 2373, 71, - 71, 71, 71, 71, 2374, 2369, 71, 2368, 2376, 2375, - 71, 2371, 71, 71, 2377, 2379, 2382, 71, 71, 71, - 71, 71, 2383, 2378, 71, 71, 2380, 71, 2389, 71, - 71, 71, 2381, 2386, 2390, 71, 71, 71, 2388, 2385, - 2396, 71, 71, 71, 2384, 2387, 2391, 2393, 2398, 71, - 2392, 71, 2394, 2406, 2399, 2397, 2400, 71, 71, 2395, - 2401, 71, 71, 2402, 71, 2403, 71, 2404, 71, 2405, - 71, 71, 71, 71, 71, 71, 71, 2407, 2414, 71, - 71, 2412, 71, 2418, 2419, 71, 71, 71, 2408, 2409, - 2422, 71, 2410, 2411, 2413, 2415, 2421, 2416, 2417, 71, + 2375, 71, 71, 71, 2371, 71, 2380, 71, 71, 2382, + 71, 2383, 71, 2376, 2377, 71, 71, 71, 71, 71, + 71, 2379, 71, 2378, 2386, 2389, 2384, 2381, 2385, 71, + 2387, 2392, 71, 71, 71, 71, 71, 71, 71, 2388, + 71, 2399, 2390, 2393, 71, 71, 71, 71, 71, 2391, + 2396, 71, 2398, 2400, 71, 2395, 3083, 2406, 71, 2394, + 2397, 2401, 2402, 2403, 71, 71, 71, 2410, 71, 2408, + 2404, 2409, 2407, 71, 2405, 2411, 71, 71, 2412, 71, + 2413, 71, 2414, 2415, 2416, 71, 71, 71, 71, 71, + 71, 71, 71, 71, 2424, 71, 71, 71, 71, 2422, - 71, 2424, 71, 71, 71, 71, 71, 71, 2420, 2423, - 71, 2427, 71, 2433, 71, 2434, 71, 2425, 71, 71, - 2428, 2426, 2435, 71, 2429, 2430, 2431, 71, 71, 71, - 71, 2432, 2439, 71, 2437, 71, 2436, 2443, 2442, 2444, - 71, 71, 2438, 2445, 2446, 71, 71, 71, 71, 2440, - 2441, 71, 71, 71, 71, 71, 2448, 71, 2452, 71, - 2457, 71, 2456, 2450, 71, 2447, 71, 2449, 2460, 71, - 71, 71, 2451, 71, 2453, 2455, 2454, 2461, 71, 2458, - 2464, 71, 2463, 71, 2459, 2462, 2466, 71, 71, 2469, - 71, 71, 71, 71, 2473, 71, 2465, 2472, 71, 2475, + 71, 2428, 2429, 71, 2417, 2419, 2418, 2431, 71, 2421, + 2420, 2423, 71, 2425, 2426, 2427, 71, 2430, 2432, 71, + 71, 2433, 2434, 71, 71, 71, 2435, 2437, 71, 71, + 71, 2443, 71, 71, 2436, 2444, 71, 71, 2445, 2438, + 71, 71, 71, 2439, 71, 2441, 2440, 2450, 71, 2442, + 71, 2446, 2447, 71, 71, 2449, 2454, 71, 2453, 2448, + 2455, 71, 71, 71, 2456, 2457, 71, 71, 2451, 71, + 2452, 71, 2459, 71, 71, 71, 2458, 71, 2463, 71, + 71, 2461, 2467, 2468, 71, 71, 2460, 2471, 71, 71, + 71, 2462, 71, 2472, 2464, 2466, 2465, 71, 2470, 71, - 71, 2471, 71, 2470, 71, 71, 71, 2467, 2468, 2476, - 71, 2477, 2480, 71, 71, 2481, 71, 2474, 2479, 2483, - 71, 2478, 71, 71, 71, 71, 2488, 71, 71, 2484, - 2490, 71, 2482, 2486, 2487, 2485, 71, 71, 2489, 71, - 71, 2491, 2492, 71, 71, 2494, 71, 2496, 71, 71, - 71, 2495, 2498, 2493, 2500, 2497, 71, 2503, 71, 2504, - 71, 2501, 71, 2499, 71, 2502, 71, 71, 2509, 2505, - 71, 2506, 71, 2511, 71, 2510, 71, 71, 71, 2514, - 71, 71, 2507, 2513, 2518, 2508, 2515, 71, 2517, 71, - 2516, 2512, 2519, 71, 71, 71, 2523, 2520, 71, 2521, + 2469, 2474, 2475, 71, 71, 2473, 71, 2477, 2480, 71, + 71, 71, 2476, 71, 2484, 71, 71, 2483, 2486, 71, + 2482, 71, 2481, 71, 2478, 71, 2479, 71, 2487, 71, + 2488, 2491, 71, 71, 2492, 2485, 2494, 71, 71, 2490, + 71, 2489, 71, 71, 2499, 71, 71, 2497, 2501, 71, + 71, 2493, 2498, 2495, 71, 2496, 71, 71, 71, 2502, + 71, 2500, 2503, 2505, 2504, 71, 71, 71, 2506, 71, + 71, 71, 2511, 71, 2508, 2507, 2512, 2509, 2514, 71, + 2516, 2510, 2515, 71, 71, 2513, 71, 71, 2520, 2517, + 71, 71, 2522, 71, 71, 2521, 71, 2525, 71, 2526, - 2522, 71, 71, 71, 71, 2524, 71, 71, 2525, 3070, - 2530, 2531, 71, 2526, 2529, 2528, 71, 71, 71, 71, - 71, 2527, 2535, 2532, 2533, 2534, 71, 71, 71, 71, - 71, 71, 2537, 2538, 71, 71, 71, 2543, 2536, 71, - 2541, 71, 71, 2540, 2542, 71, 71, 2539, 2544, 2548, - 71, 2550, 71, 2545, 2552, 71, 71, 71, 71, 71, - 71, 2546, 3070, 2556, 2547, 2549, 71, 2551, 2557, 71, - 2559, 2560, 2554, 2561, 2563, 2553, 71, 71, 2555, 71, - 2562, 71, 71, 71, 71, 2558, 71, 2564, 71, 71, - 2567, 71, 2565, 71, 2570, 2572, 71, 2566, 2573, 71, + 71, 2524, 71, 3083, 2518, 2519, 2528, 71, 2523, 71, + 71, 2530, 2529, 71, 71, 2527, 2531, 71, 2532, 2533, + 2534, 71, 71, 71, 71, 2535, 71, 2536, 71, 2541, + 71, 2540, 2537, 71, 2542, 71, 2539, 71, 2543, 2538, + 71, 71, 2544, 71, 71, 71, 2545, 2546, 2548, 2547, + 2549, 71, 71, 71, 71, 71, 2554, 71, 71, 71, + 71, 71, 2552, 2553, 71, 2551, 2555, 2559, 71, 2550, + 71, 2560, 71, 2564, 71, 2563, 71, 2556, 71, 2557, + 2558, 2562, 71, 71, 2569, 71, 71, 2568, 2571, 2561, + 2572, 2573, 71, 2566, 71, 2565, 71, 71, 2574, 71, - 2574, 71, 2568, 71, 2569, 71, 71, 2575, 71, 2571, - 2576, 2577, 71, 2579, 2581, 71, 71, 71, 2584, 2582, - 71, 2585, 71, 2586, 71, 71, 2578, 2580, 2587, 71, - 71, 71, 2591, 71, 71, 2592, 2583, 2593, 71, 71, - 2595, 71, 2588, 71, 71, 71, 2599, 71, 2589, 2600, - 71, 2590, 71, 71, 2594, 2602, 2596, 2601, 71, 2598, - 2603, 71, 2597, 71, 71, 71, 2608, 2611, 71, 71, - 2604, 2607, 71, 2610, 71, 71, 71, 71, 2605, 2612, - 2614, 71, 71, 2606, 2613, 2616, 71, 71, 71, 2609, - 71, 2619, 2623, 71, 71, 71, 71, 71, 2617, 2618, + 2575, 71, 2567, 71, 71, 71, 2576, 71, 71, 2579, + 71, 2570, 2577, 71, 2582, 2584, 71, 2578, 2585, 71, + 71, 2580, 71, 2581, 2586, 71, 2587, 71, 2583, 2589, + 71, 71, 2588, 71, 71, 71, 2591, 2593, 71, 2596, + 2590, 71, 2594, 71, 2599, 2592, 2597, 71, 2598, 71, + 71, 71, 71, 2601, 2595, 2603, 71, 71, 2604, 2605, + 71, 2607, 71, 2600, 71, 71, 71, 2606, 2611, 2612, + 71, 2602, 71, 2614, 71, 71, 2613, 2608, 2615, 71, + 2610, 71, 71, 2609, 71, 2620, 71, 71, 71, 71, + 2619, 71, 2622, 2623, 71, 71, 71, 2625, 2616, 2626, - 2615, 71, 2639, 71, 2622, 2620, 2625, 71, 2621, 2624, - 2627, 2630, 71, 2628, 2626, 2629, 2631, 71, 2633, 71, - 2632, 71, 2634, 71, 2635, 71, 2636, 71, 2637, 71, - 71, 71, 2640, 71, 71, 2645, 71, 71, 71, 71, - 2642, 2646, 2648, 71, 71, 2638, 2649, 2650, 71, 2651, - 2652, 71, 71, 2643, 2644, 2647, 2641, 71, 71, 71, - 71, 2653, 2657, 71, 2658, 71, 2654, 2655, 71, 71, - 2661, 71, 71, 71, 2659, 2662, 71, 2656, 2666, 71, - 2664, 71, 2663, 2660, 71, 2665, 2667, 71, 2668, 71, - 71, 71, 71, 2669, 71, 71, 71, 2670, 71, 2672, + 2624, 2617, 2618, 71, 71, 71, 2628, 71, 71, 71, + 2631, 2621, 2627, 2635, 71, 71, 71, 71, 71, 2637, + 71, 2629, 2630, 2634, 71, 2632, 71, 2638, 2633, 2636, + 2642, 2639, 2641, 2645, 71, 2643, 71, 2640, 71, 2644, + 71, 2646, 71, 2647, 71, 2648, 71, 2649, 71, 71, + 71, 71, 2653, 2651, 2650, 71, 2657, 71, 71, 2654, + 2658, 71, 71, 2661, 71, 2659, 71, 2663, 71, 2652, + 71, 2655, 71, 2662, 71, 2656, 2660, 2664, 2665, 71, + 71, 71, 71, 2666, 2670, 71, 2671, 71, 2669, 2667, + 2668, 71, 2674, 71, 71, 71, 2672, 2675, 71, 2678, - 2677, 71, 2671, 2673, 2675, 71, 71, 71, 2678, 71, - 2680, 71, 2681, 2932, 2676, 71, 2682, 2674, 2683, 2679, - 71, 2691, 71, 2685, 71, 2684, 2686, 2687, 71, 2688, - 71, 2689, 71, 2690, 71, 71, 2694, 71, 71, 71, - 2693, 71, 71, 2695, 2696, 2697, 71, 71, 71, 71, - 2702, 71, 2700, 2692, 3070, 2698, 71, 2704, 71, 71, - 71, 71, 2699, 2705, 71, 2706, 2701, 71, 2708, 2707, - 2709, 71, 2712, 71, 2703, 71, 2710, 71, 71, 71, - 71, 71, 2715, 71, 71, 2722, 71, 71, 2713, 2716, - 2714, 2711, 2719, 71, 71, 2717, 2724, 71, 2720, 71, + 71, 71, 2677, 2680, 71, 2679, 2673, 2676, 2681, 71, + 71, 71, 71, 71, 71, 2682, 71, 71, 2690, 71, + 71, 2685, 71, 71, 71, 2686, 2688, 2693, 2694, 2684, + 3083, 2691, 71, 2695, 71, 2683, 2689, 71, 71, 2687, + 71, 2692, 2697, 2696, 71, 2698, 2700, 71, 2699, 2701, + 71, 2702, 71, 71, 71, 71, 71, 2707, 2704, 2705, + 2706, 2708, 2703, 71, 71, 2710, 71, 71, 71, 2709, + 2715, 71, 2711, 2713, 71, 71, 71, 2717, 71, 2718, + 71, 71, 71, 2721, 71, 2719, 2720, 71, 2712, 2714, + 71, 2725, 71, 71, 71, 71, 71, 71, 71, 2716, - 2718, 2725, 71, 2727, 71, 71, 2723, 71, 71, 2721, - 71, 71, 2732, 71, 71, 2726, 2731, 71, 71, 2733, - 71, 2728, 71, 2729, 2730, 71, 2736, 2742, 2737, 2739, - 71, 71, 2741, 2734, 2744, 71, 2735, 2738, 71, 71, - 2740, 2745, 71, 2747, 71, 71, 71, 71, 2752, 71, - 71, 71, 3070, 2743, 71, 2750, 2749, 2756, 71, 2746, - 71, 71, 2754, 2748, 2757, 71, 2758, 2751, 2753, 71, - 2761, 2755, 2759, 2762, 71, 71, 71, 2764, 2763, 71, - 71, 71, 71, 71, 2769, 2766, 2767, 71, 71, 2760, - 71, 2772, 71, 71, 71, 71, 71, 2765, 2777, 71, + 2728, 71, 2723, 2722, 2729, 71, 2726, 2727, 71, 2732, + 2724, 71, 71, 2730, 2735, 71, 2733, 2731, 2737, 71, + 2738, 71, 2740, 71, 71, 71, 71, 2736, 71, 71, + 71, 2734, 71, 2739, 2744, 2745, 71, 71, 2749, 71, + 2741, 2742, 2743, 71, 2752, 71, 71, 71, 2746, 2754, + 71, 2748, 2755, 2747, 71, 71, 71, 2750, 2751, 2757, + 71, 2758, 71, 2760, 71, 71, 2753, 2762, 71, 2765, + 71, 71, 2756, 71, 2759, 71, 71, 2763, 2769, 71, + 71, 71, 3083, 2761, 2770, 2764, 71, 2771, 2767, 2766, + 2774, 2768, 2772, 2773, 2775, 71, 71, 71, 2777, 71, - 2773, 2768, 71, 71, 2770, 2771, 2780, 71, 2776, 2781, - 71, 2774, 2779, 71, 71, 2778, 2783, 71, 2782, 2775, - 2785, 71, 2784, 2786, 71, 2787, 71, 71, 2789, 71, - 71, 71, 2788, 2790, 71, 71, 2794, 2795, 71, 71, - 71, 71, 2799, 71, 2800, 71, 71, 71, 71, 2801, - 2798, 2837, 2791, 2792, 2796, 71, 2793, 71, 71, 2797, - 2805, 71, 2804, 2806, 71, 71, 2802, 2803, 2809, 71, - 2807, 71, 2808, 71, 71, 2812, 71, 71, 2813, 2811, - 71, 2810, 71, 71, 71, 71, 71, 2816, 71, 71, - 2818, 71, 71, 2819, 71, 2817, 71, 2814, 71, 71, + 2776, 71, 71, 71, 71, 2782, 2779, 2780, 71, 2785, + 71, 71, 71, 71, 71, 71, 71, 2778, 2790, 71, + 71, 71, 2781, 71, 2786, 2783, 2784, 71, 2789, 2792, + 2811, 2787, 2793, 71, 71, 2791, 2794, 71, 71, 2788, + 71, 2796, 2803, 2795, 71, 2797, 2798, 71, 2799, 71, + 2800, 71, 71, 2802, 71, 71, 2804, 2801, 71, 2807, + 2808, 71, 71, 71, 2812, 71, 2805, 2813, 71, 2814, + 71, 71, 71, 71, 3083, 71, 2809, 2806, 2817, 2818, + 71, 2819, 71, 2810, 71, 2821, 2822, 71, 71, 2820, + 2815, 2816, 71, 2825, 71, 71, 2824, 71, 71, 2823, - 2815, 71, 71, 2828, 2829, 2820, 71, 2824, 2821, 2822, - 2823, 2825, 2826, 2831, 71, 71, 3070, 2827, 2894, 71, - 2832, 2830, 2833, 2835, 71, 2836, 71, 2834, 2838, 71, - 2839, 71, 2840, 2841, 71, 71, 2842, 2843, 2846, 71, - 2844, 2845, 71, 71, 2847, 71, 71, 71, 71, 71, - 2853, 71, 71, 71, 2852, 71, 71, 2856, 71, 3070, - 2848, 2849, 2855, 71, 71, 2857, 2850, 71, 2851, 71, - 2861, 2862, 71, 2858, 2863, 71, 2860, 2854, 71, 2864, - 71, 2859, 2868, 2865, 2870, 71, 71, 2869, 71, 2866, - 71, 71, 2867, 71, 71, 71, 2877, 71, 2874, 2875, + 2826, 71, 71, 71, 71, 71, 2829, 71, 71, 2831, + 71, 71, 2832, 71, 2830, 71, 71, 2827, 2828, 71, + 71, 2841, 71, 71, 2833, 2842, 2837, 2834, 2835, 2836, + 2838, 2839, 2844, 71, 2943, 71, 2840, 71, 71, 2843, + 2845, 2850, 2846, 2848, 71, 71, 2847, 2849, 71, 2851, + 71, 2852, 71, 2853, 2854, 71, 71, 2855, 2856, 2859, + 71, 2857, 2858, 2861, 71, 2860, 71, 71, 71, 71, + 71, 2866, 71, 71, 71, 2865, 71, 71, 2869, 71, + 71, 2862, 71, 2868, 71, 2878, 2870, 71, 2863, 2864, + 71, 2874, 71, 2873, 2871, 2875, 71, 71, 2867, 2881, - 2878, 2872, 71, 2880, 71, 71, 71, 71, 2879, 3070, - 2871, 2926, 2873, 71, 2876, 2881, 71, 2900, 2882, 2883, - 71, 2884, 71, 2885, 71, 2886, 71, 2887, 71, 2888, - 71, 2889, 71, 2890, 71, 71, 2892, 71, 71, 71, - 71, 71, 2897, 71, 2891, 71, 71, 2893, 71, 2901, - 2903, 71, 71, 71, 71, 2898, 2905, 71, 2899, 2895, - 2896, 2902, 71, 2907, 71, 2910, 71, 2909, 71, 71, - 2904, 71, 71, 71, 2912, 2908, 71, 71, 71, 71, - 2906, 71, 2911, 2916, 2919, 2913, 71, 2917, 71, 2915, - 2914, 2918, 2920, 2921, 71, 2922, 71, 2923, 71, 71, + 2872, 2876, 71, 71, 2882, 71, 2879, 2877, 2883, 2880, + 71, 71, 2884, 71, 71, 71, 2887, 2891, 2885, 71, + 2888, 2890, 71, 71, 3083, 2892, 2893, 71, 2894, 71, + 71, 2886, 2889, 2896, 71, 2895, 2897, 71, 2898, 71, + 2899, 71, 2900, 71, 2901, 71, 2902, 71, 2903, 71, + 71, 2905, 71, 71, 71, 71, 71, 71, 71, 2904, + 2910, 71, 2906, 71, 71, 71, 2907, 71, 2914, 71, + 2913, 2911, 2916, 71, 71, 2908, 2909, 2912, 2915, 71, + 71, 2920, 2918, 2917, 71, 2923, 71, 2922, 71, 71, + 71, 71, 2921, 2925, 71, 2919, 71, 71, 71, 71, - 71, 71, 2928, 71, 71, 71, 71, 2934, 2925, 2924, - 2931, 71, 71, 71, 2930, 71, 71, 71, 71, 2933, - 2927, 71, 71, 71, 2929, 2935, 2941, 71, 2948, 71, - 2936, 2937, 2938, 2940, 2942, 71, 71, 71, 2950, 71, - 2939, 2945, 2943, 2944, 71, 2951, 2949, 2947, 71, 2946, - 2952, 71, 2953, 71, 71, 71, 71, 71, 2956, 71, - 71, 2957, 2958, 2961, 71, 71, 71, 2954, 71, 71, - 71, 2964, 2966, 71, 2955, 2960, 71, 2963, 2962, 2969, - 71, 71, 71, 71, 2959, 2967, 2972, 71, 2965, 71, - 2973, 2974, 71, 2976, 71, 2968, 2970, 2977, 71, 71, + 2924, 71, 2929, 71, 2932, 71, 2928, 2930, 2926, 2939, + 2933, 71, 2927, 71, 2931, 2934, 71, 2935, 71, 2936, + 71, 71, 2938, 71, 71, 71, 2937, 2945, 71, 2944, + 71, 2940, 71, 2947, 71, 2941, 71, 71, 71, 71, + 71, 71, 71, 2946, 71, 71, 2942, 2948, 2954, 2949, + 71, 71, 71, 2951, 2950, 2953, 2955, 2958, 2961, 71, + 71, 2967, 2956, 2952, 2959, 2957, 2963, 71, 71, 2962, + 71, 2960, 71, 2964, 2965, 71, 2966, 71, 71, 71, + 71, 2969, 71, 2974, 2970, 2971, 71, 71, 2968, 71, + 71, 71, 2979, 71, 71, 2972, 2977, 2973, 71, 2976, - 2971, 71, 71, 71, 2982, 71, 71, 2981, 2978, 2983, - 71, 2975, 71, 71, 2979, 71, 71, 2980, 71, 71, - 2987, 71, 71, 2989, 71, 71, 71, 2984, 71, 2986, - 2994, 2995, 2985, 2988, 2991, 2992, 2996, 71, 2990, 71, - 71, 3000, 71, 2993, 71, 3002, 71, 3003, 2997, 3001, - 71, 71, 71, 71, 3008, 3004, 71, 2998, 3005, 2999, - 71, 3006, 3009, 71, 71, 3011, 71, 71, 71, 3010, - 71, 3007, 3012, 71, 71, 3017, 71, 3014, 71, 71, - 3020, 71, 3021, 71, 71, 71, 3013, 71, 71, 3024, - 71, 3019, 3015, 3016, 3022, 3018, 71, 3023, 71, 3028, + 2975, 2982, 71, 71, 71, 2985, 71, 71, 2986, 2980, + 2978, 71, 71, 71, 2989, 2990, 71, 2981, 2983, 2987, + 71, 71, 2984, 71, 71, 71, 71, 2991, 71, 2992, + 2994, 2988, 2995, 71, 2996, 71, 71, 71, 71, 71, + 71, 3000, 2993, 3002, 71, 2997, 2998, 71, 3001, 71, + 2999, 71, 71, 3004, 3007, 71, 3008, 3005, 3003, 3009, + 71, 71, 3013, 71, 71, 3015, 3006, 71, 3016, 3014, + 71, 71, 3010, 3011, 71, 3017, 71, 71, 3021, 3018, + 3012, 3019, 3022, 71, 71, 71, 3024, 71, 71, 71, + 3023, 71, 3025, 71, 71, 3030, 3020, 71, 3027, 71, - 71, 3029, 71, 3027, 71, 3032, 3025, 3026, 71, 71, - 3034, 71, 3035, 3030, 71, 71, 71, 3039, 71, 3036, - 71, 71, 3037, 3041, 71, 3040, 71, 3033, 3031, 3042, - 71, 3043, 71, 3044, 71, 3038, 71, 3048, 71, 3046, - 71, 71, 71, 71, 71, 71, 3050, 3051, 71, 3054, - 71, 3045, 3055, 71, 3070, 3047, 71, 3058, 71, 3049, - 3059, 71, 3052, 3053, 3056, 3060, 3061, 71, 71, 3057, - 3062, 71, 71, 71, 71, 3063, 71, 3064, 3065, 3068, - 71, 3069, 71, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3066, 3070, 3067, 43, 43, 43, 43, + 3033, 71, 71, 3034, 71, 71, 71, 71, 3026, 71, + 71, 3037, 3028, 3029, 3035, 3032, 3031, 3036, 71, 3041, + 71, 71, 71, 3040, 71, 3042, 3038, 71, 3039, 71, + 3045, 71, 3047, 71, 3043, 71, 3048, 71, 3049, 3052, + 71, 71, 71, 3046, 3050, 71, 3051, 3053, 3044, 71, + 71, 3054, 3055, 71, 71, 3061, 71, 3056, 71, 71, + 3058, 3057, 71, 3059, 3060, 71, 71, 3063, 71, 71, + 3064, 71, 3067, 3068, 71, 71, 71, 3071, 3062, 3072, + 71, 3083, 71, 3074, 71, 3065, 71, 3066, 3069, 3073, + 3075, 71, 71, 3076, 3070, 71, 71, 3077, 71, 3083, - 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, - 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, - 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, - 64, 74, 74, 3070, 74, 74, 74, 74, 141, 141, - 3070, 3070, 3070, 141, 141, 143, 143, 3070, 3070, 143, - 3070, 143, 145, 3070, 3070, 3070, 3070, 3070, 145, 148, - 148, 3070, 3070, 3070, 148, 148, 150, 3070, 3070, 3070, - 3070, 3070, 150, 152, 152, 3070, 152, 152, 152, 152, - 75, 75, 3070, 75, 75, 75, 75, 13, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3078, 3081, 71, 3082, 71, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3079, 3083, 3080, 43, 43, + 43, 43, 43, 43, 43, 48, 48, 48, 48, 48, + 48, 48, 53, 53, 53, 53, 53, 53, 53, 59, + 59, 59, 59, 59, 59, 59, 64, 64, 64, 64, + 64, 64, 64, 74, 74, 3083, 74, 74, 74, 74, + 141, 141, 3083, 3083, 3083, 141, 141, 143, 143, 3083, + 3083, 143, 3083, 143, 145, 3083, 3083, 3083, 3083, 3083, + 145, 148, 148, 3083, 3083, 3083, 148, 148, 150, 3083, + 3083, 3083, 3083, 3083, 150, 152, 152, 3083, 152, 152, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 152, 152, 75, 75, 3083, 75, 75, 75, 75, 13, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083 } ; -static const flex_int16_t yy_chk[6029] = +static const flex_int16_t yy_chk[6051] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2107,13 +2115,13 @@ static const flex_int16_t yy_chk[6029] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3076, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3089, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1010, 24, 24, + 34, 21, 23, 24, 12, 23, 24, 1012, 24, 24, 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, @@ -2236,532 +2244,534 @@ static const flex_int16_t yy_chk[6029] = 522, 521, 524, 526, 526, 528, 528, 529, 529, 530, 532, 533, 534, 532, 535, 530, 533, 536, 531, 537, 536, 538, 535, 539, 537, 540, 541, 543, 544, 540, - 542, 534, 541, 544, 542, 545, 547, 546, 548, 550, - 553, 547, 539, 546, 538, 543, 549, 551, 551, 549, - 552, 557, 548, 556, 549, 545, 553, 550, 549, 554, - 555, 560, 59, 559, 554, 555, 557, 556, 552, 559, - 560, 561, 562, 563, 561, 566, 562, 564, 563, 565, + 542, 534, 541, 544, 542, 545, 547, 546, 548, 551, + 551, 547, 539, 546, 538, 543, 549, 550, 552, 549, + 59, 553, 548, 557, 549, 545, 554, 549, 549, 555, + 556, 554, 560, 559, 555, 550, 552, 553, 557, 559, + 561, 560, 562, 561, 556, 563, 562, 565, 564, 566, - 564, 567, 569, 570, 565, 571, 572, 572, 570, 574, - 575, 566, 573, 576, 578, 569, 54, 577, 562, 567, - 578, 573, 576, 584, 579, 571, 575, 612, 574, 577, - 579, 580, 581, 581, 580, 581, 582, 583, 585, 582, - 586, 584, 583, 587, 588, 612, 586, 596, 587, 592, - 588, 589, 585, 590, 589, 591, 593, 595, 590, 594, - 591, 591, 592, 595, 594, 597, 596, 598, 599, 593, - 600, 600, 598, 601, 597, 604, 603, 608, 594, 594, - 601, 602, 603, 613, 602, 605, 606, 604, 599, 610, - 605, 606, 606, 607, 607, 609, 611, 609, 611, 602, + 563, 564, 565, 567, 569, 570, 571, 572, 572, 574, + 570, 573, 577, 575, 576, 566, 578, 569, 562, 579, + 573, 567, 578, 576, 577, 579, 571, 580, 574, 575, + 580, 581, 581, 582, 581, 583, 582, 584, 585, 586, + 583, 587, 588, 596, 589, 586, 587, 589, 588, 590, + 592, 591, 585, 593, 590, 584, 591, 591, 608, 594, + 597, 595, 596, 592, 594, 598, 593, 595, 599, 597, + 598, 600, 600, 601, 602, 603, 54, 602, 594, 594, + 601, 603, 604, 608, 605, 606, 607, 607, 599, 605, + 606, 606, 602, 609, 604, 609, 610, 611, 612, 611, - 614, 613, 608, 615, 616, 617, 618, 619, 610, 624, - 618, 617, 620, 621, 622, 623, 619, 626, 614, 627, - 625, 624, 615, 626, 616, 628, 629, 620, 621, 630, - 633, 632, 622, 627, 623, 625, 631, 628, 634, 635, - 631, 636, 637, 639, 639, 629, 633, 637, 630, 632, - 638, 640, 641, 643, 642, 640, 634, 635, 635, 645, - 636, 644, 646, 647, 638, 642, 644, 643, 649, 651, - 648, 641, 650, 649, 651, 645, 647, 648, 652, 650, - 653, 646, 654, 652, 655, 656, 657, 659, 658, 654, - 662, 660, 659, 655, 660, 657, 663, 661, 653, 656, + 613, 614, 615, 616, 617, 618, 622, 620, 619, 618, + 617, 621, 623, 624, 625, 610, 612, 619, 613, 614, + 627, 615, 620, 616, 622, 624, 621, 626, 628, 625, + 629, 623, 630, 626, 627, 631, 632, 633, 634, 631, + 628, 635, 636, 637, 638, 639, 639, 53, 637, 629, + 641, 630, 642, 633, 632, 646, 634, 643, 638, 635, + 635, 636, 640, 642, 645, 644, 640, 653, 647, 641, + 644, 643, 648, 649, 646, 650, 656, 48, 649, 648, + 645, 647, 650, 651, 652, 653, 654, 655, 651, 652, + 656, 657, 658, 654, 659, 660, 655, 661, 660, 659, - 658, 661, 664, 666, 662, 663, 665, 667, 667, 668, - 668, 669, 669, 670, 672, 673, 674, 664, 668, 675, - 665, 673, 670, 675, 666, 676, 677, 678, 679, 682, - 680, 683, 681, 672, 679, 684, 674, 676, 680, 681, - 693, 705, 690, 687, 694, 678, 705, 682, 695, 693, - 694, 677, 697, 697, 700, 684, 683, 685, 687, 690, - 699, 696, 685, 702, 695, 696, 685, 698, 698, 685, - 701, 699, 700, 706, 703, 707, 685, 685, 720, 685, - 703, 708, 53, 702, 701, 704, 704, 704, 709, 704, - 720, 709, 704, 707, 706, 710, 710, 704, 711, 712, + 657, 661, 662, 663, 658, 664, 666, 665, 667, 667, + 668, 668, 663, 669, 669, 670, 662, 672, 674, 668, + 664, 665, 673, 676, 670, 675, 677, 666, 673, 675, + 678, 679, 680, 683, 681, 676, 672, 679, 674, 682, + 680, 681, 684, 690, 687, 693, 694, 702, 678, 695, + 699, 677, 694, 700, 693, 697, 697, 682, 683, 687, + 690, 699, 684, 685, 701, 695, 696, 702, 685, 706, + 696, 700, 685, 698, 698, 685, 705, 707, 701, 708, + 703, 705, 685, 685, 726, 685, 703, 704, 704, 704, + 706, 704, 726, 709, 704, 707, 709, 710, 710, 704, - 712, 713, 721, 704, 704, 711, 708, 714, 714, 715, - 716, 722, 717, 716, 715, 722, 713, 717, 718, 718, - 719, 721, 719, 723, 725, 724, 726, 726, 728, 730, - 727, 732, 725, 729, 729, 733, 731, 735, 735, 746, - 746, 733, 728, 723, 724, 727, 734, 730, 731, 736, - 739, 734, 738, 732, 736, 736, 739, 738, 740, 743, - 741, 742, 743, 744, 740, 741, 745, 742, 748, 744, - 747, 747, 749, 750, 745, 751, 748, 752, 750, 753, - 753, 755, 751, 754, 757, 756, 759, 761, 760, 755, - 749, 756, 754, 762, 767, 759, 752, 760, 762, 763, + 711, 712, 712, 713, 708, 704, 704, 711, 714, 715, + 715, 716, 717, 714, 718, 717, 716, 721, 713, 718, + 719, 719, 720, 722, 720, 724, 723, 725, 728, 721, + 723, 727, 727, 729, 730, 730, 731, 732, 733, 736, + 736, 992, 722, 728, 734, 724, 725, 729, 735, 732, + 734, 737, 992, 735, 731, 740, 737, 737, 739, 741, + 733, 740, 742, 739, 743, 741, 744, 742, 745, 744, + 743, 746, 747, 747, 745, 748, 748, 749, 750, 746, + 752, 751, 753, 754, 754, 749, 751, 752, 755, 757, + 756, 758, 762, 760, 761, 757, 750, 755, 756, 763, - 765, 764, 766, 757, 764, 765, 768, 769, 763, 771, - 771, 761, 770, 772, 773, 768, 766, 770, 770, 767, - 769, 774, 775, 776, 780, 778, 776, 778, 772, 782, - 774, 779, 779, 773, 776, 781, 783, 784, 785, 786, - 781, 788, 787, 789, 790, 780, 775, 789, 791, 792, - 782, 787, 793, 794, 795, 792, 783, 784, 796, 786, - 785, 793, 790, 797, 788, 794, 798, 791, 801, 797, - 799, 803, 796, 795, 802, 799, 800, 800, 804, 805, - 798, 806, 807, 802, 808, 813, 804, 809, 801, 810, - 812, 803, 811, 809, 814, 810, 812, 817, 818, 805, + 764, 753, 760, 761, 763, 765, 766, 767, 765, 764, + 758, 766, 768, 769, 770, 773, 762, 774, 771, 772, + 772, 767, 769, 771, 771, 775, 776, 770, 777, 784, + 773, 777, 781, 779, 775, 779, 774, 768, 782, 777, + 780, 780, 783, 782, 785, 786, 787, 788, 789, 784, + 776, 790, 791, 781, 792, 790, 788, 796, 797, 793, + 794, 43, 795, 783, 785, 793, 787, 786, 799, 794, + 791, 789, 797, 792, 795, 798, 796, 802, 800, 801, + 801, 798, 799, 800, 803, 804, 805, 806, 807, 808, + 810, 809, 811, 803, 805, 812, 810, 802, 811, 814, - 814, 807, 815, 806, 808, 813, 811, 816, 815, 819, - 818, 816, 820, 824, 819, 822, 817, 825, 818, 821, - 821, 822, 823, 826, 827, 823, 828, 828, 829, 826, - 825, 824, 830, 820, 831, 831, 832, 830, 833, 834, - 834, 835, 833, 837, 827, 836, 829, 838, 837, 840, - 841, 832, 843, 844, 846, 846, 847, 849, 849, 48, - 847, 848, 850, 835, 841, 836, 838, 851, 852, 869, - 869, 851, 843, 840, 844, 845, 848, 854, 845, 853, - 845, 855, 854, 852, 845, 857, 845, 850, 859, 861, - 858, 845, 856, 853, 858, 855, 845, 856, 856, 857, + 813, 14, 818, 819, 821, 804, 813, 806, 808, 812, + 807, 809, 815, 817, 816, 819, 828, 817, 815, 814, + 816, 818, 820, 819, 823, 821, 825, 820, 822, 822, + 823, 824, 826, 827, 824, 830, 828, 829, 829, 827, + 833, 831, 832, 832, 825, 826, 831, 834, 835, 835, + 836, 834, 838, 830, 837, 833, 839, 838, 841, 842, + 844, 848, 845, 847, 847, 848, 849, 850, 850, 851, + 853, 855, 836, 842, 837, 839, 855, 854, 856, 899, + 844, 849, 841, 845, 846, 853, 852, 846, 899, 846, + 852, 854, 856, 846, 851, 846, 857, 858, 860, 859, - 860, 861, 862, 859, 863, 860, 858, 862, 864, 865, - 866, 867, 872, 868, 873, 860, 866, 867, 863, 868, - 870, 871, 874, 865, 876, 870, 877, 871, 904, 864, - 878, 877, 881, 873, 872, 882, 876, 881, 879, 883, - 874, 875, 875, 882, 878, 880, 880, 875, 904, 875, - 879, 884, 885, 883, 887, 875, 886, 886, 887, 889, - 875, 875, 891, 890, 892, 889, 890, 875, 893, 895, - 884, 885, 43, 894, 893, 897, 898, 892, 894, 899, - 900, 891, 901, 902, 897, 898, 900, 903, 895, 905, - 906, 901, 903, 907, 910, 899, 911, 908, 909, 914, + 846, 857, 857, 859, 861, 846, 862, 863, 864, 861, + 865, 858, 863, 860, 866, 859, 873, 867, 862, 861, + 868, 869, 864, 867, 870, 870, 868, 869, 866, 871, + 872, 865, 874, 877, 871, 875, 872, 878, 873, 882, + 880, 883, 878, 879, 882, 877, 881, 881, 885, 883, + 884, 874, 880, 875, 876, 876, 886, 879, 887, 887, + 876, 888, 876, 890, 884, 888, 892, 885, 876, 890, + 894, 897, 893, 876, 876, 886, 891, 893, 895, 891, + 876, 896, 900, 894, 895, 892, 896, 901, 902, 903, + 897, 900, 904, 906, 902, 905, 907, 908, 903, 910, - 910, 917, 902, 905, 916, 907, 908, 909, 912, 918, - 906, 919, 920, 911, 912, 914, 921, 922, 916, 923, - 927, 917, 922, 930, 923, 919, 932, 926, 918, 927, - 920, 921, 926, 928, 928, 929, 930, 935, 933, 936, - 935, 929, 932, 933, 933, 934, 934, 937, 938, 934, - 939, 941, 940, 936, 942, 943, 944, 945, 946, 947, - 942, 950, 944, 946, 938, 940, 941, 937, 939, 953, - 14, 949, 945, 947, 949, 943, 951, 956, 952, 954, - 959, 951, 950, 952, 954, 953, 955, 958, 960, 956, - 964, 955, 961, 958, 960, 963, 959, 967, 961, 962, + 905, 912, 909, 901, 913, 918, 911, 912, 910, 916, + 907, 904, 914, 906, 909, 911, 919, 908, 914, 918, + 920, 913, 922, 921, 924, 916, 923, 925, 928, 924, + 930, 930, 925, 928, 929, 932, 919, 921, 931, 920, + 922, 923, 934, 929, 931, 935, 937, 938, 932, 937, + 935, 935, 936, 936, 939, 940, 936, 941, 934, 942, + 944, 938, 943, 945, 946, 947, 944, 949, 948, 952, + 946, 940, 942, 948, 939, 941, 951, 943, 955, 951, + 947, 949, 953, 945, 954, 958, 956, 953, 957, 954, + 952, 956, 960, 957, 955, 961, 962, 958, 960, 963, - 962, 968, 965, 969, 963, 965, 966, 966, 964, 970, - 972, 971, 970, 973, 979, 967, 972, 974, 980, 973, - 968, 975, 974, 969, 971, 976, 975, 977, 981, 986, - 976, 982, 979, 977, 981, 984, 982, 985, 980, 983, - 983, 987, 988, 990, 984, 988, 985, 986, 989, 991, - 992, 989, 993, 994, 990, 995, 999, 996, 997, 994, - 987, 995, 992, 997, 998, 998, 1000, 991, 1003, 1001, - 1002, 993, 996, 1004, 1002, 999, 1005, 1006, 1008, 1011, - 1000, 1001, 1004, 1009, 1009, 1012, 1003, 1013, 1017, 1014, - 1016, 1016, 1015, 1011, 1014, 1005, 13, 1008, 1018, 1013, + 964, 964, 962, 965, 966, 963, 967, 968, 968, 967, + 969, 961, 965, 970, 971, 972, 973, 974, 972, 975, + 981, 976, 966, 974, 982, 975, 976, 979, 969, 973, + 977, 978, 970, 979, 971, 977, 978, 983, 981, 986, + 984, 985, 985, 983, 982, 984, 987, 988, 986, 989, + 990, 991, 993, 990, 991, 987, 995, 994, 996, 998, + 997, 1001, 999, 1002, 996, 988, 997, 999, 989, 994, + 993, 1000, 1000, 1003, 998, 995, 1005, 1002, 1004, 1006, + 1001, 1007, 1004, 1008, 1010, 1003, 1011, 1011, 1006, 1015, + 1013, 1014, 1016, 1017, 1005, 1018, 1018, 1016, 1019, 1020, - 1012, 1015, 1006, 1019, 1018, 1020, 1023, 1022, 1017, 1019, - 1020, 1021, 1022, 1021, 1024, 1026, 1025, 1027, 1028, 1029, - 1023, 1025, 1030, 1032, 1032, 1028, 1033, 1034, 1024, 1035, - 1026, 1036, 1037, 1145, 1029, 1145, 1027, 1036, 1040, 1040, - 1033, 1030, 1038, 1041, 1035, 1034, 1043, 1038, 1041, 1042, - 1042, 1044, 1037, 1043, 1045, 1046, 1038, 1045, 1038, 1047, - 1048, 1038, 1049, 1050, 1052, 1044, 1051, 1049, 1053, 1048, - 1058, 1051, 1055, 1055, 1046, 1052, 1056, 1047, 1057, 1059, - 1064, 1056, 1050, 1057, 1059, 1060, 1061, 1053, 1062, 1060, - 1058, 1063, 1065, 1066, 1067, 1061, 1069, 1068, 1070, 1064, + 1007, 1015, 1017, 1010, 1013, 1020, 1014, 1021, 1008, 1022, + 1023, 1024, 1023, 1021, 1022, 1025, 1024, 1026, 1019, 1027, + 1028, 1029, 1031, 1030, 1027, 1032, 1034, 1034, 1035, 1025, + 1030, 1026, 1036, 1037, 1039, 1028, 13, 1031, 1043, 1038, + 1029, 1040, 1035, 1043, 1032, 1038, 1040, 1046, 1037, 1045, + 1036, 1042, 1042, 1048, 1039, 1040, 1045, 1040, 1044, 1044, + 1040, 1046, 1047, 1049, 1050, 1047, 1051, 1052, 1054, 1053, + 1055, 1051, 1048, 1050, 1053, 1057, 1057, 1058, 1059, 1054, + 1060, 1049, 1058, 1059, 1062, 1061, 1052, 1063, 1062, 1055, + 1061, 1064, 1065, 1066, 1069, 1068, 1063, 1067, 1071, 1070, - 1071, 1067, 1073, 1062, 1065, 1072, 1063, 1074, 1066, 1068, - 1075, 1072, 1076, 1081, 1078, 1069, 1080, 1073, 1071, 1070, - 1078, 1076, 1079, 1082, 1080, 1083, 1084, 1074, 1082, 1085, - 1075, 1084, 1084, 1081, 1087, 1086, 1079, 1083, 1088, 1088, - 1090, 0, 1091, 1093, 1093, 1095, 1092, 1087, 1085, 1086, - 1089, 1091, 1092, 1090, 1095, 1089, 1094, 1097, 1089, 1089, - 1096, 1094, 1097, 1089, 1100, 1098, 1096, 1099, 1099, 1089, - 1098, 1101, 1101, 1089, 1102, 1103, 1104, 1102, 1105, 1102, - 1106, 1107, 1108, 1109, 1110, 1100, 1107, 1105, 1112, 1147, - 1110, 1111, 1147, 1112, 1104, 1103, 1108, 1111, 1113, 1114, + 1060, 1069, 1072, 1073, 1075, 1076, 1064, 1065, 1074, 1067, + 1068, 1070, 1066, 1077, 1074, 1078, 1080, 1071, 1081, 1075, + 1082, 1073, 1080, 1072, 1078, 1076, 1083, 1084, 1082, 1085, + 1086, 1087, 1081, 1077, 1085, 1088, 1087, 1087, 1089, 0, + 1090, 1094, 1086, 1084, 1091, 1091, 1083, 1098, 1093, 1106, + 1094, 1095, 1089, 1090, 1088, 1092, 1098, 1095, 1096, 1096, + 1092, 1093, 1097, 1092, 1092, 1099, 1103, 1097, 1092, 1106, + 1100, 1099, 1101, 1107, 1092, 1100, 1108, 1101, 1092, 1102, + 1102, 1104, 1104, 1105, 1109, 1108, 1105, 1103, 1105, 1110, + 1112, 1107, 1111, 1113, 1110, 1114, 1116, 1115, 1117, 1113, - 1106, 1109, 1113, 1115, 1115, 1117, 1116, 1116, 1114, 1116, - 1119, 1120, 1121, 1114, 1119, 1114, 1117, 1114, 1122, 1114, - 1125, 1127, 1124, 1123, 1128, 1129, 1120, 1122, 1123, 1123, - 1121, 1124, 1126, 1128, 1130, 1127, 1131, 1126, 1134, 1132, - 1133, 1133, 1125, 1135, 1129, 1132, 1134, 1136, 1137, 1138, - 1131, 1139, 1136, 1130, 1140, 1141, 1143, 1135, 1138, 1149, - 1141, 1150, 1137, 1142, 1142, 1144, 1144, 1148, 1152, 1139, - 1150, 1143, 1148, 1151, 1151, 1153, 1153, 1155, 1149, 1140, - 1154, 1154, 1155, 1156, 1157, 1158, 1158, 1159, 1152, 1160, - 1161, 1162, 1160, 1163, 1165, 1164, 1162, 1164, 1167, 1168, + 1116, 1114, 1115, 1124, 1109, 1128, 1111, 1117, 1112, 1118, + 1118, 1122, 1117, 1120, 1117, 1122, 1117, 1123, 1117, 1119, + 1119, 1124, 1119, 1126, 1120, 1125, 1127, 1128, 1126, 1126, + 1130, 1129, 1123, 1131, 1125, 1127, 1129, 1132, 1133, 1134, + 1135, 1137, 1131, 1141, 1130, 1138, 1135, 1136, 1136, 1137, + 1139, 1140, 1141, 1134, 1142, 1139, 1132, 1133, 1143, 1138, + 1146, 1144, 1145, 1145, 1155, 1140, 1144, 1147, 1147, 1148, + 1150, 1148, 1142, 1150, 1151, 1146, 1152, 1153, 1159, 1151, + 1154, 1154, 1160, 1143, 1155, 1162, 1153, 1156, 1156, 1157, + 1157, 1158, 1161, 1161, 1163, 1152, 1158, 1163, 1164, 1159, - 0, 1167, 1163, 1169, 1156, 1157, 1170, 1159, 1169, 1172, - 1161, 1171, 1165, 1173, 1168, 1177, 1171, 1172, 1173, 1174, - 1170, 1175, 1175, 1176, 1174, 1178, 1180, 1179, 1176, 1182, - 1183, 1178, 1184, 1177, 1179, 1182, 1183, 1184, 1185, 1180, - 1186, 1187, 1188, 1190, 1185, 1189, 1189, 1192, 1193, 1186, - 1194, 1195, 1196, 1188, 1199, 1198, 1194, 1195, 1196, 1200, - 1187, 1198, 1205, 1190, 1201, 1203, 1202, 1192, 1199, 1204, - 1204, 1193, 1206, 1207, 1199, 1210, 1201, 1209, 1209, 1200, - 1202, 1208, 1205, 1203, 1211, 1213, 1208, 1214, 1215, 1211, - 1216, 1207, 1214, 1214, 1217, 1218, 1219, 1206, 1210, 1216, + 1166, 1165, 1167, 1160, 1167, 1162, 1165, 1168, 1170, 1166, + 1172, 1170, 1171, 1182, 1173, 1172, 1174, 1180, 1164, 1176, + 1182, 1174, 1175, 0, 1176, 1168, 1177, 1171, 1173, 1179, + 1175, 1177, 1178, 1178, 1179, 1180, 1181, 1183, 1185, 1186, + 1190, 1187, 1181, 1188, 1185, 1186, 1187, 1189, 1193, 1188, + 1183, 1191, 1192, 1192, 1195, 1196, 1189, 1197, 1198, 1190, + 1199, 1201, 1191, 1197, 1198, 1202, 1199, 1201, 1193, 1203, + 1204, 1209, 1205, 1206, 1195, 1207, 1207, 1208, 1196, 1202, + 1210, 1213, 1204, 1211, 1216, 1202, 1205, 1218, 1211, 1203, + 1214, 1206, 1212, 1212, 1217, 1214, 1209, 1208, 1210, 1217, - 1220, 1222, 1217, 1222, 1213, 1221, 1215, 1223, 1225, 1218, - 1221, 1219, 1226, 1221, 1225, 1220, 1226, 1227, 1220, 1228, - 1229, 1223, 1230, 1231, 1228, 1228, 1232, 1233, 1227, 1234, - 1235, 1232, 1237, 1238, 1234, 1239, 1240, 1240, 1241, 1229, - 1242, 1231, 1241, 1243, 1245, 1233, 1237, 1246, 1230, 1244, - 1235, 1238, 1248, 1239, 1247, 1244, 1245, 1249, 1242, 1250, - 1251, 1254, 1243, 1252, 1253, 1251, 1246, 1248, 1247, 1253, - 1252, 1255, 1249, 1256, 1256, 1257, 1258, 1259, 1250, 1254, - 1255, 1260, 1258, 1261, 1269, 1262, 1260, 1263, 1263, 1261, - 1257, 1262, 1264, 1264, 1266, 1266, 1267, 1268, 1259, 1270, + 1217, 1219, 1221, 1216, 1213, 1218, 1220, 1222, 1223, 1225, + 1219, 1225, 1224, 1226, 1220, 1228, 1221, 1224, 1230, 1232, + 1224, 1228, 1222, 1223, 1229, 1231, 1223, 1226, 1229, 1230, + 1231, 1231, 1233, 1234, 1235, 1236, 1237, 1238, 1232, 1235, + 1240, 1237, 1241, 1242, 1243, 1243, 1244, 1245, 1246, 1247, + 1244, 1234, 1248, 1236, 1240, 1247, 1249, 1238, 1233, 1250, + 1241, 1242, 1251, 1252, 1248, 1245, 1253, 1246, 1257, 1254, + 1262, 1256, 1255, 1250, 1254, 1249, 1256, 1251, 1252, 1255, + 1258, 1259, 1259, 1260, 1261, 1253, 1257, 1263, 1264, 1258, + 1261, 1262, 1263, 1265, 1264, 1266, 1267, 1267, 1260, 1265, - 1267, 1271, 1269, 1272, 1273, 1273, 1268, 1274, 1277, 1275, - 1272, 1278, 1281, 1270, 1276, 1279, 1271, 1275, 1280, 1276, - 1279, 1279, 1277, 1280, 1280, 1282, 1282, 1274, 1283, 1284, - 1278, 1285, 1281, 1286, 1287, 1288, 1289, 1290, 1286, 1291, - 1285, 1292, 1294, 1290, 1291, 1293, 1295, 1283, 1284, 1297, - 1296, 1293, 1295, 1287, 1289, 1288, 1296, 1298, 1299, 1300, - 1301, 1294, 1302, 1306, 1303, 1304, 1304, 1292, 1297, 1305, - 1307, 1307, 1305, 1311, 1301, 1306, 1298, 1299, 1300, 1303, - 1308, 1308, 1309, 1302, 1310, 1312, 1311, 1309, 1310, 1313, - 1314, 1318, 1314, 1316, 1312, 1317, 1314, 1319, 1320, 1325, + 1272, 1266, 1268, 1268, 1270, 1270, 1271, 1273, 1274, 1272, + 1271, 1275, 1276, 1277, 1277, 1278, 1279, 1281, 1280, 1276, + 1282, 1287, 1274, 1280, 1279, 1273, 1275, 1283, 1285, 1286, + 1286, 1281, 1283, 1283, 1288, 1278, 1284, 1289, 1290, 1282, + 1287, 1284, 1284, 1290, 1291, 1292, 1289, 1295, 1285, 1293, + 1294, 1296, 1295, 1288, 1297, 1298, 1294, 1301, 1299, 1302, + 1297, 1303, 1300, 1291, 1299, 1292, 1304, 1293, 1300, 1305, + 1306, 1307, 1308, 1308, 1298, 1310, 1301, 1296, 1302, 1309, + 1303, 0, 1309, 1305, 1315, 1304, 1307, 1310, 1311, 1311, + 1313, 1306, 1312, 1312, 1314, 1313, 1316, 1315, 1314, 1317, - 1317, 1323, 1313, 1321, 1321, 1322, 1318, 1323, 1324, 1314, - 1322, 1316, 1325, 1326, 1320, 1327, 1328, 1319, 1326, 1327, - 1328, 1329, 1330, 1324, 1331, 1332, 1333, 1333, 1335, 1337, - 1338, 1332, 1339, 1339, 1341, 1338, 1340, 1343, 1343, 1347, - 1330, 1329, 1340, 1348, 1331, 1345, 1335, 1351, 1345, 1352, - 1337, 1346, 1346, 1350, 1341, 1347, 1350, 1354, 1352, 1348, - 1353, 1353, 1355, 1356, 1357, 1358, 1360, 1351, 1361, 1357, - 1359, 1359, 1354, 1362, 1363, 1360, 1364, 1364, 1365, 1358, - 1366, 1368, 1356, 1355, 1367, 1371, 1361, 1373, 1362, 1367, - 1369, 1369, 1365, 1370, 1372, 1372, 1368, 1370, 1366, 1363, + 1318, 1322, 1318, 1320, 1321, 1316, 1318, 1323, 1324, 1321, + 1325, 1325, 1317, 1326, 1327, 1328, 1322, 1333, 1326, 1318, + 1327, 1320, 1329, 1330, 1324, 1331, 1334, 1323, 1330, 1331, + 1328, 1335, 1332, 1336, 1339, 1329, 1332, 1333, 1341, 1336, + 1337, 1337, 1342, 1344, 1334, 1343, 1343, 1342, 1345, 1344, + 1351, 1335, 1339, 1347, 1347, 1349, 1350, 1350, 1349, 1341, + 1352, 1354, 1355, 1356, 1354, 1358, 1351, 1359, 1345, 1357, + 1357, 1360, 1356, 1361, 1365, 1362, 1352, 1364, 1361, 1366, + 1358, 1367, 1355, 1363, 1363, 1369, 1364, 1370, 1359, 1362, + 1360, 1375, 1365, 1371, 1366, 1368, 1368, 1372, 1371, 1369, - 1374, 1376, 1375, 1377, 1380, 1371, 1375, 1381, 1377, 1373, - 1382, 1374, 1379, 1379, 1383, 1384, 1385, 1385, 1386, 1387, - 1376, 1381, 1380, 1386, 1388, 1389, 1390, 1391, 1383, 1382, - 1382, 1390, 1393, 1392, 1389, 1392, 1394, 1393, 1395, 1387, - 1384, 1398, 1394, 1396, 1388, 1399, 1399, 1391, 1400, 1396, - 1401, 1404, 1403, 1405, 1405, 1398, 1401, 1403, 1395, 1406, - 1406, 1408, 1407, 1409, 1413, 1410, 1415, 1400, 1410, 1411, - 1411, 1412, 1415, 1421, 1414, 1404, 1407, 1414, 1409, 1408, - 1414, 1416, 1417, 1412, 1413, 1417, 1416, 1419, 1420, 1423, - 1430, 1422, 1414, 1420, 1422, 1423, 1419, 1424, 1421, 1425, + 1373, 1373, 1377, 1374, 1378, 1370, 1367, 1374, 1376, 1376, + 1379, 1375, 1372, 1380, 1379, 1378, 1381, 1383, 1383, 1384, + 1385, 1381, 1386, 1388, 1377, 1387, 1389, 1389, 1390, 1391, + 1392, 1393, 1380, 1390, 1385, 1395, 1399, 1384, 1394, 1387, + 1393, 1386, 1386, 1394, 1396, 1398, 1396, 1397, 1388, 1391, + 1392, 1398, 1397, 1400, 1402, 1395, 1399, 1403, 1403, 1400, + 1404, 1405, 1408, 1411, 1407, 1409, 1409, 1405, 1402, 1407, + 1410, 1410, 1412, 1413, 1423, 1414, 1417, 1411, 1414, 1404, + 1415, 1415, 1416, 1423, 1421, 1419, 1408, 1421, 1413, 1418, + 1412, 1419, 1418, 1420, 1416, 1418, 1417, 1424, 1420, 1425, - 1425, 1417, 1424, 1426, 1426, 1427, 1429, 1428, 1430, 1431, - 1432, 1427, 1428, 1433, 1434, 1435, 1433, 1436, 1437, 1429, - 1434, 1435, 1436, 1438, 1437, 1442, 1439, 1443, 1431, 1441, - 1432, 1439, 1440, 1440, 1441, 1444, 1445, 1446, 1449, 1450, - 1447, 1448, 1451, 1442, 1449, 1453, 1438, 1443, 1456, 1452, - 1445, 1446, 1447, 1457, 1448, 1444, 1455, 1455, 1457, 1450, - 1458, 1458, 1451, 1452, 1459, 1461, 1453, 1460, 1456, 1462, - 1464, 1463, 1467, 1471, 1466, 1465, 1469, 1473, 1473, 1459, - 1463, 1460, 1465, 1466, 1476, 1464, 1466, 1462, 1467, 1461, - 1472, 1469, 1475, 1472, 1474, 1474, 1469, 1477, 1471, 1479, + 1427, 1426, 1424, 1421, 1426, 1428, 1427, 1418, 1429, 1429, + 1428, 1430, 1430, 1431, 1433, 1432, 1434, 1435, 1436, 1431, + 1432, 1442, 1437, 1438, 1425, 1437, 1439, 1433, 1440, 1438, + 1443, 1441, 1439, 1440, 1434, 1443, 1435, 1441, 1436, 1444, + 1444, 1445, 1446, 1447, 1442, 1448, 1445, 1449, 1450, 1453, + 1454, 1455, 1451, 1452, 1456, 1453, 1458, 1457, 1460, 1460, + 1446, 1449, 1450, 1447, 1451, 1448, 1452, 1455, 1461, 1464, + 1454, 1457, 1465, 1462, 1456, 1463, 1463, 1458, 1462, 1466, + 1467, 1468, 1469, 1476, 1464, 1470, 1465, 1471, 1461, 1472, + 1468, 1474, 1470, 1478, 1478, 1480, 1471, 1469, 1467, 1471, - 1477, 1480, 1476, 1481, 1475, 1478, 1478, 1483, 1481, 1482, - 1485, 1484, 1479, 1486, 1482, 1488, 1487, 1489, 1491, 1485, - 1480, 1490, 1490, 1489, 1488, 1487, 1483, 1484, 1487, 1492, - 1493, 1494, 1486, 1495, 1496, 1499, 1500, 1502, 1491, 1501, - 1501, 1503, 1492, 1505, 1505, 1494, 1496, 1504, 1493, 1495, - 1503, 1507, 1504, 1502, 1500, 1506, 1507, 1508, 1505, 1509, - 1499, 1510, 1513, 1511, 1506, 1515, 1514, 1506, 1511, 1511, - 1518, 0, 1516, 1519, 1519, 1508, 1513, 1516, 1517, 1510, - 1509, 1514, 1525, 1520, 1517, 1521, 1522, 1515, 1518, 1520, - 1521, 1523, 1522, 1526, 1527, 1528, 1529, 1523, 1530, 1529, + 1481, 1477, 1485, 1466, 1477, 1472, 1474, 1480, 1476, 1479, + 1479, 1474, 1482, 1483, 1483, 1482, 1484, 1486, 1481, 1487, + 1488, 1485, 1486, 1490, 1487, 1489, 1491, 1493, 1492, 1484, + 1495, 1495, 1490, 1496, 1497, 1499, 1493, 1492, 1494, 1488, + 1492, 1489, 1498, 1500, 1494, 1491, 1501, 1497, 1504, 1499, + 1505, 1506, 1506, 1496, 1507, 1508, 1509, 1511, 1501, 1500, + 1498, 1509, 1510, 1510, 1508, 1513, 1511, 1512, 1505, 1511, + 1507, 1514, 1512, 1504, 1516, 1515, 1518, 1510, 1520, 1516, + 1516, 1519, 1521, 1513, 1523, 1522, 1530, 1521, 1524, 1524, + 1518, 1522, 1514, 1515, 1526, 1525, 1519, 1527, 1528, 1526, - 1527, 1532, 1525, 1534, 1530, 1529, 1535, 1526, 1528, 1532, - 1536, 1537, 1559, 1538, 1539, 1540, 1541, 1559, 1536, 1545, - 1537, 1547, 1534, 1542, 1542, 1535, 1538, 1539, 1543, 1540, - 1541, 1544, 1545, 1548, 1543, 1546, 1546, 1544, 1549, 1550, - 1551, 1547, 1552, 1553, 1554, 1542, 1551, 1556, 1556, 1557, - 1558, 1548, 1550, 1560, 1558, 1561, 1562, 1549, 1560, 1553, - 1561, 1563, 1554, 1565, 1552, 1562, 1566, 1566, 1567, 1557, - 1568, 1569, 1570, 1570, 1571, 1575, 1572, 1573, 1565, 1574, - 1576, 1578, 1568, 1572, 1563, 1579, 1577, 1567, 1571, 1573, - 1569, 1574, 1577, 1578, 1575, 1580, 1581, 1581, 1586, 1582, + 1520, 1525, 1523, 1527, 1528, 1531, 1530, 1532, 1533, 1534, + 1535, 1539, 1534, 1532, 1537, 1540, 1535, 1541, 1534, 1531, + 1542, 1533, 1537, 1543, 1544, 1541, 1545, 1546, 1553, 1542, + 1539, 1547, 1547, 1548, 1540, 1550, 1543, 1544, 1549, 1548, + 1545, 1546, 1551, 1551, 1549, 1552, 1553, 1554, 1550, 1555, + 1556, 1557, 1558, 1547, 1559, 1562, 1556, 1561, 1561, 1563, + 1568, 1567, 1555, 1563, 1564, 1552, 1554, 1570, 1558, 1564, + 1567, 1565, 1559, 1557, 1566, 1562, 1565, 1571, 1571, 1566, + 1572, 1573, 1570, 1568, 1574, 1575, 1575, 1576, 1577, 1580, + 1578, 1581, 1579, 1573, 1582, 1577, 1584, 1583, 1676, 1572, - 1576, 1580, 1582, 1579, 1583, 1583, 1585, 1586, 1587, 1588, - 1588, 1585, 1589, 1590, 1587, 1590, 1591, 1592, 1593, 1591, - 1594, 1595, 1596, 1597, 1589, 1600, 1601, 1596, 1599, 1598, - 1600, 1602, 1597, 1606, 1606, 1601, 1608, 1592, 1594, 1595, - 1593, 1598, 1603, 1599, 1604, 1605, 1607, 1603, 1601, 1604, - 1609, 1602, 1607, 1611, 1603, 1610, 1612, 1608, 1612, 1617, - 1605, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1609, - 1621, 1610, 1623, 1611, 0, 1613, 1623, 1613, 1628, 1617, - 1618, 1618, 1619, 1619, 1622, 1622, 1624, 1625, 1627, 1620, - 1625, 1621, 1624, 1629, 1627, 1630, 1628, 1631, 1636, 1629, + 1582, 1576, 1578, 1574, 1579, 1676, 1585, 1587, 1580, 1583, + 1587, 1581, 1585, 1591, 1584, 1586, 1586, 1588, 1588, 1590, + 1592, 1594, 1591, 1595, 1590, 1595, 1592, 1593, 1593, 1596, + 1597, 1598, 1596, 1594, 1599, 1601, 1600, 1602, 1605, 1603, + 1601, 1604, 1607, 1605, 1609, 1613, 1602, 0, 1606, 1609, + 1597, 1603, 1599, 1598, 1600, 1608, 1604, 1606, 1610, 1612, + 1608, 1614, 1607, 1611, 1611, 1612, 1613, 1608, 1615, 1616, + 1606, 1618, 1617, 1610, 1617, 1619, 1619, 1620, 1620, 1622, + 1614, 1621, 1621, 1625, 1615, 1618, 1626, 1618, 1633, 1616, + 1623, 1623, 1624, 1624, 1627, 1627, 1628, 1629, 1630, 1622, - 1631, 1632, 1632, 1633, 1633, 1634, 1637, 1638, 0, 1635, - 1639, 1634, 1643, 1638, 1643, 1642, 1644, 1645, 1636, 1641, - 1630, 1635, 1635, 1635, 1641, 1641, 1637, 1644, 1635, 1642, - 1639, 1646, 1645, 1647, 1648, 1649, 1651, 1646, 1650, 1650, - 1652, 1652, 1647, 1653, 1654, 1655, 1655, 1656, 1656, 1657, - 1660, 1660, 1661, 1665, 1648, 1662, 1649, 1668, 1664, 1666, - 1667, 1667, 1651, 1653, 1662, 1666, 1654, 1664, 1669, 1657, - 1672, 1671, 1670, 1674, 1665, 1673, 1673, 1661, 1668, 1670, - 1671, 1675, 1677, 1669, 1678, 1679, 1680, 1677, 1681, 1682, - 1678, 1683, 1683, 1680, 1681, 1682, 1672, 1675, 1684, 1674, + 1628, 1630, 1632, 1629, 1625, 1634, 1633, 1626, 1632, 1635, + 1636, 1634, 1639, 1636, 1637, 1637, 1638, 1638, 1639, 1640, + 1641, 1642, 1643, 1644, 1645, 0, 1649, 1648, 1649, 1644, + 1647, 1640, 1640, 1640, 1635, 1647, 1647, 1650, 1640, 1642, + 1641, 1648, 1643, 1651, 1645, 1652, 1653, 1654, 1650, 1655, + 1657, 1652, 1656, 1656, 1659, 1653, 1658, 1658, 1651, 1660, + 1661, 1661, 1662, 1662, 1663, 1666, 1666, 1654, 1667, 1668, + 1655, 1670, 1675, 1671, 1659, 1674, 1657, 1672, 1668, 1677, + 1670, 1660, 1678, 1672, 1663, 1673, 1673, 1675, 1677, 1679, + 1679, 1680, 1683, 1667, 1671, 1681, 1674, 1683, 1684, 1685, - 1685, 1686, 1688, 1684, 1687, 1679, 1690, 1689, 1691, 1685, - 1689, 1692, 1692, 1693, 1688, 1695, 1694, 1696, 1699, 1693, - 1700, 1686, 1694, 1687, 1690, 1697, 1701, 1702, 1702, 1697, - 1703, 1701, 1696, 1704, 1691, 1695, 1706, 1707, 1699, 0, - 1708, 1707, 1700, 1709, 1714, 1697, 1708, 1712, 1704, 1703, - 1710, 1710, 1709, 1711, 1715, 1706, 1716, 1711, 1712, 1713, - 1713, 1717, 1718, 1712, 1719, 1714, 1717, 1720, 1715, 1722, - 1721, 1723, 1723, 1720, 1722, 1716, 1724, 1724, 1727, 1725, - 1728, 1729, 1718, 1725, 1719, 1721, 1736, 1727, 1730, 1730, - 1737, 1728, 1732, 1732, 1733, 1737, 1728, 1734, 1735, 1733, + 1686, 1689, 1689, 1687, 1684, 1690, 1688, 1686, 1678, 1687, + 1690, 1681, 1688, 1691, 1692, 1694, 1693, 1680, 1695, 1685, + 1696, 1695, 1691, 1697, 1698, 1698, 1699, 1694, 1701, 1702, + 1700, 1705, 1699, 1703, 1692, 1693, 1700, 1703, 1696, 1706, + 1707, 1708, 1708, 1709, 1702, 1707, 1715, 1712, 1701, 1697, + 1710, 1705, 1713, 1703, 1714, 1715, 1713, 1716, 1716, 1717, + 1714, 1706, 1709, 1717, 1718, 1710, 1712, 1719, 1719, 1720, + 1721, 1723, 1722, 1724, 1725, 1718, 1723, 1726, 1729, 1729, + 1718, 1727, 1728, 1726, 1721, 1730, 1730, 1728, 1731, 1733, + 1720, 1722, 1731, 1724, 1725, 1734, 1727, 1735, 1733, 1736, - 1733, 1729, 1738, 1734, 1735, 1739, 1741, 1743, 1744, 1742, - 1745, 1739, 1736, 1742, 1738, 1746, 1745, 1747, 1741, 1743, - 1748, 1751, 1750, 1747, 1752, 1754, 1755, 1755, 1754, 1752, - 1756, 1756, 1748, 1744, 1750, 1757, 1757, 1746, 1758, 1759, - 1751, 1760, 1763, 1761, 1762, 1759, 0, 1760, 1761, 1765, - 1762, 1763, 1767, 1768, 1765, 1767, 1769, 1769, 1758, 1771, - 1772, 1773, 1774, 1774, 1775, 1768, 1773, 1778, 1778, 1776, - 1777, 1771, 1772, 1775, 1776, 1777, 1779, 1780, 1783, 1781, - 1782, 1785, 1783, 1784, 1786, 1787, 1780, 1785, 1784, 1788, - 1789, 1791, 1791, 1792, 1787, 1797, 1779, 1781, 0, 1782, + 1736, 1738, 1738, 1739, 1740, 1742, 1734, 1741, 1739, 1739, + 1740, 1734, 1744, 1741, 1743, 1745, 1747, 1735, 1748, 1743, + 1749, 1745, 1748, 1750, 1744, 1752, 1754, 1751, 1747, 1753, + 1756, 1742, 1749, 1751, 1757, 1753, 1758, 1760, 1754, 1764, + 1760, 1758, 1756, 1761, 1761, 1762, 1762, 1752, 1750, 1763, + 1763, 1765, 1766, 1757, 1769, 1767, 1768, 1765, 1766, 1764, + 1767, 1771, 1768, 1769, 1773, 1774, 1771, 1773, 1775, 1775, + 1777, 1778, 1781, 1779, 1780, 1780, 1785, 1774, 1779, 1782, + 1783, 1781, 1777, 1778, 1782, 1783, 1784, 1784, 1786, 1787, + 1788, 1789, 1792, 1790, 1791, 1789, 1785, 1786, 1790, 1793, - 1793, 1795, 1786, 1791, 1789, 1794, 1794, 1788, 1796, 1793, - 1795, 1792, 1798, 1799, 1802, 1802, 1797, 1798, 1804, 1805, - 1796, 1804, 1806, 1809, 1808, 1810, 1799, 1811, 1812, 1812, - 1813, 1810, 1813, 1814, 1814, 1805, 1817, 1809, 1806, 1808, - 1815, 1818, 1820, 1817, 1811, 1819, 1819, 1821, 1815, 1825, - 1822, 1820, 1823, 1824, 1826, 1830, 1832, 1827, 1829, 1831, - 1831, 1818, 1822, 1827, 1823, 1824, 1833, 1830, 1821, 1826, - 1834, 1836, 1835, 1834, 1832, 1825, 1827, 1835, 1829, 1838, - 1839, 1840, 1839, 1841, 1838, 1842, 1833, 1844, 1841, 1846, - 1850, 1836, 1842, 1847, 1848, 1849, 1844, 1849, 1852, 1840, + 1791, 1794, 1795, 1797, 1797, 1798, 1802, 1787, 1793, 1788, + 1792, 1799, 1800, 1800, 1803, 1797, 1795, 1801, 1802, 1794, + 1799, 1805, 1804, 1798, 1808, 1808, 1801, 1804, 1810, 1811, + 1812, 1810, 1814, 1816, 1805, 1803, 1815, 1817, 1824, 1816, + 1818, 1818, 1819, 1821, 1819, 1811, 1812, 1814, 1820, 1820, + 1815, 1821, 1823, 1826, 1817, 1825, 1825, 1827, 1824, 1823, + 1828, 1829, 1826, 1831, 1830, 1832, 1833, 1839, 1834, 1836, + 1837, 0, 1828, 1829, 1834, 1831, 1838, 1838, 1827, 1830, + 1840, 1833, 1837, 1841, 1843, 1839, 1841, 1834, 1842, 1836, + 1845, 1832, 1846, 1842, 1846, 1845, 1847, 1848, 1849, 1851, - 1852, 1853, 1847, 1854, 1854, 1855, 1848, 1846, 1856, 1850, - 1857, 1858, 1857, 1856, 1859, 1853, 1858, 1860, 1861, 1859, - 1862, 1864, 1863, 1867, 1865, 1868, 1862, 1863, 1869, 1869, - 1871, 1855, 1865, 1872, 1864, 1860, 1870, 1870, 1861, 1868, - 1873, 1876, 1867, 1874, 1877, 1871, 1873, 1875, 1874, 1875, - 1878, 1878, 1877, 1872, 1879, 1880, 1880, 1881, 1881, 1876, - 1877, 1882, 1883, 1884, 1886, 1888, 1879, 1883, 1891, 1887, - 1882, 1887, 1889, 1886, 1890, 1893, 1886, 1889, 1889, 1894, - 1891, 1884, 1897, 1890, 1894, 1895, 1888, 1893, 1898, 1899, - 1895, 1900, 1900, 1901, 1902, 1897, 1904, 1903, 1899, 1905, + 1840, 1853, 1848, 1854, 1843, 1849, 1855, 1856, 1851, 1856, + 1857, 1859, 1854, 1859, 1847, 1862, 1860, 1863, 1855, 1853, + 1861, 1861, 1863, 1864, 1867, 1864, 1865, 1866, 1868, 1857, + 1860, 1865, 1866, 1869, 1871, 1870, 1872, 1874, 1875, 1869, + 1870, 1862, 1867, 1878, 1872, 1876, 1876, 1871, 1868, 1877, + 1877, 1879, 1875, 1880, 1883, 1881, 1874, 1884, 1878, 1880, + 1881, 1882, 1886, 1882, 1895, 1884, 1885, 1885, 1887, 1887, + 1889, 1879, 1883, 1884, 1886, 1888, 1888, 1890, 1891, 1889, + 1893, 1894, 1890, 1894, 1904, 1895, 1897, 1898, 1896, 1893, + 1900, 1905, 1893, 1896, 1896, 1897, 1891, 1904, 1901, 1898, - 1909, 1910, 1911, 1907, 1908, 1918, 1910, 1911, 1898, 1912, - 1904, 1901, 1902, 1903, 1905, 1907, 1908, 1915, 1912, 1917, - 1909, 1920, 1919, 1915, 1921, 1917, 1922, 1926, 1918, 1923, - 1923, 1924, 1925, 1925, 1927, 1922, 1915, 1919, 1927, 1920, - 1924, 1929, 1928, 1935, 0, 1930, 1926, 1928, 1934, 1921, - 1930, 1930, 1931, 1932, 1929, 1944, 1934, 1933, 1931, 1932, - 1933, 1938, 1938, 1935, 1939, 1939, 1940, 1941, 1941, 1942, - 1942, 1943, 1945, 1944, 1950, 1940, 1946, 1949, 1945, 1939, - 1950, 1946, 1949, 1943, 1947, 1947, 1948, 1948, 1952, 1953, - 1939, 1954, 1952, 1956, 1957, 1954, 1958, 1959, 1960, 1957, + 1902, 1906, 1900, 1901, 1908, 1902, 1907, 1907, 1909, 1910, + 1906, 1905, 1914, 1911, 1912, 1916, 1915, 1925, 1917, 1926, + 1928, 1919, 1908, 1917, 1914, 1910, 1909, 1911, 1915, 1912, + 1919, 1918, 1922, 1924, 1926, 1916, 1918, 1927, 1922, 1924, + 1925, 1929, 1930, 1930, 1931, 1928, 1932, 1932, 1933, 1935, + 1929, 1922, 1934, 1931, 1935, 1927, 1934, 1936, 1937, 1938, + 1939, 1941, 1942, 1937, 1937, 1938, 1939, 1933, 1940, 1941, + 1936, 1940, 1945, 1945, 1946, 1946, 1947, 1948, 1948, 1949, + 1949, 1950, 1942, 1951, 1952, 1947, 1953, 1954, 1954, 1946, + 1952, 1953, 1956, 1950, 1955, 1955, 1957, 1956, 1960, 1959, - 1962, 1963, 1961, 1960, 1965, 1964, 1966, 1966, 1968, 1953, - 1964, 1967, 1959, 1970, 1972, 1967, 1962, 1969, 1956, 1958, - 1961, 1963, 1969, 1968, 1971, 1973, 1965, 1974, 1975, 1978, - 1973, 1976, 1976, 1972, 1979, 1980, 1971, 1978, 1981, 1970, - 1974, 1982, 1984, 1983, 1985, 1986, 1975, 1989, 1989, 1988, - 1994, 1994, 1990, 1979, 1980, 1990, 1985, 1991, 1992, 2005, - 1993, 1981, 1983, 1984, 1988, 1982, 1986, 1995, 1995, 1997, - 1991, 2000, 1992, 1993, 1996, 1996, 1998, 1999, 1999, 2005, - 2000, 2001, 2001, 2000, 1997, 2002, 2004, 2006, 2007, 1998, - 2002, 2004, 2008, 2008, 2009, 2009, 2010, 2011, 2011, 2012, + 1946, 1951, 1957, 1959, 1961, 1963, 1964, 1966, 1961, 1965, + 1967, 1964, 1969, 1968, 1970, 1967, 1971, 1972, 1960, 1973, + 1973, 1971, 1966, 1974, 1976, 1975, 1977, 1974, 1969, 1976, + 1963, 1968, 1965, 1978, 1970, 1979, 1980, 1981, 1982, 1972, + 1975, 1980, 1983, 1983, 1986, 1978, 1987, 1985, 1988, 1989, + 1981, 1990, 1977, 1991, 1979, 1985, 1982, 1992, 1993, 1998, + 1995, 1996, 1996, 1986, 1997, 1987, 1999, 1997, 2000, 1992, + 1990, 1988, 1998, 1989, 1991, 1995, 2001, 2001, 2005, 1993, + 1999, 2000, 2002, 2002, 2003, 2006, 2003, 2004, 2004, 2007, + 2007, 2008, 2010, 2005, 2009, 2009, 2012, 2010, 2006, 2013, - 2007, 2013, 2013, 2014, 2015, 2016, 2016, 2006, 2018, 2015, - 2017, 2017, 2019, 2020, 2021, 2010, 2025, 2012, 2014, 2023, - 2027, 2019, 2018, 0, 2023, 2024, 2024, 2020, 2026, 2026, - 2028, 2029, 2032, 2021, 2029, 2025, 2028, 2033, 2027, 2030, - 2030, 2031, 2031, 2034, 2035, 2035, 2037, 2038, 2039, 2040, - 2042, 2032, 2033, 2040, 2043, 2030, 2041, 2041, 2044, 2043, - 2045, 2048, 2034, 2039, 2047, 2047, 2037, 2049, 2050, 2042, - 2038, 2051, 2052, 2044, 2049, 2045, 2053, 2054, 2054, 2055, - 2059, 2048, 2050, 2056, 2063, 2056, 2064, 2062, 2055, 2051, - 2052, 2057, 2059, 2060, 2057, 2061, 2065, 2063, 2060, 2066, + 2008, 2012, 2014, 2008, 2015, 2016, 2016, 2017, 2017, 2018, + 2019, 2019, 2020, 2021, 2021, 2023, 2015, 2022, 2027, 2013, + 2023, 2026, 2014, 2024, 2024, 2025, 2025, 2027, 2018, 2028, + 2020, 2029, 2022, 2031, 2033, 2026, 2032, 2032, 2031, 2034, + 2034, 2035, 2036, 2028, 2037, 2038, 2038, 2037, 2036, 2040, + 2029, 2039, 2039, 2033, 2041, 2042, 2043, 2043, 2045, 2035, + 2046, 2038, 2047, 2048, 2049, 2049, 2050, 2048, 2040, 2041, + 2051, 2052, 2053, 2056, 2042, 2051, 2058, 2047, 2045, 2055, + 2055, 2057, 2059, 2046, 2060, 2050, 2052, 2053, 2057, 2061, + 2058, 2062, 2062, 2056, 2063, 2064, 2065, 2064, 2067, 2065, - 2061, 2065, 2053, 2068, 2070, 2069, 2072, 2064, 2068, 2057, - 2069, 2057, 2062, 2074, 2071, 2073, 2076, 2075, 2074, 2070, - 2071, 2073, 2075, 2077, 2079, 2066, 2078, 2072, 2080, 2078, - 2081, 2082, 2083, 2079, 2088, 0, 2077, 2080, 2084, 2081, - 2082, 2076, 2085, 2086, 2084, 2094, 2083, 2086, 2085, 2090, - 2091, 2091, 2096, 2092, 2088, 2093, 2093, 2097, 2090, 2092, - 2098, 2098, 2099, 2100, 2093, 2094, 2102, 2094, 2096, 2103, - 2105, 2104, 2100, 2097, 2109, 2108, 2107, 2099, 2102, 2107, - 2108, 2110, 2105, 2111, 2111, 2103, 2104, 2112, 2112, 2114, - 2114, 2116, 2115, 2110, 2109, 2115, 2116, 2117, 2118, 2119, + 2059, 2068, 2060, 2063, 2069, 2070, 2068, 2071, 2072, 2069, + 2067, 2074, 2073, 2076, 2065, 2061, 2065, 2073, 2076, 2077, + 2071, 2078, 2079, 2080, 2077, 2081, 2084, 2082, 2079, 2072, + 2070, 2081, 2082, 2083, 2085, 0, 2078, 2074, 2083, 2086, + 2087, 2088, 2086, 2089, 2080, 2090, 2091, 2085, 2096, 2087, + 2088, 2084, 2089, 2092, 2090, 2093, 2098, 2102, 2094, 2092, + 2091, 2093, 2094, 2099, 2099, 2098, 2100, 2104, 2096, 2101, + 2101, 2105, 2100, 2106, 2106, 2107, 2108, 2102, 2101, 2102, + 2110, 2111, 2113, 2104, 2112, 2108, 2115, 2105, 2116, 2115, + 2107, 2117, 2110, 2116, 2113, 2118, 2163, 2111, 2163, 2112, - 2119, 2120, 2122, 2117, 2118, 2121, 2121, 2123, 2124, 2125, - 2125, 2126, 2127, 2128, 2122, 2120, 2130, 2126, 2128, 2131, - 2130, 2123, 2131, 2132, 2132, 2133, 2127, 2124, 2134, 2135, - 2133, 2136, 2137, 2137, 2138, 2136, 2140, 2134, 2141, 2142, - 2143, 2140, 2144, 2145, 2149, 2146, 2144, 2138, 2151, 2135, - 2146, 2147, 2159, 2159, 2143, 2148, 2161, 2147, 2141, 2142, - 2152, 2148, 2149, 2145, 2151, 2152, 2153, 2154, 2155, 2158, - 2155, 2160, 2153, 2165, 2160, 2154, 2162, 2162, 2166, 2165, - 2164, 2173, 2161, 2158, 2164, 2167, 2167, 2168, 2171, 2171, - 2166, 2175, 2176, 2179, 2180, 2181, 2168, 2182, 2179, 2173, + 2119, 2119, 2120, 2120, 2122, 2122, 2123, 2118, 2124, 2123, + 2125, 2117, 2126, 2124, 2127, 2127, 2125, 2128, 2126, 2129, + 2129, 2130, 2131, 2132, 2133, 2133, 2134, 2135, 2143, 2136, + 0, 2128, 2134, 2130, 2136, 2138, 2131, 2139, 2142, 2138, + 2139, 2135, 2132, 2140, 2140, 2141, 2146, 2142, 2143, 2144, + 2141, 2145, 2145, 2144, 2149, 2148, 2150, 2151, 2152, 2146, + 2148, 2153, 2152, 2154, 2155, 2157, 2156, 2162, 2154, 2159, + 2155, 2151, 2156, 2160, 2149, 2162, 2150, 2167, 2160, 2165, + 2161, 2153, 2170, 2157, 2169, 2159, 2161, 2169, 2165, 2168, + 2168, 2167, 2171, 2171, 2173, 2174, 2177, 2175, 2173, 2176, - 2181, 2189, 2182, 2183, 2183, 2175, 2185, 2185, 2176, 2187, - 2188, 2188, 2190, 2191, 2193, 2187, 2194, 2189, 2191, 2198, - 2180, 2195, 2195, 2197, 2199, 2198, 2200, 2204, 2194, 2202, - 2202, 2205, 2197, 2193, 2190, 2203, 2207, 2207, 2203, 2208, - 2208, 2200, 2199, 2209, 2210, 2211, 2204, 2212, 2209, 2205, - 2214, 2213, 2212, 2213, 2211, 2215, 2216, 2218, 2217, 0, - 2219, 2225, 2210, 2217, 2214, 2219, 2220, 2220, 2216, 2215, - 2221, 2221, 2222, 2222, 2223, 2223, 2224, 2218, 2226, 2225, - 2227, 2227, 2229, 2226, 2228, 2228, 2230, 2231, 2224, 2232, - 2233, 2233, 2234, 2237, 2229, 2235, 2235, 2238, 2230, 2236, + 2176, 2174, 2180, 2180, 2182, 2177, 2184, 2185, 2170, 2175, + 2188, 2189, 2190, 2191, 2199, 2188, 2198, 2190, 2191, 2203, + 2184, 2202, 2182, 2185, 2192, 2192, 2194, 2194, 2196, 2197, + 2197, 2203, 2198, 2200, 2196, 2206, 2199, 2189, 2200, 2207, + 2202, 2204, 2204, 2208, 2206, 2207, 2213, 2209, 2211, 2211, + 2212, 2214, 2219, 2212, 2216, 2216, 2217, 2217, 2218, 2220, + 0, 2208, 2209, 2218, 2223, 2213, 2221, 2224, 2220, 2214, + 2219, 2221, 2222, 2225, 2222, 2226, 2227, 2228, 2223, 2234, + 2226, 2224, 2228, 2229, 2229, 2225, 2230, 2230, 2231, 2231, + 2232, 2232, 2233, 2235, 2236, 2236, 2227, 2234, 2235, 2237, - 2236, 2239, 2240, 2241, 2237, 2232, 2243, 2231, 2239, 2238, - 2242, 2234, 2244, 2246, 2240, 2242, 2245, 2245, 2247, 2248, - 2249, 2250, 2246, 2241, 2251, 2253, 2243, 2252, 2252, 2257, - 2258, 2254, 2244, 2249, 2253, 2255, 2259, 2260, 2251, 2248, - 2260, 2261, 2272, 2262, 2247, 2250, 2254, 2257, 2262, 2263, - 2255, 2271, 2258, 2272, 2263, 2261, 2264, 2264, 2273, 2259, - 2265, 2265, 2266, 2266, 2268, 2268, 2270, 2270, 2275, 2271, - 2277, 2276, 2279, 2278, 2280, 2282, 2281, 2273, 2281, 2283, - 2284, 2279, 2285, 2285, 2287, 2287, 2288, 2289, 2275, 2276, - 2290, 2290, 2277, 2278, 2280, 2282, 2289, 2283, 2284, 2294, + 2237, 2238, 2239, 2240, 2233, 2241, 2242, 2242, 2243, 2244, + 2244, 2245, 2245, 2238, 2239, 2246, 2247, 2248, 2249, 2250, + 2251, 2241, 2252, 2240, 2248, 2251, 2246, 2243, 2247, 2253, + 2249, 2254, 2254, 2256, 2255, 2257, 2259, 2258, 2260, 2250, + 2261, 2261, 2252, 2255, 2262, 2266, 2263, 2264, 2267, 2253, + 2258, 2268, 2260, 2262, 2269, 2257, 0, 2269, 2270, 2256, + 2259, 2263, 2264, 2266, 2271, 2280, 2272, 2273, 2273, 2271, + 2267, 2272, 2270, 2281, 2268, 2274, 2274, 2275, 2275, 2277, + 2277, 2279, 2279, 2280, 2281, 2282, 2284, 2285, 2286, 2287, + 2288, 2289, 2290, 2291, 2290, 2297, 2292, 2293, 2298, 2288, - 2292, 2293, 2293, 2295, 2296, 2297, 2298, 2299, 2288, 2292, - 2300, 2296, 2301, 2302, 2302, 2303, 2303, 2294, 2305, 2306, - 2297, 2295, 2304, 2307, 2298, 2299, 2300, 2308, 2304, 2309, - 2310, 2301, 2308, 2311, 2306, 2312, 2305, 2312, 2311, 2313, - 2313, 2314, 2307, 2314, 2315, 2315, 2317, 2319, 2320, 2309, - 2310, 2321, 2322, 2323, 2324, 2328, 2319, 2325, 2323, 2329, - 2330, 2330, 2329, 2321, 2331, 2317, 2332, 2320, 2333, 2333, - 2336, 2341, 2322, 2334, 2324, 2328, 2325, 2334, 2337, 2331, - 2338, 2338, 2337, 2339, 2332, 2336, 2341, 2342, 2343, 2344, - 2344, 2346, 2347, 2348, 2349, 2349, 2339, 2348, 2350, 2351, + 2294, 2294, 2296, 2296, 2282, 2285, 2284, 2298, 2303, 2287, + 2286, 2289, 2301, 2291, 2292, 2293, 2304, 2297, 2299, 2299, + 2305, 2301, 2302, 2302, 2306, 2307, 2303, 2305, 2308, 2309, + 2310, 2311, 2311, 2314, 2304, 2312, 2312, 2315, 2313, 2306, + 2316, 2317, 2318, 2307, 2313, 2309, 2308, 2318, 2319, 2310, + 2320, 2314, 2315, 2321, 2322, 2317, 2322, 2327, 2321, 2316, + 2323, 2323, 2324, 2329, 2324, 2325, 2325, 2330, 2319, 2331, + 2320, 2332, 2329, 2333, 2334, 2338, 2327, 2335, 2333, 2339, + 2342, 2331, 2339, 2340, 2340, 2341, 2330, 2343, 2343, 2344, + 2346, 2332, 2351, 2344, 2334, 2338, 2335, 2347, 2342, 2349, - 2351, 2347, 2353, 2346, 2352, 2354, 2355, 2342, 2343, 2352, - 2362, 2353, 2356, 2356, 2361, 2361, 2364, 2350, 2355, 2363, - 2363, 2354, 2365, 2369, 2366, 2367, 2368, 2368, 2379, 2364, - 2371, 2371, 2362, 2366, 2367, 2365, 2374, 2375, 2369, 2376, - 2377, 2374, 2375, 2378, 2381, 2377, 2380, 2379, 2383, 2384, - 2386, 2378, 2381, 2376, 2384, 2380, 2385, 2387, 2387, 2388, - 2388, 2385, 2389, 2383, 2391, 2386, 2390, 2392, 2393, 2389, - 2394, 2390, 2395, 2395, 2393, 2394, 2396, 2402, 2397, 2398, - 2398, 2404, 2391, 2397, 2404, 2392, 2399, 2399, 2403, 2403, - 2402, 2396, 2405, 2414, 2406, 2407, 2408, 2405, 2405, 2406, + 2341, 2347, 2348, 2348, 2352, 2346, 2353, 2351, 2354, 2354, + 2356, 2357, 2349, 2358, 2359, 2359, 2360, 2358, 2361, 2361, + 2357, 2363, 2356, 2362, 2352, 2364, 2353, 2365, 2362, 2372, + 2363, 2366, 2366, 2371, 2371, 2360, 2373, 2373, 2376, 2365, + 2374, 2364, 2375, 2377, 2378, 2378, 2379, 2376, 2381, 2381, + 2386, 2372, 2377, 2374, 2384, 2375, 2389, 2385, 2387, 2384, + 2388, 2379, 2385, 2387, 2386, 2390, 2393, 2394, 2388, 2391, + 2396, 2395, 2394, 2399, 2390, 2389, 2395, 2391, 2397, 2397, + 2399, 2393, 2398, 2398, 2400, 2396, 2401, 2402, 2403, 2400, + 2404, 2405, 2405, 2406, 2403, 2404, 2407, 2408, 2408, 2409, - 2407, 2409, 2408, 2410, 2411, 2409, 2412, 2413, 2410, 0, - 2415, 2416, 2418, 2411, 2414, 2413, 2415, 2416, 2417, 2421, - 2420, 2412, 2421, 2417, 2418, 2420, 2423, 2425, 2426, 2427, - 2428, 2429, 2425, 2426, 2435, 2430, 2431, 2431, 2423, 2432, - 2429, 2436, 2440, 2428, 2430, 2437, 2439, 2427, 2432, 2438, - 2438, 2440, 2441, 2435, 2442, 2442, 2443, 2445, 2447, 2448, - 2450, 2436, 0, 2448, 2437, 2439, 2455, 2441, 2449, 2449, - 2451, 2452, 2445, 2453, 2455, 2443, 2451, 2452, 2447, 2453, - 2454, 2454, 2456, 2458, 2459, 2450, 2461, 2456, 2462, 2463, - 2461, 2466, 2458, 2465, 2465, 2467, 2467, 2459, 2468, 2468, + 2409, 2407, 2412, 0, 2401, 2402, 2413, 2413, 2406, 2414, + 2424, 2415, 2414, 2416, 2417, 2412, 2415, 2415, 2416, 2417, + 2418, 2419, 2420, 2421, 2422, 2419, 2418, 2420, 2423, 2425, + 2428, 2424, 2421, 2427, 2426, 2425, 2423, 2433, 2427, 2422, + 2426, 2430, 2428, 2435, 2431, 2436, 2430, 2431, 2435, 2433, + 2436, 2437, 2438, 2439, 2440, 2441, 2441, 2442, 2445, 2446, + 2452, 2447, 2439, 2440, 2449, 2438, 2442, 2448, 2448, 2437, + 2450, 2449, 2451, 2453, 2453, 2452, 2454, 2445, 2456, 2446, + 2447, 2451, 2458, 2459, 2460, 2460, 2461, 2459, 2462, 2450, + 2463, 2464, 2466, 2456, 2462, 2454, 2463, 2464, 2465, 2465, - 2470, 2470, 2462, 2471, 2463, 2472, 2476, 2471, 2477, 2466, - 2472, 2474, 2474, 2477, 2479, 2478, 2481, 2482, 2482, 2479, - 2479, 2484, 2484, 2485, 2485, 2486, 2476, 2478, 2486, 2487, - 2489, 2491, 2492, 2492, 2493, 2493, 2481, 2494, 2494, 2495, - 2496, 2496, 2487, 2497, 2498, 2499, 2500, 2506, 2489, 2501, - 2501, 2491, 2500, 2502, 2495, 2505, 2497, 2502, 2507, 2499, - 2505, 2505, 2498, 2508, 2511, 2509, 2510, 2513, 2513, 2512, - 2506, 2509, 2510, 2512, 2516, 2521, 2518, 2519, 2507, 2516, - 2519, 2523, 2522, 2508, 2518, 2522, 2524, 2525, 2526, 2511, - 2527, 2524, 2528, 2528, 2532, 2529, 2531, 2542, 2523, 2523, + 2466, 2467, 2458, 2469, 2470, 2472, 2467, 2473, 2474, 2472, + 2477, 2461, 2469, 2476, 2476, 2478, 2478, 2470, 2479, 2479, + 2487, 2473, 2482, 2474, 2481, 2481, 2482, 2483, 2477, 2485, + 2485, 2488, 2483, 2489, 2492, 2500, 2488, 2490, 2493, 2493, + 2487, 2497, 2490, 2490, 2497, 2489, 2495, 2495, 2496, 2496, + 2498, 2502, 2506, 2500, 2492, 2503, 2503, 2504, 2504, 2505, + 2505, 2507, 2507, 2498, 2508, 2509, 2510, 2506, 2511, 2512, + 2512, 2502, 2513, 2516, 2511, 2517, 2513, 2508, 2516, 2516, + 2510, 2518, 2519, 2509, 2520, 2521, 2522, 2532, 2523, 2529, + 2520, 2521, 2523, 2524, 2524, 2527, 2530, 2529, 2517, 2530, - 2521, 2535, 2542, 2530, 2527, 2525, 2530, 2533, 2526, 2529, - 2531, 2534, 2543, 2532, 2530, 2533, 2534, 2534, 2536, 2536, - 2535, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, 2541, - 2544, 2545, 2543, 2546, 2547, 2549, 2549, 2551, 2550, 2554, - 2545, 2550, 2553, 2553, 2556, 2541, 2554, 2555, 2555, 2556, - 2558, 2558, 2559, 2546, 2547, 2551, 2544, 2560, 2561, 2563, - 2565, 2559, 2564, 2564, 2565, 2566, 2560, 2561, 2567, 2569, - 2568, 2570, 2580, 2575, 2566, 2568, 2568, 2563, 2575, 2579, - 2570, 2571, 2569, 2567, 2581, 2571, 2576, 2576, 2578, 2578, - 2583, 2584, 2587, 2579, 2589, 2588, 2592, 2580, 2594, 2583, + 2527, 2518, 2519, 2533, 2534, 2535, 2533, 2536, 2537, 2538, + 2535, 2522, 2532, 2539, 2539, 2540, 2541, 2542, 2543, 2541, + 2546, 2534, 2534, 2538, 2544, 2536, 2555, 2541, 2537, 2540, + 2545, 2542, 2544, 2547, 2547, 2545, 2545, 2543, 2552, 2546, + 2548, 2548, 2549, 2549, 2550, 2550, 2551, 2551, 2553, 2554, + 2556, 2557, 2555, 2553, 2552, 2558, 2560, 2560, 2563, 2556, + 2561, 2561, 2562, 2565, 2565, 2562, 2566, 2567, 2567, 2554, + 2575, 2557, 2568, 2566, 2571, 2558, 2563, 2568, 2570, 2570, + 2572, 2573, 2577, 2571, 2576, 2576, 2577, 2578, 2575, 2572, + 2573, 2579, 2580, 2582, 2581, 2583, 2578, 2580, 2580, 2583, - 2590, 2608, 2581, 2584, 2588, 2596, 2590, 2597, 2592, 2599, - 2596, 2907, 2597, 2907, 2589, 2598, 2598, 2587, 2599, 2594, - 2601, 2608, 2602, 2602, 2607, 2601, 2602, 2604, 2604, 2605, - 2605, 2606, 2606, 2607, 2609, 2610, 2612, 2616, 2613, 2614, - 2610, 2617, 2612, 2613, 2614, 2615, 2615, 2618, 2619, 2621, - 2620, 2628, 2618, 2609, 0, 2616, 2620, 2622, 2622, 2624, - 2625, 2629, 2617, 2624, 2626, 2625, 2619, 2627, 2627, 2626, - 2628, 2630, 2632, 2632, 2621, 2634, 2629, 2635, 2636, 2638, - 2637, 2639, 2636, 2642, 2640, 2643, 2643, 2644, 2634, 2637, - 2635, 2630, 2640, 2641, 2649, 2638, 2646, 2646, 2641, 2659, + 2587, 2591, 2582, 2588, 2588, 2587, 2579, 2581, 2590, 2590, + 2592, 2593, 2595, 2596, 2599, 2591, 2601, 2600, 2602, 2604, + 2606, 2595, 2608, 2609, 2602, 2596, 2600, 2608, 2609, 2593, + 0, 2604, 2610, 2610, 2611, 2592, 2601, 2613, 2620, 2599, + 2621, 2606, 2613, 2611, 2614, 2614, 2616, 2616, 2614, 2617, + 2617, 2618, 2618, 2619, 2628, 2622, 2625, 2624, 2620, 2621, + 2622, 2625, 2619, 2624, 2626, 2627, 2627, 2629, 2630, 2626, + 2632, 2631, 2628, 2630, 2633, 2636, 2632, 2634, 2634, 2636, + 2637, 2638, 2639, 2639, 2640, 2637, 2638, 2641, 2629, 2631, + 2642, 2644, 2644, 2646, 2647, 2649, 2648, 2650, 2651, 2633, - 2639, 2647, 2647, 2651, 2651, 2653, 2644, 2654, 2655, 2642, - 2660, 2656, 2658, 2658, 2664, 2649, 2656, 2661, 2665, 2659, - 2669, 2653, 2671, 2654, 2655, 2663, 2663, 2671, 2664, 2666, - 2666, 2672, 2670, 2660, 2673, 2673, 2661, 2665, 2670, 2675, - 2669, 2674, 2674, 2676, 2676, 2677, 2678, 2679, 2680, 2681, - 2682, 2683, 0, 2672, 2680, 2678, 2677, 2684, 2684, 2675, - 2690, 2685, 2682, 2676, 2685, 2686, 2686, 2679, 2681, 2691, - 2692, 2683, 2690, 2693, 2693, 2694, 2692, 2695, 2694, 2696, - 2698, 2699, 2700, 2695, 2701, 2698, 2699, 2702, 2705, 2691, - 2701, 2703, 2703, 2706, 2707, 2708, 2710, 2696, 2709, 2709, + 2648, 2652, 2641, 2640, 2649, 2654, 2646, 2647, 2656, 2652, + 2642, 2653, 2662, 2650, 2655, 2655, 2653, 2651, 2659, 2659, + 2660, 2660, 2664, 2664, 2666, 2667, 2668, 2656, 2672, 2669, + 2673, 2654, 2674, 2662, 2669, 2671, 2671, 2676, 2676, 2678, + 2666, 2667, 2668, 2677, 2679, 2679, 2682, 2684, 2672, 2683, + 2685, 2674, 2684, 2673, 2688, 2683, 2690, 2677, 2678, 2686, + 2686, 2687, 2687, 2689, 2689, 2692, 2682, 2690, 2691, 2693, + 2694, 2696, 2685, 2704, 2688, 2693, 2695, 2691, 2697, 2697, + 2703, 2698, 0, 2689, 2698, 2692, 2699, 2699, 2695, 2694, + 2705, 2696, 2703, 2704, 2706, 2706, 2705, 2707, 2708, 2709, - 2705, 2700, 2716, 2711, 2702, 2702, 2713, 2713, 2708, 2714, - 2714, 2706, 2711, 2715, 2726, 2710, 2716, 2717, 2715, 2707, - 2718, 2718, 2717, 2719, 2719, 2720, 2720, 2721, 2723, 2723, - 2728, 2729, 2721, 2726, 2730, 2731, 2731, 2733, 2733, 2735, - 2734, 2736, 2737, 2737, 2738, 2738, 2741, 2784, 2742, 2740, - 2736, 2784, 2728, 2729, 2734, 2740, 2730, 2743, 2750, 2735, - 2746, 2746, 2743, 2748, 2748, 2749, 2741, 2742, 2751, 2752, - 2749, 2753, 2750, 2755, 2751, 2754, 2754, 2757, 2755, 2753, - 2758, 2752, 2759, 2760, 2761, 2763, 2764, 2759, 2765, 2766, - 2761, 2768, 2767, 2763, 2769, 2760, 2770, 2757, 2771, 2773, + 2707, 2711, 2712, 2713, 2708, 2714, 2711, 2712, 2715, 2716, + 2716, 2714, 2718, 2719, 2720, 2721, 2723, 2709, 2722, 2722, + 2724, 2749, 2713, 2739, 2718, 2715, 2715, 2729, 2721, 2724, + 2749, 2719, 2726, 2726, 2741, 2723, 2727, 2727, 2728, 2720, + 2730, 2729, 2739, 2728, 2742, 2730, 2731, 2731, 2732, 2732, + 2733, 2733, 2734, 2736, 2736, 2743, 2741, 2734, 2744, 2744, + 2746, 2746, 2747, 2748, 2750, 2750, 2742, 2751, 2751, 2753, + 2754, 2763, 2755, 2756, 0, 2753, 2747, 2743, 2756, 2759, + 2759, 2761, 2761, 2748, 2762, 2763, 2764, 2765, 2766, 2762, + 2754, 2755, 2764, 2767, 2767, 2768, 2766, 2770, 2771, 2765, - 2758, 2774, 2778, 2771, 2773, 2764, 2851, 2768, 2765, 2766, - 2767, 2769, 2769, 2775, 2779, 2776, 0, 2770, 2851, 2775, - 2776, 2774, 2778, 2782, 2782, 2783, 2783, 2779, 2788, 2788, - 2790, 2790, 2791, 2791, 2794, 2791, 2792, 2792, 2794, 2792, - 2793, 2793, 2797, 2793, 2796, 2796, 2801, 2798, 2802, 2803, - 2804, 2804, 2807, 2809, 2803, 2808, 2810, 2809, 2811, 0, - 2797, 2798, 2808, 2813, 2818, 2810, 2801, 2814, 2802, 2815, - 2815, 2816, 2816, 2811, 2817, 2817, 2814, 2807, 2819, 2818, - 2820, 2813, 2821, 2819, 2822, 2823, 2824, 2821, 2821, 2820, - 2822, 2825, 2820, 2826, 2827, 2828, 2829, 2829, 2826, 2827, + 2768, 2772, 2773, 2774, 2776, 2777, 2772, 2778, 2779, 2774, + 2781, 2780, 2776, 2782, 2773, 2783, 2784, 2770, 2771, 2787, + 2786, 2784, 2791, 2918, 2777, 2786, 2781, 2778, 2779, 2780, + 2782, 2782, 2788, 2792, 2918, 2789, 2783, 2797, 2788, 2787, + 2789, 2797, 2791, 2795, 2795, 2810, 2792, 2796, 2796, 2801, + 2801, 2803, 2803, 2804, 2804, 2807, 2804, 2805, 2805, 2807, + 2805, 2806, 2806, 2810, 2806, 2809, 2809, 2811, 2814, 2815, + 2816, 2817, 2817, 2820, 2822, 2816, 2821, 2823, 2822, 2824, + 2832, 2811, 2826, 2821, 2827, 2832, 2823, 2836, 2814, 2815, + 2828, 2828, 2831, 2827, 2824, 2829, 2829, 2833, 2820, 2834, - 2830, 2824, 2831, 2832, 2832, 2858, 2830, 2900, 2831, 0, - 2823, 2900, 2825, 2834, 2828, 2833, 2833, 2858, 2834, 2837, - 2837, 2840, 2840, 2841, 2841, 2842, 2842, 2843, 2843, 2844, - 2844, 2845, 2845, 2846, 2846, 2848, 2849, 2849, 2850, 2852, - 2856, 2854, 2855, 2855, 2848, 2857, 2860, 2850, 2859, 2859, - 2861, 2861, 2864, 2865, 2866, 2856, 2865, 2868, 2857, 2852, - 2854, 2860, 2867, 2867, 2870, 2871, 2874, 2870, 2872, 2873, - 2864, 2871, 2875, 2876, 2873, 2868, 2882, 2878, 2879, 2893, - 2866, 2891, 2872, 2878, 2891, 2874, 2898, 2879, 2902, 2876, - 2875, 2882, 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2899, + 2826, 2830, 2830, 2837, 2834, 2834, 2833, 2831, 2835, 2833, + 2838, 2839, 2836, 2841, 2835, 2840, 2839, 2843, 2837, 2844, + 2840, 2842, 2842, 2843, 0, 2844, 2845, 2845, 2846, 2846, + 2847, 2838, 2841, 2850, 2850, 2847, 2853, 2853, 2854, 2854, + 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2859, 2859, + 2861, 2862, 2862, 2863, 2864, 2865, 2869, 2867, 2871, 2861, + 2868, 2868, 2863, 2873, 2870, 2877, 2864, 2872, 2872, 2879, + 2871, 2869, 2874, 2874, 2881, 2865, 2867, 2870, 2873, 2878, + 2880, 2880, 2878, 2877, 2883, 2884, 2885, 2883, 2886, 2887, + 2889, 2884, 2881, 2886, 2888, 2879, 2891, 2906, 2892, 2895, - 2901, 2904, 2902, 2905, 2908, 2906, 2909, 2909, 2899, 2898, - 2906, 2911, 2910, 2912, 2905, 2914, 2913, 2916, 2915, 2908, - 2901, 2918, 2917, 2919, 2904, 2910, 2916, 2925, 2926, 2926, - 2911, 2912, 2913, 2915, 2917, 2924, 2920, 2927, 2928, 2928, - 2914, 2920, 2918, 2919, 2929, 2929, 2927, 2925, 2932, 2924, - 2930, 2930, 2931, 2931, 2933, 2934, 2935, 2936, 2934, 2937, - 2938, 2935, 2936, 2939, 2940, 2941, 2942, 2932, 2943, 2939, - 2945, 2942, 2944, 2944, 2933, 2938, 2946, 2941, 2940, 2947, - 2947, 2949, 2951, 2956, 2937, 2945, 2954, 2954, 2943, 2955, - 2955, 2956, 2957, 2958, 2960, 2946, 2949, 2959, 2962, 2958, + 2885, 2904, 2891, 2911, 2904, 2913, 2889, 2892, 2887, 2913, + 2906, 2914, 2888, 2912, 2895, 2907, 2907, 2908, 2908, 2909, + 2909, 2915, 2912, 2917, 2919, 2920, 2911, 2920, 2921, 2919, + 2924, 2914, 2922, 2922, 2923, 2915, 2925, 2926, 2927, 2929, + 2928, 2931, 2945, 2921, 2930, 2932, 2917, 2923, 2929, 2924, + 2937, 2938, 2933, 2926, 2925, 2928, 2930, 2933, 2939, 2939, + 2940, 2945, 2931, 2927, 2937, 2932, 2941, 2941, 2946, 2940, + 2950, 2938, 2942, 2942, 2943, 2943, 2944, 2944, 2947, 2948, + 2949, 2947, 2951, 2952, 2948, 2949, 2953, 2954, 2946, 2952, + 2956, 2955, 2957, 2957, 2958, 2950, 2955, 2951, 2959, 2954, - 2951, 2961, 2963, 2959, 2964, 2964, 2967, 2963, 2960, 2965, - 2965, 2957, 2968, 2973, 2961, 2970, 2971, 2962, 2974, 2975, - 2971, 2976, 2977, 2974, 2978, 2979, 2980, 2967, 2984, 2970, - 2979, 2980, 2968, 2973, 2976, 2977, 2981, 2981, 2975, 2985, - 2986, 2987, 2987, 2978, 2988, 2989, 2990, 2990, 2984, 2988, - 2991, 2989, 2994, 2992, 2995, 2991, 2993, 2985, 2992, 2986, - 2995, 2993, 2997, 2997, 2998, 2999, 2999, 3002, 3001, 2998, - 3003, 2994, 3001, 3004, 3005, 3006, 3007, 3003, 3008, 3010, - 3010, 3006, 3012, 3012, 3014, 3013, 3002, 3015, 3016, 3014, - 3017, 3008, 3004, 3005, 3013, 3007, 3019, 3013, 3018, 3018, + 2953, 2960, 2960, 2962, 2964, 2967, 2967, 2968, 2968, 2958, + 2956, 2969, 2970, 2973, 2971, 2972, 2974, 2959, 2962, 2969, + 2971, 2972, 2964, 2975, 2980, 2976, 2981, 2973, 2986, 2974, + 2976, 2970, 2977, 2977, 2978, 2978, 2983, 2984, 2987, 2988, + 2989, 2984, 2975, 2987, 2990, 2980, 2981, 2991, 2986, 2992, + 2983, 2993, 2997, 2989, 2992, 2998, 2993, 2990, 2988, 2994, + 2994, 2999, 3000, 3000, 3001, 3002, 2991, 3003, 3003, 3001, + 3004, 3002, 2997, 2998, 3005, 3004, 3006, 3007, 3008, 3005, + 2999, 3006, 3010, 3010, 3008, 3011, 3012, 3012, 3014, 3015, + 3011, 3016, 3014, 3017, 3018, 3019, 3007, 3020, 3016, 3023, - 3020, 3019, 3022, 3017, 3023, 3023, 3015, 3016, 3024, 3025, - 3025, 3026, 3026, 3020, 3027, 3028, 3029, 3030, 3030, 3027, - 3031, 3032, 3028, 3032, 3034, 3031, 3035, 3024, 3022, 3033, - 3033, 3034, 3036, 3035, 3037, 3029, 3038, 3040, 3040, 3037, - 3041, 3043, 3044, 3045, 3046, 3050, 3043, 3044, 3047, 3047, - 3051, 3036, 3049, 3049, 0, 3038, 3052, 3052, 3054, 3041, - 3053, 3053, 3045, 3046, 3050, 3054, 3056, 3056, 3058, 3051, - 3057, 3057, 3060, 3063, 3064, 3058, 3065, 3060, 3063, 3066, - 3066, 3067, 3067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3064, 0, 3065, 3071, 3071, 3071, 3071, + 3023, 3019, 3021, 3025, 3025, 3026, 3027, 3028, 3015, 3029, + 3030, 3027, 3017, 3018, 3026, 3021, 3020, 3026, 3031, 3031, + 3032, 3033, 3035, 3030, 3037, 3032, 3028, 3042, 3029, 3036, + 3036, 3038, 3038, 3040, 3033, 3039, 3039, 3041, 3040, 3043, + 3043, 3049, 3044, 3037, 3041, 3051, 3042, 3044, 3035, 3045, + 3047, 3045, 3046, 3046, 3048, 3053, 3053, 3047, 3050, 3054, + 3049, 3048, 3056, 3050, 3051, 3057, 3058, 3056, 3059, 3063, + 3057, 3060, 3060, 3062, 3062, 3064, 3065, 3065, 3054, 3066, + 3066, 0, 3067, 3069, 3069, 3058, 3071, 3059, 3063, 3067, + 3070, 3070, 3073, 3071, 3064, 3076, 3077, 3073, 3078, 0, - 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, - 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3077, 3077, 0, 3077, 3077, 3077, 3077, 3078, 3078, - 0, 0, 0, 3078, 3078, 3079, 3079, 0, 0, 3079, - 0, 3079, 3080, 0, 0, 0, 0, 0, 3080, 3081, - 3081, 0, 0, 0, 3081, 3081, 3082, 0, 0, 0, - 0, 0, 3082, 3083, 3083, 0, 3083, 3083, 3083, 3083, - 3084, 3084, 0, 3084, 3084, 3084, 3084, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3076, 3079, 3079, 3080, 3080, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3077, 0, 3078, 3084, 3084, + 3084, 3084, 3084, 3084, 3084, 3085, 3085, 3085, 3085, 3085, + 3085, 3085, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3087, + 3087, 3087, 3087, 3087, 3087, 3087, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3090, 3090, 0, 3090, 3090, 3090, 3090, + 3091, 3091, 0, 0, 0, 3091, 3091, 3092, 3092, 0, + 0, 3092, 0, 3092, 3093, 0, 0, 0, 0, 0, + 3093, 3094, 3094, 0, 0, 0, 3094, 3094, 3095, 0, + 0, 0, 0, 0, 3095, 3096, 3096, 0, 3096, 3096, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 3096, 3096, 3097, 3097, 0, 3097, 3097, 3097, 3097, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083 } ; static yy_state_type yy_last_accepting_state; @@ -2960,7 +2970,7 @@ static void config_end_include(void) } #endif -#line 2961 "" +#line 2971 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2969,9 +2979,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2970 "" +#line 2980 "" -#line 2972 "" +#line 2982 "" #define INITIAL 0 #define quotedstring 1 @@ -3193,7 +3203,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3194 "" +#line 3204 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3226,13 +3236,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 >= 3071 ) + if ( yy_current_state >= 3084 ) 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] != 5988 ); + while ( yy_base[yy_current_state] != 6010 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3652,137 +3662,137 @@ YY_RULE_SETUP case 79: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_KEEP_PROBING) } YY_BREAK case 80: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 81: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 82: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 83: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 84: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 85: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 86: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 87: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 88: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 89: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 90: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 91: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 92: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 93: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 94: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 95: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 96: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 97: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 98: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 99: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 100: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 101: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 102: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 103: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 104: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 105: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 106: YY_RULE_SETUP @@ -3792,32 +3802,32 @@ YY_RULE_SETUP case 107: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 108: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 109: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 110: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 111: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 112: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 113: YY_RULE_SETUP @@ -3827,731 +3837,731 @@ YY_RULE_SETUP case 114: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 115: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 116: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 117: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 118: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 119: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 120: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 121: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 122: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 123: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 124: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 125: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 126: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 127: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 128: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 129: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 130: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 131: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 132: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 133: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 134: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 135: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 136: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 137: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 138: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 139: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 140: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 141: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 142: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 143: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 144: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 145: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 146: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 147: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 148: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 149: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 150: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 151: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 152: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 153: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 154: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 155: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 156: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 157: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 158: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 159: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 160: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 161: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 162: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 163: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 164: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 165: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 166: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 167: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 168: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 169: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 175: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 176: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 384 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 178: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 180: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 181: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 182: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 233: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 234: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 443 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 235: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 236: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 239: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 240: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 459 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 246: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 258: YY_RULE_SETUP @@ -4566,200 +4576,205 @@ YY_RULE_SETUP case 260: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 261: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 272: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 489 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 273: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 292: -/* rule 292 can match eol */ YY_RULE_SETUP #line 510 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 293: +/* rule 293 can match eol */ +YY_RULE_SETUP +#line 511 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 293: +case 294: YY_RULE_SETUP -#line 513 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 514 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 294: -YY_RULE_SETUP -#line 519 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 295: -/* rule 295 can match eol */ YY_RULE_SETUP #line 520 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 296: +/* rule 296 can match eol */ +YY_RULE_SETUP +#line 521 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 296: +case 297: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 523 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4772,34 +4787,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 297: +case 298: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 535 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 298: -YY_RULE_SETUP -#line 540 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 299: -/* rule 299 can match eol */ YY_RULE_SETUP #line 541 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 300: +/* rule 300 can match eol */ +YY_RULE_SETUP +#line 542 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 300: +case 301: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4812,38 +4827,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 301: +case 302: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 302: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 303: -/* rule 303 can match eol */ YY_RULE_SETUP #line 562 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 304: +/* rule 304 can match eol */ YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 305: YY_RULE_SETUP #line 564 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 306: +YY_RULE_SETUP +#line 565 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4851,27 +4866,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 569 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 306: -YY_RULE_SETUP -#line 573 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 307: -/* rule 307 can match eol */ YY_RULE_SETUP #line 574 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 308: +/* rule 308 can match eol */ +YY_RULE_SETUP +#line 575 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 308: +case 309: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4881,7 +4896,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 582 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4893,33 +4908,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 309: +case 310: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 602 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4920 "" +#line 4935 "" case YY_END_OF_BUFFER: { @@ -5214,7 +5229,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 >= 3071 ) + if ( yy_current_state >= 3084 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5242,11 +5257,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 >= 3071 ) + if ( yy_current_state >= 3084 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3070); + yy_is_jam = (yy_current_state == 3083); return yy_is_jam ? 0 : yy_current_state; } @@ -5885,6 +5900,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d60eb147a..a2f7333e0 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -283,6 +283,7 @@ infra-cache-slabs{COLON} { YDVAR(1, VAR_INFRA_CACHE_SLABS) } infra-cache-numhosts{COLON} { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } infra-cache-lame-size{COLON} { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } infra-cache-min-rtt{COLON} { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +infra-keep-probing{COLON} { YDVAR(1, VAR_INFRA_KEEP_PROBING) } num-queries-per-thread{COLON} { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } jostle-timeout{COLON} { YDVAR(1, VAR_JOSTLE_TIMEOUT) } delay-close{COLON} { YDVAR(1, VAR_DELAY_CLOSE) } diff --git a/util/configparser.c b/util/configparser.c index 66f34071a..940e46e30 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -280,145 +280,146 @@ extern int yydebug; VAR_UNBLOCK_LAN_ZONES = 401, VAR_INSECURE_LAN_ZONES = 402, VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_INFRA_KEEP_PROBING = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -568,145 +569,146 @@ extern int yydebug; #define VAR_UNBLOCK_LAN_ZONES 401 #define VAR_INSECURE_LAN_ZONES 402 #define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_INFRA_KEEP_PROBING 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -716,7 +718,7 @@ union YYSTYPE char* str; -#line 720 "util/configparser.c" +#line 722 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -966,19 +968,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 611 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 289 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 311 +#define YYNNTS 312 /* YYNRULES -- Number of rules. */ -#define YYNRULES 600 +#define YYNRULES 602 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 893 +#define YYNSTATES 896 #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 543 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1043,7 +1045,7 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 + 285, 286, 287, 288 }; #if YYDEBUG @@ -1064,53 +1066,53 @@ static const yytype_uint16 yyrline[] = 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, 245, 245, 245, 246, - 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, - 252, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, - 267, 267, 267, 268, 268, 268, 269, 269, 270, 271, - 271, 272, 272, 273, 273, 274, 274, 275, 275, 275, - 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, - 280, 280, 281, 283, 295, 296, 297, 297, 297, 297, - 297, 298, 298, 300, 312, 313, 314, 314, 314, 314, - 315, 315, 317, 331, 332, 333, 333, 333, 333, 334, - 334, 334, 336, 353, 354, 355, 355, 355, 355, 356, - 356, 356, 357, 360, 379, 396, 404, 414, 422, 439, - 440, 441, 441, 441, 441, 441, 442, 442, 442, 443, - 443, 445, 454, 463, 474, 483, 492, 501, 512, 521, - 533, 547, 562, 573, 590, 607, 624, 641, 656, 671, - 684, 699, 708, 717, 726, 735, 744, 753, 762, 771, - 780, 789, 798, 807, 816, 825, 838, 847, 860, 869, - 878, 887, 894, 901, 910, 917, 926, 934, 941, 948, - 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, 1042, - 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, 1135, - 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, 1221, - 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, 1320, - 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, 1418, - 1426, 1435, 1443, 1456, 1465, 1472, 1482, 1492, 1502, 1512, - 1522, 1532, 1542, 1552, 1559, 1566, 1573, 1582, 1591, 1600, - 1609, 1616, 1626, 1646, 1653, 1671, 1684, 1697, 1706, 1715, - 1724, 1733, 1743, 1753, 1764, 1773, 1782, 1791, 1800, 1809, - 1818, 1831, 1844, 1853, 1860, 1869, 1878, 1887, 1896, 1904, - 1917, 1925, 1966, 1973, 1988, 1998, 2008, 2015, 2022, 2029, - 2038, 2046, 2060, 2081, 2102, 2114, 2126, 2138, 2147, 2168, - 2178, 2187, 2195, 2203, 2216, 2229, 2244, 2259, 2268, 2277, - 2283, 2292, 2301, 2311, 2321, 2334, 2347, 2359, 2373, 2385, - 2399, 2409, 2416, 2423, 2432, 2441, 2451, 2461, 2471, 2478, - 2485, 2494, 2503, 2513, 2523, 2530, 2537, 2544, 2552, 2562, - 2572, 2582, 2592, 2631, 2641, 2649, 2657, 2672, 2681, 2686, - 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2690, 2690, 2692, - 2702, 2711, 2718, 2725, 2732, 2739, 2746, 2753, 2758, 2759, - 2760, 2760, 2761, 2761, 2761, 2762, 2763, 2763, 2764, 2764, - 2765, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2773, 2782, - 2789, 2796, 2805, 2812, 2819, 2826, 2833, 2842, 2851, 2858, - 2865, 2875, 2885, 2895, 2905, 2915, 2925, 2930, 2931, 2932, - 2934, 2940, 2950, 2957, 2966, 2974, 2979, 2980, 2982, 2982, - 2982, 2983, 2983, 2984, 2985, 2986, 2987, 2988, 2990, 3000, - 3009, 3016, 3025, 3032, 3041, 3049, 3062, 3070, 3083, 3088, - 3089, 3090, 3090, 3091, 3091, 3091, 3092, 3094, 3106, 3118, - 3130, 3145, 3158, 3171, 3182, 3187, 3188, 3189, 3189, 3191, - 3206 + 246, 247, 247, 248, 248, 249, 250, 250, 251, 251, + 252, 252, 253, 254, 254, 255, 255, 256, 256, 257, + 257, 258, 258, 259, 259, 259, 260, 260, 261, 261, + 262, 262, 263, 263, 264, 264, 265, 265, 266, 266, + 266, 267, 267, 267, 268, 268, 268, 269, 269, 270, + 271, 271, 272, 272, 273, 273, 274, 274, 275, 275, + 275, 276, 276, 276, 277, 277, 277, 278, 278, 279, + 279, 280, 280, 281, 283, 295, 296, 297, 297, 297, + 297, 297, 298, 298, 300, 312, 313, 314, 314, 314, + 314, 315, 315, 317, 331, 332, 333, 333, 333, 333, + 334, 334, 334, 336, 353, 354, 355, 355, 355, 355, + 356, 356, 356, 357, 360, 379, 396, 404, 414, 422, + 439, 440, 441, 441, 441, 441, 441, 442, 442, 442, + 443, 443, 445, 454, 463, 474, 483, 492, 501, 512, + 521, 533, 547, 562, 573, 590, 607, 624, 641, 656, + 671, 684, 699, 708, 717, 726, 735, 744, 753, 762, + 771, 780, 789, 798, 807, 816, 825, 838, 847, 860, + 869, 878, 887, 894, 901, 910, 917, 926, 934, 941, + 948, 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, + 1042, 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, + 1135, 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, + 1221, 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, + 1320, 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, + 1418, 1426, 1435, 1443, 1456, 1465, 1475, 1482, 1492, 1502, + 1512, 1522, 1532, 1542, 1552, 1562, 1569, 1576, 1583, 1592, + 1601, 1610, 1619, 1626, 1636, 1656, 1663, 1681, 1694, 1707, + 1716, 1725, 1734, 1743, 1753, 1763, 1774, 1783, 1792, 1801, + 1810, 1819, 1828, 1841, 1854, 1863, 1870, 1879, 1888, 1897, + 1906, 1914, 1927, 1935, 1976, 1983, 1998, 2008, 2018, 2025, + 2032, 2039, 2048, 2056, 2070, 2091, 2112, 2124, 2136, 2148, + 2157, 2178, 2188, 2197, 2205, 2213, 2226, 2239, 2254, 2269, + 2278, 2287, 2293, 2302, 2311, 2321, 2331, 2344, 2357, 2369, + 2383, 2395, 2409, 2419, 2426, 2433, 2442, 2451, 2461, 2471, + 2481, 2488, 2495, 2504, 2513, 2523, 2533, 2540, 2547, 2554, + 2562, 2572, 2582, 2592, 2602, 2641, 2651, 2659, 2667, 2682, + 2691, 2696, 2697, 2698, 2698, 2698, 2699, 2699, 2699, 2700, + 2700, 2702, 2712, 2721, 2728, 2735, 2742, 2749, 2756, 2763, + 2768, 2769, 2770, 2770, 2771, 2771, 2771, 2772, 2773, 2773, + 2774, 2774, 2775, 2775, 2776, 2777, 2778, 2779, 2780, 2781, + 2783, 2792, 2799, 2806, 2815, 2822, 2829, 2836, 2843, 2852, + 2861, 2868, 2875, 2885, 2895, 2905, 2915, 2925, 2935, 2940, + 2941, 2942, 2944, 2950, 2960, 2967, 2976, 2984, 2989, 2990, + 2992, 2992, 2992, 2993, 2993, 2994, 2995, 2996, 2997, 2998, + 3000, 3010, 3019, 3026, 3035, 3042, 3051, 3059, 3072, 3080, + 3093, 3098, 3099, 3100, 3100, 3101, 3101, 3101, 3102, 3104, + 3116, 3128, 3140, 3155, 3168, 3181, 3192, 3197, 3198, 3199, + 3199, 3201, 3216 }; #endif @@ -1166,13 +1168,13 @@ static const char *const yytname[] = "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", - "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", + "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", + "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", + "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME", + "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", + "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", + "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1274,25 +1276,25 @@ static const char *const yytname[] = "server_infra_host_ttl", "server_infra_lame_ttl", "server_infra_cache_numhosts", "server_infra_cache_lame_size", "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_infra_keep_probing", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1386,14 +1388,14 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543 }; # endif -#define YYPACT_NINF -272 +#define YYPACT_NINF -273 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-272))) + (!!((Yystate) == (-273))) #define YYTABLE_NINF -1 @@ -1404,96 +1406,96 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 271, -42, - -37, -41, -7, -43, -30, -136, -106, -177, -172, -271, + -273, 0, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 272, -42, + -37, -41, -7, -43, -30, -137, -106, -178, -173, -272, 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, + 119, 120, 121, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, + 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 201, 205, 206, - 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 237, - 243, 245, 246, 247, 249, 250, 251, 252, 253, 254, + 193, 194, 195, 196, 197, 198, 199, 200, 202, 206, + 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, + 220, 221, 223, 224, 225, 226, 227, 228, 229, 230, + 238, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 269, 270, 305, 306, 307, 308, 312, - 313, 314, 356, 357, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 358, - 359, 360, 361, 362, 363, 364, -272, -272, -272, -272, - -272, -272, -272, -272, 368, 372, 373, 398, 399, 400, - -272, -272, -272, -272, -272, -272, -272, 402, 413, 414, - 415, 416, 417, 418, -272, -272, -272, -272, -272, -272, - -272, -272, 419, 420, 421, 422, 423, 424, 425, 426, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 427, - 428, 429, 430, 431, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 471, 473, 489, 490, 491, - 492, 493, 494, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 495, 496, 497, 498, 499, 506, 507, 508, - 509, 510, 511, 512, 514, 515, 516, 517, 518, 519, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 520, - -272, -272, 523, 526, 529, 530, 539, 540, 541, 543, - 544, 545, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 546, 547, 548, 549, 550, 551, -272, - -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 556, 557, - 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 559, 560, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 568, - -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 571, 572, 573, -272, -272, -272, -272, -272, - -272, -272, -272 + 265, 266, 267, 268, 270, 271, 306, 307, 308, 309, + 313, 314, 315, 357, 358, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 359, 360, 361, 362, 363, 364, 365, -273, -273, + -273, -273, -273, -273, -273, -273, 369, 373, 374, 399, + 400, 401, -273, -273, -273, -273, -273, -273, -273, 403, + 415, 416, 417, 418, 419, 420, -273, -273, -273, -273, + -273, -273, -273, -273, 421, 422, 423, 424, 425, 426, + 427, 428, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 429, 430, 431, 432, 433, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, 473, 475, 491, + 492, 493, 494, 495, 496, -273, -273, -273, -273, -273, + -273, -273, -273, -273, 497, 498, 499, 500, 501, 508, + 509, 510, 511, 512, 513, 514, 516, 517, 518, 519, + 520, 521, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 522, -273, -273, 525, 528, 531, 532, 541, 542, + 543, 545, 546, 547, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 548, 549, 550, 551, 552, + 553, -273, -273, -273, -273, -273, -273, -273, 554, 555, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, 556, 557, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, 558, 559, 560, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, 561, 562, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 563, 564, 565, 566, 567, + 568, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, 569, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, 570, -273, -273, 571, 572, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, 573, 574, 575, -273, -273, + -273, -273, -273, -273, -273, -273 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1501,9 +1503,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 213, 223, 488, 546, 507, 232, - 555, 578, 242, 594, 258, 3, 18, 215, 225, 234, - 244, 260, 490, 509, 548, 557, 580, 596, 4, 5, + 2, 0, 1, 16, 214, 224, 490, 548, 509, 233, + 557, 580, 243, 596, 259, 3, 18, 216, 226, 235, + 245, 261, 492, 511, 550, 559, 582, 598, 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1524,147 +1526,147 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 19, 20, 83, 86, 95, - 183, 184, 21, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 34, 74, 22, 87, 88, 45, 67, - 82, 23, 24, 27, 28, 25, 26, 29, 30, 31, - 32, 33, 118, 195, 119, 121, 122, 123, 197, 202, - 198, 209, 210, 211, 212, 179, 84, 73, 99, 116, - 117, 207, 204, 120, 35, 36, 37, 38, 39, 75, - 89, 90, 105, 61, 71, 62, 187, 188, 100, 55, - 56, 186, 57, 58, 109, 113, 127, 136, 162, 139, - 208, 110, 68, 40, 41, 42, 97, 128, 129, 130, - 43, 44, 46, 47, 49, 50, 48, 134, 51, 52, - 53, 59, 78, 114, 92, 135, 85, 158, 93, 94, - 111, 112, 205, 98, 54, 76, 79, 60, 63, 101, - 102, 77, 159, 103, 64, 65, 66, 196, 115, 172, - 173, 174, 175, 176, 177, 185, 104, 72, 106, 107, - 108, 160, 69, 70, 91, 80, 81, 96, 124, 125, - 206, 126, 131, 132, 133, 163, 164, 166, 168, 169, - 167, 170, 180, 137, 138, 142, 143, 140, 141, 144, - 145, 147, 146, 199, 201, 200, 161, 171, 189, 191, - 190, 192, 193, 194, 165, 178, 181, 182, 203, 0, - 0, 0, 0, 0, 0, 0, 214, 216, 217, 218, - 220, 221, 222, 219, 0, 0, 0, 0, 0, 0, - 224, 226, 227, 228, 229, 230, 231, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 239, 240, 237, - 241, 238, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 245, 246, 247, 248, 252, 249, 250, 251, 0, - 0, 0, 0, 0, 263, 267, 268, 269, 270, 259, - 261, 262, 264, 265, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 489, 491, 493, 492, 498, 494, 495, - 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 17, 19, 20, 83, 86, + 95, 184, 185, 21, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 34, 74, 22, 87, 88, 45, + 67, 82, 23, 24, 27, 28, 25, 26, 29, 30, + 31, 32, 33, 118, 196, 119, 121, 122, 123, 198, + 203, 199, 210, 211, 212, 213, 180, 84, 73, 99, + 116, 117, 208, 205, 120, 35, 36, 37, 38, 39, + 75, 89, 90, 105, 61, 71, 62, 188, 189, 100, + 55, 56, 187, 57, 58, 109, 113, 127, 136, 163, + 139, 209, 110, 68, 40, 41, 42, 97, 128, 129, + 130, 43, 44, 46, 47, 49, 50, 48, 134, 140, + 51, 52, 53, 59, 78, 114, 92, 135, 85, 159, + 93, 94, 111, 112, 206, 98, 54, 76, 79, 60, + 63, 101, 102, 77, 160, 103, 64, 65, 66, 197, + 115, 173, 174, 175, 176, 177, 178, 186, 104, 72, + 106, 107, 108, 161, 69, 70, 91, 80, 81, 96, + 124, 125, 207, 126, 131, 132, 133, 164, 165, 167, + 169, 170, 168, 171, 181, 137, 138, 143, 144, 141, + 142, 145, 146, 148, 147, 200, 202, 201, 162, 172, + 190, 192, 191, 193, 194, 195, 166, 179, 182, 183, + 204, 0, 0, 0, 0, 0, 0, 0, 215, 217, + 218, 219, 221, 222, 223, 220, 0, 0, 0, 0, + 0, 0, 225, 227, 228, 229, 230, 231, 232, 0, + 0, 0, 0, 0, 0, 0, 234, 236, 237, 240, + 241, 238, 242, 239, 0, 0, 0, 0, 0, 0, + 0, 0, 244, 246, 247, 248, 249, 253, 250, 251, + 252, 0, 0, 0, 0, 0, 264, 268, 269, 270, + 271, 260, 262, 263, 265, 266, 267, 0, 0, 0, + 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, + 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 0, - 547, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 556, 558, 559, 560, 562, 563, 561, 564, - 565, 566, 567, 0, 0, 0, 0, 0, 0, 579, - 581, 582, 583, 584, 585, 586, 0, 0, 595, 597, - 598, 272, 271, 278, 291, 289, 301, 297, 298, 302, - 299, 300, 303, 304, 305, 306, 307, 330, 331, 332, - 333, 334, 359, 360, 361, 366, 367, 294, 368, 369, - 372, 370, 371, 374, 375, 376, 390, 345, 346, 348, - 349, 377, 393, 339, 341, 394, 400, 401, 402, 295, - 358, 418, 419, 340, 413, 323, 290, 335, 391, 397, - 378, 0, 0, 422, 296, 273, 322, 382, 274, 292, - 293, 336, 337, 420, 380, 384, 385, 275, 423, 362, - 389, 324, 344, 395, 396, 399, 412, 338, 416, 414, - 415, 350, 357, 386, 387, 351, 352, 379, 404, 325, - 326, 329, 308, 310, 311, 312, 313, 314, 424, 425, - 427, 363, 364, 365, 373, 428, 429, 430, 0, 0, - 0, 381, 353, 355, 551, 439, 443, 441, 440, 444, - 442, 0, 0, 447, 448, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 383, 398, 417, 452, 453, - 354, 431, 0, 0, 0, 0, 0, 0, 405, 406, - 407, 408, 409, 410, 411, 552, 347, 342, 403, 321, - 276, 277, 343, 454, 456, 455, 457, 458, 459, 309, - 316, 449, 451, 450, 315, 0, 328, 388, 426, 327, - 356, 317, 318, 320, 319, 460, 461, 462, 466, 465, - 463, 464, 467, 468, 469, 470, 472, 471, 481, 0, - 485, 486, 0, 0, 487, 473, 479, 474, 475, 476, - 478, 480, 477, 253, 254, 255, 256, 257, 499, 501, - 500, 503, 504, 505, 506, 502, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 550, 568, 569, 570, 573, 571, - 572, 574, 575, 576, 577, 587, 588, 589, 590, 591, - 592, 599, 600, 392, 421, 438, 553, 554, 445, 446, - 432, 433, 0, 0, 0, 437, 593, 482, 483, 484, - 436, 434, 435 + 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, + 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, + 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, + 597, 599, 600, 273, 272, 279, 292, 290, 302, 298, + 299, 303, 300, 301, 304, 305, 306, 307, 308, 331, + 332, 333, 334, 335, 360, 361, 362, 367, 368, 295, + 369, 370, 373, 371, 372, 376, 377, 378, 392, 346, + 347, 349, 350, 379, 395, 340, 342, 396, 402, 403, + 404, 296, 359, 420, 421, 341, 415, 324, 291, 336, + 393, 399, 380, 0, 0, 424, 297, 274, 323, 384, + 275, 293, 294, 337, 338, 422, 382, 386, 387, 276, + 425, 363, 391, 325, 345, 397, 398, 401, 414, 339, + 418, 416, 417, 351, 358, 388, 389, 352, 353, 381, + 406, 326, 327, 330, 309, 311, 312, 313, 314, 315, + 426, 427, 429, 364, 365, 366, 374, 375, 430, 431, + 432, 0, 0, 0, 383, 354, 356, 553, 441, 445, + 443, 442, 446, 444, 0, 0, 449, 450, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 385, 400, + 419, 454, 455, 355, 433, 0, 0, 0, 0, 0, + 0, 407, 408, 409, 410, 411, 412, 413, 554, 348, + 343, 405, 322, 277, 278, 344, 456, 458, 457, 459, + 460, 461, 310, 317, 451, 453, 452, 316, 0, 329, + 390, 428, 328, 357, 318, 319, 321, 320, 462, 463, + 464, 468, 467, 465, 466, 469, 470, 471, 472, 474, + 473, 483, 0, 487, 488, 0, 0, 489, 475, 481, + 476, 477, 478, 480, 482, 479, 254, 255, 256, 257, + 258, 501, 503, 502, 505, 506, 507, 508, 504, 530, + 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 545, 546, 547, 552, 570, 571, + 572, 575, 573, 574, 576, 577, 578, 579, 589, 590, + 591, 592, 593, 594, 601, 602, 394, 423, 440, 555, + 556, 447, 448, 434, 435, 0, 0, 0, 439, 595, + 484, 485, 486, 438, 436, 437 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -23, 248, - 574, 575, 576, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272 + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -23, + 249, 576, 577, 578, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273, -273, -273, -273, -273, -273, -273, -273, -273, + -273, -273 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 234, 17, 29, 436, 18, - 30, 450, 19, 31, 464, 20, 32, 480, 494, 495, - 496, 497, 498, 21, 33, 499, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 437, 438, 439, 440, 441, - 442, 443, 451, 452, 453, 454, 455, 456, 481, 482, - 483, 484, 485, 486, 487, 488, 465, 466, 467, 468, - 469, 470, 471, 22, 34, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 23, 35, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 24, 36, 560, 561, 424, - 425, 426, 427, 25, 37, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 26, 38, 589, 590, - 591, 592, 593, 594, 595, 428, 27, 39, 598, 599, - 600 + -1, 1, 15, 16, 28, 235, 17, 29, 438, 18, + 30, 452, 19, 31, 466, 20, 32, 482, 496, 497, + 498, 499, 500, 21, 33, 501, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 439, 440, 441, 442, + 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, + 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, + 470, 471, 472, 473, 22, 34, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 23, 35, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 24, 36, 562, 563, + 426, 427, 428, 429, 25, 37, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 26, 38, 591, + 592, 593, 594, 595, 596, 597, 430, 27, 39, 600, + 601, 602 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1672,142 +1674,144 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 472, 429, 457, 430, 431, 559, 444, 596, 597, - 500, 3, 601, 602, 603, 445, 446, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 604, 605, 472, 606, 458, - 459, 607, 608, 609, 610, 4, 611, 612, 613, 614, - 615, 5, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 616, 617, 460, 432, 505, 506, 507, 508, - 509, 510, 511, 512, 583, 584, 585, 586, 587, 588, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 6, 433, 633, 634, 434, - 447, 635, 448, 636, 637, 638, 639, 640, 641, 642, - 643, 7, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 461, 462, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 8, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 463, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 9, 738, 474, 475, 476, 739, 740, 741, 742, 743, - 744, 745, 479, 746, 747, 748, 749, 435, 10, 750, - 751, 449, 752, 753, 754, 755, 756, 757, 758, 759, - 489, 490, 491, 492, 493, 11, 473, 760, 474, 475, - 476, 477, 478, 761, 12, 762, 763, 764, 479, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 13, 784, - 785, 501, 14, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 786, 787, 788, 789, 72, - 73, 74, 790, 791, 792, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 116, 117, 118, 802, 119, - 120, 121, 803, 804, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 805, 806, - 807, 146, 808, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 828, 196, 829, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 212, 213, 214, 215, 216, 217, 841, 842, 843, 844, - 845, 846, 847, 218, 848, 849, 850, 851, 852, 853, - 854, 219, 220, 855, 221, 222, 856, 223, 224, 857, - 858, 225, 226, 227, 228, 229, 230, 231, 232, 859, - 860, 861, 233, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 0, 0, 0, 0, 0, 0, + 2, 474, 431, 459, 432, 433, 561, 446, 598, 599, + 502, 3, 603, 604, 605, 447, 448, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 606, 607, 474, 608, 460, + 461, 609, 610, 611, 612, 4, 613, 614, 615, 616, + 617, 5, 564, 565, 566, 567, 568, 569, 570, 571, + 572, 573, 618, 619, 462, 434, 507, 508, 509, 510, + 511, 512, 513, 514, 585, 586, 587, 588, 589, 590, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 630, 631, 632, 633, 634, 6, 435, 635, 636, 436, + 449, 637, 450, 638, 639, 640, 641, 642, 643, 644, + 645, 7, 646, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 463, 464, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 8, 685, 686, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 701, 702, 465, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 9, 741, 476, 477, 478, 742, 743, 744, 745, + 746, 747, 748, 481, 749, 750, 751, 752, 437, 10, + 753, 754, 451, 755, 756, 757, 758, 759, 760, 761, + 762, 491, 492, 493, 494, 495, 11, 475, 763, 476, + 477, 478, 479, 480, 764, 12, 765, 766, 767, 481, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 13, + 787, 788, 503, 14, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 789, 790, 791, 792, + 72, 73, 74, 793, 794, 795, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 116, 117, 118, 805, + 119, 120, 121, 806, 807, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 808, + 809, 810, 146, 811, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 812, 813, 814, 815, 816, + 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, + 827, 828, 829, 830, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 831, 197, 832, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 842, 843, 213, 214, 215, 216, 217, 218, 844, 845, + 846, 847, 848, 849, 850, 219, 851, 852, 853, 854, + 855, 856, 857, 220, 221, 858, 222, 223, 859, 224, + 225, 860, 861, 226, 227, 228, 229, 230, 231, 232, + 233, 862, 863, 864, 234, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, + 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, + 890, 891, 892, 893, 894, 895, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 504 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 504, + 505, 506 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 33, 11, 10, 10, 10, 52, 53, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 33, 11, 10, 10, 10, 52, 53, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 33, 282, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 10, 10, 10, 10, 48, - 49, 50, 10, 10, 10, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 104, 105, 106, 10, 108, - 109, 110, 10, 10, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 10, 10, - 10, 140, 10, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 33, 283, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 10, 10, 10, 10, + 48, 49, 50, 10, 10, 10, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 104, 105, 106, 10, + 108, 109, 110, 10, 10, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 10, + 10, 10, 140, 10, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 10, 211, 10, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 239, 240, 241, 242, 243, 244, 10, 10, 10, 10, - 10, 10, 10, 252, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 10, 263, 264, 10, 266, 267, 10, - 10, 270, 271, 272, 273, 274, 275, 276, 277, 10, - 10, 10, 281, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 10, 212, 10, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 240, 241, 242, 243, 244, 245, 10, 10, + 10, 10, 10, 10, 10, 253, 10, 10, 10, 10, + 10, 10, 10, 261, 262, 10, 264, 265, 10, 267, + 268, 10, 10, 271, 272, 273, 274, 275, 276, 277, + 278, 10, 10, 10, 282, 10, 10, 10, 10, 10, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 33, 33 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + 33, 33 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 289, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 290, 291, 294, 297, 300, - 303, 311, 531, 542, 563, 571, 584, 594, 292, 295, - 298, 301, 304, 312, 532, 543, 564, 572, 585, 595, + 0, 290, 0, 11, 45, 51, 95, 111, 153, 211, + 229, 246, 255, 279, 283, 291, 292, 295, 298, 301, + 304, 312, 533, 544, 565, 573, 586, 596, 293, 296, + 299, 302, 305, 313, 534, 545, 566, 574, 587, 597, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -1819,15 +1823,15 @@ static const yytype_uint16 yystos[] = 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, + 145, 146, 147, 148, 149, 150, 151, 152, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, + 204, 205, 206, 207, 208, 209, 210, 212, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 252, 260, - 261, 263, 264, 266, 267, 270, 271, 272, 273, 274, - 275, 276, 277, 281, 293, 314, 315, 316, 317, 318, + 226, 227, 228, 240, 241, 242, 243, 244, 245, 253, + 261, 262, 264, 265, 267, 268, 271, 272, 273, 274, + 275, 276, 277, 278, 282, 294, 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, @@ -1846,25 +1850,25 @@ static const yytype_uint16 yystos[] = 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, 567, 568, 569, 570, 593, 44, - 46, 47, 107, 138, 141, 269, 296, 503, 504, 505, - 506, 507, 508, 509, 44, 52, 53, 137, 139, 268, - 299, 510, 511, 512, 513, 514, 515, 44, 80, 81, - 105, 172, 173, 212, 302, 524, 525, 526, 527, 528, - 529, 530, 44, 253, 255, 256, 257, 258, 259, 265, - 305, 516, 517, 518, 519, 520, 521, 522, 523, 283, - 284, 285, 286, 287, 306, 307, 308, 309, 310, 313, - 516, 517, 518, 519, 520, 96, 97, 98, 99, 100, - 101, 102, 103, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 112, - 565, 566, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 246, 247, 248, 249, 250, 251, 586, - 587, 588, 589, 590, 591, 592, 279, 280, 596, 597, - 598, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 499, 500, 501, 502, 503, 504, 569, 570, 571, 572, + 595, 44, 46, 47, 107, 138, 141, 270, 297, 505, + 506, 507, 508, 509, 510, 511, 44, 52, 53, 137, + 139, 269, 300, 512, 513, 514, 515, 516, 517, 44, + 80, 81, 105, 173, 174, 213, 303, 526, 527, 528, + 529, 530, 531, 532, 44, 254, 256, 257, 258, 259, + 260, 266, 306, 518, 519, 520, 521, 522, 523, 524, + 525, 284, 285, 286, 287, 288, 307, 308, 309, 310, + 311, 314, 518, 519, 520, 521, 522, 96, 97, 98, + 99, 100, 101, 102, 103, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 112, 567, 568, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, + 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, + 598, 599, 600, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1893,40 +1897,40 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 289, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 292, 292, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 294, 295, 295, 296, 296, 296, 296, - 296, 296, 296, 297, 298, 298, 299, 299, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 303, 304, 304, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 308, 309, 310, 311, 312, - 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 292, 293, 293, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, + 294, 294, 294, 294, 295, 296, 296, 297, 297, 297, + 297, 297, 297, 297, 298, 299, 299, 300, 300, 300, + 300, 300, 300, 301, 302, 302, 303, 303, 303, 303, + 303, 303, 303, 304, 305, 305, 306, 306, 306, 306, + 306, 306, 306, 306, 307, 308, 309, 310, 311, 312, + 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, + 314, 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, @@ -1948,18 +1952,18 @@ static const yytype_uint16 yyr1[] = 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, - 532, 533, 533, 533, 533, 533, 533, 533, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, + 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 574, 575, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 585, 586, 586, 586, 586, 586, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 595, 596, 596, 597, - 598 + 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, + 598, 599, 600 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1986,13 +1990,13 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2004,28 +2008,28 @@ static const yytype_uint8 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, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2714,10 +2718,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2718 "util/configparser.c" +#line 2722 "util/configparser.c" break; - case 213: + case 214: #line 284 "./util/configparser.y" { struct config_stub* s; @@ -2729,10 +2733,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2733 "util/configparser.c" +#line 2737 "util/configparser.c" break; - case 223: + case 224: #line 301 "./util/configparser.y" { struct config_stub* s; @@ -2744,10 +2748,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 2752 "util/configparser.c" break; - case 232: + case 233: #line 318 "./util/configparser.y" { struct config_view* s; @@ -2761,10 +2765,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 2769 "util/configparser.c" break; - case 242: + case 243: #line 337 "./util/configparser.y" { struct config_auth* s; @@ -2781,10 +2785,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2785 "util/configparser.c" +#line 2789 "util/configparser.c" break; - case 253: + case 254: #line 361 "./util/configparser.y" { uint8_t* bitlist; @@ -2802,10 +2806,10 @@ yyreduce: } } -#line 2806 "util/configparser.c" +#line 2810 "util/configparser.c" break; - case 254: + case 255: #line 380 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2821,20 +2825,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2825 "util/configparser.c" +#line 2829 "util/configparser.c" break; - case 255: + case 256: #line 397 "./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 2835 "util/configparser.c" +#line 2839 "util/configparser.c" break; - case 256: + case 257: #line 405 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2843,20 +2847,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2847 "util/configparser.c" +#line 2851 "util/configparser.c" break; - case 257: + case 258: #line 415 "./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 2857 "util/configparser.c" +#line 2861 "util/configparser.c" break; - case 258: + case 259: #line 423 "./util/configparser.y" { struct config_auth* s; @@ -2873,10 +2877,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2877 "util/configparser.c" +#line 2881 "util/configparser.c" break; - case 271: + case 272: #line 446 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2885,10 +2889,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2889 "util/configparser.c" +#line 2893 "util/configparser.c" break; - case 272: + case 273: #line 455 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -2897,10 +2901,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2901 "util/configparser.c" +#line 2905 "util/configparser.c" break; - case 273: + case 274: #line 464 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -2911,10 +2915,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2915 "util/configparser.c" +#line 2919 "util/configparser.c" break; - case 274: + case 275: #line 475 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -2923,10 +2927,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2931 "util/configparser.c" break; - case 275: + case 276: #line 484 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -2935,10 +2939,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2939 "util/configparser.c" +#line 2943 "util/configparser.c" break; - case 276: + case 277: #line 493 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -2947,10 +2951,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2951 "util/configparser.c" +#line 2955 "util/configparser.c" break; - case 277: + case 278: #line 502 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -2961,10 +2965,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2965 "util/configparser.c" +#line 2969 "util/configparser.c" break; - case 278: + case 279: #line 513 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -2973,10 +2977,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2981 "util/configparser.c" break; - case 279: + case 280: #line 522 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -2988,10 +2992,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 2996 "util/configparser.c" break; - case 280: + case 281: #line 534 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3004,10 +3008,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 281: + case 282: #line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3022,10 +3026,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" +#line 3030 "util/configparser.c" break; - case 282: + case 283: #line 563 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3036,10 +3040,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" +#line 3044 "util/configparser.c" break; - case 283: + case 284: #line 574 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3056,10 +3060,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3064 "util/configparser.c" break; - case 284: + case 285: #line 591 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3076,10 +3080,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3084 "util/configparser.c" break; - case 285: + case 286: #line 608 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3096,10 +3100,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3104 "util/configparser.c" break; - case 286: + case 287: #line 625 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3116,10 +3120,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3124 "util/configparser.c" break; - case 287: + case 288: #line 642 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3134,10 +3138,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3138 "util/configparser.c" +#line 3142 "util/configparser.c" break; - case 288: + case 289: #line 657 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3152,10 +3156,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3160 "util/configparser.c" break; - case 289: + case 290: #line 672 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3168,10 +3172,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3172 "util/configparser.c" +#line 3176 "util/configparser.c" break; - case 290: + case 291: #line 685 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3186,10 +3190,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3190 "util/configparser.c" +#line 3194 "util/configparser.c" break; - case 291: + case 292: #line 700 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3198,10 +3202,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3206 "util/configparser.c" break; - case 292: + case 293: #line 709 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3210,10 +3214,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3218 "util/configparser.c" break; - case 293: + case 294: #line 718 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3222,10 +3226,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" +#line 3230 "util/configparser.c" break; - case 294: + case 295: #line 727 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3234,10 +3238,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3238 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 295: + case 296: #line 736 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3246,10 +3250,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3250 "util/configparser.c" +#line 3254 "util/configparser.c" break; - case 296: + case 297: #line 745 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3258,10 +3262,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3266 "util/configparser.c" break; - case 297: + case 298: #line 754 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3270,10 +3274,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3278 "util/configparser.c" break; - case 298: + case 299: #line 763 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3282,10 +3286,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3286 "util/configparser.c" +#line 3290 "util/configparser.c" break; - case 299: + case 300: #line 772 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3294,10 +3298,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3302 "util/configparser.c" break; - case 300: + case 301: #line 781 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3306,10 +3310,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3314 "util/configparser.c" break; - case 301: + case 302: #line 790 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3318,10 +3322,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3322 "util/configparser.c" +#line 3326 "util/configparser.c" break; - case 302: + case 303: #line 799 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3330,10 +3334,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3334 "util/configparser.c" +#line 3338 "util/configparser.c" break; - case 303: + case 304: #line 808 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3342,10 +3346,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3346 "util/configparser.c" +#line 3350 "util/configparser.c" break; - case 304: + case 305: #line 817 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3354,10 +3358,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3362 "util/configparser.c" break; - case 305: + case 306: #line 826 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3370,10 +3374,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3378 "util/configparser.c" break; - case 306: + case 307: #line 839 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3382,10 +3386,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3390 "util/configparser.c" break; - case 307: + case 308: #line 848 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3398,10 +3402,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3406 "util/configparser.c" break; - case 308: + case 309: #line 861 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3410,10 +3414,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3418 "util/configparser.c" break; - case 309: + case 310: #line 870 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3422,10 +3426,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3430 "util/configparser.c" break; - case 310: + case 311: #line 879 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3434,30 +3438,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3442 "util/configparser.c" break; - case 311: + case 312: #line 888 "./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 3448 "util/configparser.c" +#line 3452 "util/configparser.c" break; - case 312: + case 313: #line 895 "./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 3458 "util/configparser.c" +#line 3462 "util/configparser.c" break; - case 313: + case 314: #line 902 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3466,20 +3470,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3474 "util/configparser.c" break; - case 314: + case 315: #line 911 "./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 3480 "util/configparser.c" +#line 3484 "util/configparser.c" break; - case 315: + case 316: #line 918 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3488,10 +3492,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3496 "util/configparser.c" break; - case 316: + case 317: #line 927 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3499,30 +3503,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3503 "util/configparser.c" +#line 3507 "util/configparser.c" break; - case 317: + case 318: #line 935 "./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 3513 "util/configparser.c" +#line 3517 "util/configparser.c" break; - case 318: + case 319: #line 942 "./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 3523 "util/configparser.c" +#line 3527 "util/configparser.c" break; - case 319: + case 320: #line 949 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3530,10 +3534,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3534 "util/configparser.c" +#line 3538 "util/configparser.c" break; - case 320: + case 321: #line 957 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3542,10 +3546,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 3550 "util/configparser.c" break; - case 321: + case 322: #line 966 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3554,10 +3558,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" +#line 3562 "util/configparser.c" break; - case 322: + case 323: #line 975 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3566,10 +3570,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" +#line 3574 "util/configparser.c" break; - case 323: + case 324: #line 984 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3583,10 +3587,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3587 "util/configparser.c" +#line 3591 "util/configparser.c" break; - case 324: + case 325: #line 998 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3595,10 +3599,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3599 "util/configparser.c" +#line 3603 "util/configparser.c" break; - case 325: + case 326: #line 1007 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3607,10 +3611,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3615 "util/configparser.c" break; - case 326: + case 327: #line 1016 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3619,10 +3623,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3623 "util/configparser.c" +#line 3627 "util/configparser.c" break; - case 327: + case 328: #line 1025 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3631,10 +3635,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 3639 "util/configparser.c" break; - case 328: + case 329: #line 1034 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3643,10 +3647,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 329: + case 330: #line 1043 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3655,30 +3659,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3659 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 330: + case 331: #line 1052 "./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 3669 "util/configparser.c" +#line 3673 "util/configparser.c" break; - case 331: + case 332: #line 1059 "./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 3679 "util/configparser.c" +#line 3683 "util/configparser.c" break; - case 332: + case 333: #line 1066 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3704,10 +3708,10 @@ yyreduce: } } } -#line 3708 "util/configparser.c" +#line 3712 "util/configparser.c" break; - case 333: + case 334: #line 1092 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3715,50 +3719,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3719 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 334: + case 335: #line 1100 "./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 3729 "util/configparser.c" +#line 3733 "util/configparser.c" break; - case 335: + case 336: #line 1107 "./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 3739 "util/configparser.c" +#line 3743 "util/configparser.c" break; - case 336: + case 337: #line 1114 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3749 "util/configparser.c" +#line 3753 "util/configparser.c" break; - case 337: + case 338: #line 1121 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3759 "util/configparser.c" +#line 3763 "util/configparser.c" break; - case 338: + case 339: #line 1128 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3766,10 +3770,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3770 "util/configparser.c" +#line 3774 "util/configparser.c" break; - case 339: + case 340: #line 1136 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3777,10 +3781,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3781 "util/configparser.c" +#line 3785 "util/configparser.c" break; - case 340: + case 341: #line 1144 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -3788,20 +3792,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3792 "util/configparser.c" +#line 3796 "util/configparser.c" break; - case 341: + case 342: #line 1152 "./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 3802 "util/configparser.c" +#line 3806 "util/configparser.c" break; - case 342: + case 343: #line 1159 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -3812,10 +3816,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3820 "util/configparser.c" break; - case 343: + case 344: #line 1170 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -3826,20 +3830,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3834 "util/configparser.c" break; - case 344: + case 345: #line 1181 "./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 3840 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 345: + case 346: #line 1188 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -3848,10 +3852,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3856 "util/configparser.c" break; - case 346: + case 347: #line 1197 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -3860,10 +3864,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3868 "util/configparser.c" break; - case 347: + case 348: #line 1206 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -3872,30 +3876,30 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3880 "util/configparser.c" break; - case 348: + case 349: #line 1215 "./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 3886 "util/configparser.c" +#line 3890 "util/configparser.c" break; - case 349: + case 350: #line 1222 "./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 3896 "util/configparser.c" +#line 3900 "util/configparser.c" break; - case 350: + case 351: #line 1229 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -3903,10 +3907,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3907 "util/configparser.c" +#line 3911 "util/configparser.c" break; - case 351: + case 352: #line 1237 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -3914,10 +3918,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3918 "util/configparser.c" +#line 3922 "util/configparser.c" break; - case 352: + case 353: #line 1245 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -3927,10 +3931,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 353: + case 354: #line 1255 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -3940,10 +3944,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3948 "util/configparser.c" break; - case 354: + case 355: #line 1265 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -3953,10 +3957,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3961 "util/configparser.c" break; - case 355: + case 356: #line 1275 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -3970,10 +3974,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3978 "util/configparser.c" break; - case 356: + case 357: #line 1289 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -3981,10 +3985,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3989 "util/configparser.c" break; - case 357: + case 358: #line 1297 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3997,10 +4001,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 358: + case 359: #line 1310 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4011,10 +4015,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" +#line 4019 "util/configparser.c" break; - case 359: + case 360: #line 1321 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4022,10 +4026,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 4030 "util/configparser.c" break; - case 360: + case 361: #line 1329 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4038,10 +4042,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4046 "util/configparser.c" break; - case 361: + case 362: #line 1342 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4050,10 +4054,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4058 "util/configparser.c" break; - case 362: + case 363: #line 1351 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4062,10 +4066,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4070 "util/configparser.c" break; - case 363: + case 364: #line 1360 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4074,10 +4078,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4082 "util/configparser.c" break; - case 364: + case 365: #line 1369 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4087,10 +4091,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4095 "util/configparser.c" break; - case 365: + case 366: #line 1379 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4100,10 +4104,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4108 "util/configparser.c" break; - case 366: + case 367: #line 1389 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -4111,10 +4115,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4115 "util/configparser.c" +#line 4119 "util/configparser.c" break; - case 367: + case 368: #line 1397 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4127,10 +4131,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4135 "util/configparser.c" break; - case 368: + case 369: #line 1410 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -4139,10 +4143,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4147 "util/configparser.c" break; - case 369: + case 370: #line 1419 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -4150,10 +4154,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 370: + case 371: #line 1427 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -4162,10 +4166,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4170 "util/configparser.c" break; - case 371: + case 372: #line 1436 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -4173,10 +4177,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4177 "util/configparser.c" +#line 4181 "util/configparser.c" break; - case 372: + case 373: #line 1444 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4189,10 +4193,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4197 "util/configparser.c" break; - case 373: + case 374: #line 1457 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -4201,21 +4205,34 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4205 "util/configparser.c" +#line 4209 "util/configparser.c" break; - case 374: + case 375: #line 1466 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->infra_keep_probing = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4222 "util/configparser.c" + break; + + case 376: +#line 1476 "./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 4215 "util/configparser.c" +#line 4232 "util/configparser.c" break; - case 375: -#line 1473 "./util/configparser.y" + case 377: +#line 1483 "./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) @@ -4224,11 +4241,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4245 "util/configparser.c" break; - case 376: -#line 1483 "./util/configparser.y" + case 378: +#line 1493 "./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) @@ -4237,11 +4254,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4258 "util/configparser.c" break; - case 377: -#line 1493 "./util/configparser.y" + case 379: +#line 1503 "./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) @@ -4250,11 +4267,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4271 "util/configparser.c" break; - case 378: -#line 1503 "./util/configparser.y" + case 380: +#line 1513 "./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) @@ -4263,11 +4280,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4284 "util/configparser.c" break; - case 379: -#line 1513 "./util/configparser.y" + case 381: +#line 1523 "./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) @@ -4276,11 +4293,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4297 "util/configparser.c" break; - case 380: -#line 1523 "./util/configparser.y" + case 382: +#line 1533 "./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) @@ -4289,11 +4306,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4310 "util/configparser.c" break; - case 381: -#line 1533 "./util/configparser.y" + case 383: +#line 1543 "./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) @@ -4302,11 +4319,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4323 "util/configparser.c" break; - case 382: -#line 1543 "./util/configparser.y" + case 384: +#line 1553 "./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) @@ -4315,41 +4332,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 383: -#line 1553 "./util/configparser.y" + case 385: +#line 1563 "./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 4329 "util/configparser.c" +#line 4346 "util/configparser.c" break; - case 384: -#line 1560 "./util/configparser.y" + case 386: +#line 1570 "./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 4339 "util/configparser.c" +#line 4356 "util/configparser.c" break; - case 385: -#line 1567 "./util/configparser.y" + case 387: +#line 1577 "./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 4349 "util/configparser.c" +#line 4366 "util/configparser.c" break; - case 386: -#line 1574 "./util/configparser.y" + case 388: +#line 1584 "./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) @@ -4357,11 +4374,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4378 "util/configparser.c" break; - case 387: -#line 1583 "./util/configparser.y" + case 389: +#line 1593 "./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) @@ -4369,11 +4386,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4390 "util/configparser.c" break; - case 388: -#line 1592 "./util/configparser.y" + case 390: +#line 1602 "./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) @@ -4381,11 +4398,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 389: -#line 1601 "./util/configparser.y" + case 391: +#line 1611 "./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) @@ -4393,21 +4410,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4414 "util/configparser.c" break; - case 390: -#line 1610 "./util/configparser.y" + case 392: +#line 1620 "./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 4407 "util/configparser.c" +#line 4424 "util/configparser.c" break; - case 391: -#line 1617 "./util/configparser.y" + case 393: +#line 1627 "./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) @@ -4416,11 +4433,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4420 "util/configparser.c" +#line 4437 "util/configparser.c" break; - case 392: -#line 1627 "./util/configparser.y" + case 394: +#line 1637 "./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 && @@ -4439,21 +4456,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4443 "util/configparser.c" +#line 4460 "util/configparser.c" break; - case 393: -#line 1647 "./util/configparser.y" + case 395: +#line 1657 "./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 4453 "util/configparser.c" +#line 4470 "util/configparser.c" break; - case 394: -#line 1654 "./util/configparser.y" + case 396: +#line 1664 "./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) { @@ -4470,11 +4487,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4491 "util/configparser.c" break; - case 395: -#line 1672 "./util/configparser.y" + case 397: +#line 1682 "./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) { @@ -4486,11 +4503,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4507 "util/configparser.c" break; - case 396: -#line 1685 "./util/configparser.y" + case 398: +#line 1695 "./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) { @@ -4502,11 +4519,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4523 "util/configparser.c" break; - case 397: -#line 1698 "./util/configparser.y" + case 399: +#line 1708 "./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) @@ -4514,11 +4531,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" +#line 4535 "util/configparser.c" break; - case 398: -#line 1707 "./util/configparser.y" + case 400: +#line 1717 "./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) @@ -4526,11 +4543,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" +#line 4547 "util/configparser.c" break; - case 399: -#line 1716 "./util/configparser.y" + case 401: +#line 1726 "./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) @@ -4538,11 +4555,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4559 "util/configparser.c" break; - case 400: -#line 1725 "./util/configparser.y" + case 402: +#line 1735 "./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) @@ -4550,11 +4567,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4571 "util/configparser.c" break; - case 401: -#line 1734 "./util/configparser.y" + case 403: +#line 1744 "./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) @@ -4563,11 +4580,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4584 "util/configparser.c" break; - case 402: -#line 1744 "./util/configparser.y" + case 404: +#line 1754 "./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) @@ -4576,11 +4593,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4597 "util/configparser.c" break; - case 403: -#line 1754 "./util/configparser.y" + case 405: +#line 1764 "./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) @@ -4590,11 +4607,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4611 "util/configparser.c" break; - case 404: -#line 1765 "./util/configparser.y" + case 406: +#line 1775 "./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) @@ -4602,11 +4619,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4623 "util/configparser.c" break; - case 405: -#line 1774 "./util/configparser.y" + case 407: +#line 1784 "./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) @@ -4614,11 +4631,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 406: -#line 1783 "./util/configparser.y" + case 408: +#line 1793 "./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) @@ -4626,11 +4643,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4647 "util/configparser.c" break; - case 407: -#line 1792 "./util/configparser.y" + case 409: +#line 1802 "./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) @@ -4638,11 +4655,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4659 "util/configparser.c" break; - case 408: -#line 1801 "./util/configparser.y" + case 410: +#line 1811 "./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) @@ -4650,11 +4667,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 409: -#line 1810 "./util/configparser.y" + case 411: +#line 1820 "./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) @@ -4662,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 410: -#line 1819 "./util/configparser.y" + case 412: +#line 1829 "./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) @@ -4678,11 +4695,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4699 "util/configparser.c" break; - case 411: -#line 1832 "./util/configparser.y" + case 413: +#line 1842 "./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) @@ -4694,11 +4711,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 4715 "util/configparser.c" break; - case 412: -#line 1845 "./util/configparser.y" + case 414: +#line 1855 "./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) @@ -4706,21 +4723,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4727 "util/configparser.c" break; - case 413: -#line 1854 "./util/configparser.y" + case 415: +#line 1864 "./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 4720 "util/configparser.c" +#line 4737 "util/configparser.c" break; - case 414: -#line 1861 "./util/configparser.y" + case 416: +#line 1871 "./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) @@ -4728,11 +4745,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4749 "util/configparser.c" break; - case 415: -#line 1870 "./util/configparser.y" + case 417: +#line 1880 "./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) @@ -4740,11 +4757,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4761 "util/configparser.c" break; - case 416: -#line 1879 "./util/configparser.y" + case 418: +#line 1889 "./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) @@ -4752,11 +4769,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4773 "util/configparser.c" break; - case 417: -#line 1888 "./util/configparser.y" + case 419: +#line 1898 "./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) @@ -4765,22 +4782,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4786 "util/configparser.c" break; - case 418: -#line 1897 "./util/configparser.y" + case 420: +#line 1907 "./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 4780 "util/configparser.c" +#line 4797 "util/configparser.c" break; - case 419: -#line 1905 "./util/configparser.y" + case 421: +#line 1915 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4809,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4813 "util/configparser.c" break; - case 420: -#line 1918 "./util/configparser.y" + case 422: +#line 1928 "./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 4807 "util/configparser.c" +#line 4824 "util/configparser.c" break; - case 421: -#line 1926 "./util/configparser.y" + case 423: +#line 1936 "./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 && @@ -4847,21 +4864,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4851 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 422: -#line 1967 "./util/configparser.y" + case 424: +#line 1977 "./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 4861 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 423: -#line 1974 "./util/configparser.y" + case 425: +#line 1984 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4875,11 +4892,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4879 "util/configparser.c" +#line 4896 "util/configparser.c" break; - case 424: -#line 1989 "./util/configparser.y" + case 426: +#line 1999 "./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) @@ -4888,11 +4905,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4909 "util/configparser.c" break; - case 425: -#line 1999 "./util/configparser.y" + case 427: +#line 2009 "./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) @@ -4901,41 +4918,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 4922 "util/configparser.c" break; - case 426: -#line 2009 "./util/configparser.y" + case 428: +#line 2019 "./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 4915 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 427: -#line 2016 "./util/configparser.y" + case 429: +#line 2026 "./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 4925 "util/configparser.c" +#line 4942 "util/configparser.c" break; - case 428: -#line 2023 "./util/configparser.y" + case 430: +#line 2033 "./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 4935 "util/configparser.c" +#line 4952 "util/configparser.c" break; - case 429: -#line 2030 "./util/configparser.y" + case 431: +#line 2040 "./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) @@ -4943,22 +4960,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 4964 "util/configparser.c" break; - case 430: -#line 2039 "./util/configparser.y" + case 432: +#line 2049 "./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 4958 "util/configparser.c" +#line 4975 "util/configparser.c" break; - case 431: -#line 2047 "./util/configparser.y" + case 433: +#line 2057 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4971,11 +4988,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4992 "util/configparser.c" break; - case 432: -#line 2061 "./util/configparser.y" + case 434: +#line 2071 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4995,11 +5012,11 @@ yyreduce: } } } -#line 4999 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 433: -#line 2082 "./util/configparser.y" + case 435: +#line 2092 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5019,11 +5036,11 @@ yyreduce: } } } -#line 5023 "util/configparser.c" +#line 5040 "util/configparser.c" break; - case 434: -#line 2103 "./util/configparser.y" + case 436: +#line 2113 "./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, @@ -5034,11 +5051,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5038 "util/configparser.c" +#line 5055 "util/configparser.c" break; - case 435: -#line 2115 "./util/configparser.y" + case 437: +#line 2125 "./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, @@ -5049,11 +5066,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5053 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 436: -#line 2127 "./util/configparser.y" + case 438: +#line 2137 "./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, @@ -5064,11 +5081,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5068 "util/configparser.c" +#line 5085 "util/configparser.c" break; - case 437: -#line 2139 "./util/configparser.y" + case 439: +#line 2149 "./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, @@ -5076,11 +5093,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5080 "util/configparser.c" +#line 5097 "util/configparser.c" break; - case 438: -#line 2148 "./util/configparser.y" + case 440: +#line 2158 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5100,11 +5117,11 @@ yyreduce: } } } -#line 5104 "util/configparser.c" +#line 5121 "util/configparser.c" break; - case 439: -#line 2169 "./util/configparser.y" + case 441: +#line 2179 "./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) @@ -5112,11 +5129,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5133 "util/configparser.c" break; - case 440: -#line 2179 "./util/configparser.y" + case 442: +#line 2189 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5124,33 +5141,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5145 "util/configparser.c" break; - case 441: -#line 2188 "./util/configparser.y" + case 443: +#line 2198 "./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 5139 "util/configparser.c" +#line 5156 "util/configparser.c" break; - case 442: -#line 2196 "./util/configparser.y" + case 444: +#line 2206 "./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 5150 "util/configparser.c" +#line 5167 "util/configparser.c" break; - case 443: -#line 2204 "./util/configparser.y" + case 445: +#line 2214 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5162,11 +5179,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 444: -#line 2217 "./util/configparser.y" + case 446: +#line 2227 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5178,11 +5195,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5182 "util/configparser.c" +#line 5199 "util/configparser.c" break; - case 445: -#line 2230 "./util/configparser.y" + case 447: +#line 2240 "./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) { @@ -5196,11 +5213,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5200 "util/configparser.c" +#line 5217 "util/configparser.c" break; - case 446: -#line 2245 "./util/configparser.y" + case 448: +#line 2255 "./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) { @@ -5214,11 +5231,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5218 "util/configparser.c" +#line 5235 "util/configparser.c" break; - case 447: -#line 2260 "./util/configparser.y" + case 449: +#line 2270 "./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) @@ -5226,11 +5243,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5247 "util/configparser.c" break; - case 448: -#line 2269 "./util/configparser.y" + case 450: +#line 2279 "./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) @@ -5238,20 +5255,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5259 "util/configparser.c" break; - case 449: -#line 2278 "./util/configparser.y" + case 451: +#line 2288 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5268 "util/configparser.c" break; - case 450: -#line 2284 "./util/configparser.y" + case 452: +#line 2294 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5259,11 +5276,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5280 "util/configparser.c" break; - case 451: -#line 2293 "./util/configparser.y" + case 453: +#line 2303 "./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) @@ -5271,11 +5288,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5292 "util/configparser.c" break; - case 452: -#line 2302 "./util/configparser.y" + case 454: +#line 2312 "./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) @@ -5284,11 +5301,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5305 "util/configparser.c" break; - case 453: -#line 2312 "./util/configparser.y" + case 455: +#line 2322 "./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) @@ -5297,11 +5314,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5318 "util/configparser.c" break; - case 454: -#line 2322 "./util/configparser.y" + case 456: +#line 2332 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5313,11 +5330,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5334 "util/configparser.c" break; - case 455: -#line 2335 "./util/configparser.y" + case 457: +#line 2345 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5329,11 +5346,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 5350 "util/configparser.c" break; - case 456: -#line 2348 "./util/configparser.y" + case 458: +#line 2358 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5344,11 +5361,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5348 "util/configparser.c" +#line 5365 "util/configparser.c" break; - case 457: -#line 2360 "./util/configparser.y" + case 459: +#line 2370 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5361,11 +5378,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5365 "util/configparser.c" +#line 5382 "util/configparser.c" break; - case 458: -#line 2374 "./util/configparser.y" + case 460: +#line 2384 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5376,11 +5393,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5380 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 459: -#line 2386 "./util/configparser.y" + case 461: +#line 2396 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5393,11 +5410,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5397 "util/configparser.c" +#line 5414 "util/configparser.c" break; - case 460: -#line 2400 "./util/configparser.y" + case 462: +#line 2410 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5406,31 +5423,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5410 "util/configparser.c" +#line 5427 "util/configparser.c" break; - case 461: -#line 2410 "./util/configparser.y" + case 463: +#line 2420 "./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 5420 "util/configparser.c" +#line 5437 "util/configparser.c" break; - case 462: -#line 2417 "./util/configparser.y" + case 464: +#line 2427 "./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 5430 "util/configparser.c" +#line 5447 "util/configparser.c" break; - case 463: -#line 2424 "./util/configparser.y" + case 465: +#line 2434 "./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) @@ -5438,11 +5455,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5442 "util/configparser.c" +#line 5459 "util/configparser.c" break; - case 464: -#line 2433 "./util/configparser.y" + case 466: +#line 2443 "./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) @@ -5450,11 +5467,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5471 "util/configparser.c" break; - case 465: -#line 2442 "./util/configparser.y" + case 467: +#line 2452 "./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) @@ -5463,11 +5480,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5484 "util/configparser.c" break; - case 466: -#line 2452 "./util/configparser.y" + case 468: +#line 2462 "./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) @@ -5476,11 +5493,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5497 "util/configparser.c" break; - case 467: -#line 2462 "./util/configparser.y" + case 469: +#line 2472 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5489,31 +5506,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5493 "util/configparser.c" +#line 5510 "util/configparser.c" break; - case 468: -#line 2472 "./util/configparser.y" + case 470: +#line 2482 "./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 5503 "util/configparser.c" +#line 5520 "util/configparser.c" break; - case 469: -#line 2479 "./util/configparser.y" + case 471: +#line 2489 "./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 5513 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 470: -#line 2486 "./util/configparser.y" + case 472: +#line 2496 "./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) @@ -5521,11 +5538,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5525 "util/configparser.c" +#line 5542 "util/configparser.c" break; - case 471: -#line 2495 "./util/configparser.y" + case 473: +#line 2505 "./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) @@ -5533,11 +5550,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5554 "util/configparser.c" break; - case 472: -#line 2504 "./util/configparser.y" + case 474: +#line 2514 "./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) @@ -5546,11 +5563,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5567 "util/configparser.c" break; - case 473: -#line 2514 "./util/configparser.y" + case 475: +#line 2524 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5559,52 +5576,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5563 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 474: -#line 2524 "./util/configparser.y" + case 476: +#line 2534 "./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 5573 "util/configparser.c" +#line 5590 "util/configparser.c" break; - case 475: -#line 2531 "./util/configparser.y" + case 477: +#line 2541 "./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 5583 "util/configparser.c" +#line 5600 "util/configparser.c" break; - case 476: -#line 2538 "./util/configparser.y" + case 478: +#line 2548 "./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 5593 "util/configparser.c" +#line 5610 "util/configparser.c" break; - case 477: -#line 2545 "./util/configparser.y" + case 479: +#line 2555 "./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 5604 "util/configparser.c" +#line 5621 "util/configparser.c" break; - case 478: -#line 2553 "./util/configparser.y" + case 480: +#line 2563 "./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) @@ -5613,11 +5630,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5634 "util/configparser.c" break; - case 479: -#line 2563 "./util/configparser.y" + case 481: +#line 2573 "./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) @@ -5626,11 +5643,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5647 "util/configparser.c" break; - case 480: -#line 2573 "./util/configparser.y" + case 482: +#line 2583 "./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) @@ -5639,11 +5656,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5660 "util/configparser.c" break; - case 481: -#line 2583 "./util/configparser.y" + case 483: +#line 2593 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5652,11 +5669,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5656 "util/configparser.c" +#line 5673 "util/configparser.c" break; - case 482: -#line 2593 "./util/configparser.y" + case 484: +#line 2603 "./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 && @@ -5694,11 +5711,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5698 "util/configparser.c" +#line 5715 "util/configparser.c" break; - case 483: -#line 2632 "./util/configparser.y" + case 485: +#line 2642 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5707,33 +5724,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5711 "util/configparser.c" +#line 5728 "util/configparser.c" break; - case 484: -#line 2642 "./util/configparser.y" + case 486: +#line 2652 "./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 5722 "util/configparser.c" +#line 5739 "util/configparser.c" break; - case 485: -#line 2650 "./util/configparser.y" + case 487: +#line 2660 "./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 5733 "util/configparser.c" +#line 5750 "util/configparser.c" break; - case 486: -#line 2658 "./util/configparser.y" + case 488: +#line 2668 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5747,11 +5764,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5751 "util/configparser.c" +#line 5768 "util/configparser.c" break; - case 487: -#line 2673 "./util/configparser.y" + case 489: +#line 2683 "./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) @@ -5759,19 +5776,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5780 "util/configparser.c" break; - case 488: -#line 2682 "./util/configparser.y" + case 490: +#line 2692 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5771 "util/configparser.c" +#line 5788 "util/configparser.c" break; - case 499: -#line 2693 "./util/configparser.y" + case 501: +#line 2703 "./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) @@ -5780,11 +5797,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5801 "util/configparser.c" break; - case 500: -#line 2703 "./util/configparser.y" + case 502: +#line 2713 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5792,79 +5809,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 501: -#line 2712 "./util/configparser.y" + case 503: +#line 2722 "./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 5806 "util/configparser.c" +#line 5823 "util/configparser.c" break; - case 502: -#line 2719 "./util/configparser.y" + case 504: +#line 2729 "./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 5816 "util/configparser.c" +#line 5833 "util/configparser.c" break; - case 503: -#line 2726 "./util/configparser.y" + case 505: +#line 2736 "./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 5826 "util/configparser.c" +#line 5843 "util/configparser.c" break; - case 504: -#line 2733 "./util/configparser.y" + case 506: +#line 2743 "./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 5836 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 505: -#line 2740 "./util/configparser.y" + case 507: +#line 2750 "./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 5846 "util/configparser.c" +#line 5863 "util/configparser.c" break; - case 506: -#line 2747 "./util/configparser.y" + case 508: +#line 2757 "./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 5856 "util/configparser.c" +#line 5873 "util/configparser.c" break; - case 507: -#line 2754 "./util/configparser.y" + case 509: +#line 2764 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5864 "util/configparser.c" +#line 5881 "util/configparser.c" break; - case 528: -#line 2774 "./util/configparser.y" + case 530: +#line 2784 "./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) @@ -5872,31 +5889,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5893 "util/configparser.c" break; - case 529: -#line 2783 "./util/configparser.y" + case 531: +#line 2793 "./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 5886 "util/configparser.c" +#line 5903 "util/configparser.c" break; - case 530: -#line 2790 "./util/configparser.y" + case 532: +#line 2800 "./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 5896 "util/configparser.c" +#line 5913 "util/configparser.c" break; - case 531: -#line 2797 "./util/configparser.y" + case 533: +#line 2807 "./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) @@ -5904,51 +5921,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5925 "util/configparser.c" break; - case 532: -#line 2806 "./util/configparser.y" + case 534: +#line 2816 "./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 5918 "util/configparser.c" +#line 5935 "util/configparser.c" break; - case 533: -#line 2813 "./util/configparser.y" + case 535: +#line 2823 "./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 5928 "util/configparser.c" +#line 5945 "util/configparser.c" break; - case 534: -#line 2820 "./util/configparser.y" + case 536: +#line 2830 "./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 5938 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 535: -#line 2827 "./util/configparser.y" + case 537: +#line 2837 "./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 5948 "util/configparser.c" +#line 5965 "util/configparser.c" break; - case 536: -#line 2834 "./util/configparser.y" + case 538: +#line 2844 "./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) @@ -5956,11 +5973,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5977 "util/configparser.c" break; - case 537: -#line 2843 "./util/configparser.y" + case 539: +#line 2853 "./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) @@ -5968,31 +5985,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5989 "util/configparser.c" break; - case 538: -#line 2852 "./util/configparser.y" + case 540: +#line 2862 "./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 5982 "util/configparser.c" +#line 5999 "util/configparser.c" break; - case 539: -#line 2859 "./util/configparser.y" + case 541: +#line 2869 "./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 5992 "util/configparser.c" +#line 6009 "util/configparser.c" break; - case 540: -#line 2866 "./util/configparser.y" + case 542: +#line 2876 "./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) @@ -6001,11 +6018,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6005 "util/configparser.c" +#line 6022 "util/configparser.c" break; - case 541: -#line 2876 "./util/configparser.y" + case 543: +#line 2886 "./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) @@ -6014,11 +6031,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6035 "util/configparser.c" break; - case 542: -#line 2886 "./util/configparser.y" + case 544: +#line 2896 "./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) @@ -6027,11 +6044,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6048 "util/configparser.c" break; - case 543: -#line 2896 "./util/configparser.y" + case 545: +#line 2906 "./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) @@ -6040,11 +6057,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 544: -#line 2906 "./util/configparser.y" + case 546: +#line 2916 "./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) @@ -6053,11 +6070,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6074 "util/configparser.c" break; - case 545: -#line 2916 "./util/configparser.y" + case 547: +#line 2926 "./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) @@ -6066,29 +6083,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6087 "util/configparser.c" break; - case 546: -#line 2926 "./util/configparser.y" + case 548: +#line 2936 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6078 "util/configparser.c" +#line 6095 "util/configparser.c" break; - case 550: -#line 2935 "./util/configparser.y" + case 552: +#line 2945 "./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 6088 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 551: -#line 2941 "./util/configparser.y" + case 553: +#line 2951 "./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) @@ -6097,21 +6114,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 552: -#line 2951 "./util/configparser.y" + case 554: +#line 2961 "./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 6111 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 553: -#line 2958 "./util/configparser.y" + case 555: +#line 2968 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6119,30 +6136,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6123 "util/configparser.c" +#line 6140 "util/configparser.c" break; - case 554: -#line 2967 "./util/configparser.y" + case 556: +#line 2977 "./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 6134 "util/configparser.c" +#line 6151 "util/configparser.c" break; - case 555: -#line 2975 "./util/configparser.y" + case 557: +#line 2985 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6142 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 568: -#line 2991 "./util/configparser.y" + case 570: +#line 3001 "./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) @@ -6150,11 +6167,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6171 "util/configparser.c" break; - case 569: -#line 3001 "./util/configparser.y" + case 571: +#line 3011 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6162,21 +6179,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6166 "util/configparser.c" +#line 6183 "util/configparser.c" break; - case 570: -#line 3010 "./util/configparser.y" + case 572: +#line 3020 "./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 6176 "util/configparser.c" +#line 6193 "util/configparser.c" break; - case 571: -#line 3017 "./util/configparser.y" + case 573: +#line 3027 "./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))) @@ -6184,21 +6201,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 6188 "util/configparser.c" +#line 6205 "util/configparser.c" break; - case 572: -#line 3026 "./util/configparser.y" + case 574: +#line 3036 "./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 6198 "util/configparser.c" +#line 6215 "util/configparser.c" break; - case 573: -#line 3033 "./util/configparser.y" + case 575: +#line 3043 "./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))) @@ -6206,22 +6223,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 6210 "util/configparser.c" +#line 6227 "util/configparser.c" break; - case 574: -#line 3042 "./util/configparser.y" + case 576: +#line 3052 "./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 6221 "util/configparser.c" +#line 6238 "util/configparser.c" break; - case 575: -#line 3050 "./util/configparser.y" + case 577: +#line 3060 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6233,22 +6250,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 6254 "util/configparser.c" break; - case 576: -#line 3063 "./util/configparser.y" + case 578: +#line 3073 "./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 6248 "util/configparser.c" +#line 6265 "util/configparser.c" break; - case 577: -#line 3071 "./util/configparser.y" + case 579: +#line 3081 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6260,19 +6277,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6281 "util/configparser.c" break; - case 578: -#line 3084 "./util/configparser.y" + case 580: +#line 3094 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6272 "util/configparser.c" +#line 6289 "util/configparser.c" break; - case 587: -#line 3095 "./util/configparser.y" + case 589: +#line 3105 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6283,11 +6300,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6287 "util/configparser.c" +#line 6304 "util/configparser.c" break; - case 588: -#line 3107 "./util/configparser.y" + case 590: +#line 3117 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6298,11 +6315,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6302 "util/configparser.c" +#line 6319 "util/configparser.c" break; - case 589: -#line 3119 "./util/configparser.y" + case 591: +#line 3129 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6313,11 +6330,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6317 "util/configparser.c" +#line 6334 "util/configparser.c" break; - case 590: -#line 3131 "./util/configparser.y" + case 592: +#line 3141 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6331,11 +6348,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6335 "util/configparser.c" +#line 6352 "util/configparser.c" break; - case 591: -#line 3146 "./util/configparser.y" + case 593: +#line 3156 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6347,11 +6364,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6368 "util/configparser.c" break; - case 592: -#line 3159 "./util/configparser.y" + case 594: +#line 3169 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6363,11 +6380,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 6384 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 595: +#line 3182 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6377,19 +6394,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6381 "util/configparser.c" +#line 6398 "util/configparser.c" break; - case 594: -#line 3183 "./util/configparser.y" + case 596: +#line 3193 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6389 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 599: -#line 3192 "./util/configparser.y" + case 601: +#line 3202 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6403,11 +6420,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6407 "util/configparser.c" +#line 6424 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 602: +#line 3217 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6438,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6425 "util/configparser.c" +#line 6442 "util/configparser.c" break; -#line 6429 "util/configparser.c" +#line 6446 "util/configparser.c" default: break; } @@ -6657,7 +6674,7 @@ yyreturn: #endif return yyresult; } -#line 3221 "./util/configparser.y" +#line 3231 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 184810a2a..571c76c4e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -195,145 +195,146 @@ extern int yydebug; VAR_UNBLOCK_LAN_ZONES = 401, VAR_INSECURE_LAN_ZONES = 402, VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_INFRA_KEEP_PROBING = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -483,145 +484,146 @@ extern int yydebug; #define VAR_UNBLOCK_LAN_ZONES 401 #define VAR_INSECURE_LAN_ZONES 402 #define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_INFRA_KEEP_PROBING 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -631,7 +633,7 @@ union YYSTYPE char* str; -#line 635 "util/configparser.h" +#line 637 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c72a89135..feb798a3e 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -114,7 +114,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES -%token VAR_INFRA_CACHE_MIN_RTT +%token VAR_INFRA_CACHE_MIN_RTT VAR_INFRA_KEEP_PROBING %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL VAR_DNS64_IGNORE_AAAA %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP %token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE @@ -243,7 +243,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa | server_infra_cache_min_rtt | server_harden_algo_downgrade | server_ip_transparent | server_ip_ratelimit | server_ratelimit | - server_ip_dscp | + server_ip_dscp | server_infra_keep_probing | server_ip_ratelimit_slabs | server_ratelimit_slabs | server_ip_ratelimit_size | server_ratelimit_size | server_ratelimit_for_domain | @@ -1462,6 +1462,16 @@ server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG free($2); } ; +server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG + { + OUTYY(("P(server_infra_keep_probing:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->infra_keep_probing = + (strcmp($2, "yes")==0); + free($2); + } + ; server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG { OUTYY(("P(server_target_fetch_policy:%s)\n", $2)); From 1bd4dbf302da6e3b83c41284bc4f98e057b52f7a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 29 Apr 2020 11:23:12 +0200 Subject: [PATCH 012/394] - New include directive 'include-toplevel:'. It closes the previous clause (if any) and requires that all included files explicitly start a clause. --- doc/example.conf.in | 6 +- doc/unbound.conf.5.in | 6 + .../04-checkconf.tdir/bad.include-toplevel.1 | 3 + .../04-checkconf.tdir/bad.include-toplevel.2 | 5 + .../04-checkconf.tdir/bad.include-toplevel.3 | 6 + .../04-checkconf.tdir/bad.include-toplevel.4 | 7 + .../04-checkconf.tdir/bad.include-toplevel.5 | 8 + .../04-checkconf.tdir/bad.include-toplevel.6 | 10 + .../04-checkconf.tdir/bad.include-toplevel.7 | 11 + .../04-checkconf.tdir/good.include-toplevel | 12 + .../include.include.withclauses.1 | 1 + .../include.include.withclauses.2 | 1 + .../include.include.withclauses.3 | 1 + .../include.include.withoutclauses.1 | 1 + .../include.include.withoutclauses.2 | 1 + .../include.include.withoutclauses.3 | 1 + .../include.includetop.withclauses.1 | 1 + .../include.includetop.withclauses.2 | 1 + .../include.includetop.withclauses.3 | 1 + .../include.includetop.withoutclauses.1 | 1 + .../include.includetop.withoutclauses.2 | 1 + .../include.includetop.withoutclauses.3 | 1 + .../04-checkconf.tdir/include.withclauses.1 | 1 + .../04-checkconf.tdir/include.withclauses.2 | 1 + .../04-checkconf.tdir/include.withclauses.3 | 1 + .../include.withoutclauses.1 | 1 + .../include.withoutclauses.2 | 1 + .../include.withoutclauses.3 | 1 + .../include.withsomeclauses.1 | 1 + .../include.withsomeclauses.2 | 1 + .../include.withsomeclauses.3 | 1 + util/configlexer.c | 5065 +++++++++-------- util/configlexer.lex | 61 +- util/configparser.c | 3793 ++++++------ util/configparser.h | 1112 ++-- util/configparser.y | 13 +- 36 files changed, 5208 insertions(+), 4931 deletions(-) create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.1 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.2 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.3 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.4 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.5 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.6 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.7 create mode 100644 testdata/04-checkconf.tdir/good.include-toplevel create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.3 diff --git a/doc/example.conf.in b/doc/example.conf.in index a1a687422..2e92a90d1 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -5,9 +5,13 @@ # # this is a comment. -#Use this to include other text into the file. +# Use this anywhere in the file to include other text into this file. #include: "otherfile.conf" +# Use this anywhere in the file to include other text, that explicitly starts a +# clause, into this file. Text after this directive needs to start a clause. +#include-toplevel: "otherfile.conf" + # The server clause sets the main parameters. server: # whitespace is not necessary, but looks cleaner. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 37692db5e..b9ad4705b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -77,6 +77,12 @@ for the included files works, relative pathnames for the included names work if the directory where the daemon is started equals its chroot/working directory or is specified before the include statement with directory: dir. Wildcards can be used to include multiple files, see \fIglob\fR(7). +.P +For a more structural include option, the +.B include\-toplevel: +directive can be used. This closes whatever clause is currently active (if any) +and forces the use of clauses in the included files and right after this +directive. .SS "Server Options" These options are part of the .B server: diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.1 b/testdata/04-checkconf.tdir/bad.include-toplevel.1 new file mode 100644 index 000000000..e45efbc25 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.1 @@ -0,0 +1,3 @@ +include-toplevel: include.withoutclauses.* +server: + identity: "top 1" diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.2 b/testdata/04-checkconf.tdir/bad.include-toplevel.2 new file mode 100644 index 000000000..fc274fd5d --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.2 @@ -0,0 +1,5 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.3 b/testdata/04-checkconf.tdir/bad.include-toplevel.3 new file mode 100644 index 000000000..3a219a8a2 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.3 @@ -0,0 +1,6 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.4 b/testdata/04-checkconf.tdir/bad.include-toplevel.4 new file mode 100644 index 000000000..8dd4555b6 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.4 @@ -0,0 +1,7 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.5 b/testdata/04-checkconf.tdir/bad.include-toplevel.5 new file mode 100644 index 000000000..b2c0eae82 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.5 @@ -0,0 +1,8 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withsomeclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.6 b/testdata/04-checkconf.tdir/bad.include-toplevel.6 new file mode 100644 index 000000000..4f578f5cf --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.6 @@ -0,0 +1,10 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.7 b/testdata/04-checkconf.tdir/bad.include-toplevel.7 new file mode 100644 index 000000000..386f0166e --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.7 @@ -0,0 +1,11 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withclauses.* +include-toplevel: include.include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/good.include-toplevel b/testdata/04-checkconf.tdir/good.include-toplevel new file mode 100644 index 000000000..91dc6980a --- /dev/null +++ b/testdata/04-checkconf.tdir/good.include-toplevel @@ -0,0 +1,12 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withclauses.* +include-toplevel: include.include.withclauses.* +include-toplevel: include.include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.1 b/testdata/04-checkconf.tdir/include.include.withclauses.1 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.1 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.2 b/testdata/04-checkconf.tdir/include.include.withclauses.2 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.2 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.3 b/testdata/04-checkconf.tdir/include.include.withclauses.3 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.3 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.1 b/testdata/04-checkconf.tdir/include.include.withoutclauses.1 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.1 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.2 b/testdata/04-checkconf.tdir/include.include.withoutclauses.2 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.2 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.3 b/testdata/04-checkconf.tdir/include.include.withoutclauses.3 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.3 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.1 b/testdata/04-checkconf.tdir/include.includetop.withclauses.1 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.1 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.2 b/testdata/04-checkconf.tdir/include.includetop.withclauses.2 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.2 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.3 b/testdata/04-checkconf.tdir/include.includetop.withclauses.3 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.3 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.withclauses.1 b/testdata/04-checkconf.tdir/include.withclauses.1 new file mode 100644 index 000000000..d67920e06 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.1 @@ -0,0 +1 @@ +server: identity: "withclauses1" diff --git a/testdata/04-checkconf.tdir/include.withclauses.2 b/testdata/04-checkconf.tdir/include.withclauses.2 new file mode 100644 index 000000000..3537974c0 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.2 @@ -0,0 +1 @@ +server: identity: "withclauses2" diff --git a/testdata/04-checkconf.tdir/include.withclauses.3 b/testdata/04-checkconf.tdir/include.withclauses.3 new file mode 100644 index 000000000..5e19c54ef --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.3 @@ -0,0 +1 @@ +server: identity: "withclauses3" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.1 b/testdata/04-checkconf.tdir/include.withoutclauses.1 new file mode 100644 index 000000000..3b3b6f48b --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.1 @@ -0,0 +1 @@ +identity: "withoutclauses1" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.2 b/testdata/04-checkconf.tdir/include.withoutclauses.2 new file mode 100644 index 000000000..fec8b2002 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.2 @@ -0,0 +1 @@ +identity: "withoutclauses2" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.3 b/testdata/04-checkconf.tdir/include.withoutclauses.3 new file mode 100644 index 000000000..e34a4b12d --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.3 @@ -0,0 +1 @@ +identity: "withoutclauses3" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.1 b/testdata/04-checkconf.tdir/include.withsomeclauses.1 new file mode 100644 index 000000000..d719a44f7 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.1 @@ -0,0 +1 @@ +server: identity: "withsomeclauses1" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.2 b/testdata/04-checkconf.tdir/include.withsomeclauses.2 new file mode 100644 index 000000000..ec910e1a8 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.2 @@ -0,0 +1 @@ +identity: "withsomeclauses2" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.3 b/testdata/04-checkconf.tdir/include.withsomeclauses.3 new file mode 100644 index 000000000..dbb696eeb --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.3 @@ -0,0 +1 @@ +identity: "withsomeclauses3" diff --git a/util/configlexer.c b/util/configlexer.c index 09fd4b003..f5922759e 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 312 -#define YY_END_OF_BUFFER 313 +#define YY_NUM_RULES 320 +#define YY_END_OF_BUFFER 321 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,345 +363,350 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3071] = +static const flex_int16_t yy_accept[3111] = { 0, 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 313, 310, 1, 292, 292, 311, 2, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 294, 295, 295, 296, 311, 298, 299, 299, - 300, 311, 305, 302, 303, 303, 304, 311, 306, 307, - 307, 308, 311, 309, 293, 2, 297, 311, 309, 310, - 0, 1, 2, 2, 2, 2, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 1, 1, 310, 310, 314, 314, 321, 318, 1, 292, + 292, 319, 2, 319, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 294, 295, 295, 296, + 319, 298, 299, 299, 300, 319, 305, 302, 303, 303, + 304, 319, 306, 307, 307, 308, 319, 317, 293, 2, + 297, 319, 317, 313, 310, 311, 311, 312, 319, 314, + 315, 315, 316, 319, 318, 0, 1, 2, 2, 2, + 2, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 294, 0, 298, 0, 305, 0, 302, 306, 0, 309, - 0, 2, 2, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 294, 0, 298, 0, 305, + 0, 302, 306, 0, 317, 0, 2, 2, 317, 313, + 0, 310, 314, 0, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 317, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 115, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 123, 310, 310, 310, - 310, 310, 310, 310, 309, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 115, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 123, 318, 318, 318, + 318, 318, 318, 318, 317, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 99, 310, 310, 310, 310, 310, 310, 8, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 116, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 128, 310, 309, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 99, 318, 318, 318, 318, 318, 318, 8, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 116, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 287, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 128, 318, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 287, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 57, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 225, 310, 14, 15, 310, - 19, 18, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 57, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 122, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 209, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 3, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 225, 318, 14, 15, 318, + 19, 18, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 122, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 209, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 3, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 309, 310, 310, 310, 310, 310, 310, 310, 281, 310, - 310, 280, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 301, 310, 310, - 310, 310, 310, 310, 310, 56, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 317, 318, 318, 318, 318, 318, 318, 318, 281, 318, + 318, 280, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 60, 310, 255, 310, 310, 310, 310, 310, - 310, 310, 310, 288, 289, 310, 310, 310, 310, 310, - 61, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 119, 310, 310, - 310, 310, 310, 310, 310, 310, 198, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 21, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 301, 318, + 318, 318, 318, 318, 318, 318, 56, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 60, 318, 255, 318, 318, 318, 318, + 318, 318, 318, 318, 288, 289, 318, 318, 318, 318, + 318, 61, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 119, 318, + 318, 318, 318, 318, 318, 318, 318, 198, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 21, 318, - 310, 310, 310, 310, 310, 310, 147, 310, 310, 301, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 97, 310, 310, 310, 310, 310, 310, 310, 263, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 170, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 146, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 147, 318, 318, + 317, 301, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 97, 318, 318, 318, 318, 318, 318, 318, + 263, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 170, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 146, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 96, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 32, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 33, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 58, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 121, 310, 310, 310, 310, 310, 114, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 96, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 32, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 33, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 59, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 228, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 171, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 47, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 58, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 121, 317, 318, 318, 318, 318, 318, + 114, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 59, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 228, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 171, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 47, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 246, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 51, 310, 52, 310, 310, 310, 310, - 310, 100, 310, 101, 310, 310, 310, 310, 98, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 7, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 218, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 246, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 51, 318, + 52, 318, 318, 318, 318, 318, 100, 318, 101, 318, + 318, 318, 318, 98, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 149, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 229, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 48, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 190, 310, 189, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 16, 17, 310, 310, + 318, 318, 7, 318, 317, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 218, 318, 318, 318, 318, 149, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 229, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 48, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 190, 318, 189, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 62, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 197, 310, 310, 310, 310, 310, 310, - 103, 310, 102, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 181, 310, 310, 310, 310, 310, - 310, 310, 310, 129, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 81, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 16, 17, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 62, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 197, 318, 318, 318, 318, 318, 318, 103, 318, 102, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 181, 318, 318, 318, 318, 318, 318, 318, 318, + 129, 317, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 85, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 55, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 184, 185, 310, - 310, 310, 257, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 6, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 261, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 81, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 85, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 55, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 184, 185, 318, 318, + 318, 257, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 282, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 42, 310, 310, 310, 310, - 44, 310, 310, 310, 310, 310, 310, 310, 310, 45, - 310, 310, 310, 310, 310, 310, 310, 310, 177, 310, - 310, 310, 124, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 202, 310, 178, 310, 310, 310, 215, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 46, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 126, + 318, 318, 318, 318, 6, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 261, 318, 318, 318, + 318, 318, 318, 282, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 42, 318, 318, 318, 318, 44, + 318, 318, 318, 318, 318, 318, 318, 318, 45, 318, + 318, 318, 318, 318, 318, 318, 317, 318, 177, 318, + 318, 318, 124, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 202, 318, 178, 318, 318, 318, 215, - 108, 310, 109, 310, 310, 310, 107, 310, 310, 310, - 310, 310, 310, 310, 310, 144, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 245, 310, 310, - 310, 310, 310, 310, 310, 310, 179, 310, 310, 310, - 310, 310, 182, 310, 188, 310, 310, 310, 310, 310, - 214, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 95, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 120, 310, 310, 310, 310, 310, - 310, 53, 310, 310, 310, 26, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 46, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 126, + 108, 318, 109, 318, 318, 318, 107, 318, 318, 318, + 318, 318, 318, 318, 318, 144, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 245, 318, + 318, 318, 318, 318, 318, 318, 318, 179, 318, 318, + 318, 318, 318, 182, 318, 188, 318, 318, 318, 318, + 318, 214, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 95, 318, 318, 318, - 310, 310, 310, 310, 310, 20, 310, 310, 310, 310, - 310, 310, 27, 36, 310, 154, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 70, 72, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 265, 310, 310, 310, 226, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 110, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 143, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 120, 318, 318, 318, 318, + 318, 318, 53, 318, 318, 318, 26, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 20, 318, 318, 318, + 318, 318, 318, 27, 36, 318, 154, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 317, 318, 318, 318, 318, 318, 318, 70, 72, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 265, 318, 318, 318, 226, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 276, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 148, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 208, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 285, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 165, 310, 310, - 310, 310, 310, 310, 310, 310, 104, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 160, 310, 172, 310, - 310, 310, 310, 310, 132, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 110, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 143, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 276, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 148, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 208, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 285, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 165, 318, 318, 318, 318, 318, 318, 318, 318, 104, - 91, 310, 310, 310, 310, 200, 310, 310, 310, 310, - 310, 310, 216, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 237, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 125, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 164, - 310, 310, 310, 310, 310, 73, 74, 310, 310, 310, - 310, 310, 54, 310, 310, 310, 310, 310, 80, 173, - 310, 191, 310, 219, 310, 310, 183, 258, 310, 310, - 310, 310, 310, 66, 310, 175, 310, 310, 310, 310, - 310, 9, 310, 310, 310, 94, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 160, + 318, 172, 318, 318, 318, 318, 317, 318, 132, 318, + 318, 318, 318, 318, 91, 318, 318, 318, 318, 200, + 318, 318, 318, 318, 318, 318, 216, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 237, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 125, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 164, 318, 318, 318, 318, 318, 318, + 73, 74, 318, 318, 318, 318, 318, 54, 318, 318, - 250, 310, 310, 310, 310, 199, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 163, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 150, 310, 264, 310, - 310, 310, 310, 236, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 210, 310, 310, 310, 310, - 256, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 80, 173, 318, 191, 318, 219, 318, + 318, 183, 258, 318, 318, 318, 318, 318, 66, 318, + 175, 318, 318, 318, 318, 318, 9, 318, 318, 318, + 94, 318, 318, 318, 318, 250, 318, 318, 318, 318, + 199, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 317, 318, 318, 318, + 318, 163, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 279, 310, 174, 310, 310, - 310, 310, 310, 310, 310, 65, 67, 310, 310, 310, - 310, 310, 310, 310, 93, 310, 310, 310, 310, 248, - 310, 310, 310, 310, 260, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 204, 34, 28, 30, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 35, - 310, 29, 31, 310, 310, 310, 310, 310, 310, 310, - 310, 90, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 206, + 318, 318, 150, 318, 264, 318, 318, 318, 318, 236, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 210, 318, 318, 318, 318, 256, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 279, 318, 174, 318, 318, 318, 318, 318, + 318, 318, 65, 67, 318, 318, 318, 318, 318, 318, + 318, 93, 318, 318, 318, 318, 248, 318, 318, 318, + 318, 260, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 204, 34, 28, 30, 318, 318, 318, - 203, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 64, 310, - 310, 127, 310, 111, 310, 310, 310, 310, 310, 310, - 310, 310, 145, 13, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 274, 310, 277, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 12, 310, 310, 22, - 310, 310, 310, 254, 310, 310, 310, 310, 262, 310, - 310, 310, 68, 310, 212, 310, 310, 310, 310, 205, - 310, 310, 63, 310, 310, 310, 310, 23, 310, 43, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 35, 318, 29, 31, + 318, 318, 318, 318, 318, 318, 318, 318, 90, 318, + 318, 318, 318, 318, 318, 317, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 206, 203, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 64, 318, 318, 127, + 318, 111, 318, 318, 318, 318, 318, 318, 318, 318, + 145, 309, 13, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 274, 318, 277, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 12, 318, 318, 22, 318, - 310, 310, 159, 158, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 207, 201, 310, 217, 310, 310, 266, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 75, 310, 310, - 310, 249, 310, 310, 310, 310, 187, 310, 310, 310, - 310, 211, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 283, 284, 156, 310, 310, 69, 310, 310, 310, - 310, 166, 310, 310, 105, 106, 310, 310, 310, 310, - 151, 310, 153, 310, 192, 310, 310, 310, 310, 157, + 318, 318, 254, 318, 318, 318, 318, 262, 318, 318, + 318, 68, 318, 212, 318, 318, 318, 318, 205, 318, + 318, 63, 318, 318, 318, 318, 23, 318, 43, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 159, 158, 309, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 207, 201, 318, 217, 318, 318, 266, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 75, 318, 318, + 318, 249, 318, 318, 318, 318, 187, 318, 318, 318, - 310, 310, 220, 310, 310, 310, 310, 310, 310, 310, - 134, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 227, 310, 310, 310, 310, 310, 310, 310, - 24, 310, 259, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 193, 310, 310, 247, 310, 278, - 310, 186, 310, 310, 310, 310, 49, 310, 310, 310, - 310, 4, 310, 310, 310, 310, 118, 133, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 223, 37, 38, 310, - 310, 310, 310, 310, 310, 310, 267, 310, 310, 310, + 318, 211, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 283, 284, 156, 318, 318, 69, 318, 318, 318, + 318, 166, 318, 318, 105, 106, 318, 318, 318, 318, + 151, 318, 153, 318, 192, 318, 318, 318, 318, 157, + 318, 318, 220, 318, 318, 318, 318, 318, 318, 318, + 134, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 227, 318, 318, 318, 318, 318, 318, 318, + 24, 318, 259, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 193, 318, 318, 247, 318, 278, + 318, 186, 318, 318, 318, 318, 49, 318, 318, 318, - 310, 310, 310, 235, 310, 310, 310, 310, 310, 310, - 310, 196, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 78, 310, 50, 253, 310, 224, 310, 310, 310, - 310, 11, 310, 310, 310, 310, 310, 310, 117, 310, - 310, 310, 310, 194, 82, 310, 40, 310, 310, 310, - 310, 310, 310, 310, 310, 162, 310, 310, 310, 310, - 310, 136, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 234, 310, 310, 310, 310, 130, 310, 310, 112, - 113, 310, 310, 310, 84, 88, 83, 310, 76, 310, - 310, 310, 310, 310, 10, 310, 310, 310, 251, 286, + 318, 4, 318, 318, 318, 318, 118, 133, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 223, 37, 38, 318, + 318, 318, 318, 318, 318, 318, 267, 318, 318, 318, + 318, 318, 318, 235, 318, 318, 318, 318, 318, 318, + 318, 196, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 78, 318, 50, 253, 318, 224, 318, 318, 318, + 318, 11, 318, 318, 318, 318, 318, 318, 117, 318, + 318, 318, 318, 194, 82, 318, 40, 318, 318, 318, + 318, 318, 318, 318, 318, 162, 318, 318, 318, 318, - 310, 310, 310, 310, 291, 39, 310, 310, 310, 310, - 310, 161, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 89, 87, 310, 77, 275, 310, - 310, 310, 310, 310, 310, 310, 180, 310, 310, 310, - 310, 310, 195, 310, 310, 310, 310, 310, 310, 310, - 310, 152, 71, 310, 310, 310, 310, 310, 268, 310, - 310, 310, 310, 310, 310, 310, 231, 310, 310, 230, - 131, 310, 86, 137, 138, 141, 142, 139, 140, 79, - 310, 252, 310, 310, 310, 310, 155, 310, 310, 310, + 318, 136, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 234, 318, 318, 318, 318, 130, 318, 318, 112, + 113, 318, 318, 318, 84, 88, 83, 318, 76, 318, + 318, 318, 318, 318, 10, 318, 318, 318, 251, 286, + 318, 318, 318, 318, 291, 39, 318, 318, 318, 318, + 318, 161, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 89, 87, 318, 77, 275, 318, + 318, 318, 318, 318, 318, 318, 180, 318, 318, 318, + 318, 318, 195, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 222, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 168, 167, 41, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 92, 310, 221, - 310, 244, 272, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 5, 310, 310, 213, 310, - 310, 273, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 232, 25, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 233, 310, 310, 310, 135, + 318, 152, 71, 318, 318, 318, 318, 318, 268, 318, + 318, 318, 318, 318, 318, 318, 231, 318, 318, 230, + 131, 318, 86, 137, 138, 141, 142, 139, 140, 79, + 318, 252, 318, 318, 318, 318, 155, 318, 318, 318, + 318, 318, 222, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 168, 167, 41, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 92, 318, 221, + 318, 244, 272, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 169, 310, - 176, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 269, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 290, 310, - 310, 240, 310, 310, 310, 310, 310, 270, 310, 310, - 310, 310, 310, 310, 271, 310, 310, 310, 238, 310, - 241, 242, 310, 310, 310, 310, 310, 239, 243, 0 + 318, 318, 318, 318, 318, 5, 318, 318, 213, 318, + 318, 273, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 232, 25, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 233, 318, 318, 318, 135, + 318, 318, 318, 318, 318, 318, 318, 318, 169, 318, + 176, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 269, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 290, 318, + 318, 240, 318, 318, 318, 318, 318, 270, 318, 318, + 318, 318, 318, 318, 271, 318, 318, 318, 238, 318, + + 241, 242, 318, 318, 318, 318, 318, 239, 243, 0 } ; static const YY_CHAR yy_ec[256] = @@ -744,2024 +749,2056 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3085] = +static const flex_int16_t yy_base[3129] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2197, 2057, 81, 5988, 5988, 5988, 96, 52, - 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1959, 5988, 5988, 5988, 107, 1846, 5988, 5988, - 5988, 165, 1569, 1315, 5988, 5988, 5988, 211, 1269, 5988, - 5988, 5988, 180, 948, 5988, 217, 5988, 221, 168, 767, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 90, 112, 96, 118, 124, 136, 3388, 3249, 81, 6084, + 6084, 6084, 129, 52, 130, 63, 131, 135, 70, 152, + 154, 157, 57, 88, 76, 159, 165, 95, 172, 148, + 183, 195, 193, 202, 208, 123, 3208, 6084, 6084, 6084, + 107, 3022, 6084, 6084, 6084, 186, 2951, 2430, 6084, 6084, + 6084, 234, 2178, 6084, 6084, 6084, 201, 2141, 6084, 238, + 6084, 242, 175, 2042, 1968, 6084, 6084, 6084, 246, 1893, + 6084, 6084, 6084, 228, 1818, 252, 153, 0, 256, 0, + 0, 182, 248, 250, 241, 254, 204, 259, 92, 258, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 723, 379, 595, 381, 503, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 477, 464, - 465, 463, 486, 472, 488, 490, 487, 498, 499, 475, + 263, 264, 261, 158, 265, 272, 268, 269, 281, 273, + 283, 286, 294, 288, 303, 310, 295, 307, 308, 297, + 305, 313, 318, 156, 320, 324, 326, 330, 334, 333, + 335, 336, 341, 339, 345, 328, 347, 350, 352, 354, + 363, 353, 360, 368, 271, 371, 362, 372, 374, 377, + 379, 380, 382, 391, 387, 1666, 403, 1656, 405, 1607, + 414, 1575, 1327, 418, 1162, 422, 426, 0, 403, 874, + 430, 636, 516, 434, 422, 434, 411, 430, 431, 212, + 432, 433, 435, 436, 437, 438, 448, 444, 451, 453, + 461, 460, 462, 464, 459, 467, 468, 474, 470, 481, - 506, 504, 511, 516, 512, 489, 514, 501, 517, 491, - 518, 515, 522, 524, 525, 529, 530, 537, 534, 535, - 538, 532, 547, 543, 552, 544, 551, 555, 548, 558, - 566, 569, 549, 576, 559, 572, 573, 578, 581, 585, - 582, 580, 583, 590, 587, 589, 591, 593, 592, 600, - 610, 607, 608, 620, 609, 605, 616, 617, 618, 596, - 628, 627, 623, 632, 638, 629, 636, 639, 641, 643, - 642, 644, 646, 656, 649, 659, 652, 666, 661, 667, - 664, 676, 651, 662, 672, 673, 674, 678, 677, 679, - 684, 687, 688, 690, 691, 685, 698, 696, 700, 713, + 484, 487, 477, 479, 485, 489, 493, 496, 502, 505, + 495, 509, 517, 512, 524, 527, 499, 529, 532, 514, + 534, 531, 539, 543, 538, 540, 542, 544, 546, 547, + 549, 550, 551, 558, 555, 559, 554, 566, 568, 561, + 572, 562, 577, 578, 586, 581, 582, 296, 583, 585, + 594, 595, 590, 599, 591, 598, 604, 607, 614, 616, + 611, 600, 615, 617, 618, 619, 621, 626, 622, 634, + 639, 635, 638, 642, 644, 646, 647, 648, 649, 625, + 658, 651, 653, 663, 669, 656, 667, 670, 661, 672, + 673, 675, 680, 684, 681, 688, 683, 692, 690, 696, - 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, - 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5988, 760, 773, 771, 774, - 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5988, 815, 807, 849, - 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, - 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, - 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, - 893, 895, 902, 905, 904, 908, 916, 909, 915, 917, - 921, 922, 925, 927, 929, 923, 926, 933, 950, 931, + 693, 705, 700, 691, 701, 702, 703, 707, 706, 708, + 713, 716, 717, 719, 723, 721, 731, 727, 728, 744, + 729, 736, 741, 745, 739, 747, 755, 749, 771, 769, + 757, 758, 759, 775, 779, 776, 782, 780, 785, 786, + 787, 788, 789, 797, 793, 6084, 792, 802, 809, 810, + 811, 814, 799, 818, 820, 800, 830, 826, 823, 832, + 854, 827, 714, 831, 833, 836, 6084, 840, 838, 878, + 849, 842, 862, 860, 844, 863, 868, 858, 869, 885, + 872, 871, 886, 895, 884, 876, 901, 887, 903, 904, + 911, 909, 906, 912, 913, 920, 915, 916, 917, 931, - 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, - 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, - 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5988, 1007, 1009, 1011, 1012, 1013, 1010, 5988, 1014, 1015, - 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, - 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5988, 1071, 1077, 1080, - 1079, 1085, 1082, 1090, 1097, 1100, 1103, 1106, 1116, 1093, - 1117, 1111, 1113, 1072, 1118, 1123, 1125, 1126, 1127, 1128, - 1129, 1130, 1132, 1131, 1137, 1139, 5988, 1144, 1154, 1155, + 918, 923, 925, 930, 933, 942, 943, 936, 945, 934, + 950, 951, 954, 952, 948, 955, 959, 956, 973, 958, + 970, 971, 977, 978, 981, 984, 982, 987, 988, 989, + 990, 998, 996, 994, 997, 999, 1003, 1005, 1007, 1010, + 1011, 1012, 1013, 1017, 1015, 1022, 1020, 1026, 1031, 1028, + 6084, 1033, 1035, 1036, 1037, 1038, 1039, 6084, 1041, 1040, + 1043, 1048, 1045, 1055, 1062, 1052, 1063, 1065, 1064, 1069, + 1076, 1053, 1072, 1083, 1079, 1080, 1081, 1086, 1087, 1089, + 1082, 1090, 1088, 1092, 1096, 1112, 6084, 1099, 1100, 1098, + 1105, 1106, 1110, 1116, 1108, 1129, 1117, 1130, 1141, 1127, - 1136, 1146, 1156, 1157, 1159, 1160, 1162, 1163, 1165, 1164, - 1169, 1179, 1170, 1183, 1180, 1181, 1185, 1186, 1188, 1187, - 1189, 1191, 1203, 1196, 1195, 1211, 1206, 1213, 1215, 1222, - 1204, 1217, 1218, 1219, 1221, 1224, 1226, 1228, 1230, 1232, - 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1246, - 1254, 1257, 1247, 1266, 1267, 1260, 1258, 5988, 1276, 1268, - 1278, 1279, 1280, 1284, 1286, 1282, 1288, 813, 1289, 1290, - 1292, 1294, 1299, 1296, 1297, 1300, 1304, 1307, 1311, 1318, - 1322, 1323, 1324, 1310, 1325, 1333, 1330, 1337, 1338, 1340, - 1348, 1336, 1343, 1346, 1350, 1334, 1352, 1354, 1355, 1357, + 1137, 1142, 1144, 1147, 1145, 1149, 1151, 1155, 1153, 1152, + 1154, 1156, 1160, 1158, 1157, 1173, 6084, 1174, 1159, 1181, + 1178, 1180, 1182, 1184, 1185, 1186, 1187, 1189, 1192, 1188, + 1206, 1199, 1197, 1213, 1203, 1208, 1210, 1212, 1214, 1217, + 1216, 1218, 1229, 1226, 1222, 1231, 1242, 1238, 1241, 1249, + 1233, 1244, 1245, 1246, 1248, 1252, 1253, 1251, 1257, 1259, + 1266, 1264, 1261, 1262, 1269, 1277, 1270, 1272, 1280, 1273, + 1281, 1278, 1284, 1285, 1293, 1287, 1294, 6084, 1303, 1295, + 1299, 1306, 1307, 1305, 1311, 1313, 1315, 1314, 1317, 1318, + 1319, 1325, 1322, 1326, 1320, 1328, 1334, 1341, 1338, 1340, - 1360, 1368, 1369, 1362, 1372, 1379, 1380, 1364, 1382, 1376, - 1383, 1314, 1370, 1387, 1390, 1391, 1398, 1393, 1394, 1399, - 1400, 1401, 1402, 1396, 1407, 1410, 1406, 1412, 1413, 1416, - 1423, 1418, 1417, 1425, 1426, 1428, 1429, 1437, 1430, 1438, - 1439, 1441, 1440, 1448, 1446, 1449, 1450, 1457, 1455, 1459, - 1456, 1465, 1467, 1469, 1471, 1472, 1473, 1475, 1474, 1478, - 1484, 1477, 1483, 1489, 1493, 1490, 1495, 1496, 1499, 1500, - 5988, 1501, 1508, 1503, 1506, 1512, 1513, 1514, 1521, 1517, - 1519, 1516, 1518, 1522, 1544, 5988, 1530, 5988, 5988, 1529, - 5988, 5988, 1527, 1531, 1535, 1548, 1539, 1554, 1547, 1541, + 1350, 1349, 1351, 1342, 1353, 1361, 1354, 1363, 1362, 1364, + 1372, 1368, 1370, 1373, 1380, 1358, 1375, 1382, 1376, 1385, + 1388, 1391, 1403, 1389, 1399, 1406, 1407, 1390, 1410, 1379, + 1411, 1402, 1414, 1416, 1417, 1418, 1425, 1422, 1421, 1424, + 1427, 1423, 1428, 1431, 1429, 1446, 1435, 1433, 1437, 1448, + 1450, 1451, 1452, 1453, 1455, 1457, 1458, 1461, 1459, 1462, + 1464, 1470, 1465, 1472, 1478, 1480, 1482, 1484, 1485, 1486, + 1487, 1496, 1488, 1497, 1489, 1500, 1502, 1503, 1505, 1509, + 1513, 1507, 1516, 1508, 1518, 1519, 1527, 1528, 1531, 1524, + 6084, 1520, 1541, 1522, 1534, 1536, 1543, 1544, 1551, 1546, - 1557, 1550, 1567, 1572, 1528, 1560, 1562, 1568, 1575, 1583, - 1585, 1586, 1588, 1594, 1596, 1597, 1599, 1606, 1607, 1565, - 1589, 1598, 1610, 1612, 1611, 1613, 1617, 1615, 1620, 1616, - 1623, 1618, 1628, 1633, 1625, 1642, 5988, 1639, 1643, 1651, - 1647, 1654, 1646, 1650, 1653, 1627, 1658, 1655, 1659, 1660, - 1662, 1664, 1667, 1670, 1668, 1678, 1671, 5988, 1673, 1675, - 1674, 1680, 1686, 1688, 1687, 1689, 1681, 1693, 1694, 1705, - 1696, 1700, 1701, 1708, 1709, 1710, 5988, 1712, 1719, 1711, - 1722, 1716, 1723, 1724, 1725, 1726, 1729, 1728, 1730, 1731, - 1735, 1742, 1739, 1740, 1741, 1745, 1750, 1753, 1757, 1764, + 1549, 1547, 1550, 1552, 1576, 6084, 1555, 6084, 6084, 1557, + 6084, 6084, 1558, 1553, 1561, 1560, 1578, 1582, 1569, 1566, + 1573, 1571, 1592, 1599, 1589, 1593, 1590, 1597, 1602, 1610, + 1612, 1615, 1613, 1620, 1624, 1623, 1625, 1632, 1633, 1627, + 1634, 1636, 1637, 1641, 1638, 1642, 1644, 1647, 1648, 1645, + 1650, 1651, 1658, 1664, 1655, 1671, 6084, 1667, 1674, 1681, + 1677, 1684, 1676, 1680, 1683, 1688, 1690, 1685, 1692, 1694, + 1695, 1696, 1698, 1700, 1703, 1707, 1704, 6084, 1705, 1708, + 1706, 1713, 1712, 1716, 1720, 1722, 1724, 1726, 1727, 1734, + 1731, 1729, 1737, 1738, 1739, 1742, 6084, 1741, 1751, 1746, - 1755, 1761, 1758, 1765, 1766, 1768, 1769, 1771, 1780, 1782, - 1779, 1783, 1772, 1787, 1795, 1794, 1784, 1785, 1796, 1799, - 1806, 1808, 1809, 1800, 1804, 1816, 1811, 1814, 1815, 1819, - 1822, 1823, 1825, 1826, 1828, 1832, 1830, 1834, 5988, 1836, - 1837, 5988, 1839, 1840, 1862, 1841, 1843, 1848, 1845, 1849, - 1854, 1855, 1866, 1864, 1868, 1885, 1872, 1877, 1875, 1887, - 1876, 1889, 1891, 1895, 1896, 1897, 1904, 1906, 1857, 1912, - 1914, 1899, 1901, 1909, 1928, 1911, 1913, 1917, 1925, 1932, - 1919, 1922, 1926, 1938, 1939, 1944, 1941, 5988, 1952, 1950, - 1949, 1951, 1961, 1960, 1956, 5988, 1962, 1963, 1966, 1973, + 1752, 1748, 1754, 1755, 1758, 1759, 1761, 1760, 1762, 1764, + 1765, 1777, 1772, 1773, 1768, 1776, 1786, 1788, 1789, 1796, + 1778, 1791, 1793, 1797, 1799, 1801, 1803, 1804, 1812, 1814, + 1807, 1815, 1810, 1817, 1826, 1825, 1816, 1827, 1828, 1831, + 1836, 1838, 1840, 1841, 1842, 1850, 1834, 1846, 1848, 1851, + 1863, 1849, 1861, 1867, 1853, 1858, 1869, 1860, 6084, 1870, + 1871, 6084, 1872, 1876, 1898, 1880, 1873, 1884, 1883, 1886, + 1887, 1889, 1888, 1890, 1896, 1906, 1908, 1912, 1915, 1918, + 1913, 1921, 1917, 1920, 1924, 1929, 1940, 1942, 1944, 1932, + 1945, 1937, 1946, 1948, 1967, 1949, 1947, 1950, 1951, 1953, - 1969, 1970, 1974, 1915, 1976, 1977, 1980, 1984, 1985, 1981, - 1983, 2001, 5988, 1986, 5988, 1991, 1988, 1996, 1998, 1999, - 2003, 2004, 2006, 5988, 5988, 2014, 2007, 2020, 2028, 2010, - 5988, 2013, 2031, 2032, 2024, 2026, 2034, 2035, 2037, 2039, - 2038, 2047, 2042, 2049, 2044, 2045, 2046, 5988, 2058, 2048, - 2063, 2065, 2056, 2066, 2073, 2064, 5988, 2074, 2067, 2075, - 2085, 2087, 2082, 2077, 2089, 2093, 2084, 2088, 2090, 2096, - 2098, 2103, 2106, 2104, 2108, 2112, 2120, 5988, 2101, 2105, - 2121, 2118, 2127, 2122, 2124, 2116, 2128, 2129, 2135, 2130, - 2136, 2137, 2139, 2146, 2148, 2144, 2145, 2152, 2143, 2153, + 1955, 1962, 1957, 1958, 1969, 1979, 1972, 1974, 6084, 1989, + 1982, 1980, 1984, 1996, 1995, 1991, 6084, 1992, 1998, 2002, + 2009, 2004, 2005, 2006, 2008, 2012, 2014, 2015, 2016, 2020, + 2017, 2019, 2037, 6084, 2022, 6084, 2021, 2030, 2032, 2033, + 2039, 2040, 2041, 2043, 6084, 6084, 2044, 2045, 2052, 2062, + 2058, 6084, 2059, 2066, 2063, 2069, 2068, 2061, 2070, 2073, + 2074, 2077, 2084, 2076, 2085, 2080, 2083, 2089, 6084, 2090, + 2094, 2097, 2099, 2098, 2100, 2101, 2107, 6084, 2110, 2108, + 2111, 2118, 2121, 2113, 2109, 2123, 2128, 2125, 2130, 2131, + 2132, 2133, 2140, 2142, 2139, 2145, 2147, 2154, 6084, 2137, - 2156, 2161, 2155, 2160, 2163, 2164, 5988, 2165, 2171, 124, - 2166, 2172, 2174, 2176, 2179, 2178, 2175, 2191, 2196, 2192, - 2198, 2194, 2193, 2201, 2203, 2202, 2204, 2205, 2206, 2209, - 5988, 2211, 2213, 2214, 2216, 2218, 2219, 2229, 5988, 2225, - 2230, 2237, 2233, 2238, 2241, 2242, 2246, 2247, 2249, 2250, - 2253, 2251, 2255, 5988, 2260, 2263, 2265, 2257, 2266, 2272, - 2273, 2275, 2278, 2267, 2279, 2280, 2281, 2284, 2283, 2285, - 2287, 2292, 2289, 2294, 2297, 2299, 5988, 2307, 2309, 2303, - 2300, 2310, 2312, 2319, 2316, 2322, 2321, 2325, 2337, 2327, - 2329, 2339, 2330, 2343, 2332, 2353, 2344, 2352, 2354, 2351, + 2138, 2159, 2156, 2163, 2157, 2160, 2164, 2165, 2167, 2168, + 2172, 2173, 2174, 2175, 2185, 2187, 2177, 2188, 2190, 2176, + 2196, 2197, 2202, 2199, 2203, 2200, 2180, 6084, 2201, 2207, + 2204, 399, 2208, 2211, 2213, 2216, 2214, 2228, 2215, 2236, + 2237, 2229, 2238, 2239, 2218, 2233, 2241, 2242, 2243, 2245, + 2248, 2249, 6084, 2251, 2253, 2254, 2255, 2258, 2256, 2261, + 6084, 2259, 2269, 2279, 2281, 2271, 2283, 2265, 2273, 2287, + 2289, 2282, 2290, 2292, 2293, 6084, 2298, 2299, 2300, 2302, + 2306, 2309, 2307, 2308, 2310, 2314, 2315, 2317, 2319, 2318, + 2320, 2321, 2328, 2329, 2334, 2324, 2331, 2336, 6084, 2343, - 2358, 2361, 2362, 2363, 2365, 2367, 2368, 2369, 2370, 2377, - 2384, 2375, 2385, 2386, 2390, 2396, 2392, 5988, 2397, 2398, - 2399, 2405, 2416, 2409, 2407, 2419, 2408, 2411, 2412, 2421, - 2423, 2432, 2427, 2425, 2430, 2434, 2435, 2436, 2438, 2441, - 2442, 2451, 2443, 2453, 2220, 5988, 2376, 2454, 2446, 2448, - 2461, 2455, 2463, 2467, 2464, 2470, 2471, 2473, 2474, 2476, - 2477, 2478, 2480, 2482, 2481, 5988, 2485, 2486, 2490, 2493, - 2498, 2496, 2500, 2506, 2508, 2510, 2502, 2512, 2514, 2513, - 5988, 2522, 2523, 2519, 2531, 2527, 2528, 2529, 2533, 2530, - 5988, 2534, 2535, 2543, 2544, 2539, 5988, 2548, 2541, 2546, + 2338, 2340, 2347, 2341, 2352, 2348, 2364, 2350, 2356, 2359, + 2365, 2373, 2362, 2367, 2374, 2379, 2383, 2384, 2377, 2385, + 2389, 2397, 2387, 2399, 2401, 2391, 2395, 2403, 2402, 2405, + 2407, 2409, 2420, 2423, 2419, 2425, 2426, 2415, 2433, 2428, + 6084, 2432, 2434, 2437, 2438, 2451, 2443, 2441, 2448, 2454, + 2456, 2457, 2458, 2459, 2466, 2461, 2464, 2467, 2469, 2470, + 2471, 2475, 2478, 2482, 2486, 2479, 2489, 2490, 6084, 2495, + 2491, 2483, 2497, 2500, 2501, 2505, 2507, 2509, 2510, 2511, + 2513, 2515, 2516, 2517, 2518, 2520, 2522, 2525, 6084, 2527, + 2526, 2528, 2534, 2539, 2538, 2540, 2542, 2549, 2551, 2536, - 2551, 2553, 2552, 2556, 2549, 2559, 2560, 2568, 2565, 2562, - 2571, 5988, 2572, 2580, 2575, 2577, 2581, 2582, 2583, 2587, - 2592, 2588, 2594, 5988, 2601, 2599, 2604, 2612, 2607, 2609, - 2610, 2613, 2614, 2616, 2617, 5988, 2619, 2620, 2622, 2623, - 2625, 2627, 2630, 2642, 2631, 2634, 2641, 2639, 2644, 2646, - 2647, 2650, 2651, 2648, 2658, 2660, 2662, 2663, 2664, 2668, - 2676, 2678, 2674, 2679, 5988, 2682, 2683, 2684, 2671, 2686, - 2688, 2690, 2691, 2694, 2696, 2701, 2695, 2698, 2708, 2711, - 2699, 2712, 2715, 2716, 2718, 2720, 2721, 2722, 2723, 2730, - 2726, 2728, 2738, 2729, 2733, 2743, 2736, 2744, 2745, 2746, + 2552, 2553, 2555, 6084, 2563, 2565, 2561, 2570, 2562, 2567, + 2569, 2573, 2574, 6084, 2575, 2576, 2577, 2584, 2585, 2581, + 6084, 2588, 2583, 2589, 2592, 2591, 2593, 2598, 2595, 2601, + 2602, 2607, 2614, 2606, 2616, 6084, 2608, 2623, 2610, 2624, + 2630, 2618, 2619, 2625, 2631, 2635, 2641, 6084, 2648, 2645, + 2646, 2653, 2644, 2650, 2651, 2654, 2656, 2660, 2658, 6084, + 2661, 2662, 2664, 2666, 2668, 2670, 2671, 2679, 2677, 2681, + 2683, 2684, 2686, 2685, 2687, 2691, 2702, 2693, 2694, 2695, + 2705, 2706, 2708, 2709, 2710, 2719, 2722, 2717, 2725, 6084, + 2728, 2729, 2714, 2721, 2731, 2732, 2734, 2735, 2737, 2738, - 2747, 2749, 2751, 2752, 2756, 2750, 2758, 2768, 2769, 2771, - 2760, 2772, 2776, 2777, 5988, 2780, 2782, 2778, 2784, 2785, - 2791, 2792, 2794, 2795, 2786, 2800, 2802, 2803, 2808, 2809, - 2811, 2818, 2814, 5988, 2815, 5988, 2816, 2817, 2819, 2829, - 2821, 5988, 2825, 5988, 2832, 2839, 2826, 2830, 5988, 2840, - 2834, 2836, 2847, 2844, 2849, 2850, 2851, 2852, 2857, 2853, - 2855, 2860, 2861, 2863, 2865, 2867, 2871, 2868, 2878, 2880, - 2872, 2881, 2874, 2887, 2889, 2888, 2890, 5988, 2900, 2891, - 2894, 2897, 2901, 2902, 2903, 2905, 2906, 2911, 2912, 2913, - 2914, 2920, 2919, 2929, 2925, 2936, 5988, 2928, 2933, 2935, + 2743, 2740, 2742, 2750, 2759, 2751, 2755, 2760, 2762, 2763, + 2764, 2765, 2766, 2752, 2773, 2775, 2768, 2782, 2774, 2777, + 2791, 2778, 2787, 2788, 2789, 2790, 2792, 2795, 2798, 2800, + 2802, 2812, 2816, 2796, 2805, 2817, 2818, 2819, 2820, 6084, + 2823, 2824, 2821, 2825, 2828, 2834, 2835, 2837, 2838, 2842, + 2843, 2846, 2847, 2849, 2852, 2854, 2862, 2858, 6084, 2859, + 6084, 2860, 2861, 2863, 2871, 2867, 6084, 2873, 6084, 2875, + 2880, 2868, 2876, 6084, 2882, 2883, 2886, 2888, 2890, 2891, + 2894, 2893, 2896, 2899, 2897, 2901, 2902, 2904, 2907, 2909, + 2914, 2911, 2915, 2921, 2918, 2924, 2925, 2927, 2928, 2931, - 2937, 5988, 2939, 2938, 2940, 2946, 2949, 2948, 2950, 2952, - 2956, 2958, 2951, 2961, 2959, 2968, 2969, 5988, 2974, 2975, - 2960, 2978, 2982, 2984, 2986, 2990, 2998, 2994, 2993, 2977, - 2996, 2997, 3000, 3007, 3008, 3004, 3011, 3010, 3013, 3020, - 3016, 3012, 3014, 3022, 3023, 3024, 3027, 3028, 3031, 3026, - 3029, 3036, 3032, 5988, 3044, 3035, 3040, 3047, 3051, 3054, - 3052, 3056, 3058, 3057, 3062, 3061, 3059, 5988, 3063, 5988, - 3060, 3077, 3065, 3082, 3079, 3071, 3084, 3093, 3086, 3088, - 3090, 3096, 3094, 3098, 3097, 3100, 3103, 3102, 3110, 3109, - 3105, 3116, 3117, 3118, 3120, 3121, 5988, 5988, 3122, 3123, + 2933, 2936, 6084, 2938, 2934, 2940, 2942, 2943, 2945, 2946, + 2947, 2955, 2953, 2954, 2957, 2964, 2961, 2965, 2970, 2978, + 2968, 2982, 6084, 2977, 2980, 2983, 2984, 6084, 2987, 2985, + 2993, 2995, 2986, 2989, 2997, 2998, 3003, 2999, 3005, 3010, + 3014, 3015, 3018, 6084, 3017, 3019, 3006, 3027, 3029, 3033, + 3034, 3039, 3042, 3041, 3032, 3043, 3044, 3047, 3048, 3055, + 3056, 3052, 3059, 3054, 3060, 3069, 3066, 3058, 3062, 3064, + 3072, 3073, 3078, 3079, 3070, 3080, 3075, 3081, 3085, 3088, + 6084, 3093, 3094, 3097, 3103, 3096, 3098, 3089, 3100, 3106, + 3105, 3110, 3107, 3108, 6084, 3121, 6084, 3122, 3123, 3128, - 3126, 3124, 3128, 3134, 3130, 3142, 3138, 3144, 3146, 3148, - 3156, 5988, 3149, 3153, 3152, 3159, 3171, 3157, 3161, 3176, - 3172, 3179, 3178, 5988, 3169, 3180, 3187, 3182, 3183, 3191, - 5988, 3188, 5988, 3190, 3193, 3197, 3198, 3200, 3201, 3202, - 3203, 3211, 3221, 3224, 3206, 3223, 3208, 3220, 3225, 3226, - 3233, 3229, 3230, 3231, 5988, 3235, 3236, 3237, 3199, 3240, - 3242, 3243, 3248, 5988, 3250, 3254, 3255, 3257, 3258, 3260, - 3261, 3263, 3264, 3266, 3262, 3267, 3279, 3268, 3272, 3282, - 3284, 3286, 3292, 5988, 3293, 3285, 3301, 3297, 3299, 3300, - 3303, 3304, 3305, 3307, 3308, 3309, 3310, 3316, 3315, 3312, + 3130, 3125, 3131, 3132, 3134, 3138, 3139, 3140, 3143, 3142, + 3144, 3146, 3150, 3153, 3154, 3170, 3157, 3152, 3166, 3159, + 3167, 3168, 3171, 6084, 6084, 3173, 3174, 3175, 3178, 3180, + 3182, 3185, 3190, 3188, 3191, 3195, 3196, 3207, 6084, 3197, + 3203, 3204, 3205, 3219, 3212, 3221, 3223, 3222, 3231, 3228, + 6084, 3215, 3224, 3239, 3229, 3237, 3247, 6084, 3236, 6084, + 3232, 3243, 3245, 3248, 3250, 3252, 3254, 3255, 3259, 3266, + 3267, 3264, 3271, 3256, 3272, 3273, 3274, 3281, 3278, 3279, + 3283, 6084, 3285, 3282, 3289, 3286, 3294, 3298, 3288, 3296, + 6084, 3304, 3305, 3307, 3308, 3309, 3310, 3312, 3314, 3315, - 3313, 3318, 3329, 3331, 3332, 3321, 3339, 3323, 3337, 3342, - 3340, 3343, 3348, 3349, 3352, 3354, 3346, 3368, 3369, 3355, - 3357, 3372, 3359, 3379, 3374, 5988, 3381, 3365, 3386, 3382, - 3384, 3389, 3390, 3398, 3396, 3385, 3393, 3400, 3397, 5988, - 3412, 3402, 3399, 3403, 3404, 3424, 3420, 3421, 3422, 3426, - 3423, 3427, 3430, 3431, 3432, 3435, 3436, 5988, 5988, 3438, - 3439, 3442, 5988, 3445, 3440, 3452, 3448, 3444, 3455, 3459, - 3458, 3457, 3462, 3460, 3468, 5988, 3469, 3477, 3472, 3473, - 3481, 3482, 3479, 3485, 3487, 3488, 3491, 3489, 3494, 3493, - 3495, 3498, 3506, 3509, 3502, 3504, 3512, 5988, 3505, 3507, + 3313, 3318, 3317, 3323, 3332, 3333, 3324, 3331, 3335, 3338, + 3340, 6084, 3344, 3346, 3353, 3351, 3348, 3352, 3356, 3357, + 3358, 3361, 3363, 3362, 3364, 3366, 3368, 3365, 3375, 3369, + 3382, 3371, 3385, 3391, 3392, 3372, 3388, 3395, 3396, 3399, + 3398, 3402, 3405, 3409, 3406, 3418, 3419, 3410, 3413, 3422, + 3423, 3430, 3425, 6084, 3435, 3415, 3438, 3436, 3437, 3442, + 3443, 3445, 3452, 3451, 3439, 3447, 3454, 3449, 6084, 3472, + 3460, 3453, 3457, 3458, 3462, 3475, 3476, 3477, 3479, 3480, + 3481, 3483, 3485, 3486, 3489, 3490, 6084, 6084, 3492, 3493, + 3495, 6084, 3499, 3494, 3511, 3501, 3502, 3497, 3509, 3513, - 3513, 3515, 3517, 3520, 5988, 3523, 3524, 3527, 3530, 3538, - 3540, 3534, 3547, 3531, 3541, 3543, 3548, 3549, 3551, 3560, - 3557, 3556, 3559, 3563, 3566, 5988, 3565, 3567, 3568, 3576, - 5988, 3580, 3587, 3590, 3591, 3573, 3577, 3589, 3598, 5988, - 3593, 3596, 3594, 3595, 3603, 3602, 3610, 3607, 5988, 3609, - 3608, 3611, 5988, 3612, 3613, 3618, 3623, 3625, 3632, 3628, - 3630, 3631, 3629, 5988, 3636, 5988, 3639, 3640, 3643, 5988, - 3646, 3647, 3648, 3650, 3651, 3656, 3657, 3655, 3663, 3664, - 3666, 3667, 3665, 3670, 3674, 3671, 3672, 3676, 3677, 5988, - 3678, 3680, 3687, 3692, 3688, 3695, 3682, 3699, 3700, 5988, + 3514, 3519, 3517, 3521, 6084, 3524, 3531, 3526, 3527, 3536, + 3538, 3542, 3528, 3535, 3539, 3545, 3548, 3547, 3549, 3551, + 3552, 3561, 3562, 3554, 3557, 3565, 6084, 3558, 3566, 3563, + 3571, 3573, 3575, 6084, 3576, 3579, 3580, 3582, 3594, 3596, + 3587, 3602, 3584, 3597, 3589, 3599, 3606, 3607, 3615, 3610, + 3612, 3614, 3618, 3616, 6084, 3621, 3622, 3623, 3629, 6084, + 3632, 3640, 3641, 3642, 3624, 3644, 3645, 3652, 6084, 3647, + 3651, 3648, 3637, 3664, 3653, 3667, 3663, 3654, 6084, 3665, + 3669, 3671, 6084, 3670, 3678, 3681, 3683, 3672, 3690, 3685, + 3689, 3687, 3686, 6084, 3696, 6084, 3697, 3698, 3702, 6084, - 5988, 3702, 5988, 3705, 3706, 3709, 5988, 3711, 3710, 3718, - 3714, 3715, 3717, 3721, 3727, 5988, 3723, 3728, 3732, 3729, - 3734, 3737, 3739, 3740, 3736, 3741, 3744, 5988, 3745, 3742, - 3747, 3743, 3753, 3757, 3759, 3758, 5988, 3766, 3767, 3768, - 3770, 3772, 5988, 3774, 5988, 3776, 3780, 3781, 3782, 3777, - 5988, 3785, 3788, 3791, 3792, 3795, 3797, 3798, 3801, 3804, - 3805, 3813, 3809, 3808, 3811, 5988, 3810, 3812, 3816, 3823, - 3817, 3820, 3833, 3830, 3834, 3828, 3831, 3838, 3841, 3842, - 3844, 3848, 3849, 3850, 5988, 3851, 3856, 3852, 3865, 3861, - 3855, 5988, 3862, 3866, 3872, 5988, 3869, 3875, 3876, 3879, + 3699, 3704, 3707, 3706, 3708, 3709, 3713, 3720, 3715, 3721, + 3656, 3722, 3723, 3724, 3731, 3726, 3728, 3732, 3733, 6084, + 3739, 3734, 3736, 3742, 3746, 3748, 3738, 3749, 3753, 6084, + 6084, 3757, 6084, 3758, 3762, 3763, 6084, 3765, 3767, 3770, + 3768, 3771, 3773, 3777, 3774, 6084, 3783, 3769, 3784, 3786, + 3788, 3789, 3793, 3794, 3795, 3792, 3796, 3802, 6084, 3799, + 3800, 3814, 3798, 3803, 3817, 3822, 3809, 6084, 3825, 3824, + 3815, 3831, 3828, 6084, 3832, 6084, 3834, 3837, 3838, 3840, + 3839, 6084, 3843, 3847, 3849, 3844, 3851, 3853, 3854, 3857, + 3860, 3863, 3871, 3864, 3866, 3867, 6084, 3868, 3872, 3874, - 3880, 3881, 3884, 3883, 3886, 5988, 3890, 3891, 3887, 3888, - 3889, 3896, 5988, 5988, 3904, 5988, 3906, 3892, 3909, 3908, - 3911, 3913, 3917, 3918, 3920, 3914, 3921, 3929, 3928, 3938, - 3945, 3946, 3944, 3935, 3930, 5988, 5988, 3949, 3951, 3953, - 3955, 3956, 3958, 3942, 3965, 3963, 3971, 3974, 3964, 3967, - 5988, 3975, 3976, 3978, 5988, 3980, 3981, 3983, 3984, 3985, - 3989, 3987, 3988, 3992, 3991, 3994, 3998, 3995, 4004, 4000, - 4011, 4001, 4012, 4014, 4015, 4019, 5988, 4016, 4021, 4022, - 4025, 4028, 4030, 4029, 4031, 4032, 5988, 4036, 4035, 4039, - 4044, 4045, 4047, 4037, 4055, 4062, 4056, 4063, 4064, 4058, + 3876, 3880, 3881, 3888, 3884, 3890, 3885, 3891, 3894, 3896, + 3897, 3904, 3900, 3906, 3902, 6084, 3910, 3912, 3913, 3924, + 3916, 3915, 6084, 3917, 3921, 3928, 6084, 3930, 3931, 3932, + 3936, 3937, 3938, 3942, 3939, 3944, 6084, 3940, 3945, 3946, + 3949, 3960, 3961, 6084, 6084, 3962, 6084, 3963, 3948, 3964, + 3967, 3947, 3973, 3975, 3977, 3984, 3976, 3987, 3988, 3989, + 3978, 3998, 3996, 4005, 4001, 4003, 3994, 6084, 6084, 4007, + 4008, 4010, 4013, 4015, 4017, 4018, 4026, 4022, 4024, 4031, + 4028, 4038, 6084, 4035, 4021, 4040, 6084, 4037, 4042, 4043, + 4045, 4046, 4049, 4048, 4050, 4052, 4053, 4055, 4059, 4056, - 4069, 4072, 5988, 4073, 4046, 4074, 4075, 4080, 4082, 4083, - 4085, 4086, 4089, 4090, 4091, 4093, 4098, 4095, 4099, 4100, - 4101, 5988, 4106, 4113, 4103, 4116, 4107, 4117, 4118, 4126, - 4129, 4119, 4124, 4130, 4132, 5988, 4133, 4134, 4135, 4136, - 4144, 4137, 4141, 4145, 4147, 5988, 4152, 4148, 4154, 4155, - 4158, 4159, 4163, 4164, 4166, 4170, 4178, 5988, 4167, 4180, - 4182, 4174, 4171, 4173, 4183, 4186, 5988, 4190, 4192, 4191, - 4207, 4193, 4208, 4200, 4204, 4203, 4210, 4213, 4211, 4215, - 4217, 4218, 4219, 4231, 4235, 4230, 5988, 4221, 5988, 4236, - 4237, 4246, 4242, 4232, 5988, 4239, 4244, 4248, 4249, 4250, + 4068, 4058, 4065, 4061, 4069, 4072, 4076, 4079, 6084, 4081, + 4082, 4083, 4086, 4087, 4088, 4091, 4092, 4093, 6084, 4090, + 4096, 4098, 4097, 4106, 4099, 4108, 4115, 4118, 4123, 4110, + 4120, 4126, 4128, 4130, 4131, 6084, 4134, 4124, 4132, 4135, + 4142, 4146, 4138, 4149, 4143, 4151, 4153, 4154, 4156, 4163, + 4158, 4160, 4164, 4165, 6084, 4166, 4174, 4167, 4176, 4170, + 4177, 4179, 4180, 4190, 4185, 4187, 4191, 4193, 6084, 4194, + 4195, 4197, 4199, 4201, 4198, 4206, 4205, 4207, 6084, 4209, + 4213, 4216, 4215, 4219, 4221, 4224, 4225, 4227, 4228, 4231, + 6084, 4232, 4235, 4238, 4241, 4242, 4246, 4247, 4245, 6084, - 5988, 4253, 4256, 4258, 4257, 5988, 4263, 4262, 4261, 4268, - 4271, 4274, 5988, 4277, 4279, 4278, 4290, 4291, 4287, 4288, - 4292, 4289, 4294, 4295, 4296, 4304, 4299, 4300, 5988, 4303, - 4306, 4311, 4312, 4315, 4316, 4318, 4320, 4321, 5988, 4323, - 4325, 4326, 4327, 4329, 4330, 4332, 4344, 4342, 4331, 5988, - 4335, 4347, 4359, 4354, 4355, 5988, 5988, 4356, 4339, 4358, - 4343, 4363, 5988, 4367, 4366, 4365, 4373, 4374, 5988, 5988, - 4376, 5988, 4368, 5988, 4378, 4379, 5988, 5988, 4380, 4381, - 4382, 4384, 4391, 5988, 4394, 5988, 4402, 4397, 4388, 4399, - 4400, 5988, 4401, 4403, 4409, 5988, 4410, 4412, 4411, 4413, + 4248, 4254, 4257, 4262, 4258, 4269, 4260, 4268, 4261, 4264, + 4275, 4274, 4276, 4280, 4281, 4270, 4288, 4293, 4291, 6084, + 4292, 6084, 4294, 4296, 4304, 4299, 4301, 4302, 6084, 4305, + 4307, 4310, 4311, 4316, 6084, 4315, 4313, 4317, 4318, 6084, + 4328, 4314, 4320, 4333, 4335, 4336, 6084, 4339, 4341, 4342, + 4349, 4352, 4351, 4348, 4353, 4355, 4356, 4357, 4358, 4366, + 4361, 4363, 6084, 4365, 4371, 4373, 4377, 4378, 4364, 4379, + 4381, 4385, 6084, 4386, 4388, 4389, 4390, 4392, 4393, 4394, + 4401, 4397, 4400, 6084, 4402, 4405, 4406, 4416, 4407, 4417, + 6084, 6084, 4412, 4422, 4424, 4420, 4428, 6084, 4430, 4431, - 5988, 4417, 4422, 4414, 4418, 5988, 4423, 4427, 4430, 4431, - 4432, 4434, 4438, 4437, 4442, 4443, 4445, 4444, 4447, 4454, - 4458, 4460, 4462, 4463, 4448, 4465, 4467, 4471, 4469, 4473, - 4474, 4476, 4478, 4479, 4483, 4487, 4480, 4484, 4488, 4489, - 4490, 4497, 4493, 4499, 4504, 4500, 4505, 4506, 4507, 4508, - 4511, 4514, 4512, 4518, 4522, 5988, 4516, 4517, 4523, 4524, - 4528, 4530, 4536, 4544, 4548, 4549, 5988, 4551, 5988, 4553, - 4538, 4529, 4545, 5988, 4555, 4558, 4557, 4560, 4559, 4561, - 4563, 4562, 4566, 4567, 4569, 5988, 4572, 4573, 4574, 4578, - 5988, 4587, 4589, 4586, 4590, 4591, 4592, 4593, 4594, 4597, + 4432, 4436, 4433, 6084, 6084, 4438, 6084, 4439, 6084, 4440, + 4443, 6084, 6084, 4445, 4441, 4447, 4448, 4456, 6084, 4461, + 6084, 4464, 4462, 4449, 4451, 4466, 6084, 4468, 4469, 4475, + 6084, 4470, 4478, 4476, 4477, 6084, 4483, 4485, 4480, 4484, + 6084, 4489, 4496, 4486, 4493, 4497, 4498, 4505, 4500, 4501, + 4504, 4508, 4509, 4512, 4519, 4521, 4523, 4525, 4526, 4510, + 4527, 4530, 4533, 4535, 4536, 4537, 4539, 4541, 4542, 4544, + 4546, 4549, 4550, 4551, 4552, 4553, 4554, 4556, 4563, 4566, + 4568, 4567, 4569, 4571, 4570, 4572, 4575, 4578, 4581, 4580, + 4582, 6084, 4574, 4585, 4588, 4596, 4591, 4598, 4601, 4609, - 4599, 4601, 4603, 4615, 4605, 4606, 4610, 4614, 4616, 4617, - 4620, 4622, 4627, 4628, 4632, 5988, 4633, 5988, 4634, 4635, - 4638, 4639, 4640, 4641, 4644, 5988, 5988, 4642, 4646, 4648, - 4651, 4653, 4656, 4660, 5988, 4657, 4665, 4668, 4670, 5988, - 4658, 4674, 4675, 4677, 5988, 4678, 4679, 4680, 4682, 4685, - 4687, 4691, 4689, 4692, 4693, 4700, 5988, 5988, 5988, 5988, - 4701, 4697, 4707, 4703, 4709, 4711, 4712, 4714, 4710, 5988, - 4718, 5988, 5988, 4723, 4724, 4726, 4727, 4730, 4715, 4733, - 4731, 5988, 4735, 4736, 4743, 4737, 4745, 4747, 4749, 4753, - 4751, 4754, 4761, 4757, 4759, 4763, 4765, 4767, 4774, 5988, + 4613, 4614, 6084, 4616, 6084, 4618, 4602, 4610, 4604, 6084, + 4622, 4625, 4624, 4627, 4626, 4628, 4629, 4630, 4633, 4634, + 4636, 6084, 4639, 4632, 4640, 4645, 6084, 4653, 4656, 4641, + 4657, 4658, 4661, 4660, 4663, 4664, 4666, 4668, 4670, 4672, + 4679, 4674, 4682, 4677, 4683, 4684, 4686, 4689, 4691, 4699, + 4700, 4708, 6084, 4690, 6084, 4701, 4695, 4703, 4705, 4711, + 4712, 4717, 6084, 6084, 4713, 4718, 4720, 4722, 4723, 4727, + 4724, 6084, 4729, 4730, 4739, 4735, 6084, 4731, 4740, 4742, + 4750, 6084, 4743, 4745, 4747, 4753, 4756, 4758, 4759, 4761, + 4763, 4765, 4767, 6084, 6084, 6084, 6084, 4768, 4771, 4773, - 5988, 4764, 4776, 4768, 4785, 4781, 4782, 4789, 4788, 4790, - 4791, 4793, 4794, 4780, 4803, 4804, 4805, 4799, 5988, 4807, - 4806, 5988, 4813, 5988, 4814, 4815, 4816, 4817, 4818, 4822, - 4823, 4826, 5988, 5988, 4821, 4828, 4832, 4837, 4833, 4829, - 4839, 4842, 4843, 5988, 4844, 5988, 4845, 4846, 4856, 4847, - 4863, 4864, 4866, 4868, 4853, 4869, 5988, 4870, 4871, 5988, - 4873, 4875, 4876, 5988, 4880, 4878, 4883, 4886, 5988, 4888, - 4890, 4892, 5988, 4899, 5988, 4893, 4895, 4902, 4907, 5988, - 4903, 4904, 5988, 4909, 4911, 4912, 4916, 5988, 4917, 5988, - 4918, 4920, 4921, 4925, 4926, 4928, 4930, 4931, 4932, 4939, + 4774, 4776, 4781, 4782, 4784, 4780, 6084, 4786, 6084, 6084, + 4792, 4794, 4788, 4796, 4798, 4800, 4803, 4805, 6084, 4807, + 4804, 4810, 4808, 4817, 4821, 4825, 4811, 4826, 4814, 4827, + 4834, 4830, 4836, 4829, 4833, 4840, 4842, 6084, 6084, 4843, + 4847, 4848, 4855, 4852, 4853, 4865, 4860, 4861, 4862, 4863, + 4867, 4868, 4876, 4879, 4869, 4872, 6084, 4877, 4880, 6084, + 4881, 6084, 4885, 4886, 4887, 4888, 4894, 4895, 4896, 4898, + 6084, 6084, 6084, 4892, 4899, 4902, 4909, 4906, 4913, 4900, + 4917, 4910, 6084, 4912, 6084, 4914, 4920, 4931, 4918, 4932, + 4939, 4941, 4937, 4938, 4923, 6084, 4940, 4942, 6084, 4944, - 4937, 4940, 5988, 5988, 4948, 4934, 4945, 4950, 4952, 4959, - 4951, 4956, 4955, 5988, 5988, 4961, 5988, 4963, 4964, 5988, - 4962, 4969, 4968, 4973, 4974, 4975, 4977, 4980, 4982, 4990, - 4983, 4981, 4994, 5004, 4988, 5006, 5008, 5010, 5012, 5014, - 5016, 4984, 4999, 5017, 5018, 5020, 5021, 5988, 5023, 5025, - 5024, 5988, 5030, 5026, 5035, 5031, 5988, 5038, 5039, 5044, - 5045, 5988, 5046, 5050, 5047, 5052, 5055, 5063, 5056, 5058, - 5068, 5988, 5988, 5988, 5060, 5074, 5988, 5076, 5066, 5059, - 5071, 5988, 5077, 5078, 5988, 5988, 5079, 5082, 5081, 5093, - 5988, 5083, 5988, 5085, 5988, 5092, 5094, 5102, 5096, 5988, + 4945, 4947, 6084, 4950, 4952, 4954, 4957, 6084, 4961, 4963, + 4964, 6084, 4966, 6084, 4958, 4968, 4971, 4980, 6084, 4972, + 4975, 6084, 4982, 4985, 4986, 4977, 6084, 4987, 6084, 4988, + 4994, 4995, 4998, 4991, 5000, 5001, 5002, 5003, 5010, 5012, + 5009, 6084, 6084, 260, 5022, 5007, 5015, 5018, 5019, 5029, + 5024, 5027, 5033, 6084, 6084, 5034, 6084, 5028, 5037, 6084, + 5026, 5041, 5042, 5043, 5045, 5046, 5047, 5053, 5050, 5054, + 5055, 5056, 5062, 5073, 5058, 5079, 5080, 5082, 5084, 5086, + 5074, 5071, 5068, 5089, 5091, 5092, 5093, 6084, 5095, 5096, + 5098, 6084, 5102, 5097, 5106, 5103, 6084, 5110, 5111, 5114, - 5107, 5109, 5988, 5115, 5117, 5119, 5111, 5088, 5121, 5122, - 5988, 5129, 5125, 5126, 5133, 5124, 5128, 5134, 5135, 5143, - 5136, 5145, 5988, 5146, 5147, 5151, 5154, 5138, 5148, 5158, - 5988, 5160, 5988, 5162, 5164, 5165, 5167, 5166, 5168, 5171, - 5180, 5170, 5173, 5174, 5988, 5184, 5189, 5988, 5181, 5988, - 5191, 5988, 5192, 5194, 5195, 5198, 5988, 5200, 5186, 5197, - 5204, 5988, 5212, 5201, 5205, 5217, 5988, 5988, 5207, 5225, - 5209, 5218, 5222, 5229, 5226, 5231, 5232, 5233, 5234, 5241, - 5236, 5237, 5238, 5245, 5248, 5252, 5988, 5988, 5988, 5247, - 5256, 5263, 5261, 5262, 5270, 5266, 5988, 5267, 5268, 5269, + 5117, 6084, 5107, 5119, 5124, 5121, 5122, 5133, 5129, 5131, + 5134, 6084, 6084, 6084, 5136, 5144, 6084, 5146, 5135, 5139, + 5147, 6084, 5148, 5150, 6084, 6084, 5151, 5152, 5153, 5160, + 6084, 5155, 6084, 5156, 6084, 5158, 5166, 5168, 5170, 6084, + 5175, 5181, 6084, 5184, 5187, 5189, 5190, 5172, 5159, 5191, + 6084, 5200, 5193, 5197, 5204, 5195, 5201, 5205, 5206, 5214, + 5207, 5212, 6084, 5215, 5216, 5218, 5225, 5209, 5220, 5217, + 6084, 5230, 6084, 5227, 5231, 5234, 5233, 5236, 5239, 5241, + 5243, 5245, 5247, 5250, 6084, 5254, 5256, 6084, 5251, 6084, + 5260, 6084, 5257, 5261, 5262, 5263, 6084, 5265, 5266, 5267, - 5277, 5274, 5279, 5988, 5275, 5280, 5281, 5282, 5286, 5283, - 5290, 5988, 5294, 5297, 5300, 5289, 5304, 5308, 5311, 5313, - 5314, 5988, 5316, 5988, 5988, 5301, 5988, 5317, 5318, 5321, - 5322, 5988, 5325, 5327, 5326, 5328, 5330, 5332, 5988, 5342, - 5333, 5335, 5344, 5988, 5988, 5348, 5988, 5351, 5352, 5345, - 5361, 5356, 5358, 5363, 5360, 5988, 5364, 5367, 5369, 5370, - 5371, 5988, 5372, 5373, 5375, 5376, 5379, 5378, 5381, 5383, - 5385, 5988, 5386, 5388, 5406, 5402, 5988, 5389, 5401, 5988, - 5988, 5411, 5413, 5334, 5988, 5988, 5988, 5416, 5988, 5418, - 5422, 5426, 5430, 5421, 5988, 5432, 5429, 5434, 5988, 5988, + 5270, 6084, 5274, 5279, 5276, 5281, 6084, 6084, 5282, 5291, + 5283, 5284, 5297, 5299, 5287, 5301, 5292, 5304, 5294, 5311, + 5308, 5309, 5310, 5316, 5319, 5317, 6084, 6084, 6084, 5312, + 5323, 5331, 5329, 5332, 5339, 5326, 6084, 5336, 5337, 5334, + 5346, 5338, 5348, 6084, 5345, 5349, 5350, 5351, 5359, 5352, + 5354, 6084, 5361, 5366, 5368, 5362, 5369, 5378, 5380, 5382, + 5383, 6084, 5385, 6084, 6084, 5370, 6084, 5372, 5386, 5387, + 5390, 6084, 5393, 5396, 5395, 5397, 5399, 5401, 6084, 5411, + 5402, 5404, 5407, 6084, 6084, 5414, 6084, 5417, 5419, 5418, + 5426, 5421, 5427, 5429, 5425, 6084, 5431, 5434, 5436, 5437, - 5433, 5435, 5436, 5438, 5988, 5988, 5439, 5442, 5440, 5443, - 5445, 5988, 5450, 5454, 5456, 5459, 5462, 5451, 5465, 5467, - 5475, 5477, 5472, 5473, 5478, 5480, 5481, 5482, 5484, 5493, - 5489, 5491, 5503, 5500, 5988, 5988, 5507, 5988, 5988, 5509, - 5511, 5513, 5515, 5517, 5519, 5521, 5988, 5522, 5524, 5525, - 5393, 5526, 5988, 5528, 5530, 5527, 5532, 5492, 5535, 5533, - 5538, 5988, 5988, 5539, 5540, 5541, 5549, 5544, 5988, 5551, - 5558, 5555, 5556, 5553, 5559, 5560, 5988, 5564, 5565, 5988, - 5988, 5563, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, - 5568, 5988, 5566, 5581, 5583, 5585, 5988, 5573, 5586, 5494, + 5438, 6084, 5439, 5440, 5442, 5443, 5446, 5445, 5448, 5450, + 5452, 6084, 5453, 5455, 5473, 5469, 6084, 5456, 5468, 6084, + 6084, 5478, 5480, 5482, 6084, 6084, 6084, 5484, 6084, 5488, + 5492, 5496, 5500, 5491, 6084, 5502, 5485, 5499, 6084, 6084, + 5504, 5505, 5506, 5508, 6084, 6084, 5509, 5510, 5512, 5514, + 5515, 6084, 5518, 5519, 5520, 5527, 5532, 5522, 5533, 5535, + 5546, 5548, 5529, 5541, 5539, 5550, 5552, 5543, 5559, 5567, + 5563, 5565, 5571, 5568, 6084, 6084, 5575, 6084, 6084, 5577, + 5579, 5581, 5583, 5585, 5587, 5589, 6084, 5590, 5592, 5593, + 5460, 5594, 6084, 5553, 5596, 5551, 5597, 5600, 5603, 5598, - 5587, 5575, 5988, 5588, 5590, 5592, 5098, 5591, 5593, 5599, - 5598, 5600, 5603, 5602, 5605, 5604, 5609, 5608, 5610, 5623, - 5988, 5988, 5988, 5622, 5614, 5616, 5624, 5626, 5631, 5638, - 5640, 5635, 5641, 5642, 5643, 5644, 5646, 5647, 5656, 5651, - 5652, 5653, 5655, 5660, 5657, 5663, 5667, 5988, 5668, 5988, - 5669, 5988, 5988, 5674, 5676, 5670, 5679, 5686, 5690, 5681, - 5688, 5685, 5689, 5692, 5697, 5988, 5693, 5699, 5988, 5702, - 5703, 5988, 5700, 5705, 5706, 5708, 5709, 5711, 5712, 5713, - 5724, 5988, 5988, 5715, 5726, 5727, 5729, 5731, 5738, 5733, - 5737, 5740, 5743, 5739, 5747, 5988, 5750, 5751, 5753, 5988, + 5606, 6084, 6084, 5601, 5608, 5607, 5615, 5609, 6084, 5617, + 5624, 5621, 5623, 5622, 5625, 5626, 6084, 5630, 5629, 6084, + 6084, 5631, 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, + 5634, 6084, 5632, 5640, 5648, 5650, 6084, 5644, 5651, 5652, + 5653, 5654, 6084, 5655, 5658, 5657, 5659, 5664, 5665, 5663, + 5670, 5672, 5671, 5674, 5677, 5675, 5681, 5680, 5682, 5683, + 6084, 6084, 6084, 5686, 5685, 5695, 5697, 5704, 5707, 5710, + 5712, 5696, 5698, 5713, 5714, 5717, 5720, 5721, 5729, 5724, + 5725, 5726, 5727, 5733, 5728, 5730, 5735, 6084, 5739, 6084, + 5740, 6084, 6084, 5742, 5750, 5744, 5746, 5759, 5761, 5748, - 5755, 5754, 5757, 5760, 5761, 5768, 5763, 5765, 5988, 5766, - 5988, 5770, 5772, 5771, 5774, 5775, 5777, 5785, 5783, 5787, - 5988, 5789, 5791, 5795, 5796, 5798, 5801, 5802, 5803, 5805, - 5807, 5808, 5817, 5811, 5813, 5819, 5821, 5823, 5988, 5825, - 5827, 5988, 5828, 5829, 5830, 5831, 5835, 5988, 5840, 5832, - 5837, 5843, 5848, 5845, 5988, 5854, 5858, 5855, 5988, 5859, - 5988, 5988, 5860, 5861, 5863, 5867, 5869, 5988, 5988, 5988, - 5896, 5903, 5910, 5917, 5924, 88, 5931, 5938, 5945, 5952, - 5959, 5966, 5973, 5980 + 5756, 5757, 5763, 5767, 5771, 6084, 5760, 5764, 6084, 5772, + 5773, 6084, 5774, 5775, 5778, 5779, 5782, 5783, 5785, 5788, + 5799, 6084, 6084, 5787, 5791, 5789, 5801, 5805, 5812, 5803, + 5811, 5813, 5814, 5796, 5823, 6084, 5821, 5822, 5825, 6084, + 5826, 5828, 5829, 5831, 5832, 5839, 5834, 5835, 6084, 5837, + 6084, 5841, 5843, 5844, 5842, 5845, 5846, 5856, 5858, 5854, + 6084, 5860, 5865, 5862, 5868, 5870, 5872, 5873, 5874, 5876, + 5878, 5882, 5888, 5885, 5889, 5879, 5890, 5891, 6084, 5900, + 5894, 6084, 5897, 5901, 5903, 5904, 5907, 6084, 5912, 5905, + 5909, 5914, 5917, 5918, 6084, 5920, 5927, 5929, 6084, 5930, + + 6084, 6084, 5932, 5921, 5931, 5934, 5939, 6084, 6084, 6084, + 5964, 5971, 5978, 5985, 5992, 5999, 6006, 88, 6013, 6020, + 6027, 6034, 6041, 6048, 6055, 6062, 6069, 6076 } ; -static const flex_int16_t yy_def[3085] = +static const flex_int16_t yy_def[3129] = { 0, - 3070, 1, 3071, 3071, 3072, 3072, 3073, 3073, 3074, 3074, - 3075, 3075, 3070, 3076, 3070, 3070, 3070, 3070, 3077, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3078, 3070, 3070, 3070, 3078, 3079, 3070, 3070, - 3070, 3079, 3080, 3070, 3070, 3070, 3070, 3080, 3081, 3070, - 3070, 3070, 3081, 3082, 3070, 3083, 3070, 3082, 3082, 3076, - 3076, 3070, 3084, 3077, 3084, 3077, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3110, 1, 3111, 3111, 3112, 3112, 3113, 3113, 3114, 3114, + 3115, 3115, 3116, 3116, 3117, 3117, 3110, 3118, 3110, 3110, + 3110, 3110, 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3120, 3110, 3110, 3110, + 3120, 3121, 3110, 3110, 3110, 3121, 3122, 3110, 3110, 3110, + 3110, 3122, 3123, 3110, 3110, 3110, 3123, 3124, 3110, 3125, + 3110, 3124, 3124, 3126, 3110, 3110, 3110, 3110, 3126, 3127, + 3110, 3110, 3110, 3127, 3118, 3118, 3110, 3128, 3119, 3128, + 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3078, 3078, 3079, 3079, 3080, 3080, 3070, 3081, 3081, 3082, - 3082, 3083, 3083, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3120, 3120, 3121, 3121, 3122, + 3122, 3110, 3123, 3123, 3124, 3124, 3125, 3125, 3124, 3126, + 3126, 3110, 3127, 3127, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3082, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3124, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3082, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, 3118, + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3082, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3124, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3124, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, + 3118, 3118, 3110, 3118, 3124, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3110, - 3070, 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3110, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, - 3076, 3070, 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3110, 3118, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3110, 3110, 3118, 3118, 3118, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3070, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3110, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3110, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3076, 3076, 3070, 3070, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3070, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3110, 3118, 3118, 3118, 3110, 3110, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3110, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3110, 3118, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070 + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, + + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 0, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110 } ; -static const flex_int16_t yy_nxt[6029] = +static const flex_int16_t yy_nxt[6125] = { 0, - 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, - 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, - 14, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 14, 14, 14, 42, - 44, 45, 46, 44, 45, 46, 49, 50, 49, 50, - 51, 47, 51, 70, 47, 70, 70, 52, 70, 52, - 54, 55, 56, 57, 70, 18, 54, 55, 56, 57, - 71, 18, 58, 60, 61, 62, 71, 82, 58, 60, - 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, - 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, + 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, + 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, + 18, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 18, 18, 18, 46, + 48, 49, 50, 48, 49, 50, 53, 54, 53, 54, + 55, 51, 55, 85, 51, 85, 85, 56, 85, 56, + 58, 59, 60, 61, 85, 22, 58, 59, 60, 61, + 86, 22, 62, 64, 65, 66, 86, 97, 62, 64, + 65, 66, 87, 86, 67, 117, 88, 107, 85, 86, + 67, 19, 20, 21, 69, 70, 71, 75, 76, 77, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, - 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, - 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 78, 86, 22, 72, 119, 86, 118, 108, 86, 79, + 156, 156, 73, 19, 20, 21, 69, 70, 71, 75, + 76, 77, 78, 183, 22, 72, 81, 82, 83, 127, + 90, 79, 90, 90, 73, 90, 86, 84, 81, 82, + 83, 90, 91, 86, 86, 98, 92, 93, 86, 84, + 94, 155, 99, 102, 87, 95, 100, 103, 88, 101, + 104, 86, 105, 106, 96, 86, 109, 86, 111, 86, + 86, 86, 86, 120, 113, 133, 112, 114, 86, 124, + 110, 121, 222, 125, 115, 86, 116, 122, 166, 158, + 128, 123, 158, 191, 129, 86, 86, 134, 175, 126, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 130, 135, 169, 131, 163, 163, 86, 144, 86, 145, + 132, 136, 137, 139, 138, 86, 140, 86, 146, 148, + 180, 86, 152, 141, 147, 86, 153, 142, 143, 149, + 154, 173, 173, 150, 151, 160, 272, 160, 160, 90, + 160, 90, 90, 165, 90, 165, 165, 170, 165, 170, + 170, 168, 170, 85, 86, 85, 85, 90, 85, 90, + 90, 86, 90, 86, 85, 176, 178, 86, 90, 91, + 177, 86, 86, 166, 86, 181, 86, 86, 86, 193, + 184, 86, 86, 186, 86, 86, 86, 179, 182, 187, + 185, 188, 189, 190, 86, 195, 86, 192, 194, 86, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 251, 86, 196, 202, 200, 197, 198, 86, 86, 86, + 86, 357, 203, 199, 201, 204, 86, 209, 86, 205, + 86, 86, 206, 86, 214, 212, 86, 211, 215, 217, + 220, 86, 219, 86, 218, 207, 208, 86, 221, 86, + 223, 86, 210, 86, 216, 213, 86, 86, 86, 86, + 224, 227, 86, 229, 86, 232, 237, 230, 86, 225, + 86, 226, 234, 86, 228, 86, 86, 86, 240, 231, + 244, 235, 233, 86, 246, 86, 86, 236, 245, 241, + 243, 86, 239, 242, 86, 86, 238, 86, 249, 255, + 86, 247, 86, 86, 248, 86, 253, 259, 256, 250, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 71, 71, 288, - 289, 285, 295, 284, 286, 71, 299, 280, 71, 287, - 71, 290, 297, 298, 291, 300, 292, 302, 296, 71, + 86, 254, 258, 252, 86, 260, 156, 156, 158, 262, + 257, 158, 166, 261, 263, 160, 166, 160, 160, 264, + 160, 163, 163, 165, 86, 165, 165, 90, 165, 90, + 90, 170, 90, 170, 170, 86, 170, 173, 173, 168, + 265, 266, 268, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 270, 273, 276, 279, 267, 86, 269, 271, + 278, 86, 280, 275, 86, 274, 86, 283, 284, 282, + 277, 285, 86, 86, 86, 86, 286, 86, 293, 288, + 86, 86, 281, 86, 289, 295, 296, 86, 299, 290, + 86, 294, 86, 287, 86, 291, 292, 86, 86, 297, - 71, 71, 71, 71, 71, 304, 305, 301, 293, 307, - 294, 71, 71, 308, 71, 313, 146, 71, 310, 71, - 303, 306, 309, 311, 71, 71, 317, 71, 71, 71, - 71, 71, 312, 314, 315, 71, 316, 71, 71, 318, - 320, 319, 71, 71, 325, 71, 321, 71, 71, 326, - 71, 71, 327, 322, 331, 329, 71, 71, 323, 334, - 71, 71, 71, 324, 71, 71, 328, 330, 71, 336, - 337, 71, 71, 340, 332, 333, 341, 335, 339, 71, - 338, 342, 71, 343, 344, 71, 71, 346, 348, 71, - 347, 71, 350, 71, 71, 71, 71, 351, 71, 345, + 86, 301, 86, 298, 303, 302, 86, 304, 86, 86, + 305, 308, 86, 306, 309, 86, 310, 300, 86, 311, + 307, 312, 86, 315, 318, 86, 319, 86, 316, 174, + 86, 320, 323, 313, 322, 314, 324, 86, 317, 325, + 86, 328, 86, 321, 86, 86, 330, 86, 327, 329, + 331, 86, 86, 86, 326, 86, 86, 86, 332, 86, + 86, 334, 86, 86, 86, 336, 333, 86, 86, 340, + 338, 86, 86, 345, 86, 86, 339, 335, 346, 86, + 341, 86, 337, 342, 351, 86, 347, 344, 343, 349, + 86, 86, 348, 354, 86, 86, 86, 350, 86, 86, - 71, 354, 71, 151, 71, 71, 71, 361, 144, 71, - 357, 359, 349, 71, 352, 355, 353, 362, 71, 356, - 71, 71, 71, 71, 358, 363, 364, 365, 360, 71, - 71, 71, 367, 71, 371, 372, 71, 366, 374, 370, - 71, 71, 71, 373, 369, 71, 375, 368, 376, 71, - 378, 71, 71, 379, 71, 71, 71, 71, 382, 71, - 377, 383, 71, 385, 71, 71, 387, 388, 384, 71, - 380, 381, 71, 389, 71, 71, 386, 71, 390, 71, - 71, 392, 393, 394, 395, 71, 71, 71, 399, 71, - 71, 71, 71, 396, 400, 391, 402, 71, 71, 398, + 356, 360, 361, 86, 86, 359, 363, 86, 86, 352, + 353, 86, 86, 86, 355, 358, 364, 86, 366, 367, + 86, 368, 362, 370, 86, 365, 371, 86, 86, 86, + 166, 86, 86, 374, 86, 86, 373, 172, 86, 86, + 377, 381, 375, 372, 379, 369, 382, 86, 86, 385, + 376, 86, 86, 383, 378, 86, 384, 86, 380, 86, + 86, 86, 86, 391, 86, 392, 86, 393, 394, 86, + 390, 86, 386, 387, 86, 389, 86, 395, 388, 396, + 86, 398, 86, 86, 399, 86, 86, 397, 86, 402, + 400, 405, 403, 86, 86, 407, 86, 86, 408, 409, - 71, 71, 405, 71, 71, 410, 397, 407, 401, 71, - 409, 71, 411, 71, 71, 71, 403, 71, 404, 438, - 71, 406, 421, 419, 408, 412, 71, 71, 71, 71, - 422, 425, 423, 420, 430, 413, 142, 71, 414, 431, - 71, 71, 426, 415, 416, 417, 418, 71, 424, 427, - 71, 71, 428, 429, 432, 71, 71, 71, 433, 71, - 440, 434, 435, 71, 436, 437, 71, 71, 439, 71, - 71, 442, 441, 71, 71, 447, 71, 465, 453, 443, - 71, 71, 71, 448, 71, 449, 71, 71, 444, 446, - 445, 452, 454, 451, 450, 71, 71, 71, 71, 457, + 401, 86, 404, 86, 86, 86, 86, 410, 406, 86, + 412, 413, 414, 86, 86, 86, 86, 419, 86, 86, + 86, 86, 416, 420, 411, 422, 86, 86, 418, 86, + 86, 425, 86, 415, 86, 417, 86, 421, 430, 427, + 86, 86, 86, 431, 86, 423, 429, 424, 500, 86, + 426, 439, 86, 432, 86, 445, 428, 86, 86, 441, + 86, 442, 86, 443, 448, 449, 433, 440, 86, 434, + 86, 86, 86, 446, 435, 436, 437, 438, 450, 444, + 447, 456, 86, 451, 86, 452, 455, 453, 86, 86, + 454, 458, 86, 86, 459, 86, 460, 457, 86, 86, - 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, - 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, - 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 733, 486, 480, 71, 472, 71, 473, - 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, - 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, - 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, - 71, 71, 502, 71, 489, 503, 490, 491, 492, 505, - 508, 493, 507, 71, 71, 71, 71, 506, 513, 514, - 509, 511, 516, 510, 71, 517, 71, 71, 71, 71, + 86, 86, 86, 462, 467, 86, 86, 468, 461, 469, + 86, 463, 86, 86, 485, 86, 473, 466, 470, 464, + 472, 465, 86, 86, 86, 471, 479, 86, 474, 475, + 477, 86, 478, 86, 480, 476, 86, 486, 487, 86, + 86, 488, 484, 86, 86, 86, 86, 481, 489, 86, + 482, 86, 483, 86, 490, 86, 504, 166, 491, 501, + 499, 502, 86, 503, 515, 506, 492, 86, 493, 516, + 494, 86, 505, 86, 517, 86, 86, 514, 519, 518, + 522, 86, 86, 495, 86, 86, 496, 171, 497, 86, + 498, 86, 524, 507, 508, 520, 521, 86, 86, 86, - 515, 521, 71, 512, 71, 71, 71, 71, 71, 519, - 524, 525, 526, 520, 71, 71, 518, 71, 71, 531, - 523, 71, 71, 536, 528, 533, 527, 522, 71, 71, - 71, 529, 530, 534, 71, 71, 71, 532, 71, 71, - 71, 546, 71, 547, 71, 538, 71, 537, 535, 542, - 539, 545, 541, 540, 71, 548, 71, 549, 71, 553, - 543, 151, 544, 71, 551, 550, 71, 71, 71, 556, - 552, 71, 554, 71, 555, 558, 71, 71, 559, 71, - 561, 562, 71, 71, 557, 71, 563, 71, 71, 71, - 560, 71, 568, 566, 567, 71, 71, 71, 564, 71, + 86, 523, 528, 509, 526, 510, 511, 512, 86, 531, + 513, 525, 529, 527, 86, 533, 86, 86, 536, 86, + 530, 534, 86, 537, 86, 86, 86, 541, 86, 86, + 86, 86, 535, 86, 532, 544, 86, 539, 86, 538, + 540, 545, 546, 86, 86, 543, 86, 86, 551, 86, + 556, 547, 548, 542, 549, 86, 86, 550, 86, 553, + 554, 86, 558, 86, 86, 86, 552, 86, 86, 86, + 565, 86, 86, 566, 562, 555, 567, 557, 568, 559, + 569, 561, 560, 86, 86, 563, 86, 564, 572, 571, + 86, 86, 570, 573, 86, 86, 574, 86, 576, 578, - 569, 71, 71, 71, 574, 71, 565, 570, 578, 575, - 71, 573, 71, 577, 576, 572, 571, 71, 580, 71, - 71, 582, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 579, 584, 592, 585, 587, 594, 71, 593, 71, - 71, 581, 71, 583, 591, 588, 586, 589, 590, 71, - 71, 596, 71, 71, 595, 599, 71, 602, 597, 71, - 603, 598, 604, 71, 605, 71, 71, 600, 71, 71, - 71, 601, 71, 608, 71, 71, 611, 71, 71, 607, - 612, 71, 614, 71, 71, 71, 645, 610, 606, 613, - 71, 609, 71, 71, 615, 71, 617, 628, 71, 631, + 86, 86, 86, 86, 581, 582, 579, 86, 577, 86, + 86, 86, 86, 583, 575, 580, 86, 586, 86, 588, + 86, 587, 584, 86, 86, 86, 86, 589, 86, 594, + 86, 585, 590, 86, 595, 86, 597, 593, 598, 86, + 596, 86, 592, 591, 86, 600, 86, 602, 86, 86, + 86, 86, 86, 86, 86, 612, 86, 604, 86, 605, + 599, 86, 614, 601, 607, 86, 86, 613, 86, 603, + 611, 606, 608, 610, 609, 86, 86, 86, 86, 616, + 615, 619, 86, 622, 617, 86, 623, 618, 624, 86, + 625, 620, 86, 86, 86, 86, 86, 621, 628, 86, - 616, 71, 618, 71, 626, 627, 71, 619, 632, 620, - 71, 629, 633, 71, 630, 621, 71, 622, 635, 71, - 623, 624, 641, 639, 71, 634, 71, 625, 638, 71, - 71, 71, 636, 642, 640, 637, 71, 647, 71, 71, - 71, 71, 71, 71, 71, 71, 644, 643, 653, 71, - 71, 649, 71, 648, 654, 650, 646, 71, 657, 71, - 651, 661, 660, 655, 652, 656, 658, 151, 71, 71, - 71, 659, 71, 71, 662, 71, 71, 71, 71, 667, - 669, 671, 71, 71, 664, 670, 672, 665, 663, 668, - 674, 666, 71, 71, 71, 673, 71, 676, 71, 71, + 86, 86, 86, 86, 631, 86, 627, 632, 634, 86, + 633, 86, 86, 86, 626, 648, 629, 635, 86, 86, + 630, 86, 637, 86, 636, 86, 638, 651, 647, 86, + 86, 639, 646, 640, 652, 650, 654, 649, 653, 641, + 86, 642, 86, 86, 643, 644, 656, 655, 659, 657, + 86, 645, 658, 662, 86, 86, 661, 86, 86, 660, + 86, 665, 86, 667, 86, 86, 86, 86, 86, 86, + 86, 86, 166, 86, 673, 166, 679, 664, 663, 668, + 669, 670, 674, 666, 671, 676, 86, 86, 680, 672, + 675, 86, 677, 86, 86, 86, 678, 86, 86, 86, - 71, 71, 71, 680, 71, 675, 679, 688, 71, 71, - 685, 681, 677, 690, 678, 686, 71, 71, 682, 71, - 684, 683, 687, 689, 71, 691, 71, 692, 71, 693, - 71, 71, 71, 695, 71, 71, 696, 71, 694, 71, - 699, 71, 698, 71, 700, 71, 704, 71, 71, 703, - 71, 697, 71, 707, 705, 71, 71, 709, 71, 71, - 71, 710, 702, 71, 701, 706, 71, 71, 716, 712, - 71, 71, 711, 71, 713, 708, 718, 715, 714, 71, - 71, 71, 149, 723, 719, 720, 722, 721, 717, 71, - 724, 71, 71, 71, 725, 71, 726, 71, 728, 71, + 86, 86, 86, 681, 687, 86, 692, 689, 682, 690, + 86, 684, 86, 685, 683, 688, 86, 686, 691, 86, + 694, 86, 693, 86, 696, 86, 86, 86, 695, 86, + 86, 86, 699, 700, 708, 86, 705, 697, 701, 86, + 698, 706, 86, 709, 86, 702, 86, 704, 703, 710, + 711, 86, 707, 712, 86, 86, 713, 86, 86, 86, + 715, 86, 86, 716, 86, 86, 86, 714, 719, 718, + 86, 720, 86, 724, 86, 86, 723, 86, 717, 86, + 727, 725, 86, 86, 729, 86, 86, 721, 730, 722, + 86, 86, 726, 86, 86, 736, 732, 86, 86, 731, - 729, 71, 71, 71, 730, 71, 737, 71, 735, 71, - 71, 731, 71, 71, 743, 734, 147, 71, 727, 732, - 71, 738, 741, 71, 71, 736, 740, 71, 739, 742, - 744, 71, 746, 747, 745, 71, 71, 71, 71, 748, - 752, 750, 749, 71, 754, 783, 71, 71, 753, 71, - 71, 71, 751, 71, 755, 757, 71, 764, 756, 71, - 758, 71, 759, 71, 761, 71, 765, 71, 71, 760, - 71, 769, 767, 71, 766, 71, 773, 71, 762, 763, - 770, 71, 71, 71, 771, 71, 776, 774, 768, 71, - 775, 777, 71, 71, 778, 71, 71, 780, 782, 772, + 86, 733, 728, 739, 735, 734, 86, 86, 86, 737, + 743, 740, 86, 738, 741, 745, 86, 744, 86, 86, + 86, 749, 742, 746, 86, 748, 86, 86, 86, 750, + 86, 86, 86, 86, 753, 86, 755, 757, 86, 86, + 164, 86, 751, 754, 758, 747, 752, 86, 763, 760, + 761, 86, 756, 86, 86, 86, 765, 764, 759, 762, + 766, 767, 86, 86, 86, 768, 86, 86, 772, 769, + 774, 86, 773, 770, 86, 86, 86, 86, 775, 777, + 771, 86, 776, 86, 778, 86, 86, 784, 86, 86, + 785, 781, 86, 86, 779, 86, 780, 786, 86, 789, - 71, 784, 779, 71, 71, 788, 71, 71, 781, 71, - 789, 71, 71, 71, 71, 71, 790, 797, 785, 71, - 71, 795, 786, 71, 787, 71, 71, 791, 792, 71, - 71, 71, 793, 798, 794, 796, 71, 799, 71, 71, - 802, 71, 71, 71, 811, 800, 804, 809, 801, 803, - 71, 71, 71, 71, 71, 812, 805, 806, 807, 71, - 808, 71, 71, 71, 810, 814, 816, 815, 71, 71, - 71, 813, 71, 821, 823, 817, 819, 820, 71, 822, - 71, 818, 71, 824, 71, 71, 71, 151, 71, 826, - 71, 71, 831, 827, 832, 829, 71, 71, 825, 828, + 787, 86, 86, 86, 86, 782, 783, 791, 790, 788, + 793, 801, 86, 796, 794, 86, 86, 795, 797, 86, + 86, 798, 792, 86, 86, 800, 802, 86, 799, 86, + 86, 86, 808, 803, 86, 86, 86, 86, 86, 809, + 86, 86, 86, 810, 86, 804, 86, 805, 86, 806, + 86, 807, 811, 817, 813, 812, 815, 816, 819, 86, + 814, 86, 818, 86, 86, 86, 86, 822, 86, 820, + 86, 86, 86, 831, 86, 86, 829, 86, 86, 832, + 821, 824, 823, 86, 825, 86, 826, 827, 830, 828, + 836, 86, 835, 86, 834, 86, 833, 86, 86, 86, - 830, 833, 71, 71, 834, 835, 71, 839, 71, 71, - 840, 842, 71, 71, 71, 845, 71, 836, 841, 71, - 837, 71, 843, 847, 838, 71, 71, 71, 851, 71, - 71, 71, 71, 844, 71, 71, 846, 848, 852, 853, - 71, 71, 71, 71, 71, 850, 883, 854, 71, 865, - 866, 849, 71, 869, 71, 856, 855, 71, 863, 864, - 71, 71, 857, 71, 867, 868, 858, 71, 870, 859, - 71, 871, 872, 71, 875, 71, 860, 861, 71, 862, - 71, 71, 146, 874, 873, 71, 876, 877, 71, 878, - 898, 887, 879, 885, 884, 888, 71, 880, 71, 71, + 86, 86, 86, 841, 840, 843, 842, 837, 839, 86, + 86, 847, 838, 86, 844, 86, 86, 846, 166, 845, + 86, 86, 86, 851, 849, 852, 86, 848, 850, 86, + 853, 86, 86, 86, 854, 86, 856, 86, 855, 859, + 86, 86, 860, 862, 86, 857, 863, 86, 865, 86, + 861, 867, 864, 858, 86, 866, 86, 86, 871, 86, + 86, 868, 86, 86, 86, 86, 86, 872, 86, 873, + 86, 86, 886, 86, 86, 870, 162, 888, 874, 86, + 885, 869, 86, 883, 86, 876, 86, 884, 875, 86, + 887, 86, 889, 891, 877, 86, 890, 892, 878, 895, - 890, 71, 71, 881, 882, 889, 886, 71, 892, 71, - 71, 71, 71, 894, 893, 900, 891, 895, 896, 71, - 71, 899, 897, 71, 71, 71, 71, 904, 71, 71, - 71, 71, 903, 71, 907, 911, 71, 913, 71, 924, - 71, 71, 906, 901, 902, 905, 71, 908, 909, 914, - 917, 912, 71, 910, 915, 71, 71, 916, 918, 71, - 71, 920, 921, 71, 71, 919, 71, 71, 71, 922, - 925, 71, 71, 71, 923, 71, 926, 71, 928, 931, - 71, 71, 929, 71, 71, 934, 71, 71, 71, 933, - 927, 71, 932, 71, 71, 936, 930, 937, 939, 71, + 893, 879, 86, 86, 894, 86, 86, 903, 880, 881, + 86, 882, 86, 896, 897, 86, 898, 908, 907, 899, + 161, 905, 909, 86, 900, 86, 86, 904, 86, 911, + 901, 902, 910, 86, 913, 906, 86, 86, 86, 915, + 86, 912, 914, 916, 917, 86, 86, 86, 918, 86, + 86, 86, 919, 921, 86, 86, 925, 86, 86, 924, + 86, 86, 928, 86, 86, 932, 920, 934, 86, 159, + 922, 86, 926, 923, 927, 930, 929, 86, 935, 157, + 86, 938, 933, 936, 86, 937, 931, 86, 939, 86, + 86, 941, 942, 86, 86, 940, 86, 86, 86, 943, - 71, 71, 71, 935, 941, 942, 71, 71, 940, 71, - 949, 938, 947, 71, 71, 945, 943, 948, 71, 944, - 946, 71, 71, 71, 71, 71, 954, 956, 950, 71, - 952, 957, 71, 951, 955, 71, 71, 71, 71, 71, - 959, 71, 71, 71, 71, 958, 953, 967, 71, 970, - 960, 965, 71, 71, 71, 71, 961, 962, 71, 964, - 963, 971, 968, 71, 966, 972, 71, 969, 71, 975, - 71, 71, 974, 973, 71, 977, 978, 71, 71, 71, - 976, 71, 71, 980, 71, 71, 982, 987, 979, 988, - 990, 981, 71, 71, 992, 71, 71, 71, 71, 983, + 945, 86, 946, 86, 944, 86, 947, 86, 86, 86, + 952, 86, 949, 86, 955, 950, 86, 86, 86, 86, + 86, 86, 953, 948, 954, 86, 86, 957, 951, 86, + 958, 960, 962, 86, 961, 86, 956, 86, 963, 86, + 86, 968, 86, 959, 86, 970, 969, 86, 966, 964, + 86, 86, 86, 967, 86, 86, 977, 971, 975, 86, + 973, 86, 965, 978, 86, 86, 976, 86, 86, 972, + 980, 86, 86, 86, 86, 86, 974, 86, 86, 988, + 979, 86, 981, 986, 991, 86, 86, 982, 983, 86, + 86, 86, 985, 984, 992, 989, 987, 990, 993, 86, - 71, 985, 993, 984, 986, 991, 989, 71, 71, 71, - 996, 994, 71, 71, 998, 1001, 995, 71, 997, 71, - 1000, 71, 71, 1005, 71, 1002, 1007, 71, 71, 71, - 1004, 1003, 71, 999, 1010, 151, 71, 1009, 71, 71, - 1013, 71, 1012, 71, 1006, 71, 1008, 71, 1016, 71, - 71, 1011, 71, 71, 71, 1028, 71, 1031, 71, 144, - 1029, 71, 71, 1014, 1019, 1015, 1017, 71, 71, 1054, - 71, 1033, 1020, 1018, 1021, 71, 1030, 71, 1022, 71, - 1023, 71, 1036, 1034, 1024, 71, 1025, 1032, 71, 71, - 71, 1026, 1038, 1035, 1041, 1037, 1027, 1039, 71, 1040, + 994, 86, 86, 995, 86, 996, 86, 998, 999, 86, + 86, 1000, 86, 1001, 86, 997, 86, 86, 1003, 1008, + 86, 1009, 1011, 86, 1013, 86, 1002, 86, 86, 86, + 86, 86, 1004, 1014, 1010, 1006, 1005, 1007, 86, 86, + 86, 86, 1015, 1012, 86, 1022, 1019, 86, 1016, 86, + 1021, 86, 1017, 86, 86, 86, 1023, 1026, 1028, 86, + 1018, 86, 86, 86, 86, 1020, 86, 1027, 1025, 1030, + 1031, 86, 1024, 86, 86, 1032, 166, 1033, 1034, 1029, + 86, 1035, 86, 86, 86, 86, 86, 1038, 1036, 86, + 1051, 1037, 1039, 86, 1050, 1053, 86, 86, 1041, 86, - 71, 1046, 71, 1043, 71, 1044, 1042, 1047, 71, 71, - 71, 1052, 71, 1053, 71, 1045, 1051, 71, 1048, 71, - 1055, 1056, 71, 1050, 71, 71, 71, 71, 71, 1049, - 71, 1068, 71, 1058, 1057, 71, 1067, 1072, 71, 71, - 1059, 71, 1060, 1073, 1069, 71, 1071, 1061, 1093, 1062, - 1070, 71, 71, 1074, 71, 1063, 1077, 71, 1078, 1079, - 1064, 1065, 71, 71, 71, 71, 1080, 1066, 1083, 71, - 1075, 1076, 142, 71, 71, 71, 71, 1082, 1084, 71, - 1089, 1081, 71, 71, 1086, 1087, 71, 71, 1085, 71, - 71, 1090, 1092, 71, 71, 1088, 71, 71, 71, 71, + 86, 86, 86, 86, 1055, 1042, 174, 1040, 1058, 86, + 1043, 86, 1052, 1060, 1044, 1057, 1045, 1056, 1061, 86, + 1046, 86, 1047, 1059, 1054, 86, 86, 1048, 86, 1063, + 86, 86, 1049, 86, 86, 1062, 1066, 86, 1068, 1069, + 1077, 1064, 86, 1065, 1070, 86, 1067, 1074, 1073, 1075, + 86, 1072, 1078, 86, 1071, 86, 1076, 86, 86, 86, + 86, 86, 86, 86, 86, 1090, 86, 1093, 86, 172, + 86, 86, 1079, 1094, 1089, 86, 1092, 1091, 1080, 1081, + 86, 1082, 86, 1095, 1096, 86, 1083, 86, 1084, 1100, + 1097, 1099, 86, 86, 1085, 86, 1102, 86, 1103, 1086, - 1099, 71, 1091, 1094, 71, 1096, 1097, 1098, 1101, 71, - 1095, 71, 71, 1100, 71, 1102, 71, 71, 1103, 71, - 71, 1104, 1109, 71, 1110, 1106, 71, 71, 1105, 1112, - 1107, 1108, 1111, 71, 1113, 1114, 1115, 71, 1117, 71, - 1121, 71, 1116, 1118, 71, 71, 1119, 71, 71, 1120, - 71, 71, 71, 1122, 1128, 71, 1130, 71, 71, 71, - 71, 71, 71, 1132, 1124, 1126, 1127, 1123, 1125, 71, - 71, 71, 1131, 1133, 1134, 1129, 71, 71, 71, 71, - 71, 1136, 1135, 1137, 1139, 1138, 71, 71, 71, 1141, - 71, 1140, 1145, 1142, 1144, 71, 1143, 71, 71, 1146, + 1087, 1098, 86, 1106, 86, 86, 1088, 1101, 86, 86, + 1105, 86, 1104, 1107, 1109, 86, 1112, 86, 86, 86, + 1110, 86, 86, 1108, 1115, 86, 1113, 86, 86, 86, + 86, 1111, 86, 86, 86, 86, 1122, 1114, 1120, 1117, + 1119, 1116, 1121, 86, 1124, 86, 86, 1118, 1126, 1123, + 86, 1125, 86, 86, 86, 171, 86, 86, 86, 1132, + 1129, 1133, 1134, 1127, 1128, 86, 1136, 1135, 1131, 1137, + 1130, 86, 86, 1140, 86, 86, 86, 1142, 1141, 86, + 1143, 86, 86, 86, 1138, 1144, 86, 86, 1139, 86, + 86, 1151, 1153, 86, 1146, 1145, 86, 86, 86, 1147, - 71, 71, 71, 71, 1147, 1149, 71, 1150, 1148, 71, - 1156, 71, 1154, 1157, 71, 1151, 71, 71, 71, 71, - 1152, 71, 1158, 1153, 1155, 71, 1159, 1161, 1164, 71, - 1160, 71, 1162, 71, 71, 71, 1165, 71, 1163, 1166, - 71, 71, 71, 71, 1167, 1171, 1168, 1169, 71, 71, - 71, 1172, 71, 1177, 1173, 1178, 71, 71, 71, 71, - 1170, 71, 1175, 1180, 1181, 71, 71, 1174, 71, 71, - 1185, 1176, 1179, 71, 71, 1182, 71, 71, 71, 71, - 1183, 1184, 1187, 1191, 71, 71, 1186, 71, 71, 71, - 1197, 71, 71, 1192, 1195, 1188, 3070, 1190, 1199, 1194, + 1149, 1155, 86, 86, 1148, 1150, 1157, 86, 1154, 1152, + 86, 86, 86, 86, 86, 1159, 1156, 1160, 1162, 1163, + 86, 86, 86, 86, 86, 1168, 86, 1161, 1158, 1165, + 1167, 86, 1164, 1169, 86, 1170, 86, 1166, 86, 1172, + 1171, 86, 1173, 86, 86, 86, 86, 1179, 1177, 1180, + 86, 86, 86, 86, 166, 86, 1174, 1181, 86, 1178, + 86, 1184, 1175, 1182, 1176, 1183, 1187, 86, 1185, 86, + 86, 1186, 86, 86, 1188, 1189, 86, 86, 86, 1190, + 86, 86, 1191, 1194, 1195, 86, 86, 86, 86, 86, + 86, 164, 1200, 86, 1201, 1192, 1196, 1193, 86, 1198, - 1193, 1196, 1189, 1200, 71, 71, 71, 71, 1198, 71, - 1201, 71, 1203, 1202, 71, 71, 71, 71, 71, 71, - 1204, 1206, 71, 1212, 71, 1209, 71, 71, 1205, 71, - 1207, 71, 71, 71, 1210, 1337, 1208, 1216, 71, 1222, - 1213, 1211, 71, 71, 1215, 1214, 71, 1218, 1223, 1224, - 71, 71, 1217, 1225, 71, 71, 1219, 1227, 1220, 71, - 71, 1221, 71, 71, 71, 1226, 71, 1231, 71, 1230, - 71, 1233, 1236, 71, 1228, 1234, 71, 1229, 71, 71, - 71, 1237, 1232, 1238, 1240, 71, 71, 1235, 71, 1241, - 1239, 71, 71, 71, 71, 1242, 71, 71, 71, 1245, + 86, 86, 1204, 86, 1197, 1202, 1203, 1199, 1205, 86, + 86, 1208, 86, 86, 86, 86, 86, 166, 1212, 1214, + 86, 86, 1207, 1206, 86, 1210, 86, 86, 86, 86, + 1209, 86, 1211, 1213, 1219, 1216, 1220, 1215, 1218, 1217, + 1221, 86, 86, 1223, 1224, 1228, 86, 1225, 1222, 86, + 86, 86, 86, 1226, 86, 86, 86, 1227, 86, 1230, + 1229, 86, 86, 1236, 86, 1233, 86, 86, 86, 86, + 1231, 86, 86, 1246, 86, 1232, 1234, 1240, 86, 1242, + 1237, 1235, 86, 1239, 86, 1238, 86, 1247, 1243, 1241, + 1244, 1248, 86, 1245, 86, 86, 86, 1252, 1250, 1251, - 71, 1248, 71, 1243, 1246, 71, 1244, 71, 1247, 1249, - 71, 1253, 71, 71, 1258, 1250, 71, 1254, 1252, 1251, - 71, 1257, 71, 71, 1260, 71, 1264, 1255, 1262, 71, - 1256, 1265, 71, 1261, 71, 71, 1259, 1263, 71, 1269, - 71, 3070, 71, 71, 1279, 71, 1278, 1268, 1266, 1267, - 71, 1277, 71, 1276, 1281, 1270, 71, 71, 1271, 1272, - 1282, 1280, 1283, 1273, 71, 71, 71, 71, 1285, 1274, - 1284, 71, 1287, 1275, 71, 71, 71, 1288, 71, 1289, - 71, 71, 71, 71, 1297, 1286, 1294, 1292, 71, 71, - 71, 1298, 1338, 1299, 1291, 1290, 1295, 71, 71, 71, + 86, 1249, 86, 86, 1253, 86, 86, 1255, 1257, 1254, + 1260, 86, 86, 86, 1256, 86, 1258, 1261, 1262, 86, + 86, 86, 86, 86, 1264, 1259, 1265, 86, 86, 1266, + 86, 86, 86, 86, 86, 1263, 1267, 86, 1268, 1272, + 1270, 86, 86, 1273, 86, 1271, 1269, 86, 1277, 86, + 1282, 86, 1274, 86, 86, 1275, 86, 1279, 1281, 1276, + 86, 86, 1278, 86, 1280, 86, 1283, 1284, 1285, 86, + 1287, 1289, 86, 1288, 1286, 86, 1290, 86, 86, 1294, + 86, 1303, 1291, 1292, 1307, 1293, 86, 86, 1301, 1302, + 86, 1295, 86, 1304, 1296, 1297, 86, 86, 86, 1298, - 1293, 1296, 1300, 71, 1306, 71, 1307, 1308, 1301, 71, - 71, 71, 71, 1302, 1310, 1303, 1309, 1304, 71, 1305, - 71, 71, 71, 1314, 71, 71, 1311, 1313, 1315, 71, - 1312, 1316, 71, 1320, 71, 1319, 71, 1318, 71, 1324, - 71, 1325, 1317, 71, 1321, 71, 1326, 71, 71, 71, - 1323, 71, 1328, 1322, 71, 71, 71, 1327, 1330, 71, - 1333, 71, 1329, 1334, 71, 1336, 71, 71, 71, 1331, - 1341, 1335, 1339, 1342, 71, 1344, 71, 71, 1340, 1332, - 71, 1345, 1346, 71, 71, 1349, 71, 71, 1343, 71, - 71, 71, 1351, 71, 71, 71, 1353, 1355, 71, 71, + 86, 1305, 86, 1308, 86, 1299, 1306, 1309, 86, 1300, + 86, 1310, 86, 1312, 86, 86, 86, 1313, 86, 1314, + 86, 1311, 86, 1319, 1315, 1317, 1316, 1322, 86, 1331, + 1323, 162, 86, 86, 1320, 1318, 86, 1324, 86, 86, + 1321, 86, 1325, 1332, 1333, 86, 86, 86, 1326, 1335, + 86, 86, 1334, 1327, 86, 1328, 86, 1329, 1339, 1330, + 1338, 86, 1336, 1340, 86, 1341, 1343, 86, 1337, 86, + 86, 86, 86, 1349, 86, 1350, 1342, 86, 1345, 86, + 86, 1344, 86, 86, 86, 1351, 1348, 1353, 86, 1346, + 1347, 86, 86, 1355, 1352, 86, 86, 1354, 1359, 86, - 3070, 1357, 1354, 71, 1347, 1348, 71, 1350, 1359, 71, - 1352, 71, 1356, 71, 1358, 71, 1361, 1362, 1363, 71, - 1360, 71, 1365, 71, 1364, 71, 71, 71, 1366, 1371, - 1372, 1368, 71, 1367, 1369, 71, 71, 1373, 1374, 1370, - 71, 71, 71, 71, 71, 1378, 71, 71, 71, 1375, - 1382, 1383, 71, 1377, 71, 1385, 71, 71, 1384, 71, - 1376, 71, 71, 1379, 71, 71, 71, 1380, 1386, 71, - 1392, 1381, 71, 71, 1387, 71, 1389, 1397, 71, 1388, - 1390, 71, 1393, 1391, 71, 71, 1396, 1401, 71, 1399, - 71, 1395, 1402, 71, 71, 71, 71, 1394, 1398, 1404, + 1358, 1361, 86, 86, 86, 1362, 1356, 1360, 86, 1364, + 86, 1363, 1367, 86, 86, 1365, 1357, 1369, 86, 1366, + 86, 1370, 86, 86, 86, 1374, 86, 1371, 86, 86, + 86, 86, 1376, 86, 1368, 86, 1378, 1380, 86, 86, + 86, 86, 1379, 1382, 1372, 1373, 1384, 86, 1375, 86, + 1377, 86, 86, 86, 1383, 86, 1381, 1386, 1388, 1387, + 1389, 1385, 86, 1390, 86, 86, 86, 1392, 86, 1391, + 1396, 1393, 1397, 1394, 86, 86, 86, 1399, 86, 1398, + 86, 1395, 86, 86, 1400, 1403, 86, 86, 166, 86, + 86, 1408, 1409, 1402, 86, 1411, 86, 86, 86, 1401, - 71, 71, 1405, 1412, 1400, 71, 1403, 71, 1414, 1406, - 1410, 1407, 71, 1411, 71, 1408, 1415, 71, 1409, 1417, - 71, 1413, 71, 71, 1418, 71, 71, 71, 1416, 71, - 71, 1422, 71, 71, 1424, 71, 71, 1429, 71, 1419, - 71, 1421, 1430, 71, 71, 1423, 1426, 71, 1420, 1433, - 1425, 1427, 71, 1428, 71, 71, 1434, 71, 1431, 71, - 71, 71, 1432, 71, 71, 1440, 1435, 1437, 1436, 1442, - 1441, 71, 1438, 71, 1445, 71, 71, 71, 1439, 1443, - 1444, 71, 1447, 1450, 71, 1451, 1449, 71, 1452, 71, - 1446, 71, 71, 1453, 1454, 71, 71, 71, 1448, 71, + 1410, 86, 86, 1405, 86, 86, 86, 1404, 86, 1406, + 1412, 86, 1418, 1407, 86, 86, 1413, 1415, 1416, 86, + 86, 86, 1414, 86, 1417, 1422, 1423, 86, 1419, 86, + 1427, 86, 86, 1421, 1425, 1428, 86, 86, 86, 1420, + 1426, 1429, 1424, 86, 86, 1432, 1430, 1433, 86, 1436, + 1438, 1431, 1437, 1434, 86, 1440, 1435, 86, 86, 86, + 1443, 86, 1441, 86, 86, 1444, 86, 86, 1439, 86, + 1442, 86, 1448, 86, 86, 86, 1445, 86, 1450, 86, + 1455, 86, 1447, 86, 86, 1456, 1459, 1449, 1452, 1446, + 86, 1451, 86, 1453, 86, 1454, 86, 86, 86, 86, - 1455, 71, 1457, 71, 71, 1461, 1456, 71, 71, 71, - 1460, 71, 71, 1458, 71, 1467, 1459, 1463, 1469, 1464, - 1468, 71, 1465, 1470, 71, 71, 1472, 1462, 71, 71, - 1466, 71, 1471, 71, 71, 71, 71, 1480, 1476, 71, - 1475, 71, 71, 71, 1481, 1483, 71, 1473, 1474, 71, - 1486, 71, 1485, 1477, 1479, 1478, 71, 71, 71, 71, - 71, 1484, 71, 71, 71, 71, 1494, 1482, 1487, 71, - 1497, 71, 1495, 71, 1491, 1496, 1488, 1489, 1490, 1493, - 1498, 71, 71, 1492, 71, 71, 1501, 1499, 1500, 71, - 71, 71, 1504, 71, 1502, 71, 1505, 71, 71, 71, + 86, 1457, 1460, 1458, 86, 1466, 86, 86, 86, 1471, + 1462, 1467, 1463, 1461, 1464, 86, 1470, 1465, 86, 86, + 1468, 86, 86, 86, 1469, 1473, 1477, 86, 1476, 1478, + 86, 1479, 86, 1472, 86, 86, 1483, 1474, 86, 1480, + 1481, 86, 86, 1475, 86, 86, 1482, 86, 86, 1488, + 86, 86, 1484, 86, 1487, 86, 86, 1494, 1485, 1490, + 1486, 1491, 1495, 86, 86, 86, 1496, 1492, 86, 1499, + 1489, 1497, 86, 86, 1493, 86, 86, 86, 86, 86, + 1507, 86, 1503, 1506, 1498, 1502, 86, 86, 86, 1510, + 86, 86, 1500, 1508, 1501, 86, 1512, 1504, 1513, 1505, - 1508, 1514, 1503, 1512, 71, 71, 1509, 71, 71, 1506, - 1513, 1507, 1516, 71, 1511, 71, 71, 1510, 1517, 1518, - 1519, 71, 71, 1515, 71, 1523, 1524, 71, 71, 71, - 71, 71, 71, 1528, 71, 1527, 1529, 1531, 71, 71, - 1521, 1520, 71, 71, 1522, 71, 1525, 71, 1532, 71, - 1526, 1533, 71, 71, 1530, 1534, 1536, 71, 1538, 1535, - 71, 1539, 71, 71, 71, 71, 71, 1537, 71, 1543, - 71, 1545, 1540, 71, 71, 1546, 71, 1550, 71, 1544, - 71, 71, 1542, 1541, 71, 71, 1547, 71, 1548, 1553, - 1555, 71, 1551, 71, 71, 1558, 1554, 1556, 1552, 1549, + 86, 86, 86, 86, 86, 86, 1511, 1509, 86, 86, + 1514, 86, 1521, 86, 1526, 86, 1522, 1518, 86, 1515, + 1516, 1517, 1527, 1520, 1524, 86, 1519, 1523, 1525, 86, + 86, 86, 86, 86, 86, 1531, 86, 86, 86, 1532, + 1529, 86, 1535, 1528, 1541, 1530, 1539, 86, 86, 1536, + 86, 86, 1533, 1540, 1534, 86, 86, 1538, 1537, 86, + 86, 1544, 86, 1545, 1546, 86, 1542, 86, 1543, 1550, + 1551, 86, 86, 86, 86, 86, 86, 1555, 1556, 1554, + 86, 86, 1547, 1548, 86, 1558, 86, 1549, 86, 86, + 1552, 1559, 1560, 86, 1553, 86, 86, 1561, 1563, 86, - 71, 71, 71, 71, 71, 1557, 1561, 71, 1563, 1559, - 71, 1560, 1564, 71, 71, 71, 71, 1571, 71, 71, - 1562, 1566, 1565, 1572, 71, 71, 71, 71, 1569, 1567, - 1568, 1576, 71, 71, 1575, 1578, 1580, 1579, 71, 1573, - 1570, 71, 71, 1582, 1574, 1584, 71, 1577, 71, 71, - 71, 71, 71, 71, 1589, 1583, 1586, 1587, 1581, 71, - 1590, 71, 71, 71, 71, 71, 1601, 1585, 1594, 71, - 1595, 71, 71, 71, 71, 1588, 1591, 1598, 1593, 1592, - 1599, 71, 71, 1596, 1597, 1603, 1602, 71, 71, 1609, - 71, 71, 1600, 1606, 1608, 71, 1605, 71, 1607, 71, + 1557, 86, 1566, 86, 86, 1562, 86, 86, 1565, 86, + 86, 1570, 86, 1572, 86, 86, 1564, 86, 1567, 1573, + 86, 1577, 86, 1571, 86, 1568, 1569, 86, 86, 1580, + 1575, 86, 1574, 1582, 86, 1583, 1578, 86, 86, 1585, + 86, 86, 1576, 1581, 86, 1579, 86, 166, 1588, 86, + 1591, 86, 1587, 86, 1590, 86, 86, 1584, 86, 86, + 86, 1599, 1586, 1592, 161, 1589, 86, 86, 86, 1594, + 86, 1593, 1597, 1600, 86, 1595, 1596, 86, 86, 1603, + 1606, 86, 1604, 86, 1598, 1608, 1601, 1602, 1607, 1610, + 86, 86, 1612, 86, 1605, 86, 86, 86, 86, 86, - 1611, 1604, 1610, 71, 1612, 1613, 71, 71, 1616, 71, - 71, 71, 1614, 71, 1620, 1621, 1619, 71, 1623, 1615, - 71, 71, 1622, 71, 71, 71, 71, 71, 1617, 71, - 1618, 1625, 1626, 71, 1627, 71, 71, 71, 1635, 71, - 71, 71, 71, 1628, 71, 71, 1624, 1629, 71, 71, - 1631, 1632, 1633, 71, 1634, 1630, 1640, 71, 1642, 1636, - 71, 1643, 1637, 1638, 71, 71, 1639, 71, 1641, 71, - 71, 71, 71, 71, 71, 71, 71, 1658, 71, 1644, - 1648, 1645, 1650, 1651, 71, 1649, 1652, 1647, 1653, 1646, - 71, 1654, 71, 1657, 1659, 71, 1655, 71, 1656, 71, + 86, 1609, 86, 1614, 1611, 1615, 86, 1617, 86, 1618, + 86, 86, 86, 1619, 1622, 1613, 86, 1623, 86, 86, + 1620, 1629, 1616, 86, 1624, 1621, 1626, 86, 86, 1627, + 86, 86, 86, 1630, 1631, 159, 1637, 1634, 1625, 1633, + 86, 1628, 86, 1636, 1635, 86, 86, 86, 1639, 1641, + 1632, 1638, 86, 1640, 86, 86, 86, 86, 1643, 1642, + 86, 86, 1648, 1649, 1647, 86, 1651, 86, 86, 86, + 1650, 86, 86, 86, 1644, 86, 1645, 86, 1653, 86, + 1646, 1654, 86, 86, 1655, 86, 86, 1664, 86, 1656, + 1652, 86, 86, 86, 86, 1657, 1663, 1658, 86, 1659, - 1662, 71, 1661, 71, 1660, 1663, 71, 71, 1666, 71, - 71, 71, 1664, 71, 1667, 71, 71, 1675, 71, 1670, - 1665, 1676, 71, 71, 1674, 1672, 1668, 1669, 1673, 71, - 71, 71, 1671, 71, 71, 71, 71, 71, 1677, 71, - 1685, 71, 1678, 71, 1689, 1680, 1682, 71, 1679, 1681, - 1687, 71, 1688, 1686, 1684, 71, 1693, 71, 1690, 71, - 1683, 71, 71, 1697, 1691, 71, 71, 1692, 1698, 71, - 71, 3070, 71, 1705, 71, 1694, 1699, 1702, 1703, 1696, - 1695, 1700, 71, 1706, 71, 71, 1708, 1701, 1704, 71, - 1707, 71, 71, 71, 1712, 71, 71, 1709, 1716, 1714, + 1660, 86, 86, 1661, 1662, 1669, 86, 86, 1665, 86, + 86, 86, 1667, 86, 1666, 1671, 86, 1672, 86, 86, + 86, 86, 1668, 86, 1673, 1674, 1675, 1670, 1677, 1680, + 1679, 1676, 1681, 1678, 86, 86, 86, 1682, 86, 1686, + 1687, 86, 1688, 86, 86, 86, 1692, 86, 1691, 1683, + 1689, 86, 86, 86, 1684, 86, 86, 86, 1695, 86, + 1685, 1696, 1690, 86, 1693, 86, 86, 86, 1699, 1705, + 86, 1694, 86, 1698, 1697, 1701, 1703, 1704, 1702, 86, + 86, 86, 1700, 86, 86, 1706, 86, 86, 86, 1714, + 1708, 86, 1707, 86, 1709, 86, 1711, 1710, 86, 1718, - 71, 71, 1710, 71, 71, 1715, 71, 1711, 1713, 1717, - 71, 71, 71, 71, 71, 71, 71, 1743, 1720, 71, - 1721, 71, 1718, 1726, 71, 1719, 1722, 1723, 1728, 1724, - 1725, 1729, 1730, 71, 71, 1731, 71, 71, 71, 71, - 1736, 1732, 71, 71, 71, 1727, 71, 1740, 71, 71, - 71, 1733, 1735, 71, 1742, 71, 71, 1734, 1744, 1738, - 1745, 71, 1739, 71, 1737, 1746, 1749, 71, 71, 1741, - 71, 71, 1753, 71, 71, 71, 71, 71, 1748, 71, - 71, 71, 1751, 1755, 1747, 71, 1760, 1750, 1754, 1756, - 1752, 1757, 71, 1761, 1758, 71, 1764, 71, 71, 71, + 1717, 86, 1716, 86, 86, 1713, 1722, 1715, 86, 86, + 86, 1712, 1720, 1719, 1726, 1721, 86, 86, 86, 1727, + 86, 157, 1723, 1731, 1728, 86, 1732, 1725, 86, 1724, + 1735, 1729, 86, 1734, 86, 86, 86, 86, 1737, 1730, + 1736, 86, 86, 1733, 86, 86, 1741, 1738, 1739, 86, + 86, 1740, 86, 1743, 1745, 1742, 86, 1746, 86, 1744, + 86, 86, 86, 86, 1747, 86, 1749, 86, 86, 86, + 1750, 1755, 86, 1757, 1758, 1748, 1751, 86, 1752, 86, + 86, 1753, 1754, 1760, 86, 86, 86, 86, 1765, 1761, + 1759, 86, 86, 1756, 86, 86, 86, 1769, 86, 86, - 1759, 1763, 1765, 1762, 1766, 71, 71, 1768, 1769, 1770, - 71, 1767, 71, 71, 71, 1772, 71, 71, 71, 1773, - 71, 71, 71, 71, 1771, 71, 71, 1778, 71, 71, - 1782, 71, 1779, 1790, 71, 1783, 71, 1774, 1776, 1777, - 1775, 1780, 71, 1781, 71, 71, 1791, 1786, 1784, 1788, - 71, 1785, 71, 71, 1787, 71, 71, 1792, 1796, 71, - 1789, 71, 71, 1799, 1800, 71, 1801, 71, 71, 1793, - 71, 1794, 71, 1795, 3070, 1797, 1808, 1798, 71, 1802, - 1803, 71, 71, 1804, 1807, 71, 1809, 71, 1811, 1805, - 1810, 1806, 71, 1813, 71, 71, 1812, 71, 71, 71, + 1764, 86, 86, 1762, 1772, 1763, 1771, 86, 1767, 86, + 1775, 86, 1773, 1766, 1768, 1770, 1774, 166, 86, 1779, + 86, 86, 86, 86, 1783, 86, 86, 86, 86, 1777, + 86, 86, 1776, 1778, 1781, 1785, 86, 86, 1786, 1790, + 1780, 1784, 1782, 1787, 86, 86, 86, 1794, 86, 1788, + 1793, 86, 1796, 86, 1795, 1792, 1789, 86, 1791, 86, + 1799, 86, 1797, 1800, 86, 86, 86, 1802, 1798, 86, + 86, 86, 1803, 1801, 86, 86, 86, 86, 86, 86, + 1808, 86, 86, 1812, 86, 86, 1809, 3110, 86, 1818, + 1804, 1810, 1806, 1805, 1807, 86, 1811, 1813, 86, 1821, - 1815, 1816, 71, 71, 1817, 1818, 71, 1825, 3070, 71, - 71, 71, 71, 71, 1830, 71, 71, 71, 1823, 1827, - 1814, 1819, 1820, 1821, 1828, 71, 1824, 1831, 1822, 1829, - 1826, 1833, 1832, 71, 71, 71, 71, 71, 1837, 71, - 71, 1839, 1834, 71, 71, 71, 1842, 1843, 71, 71, - 1845, 71, 71, 71, 1835, 71, 1836, 71, 71, 1850, - 1851, 71, 1838, 1840, 1847, 71, 1841, 1848, 71, 1844, - 71, 71, 71, 71, 1849, 71, 1857, 1846, 1852, 1854, - 1855, 71, 71, 1853, 1861, 71, 71, 1860, 1864, 1865, - 71, 1866, 71, 1863, 71, 71, 1856, 1859, 71, 1858, + 1816, 86, 1815, 1820, 86, 86, 1822, 1817, 86, 86, + 1814, 86, 86, 1819, 1826, 86, 1829, 1830, 86, 86, + 1823, 1831, 86, 86, 1824, 1827, 86, 1828, 86, 1825, + 1833, 86, 86, 1834, 1837, 86, 86, 1839, 86, 1832, + 1838, 1840, 1841, 86, 1835, 1843, 1842, 1836, 86, 86, + 86, 86, 86, 1845, 1846, 86, 86, 1847, 86, 1849, + 86, 1856, 86, 1848, 86, 86, 86, 86, 1861, 1864, + 86, 86, 1854, 86, 1844, 86, 1850, 1851, 1852, 1858, + 1855, 1862, 1857, 1853, 1859, 86, 1863, 1860, 86, 86, + 86, 1868, 86, 86, 86, 1870, 86, 1865, 86, 86, - 71, 71, 71, 1867, 71, 1862, 71, 71, 71, 1868, - 1872, 71, 1875, 1876, 1871, 71, 1877, 71, 71, 71, - 71, 1869, 71, 1870, 1873, 71, 71, 1885, 71, 1880, - 71, 1884, 1879, 71, 1874, 1878, 71, 71, 1882, 3070, - 71, 1889, 1883, 71, 71, 1881, 1890, 71, 1887, 1886, - 1892, 71, 1891, 71, 71, 1888, 71, 1893, 1894, 1896, - 71, 71, 71, 1895, 71, 1897, 1900, 1903, 1898, 71, - 71, 1906, 71, 71, 1905, 1899, 71, 1907, 71, 71, - 71, 71, 1901, 1908, 1902, 1904, 71, 1909, 1913, 71, - 71, 1910, 1914, 71, 1915, 1920, 1911, 1917, 1918, 1916, + 1873, 1874, 86, 86, 1876, 86, 86, 86, 86, 1866, + 86, 1867, 86, 1882, 86, 86, 1871, 1878, 1881, 1869, + 1872, 1879, 86, 1875, 86, 1884, 86, 86, 1880, 1885, + 86, 1877, 86, 1888, 86, 1886, 1883, 86, 1892, 86, + 86, 86, 1891, 1895, 86, 1896, 1898, 1894, 86, 86, + 1890, 86, 86, 1887, 1897, 86, 1889, 1899, 86, 1893, + 86, 86, 86, 1903, 86, 86, 1906, 86, 1907, 1908, + 86, 86, 1900, 1902, 86, 86, 86, 1901, 86, 86, + 1904, 1915, 1911, 1916, 86, 1910, 86, 1909, 86, 86, + 1905, 1913, 86, 86, 3110, 86, 1920, 86, 1912, 1921, - 71, 1912, 71, 71, 71, 1922, 71, 71, 71, 71, - 1927, 71, 1919, 1924, 1921, 71, 71, 1929, 1923, 1925, - 71, 71, 71, 71, 71, 71, 71, 1935, 1934, 1933, - 1936, 71, 1930, 1926, 1931, 1937, 71, 1928, 71, 1939, - 1932, 71, 71, 71, 71, 71, 3070, 1940, 1941, 71, - 1942, 1943, 71, 71, 1944, 1945, 71, 1947, 1938, 71, - 71, 71, 1951, 71, 71, 1946, 1950, 1955, 71, 71, - 71, 1948, 1949, 1952, 1953, 1954, 71, 71, 71, 71, - 71, 1962, 1960, 71, 71, 71, 1957, 71, 1961, 71, - 71, 71, 1967, 71, 1964, 71, 1956, 1958, 3070, 1959, + 86, 1914, 86, 1918, 1922, 1917, 1923, 86, 1919, 86, + 86, 1925, 86, 1924, 1927, 86, 1926, 1931, 1928, 86, + 86, 1930, 1934, 86, 1929, 86, 1937, 86, 86, 86, + 1936, 86, 1938, 1939, 86, 86, 86, 86, 1935, 1932, + 1933, 1944, 86, 1940, 1945, 86, 1941, 1946, 1948, 1949, + 86, 1942, 1947, 86, 86, 86, 1943, 86, 86, 1953, + 86, 86, 1951, 1950, 86, 86, 86, 86, 1955, 86, + 1952, 1958, 1954, 1956, 1960, 1957, 166, 86, 86, 1962, + 86, 1961, 86, 86, 86, 86, 1966, 1990, 1959, 1965, + 1963, 86, 1967, 1968, 86, 1969, 86, 1971, 86, 86, - 71, 71, 1963, 1968, 1966, 71, 1971, 1965, 71, 1970, - 1972, 1969, 71, 71, 1977, 71, 1974, 1975, 71, 71, - 1973, 1978, 71, 71, 71, 1983, 1976, 71, 71, 1985, - 71, 71, 1986, 1987, 71, 1979, 71, 1982, 1980, 1981, - 71, 71, 71, 1989, 1984, 71, 1991, 71, 1988, 71, - 71, 1992, 71, 71, 71, 71, 71, 71, 71, 2003, - 71, 1990, 1994, 1999, 1995, 1996, 71, 2002, 1993, 1998, - 71, 71, 71, 2006, 2004, 1997, 2000, 2007, 2001, 71, - 71, 71, 2010, 71, 2009, 71, 2005, 71, 2012, 71, - 71, 2008, 2013, 71, 71, 71, 2014, 2018, 71, 2011, + 86, 1964, 86, 86, 1972, 1970, 1974, 1973, 1975, 86, + 86, 86, 86, 1977, 1976, 86, 1979, 86, 1983, 86, + 86, 86, 86, 1978, 1980, 1982, 86, 1985, 86, 1981, + 1984, 1986, 1987, 86, 86, 86, 86, 86, 1994, 86, + 1992, 86, 1993, 1989, 86, 86, 86, 86, 1988, 86, + 1996, 86, 86, 1999, 1991, 86, 2003, 1995, 2002, 86, + 1998, 86, 86, 1997, 2000, 2001, 86, 2007, 2004, 2009, + 86, 86, 2006, 2005, 2010, 86, 86, 2015, 86, 2008, + 86, 86, 86, 86, 86, 2017, 86, 86, 2018, 2019, + 86, 2011, 2012, 2013, 2014, 2020, 86, 86, 2016, 86, - 2020, 71, 2016, 2022, 71, 71, 2017, 2015, 71, 2019, - 71, 71, 2025, 2024, 71, 2021, 2026, 71, 71, 2027, - 2030, 71, 71, 71, 71, 71, 71, 2031, 2036, 71, - 71, 2023, 2033, 71, 2032, 2028, 71, 2037, 2029, 2035, - 2040, 71, 2034, 71, 71, 2038, 71, 71, 2041, 2042, - 2046, 71, 2044, 2039, 71, 71, 2048, 71, 2049, 2043, - 2045, 71, 71, 71, 71, 71, 2047, 2051, 71, 71, - 2050, 2055, 2057, 2053, 71, 71, 2054, 2058, 71, 71, - 2060, 2052, 71, 2059, 2062, 71, 2056, 2061, 71, 71, - 2063, 2067, 71, 71, 71, 2064, 71, 71, 2066, 71, + 2024, 86, 86, 2021, 2022, 86, 86, 86, 86, 86, + 2025, 86, 86, 86, 3110, 86, 86, 2023, 2027, 2028, + 2029, 2032, 86, 2026, 2031, 2035, 2036, 86, 86, 2037, + 86, 2030, 2034, 2039, 2033, 86, 2038, 86, 86, 2043, + 2040, 86, 2041, 2042, 86, 86, 2044, 86, 2046, 2045, + 86, 86, 86, 86, 2047, 2051, 86, 86, 2053, 2049, + 86, 2055, 86, 2050, 86, 2048, 86, 86, 2058, 2057, + 86, 2052, 2059, 86, 2054, 2060, 86, 86, 2063, 86, + 86, 86, 2064, 2056, 86, 86, 2069, 86, 2066, 86, + 2070, 2061, 2065, 86, 86, 2073, 2062, 86, 86, 2068, - 71, 71, 71, 71, 71, 71, 2076, 2077, 2065, 71, - 2071, 2068, 2069, 2070, 2072, 2073, 2074, 71, 2078, 71, - 2075, 71, 71, 2079, 71, 2081, 71, 71, 2082, 2087, - 71, 71, 2089, 71, 71, 2086, 2080, 2083, 2091, 2084, - 2088, 71, 71, 71, 3070, 2094, 2090, 2092, 71, 2085, - 2095, 71, 2096, 2097, 2093, 71, 2099, 71, 71, 71, - 2098, 2101, 71, 2100, 71, 2102, 71, 2106, 71, 71, - 2107, 71, 2110, 2109, 2115, 2105, 71, 71, 71, 2103, - 71, 2111, 2114, 2108, 71, 2112, 2113, 71, 71, 71, - 2104, 71, 2116, 71, 71, 2118, 71, 71, 71, 2120, + 2067, 86, 2074, 86, 86, 2075, 2079, 86, 2071, 86, + 86, 2081, 2077, 86, 2072, 86, 2076, 86, 2082, 86, + 2078, 2080, 2083, 86, 2084, 86, 86, 2088, 86, 86, + 86, 2090, 2086, 2085, 86, 2087, 2091, 86, 2092, 2095, + 2093, 86, 2094, 86, 86, 86, 2096, 2089, 2100, 86, + 86, 86, 86, 86, 2099, 86, 2097, 86, 86, 86, + 86, 86, 86, 3110, 2098, 2106, 2104, 2109, 2101, 2102, + 2107, 2103, 2105, 86, 86, 86, 86, 86, 2110, 2108, + 86, 2112, 2114, 2111, 2115, 2118, 86, 2120, 86, 86, + 86, 166, 2116, 3110, 2113, 2119, 2122, 86, 2117, 2121, - 71, 71, 71, 2123, 71, 71, 2129, 71, 71, 2117, - 2127, 71, 2122, 71, 71, 2130, 2125, 71, 2119, 2121, - 2124, 2126, 2132, 2131, 71, 71, 2128, 71, 71, 71, - 2136, 2139, 71, 2135, 71, 71, 2134, 2140, 71, 2133, - 2137, 71, 71, 71, 71, 71, 2138, 2150, 71, 71, - 71, 2155, 71, 2141, 2142, 2151, 2147, 71, 71, 71, - 71, 2143, 2145, 2146, 2149, 2144, 2148, 2156, 71, 71, - 2152, 71, 2153, 2154, 2157, 71, 71, 71, 2160, 2166, - 2161, 2163, 71, 2162, 2158, 71, 71, 71, 71, 2159, - 2164, 2165, 2169, 71, 2170, 71, 71, 2172, 71, 71, + 86, 86, 86, 2130, 2124, 2128, 2125, 86, 2123, 86, + 2129, 86, 2131, 2127, 86, 2126, 86, 2132, 86, 2135, + 86, 86, 2136, 86, 2133, 2140, 86, 2134, 86, 2141, + 86, 86, 2139, 2144, 86, 86, 2137, 86, 2146, 86, + 2145, 86, 2142, 2147, 86, 2149, 2148, 2138, 86, 2143, + 86, 86, 2150, 86, 2151, 86, 86, 2152, 86, 86, + 2154, 86, 86, 86, 2157, 86, 86, 2163, 86, 86, + 2161, 86, 86, 2156, 86, 2153, 2164, 2159, 86, 2155, + 2158, 86, 86, 2160, 2165, 86, 2166, 2170, 2162, 86, + 2168, 2173, 86, 2169, 86, 86, 86, 2167, 2171, 86, - 2168, 2174, 71, 71, 71, 2177, 71, 2167, 71, 2176, - 2178, 71, 71, 71, 71, 2171, 71, 2173, 2175, 71, - 71, 2180, 2179, 3070, 2183, 2184, 71, 2181, 2186, 71, - 71, 71, 71, 2182, 2189, 2185, 2188, 71, 2187, 71, - 2190, 2192, 71, 71, 2196, 71, 71, 71, 71, 71, - 71, 2193, 2194, 2200, 71, 2191, 2201, 71, 71, 2203, - 71, 71, 2195, 2199, 2206, 71, 2197, 71, 71, 2202, - 2198, 71, 71, 2204, 2208, 2205, 71, 71, 2213, 71, - 71, 2207, 2209, 71, 71, 2215, 71, 71, 2214, 2210, - 2211, 71, 2219, 71, 2216, 71, 71, 2223, 2220, 71, + 86, 86, 2174, 86, 86, 86, 86, 2172, 2184, 86, + 86, 86, 86, 2186, 2175, 2176, 2185, 2181, 2183, 86, + 2179, 86, 2177, 86, 2178, 2180, 2188, 2182, 86, 2190, + 2191, 86, 2187, 86, 2189, 2192, 86, 86, 2193, 86, + 2195, 86, 2198, 86, 86, 86, 2194, 86, 86, 2199, + 2196, 86, 2200, 2197, 2204, 86, 86, 2201, 2205, 86, + 2203, 2207, 86, 2209, 86, 2202, 86, 86, 2212, 86, + 2206, 86, 2211, 86, 2208, 2213, 86, 86, 86, 86, + 86, 2210, 2215, 86, 2218, 2214, 2219, 86, 2221, 86, + 86, 2216, 86, 86, 2225, 2224, 2223, 2217, 86, 2220, - 2221, 2225, 2212, 71, 71, 71, 71, 2224, 2227, 2217, - 2228, 2218, 2222, 71, 2230, 2232, 71, 71, 2233, 2229, - 71, 71, 2234, 71, 71, 2226, 71, 2231, 71, 2237, - 71, 71, 71, 2238, 71, 3070, 2236, 2239, 2243, 2240, - 2241, 2235, 2244, 71, 71, 71, 2242, 2245, 71, 71, - 71, 2248, 71, 2249, 2246, 71, 2250, 71, 2247, 71, - 2256, 71, 71, 71, 2251, 2252, 71, 2253, 2254, 71, - 71, 71, 2258, 2255, 71, 71, 71, 2257, 2259, 2263, - 2264, 71, 2262, 2267, 71, 2260, 2261, 71, 2268, 2269, - 71, 71, 71, 2266, 2265, 2270, 2271, 2272, 2273, 2274, + 86, 2222, 2227, 86, 86, 2231, 86, 86, 86, 2226, + 86, 86, 86, 2236, 86, 2229, 2235, 2228, 86, 86, + 86, 2241, 86, 2230, 2238, 2234, 86, 2232, 86, 86, + 2237, 2233, 86, 2239, 86, 2240, 2243, 86, 86, 2248, + 86, 86, 2244, 2250, 86, 86, 2242, 2251, 86, 2249, + 2245, 86, 2246, 2255, 86, 86, 2256, 2254, 86, 86, + 86, 86, 2252, 2247, 2253, 2260, 2262, 86, 2258, 2265, + 86, 86, 2263, 86, 86, 86, 2267, 86, 2268, 2257, + 2259, 86, 86, 86, 2261, 2264, 2269, 86, 86, 86, + 2271, 2272, 2266, 86, 86, 2278, 2273, 2277, 2274, 2270, - 71, 71, 71, 71, 71, 71, 2276, 71, 71, 71, - 2280, 2281, 71, 71, 2277, 2275, 71, 71, 2283, 71, - 2284, 2278, 2285, 2286, 71, 71, 2282, 2279, 71, 71, - 2287, 71, 2291, 71, 71, 2290, 71, 2288, 71, 71, - 71, 2293, 71, 71, 71, 71, 2297, 2292, 71, 2289, - 2299, 2300, 71, 2309, 2296, 71, 71, 71, 2294, 2295, - 71, 2301, 2302, 2298, 2303, 2304, 2305, 71, 71, 71, - 2307, 71, 71, 2314, 2310, 2306, 71, 2312, 71, 71, - 71, 71, 2311, 2308, 2313, 2316, 71, 71, 2318, 71, - 2315, 71, 71, 71, 71, 71, 2317, 71, 2322, 2319, + 2279, 86, 2275, 2276, 86, 86, 86, 86, 2280, 86, + 2283, 2284, 86, 2285, 166, 86, 2282, 86, 86, 2287, + 86, 2286, 2292, 86, 86, 2281, 86, 86, 86, 86, + 86, 86, 2300, 86, 2290, 2288, 2291, 2289, 2294, 2293, + 2295, 86, 2296, 2298, 2299, 2297, 86, 2303, 86, 86, + 2304, 2305, 86, 2301, 86, 86, 2308, 2306, 2302, 2309, + 2307, 86, 86, 2310, 86, 86, 86, 2312, 86, 86, + 86, 86, 2316, 2317, 86, 2311, 86, 86, 86, 86, + 2313, 2319, 2320, 2314, 86, 2322, 86, 2321, 2318, 2315, + 86, 86, 86, 2327, 86, 2323, 2326, 2325, 86, 86, - 2324, 71, 2325, 2326, 71, 2320, 2327, 71, 2321, 2328, - 71, 2329, 71, 71, 71, 71, 71, 2330, 2332, 2337, - 2323, 2335, 71, 71, 71, 71, 71, 71, 2334, 2340, - 71, 71, 2336, 2333, 2331, 71, 71, 2344, 2341, 2345, - 71, 2339, 2338, 71, 71, 71, 2342, 71, 2346, 2343, - 71, 71, 2349, 2350, 2348, 71, 71, 71, 71, 3070, - 71, 71, 2347, 2354, 2351, 2356, 2357, 71, 2353, 2352, - 2358, 71, 2359, 71, 2360, 71, 71, 2355, 71, 2362, - 71, 2364, 71, 2363, 71, 2365, 71, 71, 2361, 71, - 2370, 71, 71, 71, 2366, 2372, 71, 71, 2367, 2373, + 2324, 86, 86, 86, 2329, 86, 86, 86, 2336, 2333, + 86, 2328, 2335, 86, 86, 86, 2337, 2332, 86, 86, + 86, 2330, 2331, 2342, 2341, 86, 2334, 2339, 2343, 86, + 86, 2338, 2344, 86, 2340, 86, 2346, 86, 2351, 2345, + 2347, 86, 2349, 86, 86, 86, 86, 2350, 2353, 86, + 2355, 86, 86, 86, 86, 2354, 86, 2352, 86, 2348, + 86, 86, 86, 2359, 86, 2361, 2362, 2357, 2363, 86, + 2356, 2365, 2358, 2364, 86, 86, 2366, 86, 2367, 86, + 2360, 86, 86, 86, 2369, 2374, 2368, 2372, 86, 86, + 86, 86, 2373, 86, 2371, 2377, 86, 86, 86, 86, - 71, 71, 71, 71, 2374, 2369, 71, 2368, 2376, 2375, - 71, 2371, 71, 71, 2377, 2379, 2382, 71, 71, 71, - 71, 71, 2383, 2378, 71, 71, 2380, 71, 2389, 71, - 71, 71, 2381, 2386, 2390, 71, 71, 71, 2388, 2385, - 2396, 71, 71, 71, 2384, 2387, 2391, 2393, 2398, 71, - 2392, 71, 2394, 2406, 2399, 2397, 2400, 71, 71, 2395, - 2401, 71, 71, 2402, 71, 2403, 71, 2404, 71, 2405, - 71, 71, 71, 71, 71, 71, 71, 2407, 2414, 71, - 71, 2412, 71, 2418, 2419, 71, 71, 71, 2408, 2409, - 2422, 71, 2410, 2411, 2413, 2415, 2421, 2416, 2417, 71, + 2370, 2378, 86, 2381, 2383, 2376, 86, 2375, 2382, 86, + 86, 86, 2379, 86, 86, 2380, 2386, 86, 86, 2385, + 2387, 86, 86, 86, 2384, 86, 2391, 2388, 2389, 2390, + 2393, 2394, 86, 2395, 86, 2396, 86, 2397, 86, 86, + 86, 2399, 2392, 86, 2401, 2400, 86, 2402, 86, 86, + 86, 2398, 86, 2407, 86, 86, 2409, 86, 2410, 86, + 2403, 2404, 86, 86, 86, 86, 86, 86, 2406, 86, + 2405, 2413, 2416, 2411, 2408, 2412, 86, 2414, 2419, 86, + 86, 86, 86, 86, 86, 86, 2415, 86, 166, 2417, + 2420, 86, 2427, 86, 86, 86, 2418, 2423, 86, 2425, - 71, 2424, 71, 71, 71, 71, 71, 71, 2420, 2423, - 71, 2427, 71, 2433, 71, 2434, 71, 2425, 71, 71, - 2428, 2426, 2435, 71, 2429, 2430, 2431, 71, 71, 71, - 71, 2432, 2439, 71, 2437, 71, 2436, 2443, 2442, 2444, - 71, 71, 2438, 2445, 2446, 71, 71, 71, 71, 2440, - 2441, 71, 71, 71, 71, 71, 2448, 71, 2452, 71, - 2457, 71, 2456, 2450, 71, 2447, 71, 2449, 2460, 71, - 71, 71, 2451, 71, 2453, 2455, 2454, 2461, 71, 2458, - 2464, 71, 2463, 71, 2459, 2462, 2466, 71, 71, 2469, - 71, 71, 71, 71, 2473, 71, 2465, 2472, 71, 2475, + 2426, 86, 2422, 2428, 86, 2431, 2421, 2424, 2429, 86, + 2430, 86, 2434, 3110, 86, 86, 2436, 86, 2435, 2437, + 2432, 2438, 86, 86, 2433, 2439, 86, 86, 2440, 86, + 2441, 86, 2442, 2443, 2444, 86, 2445, 86, 86, 86, + 86, 86, 86, 86, 2452, 86, 86, 86, 2450, 86, + 2456, 2457, 86, 86, 86, 2446, 2447, 2460, 86, 2448, + 2449, 2451, 2459, 2453, 2454, 2455, 86, 2458, 2462, 86, + 86, 86, 2463, 86, 86, 2461, 86, 86, 2465, 86, + 2471, 86, 2472, 86, 2473, 86, 2474, 86, 2464, 2466, + 86, 2467, 86, 2469, 2468, 86, 86, 86, 2470, 86, - 71, 2471, 71, 2470, 71, 71, 71, 2467, 2468, 2476, - 71, 2477, 2480, 71, 71, 2481, 71, 2474, 2479, 2483, - 71, 2478, 71, 71, 71, 71, 2488, 71, 71, 2484, - 2490, 71, 2482, 2486, 2487, 2485, 71, 71, 2489, 71, - 71, 2491, 2492, 71, 71, 2494, 71, 2496, 71, 71, - 71, 2495, 2498, 2493, 2500, 2497, 71, 2503, 71, 2504, - 71, 2501, 71, 2499, 71, 2502, 71, 71, 2509, 2505, - 71, 2506, 71, 2511, 71, 2510, 71, 71, 71, 2514, - 71, 71, 2507, 2513, 2518, 2508, 2515, 71, 2517, 71, - 2516, 2512, 2519, 71, 71, 71, 2523, 2520, 71, 2521, + 3110, 2478, 86, 86, 86, 2475, 2482, 2481, 86, 2477, + 2476, 2483, 86, 86, 86, 2484, 86, 2479, 86, 2480, + 2485, 86, 2486, 2487, 86, 86, 86, 2488, 2489, 2491, + 86, 86, 2496, 86, 2495, 86, 86, 86, 2490, 2499, + 86, 2500, 86, 86, 86, 2492, 2494, 2502, 86, 2493, + 2497, 2503, 86, 86, 2498, 86, 86, 2501, 86, 2505, + 86, 2504, 2508, 86, 2511, 2512, 86, 2510, 2509, 86, + 2514, 86, 86, 2506, 86, 2507, 86, 2515, 86, 2519, + 86, 86, 2520, 2516, 86, 2522, 86, 86, 2513, 86, + 2518, 3110, 2517, 86, 86, 86, 2527, 86, 2529, 86, - 2522, 71, 71, 71, 71, 2524, 71, 71, 2525, 3070, - 2530, 2531, 71, 2526, 2529, 2528, 71, 71, 71, 71, - 71, 2527, 2535, 2532, 2533, 2534, 71, 71, 71, 71, - 71, 71, 2537, 2538, 71, 71, 71, 2543, 2536, 71, - 2541, 71, 71, 2540, 2542, 71, 71, 2539, 2544, 2548, - 71, 2550, 71, 2545, 2552, 71, 71, 71, 71, 71, - 71, 2546, 3070, 2556, 2547, 2549, 71, 2551, 2557, 71, - 2559, 2560, 2554, 2561, 2563, 2553, 71, 71, 2555, 71, - 2562, 71, 71, 71, 71, 2558, 71, 2564, 71, 71, - 2567, 71, 2565, 71, 2570, 2572, 71, 2566, 2573, 71, + 2523, 86, 2524, 2525, 2526, 86, 2521, 86, 2528, 86, + 2530, 86, 2531, 86, 2533, 2532, 86, 86, 86, 2534, + 86, 86, 2539, 86, 86, 2536, 2537, 86, 2540, 2542, + 86, 2545, 2535, 2543, 86, 2538, 2541, 2544, 166, 86, + 86, 2549, 86, 86, 2546, 2547, 86, 86, 2550, 86, + 2551, 2553, 2554, 86, 2555, 86, 86, 2552, 2548, 2557, + 86, 86, 2559, 3110, 2558, 86, 86, 2560, 86, 2556, + 2561, 2562, 2563, 86, 86, 86, 86, 2564, 86, 2565, + 86, 86, 86, 2570, 2566, 86, 2571, 2572, 2568, 86, + 86, 2567, 86, 86, 86, 2574, 2575, 2573, 86, 86, - 2574, 71, 2568, 71, 2569, 71, 71, 2575, 71, 2571, - 2576, 2577, 71, 2579, 2581, 71, 71, 71, 2584, 2582, - 71, 2585, 71, 2586, 71, 71, 2578, 2580, 2587, 71, - 71, 71, 2591, 71, 71, 2592, 2583, 2593, 71, 71, - 2595, 71, 2588, 71, 71, 71, 2599, 71, 2589, 2600, - 71, 2590, 71, 71, 2594, 2602, 2596, 2601, 71, 2598, - 2603, 71, 2597, 71, 71, 71, 2608, 2611, 71, 71, - 2604, 2607, 71, 2610, 71, 71, 71, 71, 2605, 2612, - 2614, 71, 71, 2606, 2613, 2616, 71, 71, 71, 2609, - 71, 2619, 2623, 71, 71, 71, 71, 71, 2617, 2618, + 86, 86, 2569, 2577, 2578, 86, 2576, 86, 86, 86, + 2583, 86, 86, 86, 2580, 86, 2581, 2582, 2579, 86, + 2584, 2588, 86, 86, 2585, 86, 86, 86, 2591, 2592, + 86, 86, 2586, 86, 2587, 2590, 86, 2596, 2589, 2599, + 2594, 2604, 2593, 2597, 86, 86, 2600, 2595, 2601, 2602, + 86, 86, 86, 86, 86, 86, 2598, 86, 86, 2603, + 86, 2607, 2605, 86, 2610, 86, 2612, 86, 2606, 2613, + 86, 86, 2608, 2614, 86, 2609, 86, 86, 2617, 86, + 2615, 86, 2616, 2611, 86, 86, 2619, 2621, 86, 2624, + 86, 2618, 2622, 86, 2625, 86, 2620, 2626, 86, 86, - 2615, 71, 2639, 71, 2622, 2620, 2625, 71, 2621, 2624, - 2627, 2630, 71, 2628, 2626, 2629, 2631, 71, 2633, 71, - 2632, 71, 2634, 71, 2635, 71, 2636, 71, 2637, 71, - 71, 71, 2640, 71, 71, 2645, 71, 71, 71, 71, - 2642, 2646, 2648, 71, 71, 2638, 2649, 2650, 71, 2651, - 2652, 71, 71, 2643, 2644, 2647, 2641, 71, 71, 71, - 71, 2653, 2657, 71, 2658, 71, 2654, 2655, 71, 71, - 2661, 71, 71, 71, 2659, 2662, 71, 2656, 2666, 71, - 2664, 71, 2663, 2660, 71, 2665, 2667, 71, 2668, 71, - 71, 71, 71, 2669, 71, 71, 71, 2670, 71, 2672, + 86, 86, 2627, 2628, 86, 2623, 2631, 86, 86, 2632, + 2633, 86, 2635, 86, 86, 86, 86, 2639, 2629, 2634, + 86, 2630, 86, 86, 2640, 86, 2641, 2636, 86, 2642, + 2638, 86, 86, 2637, 2643, 86, 2648, 86, 2647, 86, + 86, 86, 86, 2644, 2650, 2651, 86, 86, 2645, 2653, + 86, 2646, 2652, 2654, 86, 86, 86, 2656, 86, 86, + 86, 2659, 2649, 86, 2655, 2663, 86, 86, 86, 86, + 2665, 86, 2657, 2658, 2662, 86, 2660, 2664, 2666, 2661, + 2670, 86, 2667, 2669, 86, 2671, 86, 86, 2668, 2679, + 2672, 2673, 86, 86, 2674, 86, 2675, 86, 2676, 86, - 2677, 71, 2671, 2673, 2675, 71, 71, 71, 2678, 71, - 2680, 71, 2681, 2932, 2676, 71, 2682, 2674, 2683, 2679, - 71, 2691, 71, 2685, 71, 2684, 2686, 2687, 71, 2688, - 71, 2689, 71, 2690, 71, 71, 2694, 71, 71, 71, - 2693, 71, 71, 2695, 2696, 2697, 71, 71, 71, 71, - 2702, 71, 2700, 2692, 3070, 2698, 71, 2704, 71, 71, - 71, 71, 2699, 2705, 71, 2706, 2701, 71, 2708, 2707, - 2709, 71, 2712, 71, 2703, 71, 2710, 71, 71, 71, - 71, 71, 2715, 71, 71, 2722, 71, 71, 2713, 2716, - 2714, 2711, 2719, 71, 71, 2717, 2724, 71, 2720, 71, + 2677, 2680, 86, 2678, 86, 86, 86, 2685, 86, 86, + 86, 86, 2686, 2682, 2688, 86, 86, 2689, 2690, 86, + 86, 2691, 2692, 86, 86, 2683, 2684, 86, 2681, 2687, + 86, 2697, 86, 2693, 86, 86, 2694, 86, 2696, 2695, + 2701, 2698, 86, 2699, 86, 2702, 86, 86, 86, 86, + 2700, 2705, 86, 2704, 2706, 2703, 2707, 86, 2708, 86, + 86, 86, 2709, 86, 86, 86, 86, 2717, 86, 86, + 2712, 86, 86, 86, 2715, 2713, 2720, 2710, 2711, 86, + 2718, 86, 2722, 86, 2721, 86, 2716, 3110, 86, 2714, + 2719, 2732, 2723, 2724, 86, 2725, 2727, 86, 2726, 2728, - 2718, 2725, 71, 2727, 71, 71, 2723, 71, 71, 2721, - 71, 71, 2732, 71, 71, 2726, 2731, 71, 71, 2733, - 71, 2728, 71, 2729, 2730, 71, 2736, 2742, 2737, 2739, - 71, 71, 2741, 2734, 2744, 71, 2735, 2738, 71, 71, - 2740, 2745, 71, 2747, 71, 71, 71, 71, 2752, 71, - 71, 71, 3070, 2743, 71, 2750, 2749, 2756, 71, 2746, - 71, 71, 2754, 2748, 2757, 71, 2758, 2751, 2753, 71, - 2761, 2755, 2759, 2762, 71, 71, 71, 2764, 2763, 71, - 71, 71, 71, 71, 2769, 2766, 2767, 71, 71, 2760, - 71, 2772, 71, 71, 71, 71, 71, 2765, 2777, 71, + 86, 2729, 86, 86, 86, 2731, 86, 2734, 86, 2733, + 86, 2735, 2730, 86, 86, 2736, 2737, 86, 86, 86, + 86, 2742, 86, 2740, 2744, 86, 2738, 86, 86, 86, + 86, 86, 2745, 86, 2746, 2739, 2747, 2741, 86, 2748, + 86, 2749, 2752, 86, 86, 2743, 86, 86, 2750, 86, + 2751, 2755, 86, 2753, 86, 2756, 86, 2754, 86, 2762, + 86, 2760, 2759, 86, 86, 2757, 2764, 86, 2765, 86, + 86, 2758, 2767, 86, 86, 86, 86, 2772, 86, 86, + 86, 2771, 2763, 86, 2761, 2766, 2768, 86, 2776, 86, + 2769, 2770, 86, 2779, 86, 86, 86, 86, 2781, 2773, - 2773, 2768, 71, 71, 2770, 2771, 2780, 71, 2776, 2781, - 71, 2774, 2779, 71, 71, 2778, 2783, 71, 2782, 2775, - 2785, 71, 2784, 2786, 71, 2787, 71, 71, 2789, 71, - 71, 71, 2788, 2790, 71, 71, 2794, 2795, 71, 71, - 71, 71, 2799, 71, 2800, 71, 71, 71, 71, 2801, - 2798, 2837, 2791, 2792, 2796, 71, 2793, 71, 71, 2797, - 2805, 71, 2804, 2806, 71, 71, 2802, 2803, 2809, 71, - 2807, 71, 2808, 71, 71, 2812, 71, 71, 2813, 2811, - 71, 2810, 71, 71, 71, 71, 71, 2816, 71, 71, - 2818, 71, 71, 2819, 71, 2817, 71, 2814, 71, 71, + 86, 2782, 2775, 2774, 86, 86, 2777, 86, 2778, 2784, + 86, 2785, 86, 2787, 86, 2780, 2789, 86, 2792, 2783, + 2786, 86, 86, 86, 86, 86, 2790, 2791, 2796, 86, + 86, 2798, 86, 2788, 2794, 2797, 86, 2799, 2801, 86, + 2793, 2802, 86, 2795, 86, 86, 2804, 86, 2803, 86, + 86, 86, 86, 2809, 2806, 2807, 2800, 2805, 86, 86, + 2812, 86, 86, 86, 86, 86, 2808, 86, 2810, 2811, + 2813, 2817, 86, 2820, 86, 86, 2819, 2816, 2821, 86, + 2814, 86, 86, 86, 2818, 86, 2822, 2824, 2815, 2823, + 2825, 86, 2826, 86, 2827, 86, 86, 2829, 86, 86, - 2815, 71, 71, 2828, 2829, 2820, 71, 2824, 2821, 2822, - 2823, 2825, 2826, 2831, 71, 71, 3070, 2827, 2894, 71, - 2832, 2830, 2833, 2835, 71, 2836, 71, 2834, 2838, 71, - 2839, 71, 2840, 2841, 71, 71, 2842, 2843, 2846, 71, - 2844, 2845, 71, 71, 2847, 71, 71, 71, 71, 71, - 2853, 71, 71, 71, 2852, 71, 71, 2856, 71, 3070, - 2848, 2849, 2855, 71, 71, 2857, 2850, 71, 2851, 71, - 2861, 2862, 71, 2858, 2863, 71, 2860, 2854, 71, 2864, - 71, 2859, 2868, 2865, 2870, 71, 71, 2869, 71, 2866, - 71, 71, 2867, 71, 71, 71, 2877, 71, 2874, 2875, + 86, 2828, 2830, 86, 2834, 2835, 86, 2831, 86, 86, + 86, 2839, 86, 2840, 86, 86, 3110, 86, 2841, 2838, + 86, 2832, 2833, 2836, 86, 2844, 2845, 86, 2837, 2846, + 86, 86, 86, 2849, 86, 2842, 2843, 2847, 86, 86, + 86, 2852, 86, 2853, 86, 2848, 2850, 86, 2851, 86, + 86, 86, 86, 86, 2856, 86, 86, 2858, 86, 86, + 2859, 86, 2857, 86, 2854, 86, 86, 2855, 86, 86, + 2868, 2869, 2860, 86, 2864, 2861, 2862, 2863, 2865, 2866, + 2871, 86, 86, 3110, 2867, 2934, 86, 2872, 2870, 2873, + 2875, 86, 2876, 86, 2874, 86, 2878, 86, 86, 2877, - 2878, 2872, 71, 2880, 71, 71, 71, 71, 2879, 3070, - 2871, 2926, 2873, 71, 2876, 2881, 71, 2900, 2882, 2883, - 71, 2884, 71, 2885, 71, 2886, 71, 2887, 71, 2888, - 71, 2889, 71, 2890, 71, 71, 2892, 71, 71, 71, - 71, 71, 2897, 71, 2891, 71, 71, 2893, 71, 2901, - 2903, 71, 71, 71, 71, 2898, 2905, 71, 2899, 2895, - 2896, 2902, 71, 2907, 71, 2910, 71, 2909, 71, 71, - 2904, 71, 71, 71, 2912, 2908, 71, 71, 71, 71, - 2906, 71, 2911, 2916, 2919, 2913, 71, 2917, 71, 2915, - 2914, 2918, 2920, 2921, 71, 2922, 71, 2923, 71, 71, + 2879, 86, 2880, 2881, 86, 86, 2882, 2883, 2886, 86, + 2884, 2885, 86, 86, 2887, 86, 2888, 86, 86, 86, + 2893, 86, 86, 86, 2892, 86, 2889, 86, 86, 2896, + 2895, 86, 86, 86, 2901, 86, 2897, 2890, 2891, 2902, + 86, 2900, 86, 2898, 2903, 86, 86, 2894, 86, 2899, + 2904, 2905, 86, 2908, 86, 2910, 86, 2906, 2909, 86, + 2907, 86, 3110, 86, 86, 86, 86, 2911, 2914, 2912, + 2915, 2917, 86, 2913, 2918, 2916, 86, 2920, 86, 2938, + 86, 86, 2919, 2921, 86, 2936, 2922, 2923, 86, 2924, + 86, 2925, 86, 2926, 86, 2927, 86, 2928, 86, 2929, - 71, 71, 2928, 71, 71, 71, 71, 2934, 2925, 2924, - 2931, 71, 71, 71, 2930, 71, 71, 71, 71, 2933, - 2927, 71, 71, 71, 2929, 2935, 2941, 71, 2948, 71, - 2936, 2937, 2938, 2940, 2942, 71, 71, 71, 2950, 71, - 2939, 2945, 2943, 2944, 71, 2951, 2949, 2947, 71, 2946, - 2952, 71, 2953, 71, 71, 71, 71, 71, 2956, 71, - 71, 2957, 2958, 2961, 71, 71, 71, 2954, 71, 71, - 71, 2964, 2966, 71, 2955, 2960, 71, 2963, 2962, 2969, - 71, 71, 71, 71, 2959, 2967, 2972, 71, 2965, 71, - 2973, 2974, 71, 2976, 71, 2968, 2970, 2977, 71, 71, + 86, 2930, 86, 86, 2932, 86, 86, 86, 2937, 86, + 86, 86, 2931, 86, 86, 2933, 86, 2941, 2943, 86, + 86, 86, 86, 2939, 2945, 2940, 2942, 2935, 86, 2947, + 86, 2950, 2944, 2949, 86, 86, 86, 86, 86, 86, + 2948, 2952, 86, 86, 86, 86, 2946, 86, 2951, 2956, + 2959, 2957, 2961, 86, 2953, 2955, 2954, 86, 2960, 2958, + 2962, 86, 2963, 86, 86, 86, 86, 86, 86, 2966, + 86, 86, 86, 2965, 2972, 2971, 86, 86, 86, 2974, + 2964, 2968, 2970, 86, 86, 86, 2967, 86, 86, 2975, + 86, 2969, 2973, 86, 86, 86, 86, 2981, 86, 86, - 2971, 71, 71, 71, 2982, 71, 71, 2981, 2978, 2983, - 71, 2975, 71, 71, 2979, 71, 71, 2980, 71, 71, - 2987, 71, 71, 2989, 71, 71, 71, 2984, 71, 2986, - 2994, 2995, 2985, 2988, 2991, 2992, 2996, 71, 2990, 71, - 71, 3000, 71, 2993, 71, 3002, 71, 3003, 2997, 3001, - 71, 71, 71, 71, 3008, 3004, 71, 2998, 3005, 2999, - 71, 3006, 3009, 71, 71, 3011, 71, 71, 71, 3010, - 71, 3007, 3012, 71, 71, 3017, 71, 3014, 71, 71, - 3020, 71, 3021, 71, 71, 71, 3013, 71, 71, 3024, - 71, 3019, 3015, 3016, 3022, 3018, 71, 3023, 71, 3028, + 2978, 2985, 2976, 2977, 3110, 2980, 2982, 2988, 86, 86, + 86, 86, 2979, 2986, 2983, 2984, 2990, 86, 2987, 2989, + 86, 2991, 2992, 86, 2993, 86, 86, 86, 2994, 2996, + 86, 2995, 2997, 86, 86, 2998, 3001, 86, 86, 86, + 86, 86, 86, 86, 3004, 3006, 86, 3009, 86, 3000, + 3003, 3002, 86, 86, 3012, 86, 3007, 86, 2999, 86, + 3005, 86, 3008, 86, 3013, 3014, 3016, 3010, 3017, 86, + 86, 3011, 86, 86, 86, 3018, 86, 86, 3015, 3022, + 86, 3021, 3019, 3023, 86, 86, 86, 86, 86, 3020, + 3027, 86, 86, 3029, 3024, 86, 86, 3025, 86, 3026, - 71, 3029, 71, 3027, 71, 3032, 3025, 3026, 71, 71, - 3034, 71, 3035, 3030, 71, 71, 71, 3039, 71, 3036, - 71, 71, 3037, 3041, 71, 3040, 71, 3033, 3031, 3042, - 71, 3043, 71, 3044, 71, 3038, 71, 3048, 71, 3046, - 71, 71, 71, 71, 71, 71, 3050, 3051, 71, 3054, - 71, 3045, 3055, 71, 3070, 3047, 71, 3058, 71, 3049, - 3059, 71, 3052, 3053, 3056, 3060, 3061, 71, 71, 3057, - 3062, 71, 71, 71, 71, 3063, 71, 3064, 3065, 3068, - 71, 3069, 71, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3066, 3070, 3067, 43, 43, 43, 43, + 86, 86, 86, 3034, 86, 3031, 3035, 3028, 3032, 86, + 3030, 3036, 86, 3040, 86, 3033, 86, 3043, 86, 3042, + 3037, 3039, 3038, 3041, 86, 86, 86, 86, 3047, 3044, + 3048, 3045, 3046, 3049, 86, 86, 86, 3051, 86, 86, + 3050, 86, 86, 3052, 86, 86, 3057, 86, 86, 3054, + 86, 3060, 86, 3061, 86, 86, 86, 86, 86, 86, + 3053, 3059, 3064, 3055, 3056, 3062, 3058, 86, 3063, 86, + 3068, 86, 3067, 86, 3065, 86, 3069, 3066, 86, 3072, + 3070, 86, 3074, 86, 3075, 86, 86, 86, 3079, 86, + 3076, 86, 86, 3077, 3073, 86, 3080, 3081, 86, 3071, - 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, - 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, - 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, - 64, 74, 74, 3070, 74, 74, 74, 74, 141, 141, - 3070, 3070, 3070, 141, 141, 143, 143, 3070, 3070, 143, - 3070, 143, 145, 3070, 3070, 3070, 3070, 3070, 145, 148, - 148, 3070, 3070, 3070, 148, 148, 150, 3070, 3070, 3070, - 3070, 3070, 150, 152, 152, 3070, 152, 152, 152, 152, - 75, 75, 3070, 75, 75, 75, 75, 13, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3082, 86, 86, 86, 86, 3083, 3078, 86, 3086, 3084, + 86, 3085, 3088, 86, 86, 3090, 86, 86, 86, 3091, + 86, 3094, 86, 3087, 3095, 86, 3089, 86, 3098, 3099, + 86, 86, 3101, 86, 86, 3092, 3093, 3096, 3100, 3102, + 86, 3097, 86, 86, 86, 86, 3108, 86, 3104, 3103, + 3105, 3109, 86, 3106, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3107, 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, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3110, 89, 89, 89, 89, + 156, 156, 3110, 3110, 3110, 156, 156, 158, 158, 3110, + 3110, 158, 3110, 158, 160, 3110, 3110, 3110, 3110, 3110, + 160, 163, 163, 3110, 3110, 3110, 163, 163, 165, 3110, + 3110, 3110, 3110, 3110, 165, 167, 167, 3110, 167, 167, + 167, 167, 170, 3110, 3110, 3110, 3110, 3110, 170, 173, + 173, 3110, 3110, 3110, 173, 173, 90, 90, 3110, 90, + 90, 90, 90, 17, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110 } ; -static const flex_int16_t yy_chk[6029] = +static const flex_int16_t yy_chk[6125] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, - 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, - 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, - 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3076, 31, - 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, + 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, 3118, 35, + 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, - 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, - 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1010, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 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, 28, 16, + 25, 46, 27, 28, 87, 25, 27, 28, 87, 27, + 28, 40, 28, 28, 25, 30, 30, 31, 31, 124, + 32, 104, 36, 36, 32, 40, 31, 32, 37, 37, + 30, 36, 124, 37, 32, 39, 32, 36, 73, 56, + 39, 36, 56, 104, 39, 92, 41, 41, 92, 37, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 39, 41, 73, 39, 67, 67, 43, 43, 42, 43, + 39, 41, 41, 42, 41, 44, 42, 97, 43, 44, + 97, 45, 45, 42, 43, 180, 45, 42, 42, 44, + 45, 84, 84, 44, 44, 62, 180, 62, 62, 70, + 62, 70, 70, 72, 70, 72, 72, 79, 72, 79, + 79, 70, 79, 86, 95, 86, 86, 89, 86, 89, + 89, 93, 89, 94, 86, 93, 95, 96, 89, 89, + 94, 100, 98, 2544, 103, 98, 101, 102, 105, 106, + 100, 107, 108, 102, 145, 106, 110, 96, 98, 102, + 101, 102, 103, 103, 109, 107, 111, 105, 106, 112, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 145, 114, 108, 112, 110, 109, 109, 113, 117, 248, + 120, 248, 113, 109, 111, 114, 115, 116, 121, 115, + 118, 119, 115, 116, 119, 118, 122, 117, 119, 120, + 122, 123, 121, 125, 120, 115, 115, 126, 123, 127, + 125, 136, 116, 128, 119, 118, 130, 129, 131, 132, + 126, 129, 134, 131, 133, 133, 136, 131, 135, 127, + 137, 128, 135, 138, 130, 139, 142, 140, 139, 132, + 141, 135, 134, 143, 143, 147, 141, 135, 142, 139, + 140, 144, 138, 139, 146, 148, 137, 149, 144, 149, + 150, 143, 151, 152, 143, 153, 147, 151, 149, 144, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 192, 190, 191, 187, - 188, 185, 190, 184, 185, 194, 194, 180, 200, 186, - 189, 189, 192, 193, 189, 195, 189, 196, 191, 193, + 155, 148, 150, 146, 154, 152, 157, 157, 159, 154, + 149, 159, 1032, 153, 155, 161, 169, 161, 161, 169, + 161, 164, 164, 166, 177, 166, 166, 167, 166, 167, + 167, 171, 167, 171, 171, 175, 171, 174, 174, 167, + 175, 176, 177, 178, 179, 181, 182, 176, 183, 184, + 185, 186, 179, 181, 184, 187, 176, 188, 178, 179, + 186, 187, 187, 183, 189, 182, 190, 190, 191, 189, + 185, 192, 195, 192, 191, 193, 192, 194, 194, 193, + 196, 197, 188, 199, 193, 196, 197, 198, 200, 193, + 203, 195, 204, 192, 200, 193, 193, 201, 205, 198, - 197, 195, 206, 196, 210, 198, 199, 195, 189, 200, - 189, 198, 199, 201, 208, 206, 145, 202, 203, 201, - 197, 199, 202, 204, 203, 205, 210, 207, 212, 204, - 209, 211, 205, 207, 208, 213, 209, 214, 215, 211, - 213, 212, 216, 217, 218, 222, 214, 219, 220, 218, - 218, 221, 219, 215, 223, 221, 224, 226, 216, 225, - 223, 229, 233, 217, 227, 225, 220, 222, 228, 227, - 228, 230, 235, 231, 224, 224, 232, 226, 230, 231, - 229, 233, 232, 234, 235, 236, 237, 237, 239, 234, - 238, 238, 240, 242, 239, 241, 243, 241, 240, 236, + 202, 201, 206, 199, 203, 202, 207, 204, 211, 208, + 205, 207, 217, 205, 208, 209, 209, 200, 210, 209, + 206, 209, 212, 210, 213, 214, 214, 220, 211, 173, + 213, 215, 217, 209, 216, 209, 218, 215, 212, 219, + 216, 221, 218, 215, 222, 219, 223, 221, 220, 222, + 224, 225, 223, 226, 219, 227, 224, 228, 225, 229, + 230, 227, 231, 232, 233, 229, 226, 237, 235, 233, + 231, 234, 236, 238, 240, 242, 232, 228, 238, 238, + 234, 239, 230, 235, 243, 241, 239, 237, 236, 241, + 243, 244, 240, 245, 246, 247, 249, 242, 250, 245, - 245, 243, 246, 244, 247, 249, 248, 250, 143, 260, - 246, 248, 239, 250, 241, 244, 242, 251, 256, 245, - 252, 253, 255, 251, 247, 252, 253, 254, 249, 257, - 258, 259, 256, 254, 260, 261, 263, 255, 263, 259, - 262, 261, 266, 262, 258, 264, 264, 257, 265, 267, - 267, 265, 268, 268, 269, 271, 270, 272, 271, 273, - 266, 272, 275, 274, 283, 277, 276, 277, 273, 274, - 269, 270, 276, 278, 279, 284, 275, 281, 279, 278, - 280, 280, 281, 282, 283, 285, 286, 287, 287, 282, - 289, 288, 290, 284, 288, 279, 290, 291, 296, 286, + 247, 251, 252, 253, 255, 250, 254, 251, 252, 244, + 244, 256, 254, 262, 246, 249, 255, 257, 257, 258, + 258, 259, 253, 260, 261, 256, 261, 259, 263, 260, + 264, 265, 266, 263, 267, 269, 262, 172, 280, 268, + 266, 270, 264, 261, 268, 259, 271, 270, 272, 274, + 265, 273, 271, 272, 267, 274, 273, 275, 269, 276, + 277, 278, 279, 280, 282, 281, 283, 282, 283, 286, + 279, 281, 275, 276, 289, 278, 284, 284, 277, 285, + 287, 287, 285, 288, 288, 290, 291, 286, 292, 291, + 289, 294, 292, 293, 295, 296, 297, 294, 297, 298, - 292, 293, 293, 294, 295, 297, 285, 295, 289, 298, - 296, 297, 298, 299, 301, 302, 291, 303, 292, 315, - 315, 294, 303, 301, 295, 299, 300, 304, 305, 306, - 304, 305, 304, 302, 309, 300, 141, 307, 300, 309, - 309, 311, 306, 300, 300, 300, 300, 312, 304, 307, - 308, 310, 308, 308, 310, 313, 314, 318, 311, 317, - 317, 311, 312, 316, 313, 314, 319, 320, 316, 321, - 322, 319, 318, 327, 323, 324, 336, 336, 329, 320, - 70, 324, 325, 325, 329, 325, 328, 330, 321, 323, - 322, 328, 330, 327, 325, 331, 332, 333, 335, 332, + 290, 296, 293, 299, 304, 298, 301, 299, 295, 300, + 300, 301, 302, 303, 305, 306, 307, 307, 302, 309, + 308, 310, 304, 308, 299, 310, 311, 363, 306, 312, + 313, 313, 314, 303, 316, 305, 315, 309, 317, 315, + 318, 319, 321, 318, 317, 311, 316, 312, 363, 322, + 314, 321, 325, 319, 323, 325, 315, 320, 324, 323, + 326, 324, 328, 324, 328, 328, 320, 322, 327, 320, + 331, 332, 333, 326, 320, 320, 320, 320, 329, 324, + 327, 333, 330, 329, 329, 330, 332, 331, 334, 336, + 331, 335, 335, 338, 336, 337, 337, 334, 339, 340, - 331, 332, 334, 337, 342, 334, 331, 335, 346, 337, - 339, 333, 338, 338, 343, 339, 340, 344, 334, 340, - 349, 334, 346, 334, 342, 340, 568, 345, 348, 340, - 351, 348, 344, 568, 349, 343, 356, 340, 341, 341, - 352, 341, 345, 357, 354, 351, 353, 348, 355, 352, - 354, 353, 353, 361, 341, 356, 359, 341, 357, 341, - 360, 341, 350, 358, 350, 350, 360, 362, 363, 355, - 365, 366, 358, 368, 350, 359, 350, 350, 350, 361, - 364, 350, 363, 367, 369, 370, 364, 362, 368, 369, - 364, 366, 371, 365, 372, 372, 373, 374, 371, 375, + 341, 342, 343, 339, 344, 347, 345, 345, 338, 345, + 344, 340, 353, 356, 356, 348, 349, 343, 345, 341, + 348, 342, 349, 350, 351, 347, 353, 352, 350, 351, + 352, 354, 352, 355, 354, 351, 359, 357, 358, 358, + 362, 359, 355, 357, 364, 360, 365, 354, 360, 366, + 354, 369, 354, 368, 360, 372, 368, 375, 360, 364, + 362, 365, 371, 366, 372, 369, 360, 361, 361, 373, + 361, 378, 368, 374, 373, 373, 376, 371, 375, 374, + 378, 377, 379, 361, 382, 381, 361, 170, 361, 386, + 361, 370, 380, 370, 370, 376, 377, 385, 380, 383, - 370, 376, 377, 367, 378, 379, 381, 376, 382, 374, - 379, 380, 380, 375, 380, 383, 373, 385, 384, 385, - 378, 386, 388, 388, 382, 386, 381, 377, 389, 387, - 390, 383, 384, 387, 391, 392, 396, 385, 393, 397, - 394, 396, 395, 397, 400, 390, 398, 389, 387, 394, - 391, 395, 393, 392, 405, 398, 403, 399, 401, 403, - 394, 64, 394, 399, 401, 400, 402, 404, 406, 406, - 402, 407, 404, 409, 405, 408, 408, 410, 409, 411, - 411, 412, 413, 414, 407, 415, 413, 412, 416, 417, - 410, 418, 418, 416, 417, 419, 420, 421, 414, 422, + 388, 379, 384, 370, 382, 370, 370, 370, 384, 386, + 370, 381, 384, 383, 387, 388, 389, 390, 391, 393, + 385, 389, 392, 392, 391, 394, 395, 396, 397, 398, + 399, 401, 390, 396, 387, 399, 402, 394, 403, 393, + 395, 400, 400, 404, 400, 398, 405, 410, 405, 408, + 408, 401, 402, 397, 403, 406, 407, 404, 409, 406, + 407, 415, 410, 411, 412, 414, 405, 413, 416, 418, + 415, 420, 417, 416, 414, 407, 417, 409, 418, 411, + 419, 413, 412, 421, 422, 414, 419, 414, 422, 421, + 423, 424, 420, 423, 425, 427, 424, 426, 426, 428, - 418, 423, 425, 427, 423, 424, 415, 419, 427, 424, - 428, 422, 426, 426, 425, 421, 420, 429, 429, 430, - 432, 432, 433, 437, 434, 435, 436, 439, 440, 443, - 441, 428, 434, 442, 435, 437, 444, 446, 443, 442, - 452, 430, 444, 433, 441, 439, 436, 439, 440, 445, - 447, 446, 448, 449, 445, 448, 450, 451, 447, 453, - 452, 447, 453, 451, 454, 455, 458, 449, 456, 457, - 454, 450, 459, 456, 461, 460, 459, 462, 463, 455, - 460, 464, 462, 465, 468, 484, 484, 458, 454, 461, - 469, 457, 471, 470, 463, 473, 465, 470, 472, 473, + 428, 429, 430, 431, 431, 432, 429, 434, 427, 433, + 435, 432, 436, 433, 425, 430, 437, 436, 438, 438, + 439, 437, 434, 440, 441, 442, 443, 438, 445, 443, + 444, 435, 439, 447, 444, 446, 446, 442, 447, 448, + 445, 450, 441, 440, 449, 449, 452, 452, 453, 454, + 455, 456, 457, 460, 459, 462, 461, 454, 463, 455, + 448, 462, 464, 450, 457, 466, 472, 463, 464, 453, + 461, 456, 459, 460, 459, 465, 467, 469, 468, 466, + 465, 468, 470, 471, 467, 473, 472, 467, 473, 471, + 474, 469, 475, 476, 477, 481, 474, 470, 476, 478, - 464, 466, 466, 474, 468, 469, 480, 466, 474, 466, - 475, 471, 474, 476, 472, 466, 477, 466, 476, 478, - 466, 466, 480, 479, 482, 475, 483, 466, 478, 479, - 481, 485, 477, 481, 479, 477, 486, 486, 487, 488, - 489, 490, 491, 492, 494, 493, 483, 482, 492, 501, - 495, 488, 496, 487, 493, 489, 485, 498, 496, 502, - 490, 501, 500, 494, 491, 495, 498, 499, 500, 503, - 504, 499, 505, 506, 502, 507, 508, 510, 509, 507, - 509, 511, 511, 513, 504, 510, 512, 505, 503, 508, - 514, 506, 512, 515, 516, 513, 514, 516, 517, 518, + 479, 483, 480, 482, 479, 484, 475, 480, 482, 485, + 481, 490, 488, 489, 474, 490, 477, 483, 491, 492, + 478, 495, 485, 493, 484, 486, 486, 493, 489, 494, + 497, 486, 488, 486, 494, 492, 495, 491, 494, 486, + 500, 486, 496, 498, 486, 486, 497, 496, 499, 497, + 501, 486, 498, 501, 499, 502, 500, 503, 505, 499, + 504, 504, 506, 506, 507, 510, 509, 511, 508, 512, + 515, 514, 519, 513, 512, 165, 519, 503, 502, 507, + 508, 509, 513, 505, 510, 515, 516, 518, 520, 511, + 514, 521, 516, 522, 520, 523, 518, 524, 525, 526, - 520, 519, 521, 520, 522, 515, 519, 525, 525, 524, - 523, 521, 517, 527, 518, 523, 523, 531, 521, 527, - 522, 521, 524, 526, 526, 528, 528, 529, 529, 530, - 532, 533, 534, 532, 535, 530, 533, 536, 531, 537, - 536, 538, 535, 539, 537, 540, 541, 543, 544, 540, - 542, 534, 541, 544, 542, 545, 547, 546, 548, 550, - 553, 547, 539, 546, 538, 543, 549, 551, 551, 549, - 552, 557, 548, 556, 549, 545, 553, 550, 549, 554, - 555, 560, 59, 559, 554, 555, 557, 556, 552, 559, - 560, 561, 562, 563, 561, 566, 562, 564, 563, 565, + 527, 530, 528, 521, 527, 529, 532, 529, 522, 530, + 533, 524, 532, 525, 523, 528, 535, 526, 531, 531, + 534, 536, 533, 537, 536, 538, 534, 539, 535, 541, + 540, 542, 539, 540, 545, 545, 543, 537, 541, 544, + 538, 543, 543, 546, 546, 541, 551, 542, 541, 547, + 548, 548, 544, 549, 549, 547, 550, 552, 553, 554, + 552, 555, 550, 553, 558, 556, 557, 551, 556, 555, + 559, 557, 560, 561, 563, 564, 560, 562, 554, 561, + 564, 562, 565, 567, 566, 568, 570, 558, 567, 559, + 566, 572, 563, 569, 571, 571, 569, 573, 574, 568, - 564, 567, 569, 570, 565, 571, 572, 572, 570, 574, - 575, 566, 573, 576, 578, 569, 54, 577, 562, 567, - 578, 573, 576, 584, 579, 571, 575, 612, 574, 577, - 579, 580, 581, 581, 580, 581, 582, 583, 585, 582, - 586, 584, 583, 587, 588, 612, 586, 596, 587, 592, - 588, 589, 585, 590, 589, 591, 593, 595, 590, 594, - 591, 591, 592, 595, 594, 597, 596, 598, 599, 593, - 600, 600, 598, 601, 597, 604, 603, 608, 594, 594, - 601, 602, 603, 613, 602, 605, 606, 604, 599, 610, - 605, 606, 606, 607, 607, 609, 611, 609, 611, 602, + 576, 569, 565, 574, 570, 569, 575, 577, 580, 572, + 579, 575, 581, 573, 576, 581, 579, 580, 584, 582, + 583, 584, 577, 582, 585, 583, 586, 588, 587, 585, + 589, 590, 591, 595, 588, 593, 590, 592, 592, 594, + 163, 596, 586, 589, 593, 582, 587, 597, 598, 595, + 596, 599, 591, 600, 598, 604, 600, 599, 594, 597, + 601, 601, 602, 601, 603, 602, 605, 607, 606, 603, + 608, 616, 607, 604, 606, 609, 608, 610, 609, 611, + 605, 612, 610, 613, 611, 611, 614, 615, 617, 619, + 616, 614, 630, 615, 612, 618, 613, 617, 620, 620, - 614, 613, 608, 615, 616, 617, 618, 619, 610, 624, - 618, 617, 620, 621, 622, 623, 619, 626, 614, 627, - 625, 624, 615, 626, 616, 628, 629, 620, 621, 630, - 633, 632, 622, 627, 623, 625, 631, 628, 634, 635, - 631, 636, 637, 639, 639, 629, 633, 637, 630, 632, - 638, 640, 641, 643, 642, 640, 634, 635, 635, 645, - 636, 644, 646, 647, 638, 642, 644, 643, 649, 651, - 648, 641, 650, 649, 651, 645, 647, 648, 652, 650, - 653, 646, 654, 652, 655, 656, 657, 659, 658, 654, - 662, 660, 659, 655, 660, 657, 663, 661, 653, 656, + 618, 621, 624, 628, 622, 614, 614, 622, 621, 619, + 623, 630, 625, 626, 624, 632, 623, 625, 626, 626, + 627, 627, 622, 629, 631, 629, 631, 633, 628, 634, + 635, 636, 637, 632, 639, 638, 642, 640, 637, 638, + 641, 643, 645, 639, 644, 633, 648, 634, 647, 635, + 649, 636, 640, 646, 642, 641, 644, 645, 648, 646, + 643, 650, 647, 651, 652, 653, 654, 651, 655, 649, + 656, 657, 659, 659, 658, 660, 657, 661, 663, 660, + 650, 653, 652, 662, 654, 664, 655, 655, 658, 656, + 664, 665, 663, 666, 662, 667, 661, 668, 669, 670, - 658, 661, 664, 666, 662, 663, 665, 667, 667, 668, - 668, 669, 669, 670, 672, 673, 674, 664, 668, 675, - 665, 673, 670, 675, 666, 676, 677, 678, 679, 682, - 680, 683, 681, 672, 679, 684, 674, 676, 680, 681, - 693, 705, 690, 687, 694, 678, 705, 682, 695, 693, - 694, 677, 697, 697, 700, 684, 683, 685, 687, 690, - 699, 696, 685, 702, 695, 696, 685, 698, 698, 685, - 701, 699, 700, 706, 703, 707, 685, 685, 720, 685, - 703, 708, 53, 702, 701, 704, 704, 704, 709, 704, - 720, 709, 704, 707, 706, 710, 710, 704, 711, 712, + 671, 673, 675, 669, 668, 671, 670, 665, 667, 672, + 674, 675, 666, 676, 672, 677, 678, 674, 679, 673, + 682, 684, 680, 679, 677, 680, 681, 676, 678, 683, + 681, 685, 686, 692, 682, 694, 684, 690, 683, 687, + 687, 688, 688, 689, 689, 685, 690, 695, 693, 696, + 688, 695, 692, 686, 693, 694, 697, 698, 699, 700, + 702, 696, 701, 703, 699, 704, 714, 700, 707, 701, + 710, 713, 714, 716, 715, 698, 162, 716, 702, 720, + 713, 697, 719, 707, 722, 704, 721, 710, 703, 705, + 715, 717, 717, 719, 705, 718, 718, 720, 705, 723, - 712, 713, 721, 704, 704, 711, 708, 714, 714, 715, - 716, 722, 717, 716, 715, 722, 713, 717, 718, 718, - 719, 721, 719, 723, 725, 724, 726, 726, 728, 730, - 727, 732, 725, 729, 729, 733, 731, 735, 735, 746, - 746, 733, 728, 723, 724, 727, 734, 730, 731, 736, - 739, 734, 738, 732, 736, 736, 739, 738, 740, 743, - 741, 742, 743, 744, 740, 741, 745, 742, 748, 744, - 747, 747, 749, 750, 745, 751, 748, 752, 750, 753, - 753, 755, 751, 754, 757, 756, 759, 761, 760, 755, - 749, 756, 754, 762, 767, 759, 752, 760, 762, 763, + 721, 705, 725, 727, 722, 723, 726, 725, 705, 705, + 728, 705, 724, 724, 724, 729, 724, 730, 729, 724, + 160, 727, 730, 730, 724, 731, 733, 726, 732, 732, + 724, 724, 731, 734, 734, 728, 736, 735, 737, 736, + 740, 733, 735, 737, 738, 738, 739, 741, 739, 742, + 743, 745, 740, 742, 744, 746, 746, 747, 750, 745, + 748, 749, 749, 751, 752, 753, 741, 755, 755, 158, + 743, 753, 747, 744, 748, 751, 750, 754, 756, 156, + 758, 759, 754, 756, 756, 758, 752, 759, 760, 763, + 761, 762, 763, 764, 760, 761, 765, 762, 768, 764, - 765, 764, 766, 757, 764, 765, 768, 769, 763, 771, - 771, 761, 770, 772, 773, 768, 766, 770, 770, 767, - 769, 774, 775, 776, 780, 778, 776, 778, 772, 782, - 774, 779, 779, 773, 776, 781, 783, 784, 785, 786, - 781, 788, 787, 789, 790, 780, 775, 789, 791, 792, - 782, 787, 793, 794, 795, 792, 783, 784, 796, 786, - 785, 793, 790, 797, 788, 794, 798, 791, 801, 797, - 799, 803, 796, 795, 802, 799, 800, 800, 804, 805, - 798, 806, 807, 802, 808, 813, 804, 809, 801, 810, - 812, 803, 811, 809, 814, 810, 812, 817, 818, 805, + 766, 766, 767, 767, 765, 769, 768, 770, 771, 772, + 773, 773, 770, 774, 776, 771, 775, 777, 779, 781, + 776, 780, 774, 769, 775, 783, 782, 779, 772, 784, + 780, 782, 784, 785, 783, 786, 777, 787, 785, 788, + 789, 790, 792, 781, 791, 791, 790, 790, 788, 786, + 793, 794, 795, 789, 798, 796, 798, 792, 796, 800, + 794, 802, 787, 799, 799, 801, 796, 803, 804, 793, + 801, 805, 806, 808, 807, 809, 795, 810, 811, 809, + 800, 815, 802, 807, 812, 813, 814, 803, 804, 816, + 812, 821, 806, 805, 813, 810, 808, 811, 814, 817, - 814, 807, 815, 806, 808, 813, 811, 816, 815, 819, - 818, 816, 820, 824, 819, 822, 817, 825, 818, 821, - 821, 822, 823, 826, 827, 823, 828, 828, 829, 826, - 825, 824, 830, 820, 831, 831, 832, 830, 833, 834, - 834, 835, 833, 837, 827, 836, 829, 838, 837, 840, - 841, 832, 843, 844, 846, 846, 847, 849, 849, 48, - 847, 848, 850, 835, 841, 836, 838, 851, 852, 869, - 869, 851, 843, 840, 844, 845, 848, 854, 845, 853, - 845, 855, 854, 852, 845, 857, 845, 850, 859, 861, - 858, 845, 856, 853, 858, 855, 845, 856, 856, 857, + 815, 818, 819, 816, 822, 817, 823, 819, 820, 820, + 824, 821, 825, 822, 826, 818, 827, 828, 824, 829, + 831, 830, 832, 833, 834, 829, 823, 830, 832, 837, + 834, 85, 825, 835, 831, 827, 826, 828, 836, 835, + 838, 839, 836, 833, 840, 842, 839, 847, 837, 841, + 841, 842, 838, 843, 844, 845, 843, 846, 848, 848, + 838, 849, 852, 846, 850, 840, 855, 847, 845, 850, + 851, 856, 844, 858, 853, 851, 851, 852, 853, 849, + 854, 854, 857, 860, 861, 863, 867, 857, 855, 864, + 867, 856, 858, 866, 866, 869, 869, 868, 861, 870, - 860, 861, 862, 859, 863, 860, 858, 862, 864, 865, - 866, 867, 872, 868, 873, 860, 866, 867, 863, 868, - 870, 871, 874, 865, 876, 870, 877, 871, 904, 864, - 878, 877, 881, 873, 872, 882, 876, 881, 879, 883, - 874, 875, 875, 882, 878, 880, 880, 875, 904, 875, - 879, 884, 885, 883, 887, 875, 886, 886, 887, 889, - 875, 875, 891, 890, 892, 889, 890, 875, 893, 895, - 884, 885, 43, 894, 893, 897, 898, 892, 894, 899, - 900, 891, 901, 902, 897, 898, 900, 903, 895, 905, - 906, 901, 903, 907, 910, 899, 911, 908, 909, 914, + 871, 873, 872, 874, 871, 863, 80, 860, 874, 875, + 864, 865, 868, 876, 865, 873, 865, 872, 876, 876, + 865, 877, 865, 875, 870, 878, 881, 865, 879, 878, + 883, 880, 865, 884, 882, 877, 880, 885, 881, 882, + 890, 878, 886, 879, 883, 890, 880, 887, 886, 888, + 892, 885, 891, 887, 884, 888, 889, 889, 891, 893, + 897, 894, 896, 898, 899, 897, 900, 900, 901, 75, + 903, 904, 892, 901, 896, 902, 899, 898, 893, 894, + 895, 895, 905, 902, 903, 907, 895, 908, 895, 907, + 904, 906, 906, 912, 895, 911, 910, 913, 911, 895, - 910, 917, 902, 905, 916, 907, 908, 909, 912, 918, - 906, 919, 920, 911, 912, 914, 921, 922, 916, 923, - 927, 917, 922, 930, 923, 919, 932, 926, 918, 927, - 920, 921, 926, 928, 928, 929, 930, 935, 933, 936, - 935, 929, 932, 933, 933, 934, 934, 937, 938, 934, - 939, 941, 940, 936, 942, 943, 944, 945, 946, 947, - 942, 950, 944, 946, 938, 940, 941, 937, 939, 953, - 14, 949, 945, 947, 949, 943, 951, 956, 952, 954, - 959, 951, 950, 952, 954, 953, 955, 958, 960, 956, - 964, 955, 961, 958, 960, 963, 959, 967, 961, 962, + 895, 905, 910, 914, 916, 918, 895, 908, 915, 914, + 913, 919, 912, 915, 918, 920, 921, 922, 923, 924, + 919, 925, 921, 916, 924, 926, 922, 927, 928, 929, + 931, 920, 932, 930, 937, 935, 931, 923, 929, 926, + 928, 925, 930, 938, 933, 939, 940, 927, 937, 932, + 933, 935, 941, 942, 943, 74, 944, 947, 948, 943, + 940, 944, 947, 938, 939, 949, 949, 948, 942, 950, + 941, 951, 953, 954, 958, 950, 955, 955, 954, 954, + 955, 957, 956, 959, 951, 956, 960, 961, 953, 964, + 962, 963, 965, 966, 958, 957, 967, 963, 965, 959, - 962, 968, 965, 969, 963, 965, 966, 966, 964, 970, - 972, 971, 970, 973, 979, 967, 972, 974, 980, 973, - 968, 975, 974, 969, 971, 976, 975, 977, 981, 986, - 976, 982, 979, 977, 981, 984, 982, 985, 980, 983, - 983, 987, 988, 990, 984, 988, 985, 986, 989, 991, - 992, 989, 993, 994, 990, 995, 999, 996, 997, 994, - 987, 995, 992, 997, 998, 998, 1000, 991, 1003, 1001, - 1002, 993, 996, 1004, 1002, 999, 1005, 1006, 1008, 1011, - 1000, 1001, 1004, 1009, 1009, 1012, 1003, 1013, 1017, 1014, - 1016, 1016, 1015, 1011, 1014, 1005, 13, 1008, 1018, 1013, + 961, 967, 968, 970, 960, 962, 970, 971, 966, 964, + 972, 974, 973, 975, 976, 972, 968, 973, 975, 976, + 977, 980, 985, 979, 981, 982, 984, 974, 971, 979, + 981, 982, 977, 983, 983, 984, 986, 980, 988, 986, + 985, 987, 987, 989, 990, 991, 992, 993, 991, 994, + 1000, 1001, 995, 993, 68, 994, 988, 995, 996, 992, + 997, 998, 989, 996, 990, 997, 1002, 998, 1000, 1003, + 1005, 1001, 1002, 1006, 1003, 1004, 1004, 1007, 1008, 1005, + 1009, 1010, 1006, 1009, 1010, 1011, 1012, 1013, 1014, 1020, + 1017, 63, 1015, 1027, 1016, 1007, 1011, 1008, 1015, 1013, - 1012, 1015, 1006, 1019, 1018, 1020, 1023, 1022, 1017, 1019, - 1020, 1021, 1022, 1021, 1024, 1026, 1025, 1027, 1028, 1029, - 1023, 1025, 1030, 1032, 1032, 1028, 1033, 1034, 1024, 1035, - 1026, 1036, 1037, 1145, 1029, 1145, 1027, 1036, 1040, 1040, - 1033, 1030, 1038, 1041, 1035, 1034, 1043, 1038, 1041, 1042, - 1042, 1044, 1037, 1043, 1045, 1046, 1038, 1045, 1038, 1047, - 1048, 1038, 1049, 1050, 1052, 1044, 1051, 1049, 1053, 1048, - 1058, 1051, 1055, 1055, 1046, 1052, 1056, 1047, 1057, 1059, - 1064, 1056, 1050, 1057, 1059, 1060, 1061, 1053, 1062, 1060, - 1058, 1063, 1065, 1066, 1067, 1061, 1069, 1068, 1070, 1064, + 1016, 1018, 1019, 1019, 1012, 1017, 1018, 1014, 1020, 1021, + 1022, 1023, 1024, 1026, 1029, 1023, 1025, 1031, 1027, 1030, + 1030, 1033, 1022, 1021, 1034, 1025, 1035, 1037, 1039, 1036, + 1024, 1045, 1026, 1029, 1036, 1033, 1037, 1031, 1035, 1034, + 1038, 1038, 1042, 1040, 1041, 1045, 1046, 1042, 1039, 1040, + 1041, 1043, 1044, 1043, 1047, 1048, 1049, 1044, 1050, 1047, + 1046, 1051, 1052, 1054, 1054, 1050, 1055, 1056, 1057, 1059, + 1048, 1058, 1062, 1062, 1060, 1049, 1051, 1058, 1068, 1060, + 1055, 1052, 1063, 1057, 1066, 1056, 1069, 1063, 1060, 1059, + 1060, 1064, 1064, 1060, 1065, 1072, 1067, 1068, 1066, 1067, - 1071, 1067, 1073, 1062, 1065, 1072, 1063, 1074, 1066, 1068, - 1075, 1072, 1076, 1081, 1078, 1069, 1080, 1073, 1071, 1070, - 1078, 1076, 1079, 1082, 1080, 1083, 1084, 1074, 1082, 1085, - 1075, 1084, 1084, 1081, 1087, 1086, 1079, 1083, 1088, 1088, - 1090, 0, 1091, 1093, 1093, 1095, 1092, 1087, 1085, 1086, - 1089, 1091, 1092, 1090, 1095, 1089, 1094, 1097, 1089, 1089, - 1096, 1094, 1097, 1089, 1100, 1098, 1096, 1099, 1099, 1089, - 1098, 1101, 1101, 1089, 1102, 1103, 1104, 1102, 1105, 1102, - 1106, 1107, 1108, 1109, 1110, 1100, 1107, 1105, 1112, 1147, - 1110, 1111, 1147, 1112, 1104, 1103, 1108, 1111, 1113, 1114, + 1070, 1065, 1071, 1073, 1069, 1074, 1075, 1071, 1073, 1070, + 1077, 1077, 1078, 1079, 1072, 1080, 1074, 1078, 1079, 1081, + 1083, 1084, 1082, 1085, 1081, 1075, 1082, 1086, 1087, 1083, + 1088, 1090, 1089, 1091, 1092, 1080, 1084, 1096, 1085, 1089, + 1087, 1093, 1094, 1090, 1097, 1088, 1086, 1095, 1094, 1098, + 1100, 1101, 1091, 1102, 1104, 1092, 1100, 1096, 1098, 1093, + 1103, 1106, 1095, 1108, 1097, 1105, 1101, 1102, 1103, 1109, + 1105, 1107, 1110, 1106, 1104, 1113, 1107, 1107, 1111, 1111, + 1114, 1115, 1108, 1109, 1119, 1110, 1112, 1115, 1113, 1114, + 1119, 1112, 1116, 1116, 1112, 1112, 1117, 1118, 1120, 1112, - 1106, 1109, 1113, 1115, 1115, 1117, 1116, 1116, 1114, 1116, - 1119, 1120, 1121, 1114, 1119, 1114, 1117, 1114, 1122, 1114, - 1125, 1127, 1124, 1123, 1128, 1129, 1120, 1122, 1123, 1123, - 1121, 1124, 1126, 1128, 1130, 1127, 1131, 1126, 1134, 1132, - 1133, 1133, 1125, 1135, 1129, 1132, 1134, 1136, 1137, 1138, - 1131, 1139, 1136, 1130, 1140, 1141, 1143, 1135, 1138, 1149, - 1141, 1150, 1137, 1142, 1142, 1144, 1144, 1148, 1152, 1139, - 1150, 1143, 1148, 1151, 1151, 1153, 1153, 1155, 1149, 1140, - 1154, 1154, 1155, 1156, 1157, 1158, 1158, 1159, 1152, 1160, - 1161, 1162, 1160, 1163, 1165, 1164, 1162, 1164, 1167, 1168, + 1123, 1117, 1121, 1120, 1126, 1112, 1118, 1121, 1127, 1112, + 1122, 1122, 1124, 1124, 1125, 1129, 1128, 1125, 1130, 1125, + 1131, 1123, 1132, 1130, 1126, 1128, 1127, 1133, 1138, 1138, + 1134, 58, 1135, 1133, 1131, 1129, 1134, 1135, 1136, 1137, + 1132, 1140, 1136, 1139, 1139, 1142, 1139, 1143, 1137, 1142, + 1144, 1145, 1140, 1137, 1148, 1137, 1147, 1137, 1146, 1137, + 1145, 1149, 1143, 1146, 1146, 1147, 1149, 1150, 1144, 1151, + 1152, 1153, 1154, 1155, 1156, 1156, 1148, 1157, 1151, 1155, + 1158, 1150, 1159, 1160, 1161, 1157, 1154, 1159, 1162, 1152, + 1153, 1163, 1166, 1161, 1158, 1164, 1172, 1160, 1165, 1165, - 0, 1167, 1163, 1169, 1156, 1157, 1170, 1159, 1169, 1172, - 1161, 1171, 1165, 1173, 1168, 1177, 1171, 1172, 1173, 1174, - 1170, 1175, 1175, 1176, 1174, 1178, 1180, 1179, 1176, 1182, - 1183, 1178, 1184, 1177, 1179, 1182, 1183, 1184, 1185, 1180, - 1186, 1187, 1188, 1190, 1185, 1189, 1189, 1192, 1193, 1186, - 1194, 1195, 1196, 1188, 1199, 1198, 1194, 1195, 1196, 1200, - 1187, 1198, 1205, 1190, 1201, 1203, 1202, 1192, 1199, 1204, - 1204, 1193, 1206, 1207, 1199, 1210, 1201, 1209, 1209, 1200, - 1202, 1208, 1205, 1203, 1211, 1213, 1208, 1214, 1215, 1211, - 1216, 1207, 1214, 1214, 1217, 1218, 1219, 1206, 1210, 1216, + 1164, 1167, 1167, 1168, 1171, 1168, 1162, 1166, 1170, 1171, + 1173, 1170, 1174, 1174, 1175, 1172, 1163, 1176, 1176, 1173, + 1177, 1177, 1178, 1179, 1180, 1181, 1181, 1178, 1182, 1183, + 1184, 1185, 1183, 1186, 1175, 1187, 1185, 1187, 1188, 1191, + 1190, 1192, 1186, 1190, 1179, 1180, 1192, 1193, 1182, 1200, + 1184, 1195, 1194, 1196, 1191, 1197, 1188, 1194, 1196, 1195, + 1197, 1193, 1198, 1198, 1199, 1201, 1202, 1200, 1203, 1199, + 1205, 1201, 1206, 1202, 1207, 1209, 1205, 1208, 1206, 1207, + 1210, 1203, 1211, 1208, 1209, 1212, 1212, 1213, 1215, 1216, + 1217, 1218, 1219, 1211, 1220, 1222, 1223, 1218, 1219, 1210, - 1220, 1222, 1217, 1222, 1213, 1221, 1215, 1223, 1225, 1218, - 1221, 1219, 1226, 1221, 1225, 1220, 1226, 1227, 1220, 1228, - 1229, 1223, 1230, 1231, 1228, 1228, 1232, 1233, 1227, 1234, - 1235, 1232, 1237, 1238, 1234, 1239, 1240, 1240, 1241, 1229, - 1242, 1231, 1241, 1243, 1245, 1233, 1237, 1246, 1230, 1244, - 1235, 1238, 1248, 1239, 1247, 1244, 1245, 1249, 1242, 1250, - 1251, 1254, 1243, 1252, 1253, 1251, 1246, 1248, 1247, 1253, - 1252, 1255, 1249, 1256, 1256, 1257, 1258, 1259, 1250, 1254, - 1255, 1260, 1258, 1261, 1269, 1262, 1260, 1263, 1263, 1261, - 1257, 1262, 1264, 1264, 1266, 1266, 1267, 1268, 1259, 1270, + 1220, 1222, 1224, 1215, 1226, 1225, 1227, 1213, 1229, 1216, + 1223, 1228, 1228, 1217, 1230, 1231, 1223, 1225, 1226, 1234, + 1232, 1237, 1224, 1239, 1227, 1232, 1233, 1233, 1229, 1235, + 1238, 1242, 1243, 1231, 1235, 1238, 1238, 1240, 1244, 1230, + 1237, 1239, 1234, 1241, 1245, 1242, 1240, 1243, 1246, 1245, + 1246, 1241, 1245, 1244, 1247, 1249, 1244, 1253, 1250, 1251, + 1252, 1249, 1250, 1254, 1255, 1252, 1252, 1256, 1247, 1257, + 1251, 1259, 1256, 1258, 1261, 1262, 1253, 1263, 1258, 1264, + 1264, 1265, 1255, 1266, 1267, 1265, 1268, 1257, 1261, 1254, + 1269, 1259, 1268, 1262, 1270, 1263, 1271, 1272, 1274, 1273, - 1267, 1271, 1269, 1272, 1273, 1273, 1268, 1274, 1277, 1275, - 1272, 1278, 1281, 1270, 1276, 1279, 1271, 1275, 1280, 1276, - 1279, 1279, 1277, 1280, 1280, 1282, 1282, 1274, 1283, 1284, - 1278, 1285, 1281, 1286, 1287, 1288, 1289, 1290, 1286, 1291, - 1285, 1292, 1294, 1290, 1291, 1293, 1295, 1283, 1284, 1297, - 1296, 1293, 1295, 1287, 1289, 1288, 1296, 1298, 1299, 1300, - 1301, 1294, 1302, 1306, 1303, 1304, 1304, 1292, 1297, 1305, - 1307, 1307, 1305, 1311, 1301, 1306, 1298, 1299, 1300, 1303, - 1308, 1308, 1309, 1302, 1310, 1312, 1311, 1309, 1310, 1313, - 1314, 1318, 1314, 1316, 1312, 1317, 1314, 1319, 1320, 1325, + 1275, 1266, 1269, 1267, 1276, 1275, 1278, 1279, 1280, 1280, + 1271, 1276, 1272, 1270, 1273, 1277, 1279, 1274, 1281, 1282, + 1277, 1283, 1284, 1285, 1278, 1282, 1286, 1293, 1285, 1287, + 1288, 1288, 1286, 1281, 1294, 1287, 1293, 1283, 1289, 1289, + 1291, 1291, 1292, 1284, 1295, 1296, 1292, 1297, 1298, 1298, + 1299, 1300, 1294, 1302, 1297, 1303, 1301, 1304, 1295, 1300, + 1296, 1301, 1304, 1304, 1306, 1314, 1305, 1302, 1307, 1307, + 1299, 1305, 1305, 1308, 1303, 1309, 1310, 1311, 1312, 1313, + 1315, 1317, 1311, 1314, 1306, 1310, 1315, 1319, 1316, 1318, + 1320, 1322, 1308, 1316, 1309, 1318, 1320, 1312, 1321, 1313, - 1317, 1323, 1313, 1321, 1321, 1322, 1318, 1323, 1324, 1314, - 1322, 1316, 1325, 1326, 1320, 1327, 1328, 1319, 1326, 1327, - 1328, 1329, 1330, 1324, 1331, 1332, 1333, 1333, 1335, 1337, - 1338, 1332, 1339, 1339, 1341, 1338, 1340, 1343, 1343, 1347, - 1330, 1329, 1340, 1348, 1331, 1345, 1335, 1351, 1345, 1352, - 1337, 1346, 1346, 1350, 1341, 1347, 1350, 1354, 1352, 1348, - 1353, 1353, 1355, 1356, 1357, 1358, 1360, 1351, 1361, 1357, - 1359, 1359, 1354, 1362, 1363, 1360, 1364, 1364, 1365, 1358, - 1366, 1368, 1356, 1355, 1367, 1371, 1361, 1373, 1362, 1367, - 1369, 1369, 1365, 1370, 1372, 1372, 1368, 1370, 1366, 1363, + 1323, 1324, 1325, 1326, 1321, 1327, 1319, 1317, 1328, 1334, + 1322, 1329, 1329, 1330, 1334, 1331, 1330, 1326, 1335, 1323, + 1324, 1325, 1335, 1328, 1332, 1332, 1327, 1331, 1333, 1333, + 1336, 1337, 1338, 1339, 1343, 1339, 1341, 1342, 1344, 1339, + 1337, 1345, 1342, 1336, 1348, 1338, 1346, 1346, 1347, 1343, + 1348, 1349, 1339, 1347, 1341, 1350, 1351, 1345, 1344, 1352, + 1353, 1351, 1354, 1352, 1353, 1355, 1349, 1356, 1350, 1357, + 1358, 1358, 1360, 1362, 1363, 1357, 1364, 1364, 1365, 1363, + 1366, 1372, 1354, 1355, 1365, 1368, 1368, 1356, 1370, 1373, + 1360, 1370, 1371, 1371, 1362, 1375, 1376, 1372, 1375, 1377, - 1374, 1376, 1375, 1377, 1380, 1371, 1375, 1381, 1377, 1373, - 1382, 1374, 1379, 1379, 1383, 1384, 1385, 1385, 1386, 1387, - 1376, 1381, 1380, 1386, 1388, 1389, 1390, 1391, 1383, 1382, - 1382, 1390, 1393, 1392, 1389, 1392, 1394, 1393, 1395, 1387, - 1384, 1398, 1394, 1396, 1388, 1399, 1399, 1391, 1400, 1396, - 1401, 1404, 1403, 1405, 1405, 1398, 1401, 1403, 1395, 1406, - 1406, 1408, 1407, 1409, 1413, 1410, 1415, 1400, 1410, 1411, - 1411, 1412, 1415, 1421, 1414, 1404, 1407, 1414, 1409, 1408, - 1414, 1416, 1417, 1412, 1413, 1417, 1416, 1419, 1420, 1423, - 1430, 1422, 1414, 1420, 1422, 1423, 1419, 1424, 1421, 1425, + 1366, 1378, 1378, 1379, 1380, 1373, 1382, 1381, 1377, 1383, + 1385, 1382, 1384, 1384, 1386, 1387, 1376, 1388, 1379, 1385, + 1389, 1389, 1390, 1383, 1392, 1380, 1381, 1391, 1393, 1392, + 1387, 1395, 1386, 1394, 1394, 1395, 1390, 1396, 1397, 1397, + 1398, 1399, 1388, 1393, 1400, 1391, 1401, 1405, 1400, 1402, + 1404, 1404, 1399, 1406, 1402, 1407, 1408, 1396, 1409, 1410, + 1411, 1411, 1398, 1405, 57, 1401, 1413, 1414, 1412, 1407, + 1415, 1406, 1409, 1412, 1417, 1408, 1408, 1416, 1418, 1415, + 1418, 1421, 1416, 1419, 1410, 1420, 1413, 1414, 1419, 1422, + 1424, 1420, 1425, 1425, 1417, 1422, 1426, 1427, 1430, 1433, - 1425, 1417, 1424, 1426, 1426, 1427, 1429, 1428, 1430, 1431, - 1432, 1427, 1428, 1433, 1434, 1435, 1433, 1436, 1437, 1429, - 1434, 1435, 1436, 1438, 1437, 1442, 1439, 1443, 1431, 1441, - 1432, 1439, 1440, 1440, 1441, 1444, 1445, 1446, 1449, 1450, - 1447, 1448, 1451, 1442, 1449, 1453, 1438, 1443, 1456, 1452, - 1445, 1446, 1447, 1457, 1448, 1444, 1455, 1455, 1457, 1450, - 1458, 1458, 1451, 1452, 1459, 1461, 1453, 1460, 1456, 1462, - 1464, 1463, 1467, 1471, 1466, 1465, 1469, 1473, 1473, 1459, - 1463, 1460, 1465, 1466, 1476, 1464, 1466, 1462, 1467, 1461, - 1472, 1469, 1475, 1472, 1474, 1474, 1469, 1477, 1471, 1479, + 1429, 1421, 1434, 1427, 1424, 1429, 1431, 1431, 1432, 1432, + 1435, 1436, 1438, 1433, 1436, 1426, 1437, 1437, 1439, 1447, + 1434, 1441, 1430, 1440, 1438, 1435, 1440, 1441, 1442, 1440, + 1445, 1443, 1446, 1442, 1443, 52, 1449, 1446, 1439, 1445, + 1448, 1440, 1449, 1448, 1447, 1455, 1450, 1451, 1451, 1453, + 1443, 1450, 1452, 1452, 1454, 1453, 1456, 1457, 1455, 1454, + 1458, 1459, 1460, 1461, 1459, 1462, 1463, 1464, 1460, 1461, + 1462, 1468, 1463, 1465, 1456, 1469, 1457, 1470, 1465, 1467, + 1458, 1466, 1466, 1475, 1467, 1471, 1472, 1476, 1477, 1468, + 1464, 1473, 1474, 1476, 1478, 1469, 1475, 1470, 1479, 1471, - 1477, 1480, 1476, 1481, 1475, 1478, 1478, 1483, 1481, 1482, - 1485, 1484, 1479, 1486, 1482, 1488, 1487, 1489, 1491, 1485, - 1480, 1490, 1490, 1489, 1488, 1487, 1483, 1484, 1487, 1492, - 1493, 1494, 1486, 1495, 1496, 1499, 1500, 1502, 1491, 1501, - 1501, 1503, 1492, 1505, 1505, 1494, 1496, 1504, 1493, 1495, - 1503, 1507, 1504, 1502, 1500, 1506, 1507, 1508, 1505, 1509, - 1499, 1510, 1513, 1511, 1506, 1515, 1514, 1506, 1511, 1511, - 1518, 0, 1516, 1519, 1519, 1508, 1513, 1516, 1517, 1510, - 1509, 1514, 1525, 1520, 1517, 1521, 1522, 1515, 1518, 1520, - 1521, 1523, 1522, 1526, 1527, 1528, 1529, 1523, 1530, 1529, + 1472, 1480, 1488, 1473, 1474, 1482, 1482, 1483, 1477, 1486, + 1484, 1487, 1479, 1489, 1478, 1484, 1485, 1485, 1491, 1490, + 1493, 1494, 1480, 1492, 1486, 1487, 1488, 1483, 1490, 1493, + 1492, 1489, 1493, 1491, 1496, 1498, 1499, 1494, 1502, 1499, + 1500, 1500, 1501, 1501, 1503, 1504, 1505, 1505, 1504, 1496, + 1502, 1506, 1507, 1508, 1496, 1510, 1509, 1511, 1508, 1512, + 1498, 1509, 1503, 1513, 1506, 1518, 1514, 1515, 1512, 1517, + 1517, 1507, 1520, 1511, 1510, 1514, 1515, 1516, 1514, 1519, + 1521, 1522, 1513, 1516, 1523, 1518, 1526, 1527, 1528, 1528, + 1520, 1529, 1519, 1530, 1521, 1531, 1523, 1522, 1532, 1532, - 1527, 1532, 1525, 1534, 1530, 1529, 1535, 1526, 1528, 1532, - 1536, 1537, 1559, 1538, 1539, 1540, 1541, 1559, 1536, 1545, - 1537, 1547, 1534, 1542, 1542, 1535, 1538, 1539, 1543, 1540, - 1541, 1544, 1545, 1548, 1543, 1546, 1546, 1544, 1549, 1550, - 1551, 1547, 1552, 1553, 1554, 1542, 1551, 1556, 1556, 1557, - 1558, 1548, 1550, 1560, 1558, 1561, 1562, 1549, 1560, 1553, - 1561, 1563, 1554, 1565, 1552, 1562, 1566, 1566, 1567, 1557, - 1568, 1569, 1570, 1570, 1571, 1575, 1572, 1573, 1565, 1574, - 1576, 1578, 1568, 1572, 1563, 1579, 1577, 1567, 1571, 1573, - 1569, 1574, 1577, 1578, 1575, 1580, 1581, 1581, 1586, 1582, + 1531, 1534, 1530, 1533, 1535, 1527, 1534, 1529, 1536, 1537, + 1540, 1526, 1533, 1532, 1538, 1533, 1541, 1542, 1543, 1538, + 1538, 47, 1535, 1543, 1540, 1545, 1544, 1537, 1552, 1536, + 1547, 1541, 1544, 1546, 1546, 1548, 1547, 1553, 1549, 1542, + 1548, 1550, 1555, 1545, 1549, 1561, 1554, 1550, 1552, 1559, + 1556, 1553, 1554, 1556, 1557, 1555, 1562, 1559, 1563, 1556, + 1557, 1564, 18, 1565, 1561, 1566, 1563, 1567, 1568, 1574, + 1564, 1569, 1569, 1570, 1571, 1562, 1565, 1572, 1566, 1570, + 1571, 1567, 1568, 1573, 1573, 1575, 1576, 1577, 1578, 1574, + 1572, 1579, 1580, 1569, 1578, 1584, 1581, 1583, 1583, 1586, - 1576, 1580, 1582, 1579, 1583, 1583, 1585, 1586, 1587, 1588, - 1588, 1585, 1589, 1590, 1587, 1590, 1591, 1592, 1593, 1591, - 1594, 1595, 1596, 1597, 1589, 1600, 1601, 1596, 1599, 1598, - 1600, 1602, 1597, 1606, 1606, 1601, 1608, 1592, 1594, 1595, - 1593, 1598, 1603, 1599, 1604, 1605, 1607, 1603, 1601, 1604, - 1609, 1602, 1607, 1611, 1603, 1610, 1612, 1608, 1612, 1617, - 1605, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1609, - 1621, 1610, 1623, 1611, 0, 1613, 1623, 1613, 1628, 1617, - 1618, 1618, 1619, 1619, 1622, 1622, 1624, 1625, 1627, 1620, - 1625, 1621, 1624, 1629, 1627, 1630, 1628, 1631, 1636, 1629, + 1577, 1589, 1585, 1575, 1586, 1576, 1585, 1587, 1580, 1590, + 1589, 1588, 1587, 1579, 1581, 1584, 1588, 1592, 1593, 1594, + 1594, 1595, 1596, 1597, 1598, 1598, 1601, 1599, 1600, 1592, + 1603, 1602, 1590, 1593, 1596, 1600, 1604, 1607, 1601, 1605, + 1595, 1599, 1597, 1602, 1608, 1605, 1606, 1609, 1609, 1603, + 1608, 1610, 1611, 1611, 1610, 1607, 1604, 1613, 1606, 1614, + 1615, 1617, 1613, 1616, 1616, 1618, 1615, 1618, 1614, 1619, + 1620, 1621, 1619, 1617, 1622, 1624, 1623, 1625, 1628, 1626, + 1624, 1627, 1630, 1628, 1632, 1636, 1625, 17, 1629, 1632, + 1620, 1626, 1622, 1621, 1623, 1631, 1627, 1629, 1633, 1635, - 1631, 1632, 1632, 1633, 1633, 1634, 1637, 1638, 0, 1635, - 1639, 1634, 1643, 1638, 1643, 1642, 1644, 1645, 1636, 1641, - 1630, 1635, 1635, 1635, 1641, 1641, 1637, 1644, 1635, 1642, - 1639, 1646, 1645, 1647, 1648, 1649, 1651, 1646, 1650, 1650, - 1652, 1652, 1647, 1653, 1654, 1655, 1655, 1656, 1656, 1657, - 1660, 1660, 1661, 1665, 1648, 1662, 1649, 1668, 1664, 1666, - 1667, 1667, 1651, 1653, 1662, 1666, 1654, 1664, 1669, 1657, - 1672, 1671, 1670, 1674, 1665, 1673, 1673, 1661, 1668, 1670, - 1671, 1675, 1677, 1669, 1678, 1679, 1680, 1677, 1681, 1682, - 1678, 1683, 1683, 1680, 1681, 1682, 1672, 1675, 1684, 1674, + 1631, 1637, 1630, 1634, 1634, 1635, 1636, 1631, 1638, 1639, + 1629, 1641, 1640, 1633, 1640, 1642, 1642, 1643, 1643, 1645, + 1637, 1644, 1644, 1648, 1638, 1641, 1649, 1641, 1656, 1639, + 1646, 1646, 1647, 1647, 1650, 1650, 1651, 1652, 1653, 1645, + 1651, 1653, 1655, 1652, 1648, 1657, 1656, 1649, 1655, 1658, + 1659, 1657, 1665, 1659, 1660, 1660, 1661, 1661, 1662, 1663, + 1666, 1667, 1668, 1662, 1664, 1663, 1672, 1667, 1672, 1675, + 1673, 1674, 1665, 1671, 1658, 1675, 1664, 1664, 1664, 1670, + 1666, 1673, 1668, 1664, 1670, 1670, 1674, 1671, 1676, 1677, + 1678, 1679, 1679, 1680, 1681, 1681, 1682, 1676, 1683, 1684, - 1685, 1686, 1688, 1684, 1687, 1679, 1690, 1689, 1691, 1685, - 1689, 1692, 1692, 1693, 1688, 1695, 1694, 1696, 1699, 1693, - 1700, 1686, 1694, 1687, 1690, 1697, 1701, 1702, 1702, 1697, - 1703, 1701, 1696, 1704, 1691, 1695, 1706, 1707, 1699, 0, - 1708, 1707, 1700, 1709, 1714, 1697, 1708, 1712, 1704, 1703, - 1710, 1710, 1709, 1711, 1715, 1706, 1716, 1711, 1712, 1713, - 1713, 1717, 1718, 1712, 1719, 1714, 1717, 1720, 1715, 1722, - 1721, 1723, 1723, 1720, 1722, 1716, 1724, 1724, 1727, 1725, - 1728, 1729, 1718, 1725, 1719, 1721, 1736, 1727, 1730, 1730, - 1737, 1728, 1732, 1732, 1733, 1737, 1728, 1734, 1735, 1733, + 1684, 1685, 1685, 1686, 1689, 1689, 1690, 1694, 1691, 1677, + 1698, 1678, 1693, 1696, 1696, 1697, 1682, 1691, 1695, 1680, + 1683, 1693, 1699, 1686, 1695, 1698, 1700, 1701, 1694, 1699, + 1703, 1690, 1702, 1702, 1704, 1700, 1697, 1706, 1707, 1708, + 1709, 1713, 1706, 1710, 1707, 1711, 1713, 1709, 1714, 1710, + 1704, 1711, 1715, 1701, 1712, 1712, 1703, 1714, 1716, 1708, + 1718, 1717, 1719, 1718, 1720, 1721, 1721, 1724, 1722, 1723, + 1725, 1728, 1715, 1717, 1722, 1723, 1730, 1716, 1726, 1729, + 1719, 1730, 1726, 1731, 1731, 1725, 1732, 1724, 1733, 1735, + 1720, 1728, 1736, 1737, 0, 1738, 1736, 1743, 1726, 1737, - 1733, 1729, 1738, 1734, 1735, 1739, 1741, 1743, 1744, 1742, - 1745, 1739, 1736, 1742, 1738, 1746, 1745, 1747, 1741, 1743, - 1748, 1751, 1750, 1747, 1752, 1754, 1755, 1755, 1754, 1752, - 1756, 1756, 1748, 1744, 1750, 1757, 1757, 1746, 1758, 1759, - 1751, 1760, 1763, 1761, 1762, 1759, 0, 1760, 1761, 1765, - 1762, 1763, 1767, 1768, 1765, 1767, 1769, 1769, 1758, 1771, - 1772, 1773, 1774, 1774, 1775, 1768, 1773, 1778, 1778, 1776, - 1777, 1771, 1772, 1775, 1776, 1777, 1779, 1780, 1783, 1781, - 1782, 1785, 1783, 1784, 1786, 1787, 1780, 1785, 1784, 1788, - 1789, 1791, 1791, 1792, 1787, 1797, 1779, 1781, 0, 1782, + 1741, 1729, 1745, 1733, 1738, 1732, 1739, 1739, 1735, 1740, + 1744, 1741, 1746, 1740, 1742, 1742, 1741, 1746, 1743, 1747, + 1748, 1745, 1749, 1750, 1744, 1751, 1752, 1752, 1749, 1754, + 1751, 1753, 1753, 1754, 1756, 1757, 1758, 1765, 1750, 1747, + 1748, 1759, 1759, 1756, 1761, 1761, 1757, 1762, 1763, 1764, + 1773, 1757, 1762, 1762, 1763, 1764, 1758, 1766, 1767, 1768, + 1770, 1772, 1766, 1765, 1771, 1768, 1775, 1778, 1771, 1811, + 1767, 1774, 1770, 1772, 1776, 1773, 1777, 1774, 1780, 1778, + 1776, 1777, 1781, 1784, 1782, 1788, 1784, 1811, 1775, 1782, + 1780, 1785, 1785, 1786, 1786, 1787, 1787, 1789, 1790, 1793, - 1793, 1795, 1786, 1791, 1789, 1794, 1794, 1788, 1796, 1793, - 1795, 1792, 1798, 1799, 1802, 1802, 1797, 1798, 1804, 1805, - 1796, 1804, 1806, 1809, 1808, 1810, 1799, 1811, 1812, 1812, - 1813, 1810, 1813, 1814, 1814, 1805, 1817, 1809, 1806, 1808, - 1815, 1818, 1820, 1817, 1811, 1819, 1819, 1821, 1815, 1825, - 1822, 1820, 1823, 1824, 1826, 1830, 1832, 1827, 1829, 1831, - 1831, 1818, 1822, 1827, 1823, 1824, 1833, 1830, 1821, 1826, - 1834, 1836, 1835, 1834, 1832, 1825, 1827, 1835, 1829, 1838, - 1839, 1840, 1839, 1841, 1838, 1842, 1833, 1844, 1841, 1846, - 1850, 1836, 1842, 1847, 1848, 1849, 1844, 1849, 1852, 1840, + 1792, 1781, 1791, 1789, 1790, 1788, 1792, 1791, 1793, 1795, + 1797, 1798, 1801, 1797, 1795, 1799, 1799, 1802, 1804, 1804, + 1803, 1805, 1806, 1798, 1801, 1803, 1807, 1806, 1809, 1802, + 1805, 1807, 1808, 1808, 1810, 1812, 1813, 1814, 1815, 1816, + 1813, 1817, 1814, 1810, 1815, 1818, 1819, 1822, 1809, 1823, + 1817, 1827, 1821, 1821, 1812, 1824, 1824, 1816, 1823, 1825, + 1819, 1826, 1828, 1818, 1821, 1822, 1829, 1828, 1825, 1832, + 1832, 1834, 1827, 1826, 1834, 1835, 1836, 1840, 1838, 1829, + 1839, 1841, 1848, 1840, 1842, 1842, 1843, 1845, 1843, 1844, + 1844, 1835, 1836, 1838, 1839, 1845, 1847, 1849, 1841, 1850, - 1852, 1853, 1847, 1854, 1854, 1855, 1848, 1846, 1856, 1850, - 1857, 1858, 1857, 1856, 1859, 1853, 1858, 1860, 1861, 1859, - 1862, 1864, 1863, 1867, 1865, 1868, 1862, 1863, 1869, 1869, - 1871, 1855, 1865, 1872, 1864, 1860, 1870, 1870, 1861, 1868, - 1873, 1876, 1867, 1874, 1877, 1871, 1873, 1875, 1874, 1875, - 1878, 1878, 1877, 1872, 1879, 1880, 1880, 1881, 1881, 1876, - 1877, 1882, 1883, 1884, 1886, 1888, 1879, 1883, 1891, 1887, - 1882, 1887, 1889, 1886, 1890, 1893, 1886, 1889, 1889, 1894, - 1891, 1884, 1897, 1890, 1894, 1895, 1888, 1893, 1898, 1899, - 1895, 1900, 1900, 1901, 1902, 1897, 1904, 1903, 1899, 1905, + 1850, 1851, 1852, 1847, 1848, 1856, 1853, 1854, 1855, 1857, + 1851, 1863, 1860, 1861, 0, 1858, 1864, 1849, 1853, 1854, + 1855, 1858, 1867, 1852, 1857, 1861, 1862, 1862, 1871, 1863, + 1865, 1856, 1860, 1865, 1858, 1866, 1864, 1870, 1869, 1870, + 1866, 1873, 1867, 1869, 1872, 1875, 1871, 1877, 1873, 1872, + 1878, 1879, 1881, 1880, 1875, 1880, 1883, 1886, 1883, 1878, + 1884, 1885, 1885, 1879, 1887, 1877, 1888, 1889, 1888, 1887, + 1890, 1881, 1889, 1891, 1884, 1890, 1892, 1894, 1893, 1895, + 1896, 1898, 1894, 1886, 1893, 1899, 1900, 1900, 1896, 1901, + 1901, 1891, 1895, 1902, 1903, 1904, 1892, 1905, 1907, 1899, - 1909, 1910, 1911, 1907, 1908, 1918, 1910, 1911, 1898, 1912, - 1904, 1901, 1902, 1903, 1905, 1907, 1908, 1915, 1912, 1917, - 1909, 1920, 1919, 1915, 1921, 1917, 1922, 1926, 1918, 1923, - 1923, 1924, 1925, 1925, 1927, 1922, 1915, 1919, 1927, 1920, - 1924, 1929, 1928, 1935, 0, 1930, 1926, 1928, 1934, 1921, - 1930, 1930, 1931, 1932, 1929, 1944, 1934, 1933, 1931, 1932, - 1933, 1938, 1938, 1935, 1939, 1939, 1940, 1941, 1941, 1942, - 1942, 1943, 1945, 1944, 1950, 1940, 1946, 1949, 1945, 1939, - 1950, 1946, 1949, 1943, 1947, 1947, 1948, 1948, 1952, 1953, - 1939, 1954, 1952, 1956, 1957, 1954, 1958, 1959, 1960, 1957, + 1898, 1904, 1905, 1906, 1908, 1906, 1909, 1909, 1902, 1910, + 1911, 1911, 1908, 1913, 1903, 1915, 1907, 1912, 1912, 1914, + 1908, 1910, 1913, 1917, 1914, 1918, 1919, 1918, 1922, 1921, + 1924, 1920, 1917, 1915, 1925, 1917, 1920, 1920, 1921, 1925, + 1922, 1926, 1924, 1928, 1929, 1930, 1926, 1919, 1931, 1931, + 1932, 1933, 1935, 1938, 1930, 1934, 1928, 1936, 1939, 1940, + 1952, 1949, 1941, 0, 1929, 1938, 1935, 1941, 1932, 1933, + 1939, 1934, 1936, 1942, 1943, 1946, 1948, 1950, 1942, 1940, + 1951, 1946, 1948, 1943, 1949, 1952, 1953, 1954, 1954, 1957, + 1955, 1961, 1950, 0, 1946, 1953, 1956, 1956, 1951, 1955, - 1962, 1963, 1961, 1960, 1965, 1964, 1966, 1966, 1968, 1953, - 1964, 1967, 1959, 1970, 1972, 1967, 1962, 1969, 1956, 1958, - 1961, 1963, 1969, 1968, 1971, 1973, 1965, 1974, 1975, 1978, - 1973, 1976, 1976, 1972, 1979, 1980, 1971, 1978, 1981, 1970, - 1974, 1982, 1984, 1983, 1985, 1986, 1975, 1989, 1989, 1988, - 1994, 1994, 1990, 1979, 1980, 1990, 1985, 1991, 1992, 2005, - 1993, 1981, 1983, 1984, 1988, 1982, 1986, 1995, 1995, 1997, - 1991, 2000, 1992, 1993, 1996, 1996, 1998, 1999, 1999, 2005, - 2000, 2001, 2001, 2000, 1997, 2002, 2004, 2006, 2007, 1998, - 2002, 2004, 2008, 2008, 2009, 2009, 2010, 2011, 2011, 2012, + 1958, 1959, 1960, 1963, 1958, 1962, 1959, 1967, 1957, 1963, + 1962, 1962, 1964, 1961, 1965, 1960, 1966, 1965, 1964, 1970, + 1970, 1971, 1971, 1972, 1966, 1973, 1973, 1967, 1974, 1974, + 1975, 1976, 1972, 1977, 1985, 1978, 1971, 1979, 1979, 1977, + 1978, 1981, 1975, 1980, 1980, 1982, 1981, 1971, 1984, 1976, + 1988, 1982, 1984, 1986, 1985, 1989, 1990, 1986, 1991, 1992, + 1989, 1994, 1993, 1995, 1992, 1996, 1997, 1998, 1998, 2000, + 1996, 2002, 1999, 1991, 2004, 1988, 1999, 1994, 2003, 1990, + 1993, 2001, 2005, 1995, 2000, 2006, 2001, 2005, 1997, 2007, + 2003, 2008, 2008, 2004, 2010, 2011, 2012, 2002, 2006, 2013, - 2007, 2013, 2013, 2014, 2015, 2016, 2016, 2006, 2018, 2015, - 2017, 2017, 2019, 2020, 2021, 2010, 2025, 2012, 2014, 2023, - 2027, 2019, 2018, 0, 2023, 2024, 2024, 2020, 2026, 2026, - 2028, 2029, 2032, 2021, 2029, 2025, 2028, 2033, 2027, 2030, - 2030, 2031, 2031, 2034, 2035, 2035, 2037, 2038, 2039, 2040, - 2042, 2032, 2033, 2040, 2043, 2030, 2041, 2041, 2044, 2043, - 2045, 2048, 2034, 2039, 2047, 2047, 2037, 2049, 2050, 2042, - 2038, 2051, 2052, 2044, 2049, 2045, 2053, 2054, 2054, 2055, - 2059, 2048, 2050, 2056, 2063, 2056, 2064, 2062, 2055, 2051, - 2052, 2057, 2059, 2060, 2057, 2061, 2065, 2063, 2060, 2066, + 2014, 2015, 2010, 2020, 2016, 2017, 2018, 2007, 2021, 2021, + 2023, 2022, 2025, 2023, 2011, 2012, 2022, 2017, 2020, 2024, + 2015, 2026, 2013, 2030, 2014, 2016, 2025, 2018, 2027, 2027, + 2028, 2028, 2024, 2031, 2026, 2029, 2029, 2038, 2030, 2032, + 2032, 2033, 2034, 2034, 2035, 2039, 2031, 2037, 2040, 2035, + 2033, 2043, 2037, 2033, 2041, 2041, 2045, 2038, 2042, 2042, + 2040, 2044, 2044, 2046, 2046, 2039, 2047, 2048, 2049, 2049, + 2043, 2051, 2048, 2052, 2045, 2050, 2050, 2053, 2054, 2056, + 2058, 2047, 2052, 2060, 2056, 2051, 2057, 2057, 2059, 2059, + 2061, 2053, 2062, 2063, 2063, 2062, 2061, 2054, 2065, 2058, - 2061, 2065, 2053, 2068, 2070, 2069, 2072, 2064, 2068, 2057, - 2069, 2057, 2062, 2074, 2071, 2073, 2076, 2075, 2074, 2070, - 2071, 2073, 2075, 2077, 2079, 2066, 2078, 2072, 2080, 2078, - 2081, 2082, 2083, 2079, 2088, 0, 2077, 2080, 2084, 2081, - 2082, 2076, 2085, 2086, 2084, 2094, 2083, 2086, 2085, 2090, - 2091, 2091, 2096, 2092, 2088, 2093, 2093, 2097, 2090, 2092, - 2098, 2098, 2099, 2100, 2093, 2094, 2102, 2094, 2096, 2103, - 2105, 2104, 2100, 2097, 2109, 2108, 2107, 2099, 2102, 2107, - 2108, 2110, 2105, 2111, 2111, 2103, 2104, 2112, 2112, 2114, - 2114, 2116, 2115, 2110, 2109, 2115, 2116, 2117, 2118, 2119, + 2066, 2060, 2064, 2064, 2067, 2068, 2068, 2070, 2071, 2063, + 2072, 2075, 2073, 2074, 2074, 2066, 2073, 2065, 2077, 2076, + 2078, 2080, 2080, 2067, 2076, 2072, 2081, 2070, 2083, 2082, + 2075, 2071, 2084, 2077, 2085, 2078, 2082, 2086, 2087, 2087, + 2088, 2089, 2083, 2089, 2090, 2092, 2081, 2090, 2093, 2088, + 2084, 2094, 2085, 2093, 2095, 2096, 2094, 2092, 2099, 2097, + 2098, 2101, 2090, 2086, 2090, 2098, 2101, 2102, 2096, 2104, + 2103, 2105, 2102, 2107, 2109, 2104, 2106, 2110, 2107, 2095, + 2097, 2108, 2106, 2116, 2099, 2103, 2108, 2112, 2111, 2113, + 2110, 2111, 2105, 2114, 2115, 2117, 2112, 2116, 2113, 2109, - 2119, 2120, 2122, 2117, 2118, 2121, 2121, 2123, 2124, 2125, - 2125, 2126, 2127, 2128, 2122, 2120, 2130, 2126, 2128, 2131, - 2130, 2123, 2131, 2132, 2132, 2133, 2127, 2124, 2134, 2135, - 2133, 2136, 2137, 2137, 2138, 2136, 2140, 2134, 2141, 2142, - 2143, 2140, 2144, 2145, 2149, 2146, 2144, 2138, 2151, 2135, - 2146, 2147, 2159, 2159, 2143, 2148, 2161, 2147, 2141, 2142, - 2152, 2148, 2149, 2145, 2151, 2152, 2153, 2154, 2155, 2158, - 2155, 2160, 2153, 2165, 2160, 2154, 2162, 2162, 2166, 2165, - 2164, 2173, 2161, 2158, 2164, 2167, 2167, 2168, 2171, 2171, - 2166, 2175, 2176, 2179, 2180, 2181, 2168, 2182, 2179, 2173, + 2118, 2117, 2114, 2115, 2119, 2121, 2118, 2123, 2119, 2124, + 2124, 2125, 2126, 2126, 2127, 2128, 2123, 2125, 2130, 2127, + 2131, 2126, 2132, 2132, 2133, 2121, 2137, 2142, 2136, 2134, + 2138, 2139, 2142, 2143, 2130, 2128, 2131, 2128, 2134, 2133, + 2136, 2141, 2137, 2139, 2141, 2138, 2144, 2145, 2145, 2146, + 2146, 2148, 2148, 2143, 2149, 2150, 2151, 2149, 2144, 2152, + 2150, 2154, 2151, 2153, 2153, 2152, 2155, 2155, 2156, 2157, + 2158, 2159, 2159, 2160, 2161, 2154, 2162, 2169, 2164, 2160, + 2156, 2162, 2164, 2157, 2165, 2166, 2166, 2165, 2161, 2158, + 2167, 2168, 2170, 2171, 2171, 2167, 2170, 2169, 2172, 2174, - 2181, 2189, 2182, 2183, 2183, 2175, 2185, 2185, 2176, 2187, - 2188, 2188, 2190, 2191, 2193, 2187, 2194, 2189, 2191, 2198, - 2180, 2195, 2195, 2197, 2199, 2198, 2200, 2204, 2194, 2202, - 2202, 2205, 2197, 2193, 2190, 2203, 2207, 2207, 2203, 2208, - 2208, 2200, 2199, 2209, 2210, 2211, 2204, 2212, 2209, 2205, - 2214, 2213, 2212, 2213, 2211, 2215, 2216, 2218, 2217, 0, - 2219, 2225, 2210, 2217, 2214, 2219, 2220, 2220, 2216, 2215, - 2221, 2221, 2222, 2222, 2223, 2223, 2224, 2218, 2226, 2225, - 2227, 2227, 2229, 2226, 2228, 2228, 2230, 2231, 2224, 2232, - 2233, 2233, 2234, 2237, 2229, 2235, 2235, 2238, 2230, 2236, + 2168, 2175, 2176, 2177, 2174, 2178, 2179, 2180, 2181, 2178, + 2182, 2172, 2180, 2183, 2181, 2185, 2182, 2177, 2186, 2187, + 2189, 2175, 2176, 2188, 2187, 2193, 2179, 2185, 2189, 2188, + 2190, 2183, 2190, 2196, 2186, 2194, 2194, 2195, 2200, 2193, + 2195, 2197, 2197, 2199, 2200, 2201, 2203, 2199, 2202, 2202, + 2206, 2206, 2208, 2210, 2215, 2203, 2211, 2201, 2214, 2196, + 2216, 2217, 2224, 2214, 2225, 2216, 2217, 2210, 2218, 2218, + 2208, 2222, 2211, 2220, 2220, 2223, 2223, 2222, 2224, 2226, + 2215, 2228, 2229, 2232, 2226, 2233, 2225, 2230, 2230, 2234, + 2235, 2233, 2232, 2239, 2229, 2237, 2237, 2240, 2238, 2244, - 2236, 2239, 2240, 2241, 2237, 2232, 2243, 2231, 2239, 2238, - 2242, 2234, 2244, 2246, 2240, 2242, 2245, 2245, 2247, 2248, - 2249, 2250, 2246, 2241, 2251, 2253, 2243, 2252, 2252, 2257, - 2258, 2254, 2244, 2249, 2253, 2255, 2259, 2260, 2251, 2248, - 2260, 2261, 2272, 2262, 2247, 2250, 2254, 2257, 2262, 2263, - 2255, 2271, 2258, 2272, 2263, 2261, 2264, 2264, 2273, 2259, - 2265, 2265, 2266, 2266, 2268, 2268, 2270, 2270, 2275, 2271, - 2277, 2276, 2279, 2278, 2280, 2282, 2281, 2273, 2281, 2283, - 2284, 2279, 2285, 2285, 2287, 2287, 2288, 2289, 2275, 2276, - 2290, 2290, 2277, 2278, 2280, 2282, 2289, 2283, 2284, 2294, + 2228, 2238, 2242, 2242, 2244, 2235, 2245, 2234, 2243, 2243, + 2246, 2247, 2239, 2249, 2250, 2240, 2247, 2251, 2248, 2246, + 2248, 2252, 2253, 2260, 2245, 2254, 2252, 2249, 2250, 2251, + 2254, 2255, 2255, 2256, 2256, 2257, 2257, 2258, 2258, 2259, + 2261, 2260, 2253, 2262, 2262, 2261, 2263, 2263, 2264, 2265, + 2266, 2259, 2267, 2268, 2268, 2269, 2270, 2270, 2271, 2271, + 2264, 2265, 2272, 2273, 2274, 2275, 2276, 2277, 2267, 2278, + 2266, 2274, 2277, 2272, 2269, 2273, 2279, 2275, 2280, 2280, + 2282, 2281, 2283, 2285, 2284, 2286, 2276, 2293, 2287, 2278, + 2281, 2288, 2288, 2290, 2289, 2291, 2279, 2284, 2294, 2286, - 2292, 2293, 2293, 2295, 2296, 2297, 2298, 2299, 2288, 2292, - 2300, 2296, 2301, 2302, 2302, 2303, 2303, 2294, 2305, 2306, - 2297, 2295, 2304, 2307, 2298, 2299, 2300, 2308, 2304, 2309, - 2310, 2301, 2308, 2311, 2306, 2312, 2305, 2312, 2311, 2313, - 2313, 2314, 2307, 2314, 2315, 2315, 2317, 2319, 2320, 2309, - 2310, 2321, 2322, 2323, 2324, 2328, 2319, 2325, 2323, 2329, - 2330, 2330, 2329, 2321, 2331, 2317, 2332, 2320, 2333, 2333, - 2336, 2341, 2322, 2334, 2324, 2328, 2325, 2334, 2337, 2331, - 2338, 2338, 2337, 2339, 2332, 2336, 2341, 2342, 2343, 2344, - 2344, 2346, 2347, 2348, 2349, 2349, 2339, 2348, 2350, 2351, + 2287, 2295, 2283, 2289, 2297, 2293, 2282, 2285, 2290, 2296, + 2291, 2298, 2296, 0, 2299, 2307, 2298, 2309, 2297, 2299, + 2294, 2300, 2300, 2308, 2295, 2301, 2301, 2302, 2302, 2304, + 2304, 2306, 2306, 2307, 2308, 2311, 2309, 2313, 2312, 2315, + 2314, 2316, 2317, 2318, 2317, 2324, 2319, 2320, 2315, 2321, + 2321, 2323, 2323, 2325, 2330, 2311, 2312, 2326, 2326, 2313, + 2314, 2316, 2325, 2318, 2319, 2320, 2328, 2324, 2329, 2329, + 2331, 2332, 2330, 2334, 2333, 2328, 2335, 2336, 2332, 2337, + 2338, 2338, 2339, 2339, 2340, 2340, 2341, 2342, 2331, 2333, + 2344, 2334, 2341, 2336, 2335, 2343, 2345, 2346, 2337, 2347, - 2351, 2347, 2353, 2346, 2352, 2354, 2355, 2342, 2343, 2352, - 2362, 2353, 2356, 2356, 2361, 2361, 2364, 2350, 2355, 2363, - 2363, 2354, 2365, 2369, 2366, 2367, 2368, 2368, 2379, 2364, - 2371, 2371, 2362, 2366, 2367, 2365, 2374, 2375, 2369, 2376, - 2377, 2374, 2375, 2378, 2381, 2377, 2380, 2379, 2383, 2384, - 2386, 2378, 2381, 2376, 2384, 2380, 2385, 2387, 2387, 2388, - 2388, 2385, 2389, 2383, 2391, 2386, 2390, 2392, 2393, 2389, - 2394, 2390, 2395, 2395, 2393, 2394, 2396, 2402, 2397, 2398, - 2398, 2404, 2391, 2397, 2404, 2392, 2399, 2399, 2403, 2403, - 2402, 2396, 2405, 2414, 2406, 2407, 2408, 2405, 2405, 2406, + 0, 2345, 2348, 2354, 2349, 2342, 2349, 2348, 2357, 2344, + 2343, 2350, 2350, 2351, 2356, 2351, 2358, 2346, 2359, 2347, + 2352, 2352, 2354, 2356, 2360, 2361, 2365, 2357, 2358, 2360, + 2362, 2366, 2367, 2367, 2366, 2368, 2369, 2371, 2359, 2370, + 2370, 2371, 2373, 2374, 2378, 2361, 2365, 2374, 2376, 2362, + 2368, 2375, 2375, 2379, 2369, 2380, 2383, 2373, 2384, 2378, + 2385, 2376, 2381, 2381, 2385, 2386, 2386, 2384, 2383, 2387, + 2388, 2388, 2389, 2379, 2390, 2380, 2391, 2389, 2392, 2393, + 2393, 2398, 2398, 2390, 2399, 2400, 2400, 2401, 2387, 2402, + 2392, 0, 2391, 2406, 2403, 2404, 2405, 2405, 2408, 2408, - 2407, 2409, 2408, 2410, 2411, 2409, 2412, 2413, 2410, 0, - 2415, 2416, 2418, 2411, 2414, 2413, 2415, 2416, 2417, 2421, - 2420, 2412, 2421, 2417, 2418, 2420, 2423, 2425, 2426, 2427, - 2428, 2429, 2425, 2426, 2435, 2430, 2431, 2431, 2423, 2432, - 2429, 2436, 2440, 2428, 2430, 2437, 2439, 2427, 2432, 2438, - 2438, 2440, 2441, 2435, 2442, 2442, 2443, 2445, 2447, 2448, - 2450, 2436, 0, 2448, 2437, 2439, 2455, 2441, 2449, 2449, - 2451, 2452, 2445, 2453, 2455, 2443, 2451, 2452, 2447, 2453, - 2454, 2454, 2456, 2458, 2459, 2450, 2461, 2456, 2462, 2463, - 2461, 2466, 2458, 2465, 2465, 2467, 2467, 2459, 2468, 2468, + 2401, 2413, 2402, 2403, 2404, 2411, 2399, 2412, 2406, 2414, + 2411, 2415, 2412, 2416, 2414, 2413, 2417, 2421, 2418, 2415, + 2420, 2423, 2421, 2422, 2427, 2417, 2418, 2429, 2422, 2424, + 2424, 2427, 2416, 2425, 2425, 2420, 2423, 2426, 2426, 2428, + 2430, 2431, 2434, 2432, 2428, 2429, 2435, 2431, 2432, 2433, + 2433, 2435, 2436, 2436, 2437, 2437, 2440, 2434, 2430, 2441, + 2441, 2442, 2443, 0, 2442, 2444, 2445, 2443, 2443, 2440, + 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2447, 2446, 2448, + 2451, 2452, 2455, 2453, 2449, 2456, 2454, 2455, 2451, 2453, + 2458, 2450, 2454, 2459, 2461, 2458, 2459, 2456, 2463, 2464, - 2470, 2470, 2462, 2471, 2463, 2472, 2476, 2471, 2477, 2466, - 2472, 2474, 2474, 2477, 2479, 2478, 2481, 2482, 2482, 2479, - 2479, 2484, 2484, 2485, 2485, 2486, 2476, 2478, 2486, 2487, - 2489, 2491, 2492, 2492, 2493, 2493, 2481, 2494, 2494, 2495, - 2496, 2496, 2487, 2497, 2498, 2499, 2500, 2506, 2489, 2501, - 2501, 2491, 2500, 2502, 2495, 2505, 2497, 2502, 2507, 2499, - 2505, 2505, 2498, 2508, 2511, 2509, 2510, 2513, 2513, 2512, - 2506, 2509, 2510, 2512, 2516, 2521, 2518, 2519, 2507, 2516, - 2519, 2523, 2522, 2508, 2518, 2522, 2524, 2525, 2526, 2511, - 2527, 2524, 2528, 2528, 2532, 2529, 2531, 2542, 2523, 2523, + 2465, 2466, 2452, 2463, 2464, 2474, 2461, 2467, 2468, 2469, + 2469, 2470, 2475, 2480, 2466, 2476, 2467, 2468, 2465, 2478, + 2470, 2477, 2477, 2482, 2474, 2484, 2479, 2486, 2480, 2481, + 2481, 2489, 2475, 2487, 2476, 2479, 2495, 2487, 2478, 2490, + 2484, 2495, 2482, 2488, 2488, 2490, 2491, 2486, 2492, 2493, + 2493, 2494, 2491, 2497, 2492, 2498, 2489, 2500, 2501, 2494, + 2502, 2500, 2497, 2504, 2504, 2505, 2506, 2506, 2498, 2507, + 2507, 2515, 2501, 2509, 2509, 2502, 2510, 2511, 2513, 2513, + 2510, 2516, 2511, 2505, 2517, 2520, 2516, 2518, 2521, 2521, + 2526, 2515, 2518, 2518, 2523, 2523, 2517, 2524, 2524, 2525, - 2521, 2535, 2542, 2530, 2527, 2525, 2530, 2533, 2526, 2529, - 2531, 2534, 2543, 2532, 2530, 2533, 2534, 2534, 2536, 2536, - 2535, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, 2541, - 2544, 2545, 2543, 2546, 2547, 2549, 2549, 2551, 2550, 2554, - 2545, 2550, 2553, 2553, 2556, 2541, 2554, 2555, 2555, 2556, - 2558, 2558, 2559, 2546, 2547, 2551, 2544, 2560, 2561, 2563, - 2565, 2559, 2564, 2564, 2565, 2566, 2560, 2561, 2567, 2569, - 2568, 2570, 2580, 2575, 2566, 2568, 2568, 2563, 2575, 2579, - 2570, 2571, 2569, 2567, 2581, 2571, 2576, 2576, 2578, 2578, - 2583, 2584, 2587, 2579, 2589, 2588, 2592, 2580, 2594, 2583, + 2528, 2530, 2525, 2526, 2534, 2520, 2531, 2531, 2532, 2532, + 2533, 2533, 2535, 2535, 2536, 2537, 2538, 2539, 2528, 2534, + 2546, 2530, 2541, 2539, 2540, 2540, 2541, 2536, 2547, 2545, + 2538, 2548, 2549, 2537, 2545, 2545, 2550, 2551, 2549, 2561, + 2552, 2558, 2550, 2546, 2552, 2553, 2553, 2556, 2547, 2558, + 2559, 2548, 2556, 2559, 2562, 2563, 2564, 2562, 2565, 2566, + 2567, 2564, 2551, 2569, 2561, 2568, 2568, 2570, 2571, 2572, + 2570, 2575, 2563, 2563, 2567, 2573, 2565, 2569, 2570, 2566, + 2574, 2583, 2571, 2573, 2582, 2574, 2574, 2581, 2572, 2582, + 2575, 2576, 2576, 2577, 2577, 2578, 2578, 2579, 2579, 2580, - 2590, 2608, 2581, 2584, 2588, 2596, 2590, 2597, 2592, 2599, - 2596, 2907, 2597, 2907, 2589, 2598, 2598, 2587, 2599, 2594, - 2601, 2608, 2602, 2602, 2607, 2601, 2602, 2604, 2604, 2605, - 2605, 2606, 2606, 2607, 2609, 2610, 2612, 2616, 2613, 2614, - 2610, 2617, 2612, 2613, 2614, 2615, 2615, 2618, 2619, 2621, - 2620, 2628, 2618, 2609, 0, 2616, 2620, 2622, 2622, 2624, - 2625, 2629, 2617, 2624, 2626, 2625, 2619, 2627, 2627, 2626, - 2628, 2630, 2632, 2632, 2621, 2634, 2629, 2635, 2636, 2638, - 2637, 2639, 2636, 2642, 2640, 2643, 2643, 2644, 2634, 2637, - 2635, 2630, 2640, 2641, 2649, 2638, 2646, 2646, 2641, 2659, + 2580, 2583, 2584, 2581, 2585, 2586, 2587, 2589, 2589, 2590, + 2594, 2591, 2590, 2585, 2593, 2593, 2596, 2594, 2595, 2595, + 2603, 2596, 2598, 2598, 2599, 2586, 2587, 2600, 2584, 2591, + 2601, 2604, 2604, 2599, 2606, 2607, 2600, 2605, 2603, 2601, + 2608, 2605, 2609, 2606, 2610, 2608, 2608, 2611, 2619, 2615, + 2607, 2611, 2620, 2610, 2615, 2609, 2616, 2616, 2618, 2618, + 2621, 2623, 2619, 2624, 2627, 2628, 2629, 2630, 2632, 2634, + 2623, 2636, 2649, 2630, 2628, 2624, 2636, 2620, 2621, 2637, + 2632, 2638, 2638, 2639, 2637, 2648, 2629, 0, 2641, 2627, + 2634, 2649, 2639, 2641, 2642, 2642, 2644, 2644, 2642, 2645, - 2639, 2647, 2647, 2651, 2651, 2653, 2644, 2654, 2655, 2642, - 2660, 2656, 2658, 2658, 2664, 2649, 2656, 2661, 2665, 2659, - 2669, 2653, 2671, 2654, 2655, 2663, 2663, 2671, 2664, 2666, - 2666, 2672, 2670, 2660, 2673, 2673, 2661, 2665, 2670, 2675, - 2669, 2674, 2674, 2676, 2676, 2677, 2678, 2679, 2680, 2681, - 2682, 2683, 0, 2672, 2680, 2678, 2677, 2684, 2684, 2675, - 2690, 2685, 2682, 2676, 2685, 2686, 2686, 2679, 2681, 2691, - 2692, 2683, 2690, 2693, 2693, 2694, 2692, 2695, 2694, 2696, - 2698, 2699, 2700, 2695, 2701, 2698, 2699, 2702, 2705, 2691, - 2701, 2703, 2703, 2706, 2707, 2708, 2710, 2696, 2709, 2709, + 2645, 2646, 2646, 2647, 2650, 2648, 2653, 2652, 2656, 2650, + 2654, 2653, 2647, 2652, 2657, 2654, 2655, 2655, 2658, 2659, + 2661, 2660, 2668, 2658, 2662, 2662, 2656, 2660, 2664, 2665, + 2670, 2666, 2664, 2669, 2665, 2657, 2666, 2659, 2667, 2667, + 2674, 2668, 2672, 2672, 2675, 2661, 2677, 2676, 2669, 2678, + 2670, 2676, 2679, 2674, 2680, 2677, 2681, 2675, 2682, 2683, + 2683, 2681, 2680, 2684, 2689, 2678, 2686, 2686, 2687, 2687, + 2693, 2679, 2691, 2691, 2694, 2695, 2696, 2698, 2698, 2699, + 2700, 2696, 2684, 2701, 2682, 2689, 2693, 2703, 2703, 2705, + 2694, 2695, 2704, 2706, 2706, 2709, 2711, 2712, 2710, 2699, - 2705, 2700, 2716, 2711, 2702, 2702, 2713, 2713, 2708, 2714, - 2714, 2706, 2711, 2715, 2726, 2710, 2716, 2717, 2715, 2707, - 2718, 2718, 2717, 2719, 2719, 2720, 2720, 2721, 2723, 2723, - 2728, 2729, 2721, 2726, 2730, 2731, 2731, 2733, 2733, 2735, - 2734, 2736, 2737, 2737, 2738, 2738, 2741, 2784, 2742, 2740, - 2736, 2784, 2728, 2729, 2734, 2740, 2730, 2743, 2750, 2735, - 2746, 2746, 2743, 2748, 2748, 2749, 2741, 2742, 2751, 2752, - 2749, 2753, 2750, 2755, 2751, 2754, 2754, 2757, 2755, 2753, - 2758, 2752, 2759, 2760, 2761, 2763, 2764, 2759, 2765, 2766, - 2761, 2768, 2767, 2763, 2769, 2760, 2770, 2757, 2771, 2773, + 2715, 2711, 2701, 2700, 2710, 2717, 2704, 2719, 2705, 2713, + 2713, 2714, 2714, 2716, 2716, 2709, 2717, 2718, 2720, 2712, + 2715, 2721, 2722, 2723, 2720, 2730, 2718, 2719, 2724, 2724, + 2726, 2726, 2725, 2716, 2722, 2725, 2731, 2730, 2732, 2736, + 2721, 2733, 2733, 2723, 2732, 2734, 2735, 2740, 2734, 2738, + 2739, 2742, 2735, 2741, 2738, 2739, 2731, 2736, 2745, 2741, + 2743, 2743, 2746, 2747, 2748, 2750, 2740, 2751, 2742, 2742, + 2745, 2749, 2749, 2753, 2753, 2756, 2751, 2748, 2754, 2754, + 2746, 2755, 2757, 2766, 2750, 2768, 2755, 2757, 2747, 2756, + 2758, 2758, 2759, 2759, 2760, 2760, 2761, 2763, 2763, 2769, - 2758, 2774, 2778, 2771, 2773, 2764, 2851, 2768, 2765, 2766, - 2767, 2769, 2769, 2775, 2779, 2776, 0, 2770, 2851, 2775, - 2776, 2774, 2778, 2782, 2782, 2783, 2783, 2779, 2788, 2788, - 2790, 2790, 2791, 2791, 2794, 2791, 2792, 2792, 2794, 2792, - 2793, 2793, 2797, 2793, 2796, 2796, 2801, 2798, 2802, 2803, - 2804, 2804, 2807, 2809, 2803, 2808, 2810, 2809, 2811, 0, - 2797, 2798, 2808, 2813, 2818, 2810, 2801, 2814, 2802, 2815, - 2815, 2816, 2816, 2811, 2817, 2817, 2814, 2807, 2819, 2818, - 2820, 2813, 2821, 2819, 2822, 2823, 2824, 2821, 2821, 2820, - 2822, 2825, 2820, 2826, 2827, 2828, 2829, 2829, 2826, 2827, + 2770, 2761, 2766, 2771, 2771, 2773, 2773, 2768, 2775, 2774, + 2776, 2777, 2777, 2778, 2778, 2781, 0, 2782, 2780, 2776, + 2783, 2769, 2770, 2774, 2780, 2783, 2786, 2786, 2775, 2788, + 2788, 2790, 2789, 2791, 2792, 2781, 2782, 2789, 2795, 2791, + 2793, 2794, 2794, 2795, 2797, 2790, 2792, 2798, 2793, 2799, + 2800, 2801, 2803, 2804, 2799, 2805, 2806, 2801, 2808, 2807, + 2803, 2809, 2800, 2810, 2797, 2811, 2813, 2798, 2814, 2818, + 2811, 2813, 2804, 2891, 2808, 2805, 2806, 2807, 2809, 2809, + 2815, 2819, 2816, 0, 2810, 2891, 2815, 2816, 2814, 2818, + 2822, 2822, 2823, 2823, 2819, 2824, 2828, 2828, 2837, 2824, - 2830, 2824, 2831, 2832, 2832, 2858, 2830, 2900, 2831, 0, - 2823, 2900, 2825, 2834, 2828, 2833, 2833, 2858, 2834, 2837, - 2837, 2840, 2840, 2841, 2841, 2842, 2842, 2843, 2843, 2844, - 2844, 2845, 2845, 2846, 2846, 2848, 2849, 2849, 2850, 2852, - 2856, 2854, 2855, 2855, 2848, 2857, 2860, 2850, 2859, 2859, - 2861, 2861, 2864, 2865, 2866, 2856, 2865, 2868, 2857, 2852, - 2854, 2860, 2867, 2867, 2870, 2871, 2874, 2870, 2872, 2873, - 2864, 2871, 2875, 2876, 2873, 2868, 2882, 2878, 2879, 2893, - 2866, 2891, 2872, 2878, 2891, 2874, 2898, 2879, 2902, 2876, - 2875, 2882, 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2899, + 2830, 2830, 2831, 2831, 2834, 2831, 2832, 2832, 2834, 2832, + 2833, 2833, 2838, 2833, 2836, 2836, 2837, 2841, 2842, 2843, + 2844, 2844, 2847, 2848, 2843, 2849, 2838, 2850, 2851, 2849, + 2848, 2853, 2854, 2855, 2855, 2858, 2850, 2841, 2842, 2856, + 2856, 2854, 2863, 2851, 2857, 2857, 2859, 2847, 2860, 2853, + 2858, 2859, 2865, 2861, 2864, 2862, 2868, 2860, 2861, 2861, + 2860, 2862, 0, 2866, 2896, 2867, 2894, 2863, 2866, 2864, + 2867, 2869, 2869, 2865, 2870, 2868, 2871, 2872, 2872, 2896, + 2870, 2874, 2871, 2873, 2873, 2894, 2874, 2877, 2877, 2880, + 2880, 2881, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, - 2901, 2904, 2902, 2905, 2908, 2906, 2909, 2909, 2899, 2898, - 2906, 2911, 2910, 2912, 2905, 2914, 2913, 2916, 2915, 2908, - 2901, 2918, 2917, 2919, 2904, 2910, 2916, 2925, 2926, 2926, - 2911, 2912, 2913, 2915, 2917, 2924, 2920, 2927, 2928, 2928, - 2914, 2920, 2918, 2919, 2929, 2929, 2927, 2925, 2932, 2924, - 2930, 2930, 2931, 2931, 2933, 2934, 2935, 2936, 2934, 2937, - 2938, 2935, 2936, 2939, 2940, 2941, 2942, 2932, 2943, 2939, - 2945, 2942, 2944, 2944, 2933, 2938, 2946, 2941, 2940, 2947, - 2947, 2949, 2951, 2956, 2937, 2945, 2954, 2954, 2943, 2955, - 2955, 2956, 2957, 2958, 2960, 2946, 2949, 2959, 2962, 2958, + 2885, 2886, 2886, 2888, 2889, 2889, 2890, 2892, 2895, 2895, + 2897, 2900, 2888, 2898, 2904, 2890, 2899, 2899, 2901, 2901, + 2906, 2905, 2908, 2897, 2905, 2898, 2900, 2892, 2907, 2907, + 2910, 2911, 2904, 2910, 2912, 2914, 2913, 2911, 2915, 2916, + 2908, 2913, 2919, 2918, 2922, 2933, 2906, 2931, 2912, 2918, + 2931, 2919, 2934, 2934, 2914, 2916, 2915, 2938, 2933, 2922, + 2935, 2935, 2936, 2936, 2939, 2940, 2941, 2942, 2944, 2940, + 2946, 2945, 2947, 2939, 2947, 2946, 2950, 2948, 2949, 2949, + 2938, 2942, 2945, 2951, 2953, 2952, 2941, 2954, 2956, 2950, + 2955, 2944, 2948, 2958, 2957, 2959, 2960, 2956, 2965, 2964, - 2951, 2961, 2963, 2959, 2964, 2964, 2967, 2963, 2960, 2965, - 2965, 2957, 2968, 2973, 2961, 2970, 2971, 2962, 2974, 2975, - 2971, 2976, 2977, 2974, 2978, 2979, 2980, 2967, 2984, 2970, - 2979, 2980, 2968, 2973, 2976, 2977, 2981, 2981, 2975, 2985, - 2986, 2987, 2987, 2978, 2988, 2989, 2990, 2990, 2984, 2988, - 2991, 2989, 2994, 2992, 2995, 2991, 2993, 2985, 2992, 2986, - 2995, 2993, 2997, 2997, 2998, 2999, 2999, 3002, 3001, 2998, - 3003, 2994, 3001, 3004, 3005, 3006, 3007, 3003, 3008, 3010, - 3010, 3006, 3012, 3012, 3014, 3013, 3002, 3015, 3016, 3014, - 3017, 3008, 3004, 3005, 3013, 3007, 3019, 3013, 3018, 3018, + 2953, 2960, 2951, 2952, 0, 2955, 2957, 2966, 2966, 2972, + 2967, 2973, 2954, 2964, 2958, 2959, 2968, 2968, 2965, 2967, + 2969, 2969, 2970, 2970, 2971, 2971, 2974, 2975, 2972, 2974, + 2976, 2973, 2975, 2977, 2978, 2976, 2979, 2980, 2981, 2982, + 2983, 2985, 2979, 2986, 2982, 2984, 2984, 2987, 2987, 2978, + 2981, 2980, 2989, 2991, 2994, 2994, 2985, 2996, 2977, 2997, + 2983, 3000, 2986, 2995, 2995, 2996, 2998, 2989, 2999, 3001, + 3002, 2991, 2998, 3007, 2999, 3000, 3003, 3008, 2997, 3004, + 3004, 3003, 3001, 3005, 3005, 3010, 3011, 3013, 3014, 3002, + 3011, 3015, 3016, 3014, 3007, 3017, 3018, 3008, 3019, 3010, - 3020, 3019, 3022, 3017, 3023, 3023, 3015, 3016, 3024, 3025, - 3025, 3026, 3026, 3020, 3027, 3028, 3029, 3030, 3030, 3027, - 3031, 3032, 3028, 3032, 3034, 3031, 3035, 3024, 3022, 3033, - 3033, 3034, 3036, 3035, 3037, 3029, 3038, 3040, 3040, 3037, - 3041, 3043, 3044, 3045, 3046, 3050, 3043, 3044, 3047, 3047, - 3051, 3036, 3049, 3049, 0, 3038, 3052, 3052, 3054, 3041, - 3053, 3053, 3045, 3046, 3050, 3054, 3056, 3056, 3058, 3051, - 3057, 3057, 3060, 3063, 3064, 3058, 3065, 3060, 3063, 3066, - 3066, 3067, 3067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3064, 0, 3065, 3071, 3071, 3071, 3071, + 3024, 3020, 3026, 3019, 3025, 3016, 3020, 3013, 3017, 3034, + 3015, 3021, 3021, 3027, 3027, 3018, 3030, 3030, 3028, 3029, + 3024, 3026, 3025, 3028, 3031, 3029, 3032, 3033, 3034, 3031, + 3035, 3032, 3033, 3037, 3037, 3038, 3035, 3039, 3039, 3041, + 3038, 3042, 3043, 3041, 3044, 3045, 3046, 3047, 3048, 3043, + 3050, 3050, 3046, 3052, 3052, 3055, 3053, 3054, 3056, 3057, + 3042, 3048, 3054, 3044, 3045, 3053, 3047, 3060, 3053, 3058, + 3058, 3059, 3057, 3062, 3055, 3064, 3059, 3056, 3063, 3063, + 3060, 3065, 3065, 3066, 3066, 3067, 3068, 3069, 3070, 3070, + 3067, 3071, 3076, 3068, 3064, 3072, 3071, 3072, 3074, 3062, - 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, - 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3077, 3077, 0, 3077, 3077, 3077, 3077, 3078, 3078, - 0, 0, 0, 3078, 3078, 3079, 3079, 0, 0, 3079, - 0, 3079, 3080, 0, 0, 0, 0, 0, 3080, 3081, - 3081, 0, 0, 0, 3081, 3081, 3082, 0, 0, 0, - 0, 0, 3082, 3083, 3083, 0, 3083, 3083, 3083, 3083, - 3084, 3084, 0, 3084, 3084, 3084, 3084, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3073, 3073, 3075, 3077, 3078, 3074, 3069, 3081, 3077, 3075, + 3083, 3076, 3080, 3080, 3084, 3083, 3085, 3086, 3090, 3084, + 3087, 3087, 3091, 3078, 3089, 3089, 3081, 3092, 3092, 3093, + 3093, 3094, 3096, 3096, 3104, 3085, 3086, 3090, 3094, 3097, + 3097, 3091, 3098, 3100, 3105, 3103, 3106, 3106, 3100, 3098, + 3103, 3107, 3107, 3104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3105, 3111, 3111, 3111, 3111, 3111, 3111, + 3111, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3114, 3114, 3114, 3114, 3114, + 3114, 3114, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3116, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 3116, 3116, 3116, 3116, 3116, 3116, 3117, 3117, 3117, 3117, + 3117, 3117, 3117, 3119, 3119, 0, 3119, 3119, 3119, 3119, + 3120, 3120, 0, 0, 0, 3120, 3120, 3121, 3121, 0, + 0, 3121, 0, 3121, 3122, 0, 0, 0, 0, 0, + 3122, 3123, 3123, 0, 0, 0, 3123, 3123, 3124, 0, + 0, 0, 0, 0, 3124, 3125, 3125, 0, 3125, 3125, + 3125, 3125, 3126, 0, 0, 0, 0, 0, 3126, 3127, + 3127, 0, 0, 0, 3127, 3127, 3128, 3128, 0, 3128, + 3128, 3128, 3128, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110 } ; static yy_state_type yy_last_accepting_state; @@ -2828,11 +2865,13 @@ struct inc_state { int line; YY_BUFFER_STATE buffer; struct inc_state* next; + int inc_toplevel; }; static struct inc_state* config_include_stack = NULL; static int inc_depth = 0; static int inc_prev = 0; static int num_args = 0; +static int inc_toplevel = 0; void init_cfg_parse(void) { @@ -2840,14 +2879,15 @@ void init_cfg_parse(void) inc_depth = 0; inc_prev = 0; num_args = 0; + inc_toplevel = 0; } -static void config_start_include(const char* filename) +static void config_start_include(const char* filename, int toplevel) { FILE *input; struct inc_state* s; char* nm; - if(inc_depth++ > 100000) { + if(inc_depth+1 > 100000) { ub_c_error_msg("too many include files"); return; } @@ -2879,17 +2919,20 @@ static void config_start_include(const char* filename) return; } LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; s->filename = cfg_parser->filename; s->line = cfg_parser->line; s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; s->next = config_include_stack; config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; + inc_toplevel = toplevel; yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } -static void config_start_include_glob(const char* filename) +static void config_start_include_glob(const char* filename, int toplevel) { /* check for wildcards */ @@ -2922,19 +2965,19 @@ static void config_start_include_glob(const char* filename) globfree(&g); if(r == GLOB_NOMATCH) return; /* no matches for pattern */ - config_start_include(filename); /* let original deal with it */ + config_start_include(filename, toplevel); /* let original deal with it */ return; } /* process files found, if any */ for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i]); + config_start_include(g.gl_pathv[i], toplevel); } globfree(&g); return; } #endif /* HAVE_GLOB */ - config_start_include(filename); + config_start_include(filename, toplevel); } static void config_end_include(void) @@ -2948,6 +2991,7 @@ static void config_end_include(void) yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(s->buffer); config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; free(s); } @@ -2960,18 +3004,18 @@ static void config_end_include(void) } #endif -#line 2961 "" +#line 3005 "" #define YY_NO_INPUT 1 -#line 184 "./util/configlexer.lex" +#line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT #define YY_NO_UNPUT 1 #endif #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2970 "" +#line 3014 "" -#line 2972 "" +#line 3016 "" #define INITIAL 0 #define quotedstring 1 @@ -2979,6 +3023,8 @@ static void config_end_include(void) #define include 3 #define include_quoted 4 #define val 5 +#define include_toplevel 6 +#define include_toplevel_quoted 7 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -3191,9 +3237,9 @@ YY_DECL } { -#line 204 "./util/configlexer.lex" +#line 211 "./util/configlexer.lex" -#line 3194 "" +#line 3240 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3226,13 +3272,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 >= 3071 ) + if ( yy_current_state >= 3111 ) 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] != 5988 ); + while ( yy_base[yy_current_state] != 6084 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3258,1487 +3304,1487 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 205 "./util/configlexer.lex" +#line 212 "./util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 207 "./util/configlexer.lex" +#line 214 "./util/configlexer.lex" { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 210 "./util/configlexer.lex" +#line 217 "./util/configlexer.lex" { YDVAR(0, VAR_SERVER) } YY_BREAK case 4: YY_RULE_SETUP -#line 211 "./util/configlexer.lex" +#line 218 "./util/configlexer.lex" { YDVAR(1, VAR_QNAME_MINIMISATION) } YY_BREAK case 5: YY_RULE_SETUP -#line 212 "./util/configlexer.lex" +#line 219 "./util/configlexer.lex" { YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } YY_BREAK case 6: YY_RULE_SETUP -#line 213 "./util/configlexer.lex" +#line 220 "./util/configlexer.lex" { YDVAR(1, VAR_NUM_THREADS) } YY_BREAK case 7: YY_RULE_SETUP -#line 214 "./util/configlexer.lex" +#line 221 "./util/configlexer.lex" { YDVAR(1, VAR_VERBOSITY) } YY_BREAK case 8: YY_RULE_SETUP -#line 215 "./util/configlexer.lex" +#line 222 "./util/configlexer.lex" { YDVAR(1, VAR_PORT) } YY_BREAK case 9: YY_RULE_SETUP -#line 216 "./util/configlexer.lex" +#line 223 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_RANGE) } YY_BREAK case 10: YY_RULE_SETUP -#line 217 "./util/configlexer.lex" +#line 224 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } YY_BREAK case 11: YY_RULE_SETUP -#line 218 "./util/configlexer.lex" +#line 225 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_AVOID) } YY_BREAK case 12: YY_RULE_SETUP -#line 219 "./util/configlexer.lex" +#line 226 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_NUM_TCP) } YY_BREAK case 13: YY_RULE_SETUP -#line 220 "./util/configlexer.lex" +#line 227 "./util/configlexer.lex" { YDVAR(1, VAR_INCOMING_NUM_TCP) } YY_BREAK case 14: YY_RULE_SETUP -#line 221 "./util/configlexer.lex" +#line 228 "./util/configlexer.lex" { YDVAR(1, VAR_DO_IP4) } YY_BREAK case 15: YY_RULE_SETUP -#line 222 "./util/configlexer.lex" +#line 229 "./util/configlexer.lex" { YDVAR(1, VAR_DO_IP6) } YY_BREAK case 16: YY_RULE_SETUP -#line 223 "./util/configlexer.lex" +#line 230 "./util/configlexer.lex" { YDVAR(1, VAR_PREFER_IP4) } YY_BREAK case 17: YY_RULE_SETUP -#line 224 "./util/configlexer.lex" +#line 231 "./util/configlexer.lex" { YDVAR(1, VAR_PREFER_IP6) } YY_BREAK case 18: YY_RULE_SETUP -#line 225 "./util/configlexer.lex" +#line 232 "./util/configlexer.lex" { YDVAR(1, VAR_DO_UDP) } YY_BREAK case 19: YY_RULE_SETUP -#line 226 "./util/configlexer.lex" +#line 233 "./util/configlexer.lex" { YDVAR(1, VAR_DO_TCP) } YY_BREAK case 20: YY_RULE_SETUP -#line 227 "./util/configlexer.lex" +#line 234 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_UPSTREAM) } YY_BREAK case 21: YY_RULE_SETUP -#line 228 "./util/configlexer.lex" +#line 235 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_MSS) } YY_BREAK case 22: YY_RULE_SETUP -#line 229 "./util/configlexer.lex" +#line 236 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_TCP_MSS) } YY_BREAK case 23: YY_RULE_SETUP -#line 230 "./util/configlexer.lex" +#line 237 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } YY_BREAK case 24: YY_RULE_SETUP -#line 231 "./util/configlexer.lex" +#line 238 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } YY_BREAK case 25: YY_RULE_SETUP -#line 232 "./util/configlexer.lex" +#line 239 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } YY_BREAK case 26: YY_RULE_SETUP -#line 233 "./util/configlexer.lex" +#line 240 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 27: YY_RULE_SETUP -#line 234 "./util/configlexer.lex" +#line 241 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 28: YY_RULE_SETUP -#line 235 "./util/configlexer.lex" +#line 242 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 29: YY_RULE_SETUP -#line 236 "./util/configlexer.lex" +#line 243 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 30: YY_RULE_SETUP -#line 237 "./util/configlexer.lex" +#line 244 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 31: YY_RULE_SETUP -#line 238 "./util/configlexer.lex" +#line 245 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 32: YY_RULE_SETUP -#line 239 "./util/configlexer.lex" +#line 246 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 33: YY_RULE_SETUP -#line 240 "./util/configlexer.lex" +#line 247 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 34: YY_RULE_SETUP -#line 241 "./util/configlexer.lex" +#line 248 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 35: YY_RULE_SETUP -#line 242 "./util/configlexer.lex" +#line 249 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 36: YY_RULE_SETUP -#line 243 "./util/configlexer.lex" +#line 250 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_WIN_CERT) } YY_BREAK case 37: YY_RULE_SETUP -#line 244 "./util/configlexer.lex" +#line 251 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 38: YY_RULE_SETUP -#line 245 "./util/configlexer.lex" +#line 252 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 39: YY_RULE_SETUP -#line 246 "./util/configlexer.lex" +#line 253 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 40: YY_RULE_SETUP -#line 247 "./util/configlexer.lex" +#line 254 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 41: YY_RULE_SETUP -#line 248 "./util/configlexer.lex" +#line 255 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } YY_BREAK case 42: YY_RULE_SETUP -#line 249 "./util/configlexer.lex" +#line 256 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CIPHERS) } YY_BREAK case 43: YY_RULE_SETUP -#line 250 "./util/configlexer.lex" +#line 257 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CIPHERSUITES) } YY_BREAK case 44: YY_RULE_SETUP -#line 251 "./util/configlexer.lex" +#line 258 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_USE_SNI) } YY_BREAK case 45: YY_RULE_SETUP -#line 252 "./util/configlexer.lex" +#line 259 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 46: YY_RULE_SETUP -#line 253 "./util/configlexer.lex" +#line 260 "./util/configlexer.lex" { YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 47: YY_RULE_SETUP -#line 254 "./util/configlexer.lex" +#line 261 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 48: YY_RULE_SETUP -#line 255 "./util/configlexer.lex" +#line 262 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 49: YY_RULE_SETUP -#line 256 "./util/configlexer.lex" +#line 263 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 50: YY_RULE_SETUP -#line 257 "./util/configlexer.lex" +#line 264 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 51: YY_RULE_SETUP -#line 258 "./util/configlexer.lex" +#line 265 "./util/configlexer.lex" { YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 52: YY_RULE_SETUP -#line 259 "./util/configlexer.lex" +#line 266 "./util/configlexer.lex" { YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 53: YY_RULE_SETUP -#line 260 "./util/configlexer.lex" +#line 267 "./util/configlexer.lex" { YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 54: YY_RULE_SETUP -#line 261 "./util/configlexer.lex" +#line 268 "./util/configlexer.lex" { YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 55: YY_RULE_SETUP -#line 262 "./util/configlexer.lex" +#line 269 "./util/configlexer.lex" { YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 56: YY_RULE_SETUP -#line 263 "./util/configlexer.lex" +#line 270 "./util/configlexer.lex" { YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 57: YY_RULE_SETUP -#line 264 "./util/configlexer.lex" +#line 271 "./util/configlexer.lex" { YDVAR(1, VAR_CHROOT) } YY_BREAK case 58: YY_RULE_SETUP -#line 265 "./util/configlexer.lex" +#line 272 "./util/configlexer.lex" { YDVAR(1, VAR_USERNAME) } YY_BREAK case 59: YY_RULE_SETUP -#line 266 "./util/configlexer.lex" +#line 273 "./util/configlexer.lex" { YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 60: YY_RULE_SETUP -#line 267 "./util/configlexer.lex" +#line 274 "./util/configlexer.lex" { YDVAR(1, VAR_LOGFILE) } YY_BREAK case 61: YY_RULE_SETUP -#line 268 "./util/configlexer.lex" +#line 275 "./util/configlexer.lex" { YDVAR(1, VAR_PIDFILE) } YY_BREAK case 62: YY_RULE_SETUP -#line 269 "./util/configlexer.lex" +#line 276 "./util/configlexer.lex" { YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 63: YY_RULE_SETUP -#line 270 "./util/configlexer.lex" +#line 277 "./util/configlexer.lex" { YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 64: YY_RULE_SETUP -#line 271 "./util/configlexer.lex" +#line 278 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 65: YY_RULE_SETUP -#line 272 "./util/configlexer.lex" +#line 279 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 66: YY_RULE_SETUP -#line 273 "./util/configlexer.lex" +#line 280 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 67: YY_RULE_SETUP -#line 274 "./util/configlexer.lex" +#line 281 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 68: YY_RULE_SETUP -#line 275 "./util/configlexer.lex" +#line 282 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 69: YY_RULE_SETUP -#line 276 "./util/configlexer.lex" +#line 283 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 70: YY_RULE_SETUP -#line 277 "./util/configlexer.lex" +#line 284 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 71: YY_RULE_SETUP -#line 278 "./util/configlexer.lex" +#line 285 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 72: YY_RULE_SETUP -#line 279 "./util/configlexer.lex" +#line 286 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 73: YY_RULE_SETUP -#line 280 "./util/configlexer.lex" +#line 287 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 74: YY_RULE_SETUP -#line 281 "./util/configlexer.lex" +#line 288 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 75: YY_RULE_SETUP -#line 282 "./util/configlexer.lex" +#line 289 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 76: YY_RULE_SETUP -#line 283 "./util/configlexer.lex" +#line 290 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 77: YY_RULE_SETUP -#line 284 "./util/configlexer.lex" +#line 291 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 78: YY_RULE_SETUP -#line 285 "./util/configlexer.lex" +#line 292 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 79: YY_RULE_SETUP -#line 286 "./util/configlexer.lex" +#line 293 "./util/configlexer.lex" { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 80: YY_RULE_SETUP -#line 287 "./util/configlexer.lex" +#line 294 "./util/configlexer.lex" { YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 81: YY_RULE_SETUP -#line 288 "./util/configlexer.lex" +#line 295 "./util/configlexer.lex" { YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 82: YY_RULE_SETUP -#line 289 "./util/configlexer.lex" +#line 296 "./util/configlexer.lex" { YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 83: YY_RULE_SETUP -#line 290 "./util/configlexer.lex" +#line 297 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 84: YY_RULE_SETUP -#line 291 "./util/configlexer.lex" +#line 298 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 85: YY_RULE_SETUP -#line 292 "./util/configlexer.lex" +#line 299 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 86: YY_RULE_SETUP -#line 293 "./util/configlexer.lex" +#line 300 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 87: YY_RULE_SETUP -#line 294 "./util/configlexer.lex" +#line 301 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 88: YY_RULE_SETUP -#line 295 "./util/configlexer.lex" +#line 302 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 89: YY_RULE_SETUP -#line 296 "./util/configlexer.lex" +#line 303 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 90: YY_RULE_SETUP -#line 297 "./util/configlexer.lex" +#line 304 "./util/configlexer.lex" { YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 91: YY_RULE_SETUP -#line 298 "./util/configlexer.lex" +#line 305 "./util/configlexer.lex" { YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 92: YY_RULE_SETUP -#line 299 "./util/configlexer.lex" +#line 306 "./util/configlexer.lex" { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 93: YY_RULE_SETUP -#line 300 "./util/configlexer.lex" +#line 307 "./util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 94: YY_RULE_SETUP -#line 301 "./util/configlexer.lex" +#line 308 "./util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 95: YY_RULE_SETUP -#line 302 "./util/configlexer.lex" +#line 309 "./util/configlexer.lex" { YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 96: YY_RULE_SETUP -#line 303 "./util/configlexer.lex" +#line 310 "./util/configlexer.lex" { YDVAR(1, VAR_PREFETCH) } YY_BREAK case 97: YY_RULE_SETUP -#line 304 "./util/configlexer.lex" +#line 311 "./util/configlexer.lex" { YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 98: YY_RULE_SETUP -#line 305 "./util/configlexer.lex" +#line 312 "./util/configlexer.lex" { YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 99: YY_RULE_SETUP -#line 306 "./util/configlexer.lex" +#line 313 "./util/configlexer.lex" { YDVAR(1, VAR_NAME) } YY_BREAK case 100: YY_RULE_SETUP -#line 307 "./util/configlexer.lex" +#line 314 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 101: YY_RULE_SETUP -#line 308 "./util/configlexer.lex" +#line 315 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 102: YY_RULE_SETUP -#line 309 "./util/configlexer.lex" +#line 316 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 103: YY_RULE_SETUP -#line 310 "./util/configlexer.lex" +#line 317 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 104: YY_RULE_SETUP -#line 311 "./util/configlexer.lex" +#line 318 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 105: YY_RULE_SETUP -#line 312 "./util/configlexer.lex" +#line 319 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 106: YY_RULE_SETUP -#line 313 "./util/configlexer.lex" +#line 320 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 107: YY_RULE_SETUP -#line 314 "./util/configlexer.lex" +#line 321 "./util/configlexer.lex" { YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 108: YY_RULE_SETUP -#line 315 "./util/configlexer.lex" +#line 322 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 109: YY_RULE_SETUP -#line 316 "./util/configlexer.lex" +#line 323 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 110: YY_RULE_SETUP -#line 317 "./util/configlexer.lex" +#line 324 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 111: YY_RULE_SETUP -#line 318 "./util/configlexer.lex" +#line 325 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 112: YY_RULE_SETUP -#line 319 "./util/configlexer.lex" +#line 326 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 113: YY_RULE_SETUP -#line 320 "./util/configlexer.lex" +#line 327 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 114: YY_RULE_SETUP -#line 321 "./util/configlexer.lex" +#line 328 "./util/configlexer.lex" { YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 115: YY_RULE_SETUP -#line 322 "./util/configlexer.lex" +#line 329 "./util/configlexer.lex" { YDVAR(0, VAR_RPZ) } YY_BREAK case 116: YY_RULE_SETUP -#line 323 "./util/configlexer.lex" +#line 330 "./util/configlexer.lex" { YDVAR(1, VAR_TAGS) } YY_BREAK case 117: YY_RULE_SETUP -#line 324 "./util/configlexer.lex" +#line 331 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 118: YY_RULE_SETUP -#line 325 "./util/configlexer.lex" +#line 332 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 119: YY_RULE_SETUP -#line 326 "./util/configlexer.lex" +#line 333 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 120: YY_RULE_SETUP -#line 327 "./util/configlexer.lex" +#line 334 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 121: YY_RULE_SETUP -#line 328 "./util/configlexer.lex" +#line 335 "./util/configlexer.lex" { YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 122: YY_RULE_SETUP -#line 329 "./util/configlexer.lex" +#line 336 "./util/configlexer.lex" { YDVAR(1, VAR_MASTER) } YY_BREAK case 123: YY_RULE_SETUP -#line 330 "./util/configlexer.lex" +#line 337 "./util/configlexer.lex" { YDVAR(1, VAR_URL) } YY_BREAK case 124: YY_RULE_SETUP -#line 331 "./util/configlexer.lex" +#line 338 "./util/configlexer.lex" { YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 125: YY_RULE_SETUP -#line 332 "./util/configlexer.lex" +#line 339 "./util/configlexer.lex" { YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 126: YY_RULE_SETUP -#line 333 "./util/configlexer.lex" +#line 340 "./util/configlexer.lex" { YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 127: YY_RULE_SETUP -#line 334 "./util/configlexer.lex" +#line 341 "./util/configlexer.lex" { YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 128: YY_RULE_SETUP -#line 335 "./util/configlexer.lex" +#line 342 "./util/configlexer.lex" { YDVAR(0, VAR_VIEW) } YY_BREAK case 129: YY_RULE_SETUP -#line 336 "./util/configlexer.lex" +#line 343 "./util/configlexer.lex" { YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 130: YY_RULE_SETUP -#line 337 "./util/configlexer.lex" +#line 344 "./util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 131: YY_RULE_SETUP -#line 338 "./util/configlexer.lex" +#line 345 "./util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 132: YY_RULE_SETUP -#line 339 "./util/configlexer.lex" +#line 346 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 133: YY_RULE_SETUP -#line 340 "./util/configlexer.lex" +#line 347 "./util/configlexer.lex" { YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 134: YY_RULE_SETUP -#line 341 "./util/configlexer.lex" +#line 348 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 135: YY_RULE_SETUP -#line 342 "./util/configlexer.lex" +#line 349 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 136: YY_RULE_SETUP -#line 343 "./util/configlexer.lex" +#line 350 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 137: YY_RULE_SETUP -#line 344 "./util/configlexer.lex" +#line 351 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 138: YY_RULE_SETUP -#line 345 "./util/configlexer.lex" +#line 352 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 139: YY_RULE_SETUP -#line 346 "./util/configlexer.lex" +#line 353 "./util/configlexer.lex" { YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 140: YY_RULE_SETUP -#line 347 "./util/configlexer.lex" +#line 354 "./util/configlexer.lex" { YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 141: YY_RULE_SETUP -#line 348 "./util/configlexer.lex" +#line 355 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 142: YY_RULE_SETUP -#line 349 "./util/configlexer.lex" +#line 356 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 143: YY_RULE_SETUP -#line 350 "./util/configlexer.lex" +#line 357 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 144: YY_RULE_SETUP -#line 351 "./util/configlexer.lex" +#line 358 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 145: YY_RULE_SETUP -#line 352 "./util/configlexer.lex" +#line 359 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 146: YY_RULE_SETUP -#line 353 "./util/configlexer.lex" +#line 360 "./util/configlexer.lex" { YDVAR(1, VAR_IDENTITY) } YY_BREAK case 147: YY_RULE_SETUP -#line 354 "./util/configlexer.lex" +#line 361 "./util/configlexer.lex" { YDVAR(1, VAR_VERSION) } YY_BREAK case 148: YY_RULE_SETUP -#line 355 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 149: YY_RULE_SETUP -#line 356 "./util/configlexer.lex" +#line 363 "./util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 150: YY_RULE_SETUP -#line 357 "./util/configlexer.lex" +#line 364 "./util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 151: YY_RULE_SETUP -#line 358 "./util/configlexer.lex" +#line 365 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 152: YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 366 "./util/configlexer.lex" { YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 153: YY_RULE_SETUP -#line 360 "./util/configlexer.lex" +#line 367 "./util/configlexer.lex" { YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 154: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 368 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 155: YY_RULE_SETUP -#line 362 "./util/configlexer.lex" +#line 369 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 156: YY_RULE_SETUP -#line 363 "./util/configlexer.lex" +#line 370 "./util/configlexer.lex" { YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 157: YY_RULE_SETUP -#line 364 "./util/configlexer.lex" +#line 371 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 158: YY_RULE_SETUP -#line 365 "./util/configlexer.lex" +#line 372 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 159: YY_RULE_SETUP -#line 366 "./util/configlexer.lex" +#line 373 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 160: YY_RULE_SETUP -#line 367 "./util/configlexer.lex" +#line 374 "./util/configlexer.lex" { YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 161: YY_RULE_SETUP -#line 368 "./util/configlexer.lex" +#line 375 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 162: YY_RULE_SETUP -#line 369 "./util/configlexer.lex" +#line 376 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 163: YY_RULE_SETUP -#line 370 "./util/configlexer.lex" +#line 377 "./util/configlexer.lex" { YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 164: YY_RULE_SETUP -#line 371 "./util/configlexer.lex" +#line 378 "./util/configlexer.lex" { YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 165: YY_RULE_SETUP -#line 372 "./util/configlexer.lex" +#line 379 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 166: YY_RULE_SETUP -#line 373 "./util/configlexer.lex" +#line 380 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 167: YY_RULE_SETUP -#line 374 "./util/configlexer.lex" +#line 381 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 168: YY_RULE_SETUP -#line 375 "./util/configlexer.lex" +#line 382 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 169: YY_RULE_SETUP -#line 376 "./util/configlexer.lex" +#line 383 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 170: YY_RULE_SETUP -#line 377 "./util/configlexer.lex" +#line 384 "./util/configlexer.lex" { YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 171: YY_RULE_SETUP -#line 378 "./util/configlexer.lex" +#line 385 "./util/configlexer.lex" { YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 172: YY_RULE_SETUP -#line 379 "./util/configlexer.lex" +#line 386 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 173: YY_RULE_SETUP -#line 380 "./util/configlexer.lex" +#line 387 "./util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 174: YY_RULE_SETUP -#line 381 "./util/configlexer.lex" +#line 388 "./util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 175: YY_RULE_SETUP -#line 382 "./util/configlexer.lex" +#line 389 "./util/configlexer.lex" { YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 176: YY_RULE_SETUP -#line 383 "./util/configlexer.lex" +#line 390 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" +#line 392 "./util/configlexer.lex" { YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 178: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" +#line 393 "./util/configlexer.lex" { YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP -#line 387 "./util/configlexer.lex" +#line 394 "./util/configlexer.lex" { YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 180: YY_RULE_SETUP -#line 388 "./util/configlexer.lex" +#line 395 "./util/configlexer.lex" { YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 181: YY_RULE_SETUP -#line 389 "./util/configlexer.lex" +#line 396 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 182: YY_RULE_SETUP -#line 390 "./util/configlexer.lex" +#line 397 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 183: YY_RULE_SETUP -#line 391 "./util/configlexer.lex" +#line 398 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 184: YY_RULE_SETUP -#line 392 "./util/configlexer.lex" +#line 399 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 185: YY_RULE_SETUP -#line 393 "./util/configlexer.lex" +#line 400 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 186: YY_RULE_SETUP -#line 394 "./util/configlexer.lex" +#line 401 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 187: YY_RULE_SETUP -#line 395 "./util/configlexer.lex" +#line 402 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 188: YY_RULE_SETUP -#line 396 "./util/configlexer.lex" +#line 403 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 189: YY_RULE_SETUP -#line 397 "./util/configlexer.lex" +#line 404 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 190: YY_RULE_SETUP -#line 398 "./util/configlexer.lex" +#line 405 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 191: YY_RULE_SETUP -#line 399 "./util/configlexer.lex" +#line 406 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 192: YY_RULE_SETUP -#line 400 "./util/configlexer.lex" +#line 407 "./util/configlexer.lex" { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 193: YY_RULE_SETUP -#line 401 "./util/configlexer.lex" +#line 408 "./util/configlexer.lex" { YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP -#line 402 "./util/configlexer.lex" +#line 409 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 195: YY_RULE_SETUP -#line 403 "./util/configlexer.lex" +#line 410 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 196: YY_RULE_SETUP -#line 404 "./util/configlexer.lex" +#line 411 "./util/configlexer.lex" { YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 197: YY_RULE_SETUP -#line 405 "./util/configlexer.lex" +#line 412 "./util/configlexer.lex" { YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 198: YY_RULE_SETUP -#line 406 "./util/configlexer.lex" +#line 413 "./util/configlexer.lex" { YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 199: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" +#line 414 "./util/configlexer.lex" { YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 200: YY_RULE_SETUP -#line 408 "./util/configlexer.lex" +#line 415 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 201: YY_RULE_SETUP -#line 409 "./util/configlexer.lex" +#line 416 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 202: YY_RULE_SETUP -#line 410 "./util/configlexer.lex" +#line 417 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 203: YY_RULE_SETUP -#line 411 "./util/configlexer.lex" +#line 418 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 204: YY_RULE_SETUP -#line 412 "./util/configlexer.lex" +#line 419 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 205: YY_RULE_SETUP -#line 413 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 206: YY_RULE_SETUP -#line 414 "./util/configlexer.lex" +#line 421 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 207: YY_RULE_SETUP -#line 415 "./util/configlexer.lex" +#line 422 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 208: YY_RULE_SETUP -#line 416 "./util/configlexer.lex" +#line 423 "./util/configlexer.lex" { YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 209: YY_RULE_SETUP -#line 417 "./util/configlexer.lex" +#line 424 "./util/configlexer.lex" { YDVAR(0, VAR_PYTHON) } YY_BREAK case 210: YY_RULE_SETUP -#line 418 "./util/configlexer.lex" +#line 425 "./util/configlexer.lex" { YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 211: YY_RULE_SETUP -#line 419 "./util/configlexer.lex" +#line 426 "./util/configlexer.lex" { YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 212: YY_RULE_SETUP -#line 420 "./util/configlexer.lex" +#line 427 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 213: YY_RULE_SETUP -#line 421 "./util/configlexer.lex" +#line 428 "./util/configlexer.lex" { YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 214: YY_RULE_SETUP -#line 422 "./util/configlexer.lex" +#line 429 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 215: YY_RULE_SETUP -#line 423 "./util/configlexer.lex" +#line 430 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 216: YY_RULE_SETUP -#line 424 "./util/configlexer.lex" +#line 431 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 217: YY_RULE_SETUP -#line 425 "./util/configlexer.lex" +#line 432 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 218: YY_RULE_SETUP -#line 426 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" { YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 219: YY_RULE_SETUP -#line 427 "./util/configlexer.lex" +#line 434 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 220: YY_RULE_SETUP -#line 428 "./util/configlexer.lex" +#line 435 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 221: YY_RULE_SETUP -#line 429 "./util/configlexer.lex" +#line 436 "./util/configlexer.lex" { YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 222: YY_RULE_SETUP -#line 430 "./util/configlexer.lex" +#line 437 "./util/configlexer.lex" { YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 223: YY_RULE_SETUP -#line 431 "./util/configlexer.lex" +#line 438 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 224: YY_RULE_SETUP -#line 432 "./util/configlexer.lex" +#line 439 "./util/configlexer.lex" { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 225: YY_RULE_SETUP -#line 433 "./util/configlexer.lex" +#line 440 "./util/configlexer.lex" { YDVAR(0, VAR_DNSTAP) } YY_BREAK case 226: YY_RULE_SETUP -#line 434 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 227: YY_RULE_SETUP -#line 435 "./util/configlexer.lex" +#line 442 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 228: YY_RULE_SETUP -#line 436 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 229: YY_RULE_SETUP -#line 437 "./util/configlexer.lex" +#line 444 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 230: YY_RULE_SETUP -#line 438 "./util/configlexer.lex" +#line 445 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 231: YY_RULE_SETUP -#line 439 "./util/configlexer.lex" +#line 446 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 232: YY_RULE_SETUP -#line 440 "./util/configlexer.lex" +#line 447 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 233: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 234: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 235: YY_RULE_SETUP -#line 445 "./util/configlexer.lex" +#line 452 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 237: YY_RULE_SETUP -#line 447 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 238: YY_RULE_SETUP -#line 448 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 239: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 240: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 461 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 463 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 465 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 245: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" +#line 468 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 247: YY_RULE_SETUP -#line 463 "./util/configlexer.lex" +#line 470 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 248: YY_RULE_SETUP -#line 464 "./util/configlexer.lex" +#line 471 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 249: YY_RULE_SETUP -#line 465 "./util/configlexer.lex" +#line 472 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 250: YY_RULE_SETUP -#line 466 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 251: YY_RULE_SETUP -#line 467 "./util/configlexer.lex" +#line 474 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 252: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 253: YY_RULE_SETUP -#line 469 "./util/configlexer.lex" +#line 476 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 254: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 255: YY_RULE_SETUP -#line 471 "./util/configlexer.lex" +#line 478 "./util/configlexer.lex" { YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 256: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 257: YY_RULE_SETUP -#line 473 "./util/configlexer.lex" +#line 480 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 258: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 259: YY_RULE_SETUP -#line 475 "./util/configlexer.lex" +#line 482 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 260: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 261: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" +#line 484 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 262: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 263: YY_RULE_SETUP -#line 479 "./util/configlexer.lex" +#line 486 "./util/configlexer.lex" { YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 264: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 265: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" +#line 488 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 266: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 267: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 268: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 491 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 269: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 492 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 270: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 493 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" +#line 495 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 272: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 497 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 273: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" +#line 498 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" +#line 499 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 275: YY_RULE_SETUP -#line 493 "./util/configlexer.lex" +#line 500 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 276: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" +#line 501 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 277: YY_RULE_SETUP -#line 495 "./util/configlexer.lex" +#line 502 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 278: YY_RULE_SETUP -#line 496 "./util/configlexer.lex" +#line 503 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 279: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" +#line 504 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 280: YY_RULE_SETUP -#line 498 "./util/configlexer.lex" +#line 505 "./util/configlexer.lex" { YDVAR(0, VAR_CACHEDB) } YY_BREAK case 281: YY_RULE_SETUP -#line 499 "./util/configlexer.lex" +#line 506 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 282: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" +#line 507 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 283: YY_RULE_SETUP -#line 501 "./util/configlexer.lex" +#line 508 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 284: YY_RULE_SETUP -#line 502 "./util/configlexer.lex" +#line 509 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 285: YY_RULE_SETUP -#line 503 "./util/configlexer.lex" +#line 510 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 286: YY_RULE_SETUP -#line 504 "./util/configlexer.lex" +#line 511 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 287: YY_RULE_SETUP -#line 505 "./util/configlexer.lex" +#line 512 "./util/configlexer.lex" { YDVAR(0, VAR_IPSET) } YY_BREAK case 288: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" +#line 513 "./util/configlexer.lex" { YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 289: YY_RULE_SETUP -#line 507 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 290: YY_RULE_SETUP -#line 508 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 291: YY_RULE_SETUP -#line 509 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 292: /* rule 292 can match eol */ YY_RULE_SETUP -#line 510 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ case 293: YY_RULE_SETUP -#line 513 "./util/configlexer.lex" +#line 520 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 514 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4747,19 +4793,19 @@ case YY_STATE_EOF(quotedstring): YY_BREAK case 294: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" +#line 526 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 295: /* rule 295 can match eol */ YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 527 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK case 296: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 529 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4774,11 +4820,11 @@ YY_RULE_SETUP /* Single Quoted strings. Strip leading and ending quotes */ case 297: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 541 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 535 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4787,19 +4833,19 @@ case YY_STATE_EOF(singlequotedstr): YY_BREAK case 298: YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 547 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 299: /* rule 299 can match eol */ YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK case 300: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4814,12 +4860,12 @@ YY_RULE_SETUP /* include: directive */ case 301: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 562 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 557 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); @@ -4827,31 +4873,31 @@ case YY_STATE_EOF(include): YY_BREAK case 302: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 303: /* rule 303 can match eol */ YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 304: YY_RULE_SETUP -#line 563 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK case 305: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 569 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); @@ -4859,67 +4905,142 @@ case YY_STATE_EOF(include_quoted): YY_BREAK case 306: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK case 307: /* rule 307 can match eol */ YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK case 308: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 582 "./util/configlexer.lex" +#line 589 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (!config_include_stack) { yyterminate(); } else { + int prev_toplevel = inc_toplevel; fclose(yyin); config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); } } YY_BREAK +/* include-toplevel: directive */ case 309: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel): +#line 606 "./util/configlexer.lex" +{ + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 310: +YY_RULE_SETUP +#line 610 "./util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 311: +/* rule 311 can match eol */ +YY_RULE_SETUP +#line 611 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 312: +YY_RULE_SETUP +#line 612 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 613 "./util/configlexer.lex" +{ + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel_quoted): +#line 619 "./util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 314: +YY_RULE_SETUP +#line 623 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 315: +/* rule 315 can match eol */ +YY_RULE_SETUP +#line 624 "./util/configlexer.lex" +{ + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} + YY_BREAK +case 316: +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" +{ + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case 317: +YY_RULE_SETUP +#line 636 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 310: +case 318: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 311: +case 319: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 312: +case 320: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4920 "" +#line 5041 "" case YY_END_OF_BUFFER: { @@ -5214,7 +5335,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 >= 3071 ) + if ( yy_current_state >= 3111 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5242,11 +5363,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 >= 3071 ) + if ( yy_current_state >= 3111 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3070); + yy_is_jam = (yy_current_state == 3110); return yy_is_jam ? 0 : yy_current_state; } @@ -5885,6 +6006,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 605 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d60eb147a..09a263b5f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -45,11 +45,13 @@ struct inc_state { int line; YY_BUFFER_STATE buffer; struct inc_state* next; + int inc_toplevel; }; static struct inc_state* config_include_stack = NULL; static int inc_depth = 0; static int inc_prev = 0; static int num_args = 0; +static int inc_toplevel = 0; void init_cfg_parse(void) { @@ -57,14 +59,15 @@ void init_cfg_parse(void) inc_depth = 0; inc_prev = 0; num_args = 0; + inc_toplevel = 0; } -static void config_start_include(const char* filename) +static void config_start_include(const char* filename, int toplevel) { FILE *input; struct inc_state* s; char* nm; - if(inc_depth++ > 100000) { + if(inc_depth+1 > 100000) { ub_c_error_msg("too many include files"); return; } @@ -96,17 +99,20 @@ static void config_start_include(const char* filename) return; } LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; s->filename = cfg_parser->filename; s->line = cfg_parser->line; s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; s->next = config_include_stack; config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; + inc_toplevel = toplevel; yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } -static void config_start_include_glob(const char* filename) +static void config_start_include_glob(const char* filename, int toplevel) { /* check for wildcards */ @@ -139,19 +145,19 @@ static void config_start_include_glob(const char* filename) globfree(&g); if(r == GLOB_NOMATCH) return; /* no matches for pattern */ - config_start_include(filename); /* let original deal with it */ + config_start_include(filename, toplevel); /* let original deal with it */ return; } /* process files found, if any */ for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i]); + config_start_include(g.gl_pathv[i], toplevel); } globfree(&g); return; } #endif /* HAVE_GLOB */ - config_start_include(filename); + config_start_include(filename, toplevel); } static void config_end_include(void) @@ -165,6 +171,7 @@ static void config_end_include(void) yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(s->buffer); config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; free(s); } @@ -199,7 +206,7 @@ COLON \: DQANY [^\"\n\r\\]|\\. SQANY [^\'\n\r\\]|\\. -%x quotedstring singlequotedstr include include_quoted val +%x quotedstring singlequotedstr include include_quoted val include_toplevel include_toplevel_quoted %% {SPACE}* { @@ -563,7 +570,7 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } \" { LEXOUT(("IQS ")); BEGIN(include_quoted); } {UNQUOTEDLETTER}* { LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } <> { @@ -576,7 +583,7 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } \" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } <> { @@ -585,11 +592,47 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } if (!config_include_stack) { yyterminate(); } else { + int prev_toplevel = inc_toplevel; fclose(yyin); config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); } } + /* include-toplevel: directive */ +include-toplevel{COLON} { + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} +<> { + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} +{SPACE}* { LEXOUT(("ITSP ")); /* ignore */ } +{NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } +\" { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{UNQUOTEDLETTER}* { + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} +<> { + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} +{DQANY}* { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } +{NEWLINE} { + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} +\" { + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + {UNQUOTEDLETTER}* { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } diff --git a/util/configparser.c b/util/configparser.c index 66f34071a..e9954dbfa 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -142,283 +142,284 @@ extern int yydebug; ANY = 263, ZONESTR = 264, STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -430,283 +431,284 @@ extern int yydebug; #define ANY 263 #define ZONESTR 264 #define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_EXTENDED_STATISTICS 360 +#define VAR_LOCAL_DATA_PTR 361 +#define VAR_JOSTLE_TIMEOUT 362 +#define VAR_STUB_PRIME 363 +#define VAR_UNWANTED_REPLY_THRESHOLD 364 +#define VAR_LOG_TIME_ASCII 365 +#define VAR_DOMAIN_INSECURE 366 +#define VAR_PYTHON 367 +#define VAR_PYTHON_SCRIPT 368 +#define VAR_VAL_SIG_SKEW_MIN 369 +#define VAR_VAL_SIG_SKEW_MAX 370 +#define VAR_CACHE_MIN_TTL 371 +#define VAR_VAL_LOG_LEVEL 372 +#define VAR_AUTO_TRUST_ANCHOR_FILE 373 +#define VAR_KEEP_MISSING 374 +#define VAR_ADD_HOLDDOWN 375 +#define VAR_DEL_HOLDDOWN 376 +#define VAR_SO_RCVBUF 377 +#define VAR_EDNS_BUFFER_SIZE 378 +#define VAR_PREFETCH 379 +#define VAR_PREFETCH_KEY 380 +#define VAR_SO_SNDBUF 381 +#define VAR_SO_REUSEPORT 382 +#define VAR_HARDEN_BELOW_NXDOMAIN 383 +#define VAR_IGNORE_CD_FLAG 384 +#define VAR_LOG_QUERIES 385 +#define VAR_LOG_REPLIES 386 +#define VAR_LOG_LOCAL_ACTIONS 387 +#define VAR_TCP_UPSTREAM 388 +#define VAR_SSL_UPSTREAM 389 +#define VAR_SSL_SERVICE_KEY 390 +#define VAR_SSL_SERVICE_PEM 391 +#define VAR_SSL_PORT 392 +#define VAR_FORWARD_FIRST 393 +#define VAR_STUB_SSL_UPSTREAM 394 +#define VAR_FORWARD_SSL_UPSTREAM 395 +#define VAR_TLS_CERT_BUNDLE 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -716,7 +718,7 @@ union YYSTYPE char* str; -#line 720 "util/configparser.c" +#line 722 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -966,19 +968,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 613 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 289 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 311 +#define YYNNTS 312 /* YYNRULES -- Number of rules. */ -#define YYNRULES 600 +#define YYNRULES 602 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 893 +#define YYNSTATES 895 #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 543 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1043,74 +1045,74 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 + 285, 286, 287, 288 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 179, 179, 179, 180, 180, 181, 181, 182, 182, - 182, 183, 183, 184, 184, 185, 189, 194, 195, 196, - 196, 196, 197, 197, 198, 198, 198, 199, 199, 200, - 200, 200, 201, 201, 202, 202, 202, 203, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 208, 208, - 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, - 213, 213, 214, 214, 214, 215, 215, 216, 216, 217, - 217, 218, 218, 219, 219, 219, 220, 220, 221, 221, - 222, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, - 231, 231, 232, 232, 232, 233, 233, 234, 234, 234, - 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, - 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, - 242, 243, 243, 243, 244, 244, 245, 245, 245, 246, - 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, - 252, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, - 267, 267, 267, 268, 268, 268, 269, 269, 270, 271, - 271, 272, 272, 273, 273, 274, 274, 275, 275, 275, - 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, - 280, 280, 281, 283, 295, 296, 297, 297, 297, 297, - 297, 298, 298, 300, 312, 313, 314, 314, 314, 314, - 315, 315, 317, 331, 332, 333, 333, 333, 333, 334, - 334, 334, 336, 353, 354, 355, 355, 355, 355, 356, - 356, 356, 357, 360, 379, 396, 404, 414, 422, 439, - 440, 441, 441, 441, 441, 441, 442, 442, 442, 443, - 443, 445, 454, 463, 474, 483, 492, 501, 512, 521, - 533, 547, 562, 573, 590, 607, 624, 641, 656, 671, - 684, 699, 708, 717, 726, 735, 744, 753, 762, 771, - 780, 789, 798, 807, 816, 825, 838, 847, 860, 869, - 878, 887, 894, 901, 910, 917, 926, 934, 941, 948, - 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, 1042, - 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, 1135, - 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, 1221, - 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, 1320, - 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, 1418, - 1426, 1435, 1443, 1456, 1465, 1472, 1482, 1492, 1502, 1512, - 1522, 1532, 1542, 1552, 1559, 1566, 1573, 1582, 1591, 1600, - 1609, 1616, 1626, 1646, 1653, 1671, 1684, 1697, 1706, 1715, - 1724, 1733, 1743, 1753, 1764, 1773, 1782, 1791, 1800, 1809, - 1818, 1831, 1844, 1853, 1860, 1869, 1878, 1887, 1896, 1904, - 1917, 1925, 1966, 1973, 1988, 1998, 2008, 2015, 2022, 2029, - 2038, 2046, 2060, 2081, 2102, 2114, 2126, 2138, 2147, 2168, - 2178, 2187, 2195, 2203, 2216, 2229, 2244, 2259, 2268, 2277, - 2283, 2292, 2301, 2311, 2321, 2334, 2347, 2359, 2373, 2385, - 2399, 2409, 2416, 2423, 2432, 2441, 2451, 2461, 2471, 2478, - 2485, 2494, 2503, 2513, 2523, 2530, 2537, 2544, 2552, 2562, - 2572, 2582, 2592, 2631, 2641, 2649, 2657, 2672, 2681, 2686, - 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2690, 2690, 2692, - 2702, 2711, 2718, 2725, 2732, 2739, 2746, 2753, 2758, 2759, - 2760, 2760, 2761, 2761, 2761, 2762, 2763, 2763, 2764, 2764, - 2765, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2773, 2782, - 2789, 2796, 2805, 2812, 2819, 2826, 2833, 2842, 2851, 2858, - 2865, 2875, 2885, 2895, 2905, 2915, 2925, 2930, 2931, 2932, - 2934, 2940, 2950, 2957, 2966, 2974, 2979, 2980, 2982, 2982, - 2982, 2983, 2983, 2984, 2985, 2986, 2987, 2988, 2990, 3000, - 3009, 3016, 3025, 3032, 3041, 3049, 3062, 3070, 3083, 3088, - 3089, 3090, 3090, 3091, 3091, 3091, 3092, 3094, 3106, 3118, - 3130, 3145, 3158, 3171, 3182, 3187, 3188, 3189, 3189, 3191, - 3206 + 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, + 183, 184, 184, 185, 185, 186, 187, 189, 194, 199, + 200, 201, 201, 201, 202, 202, 203, 203, 203, 204, + 204, 205, 205, 205, 206, 206, 207, 207, 207, 208, + 208, 208, 209, 209, 210, 210, 211, 211, 212, 212, + 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, + 217, 218, 218, 218, 219, 219, 219, 220, 220, 221, + 221, 222, 222, 223, 223, 224, 224, 224, 225, 225, + 226, 226, 227, 227, 227, 228, 228, 229, 229, 230, + 230, 231, 231, 231, 232, 232, 233, 233, 234, 234, + 235, 235, 236, 236, 237, 237, 237, 238, 238, 239, + 239, 239, 240, 240, 240, 241, 241, 241, 242, 242, + 242, 242, 243, 244, 244, 244, 245, 245, 245, 246, + 246, 247, 247, 248, 248, 248, 249, 249, 250, 250, + 250, 251, 252, 252, 253, 253, 254, 255, 255, 256, + 256, 257, 257, 258, 259, 259, 260, 260, 261, 261, + 262, 262, 263, 263, 264, 264, 264, 265, 265, 266, + 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, + 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, + 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, + 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, + 284, 284, 285, 285, 286, 288, 300, 301, 302, 302, + 302, 302, 302, 303, 303, 305, 317, 318, 319, 319, + 319, 319, 320, 320, 322, 336, 337, 338, 338, 338, + 338, 339, 339, 339, 341, 358, 359, 360, 360, 360, + 360, 361, 361, 361, 362, 365, 384, 401, 409, 419, + 427, 444, 445, 446, 446, 446, 446, 446, 447, 447, + 447, 448, 448, 450, 459, 468, 479, 488, 497, 506, + 517, 526, 538, 552, 567, 578, 595, 612, 629, 646, + 661, 676, 689, 704, 713, 722, 731, 740, 749, 758, + 767, 776, 785, 794, 803, 812, 821, 830, 843, 852, + 865, 874, 883, 892, 899, 906, 915, 922, 931, 939, + 946, 953, 961, 970, 979, 988, 1002, 1011, 1020, 1029, + 1038, 1047, 1056, 1063, 1070, 1096, 1104, 1111, 1118, 1125, + 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, 1210, + 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, 1301, + 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, 1401, + 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, 1497, + 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, 1587, + 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, 1702, + 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, 1796, + 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, 1892, + 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, 2020, + 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, 2143, + 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, 2264, + 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, 2364, + 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, 2466, + 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, 2549, + 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, 2677, + 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, 2695, + 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, 2758, + 2763, 2764, 2765, 2765, 2766, 2766, 2766, 2767, 2768, 2768, + 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, 2775, 2776, + 2778, 2787, 2794, 2801, 2810, 2817, 2824, 2831, 2838, 2847, + 2856, 2863, 2870, 2880, 2890, 2900, 2910, 2920, 2930, 2935, + 2936, 2937, 2939, 2945, 2955, 2962, 2971, 2979, 2984, 2985, + 2987, 2987, 2987, 2988, 2988, 2989, 2990, 2991, 2992, 2993, + 2995, 3005, 3014, 3021, 3030, 3037, 3046, 3054, 3067, 3075, + 3088, 3093, 3094, 3095, 3095, 3096, 3096, 3096, 3097, 3099, + 3111, 3123, 3135, 3150, 3163, 3176, 3187, 3192, 3193, 3194, + 3194, 3196, 3211 }; #endif @@ -1120,16 +1122,17 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY", - "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", - "VAR_PREFER_IP4", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", - "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", - "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", - "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", - "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", - "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD", - "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", - "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", + "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", + "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", + "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", + "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", + "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", + "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", + "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS", + "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE", + "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL", + "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", @@ -1225,16 +1228,16 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "$accept", - "toplevelvars", "toplevelvar", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", + "contents_server", "content_server", "stubstart", "contents_stub", + "content_stub", "forwardstart", "contents_forward", "content_forward", + "viewstart", "contents_view", "content_view", "authstart", + "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", + "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", + "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "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", @@ -1386,7 +1389,7 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543 }; # endif @@ -1406,28 +1409,28 @@ static const yytype_int16 yypact[] = { -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 271, -42, - -37, -41, -7, -43, -30, -136, -106, -177, -172, -271, - 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, - 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 87, 88, 91, 93, 94, 95, 96, 97, - 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 201, 205, 206, - 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 237, - 243, 245, 246, 247, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 269, 270, 305, 306, 307, 308, 312, - 313, 314, 356, 357, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 271, -42, -37, -43, -21, -44, -12, -87, -109, -205, + -229, -271, -3, 3, 4, 5, 25, 26, 27, 30, + 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 54, 55, 83, 84, 85, 88, 89, 92, 94, 95, + 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, + 216, 217, 220, 221, 224, 237, 238, 239, 240, 241, + 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 270, 272, 306, 307, + 308, 309, 313, 314, 315, 357, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1446,54 +1449,54 @@ static const yytype_int16 yypact[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 358, - 359, 360, 361, 362, 363, 364, -272, -272, -272, -272, - -272, -272, -272, -272, 368, 372, 373, 398, 399, 400, - -272, -272, -272, -272, -272, -272, -272, 402, 413, 414, - 415, 416, 417, 418, -272, -272, -272, -272, -272, -272, - -272, -272, 419, 420, 421, 422, 423, 424, 425, 426, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 427, - 428, 429, 430, 431, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 471, 473, 489, 490, 491, - 492, 493, 494, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 495, 496, 497, 498, 499, 506, 507, 508, - 509, 510, 511, 512, 514, 515, 516, 517, 518, 519, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 520, - -272, -272, 523, 526, 529, 530, 539, 540, 541, 543, - 544, 545, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 546, 547, 548, 549, 550, 551, -272, - -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, + -272, 358, 359, 360, 361, 362, 363, 364, -272, -272, + -272, -272, -272, -272, -272, -272, 365, 369, 373, 374, + 399, 400, -272, -272, -272, -272, -272, -272, -272, 401, + 403, 414, 415, 416, 417, 418, -272, -272, -272, -272, + -272, -272, -272, -272, 419, 420, 421, 422, 423, 424, + 425, 426, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 427, 428, 429, 430, 431, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 432, 472, 474, + 490, 491, 492, 493, 494, -272, -272, -272, -272, -272, + -272, -272, -272, -272, 495, 496, 497, 498, 499, 500, + 507, 508, 509, 510, 511, 512, 513, 515, 516, 517, + 518, 519, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 520, -272, -272, 521, 524, 527, 530, 531, 540, + 541, 542, 544, 545, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, 546, 547, 548, 549, 550, + 551, -272, -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 556, 557, - 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 559, 560, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, + 556, 557, 558, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 559, 560, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 568, - -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 568, -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 571, 572, 573, -272, -272, -272, -272, -272, - -272, -272, -272 + -272, -272, -272, -272, 571, 572, 573, -272, -272, -272, + -272, -272, -272, -272, -272 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1501,10 +1504,11 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 213, 223, 488, 546, 507, 232, - 555, 578, 242, 594, 258, 3, 18, 215, 225, 234, - 244, 260, 490, 509, 548, 557, 580, 596, 4, 5, - 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, + 2, 0, 1, 17, 18, 215, 225, 490, 548, 509, + 234, 557, 580, 244, 596, 260, 3, 16, 20, 217, + 227, 236, 246, 262, 492, 511, 550, 559, 582, 598, + 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, + 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1523,74 +1527,73 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 21, 22, 85, + 88, 97, 185, 186, 23, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 36, 76, 24, 89, 90, + 47, 69, 84, 25, 26, 29, 30, 27, 28, 31, + 32, 33, 34, 35, 120, 197, 121, 123, 124, 125, + 199, 204, 200, 211, 212, 213, 214, 181, 86, 75, + 101, 118, 119, 209, 206, 122, 37, 38, 39, 40, + 41, 77, 91, 92, 107, 63, 73, 64, 189, 190, + 102, 57, 58, 188, 59, 60, 111, 115, 129, 138, + 164, 141, 210, 112, 70, 42, 43, 44, 99, 130, + 131, 132, 45, 46, 48, 49, 51, 52, 50, 136, + 53, 54, 55, 61, 80, 116, 94, 137, 87, 160, + 95, 96, 113, 114, 207, 100, 56, 78, 81, 62, + 65, 103, 104, 79, 161, 105, 66, 67, 68, 198, + 117, 174, 175, 176, 177, 178, 179, 187, 106, 74, + 108, 109, 110, 162, 71, 72, 93, 82, 83, 98, + 126, 127, 208, 128, 133, 134, 135, 165, 166, 168, + 170, 171, 169, 172, 182, 139, 140, 144, 145, 142, + 143, 146, 147, 149, 148, 201, 203, 202, 163, 173, + 191, 193, 192, 194, 195, 196, 167, 180, 183, 184, + 205, 0, 0, 0, 0, 0, 0, 0, 216, 218, + 219, 220, 222, 223, 224, 221, 0, 0, 0, 0, + 0, 0, 226, 228, 229, 230, 231, 232, 233, 0, + 0, 0, 0, 0, 0, 0, 235, 237, 238, 241, + 242, 239, 243, 240, 0, 0, 0, 0, 0, 0, + 0, 0, 245, 247, 248, 249, 250, 254, 251, 252, + 253, 0, 0, 0, 0, 0, 265, 269, 270, 271, + 272, 261, 263, 264, 266, 267, 268, 0, 0, 0, + 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, + 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 19, 20, 83, 86, 95, - 183, 184, 21, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 34, 74, 22, 87, 88, 45, 67, - 82, 23, 24, 27, 28, 25, 26, 29, 30, 31, - 32, 33, 118, 195, 119, 121, 122, 123, 197, 202, - 198, 209, 210, 211, 212, 179, 84, 73, 99, 116, - 117, 207, 204, 120, 35, 36, 37, 38, 39, 75, - 89, 90, 105, 61, 71, 62, 187, 188, 100, 55, - 56, 186, 57, 58, 109, 113, 127, 136, 162, 139, - 208, 110, 68, 40, 41, 42, 97, 128, 129, 130, - 43, 44, 46, 47, 49, 50, 48, 134, 51, 52, - 53, 59, 78, 114, 92, 135, 85, 158, 93, 94, - 111, 112, 205, 98, 54, 76, 79, 60, 63, 101, - 102, 77, 159, 103, 64, 65, 66, 196, 115, 172, - 173, 174, 175, 176, 177, 185, 104, 72, 106, 107, - 108, 160, 69, 70, 91, 80, 81, 96, 124, 125, - 206, 126, 131, 132, 133, 163, 164, 166, 168, 169, - 167, 170, 180, 137, 138, 142, 143, 140, 141, 144, - 145, 147, 146, 199, 201, 200, 161, 171, 189, 191, - 190, 192, 193, 194, 165, 178, 181, 182, 203, 0, - 0, 0, 0, 0, 0, 0, 214, 216, 217, 218, - 220, 221, 222, 219, 0, 0, 0, 0, 0, 0, - 224, 226, 227, 228, 229, 230, 231, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 239, 240, 237, - 241, 238, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 245, 246, 247, 248, 252, 249, 250, 251, 0, - 0, 0, 0, 0, 263, 267, 268, 269, 270, 259, - 261, 262, 264, 265, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 489, 491, 493, 492, 498, 494, 495, - 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 0, - 547, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 556, 558, 559, 560, 562, 563, 561, 564, - 565, 566, 567, 0, 0, 0, 0, 0, 0, 579, - 581, 582, 583, 584, 585, 586, 0, 0, 595, 597, - 598, 272, 271, 278, 291, 289, 301, 297, 298, 302, - 299, 300, 303, 304, 305, 306, 307, 330, 331, 332, - 333, 334, 359, 360, 361, 366, 367, 294, 368, 369, - 372, 370, 371, 374, 375, 376, 390, 345, 346, 348, - 349, 377, 393, 339, 341, 394, 400, 401, 402, 295, - 358, 418, 419, 340, 413, 323, 290, 335, 391, 397, - 378, 0, 0, 422, 296, 273, 322, 382, 274, 292, - 293, 336, 337, 420, 380, 384, 385, 275, 423, 362, - 389, 324, 344, 395, 396, 399, 412, 338, 416, 414, - 415, 350, 357, 386, 387, 351, 352, 379, 404, 325, - 326, 329, 308, 310, 311, 312, 313, 314, 424, 425, - 427, 363, 364, 365, 373, 428, 429, 430, 0, 0, - 0, 381, 353, 355, 551, 439, 443, 441, 440, 444, - 442, 0, 0, 447, 448, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 383, 398, 417, 452, 453, - 354, 431, 0, 0, 0, 0, 0, 0, 405, 406, - 407, 408, 409, 410, 411, 552, 347, 342, 403, 321, - 276, 277, 343, 454, 456, 455, 457, 458, 459, 309, - 316, 449, 451, 450, 315, 0, 328, 388, 426, 327, - 356, 317, 318, 320, 319, 460, 461, 462, 466, 465, - 463, 464, 467, 468, 469, 470, 472, 471, 481, 0, - 485, 486, 0, 0, 487, 473, 479, 474, 475, 476, - 478, 480, 477, 253, 254, 255, 256, 257, 499, 501, - 500, 503, 504, 505, 506, 502, 528, 529, 530, 531, + 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, + 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, + 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, + 597, 599, 600, 274, 273, 280, 293, 291, 303, 299, + 300, 304, 301, 302, 305, 306, 307, 308, 309, 332, + 333, 334, 335, 336, 361, 362, 363, 368, 369, 296, + 370, 371, 374, 372, 373, 376, 377, 378, 392, 347, + 348, 350, 351, 379, 395, 341, 343, 396, 402, 403, + 404, 297, 360, 420, 421, 342, 415, 325, 292, 337, + 393, 399, 380, 0, 0, 424, 298, 275, 324, 384, + 276, 294, 295, 338, 339, 422, 382, 386, 387, 277, + 425, 364, 391, 326, 346, 397, 398, 401, 414, 340, + 418, 416, 417, 352, 359, 388, 389, 353, 354, 381, + 406, 327, 328, 331, 310, 312, 313, 314, 315, 316, + 426, 427, 429, 365, 366, 367, 375, 430, 431, 432, + 0, 0, 0, 383, 355, 357, 553, 441, 445, 443, + 442, 446, 444, 0, 0, 449, 450, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 385, 400, 419, + 454, 455, 356, 433, 0, 0, 0, 0, 0, 0, + 407, 408, 409, 410, 411, 412, 413, 554, 349, 344, + 405, 323, 278, 279, 345, 456, 458, 457, 459, 460, + 461, 311, 318, 451, 453, 452, 317, 0, 330, 390, + 428, 329, 358, 319, 320, 322, 321, 462, 463, 464, + 468, 467, 465, 466, 469, 470, 471, 472, 474, 473, + 483, 0, 487, 488, 0, 0, 489, 475, 481, 476, + 477, 478, 480, 482, 479, 255, 256, 257, 258, 259, + 501, 503, 502, 505, 506, 507, 508, 504, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 550, 568, 569, 570, 573, 571, - 572, 574, 575, 576, 577, 587, 588, 589, 590, 591, - 592, 599, 600, 392, 421, 438, 553, 554, 445, 446, - 432, 433, 0, 0, 0, 437, 593, 482, 483, 484, - 436, 434, 435 + 542, 543, 544, 545, 546, 547, 552, 570, 571, 572, + 575, 573, 574, 576, 577, 578, 579, 589, 590, 591, + 592, 593, 594, 601, 602, 394, 423, 440, 555, 556, + 447, 448, 434, 435, 0, 0, 0, 439, 595, 484, + 485, 486, 438, 436, 437 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1618,8 +1621,8 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -23, 248, - 574, 575, 576, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 574, + 575, 576, 577, 578, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1627,44 +1630,44 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272 + -272, -272 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 234, 17, 29, 436, 18, - 30, 450, 19, 31, 464, 20, 32, 480, 494, 495, - 496, 497, 498, 21, 33, 499, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 437, 438, 439, 440, 441, - 442, 443, 451, 452, 453, 454, 455, 456, 481, 482, - 483, 484, 485, 486, 487, 488, 465, 466, 467, 468, - 469, 470, 471, 22, 34, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 23, 35, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 24, 36, 560, 561, 424, - 425, 426, 427, 25, 37, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 26, 38, 589, 590, - 591, 592, 593, 594, 595, 428, 27, 39, 598, 599, - 600 + -1, 1, 16, 17, 18, 30, 236, 19, 31, 438, + 20, 32, 452, 21, 33, 466, 22, 34, 482, 496, + 497, 498, 499, 500, 23, 35, 501, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 439, 440, 441, 442, + 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, + 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, + 470, 471, 472, 473, 24, 36, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 25, 37, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 26, 38, 562, 563, + 426, 427, 428, 429, 27, 39, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 28, 40, 591, + 592, 593, 594, 595, 596, 597, 430, 29, 41, 600, + 601, 602 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1672,162 +1675,164 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 472, 429, 457, 430, 431, 559, 444, 596, 597, - 500, 3, 601, 602, 603, 445, 446, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 604, 605, 472, 606, 458, - 459, 607, 608, 609, 610, 4, 611, 612, 613, 614, - 615, 5, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 616, 617, 460, 432, 505, 506, 507, 508, - 509, 510, 511, 512, 583, 584, 585, 586, 587, 588, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 6, 433, 633, 634, 434, - 447, 635, 448, 636, 637, 638, 639, 640, 641, 642, - 643, 7, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 461, 462, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 8, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 463, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 9, 738, 474, 475, 476, 739, 740, 741, 742, 743, - 744, 745, 479, 746, 747, 748, 749, 435, 10, 750, - 751, 449, 752, 753, 754, 755, 756, 757, 758, 759, - 489, 490, 491, 492, 493, 11, 473, 760, 474, 475, - 476, 477, 478, 761, 12, 762, 763, 764, 479, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 13, 784, - 785, 501, 14, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 786, 787, 788, 789, 72, - 73, 74, 790, 791, 792, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 116, 117, 118, 802, 119, - 120, 121, 803, 804, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 805, 806, - 807, 146, 808, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 828, 196, 829, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 212, 213, 214, 215, 216, 217, 841, 842, 843, 844, - 845, 846, 847, 218, 848, 849, 850, 851, 852, 853, - 854, 219, 220, 855, 221, 222, 856, 223, 224, 857, - 858, 225, 226, 227, 228, 229, 230, 231, 232, 859, - 860, 861, 233, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 0, 0, 0, 0, 0, 0, + 2, 474, 459, 431, 561, 432, 433, 603, 446, 598, + 599, 3, 4, 604, 605, 606, 447, 448, 585, 586, + 587, 588, 589, 590, 474, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 607, 608, 609, 460, 461, + 610, 611, 612, 613, 614, 615, 5, 616, 617, 618, + 619, 620, 6, 621, 622, 623, 624, 625, 626, 627, + 628, 629, 630, 462, 631, 632, 434, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 507, 508, 509, 510, 511, + 512, 513, 514, 633, 634, 635, 7, 435, 636, 637, + 436, 449, 638, 450, 639, 640, 641, 642, 643, 644, + 645, 646, 8, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 463, 464, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 9, 685, 686, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 465, 701, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 10, 476, 477, 478, 741, 742, 743, 744, 745, + 746, 747, 481, 748, 749, 750, 751, 752, 437, 11, + 753, 754, 451, 475, 755, 476, 477, 478, 479, 480, + 491, 492, 493, 494, 495, 481, 12, 756, 757, 758, + 759, 760, 761, 762, 763, 13, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 14, + 787, 0, 788, 15, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 789, 790, 791, 792, + 74, 75, 76, 793, 794, 795, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 118, 119, 120, 805, + 121, 122, 123, 806, 807, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 808, + 809, 810, 148, 811, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, + 828, 829, 830, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 831, 198, 832, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, + 843, 214, 215, 216, 217, 218, 219, 844, 845, 846, + 847, 848, 849, 850, 220, 851, 852, 853, 854, 855, + 856, 857, 221, 222, 858, 223, 224, 859, 225, 226, + 860, 861, 227, 228, 229, 230, 231, 232, 233, 234, + 862, 863, 864, 235, 865, 866, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 891, 892, 893, 894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 504 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, + 503, 504, 505, 506 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 33, 11, 10, 10, 10, 52, 53, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, - 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 0, 45, 45, 45, 113, 47, 48, 10, 45, 280, + 281, 11, 12, 10, 10, 10, 53, 54, 247, 248, + 249, 250, 251, 252, 45, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 10, 10, 10, 81, 82, + 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, + 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 106, 10, 10, 108, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 97, 98, 99, 100, 101, + 102, 103, 104, 10, 10, 10, 96, 139, 10, 10, + 142, 138, 10, 140, 10, 10, 10, 10, 10, 10, + 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, - 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, - 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, + 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 256, 257, 258, 10, 10, 10, 10, 10, + 10, 10, 266, 10, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 254, 10, 256, 257, 258, 259, 260, + 284, 285, 286, 287, 288, 266, 246, 10, 10, 10, + 10, 10, 10, 10, 10, 255, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 33, 282, 12, 13, 14, 15, 16, 17, 18, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, -1, 10, 283, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 10, 10, 10, 10, 48, - 49, 50, 10, 10, 10, 54, 55, 56, 57, 58, + 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, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 104, 105, 106, 10, 108, - 109, 110, 10, 10, 113, 114, 115, 116, 117, 118, + 89, 90, 91, 92, 93, 94, 95, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 105, 106, 107, 10, + 109, 110, 111, 10, 10, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 10, 10, - 10, 140, 10, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 10, + 10, 10, 141, 10, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 171, 172, 173, 174, 175, 176, 177, 178, + 10, 10, 10, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 10, 211, 10, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 10, + 209, 210, 10, 212, 10, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 239, 240, 241, 242, 243, 244, 10, 10, 10, 10, - 10, 10, 10, 252, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 10, 263, 264, 10, 266, 267, 10, - 10, 270, 271, 272, 273, 274, 275, 276, 277, 10, - 10, 10, 281, 10, 10, 10, 10, 10, 10, 10, + 10, 240, 241, 242, 243, 244, 245, 10, 10, 10, + 10, 10, 10, 10, 253, 10, 10, 10, 10, 10, + 10, 10, 261, 262, 10, 264, 265, 10, 267, 268, + 10, 10, 271, 272, 273, 274, 275, 276, 277, 278, + 10, 10, 10, 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 33, 33 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 289, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 290, 291, 294, 297, 300, - 303, 311, 531, 542, 563, 571, 584, 594, 292, 295, - 298, 301, 304, 312, 532, 543, 564, 572, 585, 595, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 48, 49, 50, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, - 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 252, 260, - 261, 263, 264, 266, 267, 270, 271, 272, 273, 274, - 275, 276, 277, 281, 293, 314, 315, 316, 317, 318, + 0, 290, 0, 11, 12, 46, 52, 96, 112, 153, + 211, 229, 246, 255, 279, 283, 291, 292, 293, 296, + 299, 302, 305, 313, 533, 544, 565, 573, 586, 596, + 294, 297, 300, 303, 306, 314, 534, 545, 566, 574, + 587, 597, 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, 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, 105, 106, + 107, 109, 110, 111, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 141, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 212, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 240, 241, 242, 243, 244, 245, + 253, 261, 262, 264, 265, 267, 268, 271, 272, 273, + 274, 275, 276, 277, 278, 282, 295, 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, @@ -1846,25 +1851,25 @@ static const yytype_uint16 yystos[] = 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, 567, 568, 569, 570, 593, 44, - 46, 47, 107, 138, 141, 269, 296, 503, 504, 505, - 506, 507, 508, 509, 44, 52, 53, 137, 139, 268, - 299, 510, 511, 512, 513, 514, 515, 44, 80, 81, - 105, 172, 173, 212, 302, 524, 525, 526, 527, 528, - 529, 530, 44, 253, 255, 256, 257, 258, 259, 265, - 305, 516, 517, 518, 519, 520, 521, 522, 523, 283, - 284, 285, 286, 287, 306, 307, 308, 309, 310, 313, - 516, 517, 518, 519, 520, 96, 97, 98, 99, 100, - 101, 102, 103, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 112, - 565, 566, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 246, 247, 248, 249, 250, 251, 586, - 587, 588, 589, 590, 591, 592, 279, 280, 596, 597, - 598, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 499, 500, 501, 502, 503, 504, 569, 570, 571, 572, + 595, 45, 47, 48, 108, 139, 142, 270, 298, 505, + 506, 507, 508, 509, 510, 511, 45, 53, 54, 138, + 140, 269, 301, 512, 513, 514, 515, 516, 517, 45, + 81, 82, 106, 173, 174, 213, 304, 526, 527, 528, + 529, 530, 531, 532, 45, 254, 256, 257, 258, 259, + 260, 266, 307, 518, 519, 520, 521, 522, 523, 524, + 525, 284, 285, 286, 287, 288, 308, 309, 310, 311, + 312, 315, 518, 519, 520, 521, 522, 97, 98, 99, + 100, 101, 102, 103, 104, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 113, 567, 568, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, + 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, + 598, 599, 600, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1893,40 +1898,40 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 289, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 292, 292, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 294, 295, 295, 296, 296, 296, 296, - 296, 296, 296, 297, 298, 298, 299, 299, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 303, 304, 304, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 308, 309, 310, 311, 312, - 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 292, 293, 294, + 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 296, 297, 297, 298, 298, + 298, 298, 298, 298, 298, 299, 300, 300, 301, 301, + 301, 301, 301, 301, 302, 303, 303, 304, 304, 304, + 304, 304, 304, 304, 305, 306, 306, 307, 307, 307, + 307, 307, 307, 307, 307, 308, 309, 310, 311, 312, + 313, 314, 314, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 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, @@ -1948,84 +1953,84 @@ static const yytype_uint16 yyr1[] = 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, - 532, 533, 533, 533, 533, 533, 533, 533, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, + 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 574, 575, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 585, 586, 586, 586, 586, 586, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 595, 596, 596, 597, - 598 + 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, + 598, 599, 600 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2709,16 +2714,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 16: + case 17: #line 190 "./util/configparser.y" - { - OUTYY(("\nP(server:)\n")); + { + OUTYY(("\nP(force-toplevel)\n")); } -#line 2718 "util/configparser.c" +#line 2723 "util/configparser.c" break; - case 213: -#line 284 "./util/configparser.y" + case 18: +#line 195 "./util/configparser.y" + { + OUTYY(("\nP(server:)\n")); + } +#line 2731 "util/configparser.c" + break; + + case 215: +#line 289 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2729,11 +2742,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2733 "util/configparser.c" +#line 2746 "util/configparser.c" break; - case 223: -#line 301 "./util/configparser.y" + case 225: +#line 306 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2744,11 +2757,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 2761 "util/configparser.c" break; - case 232: -#line 318 "./util/configparser.y" + case 234: +#line 323 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2761,11 +2774,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 2778 "util/configparser.c" break; - case 242: -#line 337 "./util/configparser.y" + case 244: +#line 342 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2781,11 +2794,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2785 "util/configparser.c" +#line 2798 "util/configparser.c" break; - case 253: -#line 361 "./util/configparser.y" + case 255: +#line 366 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2802,11 +2815,11 @@ yyreduce: } } -#line 2806 "util/configparser.c" +#line 2819 "util/configparser.c" break; - case 254: -#line 380 "./util/configparser.y" + case 256: +#line 385 "./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 && @@ -2821,21 +2834,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2825 "util/configparser.c" +#line 2838 "util/configparser.c" break; - case 255: -#line 397 "./util/configparser.y" + case 257: +#line 402 "./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 2835 "util/configparser.c" +#line 2848 "util/configparser.c" break; - case 256: -#line 405 "./util/configparser.y" + case 258: +#line 410 "./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) @@ -2843,21 +2856,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2847 "util/configparser.c" +#line 2860 "util/configparser.c" break; - case 257: -#line 415 "./util/configparser.y" + case 259: +#line 420 "./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 2857 "util/configparser.c" +#line 2870 "util/configparser.c" break; - case 258: -#line 423 "./util/configparser.y" + case 260: +#line 428 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2873,11 +2886,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2877 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 271: -#line 446 "./util/configparser.y" + case 273: +#line 451 "./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) @@ -2885,11 +2898,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2889 "util/configparser.c" +#line 2902 "util/configparser.c" break; - case 272: -#line 455 "./util/configparser.y" + case 274: +#line 460 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2897,11 +2910,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2901 "util/configparser.c" +#line 2914 "util/configparser.c" break; - case 273: -#line 464 "./util/configparser.y" + case 275: +#line 469 "./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) @@ -2911,11 +2924,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2915 "util/configparser.c" +#line 2928 "util/configparser.c" break; - case 274: -#line 475 "./util/configparser.y" + case 276: +#line 480 "./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) @@ -2923,11 +2936,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2940 "util/configparser.c" break; - case 275: -#line 484 "./util/configparser.y" + case 277: +#line 489 "./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) @@ -2935,11 +2948,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2939 "util/configparser.c" +#line 2952 "util/configparser.c" break; - case 276: -#line 493 "./util/configparser.y" + case 278: +#line 498 "./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) @@ -2947,11 +2960,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2951 "util/configparser.c" +#line 2964 "util/configparser.c" break; - case 277: -#line 502 "./util/configparser.y" + case 279: +#line 507 "./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) @@ -2961,11 +2974,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2965 "util/configparser.c" +#line 2978 "util/configparser.c" break; - case 278: -#line 513 "./util/configparser.y" + case 280: +#line 518 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2973,11 +2986,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2990 "util/configparser.c" break; - case 279: -#line 522 "./util/configparser.y" + case 281: +#line 527 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2988,11 +3001,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 3005 "util/configparser.c" break; - case 280: -#line 534 "./util/configparser.y" + case 282: +#line 539 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3004,11 +3017,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3021 "util/configparser.c" break; - case 281: -#line 548 "./util/configparser.y" + case 283: +#line 553 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3022,11 +3035,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" +#line 3039 "util/configparser.c" break; - case 282: -#line 563 "./util/configparser.y" + case 284: +#line 568 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3036,11 +3049,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" +#line 3053 "util/configparser.c" break; - case 283: -#line 574 "./util/configparser.y" + case 285: +#line 579 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3056,11 +3069,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3073 "util/configparser.c" break; - case 284: -#line 591 "./util/configparser.y" + case 286: +#line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3076,11 +3089,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3093 "util/configparser.c" break; - case 285: -#line 608 "./util/configparser.y" + case 287: +#line 613 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3096,11 +3109,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 286: -#line 625 "./util/configparser.y" + case 288: +#line 630 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3116,11 +3129,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 287: -#line 642 "./util/configparser.y" + case 289: +#line 647 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3134,11 +3147,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3138 "util/configparser.c" +#line 3151 "util/configparser.c" break; - case 288: -#line 657 "./util/configparser.y" + case 290: +#line 662 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3152,11 +3165,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3169 "util/configparser.c" break; - case 289: -#line 672 "./util/configparser.y" + case 291: +#line 677 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3168,11 +3181,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3172 "util/configparser.c" +#line 3185 "util/configparser.c" break; - case 290: -#line 685 "./util/configparser.y" + case 292: +#line 690 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3186,11 +3199,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3190 "util/configparser.c" +#line 3203 "util/configparser.c" break; - case 291: -#line 700 "./util/configparser.y" + case 293: +#line 705 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3198,11 +3211,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3215 "util/configparser.c" break; - case 292: -#line 709 "./util/configparser.y" + case 294: +#line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3210,11 +3223,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3227 "util/configparser.c" break; - case 293: -#line 718 "./util/configparser.y" + case 295: +#line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3222,11 +3235,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" +#line 3239 "util/configparser.c" break; - case 294: -#line 727 "./util/configparser.y" + case 296: +#line 732 "./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) @@ -3234,11 +3247,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3238 "util/configparser.c" +#line 3251 "util/configparser.c" break; - case 295: -#line 736 "./util/configparser.y" + case 297: +#line 741 "./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) @@ -3246,11 +3259,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3250 "util/configparser.c" +#line 3263 "util/configparser.c" break; - case 296: -#line 745 "./util/configparser.y" + case 298: +#line 750 "./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) @@ -3258,11 +3271,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3275 "util/configparser.c" break; - case 297: -#line 754 "./util/configparser.y" + case 299: +#line 759 "./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) @@ -3270,11 +3283,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3287 "util/configparser.c" break; - case 298: -#line 763 "./util/configparser.y" + case 300: +#line 768 "./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) @@ -3282,11 +3295,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3286 "util/configparser.c" +#line 3299 "util/configparser.c" break; - case 299: -#line 772 "./util/configparser.y" + case 301: +#line 777 "./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) @@ -3294,11 +3307,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3311 "util/configparser.c" break; - case 300: -#line 781 "./util/configparser.y" + case 302: +#line 786 "./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) @@ -3306,11 +3319,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3323 "util/configparser.c" break; - case 301: -#line 790 "./util/configparser.y" + case 303: +#line 795 "./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) @@ -3318,11 +3331,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3322 "util/configparser.c" +#line 3335 "util/configparser.c" break; - case 302: -#line 799 "./util/configparser.y" + case 304: +#line 804 "./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) @@ -3330,11 +3343,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3334 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 303: -#line 808 "./util/configparser.y" + case 305: +#line 813 "./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) @@ -3342,11 +3355,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3346 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 304: -#line 817 "./util/configparser.y" + case 306: +#line 822 "./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) @@ -3354,11 +3367,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 305: -#line 826 "./util/configparser.y" + case 307: +#line 831 "./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) @@ -3370,11 +3383,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3387 "util/configparser.c" break; - case 306: -#line 839 "./util/configparser.y" + case 308: +#line 844 "./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) @@ -3382,11 +3395,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3399 "util/configparser.c" break; - case 307: -#line 848 "./util/configparser.y" + case 309: +#line 853 "./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) @@ -3398,11 +3411,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3415 "util/configparser.c" break; - case 308: -#line 861 "./util/configparser.y" + case 310: +#line 866 "./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) @@ -3410,11 +3423,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3427 "util/configparser.c" break; - case 309: -#line 870 "./util/configparser.y" + case 311: +#line 875 "./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) @@ -3422,11 +3435,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3439 "util/configparser.c" break; - case 310: -#line 879 "./util/configparser.y" + case 312: +#line 884 "./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) @@ -3434,31 +3447,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3451 "util/configparser.c" break; - case 311: -#line 888 "./util/configparser.y" + case 313: +#line 893 "./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 3448 "util/configparser.c" +#line 3461 "util/configparser.c" break; - case 312: -#line 895 "./util/configparser.y" + case 314: +#line 900 "./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 3458 "util/configparser.c" +#line 3471 "util/configparser.c" break; - case 313: -#line 902 "./util/configparser.y" + case 315: +#line 907 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3466,21 +3479,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3483 "util/configparser.c" break; - case 314: -#line 911 "./util/configparser.y" + case 316: +#line 916 "./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 3480 "util/configparser.c" +#line 3493 "util/configparser.c" break; - case 315: -#line 918 "./util/configparser.y" + case 317: +#line 923 "./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) @@ -3488,53 +3501,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3505 "util/configparser.c" break; - case 316: -#line 927 "./util/configparser.y" + case 318: +#line 932 "./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 3503 "util/configparser.c" +#line 3516 "util/configparser.c" break; - case 317: -#line 935 "./util/configparser.y" + case 319: +#line 940 "./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 3513 "util/configparser.c" +#line 3526 "util/configparser.c" break; - case 318: -#line 942 "./util/configparser.y" + case 320: +#line 947 "./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 3523 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 319: -#line 949 "./util/configparser.y" + case 321: +#line 954 "./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 3534 "util/configparser.c" +#line 3547 "util/configparser.c" break; - case 320: -#line 957 "./util/configparser.y" + case 322: +#line 962 "./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) @@ -3542,11 +3555,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 3559 "util/configparser.c" break; - case 321: -#line 966 "./util/configparser.y" + case 323: +#line 971 "./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) @@ -3554,11 +3567,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" +#line 3571 "util/configparser.c" break; - case 322: -#line 975 "./util/configparser.y" + case 324: +#line 980 "./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) @@ -3566,11 +3579,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 323: -#line 984 "./util/configparser.y" + case 325: +#line 989 "./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) @@ -3583,11 +3596,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3587 "util/configparser.c" +#line 3600 "util/configparser.c" break; - case 324: -#line 998 "./util/configparser.y" + case 326: +#line 1003 "./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) @@ -3595,11 +3608,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3599 "util/configparser.c" +#line 3612 "util/configparser.c" break; - case 325: -#line 1007 "./util/configparser.y" + case 327: +#line 1012 "./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) @@ -3607,11 +3620,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3624 "util/configparser.c" break; - case 326: -#line 1016 "./util/configparser.y" + case 328: +#line 1021 "./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) @@ -3619,11 +3632,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3623 "util/configparser.c" +#line 3636 "util/configparser.c" break; - case 327: -#line 1025 "./util/configparser.y" + case 329: +#line 1030 "./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) @@ -3631,11 +3644,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 3648 "util/configparser.c" break; - case 328: -#line 1034 "./util/configparser.y" + case 330: +#line 1039 "./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) @@ -3643,11 +3656,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 3660 "util/configparser.c" break; - case 329: -#line 1043 "./util/configparser.y" + case 331: +#line 1048 "./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) @@ -3655,31 +3668,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3659 "util/configparser.c" +#line 3672 "util/configparser.c" break; - case 330: -#line 1052 "./util/configparser.y" + case 332: +#line 1057 "./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 3669 "util/configparser.c" +#line 3682 "util/configparser.c" break; - case 331: -#line 1059 "./util/configparser.y" + case 333: +#line 1064 "./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 3679 "util/configparser.c" +#line 3692 "util/configparser.c" break; - case 332: -#line 1066 "./util/configparser.y" + case 334: +#line 1071 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3704,105 +3717,105 @@ yyreduce: } } } -#line 3708 "util/configparser.c" +#line 3721 "util/configparser.c" break; - case 333: -#line 1092 "./util/configparser.y" + case 335: +#line 1097 "./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 3719 "util/configparser.c" +#line 3732 "util/configparser.c" break; - case 334: -#line 1100 "./util/configparser.y" + case 336: +#line 1105 "./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 3729 "util/configparser.c" +#line 3742 "util/configparser.c" break; - case 335: -#line 1107 "./util/configparser.y" + case 337: +#line 1112 "./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 3739 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 336: -#line 1114 "./util/configparser.y" + case 338: +#line 1119 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3749 "util/configparser.c" +#line 3762 "util/configparser.c" break; - case 337: -#line 1121 "./util/configparser.y" + case 339: +#line 1126 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3759 "util/configparser.c" +#line 3772 "util/configparser.c" break; - case 338: -#line 1128 "./util/configparser.y" + case 340: +#line 1133 "./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 3770 "util/configparser.c" +#line 3783 "util/configparser.c" break; - case 339: -#line 1136 "./util/configparser.y" + case 341: +#line 1141 "./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 3781 "util/configparser.c" +#line 3794 "util/configparser.c" break; - case 340: -#line 1144 "./util/configparser.y" + case 342: +#line 1149 "./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 3792 "util/configparser.c" +#line 3805 "util/configparser.c" break; - case 341: -#line 1152 "./util/configparser.y" + case 343: +#line 1157 "./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 3802 "util/configparser.c" +#line 3815 "util/configparser.c" break; - case 342: -#line 1159 "./util/configparser.y" + case 344: +#line 1164 "./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) @@ -3812,11 +3825,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3829 "util/configparser.c" break; - case 343: -#line 1170 "./util/configparser.y" + case 345: +#line 1175 "./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) @@ -3826,21 +3839,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3843 "util/configparser.c" break; - case 344: -#line 1181 "./util/configparser.y" + case 346: +#line 1186 "./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 3840 "util/configparser.c" +#line 3853 "util/configparser.c" break; - case 345: -#line 1188 "./util/configparser.y" + case 347: +#line 1193 "./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) @@ -3848,11 +3861,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3865 "util/configparser.c" break; - case 346: -#line 1197 "./util/configparser.y" + case 348: +#line 1202 "./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) @@ -3860,11 +3873,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3877 "util/configparser.c" break; - case 347: -#line 1206 "./util/configparser.y" + case 349: +#line 1211 "./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) @@ -3872,53 +3885,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3889 "util/configparser.c" break; - case 348: -#line 1215 "./util/configparser.y" + case 350: +#line 1220 "./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 3886 "util/configparser.c" +#line 3899 "util/configparser.c" break; - case 349: -#line 1222 "./util/configparser.y" + case 351: +#line 1227 "./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 3896 "util/configparser.c" +#line 3909 "util/configparser.c" break; - case 350: -#line 1229 "./util/configparser.y" + case 352: +#line 1234 "./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 3907 "util/configparser.c" +#line 3920 "util/configparser.c" break; - case 351: -#line 1237 "./util/configparser.y" + case 353: +#line 1242 "./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 3918 "util/configparser.c" +#line 3931 "util/configparser.c" break; - case 352: -#line 1245 "./util/configparser.y" + case 354: +#line 1250 "./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) @@ -3927,11 +3940,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 3944 "util/configparser.c" break; - case 353: -#line 1255 "./util/configparser.y" + case 355: +#line 1260 "./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) @@ -3940,11 +3953,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3957 "util/configparser.c" break; - case 354: -#line 1265 "./util/configparser.y" + case 356: +#line 1270 "./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) @@ -3953,11 +3966,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 355: -#line 1275 "./util/configparser.y" + case 357: +#line 1280 "./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) @@ -3970,22 +3983,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3987 "util/configparser.c" break; - case 356: -#line 1289 "./util/configparser.y" + case 358: +#line 1294 "./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 3985 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 357: -#line 1297 "./util/configparser.y" + case 359: +#line 1302 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3997,11 +4010,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4014 "util/configparser.c" break; - case 358: -#line 1310 "./util/configparser.y" + case 360: +#line 1315 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4011,22 +4024,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" +#line 4028 "util/configparser.c" break; - case 359: -#line 1321 "./util/configparser.y" + case 361: +#line 1326 "./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 4026 "util/configparser.c" +#line 4039 "util/configparser.c" break; - case 360: -#line 1329 "./util/configparser.y" + case 362: +#line 1334 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4038,11 +4051,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4055 "util/configparser.c" break; - case 361: -#line 1342 "./util/configparser.y" + case 363: +#line 1347 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4050,11 +4063,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4067 "util/configparser.c" break; - case 362: -#line 1351 "./util/configparser.y" + case 364: +#line 1356 "./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) @@ -4062,11 +4075,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4079 "util/configparser.c" break; - case 363: -#line 1360 "./util/configparser.y" + case 365: +#line 1365 "./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) @@ -4074,11 +4087,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4091 "util/configparser.c" break; - case 364: -#line 1369 "./util/configparser.y" + case 366: +#line 1374 "./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) @@ -4087,11 +4100,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4104 "util/configparser.c" break; - case 365: -#line 1379 "./util/configparser.y" + case 367: +#line 1384 "./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) @@ -4100,22 +4113,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4117 "util/configparser.c" break; - case 366: -#line 1389 "./util/configparser.y" + case 368: +#line 1394 "./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 4115 "util/configparser.c" +#line 4128 "util/configparser.c" break; - case 367: -#line 1397 "./util/configparser.y" + case 369: +#line 1402 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4127,11 +4140,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4144 "util/configparser.c" break; - case 368: -#line 1410 "./util/configparser.y" + case 370: +#line 1415 "./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) @@ -4139,22 +4152,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4156 "util/configparser.c" break; - case 369: -#line 1419 "./util/configparser.y" + case 371: +#line 1424 "./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 4154 "util/configparser.c" +#line 4167 "util/configparser.c" break; - case 370: -#line 1427 "./util/configparser.y" + case 372: +#line 1432 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4162,22 +4175,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4179 "util/configparser.c" break; - case 371: -#line 1436 "./util/configparser.y" + case 373: +#line 1441 "./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 4177 "util/configparser.c" +#line 4190 "util/configparser.c" break; - case 372: -#line 1444 "./util/configparser.y" + case 374: +#line 1449 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4189,11 +4202,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4206 "util/configparser.c" break; - case 373: -#line 1457 "./util/configparser.y" + case 375: +#line 1462 "./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) @@ -4201,21 +4214,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4205 "util/configparser.c" +#line 4218 "util/configparser.c" break; - case 374: -#line 1466 "./util/configparser.y" + case 376: +#line 1471 "./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 4215 "util/configparser.c" +#line 4228 "util/configparser.c" break; - case 375: -#line 1473 "./util/configparser.y" + case 377: +#line 1478 "./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) @@ -4224,11 +4237,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4241 "util/configparser.c" break; - case 376: -#line 1483 "./util/configparser.y" + case 378: +#line 1488 "./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) @@ -4237,11 +4250,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4254 "util/configparser.c" break; - case 377: -#line 1493 "./util/configparser.y" + case 379: +#line 1498 "./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) @@ -4250,11 +4263,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4267 "util/configparser.c" break; - case 378: -#line 1503 "./util/configparser.y" + case 380: +#line 1508 "./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) @@ -4263,11 +4276,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 379: -#line 1513 "./util/configparser.y" + case 381: +#line 1518 "./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) @@ -4276,11 +4289,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4293 "util/configparser.c" break; - case 380: -#line 1523 "./util/configparser.y" + case 382: +#line 1528 "./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) @@ -4289,11 +4302,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4306 "util/configparser.c" break; - case 381: -#line 1533 "./util/configparser.y" + case 383: +#line 1538 "./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) @@ -4302,11 +4315,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 382: -#line 1543 "./util/configparser.y" + case 384: +#line 1548 "./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) @@ -4315,41 +4328,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4332 "util/configparser.c" break; - case 383: -#line 1553 "./util/configparser.y" + case 385: +#line 1558 "./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 4329 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 384: -#line 1560 "./util/configparser.y" + case 386: +#line 1565 "./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 4339 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 385: -#line 1567 "./util/configparser.y" + case 387: +#line 1572 "./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 4349 "util/configparser.c" +#line 4362 "util/configparser.c" break; - case 386: -#line 1574 "./util/configparser.y" + case 388: +#line 1579 "./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) @@ -4357,11 +4370,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4374 "util/configparser.c" break; - case 387: -#line 1583 "./util/configparser.y" + case 389: +#line 1588 "./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) @@ -4369,11 +4382,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4386 "util/configparser.c" break; - case 388: -#line 1592 "./util/configparser.y" + case 390: +#line 1597 "./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) @@ -4381,11 +4394,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4398 "util/configparser.c" break; - case 389: -#line 1601 "./util/configparser.y" + case 391: +#line 1606 "./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) @@ -4393,21 +4406,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4410 "util/configparser.c" break; - case 390: -#line 1610 "./util/configparser.y" + case 392: +#line 1615 "./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 4407 "util/configparser.c" +#line 4420 "util/configparser.c" break; - case 391: -#line 1617 "./util/configparser.y" + case 393: +#line 1622 "./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) @@ -4416,11 +4429,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4420 "util/configparser.c" +#line 4433 "util/configparser.c" break; - case 392: -#line 1627 "./util/configparser.y" + case 394: +#line 1632 "./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 && @@ -4439,21 +4452,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4443 "util/configparser.c" +#line 4456 "util/configparser.c" break; - case 393: -#line 1647 "./util/configparser.y" + case 395: +#line 1652 "./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 4453 "util/configparser.c" +#line 4466 "util/configparser.c" break; - case 394: -#line 1654 "./util/configparser.y" + case 396: +#line 1659 "./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) { @@ -4470,11 +4483,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4487 "util/configparser.c" break; - case 395: -#line 1672 "./util/configparser.y" + case 397: +#line 1677 "./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) { @@ -4486,11 +4499,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4503 "util/configparser.c" break; - case 396: -#line 1685 "./util/configparser.y" + case 398: +#line 1690 "./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) { @@ -4502,11 +4515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 397: -#line 1698 "./util/configparser.y" + case 399: +#line 1703 "./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) @@ -4514,11 +4527,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" +#line 4531 "util/configparser.c" break; - case 398: -#line 1707 "./util/configparser.y" + case 400: +#line 1712 "./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) @@ -4526,11 +4539,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" +#line 4543 "util/configparser.c" break; - case 399: -#line 1716 "./util/configparser.y" + case 401: +#line 1721 "./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) @@ -4538,11 +4551,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4555 "util/configparser.c" break; - case 400: -#line 1725 "./util/configparser.y" + case 402: +#line 1730 "./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) @@ -4550,11 +4563,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4567 "util/configparser.c" break; - case 401: -#line 1734 "./util/configparser.y" + case 403: +#line 1739 "./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) @@ -4563,11 +4576,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4580 "util/configparser.c" break; - case 402: -#line 1744 "./util/configparser.y" + case 404: +#line 1749 "./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) @@ -4576,11 +4589,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4593 "util/configparser.c" break; - case 403: -#line 1754 "./util/configparser.y" + case 405: +#line 1759 "./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) @@ -4590,11 +4603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4607 "util/configparser.c" break; - case 404: -#line 1765 "./util/configparser.y" + case 406: +#line 1770 "./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) @@ -4602,11 +4615,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 405: -#line 1774 "./util/configparser.y" + case 407: +#line 1779 "./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) @@ -4614,11 +4627,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4631 "util/configparser.c" break; - case 406: -#line 1783 "./util/configparser.y" + case 408: +#line 1788 "./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) @@ -4626,11 +4639,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4643 "util/configparser.c" break; - case 407: -#line 1792 "./util/configparser.y" + case 409: +#line 1797 "./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) @@ -4638,11 +4651,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 408: -#line 1801 "./util/configparser.y" + case 410: +#line 1806 "./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) @@ -4650,11 +4663,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4667 "util/configparser.c" break; - case 409: -#line 1810 "./util/configparser.y" + case 411: +#line 1815 "./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) @@ -4662,11 +4675,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 4679 "util/configparser.c" break; - case 410: -#line 1819 "./util/configparser.y" + case 412: +#line 1824 "./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) @@ -4678,11 +4691,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4695 "util/configparser.c" break; - case 411: -#line 1832 "./util/configparser.y" + case 413: +#line 1837 "./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) @@ -4694,11 +4707,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 4711 "util/configparser.c" break; - case 412: -#line 1845 "./util/configparser.y" + case 414: +#line 1850 "./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) @@ -4706,21 +4719,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4723 "util/configparser.c" break; - case 413: -#line 1854 "./util/configparser.y" + case 415: +#line 1859 "./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 4720 "util/configparser.c" +#line 4733 "util/configparser.c" break; - case 414: -#line 1861 "./util/configparser.y" + case 416: +#line 1866 "./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) @@ -4728,11 +4741,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4745 "util/configparser.c" break; - case 415: -#line 1870 "./util/configparser.y" + case 417: +#line 1875 "./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) @@ -4740,11 +4753,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4757 "util/configparser.c" break; - case 416: -#line 1879 "./util/configparser.y" + case 418: +#line 1884 "./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) @@ -4752,11 +4765,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4769 "util/configparser.c" break; - case 417: -#line 1888 "./util/configparser.y" + case 419: +#line 1893 "./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) @@ -4765,22 +4778,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4782 "util/configparser.c" break; - case 418: -#line 1897 "./util/configparser.y" + case 420: +#line 1902 "./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 4780 "util/configparser.c" +#line 4793 "util/configparser.c" break; - case 419: -#line 1905 "./util/configparser.y" + case 421: +#line 1910 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4805,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4809 "util/configparser.c" break; - case 420: -#line 1918 "./util/configparser.y" + case 422: +#line 1923 "./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 4807 "util/configparser.c" +#line 4820 "util/configparser.c" break; - case 421: -#line 1926 "./util/configparser.y" + case 423: +#line 1931 "./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 && @@ -4847,21 +4860,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4851 "util/configparser.c" +#line 4864 "util/configparser.c" break; - case 422: -#line 1967 "./util/configparser.y" + case 424: +#line 1972 "./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 4861 "util/configparser.c" +#line 4874 "util/configparser.c" break; - case 423: -#line 1974 "./util/configparser.y" + case 425: +#line 1979 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4875,11 +4888,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4879 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 424: -#line 1989 "./util/configparser.y" + case 426: +#line 1994 "./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) @@ -4888,11 +4901,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4905 "util/configparser.c" break; - case 425: -#line 1999 "./util/configparser.y" + case 427: +#line 2004 "./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) @@ -4901,41 +4914,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 4918 "util/configparser.c" break; - case 426: -#line 2009 "./util/configparser.y" + case 428: +#line 2014 "./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 4915 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 427: -#line 2016 "./util/configparser.y" + case 429: +#line 2021 "./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 4925 "util/configparser.c" +#line 4938 "util/configparser.c" break; - case 428: -#line 2023 "./util/configparser.y" + case 430: +#line 2028 "./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 4935 "util/configparser.c" +#line 4948 "util/configparser.c" break; - case 429: -#line 2030 "./util/configparser.y" + case 431: +#line 2035 "./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) @@ -4943,22 +4956,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 430: -#line 2039 "./util/configparser.y" + case 432: +#line 2044 "./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 4958 "util/configparser.c" +#line 4971 "util/configparser.c" break; - case 431: -#line 2047 "./util/configparser.y" + case 433: +#line 2052 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4971,11 +4984,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4988 "util/configparser.c" break; - case 432: -#line 2061 "./util/configparser.y" + case 434: +#line 2066 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4995,11 +5008,11 @@ yyreduce: } } } -#line 4999 "util/configparser.c" +#line 5012 "util/configparser.c" break; - case 433: -#line 2082 "./util/configparser.y" + case 435: +#line 2087 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5019,11 +5032,11 @@ yyreduce: } } } -#line 5023 "util/configparser.c" +#line 5036 "util/configparser.c" break; - case 434: -#line 2103 "./util/configparser.y" + case 436: +#line 2108 "./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, @@ -5034,11 +5047,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5038 "util/configparser.c" +#line 5051 "util/configparser.c" break; - case 435: -#line 2115 "./util/configparser.y" + case 437: +#line 2120 "./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, @@ -5049,11 +5062,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5053 "util/configparser.c" +#line 5066 "util/configparser.c" break; - case 436: -#line 2127 "./util/configparser.y" + case 438: +#line 2132 "./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, @@ -5064,11 +5077,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5068 "util/configparser.c" +#line 5081 "util/configparser.c" break; - case 437: -#line 2139 "./util/configparser.y" + case 439: +#line 2144 "./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, @@ -5076,11 +5089,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5080 "util/configparser.c" +#line 5093 "util/configparser.c" break; - case 438: -#line 2148 "./util/configparser.y" + case 440: +#line 2153 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5100,11 +5113,11 @@ yyreduce: } } } -#line 5104 "util/configparser.c" +#line 5117 "util/configparser.c" break; - case 439: -#line 2169 "./util/configparser.y" + case 441: +#line 2174 "./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) @@ -5112,11 +5125,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5129 "util/configparser.c" break; - case 440: -#line 2179 "./util/configparser.y" + case 442: +#line 2184 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5124,33 +5137,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5141 "util/configparser.c" break; - case 441: -#line 2188 "./util/configparser.y" + case 443: +#line 2193 "./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 5139 "util/configparser.c" +#line 5152 "util/configparser.c" break; - case 442: -#line 2196 "./util/configparser.y" + case 444: +#line 2201 "./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 5150 "util/configparser.c" +#line 5163 "util/configparser.c" break; - case 443: -#line 2204 "./util/configparser.y" + case 445: +#line 2209 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5162,11 +5175,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5179 "util/configparser.c" break; - case 444: -#line 2217 "./util/configparser.y" + case 446: +#line 2222 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5178,11 +5191,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5182 "util/configparser.c" +#line 5195 "util/configparser.c" break; - case 445: -#line 2230 "./util/configparser.y" + case 447: +#line 2235 "./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) { @@ -5196,11 +5209,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5200 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 446: -#line 2245 "./util/configparser.y" + case 448: +#line 2250 "./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) { @@ -5214,11 +5227,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5218 "util/configparser.c" +#line 5231 "util/configparser.c" break; - case 447: -#line 2260 "./util/configparser.y" + case 449: +#line 2265 "./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) @@ -5226,11 +5239,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5243 "util/configparser.c" break; - case 448: -#line 2269 "./util/configparser.y" + case 450: +#line 2274 "./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) @@ -5238,20 +5251,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5255 "util/configparser.c" break; - case 449: -#line 2278 "./util/configparser.y" + case 451: +#line 2283 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5264 "util/configparser.c" break; - case 450: -#line 2284 "./util/configparser.y" + case 452: +#line 2289 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5259,11 +5272,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5276 "util/configparser.c" break; - case 451: -#line 2293 "./util/configparser.y" + case 453: +#line 2298 "./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) @@ -5271,11 +5284,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5288 "util/configparser.c" break; - case 452: -#line 2302 "./util/configparser.y" + case 454: +#line 2307 "./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) @@ -5284,11 +5297,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5301 "util/configparser.c" break; - case 453: -#line 2312 "./util/configparser.y" + case 455: +#line 2317 "./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) @@ -5297,11 +5310,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5314 "util/configparser.c" break; - case 454: -#line 2322 "./util/configparser.y" + case 456: +#line 2327 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5313,11 +5326,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5330 "util/configparser.c" break; - case 455: -#line 2335 "./util/configparser.y" + case 457: +#line 2340 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5329,11 +5342,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 5346 "util/configparser.c" break; - case 456: -#line 2348 "./util/configparser.y" + case 458: +#line 2353 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5344,11 +5357,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5348 "util/configparser.c" +#line 5361 "util/configparser.c" break; - case 457: -#line 2360 "./util/configparser.y" + case 459: +#line 2365 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5361,11 +5374,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5365 "util/configparser.c" +#line 5378 "util/configparser.c" break; - case 458: -#line 2374 "./util/configparser.y" + case 460: +#line 2379 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5376,11 +5389,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5380 "util/configparser.c" +#line 5393 "util/configparser.c" break; - case 459: -#line 2386 "./util/configparser.y" + case 461: +#line 2391 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5393,11 +5406,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5397 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 460: -#line 2400 "./util/configparser.y" + case 462: +#line 2405 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5406,31 +5419,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5410 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 461: -#line 2410 "./util/configparser.y" + case 463: +#line 2415 "./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 5420 "util/configparser.c" +#line 5433 "util/configparser.c" break; - case 462: -#line 2417 "./util/configparser.y" + case 464: +#line 2422 "./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 5430 "util/configparser.c" +#line 5443 "util/configparser.c" break; - case 463: -#line 2424 "./util/configparser.y" + case 465: +#line 2429 "./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) @@ -5438,11 +5451,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5442 "util/configparser.c" +#line 5455 "util/configparser.c" break; - case 464: -#line 2433 "./util/configparser.y" + case 466: +#line 2438 "./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) @@ -5450,11 +5463,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5467 "util/configparser.c" break; - case 465: -#line 2442 "./util/configparser.y" + case 467: +#line 2447 "./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) @@ -5463,11 +5476,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5480 "util/configparser.c" break; - case 466: -#line 2452 "./util/configparser.y" + case 468: +#line 2457 "./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) @@ -5476,11 +5489,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5493 "util/configparser.c" break; - case 467: -#line 2462 "./util/configparser.y" + case 469: +#line 2467 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5489,31 +5502,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5493 "util/configparser.c" +#line 5506 "util/configparser.c" break; - case 468: -#line 2472 "./util/configparser.y" + case 470: +#line 2477 "./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 5503 "util/configparser.c" +#line 5516 "util/configparser.c" break; - case 469: -#line 2479 "./util/configparser.y" + case 471: +#line 2484 "./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 5513 "util/configparser.c" +#line 5526 "util/configparser.c" break; - case 470: -#line 2486 "./util/configparser.y" + case 472: +#line 2491 "./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) @@ -5521,11 +5534,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5525 "util/configparser.c" +#line 5538 "util/configparser.c" break; - case 471: -#line 2495 "./util/configparser.y" + case 473: +#line 2500 "./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) @@ -5533,11 +5546,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 472: -#line 2504 "./util/configparser.y" + case 474: +#line 2509 "./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) @@ -5546,11 +5559,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5563 "util/configparser.c" break; - case 473: -#line 2514 "./util/configparser.y" + case 475: +#line 2519 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5559,52 +5572,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5563 "util/configparser.c" +#line 5576 "util/configparser.c" break; - case 474: -#line 2524 "./util/configparser.y" + case 476: +#line 2529 "./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 5573 "util/configparser.c" +#line 5586 "util/configparser.c" break; - case 475: -#line 2531 "./util/configparser.y" + case 477: +#line 2536 "./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 5583 "util/configparser.c" +#line 5596 "util/configparser.c" break; - case 476: -#line 2538 "./util/configparser.y" + case 478: +#line 2543 "./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 5593 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 477: -#line 2545 "./util/configparser.y" + case 479: +#line 2550 "./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 5604 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 478: -#line 2553 "./util/configparser.y" + case 480: +#line 2558 "./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) @@ -5613,11 +5626,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 479: -#line 2563 "./util/configparser.y" + case 481: +#line 2568 "./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) @@ -5626,11 +5639,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 480: -#line 2573 "./util/configparser.y" + case 482: +#line 2578 "./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) @@ -5639,11 +5652,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5656 "util/configparser.c" break; - case 481: -#line 2583 "./util/configparser.y" + case 483: +#line 2588 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5652,11 +5665,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5656 "util/configparser.c" +#line 5669 "util/configparser.c" break; - case 482: -#line 2593 "./util/configparser.y" + case 484: +#line 2598 "./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 && @@ -5694,11 +5707,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5698 "util/configparser.c" +#line 5711 "util/configparser.c" break; - case 483: -#line 2632 "./util/configparser.y" + case 485: +#line 2637 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5707,33 +5720,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5711 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 484: -#line 2642 "./util/configparser.y" + case 486: +#line 2647 "./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 5722 "util/configparser.c" +#line 5735 "util/configparser.c" break; - case 485: -#line 2650 "./util/configparser.y" + case 487: +#line 2655 "./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 5733 "util/configparser.c" +#line 5746 "util/configparser.c" break; - case 486: -#line 2658 "./util/configparser.y" + case 488: +#line 2663 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5747,11 +5760,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5751 "util/configparser.c" +#line 5764 "util/configparser.c" break; - case 487: -#line 2673 "./util/configparser.y" + case 489: +#line 2678 "./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) @@ -5759,19 +5772,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5776 "util/configparser.c" break; - case 488: -#line 2682 "./util/configparser.y" + case 490: +#line 2687 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5771 "util/configparser.c" +#line 5784 "util/configparser.c" break; - case 499: -#line 2693 "./util/configparser.y" + case 501: +#line 2698 "./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) @@ -5780,11 +5793,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5797 "util/configparser.c" break; - case 500: -#line 2703 "./util/configparser.y" + case 502: +#line 2708 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5792,79 +5805,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 501: -#line 2712 "./util/configparser.y" + case 503: +#line 2717 "./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 5806 "util/configparser.c" +#line 5819 "util/configparser.c" break; - case 502: -#line 2719 "./util/configparser.y" + case 504: +#line 2724 "./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 5816 "util/configparser.c" +#line 5829 "util/configparser.c" break; - case 503: -#line 2726 "./util/configparser.y" + case 505: +#line 2731 "./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 5826 "util/configparser.c" +#line 5839 "util/configparser.c" break; - case 504: -#line 2733 "./util/configparser.y" + case 506: +#line 2738 "./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 5836 "util/configparser.c" +#line 5849 "util/configparser.c" break; - case 505: -#line 2740 "./util/configparser.y" + case 507: +#line 2745 "./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 5846 "util/configparser.c" +#line 5859 "util/configparser.c" break; - case 506: -#line 2747 "./util/configparser.y" + case 508: +#line 2752 "./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 5856 "util/configparser.c" +#line 5869 "util/configparser.c" break; - case 507: -#line 2754 "./util/configparser.y" + case 509: +#line 2759 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5864 "util/configparser.c" +#line 5877 "util/configparser.c" break; - case 528: -#line 2774 "./util/configparser.y" + case 530: +#line 2779 "./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) @@ -5872,31 +5885,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5889 "util/configparser.c" break; - case 529: -#line 2783 "./util/configparser.y" + case 531: +#line 2788 "./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 5886 "util/configparser.c" +#line 5899 "util/configparser.c" break; - case 530: -#line 2790 "./util/configparser.y" + case 532: +#line 2795 "./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 5896 "util/configparser.c" +#line 5909 "util/configparser.c" break; - case 531: -#line 2797 "./util/configparser.y" + case 533: +#line 2802 "./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) @@ -5904,51 +5917,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5921 "util/configparser.c" break; - case 532: -#line 2806 "./util/configparser.y" + case 534: +#line 2811 "./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 5918 "util/configparser.c" +#line 5931 "util/configparser.c" break; - case 533: -#line 2813 "./util/configparser.y" + case 535: +#line 2818 "./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 5928 "util/configparser.c" +#line 5941 "util/configparser.c" break; - case 534: -#line 2820 "./util/configparser.y" + case 536: +#line 2825 "./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 5938 "util/configparser.c" +#line 5951 "util/configparser.c" break; - case 535: -#line 2827 "./util/configparser.y" + case 537: +#line 2832 "./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 5948 "util/configparser.c" +#line 5961 "util/configparser.c" break; - case 536: -#line 2834 "./util/configparser.y" + case 538: +#line 2839 "./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) @@ -5956,11 +5969,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5973 "util/configparser.c" break; - case 537: -#line 2843 "./util/configparser.y" + case 539: +#line 2848 "./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) @@ -5968,31 +5981,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5985 "util/configparser.c" break; - case 538: -#line 2852 "./util/configparser.y" + case 540: +#line 2857 "./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 5982 "util/configparser.c" +#line 5995 "util/configparser.c" break; - case 539: -#line 2859 "./util/configparser.y" + case 541: +#line 2864 "./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 5992 "util/configparser.c" +#line 6005 "util/configparser.c" break; - case 540: -#line 2866 "./util/configparser.y" + case 542: +#line 2871 "./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) @@ -6001,11 +6014,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6005 "util/configparser.c" +#line 6018 "util/configparser.c" break; - case 541: -#line 2876 "./util/configparser.y" + case 543: +#line 2881 "./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) @@ -6014,11 +6027,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 542: -#line 2886 "./util/configparser.y" + case 544: +#line 2891 "./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) @@ -6027,11 +6040,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 543: -#line 2896 "./util/configparser.y" + case 545: +#line 2901 "./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) @@ -6040,11 +6053,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6057 "util/configparser.c" break; - case 544: -#line 2906 "./util/configparser.y" + case 546: +#line 2911 "./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) @@ -6053,11 +6066,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6070 "util/configparser.c" break; - case 545: -#line 2916 "./util/configparser.y" + case 547: +#line 2921 "./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) @@ -6066,29 +6079,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6083 "util/configparser.c" break; - case 546: -#line 2926 "./util/configparser.y" + case 548: +#line 2931 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6078 "util/configparser.c" +#line 6091 "util/configparser.c" break; - case 550: -#line 2935 "./util/configparser.y" + case 552: +#line 2940 "./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 6088 "util/configparser.c" +#line 6101 "util/configparser.c" break; - case 551: -#line 2941 "./util/configparser.y" + case 553: +#line 2946 "./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) @@ -6097,21 +6110,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6114 "util/configparser.c" break; - case 552: -#line 2951 "./util/configparser.y" + case 554: +#line 2956 "./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 6111 "util/configparser.c" +#line 6124 "util/configparser.c" break; - case 553: -#line 2958 "./util/configparser.y" + case 555: +#line 2963 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6119,30 +6132,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6123 "util/configparser.c" +#line 6136 "util/configparser.c" break; - case 554: -#line 2967 "./util/configparser.y" + case 556: +#line 2972 "./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 6134 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 555: -#line 2975 "./util/configparser.y" + case 557: +#line 2980 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6142 "util/configparser.c" +#line 6155 "util/configparser.c" break; - case 568: -#line 2991 "./util/configparser.y" + case 570: +#line 2996 "./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) @@ -6150,11 +6163,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6167 "util/configparser.c" break; - case 569: -#line 3001 "./util/configparser.y" + case 571: +#line 3006 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6162,21 +6175,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6166 "util/configparser.c" +#line 6179 "util/configparser.c" break; - case 570: -#line 3010 "./util/configparser.y" + case 572: +#line 3015 "./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 6176 "util/configparser.c" +#line 6189 "util/configparser.c" break; - case 571: -#line 3017 "./util/configparser.y" + case 573: +#line 3022 "./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))) @@ -6184,21 +6197,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 6188 "util/configparser.c" +#line 6201 "util/configparser.c" break; - case 572: -#line 3026 "./util/configparser.y" + case 574: +#line 3031 "./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 6198 "util/configparser.c" +#line 6211 "util/configparser.c" break; - case 573: -#line 3033 "./util/configparser.y" + case 575: +#line 3038 "./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))) @@ -6206,22 +6219,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 6210 "util/configparser.c" +#line 6223 "util/configparser.c" break; - case 574: -#line 3042 "./util/configparser.y" + case 576: +#line 3047 "./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 6221 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 575: -#line 3050 "./util/configparser.y" + case 577: +#line 3055 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6233,22 +6246,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 6250 "util/configparser.c" break; - case 576: -#line 3063 "./util/configparser.y" + case 578: +#line 3068 "./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 6248 "util/configparser.c" +#line 6261 "util/configparser.c" break; - case 577: -#line 3071 "./util/configparser.y" + case 579: +#line 3076 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6260,19 +6273,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 578: -#line 3084 "./util/configparser.y" + case 580: +#line 3089 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6272 "util/configparser.c" +#line 6285 "util/configparser.c" break; - case 587: -#line 3095 "./util/configparser.y" + case 589: +#line 3100 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6283,11 +6296,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6287 "util/configparser.c" +#line 6300 "util/configparser.c" break; - case 588: -#line 3107 "./util/configparser.y" + case 590: +#line 3112 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6298,11 +6311,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6302 "util/configparser.c" +#line 6315 "util/configparser.c" break; - case 589: -#line 3119 "./util/configparser.y" + case 591: +#line 3124 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6313,11 +6326,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6317 "util/configparser.c" +#line 6330 "util/configparser.c" break; - case 590: -#line 3131 "./util/configparser.y" + case 592: +#line 3136 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6331,11 +6344,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6335 "util/configparser.c" +#line 6348 "util/configparser.c" break; - case 591: -#line 3146 "./util/configparser.y" + case 593: +#line 3151 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6347,11 +6360,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6364 "util/configparser.c" break; - case 592: -#line 3159 "./util/configparser.y" + case 594: +#line 3164 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6363,11 +6376,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 6380 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 595: +#line 3177 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6377,19 +6390,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6381 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 594: -#line 3183 "./util/configparser.y" + case 596: +#line 3188 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6389 "util/configparser.c" +#line 6402 "util/configparser.c" break; - case 599: -#line 3192 "./util/configparser.y" + case 601: +#line 3197 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6403,11 +6416,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6407 "util/configparser.c" +#line 6420 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 602: +#line 3212 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6434,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6425 "util/configparser.c" +#line 6438 "util/configparser.c" break; -#line 6429 "util/configparser.c" +#line 6442 "util/configparser.c" default: break; } @@ -6657,7 +6670,7 @@ yyreturn: #endif return yyresult; } -#line 3221 "./util/configparser.y" +#line 3226 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 184810a2a..dc7a9c6f5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -57,283 +57,284 @@ extern int yydebug; ANY = 263, ZONESTR = 264, STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -345,283 +346,284 @@ extern int yydebug; #define ANY 263 #define ZONESTR 264 #define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_EXTENDED_STATISTICS 360 +#define VAR_LOCAL_DATA_PTR 361 +#define VAR_JOSTLE_TIMEOUT 362 +#define VAR_STUB_PRIME 363 +#define VAR_UNWANTED_REPLY_THRESHOLD 364 +#define VAR_LOG_TIME_ASCII 365 +#define VAR_DOMAIN_INSECURE 366 +#define VAR_PYTHON 367 +#define VAR_PYTHON_SCRIPT 368 +#define VAR_VAL_SIG_SKEW_MIN 369 +#define VAR_VAL_SIG_SKEW_MAX 370 +#define VAR_CACHE_MIN_TTL 371 +#define VAR_VAL_LOG_LEVEL 372 +#define VAR_AUTO_TRUST_ANCHOR_FILE 373 +#define VAR_KEEP_MISSING 374 +#define VAR_ADD_HOLDDOWN 375 +#define VAR_DEL_HOLDDOWN 376 +#define VAR_SO_RCVBUF 377 +#define VAR_EDNS_BUFFER_SIZE 378 +#define VAR_PREFETCH 379 +#define VAR_PREFETCH_KEY 380 +#define VAR_SO_SNDBUF 381 +#define VAR_SO_REUSEPORT 382 +#define VAR_HARDEN_BELOW_NXDOMAIN 383 +#define VAR_IGNORE_CD_FLAG 384 +#define VAR_LOG_QUERIES 385 +#define VAR_LOG_REPLIES 386 +#define VAR_LOG_LOCAL_ACTIONS 387 +#define VAR_TCP_UPSTREAM 388 +#define VAR_SSL_UPSTREAM 389 +#define VAR_SSL_SERVICE_KEY 390 +#define VAR_SSL_SERVICE_PEM 391 +#define VAR_SSL_PORT 392 +#define VAR_FORWARD_FIRST 393 +#define VAR_STUB_SSL_UPSTREAM 394 +#define VAR_FORWARD_SSL_UPSTREAM 395 +#define VAR_TLS_CERT_BUNDLE 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -631,7 +633,7 @@ union YYSTYPE char* str; -#line 635 "util/configparser.h" +#line 637 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c72a89135..7a6ad00f9 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -69,6 +69,7 @@ extern struct config_parser_state* cfg_parser; %token SPACE LETTER NEWLINE COMMENT COLON ANY ZONESTR %token STRING_ARG +%token VAR_FORCE_TOPLEVEL %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT %token VAR_OUTGOING_RANGE VAR_INTERFACE VAR_PREFER_IP4 %token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP @@ -182,16 +183,20 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | ipsetstart contents_ipset | authstart contents_auth | - rpzstart contents_rpz + rpzstart contents_rpz | + force_toplevel ; - +force_toplevel: VAR_FORCE_TOPLEVEL + { + OUTYY(("\nP(force-toplevel)\n")); + } /* server: declaration */ serverstart: VAR_SERVER { - OUTYY(("\nP(server:)\n")); + OUTYY(("\nP(server:)\n")); } ; -contents_server: contents_server content_server +contents_server: contents_server content_server | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | From 8dae5d9f81a179bdbb5fdcc730df4e8875f85cd2 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 7 May 2020 16:36:26 +0200 Subject: [PATCH 013/394] - Add DNS-over-HTTPS support --- Makefile.in | 49 +- config.h.in | 23 +- configure | 123 +- configure.ac | 37 +- daemon/remote.c | 2 +- daemon/worker.c | 5 +- doc/example.conf.in | 6 +- doc/unbound.conf.5.in | 23 +- services/listen_dnsport.c | 740 +++++- services/listen_dnsport.h | 35 +- services/mesh.c | 8 + services/mesh.h | 2 + sldns/parseutil.c | 45 +- sldns/parseutil.h | 3 +- testcode/fake_event.c | 6 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 4844 +++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 3499 ++++++++++++++------------- util/configparser.h | 593 +++-- util/configparser.y | 11 + util/iana_ports.inc | 1 + util/net_help.c | 21 + util/netevent.c | 535 +++- util/netevent.h | 135 +- 26 files changed, 6188 insertions(+), 4564 deletions(-) diff --git a/Makefile.in b/Makefile.in index 51a13836b..3a63c97be 100644 --- a/Makefile.in +++ b/Makefile.in @@ -663,7 +663,7 @@ dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_de $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/cache/dns.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/dname.h $(srcdir)/util/module.h \ $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/services/cache/infra.h \ @@ -704,10 +704,11 @@ msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/d $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/respip/respip.h -packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \ - $(srcdir)/util/net_help.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h +packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h \ + $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h iterator.lo iterator.o: $(srcdir)/iterator/iterator.c config.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ @@ -776,7 +777,7 @@ listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ @@ -799,10 +800,10 @@ mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(s $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ - $(srcdir)/util/alloc.h $(srcdir)/util/edns.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/data/dname.h \ - $(srcdir)/services/listen_dnsport.h + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/edns.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/data/dname.h $(srcdir)/services/listen_dnsport.h modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/services/modstack.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ @@ -903,7 +904,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h \ $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ @@ -914,15 +915,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h @@ -994,7 +987,7 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/util/tube.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ @@ -1004,7 +997,7 @@ ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1273,7 +1266,8 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h + $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/dnstap/dtstream.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ @@ -1307,7 +1301,8 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h + $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h \ + $(srcdir)/dnstap/dtstream.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ @@ -1470,6 +1465,12 @@ unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c confi unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h petal.lo petal.o: $(srcdir)/testcode/petal.c config.h +unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnstap-socket.c config.h \ + $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h \ + $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/config_file.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ diff --git a/config.h.in b/config.h.in index 3c46e3f3e..258352f3e 100644 --- a/config.h.in +++ b/config.h.in @@ -28,6 +28,9 @@ /* Whether daemon is deprecated */ #undef DEPRECATED_DAEMON +/* Define this to enable kernel based UDP source port randomization. */ +#undef DISABLE_EXPLICIT_PORT_RANDOMISATION + /* default dnstap socket path */ #undef DNSTAP_SOCKET_PATH @@ -110,6 +113,10 @@ don't. */ #undef HAVE_DECL_INET_PTON +/* Define to 1 if you have the declaration of `nghttp2_session_server_new', + and to 0 if you don't. */ +#undef HAVE_DECL_NGHTTP2_SESSION_SERVER_NEW + /* Define to 1 if you have the declaration of `NID_ED25519', and to 0 if you don't. */ #undef HAVE_DECL_NID_ED25519 @@ -368,6 +375,12 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETTLE_EDDSA_H +/* Define this to use nghttp2 client. */ +#undef HAVE_NGHTTP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_NGHTTP2_NGHTTP2_H + /* Use libnss for crypto */ #undef HAVE_NSS @@ -491,6 +504,9 @@ /* Define if you have the SSL libraries installed. */ #undef HAVE_SSL +/* Define to 1 if you have the `SSL_CTX_set_alpn_select_cb' function. */ +#undef HAVE_SSL_CTX_SET_ALPN_SELECT_CB + /* Define to 1 if you have the `SSL_CTX_set_ciphersuites' function. */ #undef HAVE_SSL_CTX_SET_CIPHERSUITES @@ -811,9 +827,8 @@ /* Define to 1 to use ipset support */ #undef USE_IPSET -/* Define to 1 to disable explict UDP source port randomisation and rely on the - kernel to provide random source ports */ -#undef DISABLE_EXPLICIT_PORT_RANDOMISATION +/* Define if you enable libevent */ +#undef USE_LIBEVENT /* Define if you want to use internal select based events */ #undef USE_MINI_EVENT @@ -1349,6 +1364,8 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, #define UNBOUND_DNS_PORT 53 /** default port for DNS over TLS traffic. */ #define UNBOUND_DNS_OVER_TLS_PORT 853 +/** default port for DNS over HTTPS traffic. */ +#define UNBOUND_DNS_OVER_HTTPS_PORT 443 /** default port for unbound control traffic, registered port with IANA, ub-dns-control 8953/tcp unbound dns nameserver control */ #define UNBOUND_CONTROL_PORT 8953 diff --git a/configure b/configure index d9355009c..107eedc11 100755 --- a/configure +++ b/configure @@ -804,6 +804,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -877,6 +878,7 @@ enable_tfo_server with_libevent with_libexpat with_libhiredis +with_libnghttp2 enable_static_exe enable_fully_static enable_lock_checks @@ -951,6 +953,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1203,6 +1206,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1340,7 +1352,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1493,6 +1505,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1635,6 +1648,7 @@ Optional Packages: outgoing port ranges. --with-libexpat=path specify explicit path for libexpat. --with-libhiredis=path specify explicit path for libhiredis. + --with-libnghttp2=path specify explicit path for libnghttp2. --with-dnstap-socket-path=pathname set default dnstap socket path --with-protobuf-c=path Path where protobuf-c is installed, for dnstap @@ -15666,7 +15680,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15712,7 +15726,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15736,7 +15750,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15781,7 +15795,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15805,7 +15819,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -18306,7 +18320,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_alpn_select_cb do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -19124,31 +19138,34 @@ esac if test "${with_libevent+set}" = set; then : withval=$with_libevent; else - withval="no" + with_libevent="no" fi -if test x_$withval = x_yes -o x_$withval != x_no; then +if test "x_$with_libevent" != x_no; then + +$as_echo "#define USE_LIBEVENT 1" >>confdefs.h + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libevent" >&5 $as_echo_n "checking for libevent... " >&6; } - if test x_$withval = x_ -o x_$withval = x_yes; then - withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + if test "x_$with_libevent" = x_ -o "x_$with_libevent" = x_yes; then + with_libevent="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" fi - for dir in $withval; do + for dir in $with_libevent; do thedir="$dir" if test -f "$dir/include/event.h" -o -f "$dir/include/event2/event.h"; then found_libevent="yes" - if test "$thedir" != "/usr"; then - CPPFLAGS="$CPPFLAGS -I$thedir/include" - fi - break; - fi + if test "$thedir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$thedir/include" + fi + break; + fi done if test x_$found_libevent != x_yes; then if test -f "$dir/event.h" -a \( -f "$dir/libevent.la" -o -f "$dir/libev.la" \) ; then # libevent source directory - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $thedir" >&5 $as_echo "found in $thedir" >&6; } - CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" + CPPFLAGS="$CPPFLAGS -I$thedir -I$thedir/include" BAK_LDFLAGS_SET="1" BAK_LDFLAGS="$LDFLAGS" # remove evdns from linking @@ -19161,10 +19178,10 @@ $as_echo "found in $thedir" >&6; } cp $ev_files_o build/libevent cp $ev_files_lo build/libevent cp $ev_files_libso build/libevent/.libs - LATE_LDFLAGS="build/libevent/*.lo -lm" + LATE_LDFLAGS="build/libevent/*.lo -lm" LDFLAGS="build/libevent/*.o $LDFLAGS -lm" else - as_fn_error $? "Cannot find the libevent library in $withval + as_fn_error $? "Cannot find the libevent library in $with_libevent You can restart ./configure --with-libevent=no to use a builtin alternative. Please note that this alternative is not as capable as libevent when using large outgoing port ranges. " "$LINENO" 5 @@ -19615,6 +19632,70 @@ _ACEOF fi +# nghttp2 + +# Check whether --with-libnghttp2 was given. +if test "${with_libnghttp2+set}" = set; then : + withval=$with_libnghttp2; +else + withval="no" +fi + +found_libnghttp2="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libnghttp2" >&5 +$as_echo_n "checking for libnghttp2... " >&6; } + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/nghttp2/nghttp2.h"; then + found_libnghttp2="yes" + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: found in $dir" >&5 +$as_echo "found in $dir" >&6; } + +$as_echo "#define HAVE_NGHTTP2 1" >>confdefs.h + + LIBS="$LIBS -lnghttp2" + break; + fi + done + if test x_$found_libnghttp2 != x_yes; then + as_fn_error $? "Could not find libnghttp2, nghttp2.h" "$LINENO" 5 + fi + for ac_header in nghttp2/nghttp2.h +do : + ac_fn_c_check_header_compile "$LINENO" "nghttp2/nghttp2.h" "ac_cv_header_nghttp2_nghttp2_h" "$ac_includes_default +" +if test "x$ac_cv_header_nghttp2_nghttp2_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NGHTTP2_NGHTTP2_H 1 +_ACEOF + +fi + +done + + ac_fn_c_check_decl "$LINENO" "nghttp2_session_server_new" "ac_cv_have_decl_nghttp2_session_server_new" "$ac_includes_default + #include + +" +if test "x$ac_cv_have_decl_nghttp2_session_server_new" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_NGHTTP2_SESSION_SERVER_NEW $ac_have_decl +_ACEOF + +fi + # set static linking for uninstalled libraries if requested staticexe="" diff --git a/configure.ac b/configure.ac index e71bc5888..6b761974a 100644 --- a/configure.ac +++ b/configure.ac @@ -830,7 +830,7 @@ AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_C # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_alpn_select_cb]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ @@ -1369,6 +1369,39 @@ if test x_$withval = x_yes -o x_$withval != x_no; then ]) fi +# nghttp2 +AC_ARG_WITH(libnghttp2, AC_HELP_STRING([--with-libnghttp2=path], + [specify explicit path for libnghttp2.]), + [ ],[ withval="no" ]) +found_libnghttp2="no" +if test x_$withval = x_yes -o x_$withval != x_no; then + AC_MSG_CHECKING(for libnghttp2) + if test x_$withval = x_ -o x_$withval = x_yes; then + withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" + fi + for dir in $withval ; do + if test -f "$dir/include/nghttp2/nghttp2.h"; then + found_libnghttp2="yes" + dnl assume /usr is in default path. + if test "$dir" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$dir/include" + LDFLAGS="$LDFLAGS -L$dir/lib" + fi + AC_MSG_RESULT(found in $dir) + AC_DEFINE([HAVE_NGHTTP2], [1], [Define this to use nghttp2 client.]) + LIBS="$LIBS -lnghttp2" + break; + fi + done + if test x_$found_libnghttp2 != x_yes; then + AC_ERROR([Could not find libnghttp2, nghttp2.h]) + fi + AC_CHECK_HEADERS([nghttp2/nghttp2.h],,, [AC_INCLUDES_DEFAULT]) + AC_CHECK_DECLS([nghttp2_session_server_new], [], [], [AC_INCLUDES_DEFAULT + #include + ]) +fi + # set static linking for uninstalled libraries if requested AC_SUBST(staticexe) staticexe="" @@ -2105,6 +2138,8 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, #define UNBOUND_DNS_PORT 53 /** default port for DNS over TLS traffic. */ #define UNBOUND_DNS_OVER_TLS_PORT 853 +/** default port for DNS over HTTPS traffic. */ +#define UNBOUND_DNS_OVER_HTTPS_PORT 443 /** default port for unbound control traffic, registered port with IANA, ub-dns-control 8953/tcp unbound dns nameserver control */ #define UNBOUND_CONTROL_PORT 8953 diff --git a/daemon/remote.c b/daemon/remote.c index f4b7298cb..5eb829859 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -329,7 +329,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, /* open fd */ fd = create_tcp_accept_sock(res, 1, &noproto, 0, - cfg->ip_transparent, 0, cfg->ip_freebind, cfg->use_systemd); + cfg->ip_transparent, 0, 0, cfg->ip_freebind, cfg->use_systemd); freeaddrinfo(res); } diff --git a/daemon/worker.c b/daemon/worker.c index cec6bcd66..24fb3f30e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1109,7 +1109,7 @@ worker_handle_request(struct comm_point* c, void* arg, int error, struct respip_client_info* cinfo = NULL, cinfo_tmp; memset(&qinfo, 0, sizeof(qinfo)); - if(error != NETEVENT_NOERROR || !repinfo) { + if((error != NETEVENT_NOERROR && error != NETEVENT_DONE)|| !repinfo) { /* some bad tcp query DNS formats give these error calls */ verbose(VERB_ALGO, "handle request called with err=%d", error); return 0; @@ -1797,7 +1797,8 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->do_tcp_keepalive ? cfg->tcp_keepalive_timeout : cfg->tcp_idle_timeout, - worker->daemon->tcl, + cfg->harden_large_queries, + worker->daemon->tcl, worker->daemon->listen_sslctx, dtenv, worker_handle_request, worker); if(!worker->front) { diff --git a/doc/example.conf.in b/doc/example.conf.in index dbc30a48c..dbcb97cec 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -729,12 +729,14 @@ server: # add a netblock specific override to a localzone, with zone type # local-zone-override: "example.com" 192.0.2.0/24 refuse - # service clients over TLS (on the TCP sockets), with plain DNS inside - # the TLS stream. Give the certificate to use and private key. + # service clients over TLS (on the TCP sockets) with plain DNS inside + # the TLS stream, and over HTTPS using HTTP/2 as specified in RFC8484. + # Give the certificate to use and private key. # default is "" (disabled). requires restart to take effect. # tls-service-key: "path/to/privatekeyfile.key" # tls-service-pem: "path/to/publiccertfile.pem" # tls-port: 853 + # https-port: 443 # cipher setting for TLSv1.2 # tls-ciphers: "DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256" diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 43159666d..3f14061c9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -469,15 +469,16 @@ Alternate syntax for \fBtls\-upstream\fR. If both are present in the config file the last is used. .TP .B tls\-service\-key: \fI -If enabled, the server provides TLS service on the TCP ports marked -implicitly or explicitly for TLS service with tls\-port. The file must -contain the private key for the TLS session, the public certificate is in -the tls\-service\-pem file and it must also be specified if tls\-service\-key -is specified. The default is "", turned off. Enabling or disabling -this service requires a restart (a reload is not enough), because the -key is read while root permissions are held and before chroot (if any). -The ports enabled implicitly or explicitly via \fBtls\-port:\fR do not provide -normal DNS TCP service. +If enabled, the server provides DNS-over-TLS or DNS-over-HTTPS service on the +TCP ports marked implicitly or explicitly for these services with tls\-port or +https\-port. The file must contain the private key for the TLS session, the +public certificate is in the tls\-service\-pem file and it must also be +specified if tls\-service\-key is specified. The default is "", turned off. +Enabling or disabling this service requires a restart (a reload is not enough), +because the key is read while root permissions are held and before chroot (if any). +The ports enabled implicitly or explicitly via \fBtls\-port:\fR and +\fBhttps\-port:\fR do not provide normal DNS TCP service. Unbound needs to be +compiled with libnghttp2 in order to provide DNS-over-HTTPS. .TP .B ssl\-service\-key: \fI Alternate syntax for \fBtls\-service\-key\fR. @@ -493,6 +494,10 @@ Alternate syntax for \fBtls\-service\-pem\fR. The port number on which to provide TCP TLS service, default 853, only interfaces configured with that port number as @number get the TLS service. .TP +.B https\-port: \fI +The port number on which to provide DNS-over-HTTPS service, default 443, only +interfaces configured with that port number as @number get the HTTPS service. +.TP .B ssl\-port: \fI Alternate syntax for \fBtls\-port\fR. .TP diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 7e2afd843..fdfed0a40 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -53,6 +53,7 @@ #include "util/config_file.h" #include "util/net_help.h" #include "sldns/sbuffer.h" +#include "sldns/parseutil.h" #include "services/mesh.h" #include "util/fptr_wlist.h" #include "util/locks.h" @@ -638,7 +639,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent, int mss, int freebind, int use_systemd) + int* reuseport, int transparent, int mss, int nodelay, int freebind, + int use_systemd) { int s; #if defined(SO_REUSEADDR) || defined(SO_REUSEPORT) || defined(IPV6_V6ONLY) || defined(IP_TRANSPARENT) || defined(IP_BINDANY) || defined(IP_FREEBIND) || defined(SO_BINDANY) @@ -685,6 +687,36 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #endif return -1; } + if(nodelay) { +#if defined(IPPROTO_TCP) && defined(TCP_NODELAY) + if(setsockopt(s, IPPROTO_TCP, TCP_NODELAY, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + #ifndef USE_WINSOCK + log_err(" setsockopt(.. TCP_NODELAY ..) failed: %s", + strerror(errno)); + #else + log_err(" setsockopt(.. TCP_NODELAY ..) failed: %s", + wsa_strerror(WSAGetLastError())); + #endif + } +#else + log_warn(" setsockopt(TCP_NODELAY) unsupported"); +#endif /* defined(IPPROTO_TCP) && defined(TCP_NODELAY) */ +#if defined(IPPROTO_TCP) && defined(TCP_QUICKACK) + if(setsockopt(s, IPPROTO_TCP, TCP_QUICKACK, (void*)&on, + (socklen_t)sizeof(on)) < 0) { + #ifndef USE_WINSOCK + log_err(" setsockopt(.. TCP_QUICKACK ..) failed: %s", + strerror(errno)); + #else + log_err(" setsockopt(.. TCP_QUICKACK ..) failed: %s", + wsa_strerror(WSAGetLastError())); + #endif + } +#else + log_warn(" setsockopt(TCP_QUICKACK) unsupported"); +#endif /* defined(IPPROTO_TCP) && defined(TCP_QUICKACK) */ + } if (mss > 0) { #if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG, (void*)&mss, @@ -952,7 +984,8 @@ err: static int make_sock(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) + int* reuseport, int transparent, int tcp_mss, int nodelay, int freebind, + int use_systemd) { struct addrinfo *res = NULL; int r, s, inuse, noproto; @@ -988,7 +1021,7 @@ make_sock(int stype, const char* ifname, const char* port, } } else { s = create_tcp_accept_sock(res, v6only, &noproto, reuseport, - transparent, tcp_mss, freebind, use_systemd); + transparent, tcp_mss, nodelay, freebind, use_systemd); if(s == -1 && noproto && hints->ai_family == AF_INET6){ *noip6 = 1; } @@ -1001,7 +1034,8 @@ make_sock(int stype, const char* ifname, const char* port, static int make_sock_port(int stype, const char* ifname, const char* port, struct addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd, - int* reuseport, int transparent, int tcp_mss, int freebind, int use_systemd) + int* reuseport, int transparent, int tcp_mss, int nodelay, int freebind, + int use_systemd) { char* s = strchr(ifname, '@'); if(s) { @@ -1023,10 +1057,11 @@ make_sock_port(int stype, const char* ifname, const char* port, (void)strlcpy(p, s+1, sizeof(p)); p[strlen(s+1)]=0; return make_sock(stype, newif, p, hints, v6only, noip6, - rcv, snd, reuseport, transparent, tcp_mss, freebind, use_systemd); + rcv, snd, reuseport, transparent, tcp_mss, nodelay, + freebind, use_systemd); } return make_sock(stype, ifname, port, hints, v6only, noip6, rcv, snd, - reuseport, transparent, tcp_mss, freebind, use_systemd); + reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd); } /** @@ -1125,6 +1160,18 @@ if_is_ssl(const char* ifname, const char* port, int ssl_port, return 0; } +/** see if interface is https, its port number == the https port number */ +static int +if_is_https(const char* ifname, const char* port, int https_port) +{ + char* p = strchr(ifname, '@'); + if(!p && atoi(port) == https_port) + return 1; + if(p && atoi(p+1) == https_port) + return 1; + return 0; +} + /** * Helper for ports_open. Creates one interface (or NULL for default). * @param ifname: The interface ip address. @@ -1139,6 +1186,7 @@ if_is_ssl(const char* ifname, const char* port, int ssl_port, * @param snd: send buffer size for UDP * @param ssl_port: ssl service port number * @param tls_additional_port: list of additional ssl service port numbers. + * @param https_port: DoH service port number * @param reuseport: try to set SO_REUSEPORT if nonNULL and true. * set to false on exit if reuseport failed due to no kernel support. * @param transparent: set IP_TRANSPARENT socket option. @@ -1152,11 +1200,13 @@ static int 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 config_strlist* tls_additional_port, int* reuseport, - int transparent, int tcp_mss, int freebind, int use_systemd, - int dnscrypt_port) + struct config_strlist* tls_additional_port, int https_port, + int* reuseport, int transparent, int tcp_mss, int freebind, + int use_systemd, int dnscrypt_port) { int s, noip6=0; + int is_https = if_is_https(ifname, port, https_port); + int nodelay = is_https; /* TODO make config option */ #ifdef USE_DNSCRYPT int is_dnscrypt = ((strchr(ifname, '@') && atoi(strchr(ifname, '@')+1) == dnscrypt_port) || @@ -1171,7 +1221,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if(do_auto) { if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, - tcp_mss, freebind, use_systemd)) == -1) { + tcp_mss, nodelay, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -1200,7 +1250,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, /* regular udp socket */ if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1, &noip6, rcv, snd, reuseport, transparent, - tcp_mss, freebind, use_systemd)) == -1) { + tcp_mss, nodelay, freebind, use_systemd)) == -1) { if(noip6) { log_warn("IPv6 protocol not available"); return 1; @@ -1220,8 +1270,17 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, if(do_tcp) { int is_ssl = if_is_ssl(ifname, port, ssl_port, tls_additional_port); + enum listen_type port_type; + if(is_ssl) + port_type = listen_type_ssl; + else if(is_https) + port_type = listen_type_http; + else if(is_dnscrypt) + port_type = listen_type_tcp_dnscrypt; + else + port_type = listen_type_tcp; if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1, - &noip6, 0, 0, reuseport, transparent, tcp_mss, + &noip6, 0, 0, reuseport, transparent, tcp_mss, nodelay, freebind, use_systemd)) == -1) { if(noip6) { /*log_warn("IPv6 protocol not available");*/ @@ -1231,8 +1290,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } if(is_ssl) verbose(VERB_ALGO, "setup TCP for SSL service"); - if(!port_insert(list, s, is_ssl?listen_type_ssl: - (is_dnscrypt?listen_type_tcp_dnscrypt:listen_type_tcp))) { + if(!port_insert(list, s, port_type)) { #ifndef USE_WINSOCK close(s); #else @@ -1266,7 +1324,7 @@ listen_cp_insert(struct comm_point* c, struct listen_dnsport* front) struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, - struct tcl_list* tcp_conn_limit, void* sslctx, + int harden_large_queries, struct tcl_list* tcp_conn_limit, void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg) { struct listen_dnsport* front = (struct listen_dnsport*) @@ -1298,14 +1356,35 @@ listen_create(struct comm_base* base, struct listen_port* ports, ports->ftype == listen_type_tcp_dnscrypt) cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, + harden_large_queries, tcp_conn_limit, bufsize, front->udp_buff, - cb, cb_arg); - else if(ports->ftype == listen_type_ssl) { + ports->ftype, cb, cb_arg); + else if(ports->ftype == listen_type_ssl || + ports->ftype == listen_type_http) { cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, + harden_large_queries, tcp_conn_limit, bufsize, front->udp_buff, - cb, cb_arg); + ports->ftype, cb, cb_arg); cp->ssl = sslctx; + if(ports->ftype == listen_type_http) { + if(!sslctx) { + log_warn("HTTPS port configured, but no TLS " + "tls-service-key or tls-service-pem " + "set"); + } +#ifndef HAVE_SSL_CTX_SET_ALPN_SELECT_CB + log_warn("Unbound is not compiled with an " + "OpenSSL version supporting ALPN " + " (OpenSSL >= 1.0.2). This is required " + "to use DNS-over-HTTPS"); +#endif +#ifndef HAVE_NGHTTP2_NGHTTP2_H + log_warn("Unbound is not compiled with " + "nghttp2. This is required to use " + "DNS-over-HTTPS."); +#endif + } } else if(ports->ftype == listen_type_udpancil || ports->ftype == listen_type_udpancil_dnscrypt) cp = comm_point_create_udp_ancil(base, ports->fd, @@ -1419,6 +1498,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, cfg->dnscrypt_port)) { @@ -1433,6 +1513,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, cfg->dnscrypt_port)) { @@ -1449,6 +1530,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, cfg->dnscrypt_port)) { @@ -1463,6 +1545,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, + cfg->https_port, reuseport, cfg->ip_transparent, cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, cfg->dnscrypt_port)) { @@ -1906,3 +1989,624 @@ size_t tcp_req_info_get_stream_buffer_size(void) lock_basic_unlock(&stream_wait_count_lock); return s; } + +#ifdef HAVE_NGHTTP2 +/** nghttp2 callback. Used to copy response from rbuffer to nghttp2 session */ +static ssize_t http2_submit_response_read_callback( + nghttp2_session* ATTR_UNUSED(session), + int32_t stream_id, uint8_t* buf, size_t length, uint32_t* data_flags, + nghttp2_data_source* source, void* ATTR_UNUSED(cb_arg)) +{ + struct http2_stream* h2_stream; + struct http2_session* h2_session = source->ptr; + size_t copylen = length; + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + verbose(VERB_QUERY, "http2: cannot get stream data, closing " + "stream"); + return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; + } + if(!h2_stream->rbuffer || + sldns_buffer_remaining(h2_stream->rbuffer) == 0) { + verbose(VERB_QUERY, "http2: cannot submit buffer. No data " + "available in rbuffer"); + sldns_buffer_free(h2_stream->rbuffer); + h2_stream->rbuffer = NULL; + return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; + } + + if(copylen > sldns_buffer_remaining(h2_stream->rbuffer)) + copylen = sldns_buffer_remaining(h2_stream->rbuffer); + if(copylen > SSIZE_MAX) + copylen = SSIZE_MAX; /* will probably never happen */ + + memcpy(buf, sldns_buffer_current(h2_stream->rbuffer), copylen); + sldns_buffer_skip(h2_stream->rbuffer, copylen); + + if(sldns_buffer_remaining(h2_stream->rbuffer) == 0) { + *data_flags |= NGHTTP2_DATA_FLAG_EOF; + sldns_buffer_free(h2_stream->rbuffer); + h2_stream->rbuffer = NULL; + } + + return copylen; +} + +/** + * DNS response ready to be submitted to nghttp2, to be prepared for sending + * out. Response is stored in c->buffer. Copy to rbuffer because the c->buffer + * might be used before this will bne send out. + * @param h2_session: http2 session, containing c->buffer which contains answer + * @return 0 on error, 1 otherwise + */ +int http2_submit_dns_response(struct http2_session* h2_session) +{ + int ret; + nghttp2_data_provider data_prd; + char status[4]; + nghttp2_nv headers[2]; + struct http2_stream* h2_stream = h2_session->c->h2_stream; + + if(h2_stream->rbuffer) { + log_err("http2 submit response error: rbuffer already " + "exists"); + return 0; + } + if(sldns_buffer_remaining(h2_session->c->buffer) == 0) { + log_err("http2 submit response error: c->buffer not complete"); + return 0; + } + + if(!(h2_stream->rbuffer = sldns_buffer_new( + sldns_buffer_remaining(h2_session->c->buffer)))) { + log_err("http2 submit response error: malloc failure"); + return 0; + } + + if(snprintf(status, 4, "%d", h2_stream->status) != 3) { + verbose(VERB_QUERY, "http2: submit response error: " + "invalid status"); + return 0; + } + headers[0].name = (uint8_t*)":status"; + headers[0].namelen = 7; + headers[0].value = (uint8_t*)status; + headers[0].valuelen = 3; + headers[0].flags = NGHTTP2_NV_FLAG_NONE; + + headers[1].name = (uint8_t*)"content-type"; + headers[1].namelen = 12; + headers[1].value = (uint8_t*)"application/dns-message"; + headers[1].valuelen = 23; + headers[1].flags = NGHTTP2_NV_FLAG_NONE; + + /*TODO be nice and add the content-length header + headers[2].name = (uint8_t*)"content-length"; + headers[2].namelen = 14; + headers[2].value = + headers[2].valuelen = + headers[2].flags = NGHTTP2_NV_FLAG_NONE; + */ + + sldns_buffer_write(h2_stream->rbuffer, + sldns_buffer_current(h2_session->c->buffer), + sldns_buffer_remaining(h2_stream->rbuffer)); + sldns_buffer_flip(h2_stream->rbuffer); + + data_prd.source.ptr = h2_session; + data_prd.read_callback = http2_submit_response_read_callback; + ret = nghttp2_submit_response(h2_session->session, h2_stream->stream_id, + headers, 2, &data_prd); + if(ret) { + verbose(VERB_QUERY, "http2: set_stream_user_data failed, " + "error: %s", nghttp2_strerror(ret)); + return 0; + } + return 1; +} +#else +int http2_submit_dns_response(void* ATTR_UNUSED(v)) +{ + return 0; +} +#endif + +#ifdef HAVE_NGHTTP2 +/** HTTP status to descriptive string */ +static char* http_status_to_str(enum http_status s) +{ + switch(s) { + case HTTP_STATUS_OK: + return "OK"; + case HTTP_STATUS_BAD_REQUEST: + return "Bad Request"; + case HTTP_STATUS_NOT_FOUND: + return "Not Found"; + case HTTP_STATUS_PAYLOAD_TOO_LARGE: + return "Payload Too Large"; + case HTTP_STATUS_URI_TOO_LONG: + return "URI Too Long"; + case HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE: + return "Unsupported Media Type"; + case HTTP_STATUS_NOT_IMPLEMENTED: + return "Not Implemented"; + } + return "Status Unknown"; +} + +/** nghttp2 callback. Used to copy error message to nghttp2 session */ +static ssize_t http2_submit_error_read_callback( + nghttp2_session* ATTR_UNUSED(session), + int32_t stream_id, uint8_t* buf, size_t length, uint32_t* data_flags, + nghttp2_data_source* source, void* ATTR_UNUSED(cb_arg)) +{ + struct http2_stream* h2_stream; + struct http2_session* h2_session = source->ptr; + char* msg; + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + verbose(VERB_QUERY, "http2: cannot get stream data, closing " + "stream"); + return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; + } + *data_flags |= NGHTTP2_DATA_FLAG_EOF; + msg = http_status_to_str(h2_stream->status); + if(length < strlen(msg)) + return 0; /* not worth trying over multiple frames */ + memcpy(buf, msg, strlen(msg)); + return strlen(msg); + +} + +/** + * HTTP error response ready to be submitted to nghttp2, to be prepared for + * sending out. Message body will contain descriptive string for HTTP status. + * @param h2_session: http2 session to submit to + * @param h2_stream: http2 stream containing HTTP status to use for error + * @return 0 on error, 1 otherwise + */ +static int http2_submit_error(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + int ret; + char status[4]; + nghttp2_data_provider data_prd; + nghttp2_nv headers[1]; /* will be copied by nghttp */ + if(snprintf(status, 4, "%d", h2_stream->status) != 3) { + verbose(VERB_QUERY, "http2: submit error failed, " + "invalid status"); + return 0; + } + headers[0].name = (uint8_t*)":status"; + headers[0].namelen = 7; + headers[0].value = (uint8_t*)status; + headers[0].valuelen = 3; + headers[0].flags = NGHTTP2_NV_FLAG_NONE; + + data_prd.source.ptr = h2_session; + data_prd.read_callback = http2_submit_error_read_callback; + + ret = nghttp2_submit_response(h2_session->session, h2_stream->stream_id, + headers, 1, &data_prd); + if(ret) { + verbose(VERB_QUERY, "http2: submit error failed, " + "error: %s", nghttp2_strerror(ret)); + return 0; + } + return 1; +} + +/** + * Start query handling. Query is stored in the stream, and will be free'd here. + * @param h2_session: http2 session, containing comm point + * @param h2_stream: stream containing buffered query + * @return: -1 on error, 1 if answer is stored in c->buffer, 0 if there is no + * reply available (yet). + */ +static int http2_query_read_done(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + log_assert(h2_stream->qbuffer); + + if(h2_session->c->h2_stream) { + verbose(VERB_ALGO, "http2_query_read_done failure: shared " + "buffer already assigned to stream"); + return -1; + } + if(sldns_buffer_remaining(h2_session->c->buffer) < + sldns_buffer_remaining(h2_stream->qbuffer)) { + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + sldns_buffer_clear(h2_session->c->buffer); + verbose(VERB_ALGO, "http2_query_read_done failure: can't fit " + "qbuffer in c->buffer"); + return -1; + } + + sldns_buffer_write(h2_session->c->buffer, + sldns_buffer_current(h2_stream->qbuffer), + sldns_buffer_remaining(h2_stream->qbuffer)); + + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + + sldns_buffer_flip(h2_session->c->buffer); + h2_session->c->h2_stream = h2_stream; + fptr_ok(fptr_whitelist_comm_point(h2_session->c->callback)); + if((*h2_session->c->callback)(h2_session->c, h2_session->c->cb_arg, + NETEVENT_NOERROR, &h2_session->c->repinfo)) { + return 1; /* answer in c->buffer */ + } + sldns_buffer_clear(h2_session->c->buffer); + h2_session->c->h2_stream = NULL; + return 0; /* mesh state added, or dropped */ +} + +/** nghttp2 callback. Used to check if the received frame indicates the end of a + * stream. Gather collected request data and start query handling. */ +static int http2_req_frame_recv_cb(nghttp2_session* session, + const nghttp2_frame* frame, void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + struct http2_stream* h2_stream; + int query_read_done; + + if((frame->hd.type != NGHTTP2_DATA && + frame->hd.type != NGHTTP2_HEADERS) || + !(frame->hd.flags & NGHTTP2_FLAG_END_STREAM)) { + return 0; + } + + if(!(h2_stream = nghttp2_session_get_stream_user_data( + session, frame->hd.stream_id))) + return 0; + + if(h2_stream->invalid_endpoint) { + h2_stream->status = HTTP_STATUS_NOT_FOUND; + goto submit_http_error; + } + + if(h2_stream->invalid_content_type) { + h2_stream->status = HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE; + goto submit_http_error; + } + + if(h2_stream->http_method != HTTP_METHOD_GET && + h2_stream->http_method != HTTP_METHOD_POST) { + h2_stream->status = HTTP_STATUS_NOT_IMPLEMENTED; + goto submit_http_error; + } + + if(h2_stream->query_too_large) { + if(h2_stream->http_method == HTTP_METHOD_POST) + h2_stream->status = HTTP_STATUS_PAYLOAD_TOO_LARGE; + else + h2_stream->status = HTTP_STATUS_URI_TOO_LONG; + goto submit_http_error; + } + + if(!h2_stream->qbuffer) { + h2_stream->status = HTTP_STATUS_BAD_REQUEST; + goto submit_http_error; + } + + if(h2_stream->status) { +submit_http_error: + verbose(VERB_QUERY, "http2 request invalid, returning :status=" + "%d", h2_stream->status); + if(!http2_submit_error(h2_session, h2_stream)) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + return 0; + } + h2_stream->status = HTTP_STATUS_OK; + + sldns_buffer_flip(h2_stream->qbuffer); + h2_session->postpone_drop = 1; + query_read_done = http2_query_read_done(h2_session, h2_stream); + if(query_read_done < 0) + return NGHTTP2_ERR_CALLBACK_FAILURE; + else if(!query_read_done) { + if(h2_session->is_drop) { + /* connection needs to be closed. Return failure to make + * sure no other action are taken anymore on comm point. + * failure will result in reclaiming (and closing) + * of comm point. */ + verbose(VERB_QUERY, "http2 query dropped in worker cb"); + h2_session->postpone_drop = 0; + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + /* nothing to submit right now, query added to mesh. */ + h2_session->postpone_drop = 0; + return 0; + } + if(!http2_submit_dns_response(h2_session)) { + sldns_buffer_clear(h2_session->c->buffer); + h2_session->c->h2_stream = NULL; + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + verbose(VERB_QUERY, "http2 query submitted to session"); + sldns_buffer_clear(h2_session->c->buffer); + h2_session->c->h2_stream = NULL; + return 0; +} + +/** nghttp2 callback. Used to detect start of new streams. */ +static int http2_req_begin_headers_cb(nghttp2_session* session, + const nghttp2_frame* frame, void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + struct http2_stream* h2_stream; + int ret; + if(frame->hd.type != NGHTTP2_HEADERS || + frame->headers.cat != NGHTTP2_HCAT_REQUEST) { + /* only interrested in request headers */ + return 0; + } + if(!(h2_stream = http2_stream_create(frame->hd.stream_id))) { + log_err("malloc failure while creating http2 stream"); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + http2_session_add_stream(h2_session, h2_stream); + ret = nghttp2_session_set_stream_user_data(session, + frame->hd.stream_id, h2_stream); + if(ret) { + /* stream does not exist */ + verbose(VERB_QUERY, "http2: set_stream_user_data failed, " + "error: %s", nghttp2_strerror(ret)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + + return 0; +} + +/** + * base64url decode, store in qbuffer + * @param h2_session: http2 session + * @param h2_stream: http2 stream + * @param start: start of the base64 string + * @param length: length of the base64 string + * @return: 0 on error, 1 otherwise. query will be stored in h2_stram->qbuffer, + * buffer will be NULL is unparseble. + */ +static int http2_buffer_uri_query(struct http2_session* h2_session, + struct http2_stream* h2_stream, const uint8_t* start, size_t length) +{ + size_t expectb64len; + int b64len; + if(h2_stream->http_method == HTTP_METHOD_POST) + return 1; + if(length == 0) + return 1; + if(h2_stream->qbuffer) { + verbose(VERB_ALGO, "http2_req_header fail, " + "qbuffer already set"); + return 0; + } + + /* calculate size, might be a bit bigger than the real + * decoded buffer size */ + expectb64len = sldns_b64_pton_calculate_size(length); + log_assert(expectb64len > 0); + if(expectb64len > + h2_session->c->http2_max_qbuffer_size) { + h2_stream->query_too_large = 1; + return 1; + } + + if(!(h2_stream->qbuffer = sldns_buffer_new(expectb64len))) { + log_err("http2_req_header fail, qbuffer " + "malloc failure"); + return 0; + } + + if(!(b64len = sldns_b64url_pton( + (char const *)start, length, + sldns_buffer_current(h2_stream->qbuffer), + expectb64len)) || b64len < 0) { + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + /* return without error, method can be an + * unknown POST */ + return 1; + } + sldns_buffer_skip(h2_stream->qbuffer, (size_t)b64len); + return 1; +} + +/** nghttp2 callback. Used to parse headers from HEADER frames. */ +static int http2_req_header_cb(nghttp2_session* session, + const nghttp2_frame* frame, const uint8_t* name, size_t namelen, + const uint8_t* value, size_t valuelen, uint8_t ATTR_UNUSED(flags), + void* cb_arg) +{ + struct http2_stream* h2_stream = NULL; + struct http2_session* h2_session = (struct http2_session*)cb_arg; + /* nghttp2 deals with CONTINUATION frames and provides them as part of + * the HEADER */ + if(frame->hd.type != NGHTTP2_HEADERS || + frame->headers.cat != NGHTTP2_HCAT_REQUEST) { + /* only interrested in request headers */ + return 0; + } + if(!(h2_stream = nghttp2_session_get_stream_user_data(session, + frame->hd.stream_id))) + return 0; + + /* earlier checks already indicate we can stop handling this query */ + if(h2_stream->http_method == HTTP_METHOD_UNSUPPORTED || + h2_stream->invalid_content_type || + h2_stream->invalid_endpoint) + return 0; + + + /* nghttp2 performs some sanity checks in the headers, including: + * name and value are guaranteed to be null terminated + * name is guaranteed to be lowercase + * content-length value is guaranteed to contain digits + */ + + if(!h2_stream->http_method && namelen == 7 && + memcmp(":method", name, namelen) == 0) { + /* Case insensitive check on :method value to be on the safe + * side. I failed to find text about case sentitivity in specs. + */ + if(valuelen == 3 && strcasecmp("GET", (const char*)value) == 0) + h2_stream->http_method = HTTP_METHOD_GET; + else if(valuelen == 4 && + strcasecmp("POST", (const char*)value) == 0) { + h2_stream->http_method = HTTP_METHOD_POST; + if(h2_stream->qbuffer) { + /* POST method uses query from DATA frames */ + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + } + } else + h2_stream->http_method = HTTP_METHOD_UNSUPPORTED; + return 0; + } + if(namelen == 5 && memcmp(":path", name, namelen) == 0) { + /* Hard coded /dns-query endpoint, might be nice to make + * configurable. + * :path may contain DNS query, depending on method. Method might + * not be known yet here, so check after finishing receiving + * stream. */ +#define HTTP_ENDPOINT "/dns-query" +#define HTTP_QUERY_PARAM "?dns=" + size_t el = sizeof(HTTP_ENDPOINT) - 1; + size_t qpl = sizeof(HTTP_QUERY_PARAM) - 1; + + if(valuelen < el || memcmp(HTTP_ENDPOINT, value, el) != 0) { + h2_stream->invalid_endpoint = 1; + return 0; + } + /* larger than endpoint only allowed if it is for the query + * parameter */ + if(valuelen <= el+qpl || + memcmp(HTTP_QUERY_PARAM, value+el, qpl) != 0) { + if(valuelen != el) + h2_stream->invalid_endpoint = 1; + return 0; + } + + if(!http2_buffer_uri_query(h2_session, h2_stream, + value+(el+qpl), valuelen-(el+qpl))) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + return 0; + } + /* Content type is a SHOULD (rfc7231#section-3.1.1.5) when using POST, + * and not needed when using GET. Don't enfore. + * If set only allow lowercase "application/dns-message". + * + * Clients SHOULD (rfc8484#section-4.1) set an accept header, but MUST + * be able to handle "application/dns-message". Since that is the only + * content-type supported we can ignore the accept header. + */ + if((namelen == 12 && memcmp("content-type", name, namelen) == 0)) { + if(valuelen != 23 || memcmp("application/dns-message", value, + valuelen) != 0) { + h2_stream->invalid_content_type = 1; + } + } + + /* Only interested in content-lentg for POST (on not yet known) method. + */ + if((!h2_stream->http_method || + h2_stream->http_method == HTTP_METHOD_POST) && + !h2_stream->content_length && namelen == 14 && + memcmp("content-length", name, namelen) == 0) { + if(valuelen > 5) { + h2_stream->query_too_large = 1; + return 0; + } + /* guaranteed to only contian digits and be null terminated */ + h2_stream->content_length = atoi((const char*)value); + if(h2_stream->content_length > + h2_session->c->http2_max_qbuffer_size) { + h2_stream->query_too_large = 1; + return 0; + } + } + return 0; +} + +/** nghttp2 callback. Used to get data from DATA frames, which can contain + * queries in POST requests. */ +static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), + uint8_t ATTR_UNUSED(flags), int32_t stream_id, const uint8_t* data, + size_t len, void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + struct http2_stream* h2_stream; + + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + return 0; + } + + if(h2_stream->query_too_large) + return 0; + + if(!h2_stream->qbuffer) { + if(h2_stream->content_length) { + if(h2_stream->content_length < len) + /* getting more data in DATA frame than + * advertised in content-length header. */ + return NGHTTP2_ERR_CALLBACK_FAILURE; + h2_stream->qbuffer = sldns_buffer_new( + h2_stream->content_length); + } else if(len <= h2_session->c->http2_max_qbuffer_size) { + /* setting this to msg-buffer-size can result in a lot + * of memory consuption. Most queries should fit in a + * single DATA frame, and most POST queries will + * containt content-length which does not impose this + * limit. */ + h2_stream->qbuffer = sldns_buffer_new(len); + } + } + + if(!h2_stream->qbuffer || + sldns_buffer_remaining(h2_stream->qbuffer) < len) { + verbose(VERB_ALGO, "http2 data_chunck_recv failed. Not enough " + "buffer space for POST query. Can happen on multi " + "frame requests without content-length header"); + h2_stream->query_too_large = 1; + return 0; + } + + sldns_buffer_write(h2_stream->qbuffer, data, len); + + return 0; +} + +nghttp2_session_callbacks* http2_req_callbacks_create() +{ + nghttp2_session_callbacks *callbacks; + if(nghttp2_session_callbacks_new(&callbacks) == NGHTTP2_ERR_NOMEM) { + log_err("failed to initialize nghttp2 callback"); + return NULL; + } + /* reception of header block started, used to create h2_stream */ + nghttp2_session_callbacks_set_on_begin_headers_callback(callbacks, + http2_req_begin_headers_cb); + /* complete frame received, used to get data from stream if frame + * has end stream flag, and start processing query */ + nghttp2_session_callbacks_set_on_frame_recv_callback(callbacks, + http2_req_frame_recv_cb); + /* get request info from headers */ + nghttp2_session_callbacks_set_on_header_callback(callbacks, + http2_req_header_cb); + /* get data from DATA frames, containing POST query */ + nghttp2_session_callbacks_set_on_data_chunk_recv_callback(callbacks, + http2_req_data_chunk_recv_cb); + + /* generic HTTP2 callbacks */ + nghttp2_session_callbacks_set_recv_callback(callbacks, http2_recv_cb); + nghttp2_session_callbacks_set_send_callback(callbacks, http2_send_cb); + nghttp2_session_callbacks_set_on_stream_close_callback(callbacks, + http2_stream_close_cb); + + return callbacks; +} +#endif /* HAVE_NGHTTP2 */ diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index ad84d8322..6b5a85822 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -43,6 +43,9 @@ #define LISTEN_DNSPORT_H #include "util/netevent.h" +#ifdef HAVE_NGHTTP2_NGHTTP2_H +#include +#endif struct listen_list; struct config_file; struct addrinfo; @@ -94,8 +97,9 @@ enum listen_type { /** tcp type + dnscrypt */ listen_type_tcp_dnscrypt, /** udp ipv6 (v4mapped) for use with ancillary data + dnscrypt*/ - listen_type_udpancil_dnscrypt - + listen_type_udpancil_dnscrypt, + /** HTTP(2) over TLS over TCP */ + listen_type_http }; /** @@ -139,6 +143,7 @@ void listening_ports_free(struct listen_port* list); * @param tcp_accept_count: max number of simultaneous TCP connections * from clients. * @param tcp_idle_timeout: idle timeout for TCP connections in msec. + * @param harden_large_queries: whether query size should be limited. * @param tcp_conn_limit: TCP connection limit info. * @param sslctx: nonNULL if ssl context. * @param dtenv: nonNULL if dnstap enabled. @@ -149,7 +154,7 @@ void listening_ports_free(struct listen_port* list); */ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, - int tcp_accept_count, int tcp_idle_timeout, + int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, struct tcl_list* tcp_conn_limit, void* sslctx, struct dt_env *dtenv, comm_point_callback_type* cb, void* cb_arg); @@ -220,12 +225,14 @@ int create_udp_sock(int family, int socktype, struct sockaddr* addr, * listening UDP port. Set to false on return if it failed to do so. * @param transparent: set IP_TRANSPARENT socket option. * @param mss: maximum segment size of the socket. if zero, leaves the default. + * @param nodelay: if true set TCP_NODELAY and TCP_QUICKACK socket options. * @param freebind: set IP_FREEBIND socket option. * @param use_systemd: if true, fetch sockets from systemd. * @return: the socket. -1 on error. */ int create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, - int* reuseport, int transparent, int mss, int freebind, int use_systemd); + int* reuseport, int transparent, int mss, int nodelay, int freebind, + int use_systemd); /** * Create and bind local listening socket @@ -367,4 +374,24 @@ int tcp_req_info_handle_read_close(struct tcp_req_info* req); /** get the size of currently used tcp stream wait buffers (in bytes) */ size_t tcp_req_info_get_stream_buffer_size(void); +#ifdef HAVE_NGHTTP2 +/** + * Create nghttp2 callbacks to handle HTTP2 requests. + * @return malloc'ed struct, NULL on failure + */ +nghttp2_session_callbacks* http2_req_callbacks_create(); + +/** + * DNS response ready to be submitted to nghttp2, to be prepared for sending + * out. Response is stored in c->buffer. Copy to rbuffer because the c->buffer + * might be used before this will be send out. + * @param h2_session: http2 session, containing c->buffer which contains answer + * @param h2_stream: http2 stream, containing buffer to store answer in + * @return 0 on error, 1 otherwise + */ +int http2_submit_dns_response(struct http2_session* h2_session); +#else +int http2_submit_dns_response(void* v); +#endif /* HAVE_NGHTTP2 */ + #endif /* LISTEN_DNSPORT_H */ diff --git a/services/mesh.c b/services/mesh.c index 09c51a2be..4234fd8af 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -551,6 +551,9 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, goto servfail_mem; } } + if(rep->c->alpn_h2) { + http2_stream_add_meshstate(rep->c->h2_stream, mesh, s); + } /* add serve expired timer if required and not already there */ if(timeout && !mesh_serve_expired_init(s, timeout)) { log_err("mesh_new_client: out of memory initializing serve expired"); @@ -1207,6 +1210,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; + if(r->query_reply.c->alpn_h2) { + r->query_reply.c->h2_stream = r->h2_stream; + } /* send the reply */ /* We don't reuse the encoded answer if either the previous or current * response has a local alias. We could compare the alias records @@ -1488,6 +1494,8 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, s->s.qinfo.qname_len); if(!r->qname) return 0; + if(rep->c->alpn_h2) + r->h2_stream = rep->c->h2_stream; /* Data related to local alias stored in 'qinfo' (if any) is ephemeral * and can be different for different original queries (even if the diff --git a/services/mesh.h b/services/mesh.h index df2972ac3..d0a4b5fb3 100644 --- a/services/mesh.h +++ b/services/mesh.h @@ -230,6 +230,8 @@ struct mesh_reply { uint8_t* qname; /** same as that in query_info. */ struct local_rrset* local_alias; + /** send query to this http2 stream, if set */ + struct http2_stream* h2_stream; }; /** diff --git a/sldns/parseutil.c b/sldns/parseutil.c index 82dbc0fe1..b51a0709d 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -674,14 +674,17 @@ size_t sldns_b64_pton_calculate_size(size_t srcsize) return (((((srcsize + 3) / 4) * 3)) + 1); } -int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) +/* padding not required if srcsize is set */ +static int sldns_b64_pton_base(char const *src, size_t srcsize, uint8_t *target, + size_t targsize, int base64url) { const uint8_t pad64 = 64; /* is 64th in the b64 array */ const char* s = src; uint8_t in[4]; size_t o = 0, incount = 0; + int check_padding = (srcsize) ? 0 : 1; - while(*s) { + while(*s && (check_padding || srcsize)) { /* skip any character that is not base64 */ /* conceptually we do: const char* b64 = pad'=' is appended to array @@ -690,30 +693,40 @@ int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) and use d-b64; */ char d = *s++; + srcsize--; if(d <= 'Z' && d >= 'A') d -= 'A'; else if(d <= 'z' && d >= 'a') d = d - 'a' + 26; else if(d <= '9' && d >= '0') d = d - '0' + 52; - else if(d == '+') + else if(!base64url && d == '+') d = 62; - else if(d == '/') + else if(base64url && d == '-') + d = 62; + else if(!base64url && d == '/') d = 63; - else if(d == '=') + else if(base64url && d == '_') + d = 63; + else if(!base64url && d == '=') d = 64; else continue; in[incount++] = (uint8_t)d; - if(incount != 4) + /* work on block of 4, unless padding is not used and there are + * less than 4 chars left */ + if(incount != 4 && (check_padding || srcsize)) continue; + assert(!check_padding || incount==4); /* process whole block of 4 characters into 3 output bytes */ - if(in[3] == pad64 && in[2] == pad64) { /* A B = = */ + if((incount == 2 || + (incount == 4 && in[3] == pad64 && in[2] == pad64))) { /* A B = = */ if(o+1 > targsize) return -1; target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); o += 1; break; /* we are done */ - } else if(in[3] == pad64) { /* A B C = */ + } else if(incount == 3 || + (incount == 4 && in[3] == pad64)) { /* A B C = */ if(o+2 > targsize) return -1; target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); @@ -721,7 +734,7 @@ int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) o += 2; break; /* we are done */ } else { - if(o+3 > targsize) + if(incount != 4 || o+3 > targsize) return -1; /* write xxxxxxyy yyyyzzzz zzwwwwww */ target[o] = (in[0]<<2) | ((in[1]&0x30)>>4); @@ -733,3 +746,17 @@ int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) } return (int)o; } + +int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize) +{ + return sldns_b64_pton_base(src, 0, target, targsize, 0); +} + +int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, + size_t targsize) +{ + if(!srcsize) { + return 0; + } + return sldns_b64_pton_base(src, srcsize, target, targsize, 1); +} diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 10a2630a9..852ad3fb5 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -97,8 +97,9 @@ int sldns_b64_ntop(uint8_t const *src, size_t srclength, * calculates the size needed to store the result of sldns_b64_pton */ size_t sldns_b64_pton_calculate_size(size_t srcsize); - int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize); +int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target, + size_t targsize); /** * calculates the size needed to store the result of b32_ntop diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d6e904a4d..6222003bc 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -868,6 +868,7 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), size_t bufsize, int ATTR_UNUSED(tcp_accept_count), int ATTR_UNUSED(tcp_idle_timeout), + int ATTR_UNUSED(harden_large_queries), struct tcl_list* ATTR_UNUSED(tcp_conn_limit), void* ATTR_UNUSED(sslctx), struct dt_env* ATTR_UNUSED(dtenv), comm_point_callback_type* cb, void* cb_arg) @@ -1823,4 +1824,9 @@ tcp_req_info_get_stream_buffer_size(void) return 0; } +void http2_stream_add_meshstate(struct http2_stream* ATTR_UNUSED(h2_stream), + struct mesh_area* ATTR_UNUSED(mesh), struct mesh_state* ATTR_UNUSED(m)) +{ +} + /*********** End of Dummy routines ***********/ diff --git a/util/config_file.c b/util/config_file.c index 814d9f436..050db3175 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -116,6 +116,7 @@ config_create(void) cfg->ssl_upstream = 0; cfg->tls_cert_bundle = NULL; cfg->tls_win_cert = 0; + cfg->https_port = UNBOUND_DNS_OVER_HTTPS_PORT; cfg->use_syslog = 1; cfg->log_identity = NULL; /* changed later with argv[0] */ cfg->log_time_ascii = 0; @@ -505,6 +506,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STRLIST_APPEND("tls-session-ticket-keys:", tls_session_ticket_keys) else S_STR("tls-ciphers:", tls_ciphers) else S_STR("tls-ciphersuites:", tls_ciphersuites) + else S_NUMBER_NONZERO("https-port:", https_port) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) @@ -957,6 +959,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LST(opt, "tls-session-ticket-keys", tls_session_ticket_keys.first) else O_STR(opt, "tls-ciphers", tls_ciphers) else O_STR(opt, "tls-ciphersuites", tls_ciphersuites) + else O_DEC(opt, "https-port", https_port) else O_YNO(opt, "use-systemd", use_systemd) else O_YNO(opt, "do-daemonize", do_daemonize) else O_STR(opt, "chroot", chrootdir) diff --git a/util/config_file.h b/util/config_file.h index bd6e884eb..30e552803 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -128,6 +128,8 @@ struct config_file { char* tls_ciphers; /** TLS chiphersuites (TLSv1.3) */ char* tls_ciphersuites; + /** port on which to provide DNS over HTTPS service */ + int https_port; /** outgoing port range number of ports (per thread) */ int outgoing_num_ports; diff --git a/util/configlexer.c b/util/configlexer.c index 601cd78bf..abbc7198c 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 309 -#define YY_END_OF_BUFFER 310 +#define YY_NUM_RULES 310 +#define YY_END_OF_BUFFER 311 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,343 +363,344 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3044] = +static const flex_int16_t yy_accept[3054] = { 0, - 1, 1, 291, 291, 295, 295, 299, 299, 303, 303, - 1, 1, 310, 307, 1, 289, 289, 308, 2, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 291, 292, 292, 293, 308, 295, 296, 296, - 297, 308, 302, 299, 300, 300, 301, 308, 303, 304, - 304, 305, 308, 306, 290, 2, 294, 308, 306, 307, - 0, 1, 2, 2, 2, 2, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 1, 1, 292, 292, 296, 296, 300, 300, 304, 304, + 1, 1, 311, 308, 1, 290, 290, 309, 2, 309, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 292, 293, 293, 294, 309, 296, 297, 297, + 298, 309, 303, 300, 301, 301, 302, 309, 304, 305, + 305, 306, 309, 307, 291, 2, 295, 309, 307, 308, + 0, 1, 2, 2, 2, 2, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 291, 0, 295, 0, 302, 0, 299, 303, 0, 306, - 0, 2, 2, 306, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 292, 0, 296, 0, 303, 0, 300, 304, 0, + 307, 0, 2, 2, 307, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 306, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 307, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 113, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 121, 307, 307, 307, 307, - 307, 307, 307, 306, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 114, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 122, 308, + 308, 308, 308, 308, 308, 308, 307, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 97, 307, - 307, 307, 307, 307, 307, 8, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 114, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 126, 307, 306, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 98, 308, 308, 308, 308, 308, 308, 8, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 115, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 127, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 284, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 285, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 306, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 55, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 223, 307, 14, 15, 307, 19, 18, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 56, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 224, 308, 14, 15, + 308, 19, 18, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 120, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 207, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 3, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 121, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 208, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 3, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 306, 307, 307, 307, 307, 307, 307, - 307, 279, 307, 307, 278, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 298, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 307, + 308, 308, 308, 308, 308, 308, 308, 280, 308, 308, + 279, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 299, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 58, 307, 253, 307, 307, 307, - 307, 307, 307, 307, 307, 285, 286, 307, 307, 307, - 307, 307, 59, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 117, 307, - 307, 307, 307, 307, 307, 307, 307, 196, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 21, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 145, 307, 307, 298, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 59, 308, 254, 308, 308, 308, 308, 308, 308, + 308, 308, 286, 287, 308, 308, 308, 308, 308, 60, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 118, 308, 308, 308, 308, + 308, 308, 308, 308, 197, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 21, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 95, 307, 307, 307, 307, 307, 307, 307, 261, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 168, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 144, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 146, 308, 308, 299, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 96, 308, 308, + 308, 308, 308, 308, 308, 262, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 169, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 145, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 94, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 32, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 33, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 56, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 119, 307, - 307, 307, 307, 307, 112, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 57, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 95, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 32, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 33, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 57, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 120, 308, 308, 308, + 308, 308, 113, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 226, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 169, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 46, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 58, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 227, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 170, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 47, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 244, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 50, 307, 51, 307, 307, 307, 307, 307, 98, 307, - 99, 307, 307, 307, 307, 96, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 7, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 216, 307, 307, 307, 307, 147, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 245, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 51, + 308, 52, 308, 308, 308, 308, 308, 99, 308, 100, + 308, 308, 308, 308, 97, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 7, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 217, 308, 308, 308, 308, 148, 308, 308, 308, - 307, 307, 307, 227, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 47, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 188, 307, 187, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 16, 17, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 60, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 228, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 44, 308, 308, 308, 308, 308, 308, 308, 48, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 189, 308, 188, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 16, 17, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 195, 307, - 307, 307, 307, 307, 307, 101, 307, 100, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 179, 307, - 307, 307, 307, 307, 307, 307, 307, 127, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 79, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 61, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 196, 308, + 308, 308, 308, 308, 308, 102, 308, 101, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 180, 308, + 308, 308, 308, 308, 308, 308, 308, 128, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 80, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 83, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 54, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 182, 183, 307, 307, 307, 255, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 6, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 259, 307, 307, 307, 307, 307, 307, 280, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 84, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 55, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 183, 184, 308, 308, 308, 256, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 6, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 260, 308, 308, 308, 308, 308, 308, 281, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 42, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 44, 307, 307, 307, 307, 307, 307, 307, 307, - 175, 307, 307, 307, 122, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 200, 307, 176, 307, 307, - 307, 213, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 45, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 124, 106, 307, 107, 307, 307, 307, 105, 307, - 307, 307, 307, 307, 307, 307, 307, 142, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 42, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 45, 308, 308, 308, 308, 308, 308, 308, 308, + 176, 308, 308, 308, 123, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 201, 308, 177, 308, 308, + 308, 214, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 46, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 125, 107, 308, 108, 308, 308, 308, 106, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 243, - 307, 307, 307, 307, 307, 307, 307, 307, 177, 307, - 307, 307, 307, 307, 180, 307, 186, 307, 307, 307, - 307, 307, 212, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 93, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 118, 307, 307, 307, 307, - 307, 307, 52, 307, 307, 307, 26, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 20, 307, 307, 307, - 307, 307, 307, 27, 36, 307, 152, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 143, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 244, + 308, 308, 308, 308, 308, 308, 308, 308, 178, 308, + 308, 308, 308, 308, 181, 308, 187, 308, 308, 308, + 308, 308, 213, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 94, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 119, 308, 308, 308, 308, + 308, 308, 53, 308, 308, 308, 26, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 20, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 68, 70, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 263, 307, 307, 307, 224, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 108, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 141, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 274, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 27, 36, 308, 153, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 69, 71, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 264, 308, 308, 308, 225, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 109, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 142, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 275, 308, 308, 308, 308, 308, 308, - 307, 307, 146, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 206, 307, 307, 307, - 307, 307, 307, 307, 307, 283, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 163, 307, 307, - 307, 307, 307, 307, 307, 307, 102, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 158, 307, 170, 307, - 307, 307, 307, 307, 130, 307, 307, 307, 307, 307, - 89, 307, 307, 307, 307, 198, 307, 307, 307, 307, - 307, 307, 214, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 147, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 207, 308, 308, 308, + 308, 308, 308, 308, 308, 284, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 164, 308, 308, + 308, 308, 308, 308, 308, 308, 103, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 159, 308, 171, 308, + 308, 308, 308, 308, 131, 308, 308, 308, 308, 308, + 90, 308, 308, 308, 308, 199, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 235, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 123, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 162, - 307, 307, 307, 307, 307, 71, 72, 307, 307, 307, - 307, 307, 53, 307, 307, 307, 307, 307, 78, 171, - 307, 189, 307, 217, 307, 307, 181, 256, 307, 307, - 307, 307, 307, 64, 307, 173, 307, 307, 307, 307, - 307, 9, 307, 307, 307, 92, 307, 307, 307, 307, - 248, 307, 307, 307, 197, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 215, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 236, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 124, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 163, + 308, 308, 308, 308, 308, 72, 73, 308, 308, 308, + 308, 308, 54, 308, 308, 308, 308, 308, 79, 172, + 308, 190, 308, 218, 308, 308, 182, 257, 308, 308, + 308, 308, 308, 65, 308, 174, 308, 308, 308, 308, + 308, 9, 308, 308, 308, 93, 308, 308, 308, 308, + 249, 308, 308, 308, 198, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 161, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 148, 307, 262, 307, 307, - 307, 307, 234, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 208, 307, 307, 307, 307, 254, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 277, 307, 172, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 162, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 149, 308, 263, 308, 308, + 308, 308, 235, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 209, 308, 308, 308, 308, 255, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 63, 65, 307, 307, 307, 307, - 307, 307, 307, 91, 307, 307, 307, 307, 246, 307, - 307, 307, 258, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 202, 34, 28, 30, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 35, 307, 29, - 31, 307, 307, 307, 307, 307, 307, 307, 307, 88, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 204, 201, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 62, 307, 307, 125, + 308, 308, 308, 308, 278, 308, 173, 308, 308, 308, + 308, 308, 308, 308, 64, 66, 308, 308, 308, 308, + 308, 308, 308, 92, 308, 308, 308, 308, 247, 308, + 308, 308, 259, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 203, 34, 28, 30, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 35, 308, 29, + 31, 308, 308, 308, 308, 308, 308, 308, 308, 89, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 205, 202, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 109, 307, 307, 307, 307, 307, 307, 307, 307, - 143, 13, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 272, 307, 275, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 12, 307, 307, 22, 307, 307, - 307, 252, 307, 307, 307, 260, 307, 307, 307, 66, - 307, 210, 307, 307, 307, 307, 203, 307, 307, 61, - 307, 307, 307, 307, 23, 307, 43, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 157, - 156, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 205, 199, 307, 215, 307, 307, 264, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 63, 308, 308, 126, + 308, 110, 308, 308, 308, 308, 308, 308, 308, 308, + 144, 13, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 273, 308, 276, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 12, 308, 308, 22, 308, 308, + 308, 253, 308, 308, 308, 261, 308, 308, 308, 67, + 308, 211, 308, 308, 308, 308, 204, 308, 308, 62, + 308, 308, 308, 308, 23, 308, 43, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 158, + 157, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 73, 307, 307, 307, 247, 307, - 307, 307, 307, 185, 307, 307, 307, 307, 209, 307, - 307, 307, 307, 307, 307, 307, 307, 281, 282, 154, - 307, 307, 67, 307, 307, 307, 307, 164, 307, 307, - 103, 104, 307, 307, 307, 307, 149, 307, 151, 307, - 190, 307, 307, 307, 307, 155, 307, 307, 218, 307, - 307, 307, 307, 307, 307, 307, 132, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 225, 307, + 206, 200, 308, 216, 308, 308, 265, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 74, 308, 308, 308, 248, 308, + 308, 308, 308, 186, 308, 308, 308, 308, 210, 308, + 308, 308, 308, 308, 308, 308, 308, 282, 283, 155, + 308, 308, 68, 308, 308, 308, 308, 165, 308, 308, + 104, 105, 308, 308, 308, 308, 150, 308, 152, 308, + 191, 308, 308, 308, 308, 156, 308, 308, 219, 308, + 308, 308, 308, 308, 308, 308, 133, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 24, 307, 257, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 191, 307, 307, 245, 307, 276, 307, 184, 307, 307, - 307, 307, 48, 307, 307, 307, 307, 4, 307, 307, - 307, 116, 131, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 221, 37, 38, 307, 307, 307, 307, 307, 307, - 307, 265, 307, 307, 307, 307, 307, 307, 233, 307, - 307, 307, 307, 307, 307, 307, 194, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 76, 307, 49, 251, + 308, 308, 308, 308, 308, 308, 308, 308, 226, 308, + 308, 308, 308, 308, 308, 308, 24, 308, 258, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 192, 308, 308, 246, 308, 277, 308, 185, 308, 308, + 308, 308, 49, 308, 308, 308, 308, 4, 308, 308, + 308, 117, 132, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 222, 37, 38, 308, 308, 308, 308, 308, 308, + 308, 266, 308, 308, 308, 308, 308, 308, 234, 308, + 308, 308, 308, 308, 308, 308, 195, 308, 308, 308, - 307, 222, 307, 307, 307, 307, 11, 307, 307, 307, - 307, 307, 115, 307, 307, 307, 307, 192, 80, 307, - 40, 307, 307, 307, 307, 307, 307, 307, 307, 160, - 307, 307, 307, 307, 307, 134, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 232, 307, 307, 307, 307, - 128, 307, 307, 110, 111, 307, 307, 307, 82, 86, - 81, 307, 74, 307, 307, 307, 307, 307, 10, 307, - 307, 307, 249, 307, 307, 307, 307, 288, 39, 307, - 307, 307, 307, 307, 159, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 77, 308, 50, 252, + 308, 223, 308, 308, 308, 308, 11, 308, 308, 308, + 308, 308, 116, 308, 308, 308, 308, 193, 81, 308, + 40, 308, 308, 308, 308, 308, 308, 308, 308, 161, + 308, 308, 308, 308, 308, 135, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 233, 308, 308, 308, 308, + 129, 308, 308, 111, 112, 308, 308, 308, 83, 87, + 82, 308, 75, 308, 308, 308, 308, 308, 10, 308, + 308, 308, 250, 308, 308, 308, 308, 289, 39, 308, + 308, 308, 308, 308, 160, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 87, 85, 307, - 75, 273, 307, 307, 307, 307, 307, 307, 307, 178, - 307, 307, 307, 307, 307, 193, 307, 307, 307, 307, - 307, 307, 307, 307, 150, 69, 307, 307, 307, 307, - 307, 266, 307, 307, 307, 307, 307, 307, 307, 229, - 307, 307, 228, 129, 307, 84, 135, 136, 139, 140, - 137, 138, 77, 307, 250, 307, 307, 307, 307, 153, - 307, 307, 307, 307, 307, 220, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 166, 165, 41, 307, 307, 307, 307, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 88, 86, 308, + 76, 274, 308, 308, 308, 308, 308, 308, 308, 179, + 308, 308, 308, 308, 308, 194, 308, 308, 308, 308, + 308, 308, 308, 308, 151, 70, 308, 308, 308, 308, + 308, 267, 308, 308, 308, 308, 308, 308, 308, 230, + 308, 308, 229, 130, 308, 85, 136, 137, 140, 141, + 138, 139, 78, 308, 251, 308, 308, 308, 308, 154, + 308, 308, 308, 308, 308, 221, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 90, 307, 219, 307, 242, 270, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 5, 307, - 307, 211, 307, 307, 271, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 230, 25, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 231, 307, - 307, 307, 133, 307, 307, 307, 307, 307, 307, 307, - 307, 167, 307, 174, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 267, 307, 307, 307, 307, 307, 307, + 308, 308, 308, 167, 166, 41, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 91, 308, 220, 308, 243, 271, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 5, 308, + 308, 212, 308, 308, 272, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 231, 25, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 232, 308, + 308, 308, 134, 308, 308, 308, 308, 308, 308, 308, + 308, 168, 308, 175, 308, 308, 308, 308, 308, 308, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 287, 307, 307, 238, 307, 307, 307, 307, 307, - 268, 307, 307, 307, 307, 307, 307, 269, 307, 307, - 307, 236, 307, 239, 240, 307, 307, 307, 307, 307, - 237, 241, 0 + 308, 308, 308, 268, 308, 308, 308, 308, 308, 308, + 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, + 308, 288, 308, 308, 239, 308, 308, 308, 308, 308, + 269, 308, 308, 308, 308, 308, 308, 270, 308, 308, + 308, 237, 308, 240, 241, 308, 308, 308, 308, 308, + 238, 242, 0 } ; static const YY_CHAR yy_ec[256] = @@ -742,687 +743,689 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3058] = +static const flex_int16_t yy_base[3068] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 3212, 2720, 81, 5927, 5927, 5927, 96, 52, + 90, 112, 2338, 2174, 81, 5953, 5953, 5953, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 2544, 5927, 5927, 5927, 107, 2459, 5927, 5927, - 5927, 165, 2157, 2047, 5927, 5927, 5927, 211, 1913, 5927, - 5927, 5927, 180, 1568, 5927, 217, 5927, 221, 168, 1529, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 76, 144, 141, 114, 151, 124, 167, 173, 186, 161, + 190, 117, 1854, 5953, 5953, 5953, 107, 1734, 5953, 5953, + 5953, 162, 1567, 1365, 5953, 5953, 5953, 212, 1315, 5953, + 5953, 5953, 167, 1197, 5953, 218, 5953, 222, 134, 1088, + 226, 182, 0, 233, 0, 0, 194, 227, 85, 184, + 220, 234, 235, 136, 230, 222, 241, 242, 207, 243, + 250, 245, 228, 246, 249, 252, 264, 254, 266, 269, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 1432, 379, 1075, 381, 915, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 463, 472, - 465, 473, 484, 479, 488, 492, 475, 493, 496, 491, + 272, 279, 276, 277, 281, 286, 280, 285, 164, 287, + 290, 293, 296, 299, 303, 301, 309, 308, 311, 313, + 321, 315, 320, 322, 324, 323, 332, 331, 344, 348, + 335, 337, 329, 347, 357, 349, 353, 352, 354, 369, + 367, 947, 380, 811, 383, 784, 394, 734, 687, 387, + 339, 398, 402, 0, 394, 396, 404, 399, 360, 400, + 403, 410, 405, 406, 407, 409, 411, 422, 419, 425, + 426, 434, 433, 437, 438, 435, 440, 442, 443, 432, + 456, 379, 459, 449, 448, 460, 461, 463, 466, 467, + 468, 477, 470, 478, 489, 484, 493, 497, 480, 498, - 503, 499, 506, 507, 502, 498, 508, 510, 513, 515, - 516, 518, 517, 520, 521, 523, 525, 533, 535, 526, - 534, 528, 547, 542, 549, 546, 548, 552, 551, 555, - 563, 564, 556, 565, 567, 568, 571, 574, 583, 584, - 585, 569, 576, 586, 580, 588, 589, 590, 591, 600, - 603, 602, 605, 612, 593, 611, 613, 615, 616, 617, - 626, 618, 628, 622, 635, 619, 633, 638, 627, 636, - 641, 645, 646, 653, 640, 656, 657, 658, 660, 661, - 663, 671, 666, 667, 648, 670, 672, 674, 675, 676, - 678, 687, 679, 689, 682, 690, 695, 691, 710, 699, + 501, 496, 508, 504, 511, 512, 507, 503, 513, 515, + 518, 520, 521, 523, 522, 525, 526, 528, 530, 538, + 540, 531, 539, 533, 552, 547, 554, 551, 553, 557, + 556, 560, 568, 569, 561, 570, 572, 573, 576, 579, + 588, 589, 590, 574, 581, 591, 585, 593, 594, 595, + 596, 605, 608, 607, 610, 617, 598, 616, 618, 620, + 621, 622, 631, 623, 633, 627, 640, 624, 638, 643, + 632, 641, 646, 650, 651, 658, 645, 661, 662, 663, + 665, 666, 668, 676, 653, 671, 674, 675, 677, 678, + 680, 681, 684, 682, 693, 685, 695, 689, 708, 704, - 700, 701, 702, 711, 704, 712, 713, 726, 731, 721, - 732, 733, 735, 737, 740, 748, 739, 746, 743, 750, - 752, 753, 762, 758, 5927, 757, 760, 773, 766, 774, - 775, 776, 781, 782, 763, 789, 787, 788, 792, 814, - 796, 798, 794, 803, 806, 5927, 804, 808, 838, 810, - 812, 832, 828, 824, 827, 829, 839, 836, 849, 842, - 847, 851, 862, 858, 859, 860, 861, 864, 863, 877, - 872, 870, 799, 874, 889, 875, 882, 886, 887, 892, - 893, 894, 897, 899, 902, 903, 895, 904, 905, 908, - 913, 914, 916, 917, 927, 929, 921, 940, 918, 935, + 697, 716, 705, 706, 712, 718, 710, 719, 726, 727, + 743, 741, 731, 740, 711, 745, 747, 752, 749, 753, + 756, 758, 759, 760, 762, 769, 764, 5953, 766, 774, + 781, 782, 783, 790, 771, 789, 791, 772, 802, 798, + 799, 803, 825, 801, 809, 807, 814, 813, 5953, 815, + 817, 849, 820, 823, 839, 836, 819, 837, 843, 845, + 847, 859, 850, 855, 857, 873, 860, 862, 869, 870, + 874, 872, 884, 880, 886, 888, 890, 897, 892, 893, + 894, 898, 901, 902, 903, 908, 905, 910, 911, 912, + 916, 923, 920, 924, 926, 928, 933, 932, 929, 939, - 942, 943, 937, 944, 947, 950, 951, 952, 953, 961, - 958, 959, 963, 964, 966, 967, 970, 972, 973, 975, - 977, 979, 978, 985, 988, 981, 994, 989, 5927, 996, - 998, 999, 1000, 1001, 1003, 5927, 1004, 1005, 1006, 1014, - 1017, 1016, 1013, 1023, 1027, 1028, 1029, 1030, 1039, 1012, - 1041, 1040, 1036, 1042, 1046, 1048, 1049, 1051, 1052, 1054, - 1055, 1057, 1060, 1077, 5927, 1061, 1064, 1062, 1063, 1070, - 1080, 1089, 1072, 1090, 1088, 1065, 1105, 1092, 1106, 1100, - 1101, 1111, 1102, 1113, 1107, 1116, 1115, 1117, 1118, 1119, - 1120, 1125, 1126, 1131, 5927, 1133, 1134, 1145, 1135, 1143, + 944, 951, 931, 949, 954, 956, 946, 959, 957, 963, + 964, 965, 967, 977, 972, 973, 974, 975, 979, 981, + 985, 983, 986, 987, 989, 994, 993, 1000, 991, 1002, + 1006, 1008, 5953, 1009, 1011, 1012, 1013, 1014, 1015, 5953, + 1017, 1016, 1019, 1024, 1029, 1031, 1021, 1028, 1039, 1040, + 1041, 1044, 1051, 1046, 1049, 1054, 1053, 1056, 1057, 1060, + 1058, 1063, 1065, 1064, 1070, 1071, 1074, 1091, 5953, 1073, + 1083, 1078, 1075, 1084, 1085, 1103, 1101, 1104, 1102, 1106, + 1119, 1114, 1120, 1121, 1076, 1125, 1122, 1127, 1131, 1129, + 1133, 1132, 1134, 1135, 1136, 1138, 1137, 1143, 5953, 1150, - 1132, 1146, 1148, 1149, 1150, 1152, 1153, 1156, 1162, 1172, - 1157, 1174, 1159, 1170, 1175, 1176, 1177, 1178, 1179, 1180, - 1193, 1184, 1186, 1200, 1207, 1203, 1205, 1212, 1190, 1210, - 1209, 1208, 1215, 1216, 1217, 1218, 1220, 1221, 1230, 1228, - 1226, 1229, 1231, 1242, 1233, 1235, 1240, 1237, 1245, 1247, - 1253, 1254, 1250, 1256, 5927, 1263, 1260, 1267, 1262, 1268, - 1272, 1274, 1261, 1276, 1278, 1280, 1281, 1282, 1284, 1287, - 1289, 1290, 1291, 1292, 1301, 1297, 1307, 1314, 1313, 1315, - 1299, 1305, 1324, 1321, 1328, 1327, 1329, 1337, 1325, 1332, - 1323, 1339, 1335, 1340, 1341, 1344, 1347, 1350, 1352, 1359, + 1154, 1161, 1153, 1160, 1162, 1163, 1164, 1077, 1166, 1167, + 1169, 1168, 1173, 1184, 1174, 1188, 1183, 1139, 1185, 1187, + 1189, 1190, 1191, 1192, 1204, 1196, 1206, 1212, 1219, 1215, + 1217, 1224, 1201, 1220, 1221, 1225, 1227, 1228, 1229, 1230, + 1232, 1233, 1242, 1239, 1238, 1240, 1241, 1246, 1254, 1247, + 1249, 1259, 1250, 1260, 1255, 1264, 1265, 1258, 1274, 5953, + 1281, 1276, 1277, 1278, 1279, 1283, 1287, 1290, 1291, 1288, + 1294, 1293, 1296, 1300, 1301, 1302, 1297, 1303, 1305, 1314, + 1318, 1319, 1328, 1320, 1327, 1311, 1330, 1337, 1333, 1340, + 1336, 1341, 1348, 1343, 1345, 1335, 1357, 1349, 1350, 1360, - 1351, 1356, 1366, 1367, 1358, 1369, 1362, 1372, 1373, 1375, - 1376, 1377, 1378, 1385, 1380, 1386, 1382, 1387, 1388, 1389, - 1392, 1390, 1407, 1399, 1400, 1403, 1409, 1410, 1411, 1415, - 1416, 1417, 1418, 1419, 1420, 1423, 1424, 1183, 1425, 1440, - 1426, 1430, 1438, 1441, 1447, 1446, 1450, 1454, 1444, 1456, - 1457, 1458, 1460, 1461, 1465, 1464, 1471, 1468, 1474, 1476, - 1478, 1477, 1480, 1484, 1487, 1481, 5927, 1488, 1495, 1494, - 1496, 1497, 1499, 1501, 1508, 1503, 1505, 1504, 1506, 1510, - 1532, 5927, 1513, 5927, 5927, 1516, 5927, 5927, 1517, 1515, - 1518, 1523, 1535, 1538, 1298, 1525, 1542, 1520, 1553, 1557, + 1352, 1361, 1363, 1364, 1375, 1366, 1371, 1380, 1383, 1373, + 1385, 1377, 1386, 1381, 1389, 1390, 1391, 1392, 1400, 1393, + 1395, 1401, 1402, 1403, 1405, 1406, 1411, 1415, 1413, 1419, + 1414, 1420, 1425, 1422, 1428, 1423, 1430, 1432, 1436, 1434, + 1438, 1437, 1443, 1445, 1447, 1446, 1453, 1455, 1457, 1458, + 1460, 1461, 1465, 1469, 1471, 1473, 1474, 1475, 1477, 1476, + 1480, 1486, 1479, 1485, 1491, 1495, 1492, 1497, 1498, 1501, + 1502, 5953, 1503, 1510, 1505, 1508, 1514, 1515, 1516, 1523, + 1519, 1521, 1518, 1520, 1524, 1546, 5953, 1532, 5953, 5953, + 1531, 5953, 5953, 1529, 1533, 1537, 1550, 1541, 1556, 1549, - 1545, 1546, 1548, 1549, 1560, 1571, 1555, 1572, 1565, 1577, - 1579, 1582, 1581, 1587, 1583, 1588, 1590, 1591, 1593, 1592, - 1596, 1598, 1601, 1602, 1599, 1604, 1605, 1614, 1618, 1610, - 1625, 5927, 1621, 1628, 1635, 1631, 1638, 1630, 1634, 1637, - 1642, 1644, 1639, 1646, 1648, 1649, 1650, 1652, 1654, 1657, - 1661, 1658, 5927, 1659, 1662, 1667, 1666, 1670, 1674, 1606, - 1660, 1678, 1676, 1692, 1680, 1682, 1683, 1684, 1688, 1695, - 5927, 1694, 1700, 1690, 1703, 1701, 1704, 1705, 1707, 1710, - 1709, 1713, 1715, 1714, 1716, 1723, 1728, 1721, 1720, 1726, - 1738, 1727, 1742, 1746, 1731, 1734, 1748, 1749, 1750, 1752, + 1543, 1559, 1552, 1569, 1574, 1530, 1562, 1564, 1570, 1571, + 1577, 1588, 1584, 1589, 1579, 1597, 1595, 1599, 1601, 1603, + 1604, 1607, 1608, 1609, 1611, 1610, 1613, 1617, 1619, 1620, + 1622, 1615, 1623, 1631, 1634, 1636, 1643, 5953, 1641, 1644, + 1653, 1649, 1656, 1648, 1652, 1655, 1660, 1662, 1657, 1664, + 1666, 1667, 1668, 1670, 1672, 1675, 1679, 1676, 5953, 1677, + 1680, 1685, 1684, 1688, 1692, 1694, 1678, 1696, 1698, 1707, + 1699, 1702, 1704, 1709, 177, 1710, 5953, 1712, 1716, 1719, + 1720, 1722, 1724, 1726, 1727, 1728, 1729, 1730, 1624, 1732, + 1733, 1737, 1736, 1735, 1739, 1741, 1751, 1742, 1754, 1761, - 1753, 1755, 1760, 1759, 1762, 1758, 1767, 1769, 1776, 1764, - 1765, 1766, 1779, 1781, 1790, 1786, 1787, 1788, 1797, 1792, - 1794, 1795, 1798, 1807, 1796, 1804, 1809, 1799, 1802, 1814, - 1815, 5927, 1816, 1817, 5927, 1818, 1820, 1842, 1823, 1825, - 1828, 1827, 1830, 1832, 1833, 1835, 1839, 1846, 1862, 1850, - 1865, 1837, 1867, 1854, 1868, 1857, 1859, 1870, 1877, 1885, - 1892, 1875, 1893, 1895, 1876, 1878, 1887, 1906, 1890, 1891, - 1894, 1899, 1900, 1904, 1910, 1903, 1915, 1916, 1922, 1919, - 5927, 1930, 1928, 1927, 1929, 1939, 1936, 1937, 1938, 1940, - 1943, 1950, 1945, 1948, 1952, 1951, 1955, 1953, 1958, 1963, + 1762, 1763, 1764, 1765, 1766, 1767, 1768, 1770, 1775, 1771, + 1780, 1776, 1783, 1794, 1791, 1778, 1781, 1798, 1779, 1804, + 1808, 1806, 1792, 1799, 1813, 1811, 1815, 1816, 1817, 1819, + 1820, 1821, 1823, 1826, 1827, 1828, 1830, 5953, 1829, 1832, + 5953, 1836, 1837, 1859, 1838, 1840, 1842, 1851, 1841, 1861, + 1845, 1855, 1867, 1863, 1879, 1871, 1882, 1874, 1876, 1883, + 1887, 1888, 1884, 1890, 1893, 1900, 1903, 1907, 1901, 1914, + 1909, 1910, 1912, 1932, 1911, 1913, 1920, 1915, 1916, 1919, + 1928, 1921, 1922, 1925, 1937, 1943, 1945, 5953, 1953, 1954, + 1948, 1926, 1956, 1959, 1960, 1843, 1961, 1962, 1969, 1965, - 1965, 1960, 1961, 1968, 5927, 1964, 5927, 1975, 1976, 1979, - 1977, 1981, 1982, 1983, 1985, 5927, 5927, 1987, 1984, 1994, - 2006, 2001, 5927, 1986, 2009, 2011, 2004, 2005, 2010, 2013, - 2016, 2017, 2024, 2020, 2027, 2022, 2023, 2025, 5927, 2033, - 2026, 2038, 2041, 2034, 2044, 2048, 2042, 5927, 2045, 2052, - 2055, 2062, 2058, 2060, 2059, 2063, 2064, 2067, 2070, 2071, - 2072, 2073, 2080, 2082, 2078, 2079, 2087, 2094, 5927, 2081, - 2090, 2101, 2093, 2097, 2100, 2102, 2103, 2104, 2105, 2106, - 2112, 2113, 2114, 2122, 2124, 2119, 2115, 2127, 2123, 2129, - 2128, 2135, 2132, 2136, 2137, 2138, 5927, 2139, 2147, 124, + 1966, 1968, 1971, 1972, 1975, 1976, 1980, 1981, 1977, 1982, + 1993, 5953, 1984, 5953, 1992, 1994, 1996, 1997, 1998, 2002, + 2003, 2004, 5953, 5953, 2005, 2012, 2018, 2007, 2013, 5953, + 2020, 2028, 2029, 2031, 2023, 2024, 2025, 2032, 2035, 2046, + 2038, 2047, 2039, 2048, 2042, 5953, 2049, 2051, 2055, 2057, + 2059, 2061, 2063, 2064, 5953, 2065, 2067, 2073, 2080, 2070, + 2077, 2078, 2081, 2087, 2082, 2085, 2089, 2090, 2092, 2097, + 2101, 2094, 2098, 2102, 2112, 5953, 2108, 2110, 2117, 2113, + 2115, 2116, 2119, 2120, 2121, 2129, 2122, 2123, 2127, 2131, + 2140, 2142, 2137, 2143, 2145, 2135, 2146, 2147, 2153, 2151, - 2141, 2144, 2148, 2149, 2152, 2165, 2151, 2168, 2172, 2169, - 2173, 2176, 2153, 2170, 2177, 2178, 2179, 2180, 2185, 2183, - 5927, 2189, 2190, 2191, 2186, 2197, 2192, 2194, 5927, 2195, - 2206, 2215, 2216, 2205, 2217, 2207, 2218, 2221, 2222, 2224, - 2228, 2229, 2225, 5927, 2232, 2234, 2237, 2235, 2241, 2245, - 2238, 2248, 2250, 2251, 2252, 2253, 2254, 2257, 2256, 2258, - 2259, 2260, 2267, 2271, 2272, 2274, 5927, 2284, 2262, 2273, - 2280, 2285, 2286, 2294, 2287, 2289, 2295, 2296, 2309, 2299, - 2301, 2311, 2315, 2302, 2304, 2325, 2321, 2324, 2330, 2320, - 2333, 2335, 2323, 2327, 2337, 2336, 2339, 2347, 2342, 2354, + 2155, 2156, 2157, 5953, 2158, 2162, 256, 2165, 2163, 2168, + 2166, 2167, 2173, 2170, 2187, 2189, 2186, 2192, 2188, 2184, + 2185, 2195, 2196, 2197, 2201, 2202, 2203, 5953, 2205, 2206, + 2207, 2209, 2212, 2210, 2221, 5953, 2213, 2223, 2232, 2227, + 2215, 2233, 2219, 2239, 2241, 2242, 2243, 2244, 2245, 2246, + 5953, 2252, 2248, 2254, 2255, 2258, 2260, 2261, 2266, 2267, + 2268, 2271, 2269, 2272, 2273, 2274, 2276, 2277, 2280, 2288, + 2278, 2289, 2290, 2291, 5953, 2300, 2292, 2296, 2301, 2302, + 2305, 2314, 2310, 2312, 2315, 2318, 2330, 2320, 2316, 2337, + 2322, 2327, 2336, 2340, 2341, 2342, 2350, 2344, 2354, 2356, - 2355, 2352, 2358, 2350, 2371, 2376, 2367, 5927, 2365, 2375, - 2363, 2377, 2385, 2380, 2382, 2383, 2389, 2388, 2391, 2392, - 2399, 2394, 2396, 2400, 2403, 2401, 2409, 2405, 2411, 2412, - 2420, 2413, 2422, 2351, 5927, 2424, 2425, 2416, 2429, 2432, - 2426, 2434, 2439, 2437, 2441, 2443, 2445, 2447, 2448, 2449, - 2450, 2452, 2454, 2453, 5927, 2457, 2458, 2463, 2465, 2466, - 2472, 2475, 2478, 2476, 2482, 2483, 2484, 2485, 5927, 2492, - 2493, 2490, 2494, 2496, 2497, 2499, 2502, 2503, 5927, 2504, - 2506, 2513, 2514, 2509, 5927, 2517, 2512, 2518, 2519, 2520, - 2521, 2527, 2522, 2525, 2530, 2535, 2537, 2533, 2541, 5927, + 2348, 2352, 2357, 2358, 2362, 2360, 2363, 2375, 2377, 2379, + 2372, 2373, 2385, 2397, 2388, 5953, 2392, 2383, 2390, 2400, + 2407, 2380, 2405, 2403, 2404, 2411, 2412, 2414, 2421, 2418, + 2416, 2420, 2422, 2423, 2426, 2425, 2429, 2433, 2440, 2432, + 2442, 2444, 5953, 2445, 2450, 2449, 2451, 2453, 2436, 2458, + 2461, 2459, 2463, 2465, 2467, 2469, 2470, 2471, 2472, 2474, + 2476, 2475, 5953, 2479, 2480, 2485, 2487, 2488, 2494, 2497, + 2500, 2498, 2504, 2505, 2506, 2507, 5953, 2514, 2515, 2512, + 2516, 2518, 2519, 2521, 2524, 2525, 5953, 2526, 2528, 2535, + 2536, 2531, 5953, 2539, 2534, 2540, 2541, 2542, 2543, 2549, - 2543, 2553, 2545, 2549, 2551, 2554, 2555, 2557, 2561, 2565, - 2560, 5927, 2577, 2576, 2573, 2587, 2564, 2578, 2579, 2585, - 2582, 2588, 2589, 5927, 2591, 2592, 2594, 2595, 2598, 2599, - 2601, 2613, 2603, 2606, 2608, 2611, 2614, 2616, 2618, 2621, - 2619, 2627, 2630, 2631, 2633, 2634, 2636, 2637, 2644, 2647, - 2649, 2651, 5927, 2654, 2655, 2656, 2643, 2646, 2658, 2662, - 2663, 2666, 2667, 2671, 2668, 2670, 2678, 2680, 2681, 2683, - 2685, 2687, 2688, 2690, 2691, 2692, 2693, 2700, 2698, 2696, - 2705, 2702, 2707, 2714, 2709, 2715, 2716, 2717, 2718, 2719, - 2723, 2724, 2726, 2727, 2731, 2742, 2743, 2733, 2744, 2745, + 2544, 2547, 2552, 2557, 2559, 2555, 2563, 5953, 2565, 2575, + 2567, 2571, 2573, 2576, 2577, 2579, 2583, 2587, 2582, 5953, + 2599, 2598, 2595, 2609, 2586, 2600, 2601, 2607, 2604, 2610, + 2611, 5953, 2613, 2614, 2616, 2617, 2620, 2621, 2623, 2635, + 2625, 2628, 2630, 2633, 2636, 2638, 2640, 2643, 2641, 2649, + 2652, 2653, 2655, 2659, 2656, 2660, 2663, 2671, 2672, 2673, + 2675, 5953, 2678, 2679, 2680, 2664, 2684, 2685, 2686, 2687, + 2690, 2691, 2692, 2694, 2695, 2702, 2712, 2703, 2704, 2707, + 2709, 2713, 2715, 2716, 2717, 2718, 2725, 2724, 2721, 2733, + 2730, 2732, 2740, 2731, 2739, 2741, 2742, 2743, 2744, 2748, - 2746, 2747, 5927, 2750, 2752, 2751, 2756, 2761, 2758, 2768, - 2764, 2765, 2769, 2773, 2776, 2770, 2775, 2781, 2788, 2784, - 5927, 2785, 5927, 2786, 2787, 2794, 2797, 2789, 5927, 2799, - 5927, 2802, 2811, 2796, 2800, 5927, 2814, 2804, 2806, 2818, - 2808, 2813, 2820, 2821, 2822, 2827, 2825, 2829, 2830, 2831, - 2833, 2835, 2837, 2841, 2846, 2848, 2838, 2849, 2840, 2854, - 2857, 2851, 2859, 5927, 2867, 2860, 2863, 2868, 2869, 2871, - 2872, 2874, 2875, 2880, 2876, 2881, 2882, 2889, 2892, 2890, - 2893, 2904, 5927, 2894, 2906, 2899, 2901, 5927, 2909, 2903, - 2910, 2915, 2912, 2917, 2919, 2920, 2921, 2924, 2925, 2937, + 2745, 2751, 2752, 2756, 2767, 2768, 2770, 2759, 2753, 2769, + 2775, 5953, 2771, 2778, 2779, 2780, 2784, 2785, 2792, 2787, + 2788, 2795, 2803, 2804, 2789, 2797, 2791, 2812, 2814, 5953, + 2798, 5953, 2805, 2817, 2818, 2827, 2810, 5953, 2824, 5953, + 2825, 2832, 2820, 2829, 5953, 2834, 2833, 2835, 2838, 2840, + 2841, 2842, 2843, 2846, 2849, 2847, 2851, 2852, 2856, 2854, + 2858, 2859, 2863, 2870, 2867, 2872, 2873, 2875, 2879, 2880, + 2881, 2882, 5953, 2886, 2883, 2888, 2889, 2891, 2893, 2894, + 2898, 2896, 2899, 2904, 2906, 2907, 2910, 2915, 2923, 2914, + 2928, 5953, 2921, 2925, 2926, 2930, 5953, 2932, 2929, 2938, - 2938, 2928, 2939, 5927, 2941, 2944, 2929, 2948, 2952, 2956, - 2930, 2959, 2953, 2957, 2963, 2964, 2965, 2966, 2967, 2974, - 2975, 2972, 2979, 2971, 2978, 2981, 2985, 2987, 2988, 2989, - 2992, 2993, 2991, 2997, 3001, 2996, 2998, 2999, 3000, 5927, - 3012, 3002, 3014, 3023, 3015, 3017, 3004, 3020, 3025, 3026, - 3029, 3033, 3027, 5927, 3032, 5927, 3035, 3037, 3049, 3051, - 3044, 3039, 3055, 3054, 3046, 3061, 3062, 3063, 3064, 3065, - 3066, 3069, 3070, 3076, 3077, 3073, 3074, 3078, 3084, 3086, - 3087, 3089, 5927, 5927, 3090, 3092, 3095, 3093, 3097, 3099, - 3107, 3105, 3098, 3111, 3112, 3119, 5927, 3120, 3121, 3123, + 2940, 2933, 2931, 2942, 2943, 2950, 2944, 2948, 2952, 2960, + 2959, 2962, 5953, 2963, 2961, 2967, 2971, 2975, 2973, 2976, + 2979, 2988, 2984, 2983, 2985, 2986, 2987, 2990, 2997, 3000, + 2999, 3001, 2998, 3006, 3009, 3010, 3002, 3012, 3013, 3014, + 3016, 5953, 3017, 3018, 3025, 3022, 3023, 3024, 3026, 5953, + 3035, 3036, 3039, 3040, 3037, 3045, 3027, 3046, 3048, 3050, + 3053, 3049, 3054, 5953, 3062, 5953, 3055, 3063, 3068, 3072, + 3069, 3073, 3075, 3084, 3074, 3076, 3085, 3088, 3079, 3086, + 3092, 3089, 3094, 3096, 3110, 3100, 3097, 3107, 3109, 3111, + 3112, 3114, 5953, 5953, 3113, 3115, 3118, 3116, 3121, 3124, - 3124, 3131, 3126, 3128, 3139, 3135, 3143, 3141, 5927, 3138, - 3142, 3152, 3148, 3150, 3155, 5927, 3154, 5927, 3151, 3157, - 3160, 3163, 3164, 3165, 3166, 3167, 3174, 3175, 3185, 3171, - 3182, 3183, 3186, 3187, 3194, 3189, 3190, 3191, 5927, 3193, - 3196, 3199, 3207, 3208, 3210, 3214, 3197, 5927, 3204, 3218, - 3221, 3222, 3224, 3226, 3227, 3228, 3230, 3232, 3229, 3231, - 3239, 3237, 3236, 3246, 3256, 3247, 3258, 5927, 3259, 3253, - 3266, 3268, 3261, 3263, 3269, 3270, 3271, 3274, 3276, 3275, - 3277, 3279, 3281, 3278, 3288, 3282, 3295, 3284, 3298, 3304, - 3305, 3285, 3301, 3308, 3309, 3312, 3311, 3315, 3318, 3322, + 3122, 3131, 3134, 3135, 3136, 3145, 5953, 3141, 3142, 3146, + 3148, 3164, 3147, 3150, 3166, 3162, 3169, 3170, 5953, 3151, + 3159, 3178, 3161, 3177, 3181, 5953, 3179, 5953, 3182, 3183, + 3184, 3185, 3190, 3191, 3193, 3195, 3189, 3205, 3206, 3198, + 3196, 3197, 3208, 3212, 3219, 3214, 3217, 3220, 5953, 3222, + 3223, 3224, 3226, 3229, 3230, 3232, 3237, 5953, 3239, 3245, + 3240, 3246, 3242, 3248, 3249, 3250, 3252, 3253, 3251, 3255, + 3262, 3266, 3267, 3268, 3272, 3273, 3280, 5953, 3277, 3281, + 3289, 3287, 3284, 3291, 3292, 3288, 3294, 3297, 3299, 3298, + 3300, 3301, 3304, 3302, 3305, 3306, 3318, 3320, 3321, 3311, - 3319, 3331, 3332, 3323, 3326, 3335, 3336, 3343, 3338, 5927, - 3348, 3328, 3351, 3349, 3350, 3355, 3356, 3358, 3359, 3360, - 3361, 3368, 3363, 5927, 3370, 3365, 3375, 3376, 3367, 3390, - 3385, 3366, 3388, 3392, 3389, 3395, 3393, 3397, 3398, 3401, - 3402, 5927, 5927, 3404, 3405, 3407, 5927, 3408, 3406, 3418, - 3411, 3414, 3421, 3238, 3420, 3423, 3424, 3426, 3428, 5927, - 3432, 3439, 3431, 3434, 3446, 3448, 3454, 3438, 3447, 3445, - 3450, 3455, 3457, 3458, 3459, 3461, 3470, 3463, 3466, 3468, - 5927, 3471, 3473, 3474, 3478, 3475, 3482, 5927, 3480, 3486, - 3487, 3489, 3501, 3492, 3502, 3504, 3484, 3506, 3507, 3509, + 3328, 3312, 3324, 3329, 3331, 3332, 3338, 3339, 3342, 3347, + 3335, 3349, 3356, 3337, 3344, 3360, 3362, 3367, 3350, 5953, + 3369, 3364, 3374, 3370, 3372, 3377, 3378, 3386, 3371, 3373, + 3381, 3394, 3387, 5953, 3397, 3389, 3398, 3399, 3402, 3411, + 3404, 3392, 3406, 3409, 3414, 3415, 3418, 3419, 3420, 3423, + 3424, 5953, 5953, 3426, 3428, 3430, 5953, 3433, 3429, 3437, + 3435, 3436, 3432, 3445, 3446, 3443, 3448, 3451, 3454, 5953, + 3456, 3464, 3459, 3460, 3468, 3471, 3473, 3475, 3474, 3466, + 3463, 3476, 3478, 3484, 3485, 3489, 3493, 3492, 3491, 3494, + 5953, 3495, 3496, 3499, 3501, 3497, 3505, 5953, 3503, 3509, - 3508, 3510, 3517, 3512, 3516, 3523, 3524, 3515, 5927, 3529, - 3531, 3532, 3534, 3536, 3545, 3543, 3546, 3541, 3548, 3549, - 3556, 5927, 3551, 3554, 3557, 3555, 3565, 3560, 3568, 3564, - 5927, 3566, 3570, 3572, 5927, 3571, 3583, 3586, 3588, 3573, - 3581, 3590, 3592, 3594, 3595, 5927, 3598, 5927, 3599, 3579, - 3605, 5927, 3601, 3607, 3609, 3611, 3608, 3615, 3616, 3623, - 3612, 3618, 3624, 3625, 3626, 3628, 3635, 3631, 3634, 3636, - 3637, 5927, 3638, 3640, 3646, 3647, 3652, 3641, 3645, 3657, - 3656, 5927, 5927, 3660, 5927, 3664, 3663, 3665, 5927, 3668, - 3670, 3677, 3672, 3673, 3676, 3686, 3680, 5927, 3675, 3687, + 3517, 3510, 3508, 3521, 3524, 3527, 3528, 3529, 3531, 3532, + 3533, 3534, 3536, 3541, 3539, 3546, 3547, 3538, 5953, 3551, + 3552, 3555, 3558, 3562, 3565, 3572, 3573, 3569, 3571, 3570, + 3580, 5953, 3577, 3579, 3578, 3581, 3591, 3586, 3593, 3584, + 5953, 3588, 3592, 3594, 5953, 3598, 3602, 3605, 3610, 3597, + 3613, 3612, 3614, 3615, 3616, 5953, 3622, 5953, 3620, 3624, + 3628, 5953, 3626, 3630, 3632, 3634, 3631, 3639, 3641, 3648, + 3635, 3643, 3645, 3649, 3650, 3651, 3659, 3657, 3658, 3660, + 3662, 5953, 3665, 3661, 3664, 3669, 3671, 3672, 3674, 3681, + 3683, 5953, 5953, 3688, 5953, 3682, 3689, 3690, 5953, 3692, - 3690, 3692, 3693, 3694, 3696, 3697, 3695, 3698, 3699, 5927, - 3700, 3703, 3711, 3704, 3712, 3716, 3723, 3717, 5927, 3724, - 3725, 3726, 3730, 3731, 5927, 3733, 5927, 3734, 3736, 3739, - 3741, 3740, 5927, 3746, 3747, 3750, 3753, 3755, 3754, 3757, - 3758, 3764, 3765, 3772, 3768, 3767, 3769, 5927, 3770, 3774, - 3776, 3783, 3771, 3778, 3787, 3790, 3791, 3792, 3797, 3794, - 3801, 3803, 3805, 3807, 3799, 5927, 3809, 3811, 3810, 3825, - 3820, 3815, 5927, 3816, 3830, 3832, 5927, 3823, 3822, 3834, - 3839, 3826, 3833, 3840, 3841, 3845, 5927, 3846, 3847, 3848, - 3849, 3852, 3853, 5927, 5927, 3861, 5927, 3863, 3850, 3864, + 3694, 3697, 3693, 3698, 3700, 3704, 3701, 5953, 3711, 3712, + 3713, 3715, 3716, 3717, 3719, 3721, 3720, 3723, 3722, 5953, + 3725, 3727, 3735, 3726, 3730, 3740, 3742, 3736, 5953, 3748, + 3749, 3752, 3754, 3755, 5953, 3757, 5953, 3758, 3760, 3761, + 3763, 3764, 5953, 3772, 3767, 3778, 3768, 3775, 3782, 3785, + 3786, 3771, 3779, 3793, 3792, 3788, 3795, 5953, 3796, 3798, + 3805, 3806, 3802, 3800, 3814, 3811, 3819, 3810, 3823, 3813, + 3827, 3829, 3824, 3831, 3832, 5953, 3834, 3835, 3838, 3845, + 3840, 3841, 5953, 3842, 3847, 3851, 5953, 3848, 3855, 3857, + 3863, 3858, 3860, 3864, 3865, 3867, 5953, 3869, 3871, 3868, - 3865, 3866, 3872, 3871, 3875, 3877, 3874, 3878, 3885, 3886, - 3895, 3898, 3902, 3897, 3901, 3887, 5927, 5927, 3904, 3905, - 3908, 3911, 3912, 3914, 3915, 3922, 3918, 3924, 3928, 3929, - 3936, 5927, 3935, 3921, 3938, 5927, 3919, 3932, 3940, 3943, - 3945, 3946, 3949, 3947, 3948, 3951, 3955, 3952, 3957, 3961, - 3959, 3962, 3960, 3970, 3968, 3969, 3977, 5927, 3978, 3971, - 3980, 3982, 3983, 3984, 3988, 3989, 3991, 5927, 3993, 3995, - 3997, 3998, 3992, 4002, 4013, 4017, 4019, 4010, 4020, 4021, - 4023, 4027, 4024, 5927, 4031, 4028, 4030, 4034, 4038, 4040, - 4041, 4043, 4044, 4052, 4049, 4053, 4055, 4057, 4045, 4061, + 3872, 3884, 3885, 5953, 5953, 3886, 5953, 3887, 3873, 3891, + 3890, 3870, 3898, 3900, 3901, 3903, 3897, 3909, 3912, 3911, + 3920, 3921, 3928, 3923, 3925, 3918, 5953, 5953, 3930, 3931, + 3927, 3935, 3939, 3937, 3941, 3948, 3945, 3943, 3952, 3953, + 3960, 5953, 3961, 3947, 3962, 5953, 3955, 3963, 3956, 3969, + 3970, 3964, 3971, 3972, 3973, 3974, 3977, 3981, 3983, 3986, + 3988, 3989, 3990, 3994, 3993, 3995, 4003, 5953, 3997, 4000, + 4004, 4007, 4008, 4010, 4012, 4015, 4016, 5953, 4011, 4018, + 4021, 4022, 4020, 4025, 4039, 4042, 4044, 4031, 4036, 4047, + 4045, 4051, 4053, 5953, 4055, 4052, 4056, 4059, 4062, 4064, - 4063, 4047, 5927, 4067, 4069, 4065, 4074, 4071, 4075, 4076, - 4082, 4086, 4078, 4080, 4087, 4091, 5927, 4088, 4092, 4094, - 4096, 4102, 4093, 4099, 4103, 5927, 4105, 4107, 4110, 4111, - 4113, 4116, 4119, 4120, 4123, 4122, 4126, 5927, 4128, 4130, - 4133, 4136, 4137, 4139, 4142, 4141, 5927, 4143, 4149, 4151, - 4158, 4153, 4162, 4159, 4163, 4155, 4157, 4169, 4173, 4175, - 4176, 4177, 4165, 4187, 4189, 4188, 5927, 4171, 5927, 4190, - 4193, 4201, 4196, 4178, 5927, 4202, 4203, 4207, 4208, 4204, - 5927, 4209, 4210, 4212, 4216, 5927, 4211, 4215, 4217, 4222, - 4225, 4229, 5927, 4232, 4233, 4235, 4244, 4245, 4242, 4243, + 4065, 4067, 4068, 4070, 4073, 4074, 4078, 4081, 4075, 4082, + 4083, 4085, 5953, 4087, 4094, 4090, 4096, 4098, 4099, 4100, + 4101, 4107, 4108, 4110, 4111, 4113, 5953, 4114, 4115, 4118, + 4119, 4121, 4122, 4124, 4128, 5953, 4132, 4126, 4129, 4135, + 4137, 4140, 4142, 4144, 4147, 4148, 4151, 5953, 4152, 4157, + 4160, 4153, 4159, 4161, 4170, 4163, 5953, 4174, 4176, 4173, + 4183, 4166, 4186, 4185, 4191, 4167, 4184, 4195, 4193, 4194, + 4199, 4200, 4201, 4210, 4211, 4212, 5953, 4206, 5953, 4213, + 4217, 4220, 4223, 4207, 5953, 4219, 4221, 4231, 4225, 4233, + 5953, 4234, 4228, 4236, 4238, 5953, 4245, 4247, 4239, 4241, - 4246, 4248, 4249, 4250, 4251, 4259, 4254, 4256, 5927, 4258, - 4264, 4266, 4270, 4271, 4272, 4273, 4279, 4274, 5927, 4276, - 4282, 4283, 4284, 4285, 4286, 4288, 4296, 4291, 4294, 5927, - 4295, 4299, 4307, 3996, 4308, 5927, 5927, 4300, 4315, 4317, - 4305, 4318, 5927, 4309, 4327, 4322, 4324, 4326, 5927, 5927, - 4329, 5927, 4325, 5927, 4330, 4332, 5927, 5927, 4333, 4336, - 4337, 4340, 4347, 5927, 4350, 5927, 4357, 4352, 4339, 4341, - 4354, 5927, 4356, 4358, 4361, 5927, 4364, 4371, 4366, 4367, - 5927, 4369, 4372, 4374, 5927, 4376, 4379, 4380, 4381, 4386, - 4383, 4387, 4390, 4393, 4394, 4396, 4397, 4398, 4409, 4411, + 4255, 4256, 5953, 4261, 4262, 4258, 4249, 4270, 4267, 4268, + 4271, 4269, 4273, 4274, 4275, 4283, 4278, 4279, 5953, 4285, + 4288, 4295, 4296, 4290, 4280, 4298, 4304, 4297, 5953, 4306, + 4305, 4307, 4308, 4309, 4312, 4314, 4321, 4317, 4316, 5953, + 4320, 4324, 4337, 4318, 4328, 5953, 5953, 4333, 4338, 4340, + 4335, 4341, 5953, 4344, 4351, 4346, 4350, 4353, 5953, 5953, + 4355, 5953, 4352, 5953, 4357, 4356, 5953, 5953, 4359, 4360, + 4363, 4369, 4366, 5953, 4376, 5953, 4373, 4377, 4379, 4380, + 4382, 5953, 4381, 4384, 4389, 5953, 4383, 4391, 4390, 4394, + 5953, 4398, 4393, 4399, 5953, 4403, 4406, 4410, 4401, 4407, - 4413, 4415, 4416, 4400, 4419, 4420, 4422, 4425, 4426, 4427, - 4429, 4431, 4432, 4434, 4436, 4439, 4440, 4441, 4442, 4443, - 4444, 4446, 4453, 4456, 4458, 4457, 4459, 4461, 4460, 4462, - 4464, 4468, 4470, 4471, 5927, 4469, 4472, 4475, 4402, 4478, - 4488, 4490, 4481, 4497, 4499, 5927, 4501, 5927, 4503, 4489, - 4505, 4491, 5927, 4506, 4509, 4508, 4511, 4512, 4513, 4515, - 4514, 4518, 4519, 4522, 5927, 4525, 4520, 4529, 4540, 5927, - 4532, 4544, 4528, 4535, 4545, 4547, 4548, 4549, 4554, 4550, - 4556, 4558, 4565, 4560, 4561, 4563, 4568, 4551, 4564, 4572, - 4579, 4575, 4583, 4587, 5927, 4580, 5927, 4588, 4589, 4590, + 4413, 4420, 4411, 4414, 4421, 4424, 4423, 4426, 4435, 4437, + 4439, 4441, 4430, 4427, 4444, 4446, 4450, 4448, 4452, 4453, + 4454, 4456, 4457, 4459, 4462, 4463, 4465, 4468, 4466, 4467, + 4479, 4469, 4471, 4481, 4483, 4472, 4482, 4486, 4485, 4490, + 4493, 4488, 4495, 4496, 5953, 4500, 4501, 4503, 4505, 4506, + 4507, 4514, 4516, 4522, 4524, 5953, 4527, 5953, 4529, 4513, + 4532, 4517, 5953, 4533, 4534, 4535, 4538, 4537, 4539, 4540, + 4541, 4544, 4545, 4547, 5953, 4550, 4551, 4555, 4566, 5953, + 4560, 4568, 4554, 4556, 4570, 4571, 4575, 4576, 4579, 4578, + 4581, 4583, 4590, 4585, 4587, 4588, 4591, 4589, 4592, 4599, - 4591, 4593, 4592, 4594, 5927, 5927, 4595, 4600, 4605, 4601, - 4596, 4607, 4617, 5927, 4609, 4618, 4620, 4610, 5927, 4625, - 4626, 4628, 5927, 4629, 4630, 4631, 4633, 4634, 4637, 4638, - 4640, 4642, 4644, 4648, 5927, 5927, 5927, 5927, 4650, 4652, - 4655, 4657, 4659, 4660, 4662, 4664, 4661, 5927, 4666, 5927, - 5927, 4668, 4675, 4667, 4677, 4678, 4679, 4683, 4685, 5927, - 4684, 4689, 4690, 4687, 4697, 4701, 4703, 4704, 4688, 4705, - 4713, 4711, 4714, 4712, 4717, 4719, 4721, 5927, 5927, 4724, - 4726, 4728, 4735, 4733, 4736, 4745, 4740, 4742, 4743, 4746, - 4748, 4730, 4755, 4759, 4757, 4754, 5927, 4758, 4764, 5927, + 4598, 4606, 4608, 4614, 5953, 4601, 5953, 4615, 4611, 4616, + 4617, 4618, 4619, 4621, 5953, 5953, 4622, 4626, 4632, 4633, + 4625, 4635, 4641, 5953, 4636, 4646, 4653, 4644, 5953, 4627, + 4638, 4655, 5953, 4649, 4656, 4659, 4667, 4660, 4669, 4670, + 4662, 4664, 4672, 4674, 5953, 5953, 5953, 5953, 4676, 4678, + 4682, 4683, 4685, 4686, 4688, 4690, 4687, 5953, 4692, 5953, + 5953, 4694, 4701, 4693, 4703, 4704, 4705, 4709, 4711, 5953, + 4710, 4715, 4716, 4713, 4723, 4727, 4729, 4730, 4714, 4731, + 4739, 4737, 4740, 4738, 4743, 4745, 4747, 5953, 5953, 4750, + 4752, 4754, 4761, 4759, 4762, 4771, 4766, 4768, 4769, 4772, - 4760, 5927, 4765, 4768, 4732, 4769, 4771, 4774, 4775, 4777, - 5927, 5927, 4778, 4779, 4781, 4785, 4787, 4789, 4788, 4791, - 4792, 5927, 4793, 5927, 4794, 4801, 4796, 4802, 4810, 4813, - 4815, 4817, 4812, 4818, 5927, 4819, 4821, 5927, 4822, 4824, - 4825, 5927, 4829, 4832, 4836, 5927, 4842, 4833, 4839, 5927, - 4846, 5927, 4843, 4847, 4848, 4855, 5927, 4850, 4856, 5927, - 4859, 4862, 4864, 4853, 5927, 4851, 5927, 4865, 4872, 4873, - 4876, 4868, 4878, 4879, 4880, 4881, 4888, 4887, 4889, 5927, - 5927, 4897, 4884, 4890, 4894, 4899, 4906, 4901, 4904, 4903, - 5927, 5927, 4911, 5927, 4909, 4912, 5927, 4913, 4918, 4919, + 4774, 4756, 4781, 4785, 4783, 4780, 5953, 4784, 4790, 5953, + 4786, 5953, 4791, 4794, 4758, 4795, 4797, 4800, 4801, 4803, + 5953, 5953, 4804, 4805, 4807, 4811, 4813, 4815, 4814, 4817, + 4818, 5953, 4819, 5953, 4820, 4827, 4822, 4828, 4836, 4839, + 4841, 4843, 4838, 4844, 5953, 4845, 4847, 5953, 4848, 4850, + 4851, 5953, 4855, 4858, 4862, 5953, 4868, 4859, 4865, 5953, + 4872, 5953, 4869, 4873, 4874, 4881, 5953, 4876, 4882, 5953, + 4885, 4888, 4890, 4879, 5953, 4877, 5953, 4891, 4898, 4899, + 4902, 4894, 4904, 4905, 4906, 4907, 4914, 4913, 4915, 5953, + 5953, 4923, 4910, 4916, 4920, 4925, 4932, 4927, 4930, 4929, - 4920, 4922, 4923, 4927, 4929, 4930, 4931, 4932, 4933, 4939, - 4951, 4935, 4949, 4955, 4957, 4959, 4961, 4953, 4963, 4964, - 4965, 4966, 4967, 4970, 5927, 4972, 4973, 4974, 5927, 4978, - 4979, 4981, 4983, 5927, 4994, 4989, 4995, 4996, 5927, 4982, - 5002, 4999, 4997, 5007, 5014, 5010, 5009, 5927, 5927, 5927, - 5011, 5020, 5927, 5025, 5012, 5015, 5017, 5927, 5021, 5027, - 5927, 5927, 5028, 5029, 5031, 5042, 5927, 5032, 5927, 5033, - 5927, 5041, 5043, 5049, 5047, 5927, 5052, 5058, 5927, 5061, - 5064, 5066, 5067, 5055, 5068, 5069, 5927, 5077, 5073, 5079, - 5081, 5070, 5072, 5085, 5082, 5089, 5086, 5092, 5927, 5094, + 5953, 5953, 4937, 5953, 4935, 4938, 5953, 4939, 4944, 4945, + 4946, 4948, 4949, 4953, 4955, 4956, 4957, 4958, 4959, 4965, + 4977, 4961, 4975, 4981, 4983, 4985, 4987, 4979, 4989, 4990, + 4991, 4992, 4993, 4996, 5953, 4998, 4999, 5000, 5953, 5004, + 5005, 5007, 5009, 5953, 5020, 5015, 5021, 5022, 5953, 5008, + 5028, 5025, 5023, 5033, 5040, 5036, 5035, 5953, 5953, 5953, + 5037, 5046, 5953, 5051, 5038, 5041, 5043, 5953, 5047, 5053, + 5953, 5953, 5054, 5055, 5057, 5068, 5953, 5058, 5953, 5059, + 5953, 5067, 5069, 5075, 5073, 5953, 5078, 5084, 5953, 5087, + 5090, 5092, 5093, 5081, 5094, 5095, 5953, 5103, 5099, 5105, - 5096, 5097, 5103, 5095, 5105, 5099, 5927, 5107, 5927, 5108, - 5109, 5112, 5115, 5110, 5113, 5037, 5118, 5117, 5128, 5125, - 5927, 5130, 5134, 5927, 5131, 5927, 5136, 5927, 5137, 5138, - 5139, 5140, 5927, 5142, 5146, 5147, 5148, 5927, 5149, 5151, - 5157, 5927, 5927, 5158, 5168, 5159, 5160, 5172, 5174, 5161, - 5176, 5169, 5177, 5163, 5185, 5184, 5187, 5188, 5190, 5191, - 5192, 5927, 5927, 5927, 5197, 5196, 5204, 5201, 5202, 5212, - 5207, 5927, 5210, 5213, 5211, 5220, 5217, 5222, 5927, 5219, - 5223, 5224, 5226, 5228, 5229, 5233, 5927, 5237, 5244, 5240, - 5232, 5247, 5251, 5254, 5256, 5257, 5927, 5259, 5927, 5927, + 5107, 5096, 5098, 5111, 5108, 5115, 5112, 5118, 5953, 5120, + 5122, 5123, 5129, 5121, 5131, 5125, 5953, 5133, 5953, 5134, + 5135, 5138, 5141, 5136, 5139, 5063, 5144, 5143, 5154, 5151, + 5953, 5156, 5160, 5953, 5157, 5953, 5162, 5953, 5163, 5164, + 5165, 5166, 5953, 5168, 5172, 5173, 5174, 5953, 5175, 5177, + 5183, 5953, 5953, 5184, 5194, 5185, 5186, 5198, 5200, 5187, + 5202, 5195, 5203, 5189, 5211, 5210, 5213, 5214, 5216, 5217, + 5218, 5953, 5953, 5953, 5223, 5222, 5230, 5227, 5228, 5238, + 5233, 5953, 5236, 5239, 5237, 5246, 5243, 5248, 5953, 5245, + 5249, 5250, 5252, 5254, 5255, 5259, 5953, 5263, 5270, 5266, - 5260, 5927, 5261, 5263, 5264, 5265, 5927, 5268, 5270, 5269, - 5271, 5273, 5927, 5281, 5274, 5276, 5277, 5927, 5927, 5288, - 5927, 5291, 5292, 5293, 5302, 5298, 5300, 5304, 5301, 5927, - 5299, 5305, 5309, 5311, 5312, 5927, 5313, 5315, 5316, 5317, - 5320, 5324, 5326, 5327, 5328, 5927, 5330, 5322, 5345, 5341, - 5927, 5329, 5347, 5927, 5927, 5332, 5351, 5352, 5927, 5927, - 5927, 5354, 5927, 5358, 5364, 5368, 5372, 5355, 5927, 5374, - 5363, 5371, 5927, 5367, 5375, 5377, 5379, 5927, 5927, 5376, - 5383, 5380, 5388, 5389, 5927, 5391, 5393, 5398, 5406, 5408, - 5396, 5410, 5412, 5419, 5392, 5400, 5414, 5416, 5417, 5423, + 5258, 5273, 5277, 5280, 5282, 5283, 5953, 5285, 5953, 5953, + 5286, 5953, 5287, 5289, 5290, 5291, 5953, 5294, 5296, 5295, + 5297, 5299, 5953, 5307, 5300, 5302, 5303, 5953, 5953, 5314, + 5953, 5317, 5318, 5319, 5328, 5324, 5326, 5330, 5327, 5953, + 5325, 5331, 5335, 5337, 5338, 5953, 5339, 5341, 5342, 5343, + 5346, 5350, 5352, 5353, 5354, 5953, 5356, 5348, 5371, 5367, + 5953, 5355, 5373, 5953, 5953, 5358, 5377, 5378, 5953, 5953, + 5953, 5380, 5953, 5384, 5390, 5394, 5398, 5381, 5953, 5400, + 5389, 5397, 5953, 5393, 5401, 5403, 5405, 5953, 5953, 5402, + 5409, 5406, 5414, 5415, 5953, 5417, 5419, 5424, 5432, 5434, - 5420, 5427, 5436, 5432, 5434, 5441, 5442, 5927, 5927, 5444, - 5927, 5927, 5446, 5449, 5451, 5453, 5455, 5457, 5459, 5927, - 5394, 5461, 5462, 5463, 5464, 5927, 5466, 5468, 5465, 5469, - 5474, 5472, 5476, 5478, 5927, 5927, 5470, 5487, 5479, 5492, - 5481, 5927, 5494, 5489, 5495, 5496, 5498, 5500, 5503, 5927, - 5502, 5504, 5927, 5927, 5506, 5927, 5927, 5927, 5927, 5927, - 5927, 5927, 5927, 5507, 5927, 5511, 5515, 5523, 5526, 5927, - 5512, 5520, 5431, 5516, 5527, 5927, 5528, 5531, 5532, 5538, - 5530, 5533, 5539, 5543, 5546, 5544, 5547, 5548, 5549, 5553, - 5550, 5554, 5556, 5927, 5927, 5927, 5555, 5557, 5567, 5559, + 5422, 5436, 5438, 5445, 5418, 5426, 5440, 5442, 5443, 5449, + 5446, 5453, 5462, 5458, 5460, 5467, 5468, 5953, 5953, 5470, + 5953, 5953, 5472, 5475, 5477, 5479, 5481, 5483, 5485, 5953, + 5420, 5487, 5488, 5489, 5490, 5953, 5492, 5494, 5491, 5495, + 5500, 5498, 5502, 5504, 5953, 5953, 5496, 5513, 5505, 5518, + 5507, 5953, 5520, 5515, 5521, 5522, 5524, 5526, 5529, 5953, + 5528, 5530, 5953, 5953, 5532, 5953, 5953, 5953, 5953, 5953, + 5953, 5953, 5953, 5533, 5953, 5537, 5541, 5549, 5552, 5953, + 5538, 5546, 5457, 5542, 5553, 5953, 5554, 5557, 5558, 5564, + 5556, 5559, 5565, 5569, 5572, 5570, 5573, 5574, 5575, 5579, - 5576, 5578, 5581, 5583, 5570, 5573, 5584, 5585, 5586, 5588, - 5592, 5600, 5595, 5596, 5597, 5598, 5604, 5599, 5601, 5606, - 5927, 5610, 5927, 5611, 5927, 5927, 5616, 5621, 5619, 5612, - 5623, 5630, 5626, 5628, 5632, 5633, 5635, 5637, 5927, 5639, - 5642, 5927, 5643, 5644, 5927, 5645, 5647, 5649, 5646, 5650, - 5653, 5656, 5664, 5655, 5927, 5927, 5658, 5666, 5667, 5671, - 5674, 5681, 5676, 5680, 5682, 5683, 5673, 5695, 5927, 5691, - 5693, 5697, 5927, 5699, 5694, 5700, 5701, 5702, 5710, 5705, - 5706, 5927, 5708, 5927, 5712, 5714, 5717, 5715, 5716, 5718, - 5727, 5725, 5729, 5927, 5732, 5736, 5733, 5738, 5740, 5743, + 5576, 5580, 5582, 5953, 5953, 5953, 5581, 5583, 5593, 5585, + 5602, 5604, 5607, 5609, 5596, 5599, 5610, 5611, 5612, 5614, + 5618, 5626, 5621, 5622, 5623, 5624, 5630, 5625, 5627, 5632, + 5953, 5636, 5953, 5637, 5953, 5953, 5642, 5647, 5645, 5638, + 5649, 5656, 5652, 5654, 5658, 5659, 5661, 5663, 5953, 5665, + 5668, 5953, 5669, 5670, 5953, 5671, 5673, 5675, 5672, 5676, + 5679, 5682, 5690, 5681, 5953, 5953, 5684, 5692, 5693, 5697, + 5700, 5707, 5702, 5706, 5708, 5709, 5699, 5721, 5953, 5717, + 5719, 5723, 5953, 5725, 5720, 5726, 5727, 5728, 5736, 5731, + 5732, 5953, 5734, 5953, 5738, 5740, 5743, 5741, 5742, 5744, - 5744, 5745, 5747, 5749, 5753, 5757, 5759, 5760, 5750, 5763, - 5761, 5927, 5771, 5762, 5927, 5772, 5773, 5765, 5774, 5775, - 5927, 5783, 5779, 5785, 5786, 5789, 5790, 5927, 5792, 5795, - 5796, 5927, 5800, 5927, 5927, 5801, 5799, 5802, 5808, 5810, - 5927, 5927, 5927, 5835, 5842, 5849, 5856, 5863, 88, 5870, - 5877, 5884, 5891, 5898, 5905, 5912, 5919 + 5753, 5751, 5755, 5953, 5758, 5762, 5759, 5764, 5766, 5769, + 5770, 5771, 5773, 5775, 5779, 5783, 5785, 5786, 5776, 5789, + 5787, 5953, 5797, 5788, 5953, 5798, 5799, 5791, 5800, 5801, + 5953, 5809, 5805, 5811, 5812, 5815, 5816, 5953, 5818, 5821, + 5822, 5953, 5826, 5953, 5953, 5827, 5825, 5828, 5834, 5836, + 5953, 5953, 5953, 5861, 5868, 5875, 5882, 5889, 88, 5896, + 5903, 5910, 5917, 5924, 5931, 5938, 5945 } ; -static const flex_int16_t yy_def[3058] = +static const flex_int16_t yy_def[3068] = { 0, - 3043, 1, 3044, 3044, 3045, 3045, 3046, 3046, 3047, 3047, - 3048, 3048, 3043, 3049, 3043, 3043, 3043, 3043, 3050, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3051, 3043, 3043, 3043, 3051, 3052, 3043, 3043, - 3043, 3052, 3053, 3043, 3043, 3043, 3043, 3053, 3054, 3043, - 3043, 3043, 3054, 3055, 3043, 3056, 3043, 3055, 3055, 3049, - 3049, 3043, 3057, 3050, 3057, 3050, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3053, 1, 3054, 3054, 3055, 3055, 3056, 3056, 3057, 3057, + 3058, 3058, 3053, 3059, 3053, 3053, 3053, 3053, 3060, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3061, 3053, 3053, 3053, 3061, 3062, 3053, 3053, + 3053, 3062, 3063, 3053, 3053, 3053, 3053, 3063, 3064, 3053, + 3053, 3053, 3064, 3065, 3053, 3066, 3053, 3065, 3065, 3059, + 3059, 3053, 3067, 3060, 3067, 3060, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3051, 3051, 3052, 3052, 3053, 3053, 3043, 3054, 3054, 3055, - 3055, 3056, 3056, 3055, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3061, 3061, 3062, 3062, 3063, 3063, 3053, 3064, 3064, + 3065, 3065, 3066, 3066, 3065, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3055, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3065, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3055, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3065, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3055, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3065, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3055, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3043, 3043, 3049, 3043, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3065, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3053, + 3059, 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3055, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3065, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3055, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3053, 3059, 3059, 3065, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3043, 3049, 3043, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3053, 3059, 3053, 3059, 3059, 3059, 3053, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3043, 3049, 3043, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3053, 3053, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3043, 3043, - 3049, 3043, 3049, 3043, 3049, 3049, 3043, 3043, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3053, 3053, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3053, 3053, + 3059, 3053, 3059, 3053, 3059, 3059, 3053, 3053, 3059, 3059, + 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3043, 3043, 3043, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3043, + 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3053, 3053, 3053, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3043, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3043, - 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3043, 3049, 3043, 3049, 3049, 3043, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3053, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3053, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3053, + 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3043, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3043, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, - 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, + 3053, 3053, 3059, 3053, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3053, 3053, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3053, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, + 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3043, 3049, 3043, 3049, 3043, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3043, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3043, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3043, 3043, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3053, 3059, 3053, 3059, 3053, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, - 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3043, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3043, 3043, 3049, 3049, 3049, 3043, 3043, - 3043, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3043, 3043, 3049, - 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3053, 3053, + 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3053, 3059, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3053, 3053, + 3053, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3053, 3053, 3059, + 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3043, 3049, - 3043, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3043, 3043, 3049, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3049, 3043, 3049, 3049, 3049, 3049, 3043, - 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3043, 3043, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3053, 3059, + 3053, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3053, 3053, 3059, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3059, 3053, 3059, 3059, 3059, 3059, 3053, + 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3043, 3049, 3043, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3043, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3043, 3043, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, - 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, 3049, + 3059, 3059, 3059, 3053, 3053, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3053, 3059, 3053, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3053, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3053, 3053, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, + 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, - 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, 3049, - 3049, 3043, 3049, 3049, 3043, 3049, 3049, 3049, 3049, 3049, - 3043, 3049, 3049, 3049, 3049, 3049, 3049, 3043, 3049, 3049, - 3049, 3043, 3049, 3043, 3043, 3049, 3049, 3049, 3049, 3049, - 3043, 3043, 0, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043 + 3059, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, 3059, + 3059, 3053, 3059, 3059, 3053, 3059, 3059, 3059, 3059, 3059, + 3053, 3059, 3059, 3059, 3059, 3059, 3059, 3053, 3059, 3059, + 3059, 3053, 3059, 3053, 3053, 3059, 3059, 3059, 3059, 3059, + 3053, 3053, 0, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053 } ; -static const flex_int16_t yy_nxt[5968] = +static const flex_int16_t yy_nxt[5994] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1432,657 +1435,661 @@ static const flex_int16_t yy_nxt[5968] = 51, 47, 51, 70, 47, 70, 70, 52, 70, 52, 54, 55, 56, 57, 70, 18, 54, 55, 56, 57, 71, 18, 58, 60, 61, 62, 71, 82, 58, 60, - 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, + 61, 62, 72, 71, 63, 103, 73, 92, 70, 71, 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, + 75, 71, 75, 68, 105, 158, 104, 93, 75, 76, + 142, 142, 69, 15, 16, 17, 65, 66, 67, 71, 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, - 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 71, 80, 85, 88, 69, 86, 89, 71, 90, 91, + 81, 71, 94, 71, 96, 141, 71, 152, 113, 71, + 99, 119, 97, 100, 71, 110, 95, 71, 106, 111, + 101, 155, 102, 98, 71, 144, 107, 164, 144, 114, + 149, 149, 108, 115, 71, 112, 109, 71, 134, 116, + 71, 120, 117, 72, 203, 121, 71, 73, 135, 118, + 71, 125, 136, 137, 126, 122, 123, 71, 124, 71, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 130, 127, 131, 71, 138, 128, 129, 71, 139, 159, + 156, 132, 140, 146, 951, 146, 146, 133, 146, 75, + 71, 75, 75, 151, 75, 151, 151, 70, 151, 70, + 70, 154, 70, 71, 75, 71, 75, 75, 70, 75, + 71, 71, 172, 71, 157, 75, 76, 71, 71, 166, + 161, 162, 165, 160, 71, 71, 71, 174, 71, 71, + 167, 177, 71, 71, 163, 71, 168, 71, 169, 152, + 178, 179, 176, 170, 171, 173, 175, 71, 180, 71, + 181, 183, 71, 182, 185, 71, 191, 184, 187, 71, + 71, 188, 71, 71, 71, 194, 186, 196, 71, 71, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 71, 197, 202, 71, 189, 190, 71, 201, 193, 71, + 205, 192, 71, 204, 71, 195, 71, 198, 199, 206, + 209, 71, 71, 200, 71, 214, 71, 211, 71, 207, + 208, 212, 210, 71, 71, 71, 71, 71, 216, 226, + 222, 213, 71, 219, 71, 71, 215, 217, 71, 225, + 71, 223, 152, 218, 221, 224, 227, 71, 228, 220, + 71, 71, 71, 235, 233, 71, 71, 71, 231, 234, + 71, 241, 237, 71, 240, 229, 236, 242, 230, 232, + 71, 238, 71, 142, 142, 243, 144, 244, 251, 144, + 149, 149, 71, 239, 245, 146, 283, 146, 146, 151, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 290, 71, 288, - 289, 285, 291, 284, 286, 71, 71, 280, 71, 287, - 294, 297, 71, 298, 292, 299, 293, 71, 295, 301, + 146, 151, 151, 75, 151, 75, 75, 152, 75, 71, + 246, 248, 71, 71, 247, 154, 71, 71, 71, 71, + 71, 252, 71, 71, 71, 258, 249, 254, 253, 261, + 250, 255, 71, 260, 257, 71, 262, 256, 71, 71, + 265, 266, 259, 264, 267, 71, 71, 71, 71, 268, + 71, 71, 275, 71, 270, 71, 71, 263, 277, 271, + 278, 71, 71, 281, 272, 280, 269, 276, 279, 71, + 273, 274, 71, 71, 71, 286, 71, 284, 285, 71, + 71, 71, 293, 71, 291, 292, 288, 294, 287, 289, + 71, 71, 282, 71, 290, 297, 300, 71, 301, 295, - 303, 71, 296, 304, 71, 71, 71, 300, 302, 71, - 307, 71, 71, 309, 310, 71, 71, 308, 305, 71, - 71, 71, 311, 71, 312, 306, 71, 313, 71, 71, - 71, 71, 315, 71, 71, 319, 71, 317, 71, 71, - 324, 71, 320, 314, 318, 325, 71, 71, 71, 321, - 316, 328, 322, 326, 330, 71, 333, 327, 323, 71, - 71, 71, 71, 329, 71, 71, 335, 336, 71, 71, - 339, 340, 342, 331, 332, 338, 71, 71, 71, 334, - 71, 71, 71, 337, 71, 345, 346, 71, 341, 71, - 347, 349, 343, 71, 353, 344, 71, 71, 71, 151, + 302, 296, 71, 298, 304, 306, 71, 299, 307, 71, + 71, 71, 303, 305, 71, 310, 71, 71, 312, 313, + 71, 71, 311, 308, 71, 71, 71, 314, 71, 315, + 309, 71, 316, 71, 71, 71, 71, 318, 71, 71, + 322, 71, 320, 71, 71, 327, 71, 323, 317, 321, + 328, 71, 71, 71, 324, 319, 331, 325, 329, 333, + 71, 336, 330, 326, 71, 71, 71, 71, 332, 71, + 71, 338, 339, 71, 71, 342, 343, 345, 334, 335, + 341, 71, 71, 71, 337, 71, 71, 71, 340, 71, + 348, 349, 71, 344, 71, 350, 352, 346, 71, 356, - 350, 71, 71, 71, 71, 352, 71, 360, 358, 356, - 361, 354, 355, 71, 348, 71, 71, 351, 71, 364, - 362, 365, 357, 363, 71, 71, 71, 359, 71, 71, - 71, 71, 71, 371, 372, 71, 374, 369, 366, 71, - 71, 71, 368, 373, 367, 375, 71, 377, 71, 71, - 376, 71, 378, 71, 71, 370, 379, 381, 71, 71, - 384, 71, 382, 386, 380, 388, 71, 385, 383, 71, - 71, 71, 387, 71, 71, 391, 71, 389, 393, 71, - 71, 392, 396, 71, 71, 71, 398, 71, 71, 71, - 399, 71, 71, 401, 390, 71, 397, 408, 395, 394, + 347, 71, 71, 71, 152, 353, 71, 71, 71, 71, + 355, 71, 363, 361, 359, 364, 357, 358, 71, 351, + 71, 71, 354, 71, 367, 365, 368, 360, 366, 71, + 71, 71, 362, 71, 71, 71, 71, 71, 374, 375, + 71, 377, 372, 369, 71, 71, 71, 371, 376, 370, + 378, 71, 380, 71, 71, 379, 71, 381, 71, 71, + 373, 382, 384, 71, 71, 387, 71, 385, 389, 383, + 391, 71, 388, 386, 71, 71, 71, 390, 71, 71, + 394, 71, 392, 396, 71, 397, 395, 71, 71, 71, + 71, 71, 402, 71, 71, 71, 403, 71, 71, 393, - 71, 403, 71, 71, 71, 405, 400, 407, 71, 402, - 404, 409, 71, 71, 71, 71, 410, 71, 420, 419, - 421, 417, 406, 71, 71, 71, 71, 423, 426, 427, - 424, 418, 411, 428, 71, 412, 422, 425, 429, 71, - 413, 414, 415, 416, 71, 71, 71, 430, 71, 436, - 71, 431, 71, 71, 432, 434, 71, 435, 437, 71, - 433, 71, 438, 71, 440, 71, 71, 439, 441, 445, - 71, 71, 446, 71, 447, 71, 71, 463, 450, 71, - 451, 444, 442, 448, 452, 443, 71, 71, 71, 71, - 449, 455, 453, 456, 71, 71, 464, 458, 454, 465, + 150, 405, 71, 401, 398, 399, 71, 407, 71, 400, + 71, 409, 404, 406, 411, 412, 408, 71, 71, 71, + 413, 71, 414, 71, 71, 71, 427, 421, 410, 71, + 423, 71, 71, 438, 424, 148, 425, 422, 415, 71, + 71, 416, 430, 431, 71, 428, 417, 418, 419, 420, + 432, 429, 426, 71, 71, 433, 71, 434, 71, 440, + 71, 435, 71, 442, 436, 71, 71, 439, 437, 71, + 441, 71, 71, 71, 444, 71, 449, 71, 450, 71, + 451, 443, 71, 445, 71, 71, 467, 71, 455, 452, + 448, 446, 454, 447, 71, 71, 71, 147, 461, 453, - 71, 71, 71, 457, 462, 71, 466, 71, 467, 71, - 459, 71, 71, 460, 468, 461, 71, 71, 469, 71, - 482, 71, 479, 71, 517, 71, 470, 71, 471, 477, - 472, 480, 478, 481, 493, 484, 483, 151, 492, 494, - 71, 71, 71, 473, 495, 71, 474, 496, 475, 71, - 476, 71, 71, 485, 486, 71, 502, 499, 497, 498, - 71, 500, 71, 487, 71, 488, 489, 490, 501, 506, - 491, 71, 71, 71, 71, 71, 71, 71, 505, 507, - 504, 503, 512, 71, 514, 71, 515, 71, 71, 511, - 71, 513, 509, 510, 508, 71, 519, 523, 524, 71, + 456, 457, 71, 71, 71, 462, 459, 458, 460, 468, + 469, 71, 71, 466, 71, 71, 71, 470, 463, 471, + 71, 464, 71, 465, 145, 472, 71, 71, 71, 473, + 71, 486, 152, 71, 481, 483, 71, 474, 71, 475, + 485, 476, 484, 482, 488, 497, 498, 487, 496, 71, + 71, 499, 71, 501, 477, 500, 71, 478, 71, 479, + 71, 480, 71, 71, 489, 490, 506, 504, 71, 502, + 71, 503, 71, 71, 491, 71, 492, 493, 494, 505, + 510, 495, 71, 71, 509, 71, 71, 71, 508, 507, + 511, 518, 516, 71, 519, 513, 512, 71, 515, 71, - 71, 518, 71, 516, 522, 71, 71, 71, 71, 534, - 71, 521, 71, 520, 529, 71, 71, 71, 71, 531, - 532, 71, 526, 527, 528, 525, 71, 71, 146, 71, - 71, 71, 530, 536, 71, 533, 535, 537, 540, 543, - 71, 539, 71, 546, 538, 544, 545, 547, 71, 541, - 71, 542, 548, 71, 549, 71, 71, 71, 553, 550, - 71, 551, 555, 71, 71, 71, 71, 558, 559, 556, - 552, 71, 71, 554, 71, 560, 71, 71, 557, 71, - 71, 565, 563, 71, 564, 71, 71, 561, 71, 566, - 71, 71, 71, 571, 71, 567, 572, 562, 71, 574, + 517, 71, 514, 71, 523, 71, 71, 71, 527, 528, + 71, 71, 526, 521, 71, 71, 71, 522, 71, 520, + 533, 71, 525, 71, 71, 71, 538, 535, 536, 71, + 524, 530, 531, 71, 529, 532, 71, 71, 534, 71, + 547, 71, 71, 537, 71, 71, 71, 549, 539, 541, + 544, 540, 71, 543, 548, 542, 550, 71, 552, 71, + 143, 545, 71, 546, 71, 553, 551, 71, 554, 71, + 71, 555, 71, 558, 556, 560, 71, 71, 71, 557, + 71, 563, 561, 559, 564, 71, 71, 71, 71, 565, + 71, 562, 71, 568, 71, 570, 71, 569, 71, 71, - 570, 71, 71, 573, 569, 568, 575, 71, 577, 71, - 579, 71, 71, 71, 71, 576, 71, 71, 71, 71, - 581, 589, 582, 591, 578, 71, 71, 71, 584, 71, - 71, 592, 580, 588, 583, 585, 71, 586, 587, 590, - 71, 71, 71, 71, 596, 600, 599, 602, 594, 71, - 593, 595, 71, 71, 71, 71, 597, 601, 598, 71, - 605, 71, 71, 604, 71, 71, 608, 71, 71, 609, - 71, 603, 611, 71, 71, 71, 71, 71, 71, 625, - 610, 606, 607, 71, 612, 71, 614, 634, 144, 613, - 71, 615, 624, 71, 623, 626, 616, 628, 617, 627, + 71, 566, 71, 571, 71, 576, 71, 71, 567, 580, + 572, 577, 575, 71, 579, 71, 573, 574, 578, 71, + 582, 71, 71, 584, 71, 71, 71, 71, 71, 71, + 71, 594, 71, 586, 71, 587, 581, 71, 596, 597, + 589, 71, 71, 583, 71, 585, 593, 588, 590, 592, + 591, 595, 71, 71, 71, 598, 601, 71, 604, 71, + 599, 607, 71, 600, 71, 606, 71, 71, 602, 71, + 71, 71, 603, 71, 610, 613, 71, 71, 71, 605, + 609, 614, 616, 71, 71, 608, 71, 71, 71, 71, + 71, 71, 611, 615, 612, 630, 71, 71, 71, 617, - 631, 71, 71, 71, 618, 71, 619, 629, 632, 620, - 621, 630, 635, 71, 71, 71, 622, 633, 71, 71, - 71, 637, 638, 636, 71, 641, 71, 643, 71, 71, - 71, 71, 71, 71, 640, 644, 639, 649, 71, 71, - 642, 645, 650, 646, 71, 71, 71, 151, 71, 647, - 653, 655, 656, 648, 652, 654, 71, 651, 71, 71, - 657, 71, 71, 71, 659, 71, 71, 663, 665, 71, - 71, 658, 71, 660, 667, 71, 661, 666, 664, 668, - 662, 670, 669, 71, 671, 71, 672, 71, 71, 71, - 71, 71, 71, 71, 676, 675, 71, 71, 684, 71, + 619, 71, 633, 618, 71, 620, 628, 631, 667, 645, + 621, 629, 622, 632, 71, 71, 71, 71, 623, 71, + 624, 634, 637, 625, 626, 635, 640, 71, 639, 636, + 627, 638, 71, 71, 71, 71, 643, 641, 71, 646, + 71, 648, 71, 642, 71, 71, 71, 71, 71, 71, + 71, 71, 71, 654, 650, 677, 71, 644, 655, 649, + 647, 651, 658, 71, 652, 657, 71, 152, 661, 653, + 656, 660, 659, 71, 71, 71, 71, 71, 662, 71, + 71, 71, 71, 668, 670, 672, 71, 71, 663, 671, + 665, 673, 666, 669, 664, 675, 71, 71, 71, 674, - 681, 677, 673, 71, 674, 682, 71, 807, 678, 680, - 683, 679, 685, 71, 686, 687, 71, 688, 71, 689, - 71, 71, 71, 71, 690, 71, 691, 692, 71, 71, - 71, 71, 695, 71, 71, 696, 694, 700, 699, 71, - 693, 71, 71, 71, 71, 701, 71, 703, 71, 705, - 71, 706, 698, 71, 697, 71, 708, 702, 71, 712, - 71, 709, 707, 71, 704, 710, 71, 71, 711, 71, - 718, 714, 715, 71, 71, 71, 71, 716, 713, 721, - 71, 71, 719, 720, 717, 71, 723, 71, 724, 71, - 726, 71, 725, 71, 71, 71, 732, 71, 728, 730, + 71, 71, 71, 71, 71, 71, 681, 680, 676, 71, + 152, 686, 678, 682, 71, 679, 687, 71, 689, 71, + 683, 685, 688, 684, 690, 71, 691, 692, 71, 693, + 71, 694, 71, 71, 71, 695, 696, 71, 71, 697, + 71, 71, 71, 71, 700, 71, 71, 701, 699, 705, + 704, 71, 71, 71, 71, 71, 706, 698, 708, 71, + 71, 711, 71, 71, 703, 712, 702, 71, 71, 707, + 709, 71, 71, 71, 718, 714, 713, 71, 71, 710, + 715, 717, 720, 721, 716, 722, 719, 71, 724, 71, + 71, 71, 71, 726, 71, 727, 71, 729, 725, 730, - 71, 722, 71, 71, 71, 71, 729, 727, 738, 733, - 71, 71, 71, 736, 71, 731, 739, 737, 71, 735, - 71, 734, 864, 740, 741, 742, 71, 71, 71, 743, - 745, 747, 746, 744, 71, 749, 71, 71, 71, 748, - 71, 71, 71, 750, 752, 71, 758, 751, 71, 753, - 71, 754, 71, 71, 71, 756, 757, 71, 755, 761, - 71, 763, 760, 71, 71, 71, 767, 759, 765, 71, - 764, 71, 71, 770, 769, 71, 768, 762, 771, 71, - 71, 772, 71, 766, 774, 71, 71, 776, 71, 71, - 71, 71, 782, 71, 775, 71, 773, 783, 71, 71, + 71, 71, 723, 71, 71, 731, 71, 71, 734, 71, + 71, 736, 738, 71, 71, 71, 71, 728, 71, 732, + 735, 744, 733, 739, 71, 742, 741, 71, 150, 737, + 743, 71, 71, 71, 740, 746, 749, 745, 747, 748, + 71, 71, 751, 71, 753, 750, 71, 755, 71, 71, + 71, 754, 756, 71, 71, 758, 71, 752, 71, 757, + 759, 71, 71, 71, 764, 71, 148, 762, 763, 760, + 71, 761, 766, 71, 71, 769, 71, 71, 767, 71, + 771, 765, 773, 770, 71, 768, 71, 776, 71, 775, + 71, 774, 777, 71, 71, 772, 71, 778, 71, 71, - 71, 71, 71, 71, 777, 71, 778, 779, 784, 780, - 785, 781, 71, 71, 791, 786, 71, 789, 790, 787, - 71, 788, 71, 71, 71, 793, 792, 796, 71, 71, - 71, 71, 71, 71, 804, 794, 71, 71, 71, 71, - 805, 795, 797, 71, 798, 142, 803, 799, 800, 801, - 802, 71, 808, 71, 71, 810, 806, 71, 809, 71, - 71, 813, 811, 71, 812, 814, 815, 71, 816, 71, - 71, 71, 817, 71, 71, 818, 819, 71, 151, 820, - 825, 71, 822, 824, 71, 821, 823, 71, 826, 71, - 71, 71, 832, 71, 71, 827, 828, 71, 833, 835, + 780, 782, 71, 71, 71, 71, 71, 788, 71, 781, + 789, 779, 783, 71, 71, 71, 71, 790, 71, 71, + 784, 785, 797, 786, 71, 787, 71, 71, 71, 791, + 792, 795, 71, 71, 793, 71, 71, 794, 71, 796, + 798, 71, 802, 71, 799, 71, 800, 71, 810, 71, + 71, 71, 801, 803, 805, 811, 71, 804, 71, 71, + 71, 806, 807, 809, 808, 815, 71, 813, 71, 812, + 71, 71, 814, 71, 71, 816, 820, 819, 71, 822, + 821, 818, 71, 823, 71, 817, 71, 71, 71, 152, + 71, 825, 71, 71, 830, 826, 831, 828, 71, 71, - 71, 71, 838, 836, 829, 830, 834, 71, 71, 71, - 71, 831, 71, 840, 71, 844, 71, 71, 71, 71, - 837, 71, 841, 71, 845, 846, 71, 839, 71, 71, - 71, 71, 843, 71, 859, 847, 71, 842, 71, 858, - 861, 856, 71, 849, 848, 71, 857, 860, 71, 862, - 850, 71, 863, 867, 851, 71, 865, 852, 71, 71, - 868, 71, 71, 876, 853, 854, 71, 855, 71, 866, - 71, 869, 870, 71, 871, 882, 880, 872, 71, 878, - 877, 151, 873, 881, 71, 71, 883, 879, 874, 875, - 71, 885, 71, 884, 71, 71, 71, 886, 887, 888, + 824, 827, 829, 832, 71, 71, 833, 834, 71, 838, + 71, 71, 839, 841, 71, 71, 71, 844, 71, 835, + 840, 71, 836, 71, 842, 846, 837, 71, 71, 71, + 850, 71, 71, 71, 71, 843, 71, 71, 845, 847, + 851, 852, 71, 71, 71, 71, 71, 849, 882, 853, + 71, 864, 865, 848, 71, 868, 71, 855, 854, 71, + 862, 863, 71, 71, 856, 71, 866, 867, 857, 71, + 869, 858, 71, 870, 871, 71, 874, 71, 859, 860, + 147, 861, 71, 71, 71, 873, 872, 71, 875, 876, + 71, 877, 71, 887, 878, 884, 883, 71, 885, 879, - 71, 71, 889, 71, 71, 71, 71, 892, 890, 71, - 896, 71, 71, 895, 71, 71, 899, 71, 71, 71, - 891, 903, 905, 71, 893, 894, 897, 71, 898, 901, - 900, 71, 906, 934, 71, 909, 904, 907, 71, 908, - 902, 71, 910, 71, 71, 912, 913, 71, 71, 911, - 71, 71, 71, 914, 916, 71, 917, 71, 915, 71, - 918, 71, 71, 71, 923, 71, 920, 71, 926, 921, - 71, 71, 71, 71, 71, 71, 924, 919, 925, 71, - 71, 928, 922, 71, 929, 930, 932, 71, 931, 71, - 927, 71, 933, 71, 940, 71, 71, 71, 935, 938, + 888, 71, 71, 890, 889, 880, 881, 891, 71, 886, + 71, 892, 71, 893, 71, 894, 71, 71, 896, 895, + 71, 71, 71, 71, 71, 899, 71, 903, 71, 897, + 71, 902, 71, 71, 906, 71, 71, 71, 910, 898, + 908, 965, 900, 901, 71, 904, 905, 71, 912, 71, + 913, 916, 911, 907, 71, 914, 71, 71, 909, 915, + 917, 71, 71, 919, 920, 71, 71, 918, 71, 71, + 71, 921, 923, 71, 924, 71, 922, 71, 925, 71, + 71, 71, 930, 71, 927, 71, 933, 928, 71, 71, + 71, 71, 71, 71, 931, 926, 932, 71, 71, 935, - 936, 71, 937, 71, 939, 71, 943, 71, 71, 947, - 941, 945, 948, 71, 71, 942, 71, 71, 71, 946, - 71, 950, 71, 71, 949, 944, 71, 71, 71, 71, - 961, 956, 958, 71, 71, 951, 71, 952, 953, 71, - 71, 71, 954, 955, 71, 959, 963, 71, 960, 957, - 962, 71, 964, 965, 967, 71, 971, 966, 969, 71, - 968, 71, 71, 71, 970, 71, 71, 978, 71, 980, - 973, 71, 71, 71, 982, 71, 983, 71, 71, 71, - 71, 972, 71, 974, 988, 976, 979, 975, 977, 71, - 986, 981, 71, 984, 71, 990, 985, 991, 987, 71, + 929, 71, 936, 937, 939, 71, 938, 71, 934, 71, + 940, 71, 71, 947, 945, 71, 942, 71, 943, 946, + 71, 941, 71, 71, 944, 71, 952, 954, 955, 71, + 948, 950, 71, 71, 953, 71, 949, 71, 957, 71, + 71, 71, 71, 71, 968, 71, 71, 145, 71, 71, + 71, 963, 71, 956, 71, 71, 958, 959, 969, 960, + 970, 962, 961, 966, 71, 967, 964, 71, 972, 974, + 973, 971, 975, 976, 71, 71, 71, 71, 71, 71, + 71, 71, 985, 71, 71, 978, 980, 987, 71, 71, + 989, 71, 71, 71, 71, 977, 71, 979, 986, 981, - 71, 71, 992, 71, 995, 71, 997, 71, 71, 71, - 71, 71, 71, 989, 994, 71, 999, 71, 993, 1000, - 151, 1002, 71, 1003, 1001, 996, 998, 71, 71, 71, - 71, 71, 1006, 71, 1004, 1005, 71, 1018, 71, 1021, - 71, 71, 1019, 71, 1009, 71, 71, 1007, 71, 1023, - 71, 1010, 71, 1008, 1011, 71, 1020, 1026, 1012, 71, - 1013, 1024, 1025, 71, 1014, 1033, 1015, 71, 1022, 1028, - 71, 1016, 71, 1027, 1029, 71, 1017, 1030, 71, 1036, - 71, 71, 1031, 71, 1038, 1034, 1037, 1044, 71, 71, - 71, 71, 1042, 1039, 1032, 1035, 1041, 1040, 71, 1043, + 983, 990, 982, 984, 71, 71, 993, 71, 991, 988, + 992, 71, 71, 996, 994, 998, 995, 71, 997, 71, + 1002, 71, 999, 1000, 71, 1001, 71, 1004, 71, 71, + 71, 1007, 152, 71, 71, 1006, 71, 1010, 1009, 71, + 71, 71, 71, 71, 1003, 71, 1013, 1005, 1008, 71, + 71, 71, 1025, 71, 71, 71, 71, 1026, 71, 1016, + 1012, 1011, 1014, 1028, 71, 1084, 1015, 143, 71, 1017, + 1027, 1018, 71, 1031, 71, 1019, 71, 1020, 1030, 1029, + 71, 1021, 1032, 1022, 71, 1033, 1035, 71, 1023, 71, + 1034, 1036, 71, 1024, 1041, 71, 71, 71, 1037, 1038, - 71, 1045, 1046, 71, 71, 71, 71, 71, 71, 1058, - 1048, 1047, 71, 71, 1061, 1057, 71, 71, 1049, 71, - 1050, 1059, 1062, 71, 1060, 1051, 149, 1052, 71, 71, - 1064, 1063, 71, 1053, 1067, 71, 1068, 1069, 1054, 1055, - 71, 71, 71, 71, 1070, 1056, 1073, 1065, 1066, 71, - 71, 71, 71, 71, 1074, 1072, 71, 1079, 71, 1071, - 1076, 71, 1077, 71, 71, 71, 71, 1080, 71, 1075, - 1082, 71, 1078, 71, 71, 1091, 71, 71, 71, 1089, - 1081, 71, 1084, 1086, 1083, 1087, 1085, 1088, 71, 71, - 71, 1090, 71, 1092, 71, 71, 71, 71, 71, 71, + 71, 71, 1040, 71, 1042, 1044, 71, 1049, 1043, 1052, + 1050, 1039, 1048, 71, 71, 1045, 71, 1047, 1046, 1051, + 71, 1053, 71, 71, 71, 71, 71, 71, 71, 71, + 1068, 1065, 71, 71, 71, 71, 1064, 1069, 71, 71, + 1067, 71, 1055, 1056, 1054, 71, 1057, 1066, 1071, 1070, + 71, 1058, 1080, 1059, 1072, 1075, 71, 1073, 71, 1060, + 1077, 71, 1076, 1081, 1061, 1062, 71, 71, 1074, 71, + 1078, 1063, 71, 71, 71, 71, 1087, 1082, 71, 71, + 1079, 71, 71, 1085, 71, 71, 1090, 1088, 71, 71, + 71, 1086, 1083, 71, 71, 71, 1097, 71, 1089, 1092, - 71, 1099, 1093, 1100, 1096, 1101, 1102, 71, 1103, 1094, - 1098, 1095, 1097, 1104, 71, 1106, 1107, 71, 71, 71, - 1111, 1108, 71, 71, 71, 1109, 71, 1105, 1110, 71, - 71, 1117, 1112, 71, 1119, 71, 71, 71, 71, 71, - 71, 1121, 1115, 1113, 1114, 1116, 71, 71, 147, 1123, - 1120, 71, 1122, 1118, 71, 71, 1125, 71, 71, 1126, - 1124, 71, 1128, 1127, 1131, 71, 1129, 1130, 71, 1134, - 1135, 71, 71, 71, 1133, 71, 71, 71, 1139, 1138, - 71, 1132, 1136, 71, 71, 71, 71, 1145, 1143, 1146, - 1137, 71, 71, 71, 71, 71, 1147, 1148, 1140, 1144, + 1099, 1094, 1095, 1096, 1091, 71, 71, 71, 1093, 71, + 71, 71, 1098, 1100, 1112, 71, 71, 71, 71, 1101, + 71, 1107, 1108, 1109, 1104, 71, 71, 1102, 1103, 1105, + 1106, 71, 1111, 71, 1110, 1115, 71, 71, 71, 1113, + 1116, 71, 71, 1117, 71, 71, 1118, 1119, 71, 1114, + 1120, 71, 71, 1125, 1127, 71, 1122, 1121, 1123, 71, + 71, 71, 71, 1124, 71, 1131, 1129, 1128, 71, 1130, + 71, 1126, 71, 1133, 71, 1134, 71, 71, 71, 1136, + 71, 1137, 1143, 71, 1139, 1132, 71, 1142, 1135, 1138, + 71, 71, 1141, 71, 71, 71, 1140, 1146, 71, 1144, - 71, 1150, 1141, 71, 1142, 1149, 71, 71, 1153, 1155, - 71, 1154, 1151, 71, 71, 71, 71, 71, 71, 71, - 1159, 1160, 1156, 1152, 1157, 71, 71, 71, 71, 1165, - 1161, 1166, 71, 1168, 1158, 71, 71, 71, 1163, 1169, - 71, 71, 71, 1162, 1173, 71, 1164, 1167, 71, 71, - 71, 71, 71, 1172, 71, 1170, 1171, 71, 1175, 1179, - 71, 71, 71, 1174, 71, 71, 71, 1183, 1180, 1176, - 146, 1178, 1181, 1182, 1184, 1187, 1177, 1185, 71, 1188, - 1192, 71, 71, 71, 1186, 71, 71, 1189, 1190, 71, - 71, 71, 71, 71, 1191, 1194, 71, 1193, 71, 71, + 71, 1147, 71, 71, 1153, 71, 1151, 71, 1154, 1145, + 71, 71, 1155, 1148, 71, 71, 1156, 1149, 1152, 1158, + 1157, 71, 1150, 71, 1161, 71, 71, 1163, 71, 71, + 71, 1162, 71, 71, 71, 71, 71, 1167, 1164, 1159, + 71, 1165, 71, 1160, 71, 1168, 1169, 1173, 71, 1174, + 71, 1166, 1171, 71, 1170, 71, 71, 1177, 71, 71, + 71, 1176, 1181, 1172, 71, 1175, 71, 1178, 71, 71, + 71, 71, 1180, 1179, 1187, 71, 71, 1183, 71, 71, + 71, 71, 1182, 71, 1191, 1193, 71, 71, 1184, 1192, + 1186, 1189, 1188, 1190, 1195, 1185, 1196, 71, 71, 71, - 1197, 1200, 71, 71, 71, 71, 1195, 71, 71, 1210, - 71, 1196, 1206, 1198, 1203, 1199, 1204, 1201, 71, 71, - 71, 1207, 1202, 1208, 1211, 1205, 1209, 1212, 71, 71, - 71, 71, 1214, 1215, 71, 71, 1213, 71, 71, 1216, - 1219, 71, 71, 1218, 1224, 71, 1221, 71, 71, 1217, - 71, 71, 1225, 1222, 71, 1226, 1220, 1223, 71, 1228, - 1230, 71, 1229, 71, 71, 71, 71, 71, 1227, 71, - 71, 71, 71, 71, 1236, 71, 1231, 1234, 1232, 1241, - 71, 1235, 1237, 1233, 71, 71, 71, 71, 1238, 1247, - 1240, 1246, 1239, 71, 1248, 1242, 1245, 71, 71, 71, + 71, 71, 71, 1194, 1197, 71, 1199, 1198, 71, 71, + 71, 1200, 1201, 1202, 71, 71, 71, 1208, 71, 71, + 71, 1205, 71, 71, 1203, 71, 71, 1218, 71, 1204, + 1206, 1212, 71, 1209, 71, 1207, 71, 1211, 1210, 1214, + 71, 1219, 1222, 1213, 1220, 71, 71, 1221, 1215, 1223, + 1216, 1224, 71, 1217, 71, 71, 71, 71, 71, 71, + 1227, 71, 1229, 1226, 1232, 71, 1233, 71, 71, 1230, + 1225, 71, 1234, 71, 71, 1228, 1236, 1237, 1231, 71, + 71, 71, 71, 1238, 71, 71, 71, 71, 1235, 71, + 71, 71, 1244, 71, 1239, 1240, 1242, 1243, 1245, 1249, - 71, 1252, 71, 1250, 1243, 1244, 1253, 71, 71, 71, - 1257, 1251, 71, 1249, 71, 71, 1255, 71, 1266, 1254, - 1268, 1256, 71, 1265, 71, 1264, 1269, 1258, 71, 1267, - 1259, 1260, 1270, 71, 71, 1261, 71, 71, 71, 1271, - 71, 1262, 1272, 71, 1273, 1263, 71, 1275, 71, 71, - 71, 1276, 71, 1277, 1274, 71, 1278, 1282, 1279, 1280, - 71, 1285, 1286, 71, 71, 71, 1324, 71, 71, 1281, - 1287, 71, 1289, 1284, 1283, 1288, 71, 1290, 71, 1291, - 71, 1292, 1298, 1293, 71, 1294, 1295, 1296, 71, 71, - 71, 1297, 1302, 71, 1300, 71, 71, 1303, 71, 1301, + 1241, 71, 71, 71, 71, 71, 1246, 1255, 1248, 71, + 1247, 1251, 1253, 71, 71, 71, 1250, 1257, 71, 1256, + 1259, 1261, 1252, 71, 1254, 71, 1262, 71, 71, 71, + 1260, 71, 1266, 71, 1258, 71, 1276, 3053, 1274, 1264, + 71, 1265, 1263, 71, 1275, 1277, 1273, 1279, 1267, 71, + 71, 1268, 1269, 71, 71, 71, 1270, 71, 1278, 1280, + 1281, 71, 1271, 71, 1282, 71, 1272, 71, 1284, 71, + 71, 71, 1285, 71, 1286, 71, 71, 3053, 1283, 1289, + 1291, 1287, 1294, 1288, 1295, 71, 71, 1292, 71, 1297, + 71, 1290, 71, 71, 1293, 1298, 71, 1296, 71, 1303, - 1305, 71, 71, 1299, 71, 71, 1311, 71, 1312, 71, - 1306, 1307, 71, 71, 71, 1304, 71, 1313, 71, 1310, - 1308, 1315, 71, 1309, 71, 71, 71, 1314, 1316, 71, - 1320, 1317, 1321, 71, 1323, 71, 1318, 71, 71, 71, - 1325, 1322, 71, 1326, 1329, 71, 1331, 71, 1327, 1319, - 71, 1328, 71, 1332, 71, 1333, 71, 1336, 71, 1330, - 71, 71, 71, 71, 1338, 71, 71, 71, 1340, 1342, - 71, 71, 144, 1344, 1341, 1334, 71, 1335, 71, 71, - 1337, 1346, 1339, 1347, 1343, 71, 1345, 1348, 71, 71, - 1349, 71, 1351, 1350, 1352, 71, 71, 71, 71, 1357, + 1299, 71, 1300, 71, 1301, 71, 1302, 1304, 1305, 1307, + 71, 1308, 1306, 71, 1311, 1313, 71, 71, 71, 1312, + 71, 1309, 1310, 1314, 71, 71, 1316, 71, 1320, 71, + 1315, 71, 1321, 71, 71, 71, 71, 1322, 71, 71, + 1324, 1319, 71, 1317, 1318, 71, 71, 1323, 1326, 71, + 1325, 1329, 1330, 71, 1332, 71, 1327, 71, 71, 1333, + 1331, 1334, 71, 71, 71, 1338, 71, 1328, 1335, 1339, + 1340, 71, 71, 1337, 71, 1341, 71, 1342, 71, 1345, + 71, 1336, 71, 71, 71, 71, 1347, 71, 71, 71, + 1349, 1351, 71, 71, 3053, 1353, 1350, 1343, 71, 1344, - 1358, 1360, 1354, 71, 1355, 71, 71, 71, 1359, 71, - 71, 1356, 71, 1353, 1364, 71, 71, 71, 1361, 71, - 1368, 1369, 71, 1363, 1371, 71, 71, 71, 1370, 1362, - 71, 71, 71, 71, 71, 71, 1365, 1366, 71, 1372, - 71, 1378, 1367, 71, 1375, 1373, 71, 1376, 71, 1383, - 71, 1374, 1377, 1382, 71, 1379, 71, 142, 71, 1385, - 1387, 1381, 71, 1380, 71, 1388, 71, 71, 71, 1384, - 71, 1390, 1391, 71, 71, 1386, 1389, 71, 71, 1396, - 1398, 1392, 1397, 1393, 1400, 1394, 71, 1399, 1395, 71, - 71, 71, 71, 1401, 1403, 71, 1405, 1402, 71, 1404, + 71, 71, 1346, 1355, 1348, 1356, 1352, 71, 1354, 1357, + 71, 71, 1358, 71, 1360, 1359, 1361, 71, 71, 71, + 71, 1366, 1367, 1369, 1363, 71, 1364, 71, 71, 71, + 1368, 71, 71, 1365, 71, 1362, 1373, 71, 71, 71, + 1370, 71, 1377, 1378, 71, 1372, 1380, 71, 71, 71, + 1379, 1371, 71, 71, 71, 71, 71, 71, 1374, 1375, + 71, 1381, 71, 1387, 1376, 71, 1384, 1382, 71, 1385, + 71, 1392, 71, 1383, 1386, 1391, 71, 1388, 71, 3053, + 71, 1394, 1396, 1390, 71, 1389, 71, 1397, 71, 71, + 71, 1393, 71, 1399, 1400, 71, 71, 1395, 1398, 71, - 71, 71, 71, 1408, 71, 71, 1410, 71, 71, 1415, - 1407, 71, 71, 1409, 71, 1416, 71, 1406, 1412, 71, - 1419, 71, 1411, 1413, 71, 1414, 71, 71, 1420, 71, - 1417, 71, 71, 1418, 71, 1422, 1426, 1428, 1421, 1423, - 71, 1427, 1424, 71, 71, 1431, 71, 71, 1425, 71, - 71, 1436, 1430, 1433, 1437, 1435, 71, 71, 1429, 71, - 71, 1432, 71, 1438, 71, 1439, 1440, 71, 71, 71, - 1434, 71, 1441, 1444, 1443, 71, 71, 1447, 1442, 71, - 71, 71, 1446, 71, 71, 1453, 1445, 1455, 1449, 1450, - 1454, 71, 1456, 71, 71, 1451, 71, 1458, 71, 1448, + 71, 1405, 1407, 1401, 1406, 1402, 1409, 1403, 71, 1408, + 1404, 71, 71, 71, 71, 1410, 1412, 71, 1414, 1411, + 71, 1413, 71, 71, 71, 1417, 71, 71, 1419, 71, + 71, 1424, 1416, 71, 71, 1418, 71, 1425, 71, 1415, + 1421, 71, 1428, 71, 1420, 1422, 71, 1423, 71, 71, + 1429, 71, 1426, 71, 71, 1427, 71, 1431, 1435, 1437, + 1430, 1432, 71, 1436, 1433, 71, 71, 1440, 71, 71, + 1434, 1442, 71, 71, 1439, 1443, 71, 71, 1446, 1447, + 1438, 1445, 3053, 1441, 71, 71, 71, 1448, 71, 1449, + 1450, 71, 71, 71, 1444, 1453, 1451, 71, 71, 71, - 71, 71, 1452, 71, 71, 71, 71, 1466, 1462, 71, - 1461, 71, 1469, 71, 1457, 71, 1467, 1459, 71, 1460, - 71, 1472, 71, 1463, 1465, 1464, 1471, 71, 71, 71, - 71, 71, 71, 71, 1470, 1468, 71, 71, 1480, 71, - 71, 1473, 1481, 1483, 71, 1477, 71, 1474, 1475, 1476, - 1486, 1479, 1482, 1478, 1484, 71, 71, 71, 71, 71, - 71, 1485, 1490, 71, 71, 71, 1491, 1488, 1493, 71, - 1487, 71, 1489, 1497, 71, 1499, 1498, 71, 71, 1492, - 1494, 71, 71, 71, 1495, 1496, 71, 1502, 71, 71, - 1503, 1501, 1500, 1504, 71, 1508, 1509, 71, 71, 71, + 71, 1457, 1452, 71, 71, 71, 1456, 71, 71, 1463, + 1460, 1454, 1459, 1455, 1464, 71, 71, 71, 1468, 1465, + 71, 1461, 71, 1458, 1466, 71, 71, 1462, 71, 71, + 71, 71, 1476, 1472, 71, 1471, 1467, 71, 71, 1469, + 1479, 1470, 1477, 71, 71, 71, 71, 1482, 1473, 1475, + 1474, 1481, 71, 71, 71, 71, 71, 71, 71, 1490, + 1478, 71, 1480, 1483, 71, 71, 71, 1491, 1493, 71, + 1487, 1484, 71, 1485, 1486, 1498, 1489, 1492, 1488, 1494, + 71, 71, 71, 71, 71, 1497, 1495, 1496, 71, 1503, + 1500, 71, 71, 71, 1501, 1499, 1507, 71, 71, 1509, - 71, 71, 71, 1505, 1514, 1512, 1506, 71, 1513, 71, - 71, 1516, 71, 71, 1507, 71, 1510, 71, 1517, 71, - 1511, 71, 1515, 1518, 71, 1519, 71, 71, 1523, 1520, - 1521, 71, 1524, 71, 71, 71, 1525, 1522, 71, 1528, - 71, 1530, 71, 71, 71, 1534, 71, 1526, 71, 1529, - 71, 71, 1527, 71, 71, 1537, 1531, 1532, 1539, 71, - 1535, 71, 71, 1542, 71, 1540, 1536, 71, 1533, 1538, - 71, 1541, 71, 71, 1545, 1543, 71, 1547, 1544, 1548, - 71, 71, 71, 1546, 71, 71, 1555, 71, 71, 71, - 1550, 1549, 1556, 71, 71, 71, 1553, 1564, 1559, 1560, + 71, 71, 71, 1508, 71, 71, 1504, 1502, 71, 1506, + 71, 71, 1505, 1512, 1511, 1510, 71, 71, 71, 1518, + 1513, 1514, 1515, 71, 1517, 71, 1519, 71, 1516, 1520, + 71, 71, 1523, 71, 1524, 1522, 1526, 71, 71, 1521, + 71, 1527, 71, 1525, 1528, 71, 71, 71, 71, 1529, + 1531, 71, 1534, 71, 71, 71, 71, 1533, 1530, 71, + 71, 1538, 71, 1540, 71, 71, 1532, 71, 1535, 71, + 1544, 71, 71, 1539, 1537, 1536, 71, 1547, 1541, 1542, + 71, 1545, 1549, 71, 1550, 71, 71, 1552, 71, 1546, + 1543, 1548, 71, 71, 71, 71, 71, 1555, 1558, 71, - 1551, 1552, 71, 71, 1562, 71, 71, 71, 1557, 1554, - 1563, 1566, 71, 1558, 71, 1561, 71, 71, 1568, 71, - 1570, 1567, 71, 71, 1573, 71, 1565, 1571, 71, 1574, - 71, 1569, 71, 71, 71, 1579, 1578, 71, 71, 1575, - 1572, 71, 71, 71, 1595, 1585, 1586, 1577, 1576, 1580, - 71, 71, 71, 1582, 71, 1587, 1583, 71, 1581, 1593, - 1597, 71, 1590, 1589, 1592, 71, 71, 1591, 1584, 71, - 71, 1588, 71, 1596, 1594, 1598, 71, 71, 71, 71, - 71, 1604, 1605, 1603, 71, 71, 1607, 71, 71, 1599, - 1606, 71, 71, 1610, 71, 1600, 1609, 1601, 71, 1602, + 1557, 71, 71, 1554, 71, 1551, 71, 71, 1565, 71, + 1553, 71, 71, 1556, 1559, 1560, 1566, 71, 1563, 71, + 71, 1561, 1562, 71, 1570, 1572, 1569, 71, 71, 1567, + 1574, 1564, 1568, 1573, 71, 1576, 71, 1578, 71, 71, + 1571, 71, 71, 71, 71, 71, 71, 1575, 1577, 1580, + 1581, 71, 1583, 71, 1584, 71, 71, 71, 1579, 1588, + 1585, 71, 1586, 71, 1589, 71, 1582, 1595, 1592, 1590, + 1587, 1593, 71, 71, 71, 71, 71, 1596, 1597, 1600, + 71, 1591, 1603, 1594, 71, 1599, 71, 1602, 71, 71, + 1605, 1604, 71, 1606, 1598, 1607, 71, 71, 71, 71, - 71, 71, 71, 1611, 71, 71, 71, 1608, 1619, 71, - 71, 71, 71, 71, 71, 71, 1617, 71, 1612, 1615, - 1616, 1613, 1614, 1618, 1624, 71, 1622, 71, 71, 1620, - 71, 1621, 1626, 71, 1623, 1625, 71, 1627, 71, 71, - 71, 1630, 71, 1628, 1629, 71, 71, 1632, 71, 1634, - 71, 1631, 71, 1641, 1633, 1635, 1637, 71, 1636, 71, - 1638, 1642, 71, 1643, 71, 1639, 1647, 71, 71, 1644, - 1645, 1646, 1648, 1640, 71, 71, 71, 71, 71, 71, - 1650, 1651, 71, 71, 1659, 1660, 71, 71, 1654, 71, - 71, 71, 1656, 1649, 1653, 1657, 1652, 71, 1658, 71, + 71, 71, 1608, 71, 1614, 1601, 1613, 1615, 1617, 1609, + 71, 71, 71, 71, 71, 71, 1610, 1616, 1611, 71, + 1612, 1620, 71, 71, 1619, 71, 71, 71, 1621, 71, + 71, 71, 1629, 1622, 1618, 71, 71, 71, 71, 71, + 71, 1625, 1627, 1626, 1628, 1623, 1624, 1634, 71, 71, + 71, 1632, 71, 71, 1637, 1630, 1631, 1636, 71, 71, + 1633, 71, 71, 71, 1640, 1638, 71, 71, 71, 1635, + 1642, 1645, 1639, 1644, 1646, 71, 71, 1641, 1643, 1651, + 1652, 71, 71, 1647, 1653, 71, 71, 71, 71, 71, + 1648, 1656, 71, 1650, 1654, 1649, 1657, 71, 71, 71, - 71, 1655, 71, 71, 1662, 71, 71, 1661, 71, 1669, - 71, 71, 71, 1664, 1666, 1663, 1665, 1672, 71, 1671, - 71, 1673, 1670, 1668, 71, 71, 1680, 1675, 1667, 1677, - 1676, 1681, 71, 71, 71, 1674, 71, 71, 1686, 71, - 1688, 71, 1685, 1679, 71, 1678, 1689, 1682, 71, 1683, - 1691, 71, 71, 1690, 71, 71, 71, 1687, 1684, 1695, - 1692, 71, 1699, 71, 71, 71, 1697, 71, 71, 1694, - 71, 1693, 1698, 71, 1696, 1700, 71, 71, 71, 71, - 71, 1703, 1711, 1701, 71, 1704, 1709, 71, 71, 1702, - 1705, 1706, 1712, 1707, 1708, 71, 71, 1713, 71, 71, + 1658, 71, 71, 1660, 1655, 71, 1661, 71, 1659, 71, + 71, 1662, 1670, 71, 1664, 1663, 1666, 1669, 1668, 1667, + 71, 1665, 71, 71, 71, 71, 71, 71, 71, 71, + 1671, 71, 1679, 1672, 71, 71, 1683, 71, 1674, 1676, + 1673, 1675, 1682, 1681, 71, 1680, 1678, 71, 71, 71, + 1684, 1677, 1690, 1685, 71, 71, 1686, 1691, 71, 71, + 71, 71, 1698, 71, 71, 1687, 1695, 1689, 1692, 1688, + 1693, 1696, 71, 1699, 71, 71, 1701, 71, 1697, 71, + 1700, 1694, 71, 71, 1703, 1705, 1704, 1706, 1709, 1702, + 71, 71, 71, 1707, 71, 71, 71, 71, 71, 1708, - 71, 1718, 71, 71, 71, 1722, 71, 71, 1710, 71, - 71, 3043, 71, 1717, 1715, 1714, 1724, 71, 1716, 1720, - 71, 71, 1721, 71, 1719, 1725, 1726, 71, 1727, 1723, - 1731, 71, 1730, 1729, 71, 71, 1728, 71, 1735, 71, - 71, 71, 71, 71, 71, 71, 1742, 1733, 1737, 71, - 71, 71, 71, 1732, 1736, 1738, 1734, 1739, 1836, 71, - 71, 1740, 1743, 1747, 1741, 1745, 71, 1744, 1746, 71, - 1748, 71, 71, 1751, 71, 1750, 71, 1749, 1754, 71, - 1752, 71, 71, 71, 71, 1755, 1753, 71, 71, 71, - 71, 71, 71, 1760, 71, 71, 1764, 71, 71, 1761, + 1710, 1719, 71, 71, 71, 1713, 71, 1714, 71, 71, + 71, 71, 1721, 1722, 1711, 1712, 1715, 1716, 71, 71, + 1717, 71, 1718, 1720, 1723, 71, 1728, 71, 1725, 1724, + 71, 3053, 71, 71, 1732, 71, 71, 71, 1727, 71, + 1726, 1734, 71, 71, 1735, 71, 1730, 1736, 1737, 1729, + 71, 1731, 71, 71, 1738, 71, 1733, 1741, 71, 71, + 1745, 71, 71, 71, 71, 71, 71, 1740, 71, 1752, + 1747, 1743, 1742, 1739, 1744, 71, 1746, 1748, 1749, 71, + 71, 71, 3053, 1750, 1756, 71, 71, 1755, 1751, 1757, + 71, 1753, 1758, 71, 71, 1759, 1761, 71, 1754, 1762, - 3043, 71, 1770, 1756, 1762, 1758, 1757, 1759, 71, 1763, - 1765, 71, 1773, 1768, 71, 1767, 1772, 71, 71, 1774, - 1769, 71, 71, 1766, 71, 71, 1771, 1778, 71, 1781, - 1782, 71, 71, 1775, 1783, 71, 71, 1776, 1779, 71, - 1780, 71, 1777, 1785, 71, 71, 1786, 1789, 71, 71, - 1791, 71, 1784, 1790, 1792, 1793, 71, 1787, 1795, 1794, - 1788, 71, 71, 71, 71, 1800, 1797, 1798, 71, 71, - 1799, 71, 71, 71, 71, 1807, 71, 1809, 71, 71, - 71, 71, 1810, 71, 1801, 1802, 1803, 1796, 71, 71, - 1812, 1804, 1811, 1805, 1806, 1814, 1808, 1815, 71, 1817, + 71, 71, 71, 1760, 71, 71, 1764, 71, 1765, 1763, + 71, 71, 71, 71, 71, 71, 1770, 71, 71, 71, + 1774, 1766, 1771, 1782, 71, 71, 1772, 1775, 1768, 1767, + 1769, 71, 1773, 71, 71, 1783, 1778, 71, 1780, 1777, + 1776, 71, 71, 1779, 71, 71, 1784, 1788, 71, 1781, + 71, 71, 71, 1791, 1792, 71, 1785, 71, 1786, 1793, + 71, 1795, 71, 71, 1787, 1789, 1802, 1790, 1794, 71, + 1796, 1797, 1799, 71, 1801, 71, 1803, 71, 1798, 1800, + 71, 1805, 71, 71, 71, 71, 71, 71, 1807, 1808, + 71, 71, 1809, 1810, 71, 1804, 1811, 1812, 1813, 71, - 1813, 71, 71, 71, 1819, 71, 71, 1816, 71, 1821, - 71, 71, 1824, 1825, 71, 71, 1827, 71, 71, 71, - 71, 71, 1818, 1833, 71, 1832, 1822, 71, 1820, 1829, - 1830, 71, 1823, 71, 71, 1826, 71, 71, 1839, 71, - 1831, 71, 1837, 1828, 71, 71, 1843, 71, 1834, 1835, - 1842, 71, 71, 1846, 1845, 1847, 1849, 1841, 71, 71, - 71, 71, 1838, 71, 1844, 1840, 1848, 71, 71, 1850, - 71, 71, 71, 1854, 71, 1857, 71, 1858, 1851, 71, - 1853, 71, 1852, 71, 71, 1861, 71, 71, 71, 1855, - 1866, 71, 1865, 71, 1860, 71, 1859, 71, 1856, 71, + 71, 1817, 71, 1814, 1819, 71, 1815, 71, 1806, 1820, + 71, 71, 71, 1822, 1816, 71, 1821, 71, 1825, 71, + 1818, 1829, 71, 1823, 71, 1827, 1826, 71, 71, 1831, + 1824, 71, 71, 71, 1834, 1835, 71, 71, 1837, 71, + 1828, 71, 71, 71, 1842, 71, 71, 1843, 71, 71, + 71, 1832, 1839, 1830, 1833, 1840, 71, 1836, 71, 71, + 1845, 71, 1849, 1841, 71, 1846, 1838, 71, 1847, 71, + 1844, 1853, 71, 71, 1852, 1856, 71, 71, 1857, 71, + 1855, 71, 1848, 1851, 71, 1858, 71, 71, 71, 71, + 1850, 71, 1854, 1859, 1864, 1862, 1860, 71, 71, 1861, - 71, 1862, 71, 1870, 1863, 71, 1871, 1867, 1864, 1874, - 1868, 1872, 1869, 1873, 71, 71, 1877, 71, 1878, 71, - 71, 71, 71, 71, 1884, 71, 1875, 1881, 71, 71, - 71, 1876, 1889, 1879, 1886, 1887, 71, 71, 1888, 1880, - 1885, 1882, 71, 1883, 71, 71, 1894, 71, 1895, 71, - 1898, 1890, 1896, 1899, 71, 1891, 71, 1897, 71, 71, - 1892, 71, 71, 1903, 71, 1893, 1901, 71, 71, 71, - 71, 1905, 1908, 71, 1902, 1910, 1904, 71, 71, 71, - 1900, 71, 1906, 71, 71, 71, 71, 1915, 1920, 1911, - 1914, 1912, 71, 1907, 71, 1909, 71, 1916, 1917, 71, + 1868, 1863, 71, 1867, 71, 71, 71, 71, 71, 71, + 71, 1871, 71, 1876, 71, 1865, 71, 1875, 71, 1870, + 1883, 71, 71, 71, 1866, 1869, 1880, 1872, 1873, 1877, + 71, 1874, 1882, 1878, 71, 1879, 1881, 71, 1884, 1887, + 71, 71, 71, 1894, 71, 71, 71, 71, 1885, 71, + 1891, 71, 71, 1886, 71, 1899, 1889, 1896, 1897, 71, + 71, 1898, 1888, 1890, 71, 71, 1892, 1893, 71, 1895, + 1904, 71, 1906, 1900, 1905, 71, 1901, 1907, 71, 1908, + 1909, 1902, 71, 71, 71, 71, 71, 1913, 1903, 1911, + 71, 71, 71, 71, 71, 1912, 1915, 71, 1918, 71, - 1918, 71, 1913, 71, 1927, 71, 1919, 71, 71, 1921, - 1922, 71, 71, 1923, 71, 1926, 1925, 1924, 71, 1928, - 71, 71, 71, 1932, 71, 71, 1929, 1931, 71, 71, - 1933, 71, 1930, 1934, 1935, 1936, 71, 71, 71, 71, - 1938, 71, 1943, 1941, 71, 1937, 1942, 71, 71, 71, - 71, 71, 1948, 71, 71, 1939, 1945, 1940, 71, 71, - 71, 1952, 1944, 1949, 1947, 71, 1954, 1946, 1951, 71, - 71, 1950, 1958, 71, 1953, 1956, 71, 71, 71, 1955, - 1959, 71, 1957, 71, 1964, 71, 71, 1966, 71, 71, - 71, 1967, 1960, 71, 1961, 1970, 1962, 1963, 1968, 71, + 1920, 71, 1914, 1916, 71, 71, 71, 71, 1910, 1921, + 71, 71, 1924, 1922, 1925, 71, 1926, 1927, 71, 1917, + 1930, 1919, 1928, 71, 1923, 71, 71, 71, 71, 71, + 1929, 1931, 1932, 71, 1933, 71, 1936, 71, 1934, 71, + 1935, 71, 1938, 71, 71, 71, 1942, 71, 71, 1937, + 1941, 1939, 71, 1943, 71, 1940, 71, 1944, 71, 1945, + 1946, 71, 71, 71, 71, 1948, 1953, 1951, 1947, 1952, + 71, 71, 71, 71, 71, 71, 1949, 71, 71, 1958, + 1955, 1950, 71, 1962, 71, 71, 1961, 71, 1954, 1957, + 1959, 1956, 1960, 1963, 71, 71, 71, 1964, 1969, 1966, - 71, 1969, 1965, 71, 1972, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 1973, 3043, 71, 71, 1980, 1975, - 1971, 1976, 1977, 1984, 71, 71, 1979, 1974, 1983, 71, - 71, 1981, 1987, 1982, 1978, 1985, 71, 71, 71, 71, - 1991, 1988, 1990, 71, 71, 1986, 71, 71, 1993, 71, - 1989, 1994, 71, 71, 71, 1995, 1999, 1992, 1997, 71, - 71, 2001, 2003, 71, 1998, 1996, 71, 71, 71, 2006, - 71, 71, 2000, 2005, 2002, 2007, 2008, 71, 71, 2011, - 71, 71, 71, 71, 71, 71, 2012, 71, 2017, 71, - 2014, 71, 2004, 2013, 2021, 2009, 71, 2018, 2010, 2019, + 1968, 71, 71, 71, 1974, 71, 71, 71, 1965, 1967, + 71, 71, 1976, 71, 71, 1977, 1978, 71, 1970, 1971, + 1972, 1973, 1979, 1975, 71, 71, 71, 1982, 71, 71, + 71, 1980, 71, 71, 71, 71, 71, 1983, 71, 71, + 71, 1990, 1985, 71, 1986, 1981, 1987, 1994, 71, 71, + 1984, 1989, 1993, 71, 1991, 71, 1997, 1995, 1992, 1988, + 1998, 71, 71, 1996, 2001, 71, 2000, 71, 71, 1999, + 71, 71, 2003, 71, 71, 2004, 71, 71, 2009, 2005, + 71, 71, 2007, 2002, 71, 71, 2008, 2011, 71, 2006, + 2013, 71, 71, 2015, 2012, 71, 2010, 2016, 71, 71, - 71, 2016, 2015, 71, 71, 71, 2023, 71, 2022, 2026, - 71, 2020, 71, 2024, 71, 2028, 71, 2029, 71, 2027, - 71, 2025, 71, 71, 71, 2031, 2035, 2030, 71, 71, - 2032, 2033, 2037, 71, 2034, 71, 71, 2038, 71, 71, - 2040, 2041, 2039, 71, 2036, 71, 71, 71, 2042, 2044, - 2043, 2047, 71, 71, 71, 2045, 2046, 2048, 71, 71, - 71, 71, 71, 71, 2049, 71, 71, 2056, 2051, 2050, - 2057, 2053, 2054, 2052, 71, 2058, 71, 71, 71, 71, - 2059, 2055, 2061, 2067, 71, 71, 2062, 71, 71, 2069, - 71, 71, 2063, 2060, 2066, 2071, 2064, 2068, 71, 71, + 2021, 71, 2019, 2017, 2018, 71, 71, 2014, 71, 71, + 2022, 71, 2020, 71, 2023, 71, 2024, 2027, 71, 71, + 2028, 2031, 3053, 71, 71, 2026, 71, 71, 2025, 2032, + 2029, 2034, 71, 2030, 2033, 2036, 71, 71, 2037, 2035, + 71, 2038, 71, 2039, 71, 71, 2040, 71, 71, 2041, + 2045, 71, 2047, 71, 71, 71, 2043, 2048, 71, 2044, + 71, 71, 2049, 2042, 71, 2052, 2050, 2051, 71, 2053, + 71, 71, 2046, 71, 2054, 2057, 71, 71, 71, 2056, + 71, 71, 71, 71, 71, 71, 71, 3053, 2055, 2058, + 2066, 2059, 2061, 2060, 2063, 2062, 2064, 71, 71, 71, - 71, 3043, 2074, 2072, 2065, 2076, 2070, 2075, 71, 2077, - 71, 71, 2073, 2078, 71, 71, 2081, 71, 71, 2082, - 2080, 71, 2079, 2086, 71, 71, 2087, 71, 71, 2090, - 2085, 71, 71, 2083, 71, 71, 2091, 71, 2092, 2088, - 2093, 71, 71, 2095, 2084, 71, 2089, 2094, 71, 71, - 2100, 71, 2096, 71, 2097, 2098, 71, 2099, 71, 71, - 71, 71, 71, 2103, 71, 71, 2107, 2109, 71, 2110, - 71, 2102, 71, 71, 71, 71, 2101, 2104, 2105, 2112, - 2106, 71, 71, 71, 71, 2111, 2108, 2114, 2116, 2119, - 71, 71, 2115, 71, 2117, 71, 71, 71, 2113, 2120, + 71, 2065, 2067, 71, 71, 2069, 2071, 2068, 2075, 2072, + 71, 71, 2077, 71, 71, 2079, 71, 3053, 2070, 2073, + 2076, 2074, 71, 2078, 71, 71, 2081, 2084, 2086, 2080, + 2082, 71, 2085, 71, 71, 2087, 71, 2083, 71, 2088, + 71, 71, 2091, 71, 71, 2092, 2089, 2096, 71, 2095, + 71, 2090, 71, 2097, 71, 2100, 71, 2102, 71, 2093, + 71, 71, 2098, 2101, 2103, 71, 71, 2105, 71, 71, + 2094, 2104, 2099, 71, 71, 71, 71, 71, 2106, 2108, + 2107, 2110, 71, 71, 71, 71, 71, 71, 2113, 2119, + 71, 2117, 2111, 2109, 71, 2114, 71, 2112, 2120, 71, - 2118, 71, 71, 2121, 71, 71, 71, 2130, 71, 71, - 71, 71, 2122, 2131, 2127, 71, 2125, 2285, 2123, 2133, - 2124, 2129, 2126, 71, 2132, 2128, 71, 2135, 2134, 2136, - 71, 2137, 71, 71, 71, 2140, 71, 71, 2138, 2143, - 71, 71, 2144, 71, 71, 2141, 2139, 71, 2142, 2145, - 2149, 71, 2150, 71, 71, 2152, 71, 71, 71, 2148, - 71, 2146, 71, 2147, 2154, 71, 71, 2157, 71, 2158, - 71, 2156, 2159, 2151, 71, 2153, 71, 2155, 71, 2162, - 71, 2164, 71, 2160, 71, 2163, 2166, 71, 71, 71, - 2161, 71, 2169, 71, 2168, 71, 2170, 2165, 2172, 71, + 2115, 71, 71, 71, 2122, 2116, 71, 71, 71, 2118, + 71, 2121, 2126, 71, 2124, 2129, 71, 71, 2130, 2127, + 71, 71, 2125, 71, 71, 71, 2128, 2123, 71, 71, + 2140, 71, 2131, 71, 71, 71, 2132, 2141, 71, 2139, + 2137, 3053, 2135, 2133, 71, 2134, 2136, 2143, 2142, 71, + 2138, 2144, 71, 2145, 2146, 71, 2147, 71, 71, 2148, + 71, 2150, 2149, 2153, 71, 71, 71, 2151, 71, 71, + 2152, 2154, 71, 2155, 2159, 71, 2160, 71, 71, 2162, + 71, 71, 2164, 71, 2158, 2156, 71, 71, 71, 2157, + 2167, 71, 2166, 2168, 71, 71, 71, 2161, 71, 2163, - 71, 71, 2167, 2176, 71, 71, 71, 71, 2174, 71, - 2173, 2171, 71, 2180, 2181, 71, 71, 2185, 71, 2175, - 71, 2177, 2179, 71, 71, 2182, 71, 2183, 2178, 71, - 2187, 2184, 71, 71, 2192, 71, 71, 2194, 2188, 71, - 2186, 71, 2195, 71, 2189, 2193, 71, 2190, 2199, 71, - 71, 2200, 71, 2198, 71, 71, 71, 2196, 2191, 2197, - 2204, 2206, 71, 2202, 71, 2209, 71, 2207, 71, 2211, - 71, 71, 71, 2203, 2201, 71, 71, 2212, 71, 2208, - 2205, 2213, 71, 2215, 71, 2216, 71, 2210, 71, 71, - 71, 71, 2221, 2214, 2222, 2217, 2223, 2218, 2219, 2220, + 71, 2165, 2169, 71, 2170, 2173, 2174, 71, 2176, 71, + 2171, 71, 71, 71, 71, 2180, 2179, 2172, 2178, 2182, + 71, 71, 2175, 71, 71, 2186, 71, 71, 71, 2177, + 2181, 71, 71, 2191, 71, 71, 2190, 71, 2184, 71, + 2183, 71, 71, 2185, 2195, 71, 2189, 2187, 71, 2197, + 71, 2188, 2193, 71, 2192, 71, 2194, 71, 2202, 2196, + 71, 71, 2198, 2204, 71, 71, 71, 2205, 2199, 2203, + 71, 2200, 71, 71, 71, 2209, 71, 2208, 2210, 71, + 71, 2201, 2206, 71, 2207, 2212, 71, 71, 2214, 71, + 2219, 2211, 2216, 2221, 2217, 2213, 71, 71, 71, 71, - 71, 71, 71, 71, 2225, 2224, 71, 2227, 2228, 71, - 2229, 2231, 2226, 2232, 71, 71, 71, 71, 2230, 2235, - 71, 71, 71, 71, 71, 71, 2237, 2242, 71, 71, - 71, 2233, 2234, 2243, 2238, 71, 2236, 2246, 71, 2239, - 2240, 2241, 71, 2247, 2248, 71, 71, 2245, 71, 2249, - 2244, 2251, 2252, 2250, 2253, 71, 71, 71, 71, 71, - 2255, 71, 71, 71, 71, 2259, 2260, 71, 3043, 71, - 2254, 71, 71, 2256, 2262, 2263, 2257, 71, 2265, 71, - 2264, 2261, 2258, 71, 71, 71, 71, 71, 2266, 71, - 2269, 2270, 71, 2267, 2272, 71, 71, 71, 71, 71, + 2220, 2218, 2215, 2222, 71, 2224, 71, 71, 71, 2223, + 2225, 2226, 71, 71, 71, 2227, 2228, 2232, 2233, 71, + 71, 2229, 2230, 71, 71, 71, 71, 2238, 2231, 2234, + 71, 2237, 71, 71, 71, 2236, 71, 2239, 71, 2235, + 2241, 71, 2242, 2245, 71, 2240, 71, 71, 2243, 71, + 2244, 71, 71, 2246, 71, 2247, 2261, 2249, 71, 2248, + 71, 2252, 71, 2251, 2250, 2253, 2255, 2256, 71, 71, + 2257, 71, 2254, 2258, 71, 71, 2260, 2262, 2259, 2263, + 71, 71, 71, 71, 71, 2265, 71, 71, 71, 2269, + 2270, 71, 71, 71, 2266, 2264, 71, 2272, 71, 3053, - 2271, 71, 2276, 2279, 71, 2268, 2278, 71, 71, 71, - 2280, 2275, 71, 71, 2284, 2273, 2274, 2283, 71, 2277, - 71, 71, 71, 2286, 2282, 2281, 2292, 2287, 71, 2288, - 71, 71, 2291, 2289, 2293, 71, 2295, 71, 71, 71, - 71, 2297, 71, 71, 2290, 71, 71, 2294, 2296, 71, - 71, 2301, 71, 71, 71, 2303, 2298, 2299, 2304, 2305, - 71, 2300, 2306, 71, 2307, 71, 2308, 71, 2309, 71, - 71, 71, 2311, 2314, 71, 2302, 2310, 71, 2316, 71, - 71, 2319, 71, 2313, 71, 71, 2315, 71, 2312, 71, - 2322, 2323, 71, 71, 71, 2318, 71, 2317, 2324, 71, + 2267, 71, 2273, 71, 2274, 2271, 2268, 2275, 71, 71, + 71, 71, 2277, 2278, 2276, 2279, 2280, 71, 71, 71, + 71, 71, 71, 2281, 2282, 71, 2286, 71, 2289, 71, + 71, 71, 2288, 71, 71, 2285, 2290, 71, 2283, 2295, + 2284, 71, 2293, 2296, 2294, 2287, 71, 2291, 71, 2292, + 71, 71, 2298, 71, 71, 2301, 2299, 71, 2303, 71, + 2297, 2302, 2305, 71, 71, 71, 71, 2307, 71, 71, + 71, 2304, 71, 71, 2300, 2306, 71, 2311, 2315, 71, + 2317, 2313, 71, 2308, 2309, 2310, 71, 2314, 2316, 71, + 71, 2318, 71, 71, 71, 71, 71, 71, 2326, 2312, - 71, 2327, 2328, 71, 2320, 2321, 71, 71, 2326, 71, - 71, 71, 2325, 71, 2332, 71, 2334, 2329, 2374, 2331, - 2330, 2335, 71, 2336, 71, 2337, 71, 2338, 71, 71, - 2333, 2340, 71, 71, 2342, 71, 2343, 2341, 71, 71, - 71, 2339, 71, 2348, 71, 71, 2350, 71, 2351, 71, - 2344, 2345, 71, 71, 71, 71, 71, 71, 2347, 71, - 2346, 2354, 2357, 2352, 2349, 2353, 71, 2355, 2360, 71, - 71, 71, 71, 71, 71, 71, 2356, 71, 2367, 2358, - 2361, 71, 71, 71, 71, 71, 2359, 2364, 71, 2366, - 2368, 71, 2363, 2378, 71, 3043, 2362, 2365, 2369, 2370, + 2321, 2324, 71, 71, 71, 2325, 71, 71, 2319, 2323, + 2329, 71, 71, 2322, 71, 2320, 71, 2332, 2333, 71, + 71, 2327, 2328, 71, 71, 2330, 71, 71, 2334, 2336, + 2331, 2337, 2335, 71, 71, 2338, 71, 71, 2339, 71, + 71, 2340, 2342, 71, 2344, 3053, 2341, 2345, 71, 2346, + 71, 2347, 71, 2348, 71, 2349, 2343, 71, 2350, 71, + 2352, 71, 2351, 71, 2353, 71, 71, 71, 2358, 71, + 71, 2360, 71, 2354, 2361, 71, 71, 2355, 71, 71, + 71, 71, 71, 2357, 71, 71, 2356, 2362, 2364, 2359, + 2363, 2365, 71, 2370, 71, 71, 71, 2367, 71, 71, - 2371, 71, 71, 71, 71, 2375, 2376, 2372, 2377, 2379, - 71, 2373, 71, 2380, 71, 2381, 71, 2382, 71, 71, - 2383, 71, 71, 2385, 71, 71, 71, 71, 71, 2384, - 2392, 71, 71, 71, 2390, 71, 2396, 2397, 71, 2386, - 2387, 71, 71, 2388, 2389, 71, 2391, 2393, 71, 2394, - 2395, 2399, 2400, 71, 2401, 2398, 2402, 71, 71, 2403, - 71, 71, 71, 71, 71, 2405, 2404, 71, 2411, 71, - 2412, 71, 2413, 71, 71, 2406, 71, 71, 71, 2407, - 2408, 71, 2410, 2409, 2418, 71, 2417, 2422, 71, 2415, - 2420, 2414, 71, 71, 2421, 2416, 71, 2419, 2423, 2424, + 2366, 71, 2368, 71, 2369, 2371, 71, 2377, 71, 71, + 2378, 2372, 2374, 71, 71, 2373, 71, 2376, 71, 71, + 71, 2384, 2375, 2379, 2380, 2386, 71, 71, 2388, 71, + 71, 2381, 2387, 2385, 2389, 71, 2382, 71, 2390, 2383, + 71, 2391, 71, 2392, 2393, 71, 71, 71, 71, 2395, + 71, 71, 71, 71, 71, 2402, 2394, 71, 71, 2400, + 71, 2406, 2407, 71, 71, 2397, 2396, 71, 71, 71, + 2398, 2399, 2401, 71, 2403, 2404, 2405, 2409, 2410, 71, + 2412, 71, 2411, 71, 71, 2413, 2408, 2414, 71, 71, + 2415, 71, 71, 2421, 71, 2422, 71, 2423, 71, 2416, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 2426, 2430, 2425, 71, 71, 2428, 2434, 2435, 71, 2438, - 71, 2427, 71, 71, 2429, 2431, 2432, 2437, 2433, 2436, - 71, 71, 2442, 71, 2439, 2441, 2443, 2440, 71, 71, - 2446, 71, 71, 71, 71, 2450, 71, 71, 2449, 2452, - 71, 71, 2448, 71, 2447, 71, 2453, 71, 2444, 2445, - 2457, 71, 2454, 71, 2458, 71, 2451, 2460, 71, 2456, - 71, 2455, 71, 71, 71, 71, 2465, 71, 2467, 71, - 71, 71, 2463, 2461, 2464, 2462, 2468, 2459, 71, 2466, - 71, 71, 71, 2469, 2470, 2471, 71, 71, 71, 2472, + 71, 71, 71, 71, 71, 71, 2417, 2418, 2419, 2427, + 2420, 71, 71, 2431, 71, 2425, 2424, 2430, 2432, 71, + 2426, 71, 2428, 2433, 71, 2429, 2434, 71, 71, 71, + 71, 71, 71, 2435, 71, 71, 2440, 2436, 71, 71, + 71, 2438, 2444, 2437, 2445, 71, 71, 2448, 71, 71, + 2439, 71, 2441, 2442, 71, 2443, 2447, 71, 2449, 71, + 2454, 2446, 71, 2451, 2450, 2452, 71, 2456, 71, 71, + 2453, 2455, 71, 71, 2457, 71, 2459, 71, 2458, 2460, + 71, 2462, 71, 71, 2464, 71, 2467, 71, 2463, 71, + 2468, 71, 2461, 2465, 2470, 71, 71, 2466, 71, 71, - 71, 71, 71, 71, 3043, 2474, 2475, 2477, 2478, 2480, - 71, 2473, 2476, 2481, 71, 2479, 71, 71, 71, 2484, - 2486, 3043, 2483, 2482, 71, 71, 71, 71, 2488, 2487, - 71, 2491, 71, 2492, 71, 2490, 2485, 71, 2494, 71, - 2489, 71, 2496, 71, 2495, 71, 71, 2497, 71, 71, - 2493, 2498, 2500, 71, 2499, 71, 71, 2501, 71, 71, - 2502, 71, 2507, 2516, 2506, 2503, 2508, 71, 71, 2505, - 71, 71, 71, 71, 2504, 2509, 2511, 71, 71, 2510, - 2512, 71, 71, 2514, 71, 2513, 2515, 71, 71, 2520, - 71, 71, 71, 2518, 71, 2517, 2519, 2525, 71, 2521, + 71, 71, 2475, 71, 2477, 71, 71, 71, 2473, 2471, + 2474, 2472, 2478, 2469, 71, 2476, 71, 71, 71, 2479, + 2480, 2481, 71, 71, 71, 2482, 71, 71, 71, 71, + 3053, 2484, 2485, 2487, 2488, 2490, 71, 2483, 2486, 2491, + 71, 2489, 71, 71, 71, 2494, 2496, 3053, 2493, 2492, + 71, 71, 71, 71, 2498, 2497, 71, 2501, 71, 2502, + 71, 2500, 2495, 71, 2504, 71, 2499, 71, 2506, 71, + 2505, 71, 71, 2507, 71, 71, 2503, 2508, 2510, 71, + 2509, 71, 71, 2511, 71, 71, 2512, 71, 2517, 2526, + 2516, 2513, 2518, 71, 71, 2515, 71, 71, 71, 71, - 71, 71, 71, 2529, 71, 71, 71, 71, 2534, 71, - 2522, 2527, 2523, 2524, 71, 71, 2528, 2536, 2533, 2526, - 2537, 2531, 2538, 71, 2530, 71, 71, 2532, 71, 2539, - 71, 71, 71, 2540, 71, 71, 2541, 71, 71, 2544, - 2535, 2542, 71, 2547, 2548, 71, 71, 2543, 2549, 71, - 2551, 2545, 71, 2546, 2550, 71, 71, 2552, 2553, 71, - 71, 71, 2557, 71, 71, 2555, 71, 2558, 71, 71, - 2560, 2561, 71, 2556, 2562, 71, 2554, 71, 71, 2564, - 2563, 71, 2565, 2559, 2567, 71, 71, 2568, 2569, 71, - 2571, 71, 71, 71, 71, 2575, 2570, 71, 2566, 2576, + 2514, 2519, 2521, 71, 71, 2520, 2522, 71, 71, 2524, + 71, 2523, 2525, 71, 71, 2530, 71, 71, 71, 2528, + 71, 2527, 2529, 2535, 71, 2531, 71, 71, 71, 2539, + 71, 71, 71, 71, 2544, 71, 2532, 2537, 2533, 2534, + 71, 71, 2538, 2546, 2543, 2536, 2547, 2541, 2548, 71, + 2540, 71, 71, 2542, 71, 2549, 71, 71, 71, 2550, + 71, 71, 2551, 71, 71, 2554, 2545, 2552, 71, 2557, + 2558, 71, 71, 2553, 2559, 71, 2561, 2555, 71, 2556, + 2560, 71, 71, 2562, 2563, 71, 71, 71, 2567, 71, + 71, 2565, 71, 2568, 71, 71, 2570, 2571, 71, 2566, - 71, 71, 71, 71, 2578, 2572, 2577, 71, 2574, 2579, - 71, 2573, 71, 2584, 71, 2587, 71, 71, 2583, 71, - 2580, 2586, 71, 2581, 71, 71, 71, 2582, 2590, 2588, - 2589, 71, 71, 71, 2592, 71, 71, 3043, 2595, 2585, - 71, 2599, 71, 71, 71, 71, 71, 2601, 71, 2593, - 2594, 2591, 71, 2596, 2598, 2602, 2597, 2600, 2606, 2603, - 2605, 2609, 71, 2607, 71, 2604, 71, 2608, 71, 2610, - 71, 2611, 71, 2612, 71, 2613, 71, 71, 71, 71, - 71, 2615, 2614, 71, 2621, 71, 71, 71, 2618, 2622, - 2624, 71, 71, 2626, 71, 71, 71, 2616, 3043, 2625, + 2572, 71, 2564, 71, 71, 2574, 2573, 71, 2575, 2569, + 2577, 71, 71, 2578, 2579, 71, 2581, 71, 71, 71, + 71, 2585, 2580, 71, 2576, 2586, 71, 71, 71, 71, + 2588, 2582, 2587, 71, 2584, 2589, 71, 2583, 71, 2594, + 71, 2597, 71, 71, 2593, 71, 2590, 2596, 71, 2591, + 71, 71, 71, 2592, 2600, 2598, 2599, 71, 71, 71, + 2602, 71, 71, 3053, 2605, 2595, 71, 2609, 71, 71, + 71, 71, 71, 2611, 71, 2603, 2604, 2601, 71, 2606, + 2608, 2612, 2607, 2610, 2616, 2613, 2615, 2619, 71, 2617, + 71, 2614, 71, 2618, 71, 2620, 71, 2621, 71, 2622, - 2619, 2627, 71, 2620, 2617, 2623, 2628, 71, 71, 71, - 71, 2629, 71, 2632, 2633, 71, 2634, 2630, 2631, 2635, - 71, 2637, 71, 71, 71, 71, 2638, 71, 71, 2641, - 71, 2640, 2642, 71, 71, 2636, 2639, 2643, 71, 2644, - 71, 71, 71, 2647, 71, 71, 71, 3043, 2646, 2652, - 71, 2650, 2648, 2645, 71, 71, 71, 2653, 2694, 2655, - 71, 2656, 71, 2657, 2651, 71, 2649, 2654, 71, 2658, - 2659, 71, 2660, 2662, 71, 2661, 2663, 71, 2664, 71, - 71, 71, 71, 71, 2669, 71, 71, 2668, 2666, 2665, - 71, 2670, 71, 2672, 71, 71, 2677, 2671, 71, 71, + 71, 2623, 71, 71, 71, 71, 71, 2625, 2624, 71, + 2631, 71, 71, 71, 2628, 2632, 2634, 71, 71, 2636, + 71, 71, 71, 2626, 3053, 2635, 2629, 2637, 71, 2630, + 2627, 2633, 2638, 71, 71, 71, 71, 2639, 71, 2642, + 2643, 71, 2644, 2640, 2641, 2645, 71, 2647, 71, 71, + 71, 71, 2648, 71, 71, 2651, 71, 2650, 2652, 71, + 71, 2646, 2649, 2653, 71, 2654, 71, 71, 71, 2657, + 71, 71, 71, 3053, 2656, 2662, 71, 2660, 2658, 2655, + 71, 71, 71, 2663, 2704, 2665, 71, 2666, 71, 2667, + 2661, 71, 2659, 2664, 71, 2668, 2669, 71, 2670, 2672, - 2667, 2673, 71, 2675, 2679, 71, 2674, 71, 71, 71, - 71, 2680, 71, 2676, 2681, 2682, 71, 2683, 71, 2687, - 71, 71, 71, 71, 2678, 71, 71, 2684, 71, 2690, - 71, 71, 2686, 2685, 2688, 2689, 2695, 2691, 71, 2692, - 2697, 71, 2699, 71, 71, 2693, 2700, 71, 2702, 71, - 71, 71, 71, 71, 2707, 71, 2696, 2698, 2706, 71, - 71, 71, 71, 2711, 71, 2701, 2703, 2704, 2705, 2713, - 71, 71, 71, 71, 71, 2715, 71, 2716, 2712, 2708, - 2710, 71, 71, 2709, 2718, 71, 2719, 71, 2721, 71, - 71, 2714, 2726, 2723, 2720, 2717, 2725, 71, 71, 2724, + 71, 2671, 2673, 71, 2674, 71, 71, 71, 71, 71, + 2679, 71, 71, 2678, 2676, 2675, 71, 2680, 71, 2682, + 71, 71, 2687, 2681, 71, 71, 2677, 2683, 71, 2685, + 2689, 71, 2684, 71, 71, 71, 71, 2690, 71, 2686, + 2691, 2692, 71, 2693, 71, 2697, 71, 71, 71, 71, + 2688, 71, 71, 2694, 71, 2700, 71, 71, 2696, 2695, + 2698, 2699, 2705, 2701, 71, 2702, 2707, 71, 2709, 71, + 71, 2703, 2710, 71, 2712, 71, 71, 71, 71, 71, + 2717, 71, 2706, 2708, 2716, 71, 71, 71, 71, 2721, + 71, 2711, 2713, 2714, 2715, 2723, 71, 71, 71, 71, - 71, 71, 2730, 71, 71, 71, 2732, 2731, 2722, 71, - 71, 2735, 2728, 2736, 71, 71, 2727, 71, 2737, 2738, - 71, 2729, 2733, 71, 71, 71, 71, 2743, 2740, 2734, - 71, 2741, 71, 71, 2746, 71, 71, 71, 2739, 71, - 2751, 71, 71, 2742, 2747, 71, 71, 2744, 2745, 2754, - 71, 3043, 2750, 71, 2748, 2753, 2755, 71, 2756, 2757, - 71, 2752, 2749, 2759, 71, 2758, 2760, 71, 2761, 71, - 71, 2763, 71, 71, 71, 2762, 71, 71, 71, 2768, - 2769, 71, 71, 71, 71, 2773, 71, 71, 2774, 71, - 71, 3043, 2764, 2772, 71, 2777, 2765, 2770, 2766, 2767, + 71, 2725, 71, 2726, 2722, 2718, 2720, 71, 71, 2719, + 2728, 71, 2729, 71, 2731, 71, 71, 2724, 2736, 2733, + 2730, 2727, 2735, 71, 71, 2734, 71, 71, 2740, 71, + 71, 71, 2742, 2741, 2732, 71, 71, 2745, 2738, 2746, + 71, 71, 2737, 71, 2747, 2748, 71, 2739, 2743, 71, + 71, 71, 71, 2753, 2750, 2744, 71, 2751, 71, 71, + 2756, 71, 71, 71, 2749, 71, 2761, 71, 71, 2752, + 2757, 71, 71, 2754, 2755, 2764, 71, 3053, 2760, 71, + 2758, 2763, 2765, 71, 2766, 2767, 71, 2762, 2759, 2769, + 71, 2768, 2770, 71, 2771, 71, 71, 2773, 71, 71, - 2778, 71, 2771, 2779, 71, 71, 71, 2775, 2776, 2782, - 2780, 71, 71, 71, 71, 71, 2785, 71, 71, 2786, - 2781, 2784, 71, 2783, 71, 71, 71, 2789, 71, 71, - 71, 2791, 2787, 71, 2792, 71, 2790, 71, 2788, 71, - 71, 71, 71, 71, 2808, 71, 2801, 2793, 2802, 2794, - 2795, 2796, 2804, 2797, 71, 2803, 2798, 2799, 71, 2805, - 71, 2800, 2806, 2809, 71, 71, 2811, 71, 71, 2810, - 2812, 71, 2819, 2807, 2813, 2814, 71, 71, 2815, 2816, - 71, 71, 2817, 2818, 71, 71, 2820, 71, 71, 71, - 71, 2826, 71, 71, 2821, 2825, 71, 2829, 2822, 2843, + 71, 2772, 71, 71, 71, 2778, 2779, 71, 71, 71, + 71, 2783, 71, 71, 2784, 71, 71, 3053, 2774, 2782, + 71, 2787, 2775, 2780, 2776, 2777, 2788, 71, 2781, 2789, + 71, 71, 71, 2785, 2786, 2792, 2790, 71, 71, 71, + 71, 71, 2795, 71, 71, 2796, 2791, 2794, 71, 2793, + 71, 71, 71, 2799, 71, 71, 71, 2801, 2797, 71, + 2802, 71, 2800, 71, 2798, 71, 71, 71, 71, 71, + 2818, 71, 2811, 2803, 2812, 2804, 2805, 2806, 2814, 2807, + 71, 2813, 2808, 2809, 71, 2815, 71, 2810, 2816, 2819, + 71, 71, 2821, 71, 71, 2820, 2822, 71, 2829, 2817, - 2823, 71, 71, 2828, 71, 71, 71, 71, 2824, 71, - 2830, 71, 2834, 71, 2827, 2833, 2864, 2831, 2835, 71, - 2836, 71, 2832, 71, 2837, 71, 2841, 71, 2838, 71, - 71, 2842, 71, 71, 2839, 2847, 71, 2840, 2844, 2850, - 71, 2848, 2845, 2851, 71, 71, 2853, 71, 2899, 71, - 2846, 2852, 2849, 2854, 71, 71, 2856, 71, 2857, 71, - 2855, 2858, 71, 2859, 71, 2860, 71, 2861, 71, 2862, - 71, 2863, 71, 2865, 71, 71, 71, 71, 71, 71, - 2870, 71, 71, 71, 2866, 71, 2874, 71, 2867, 71, - 2876, 71, 71, 2871, 71, 2872, 2883, 2868, 2869, 2873, + 2823, 2824, 71, 71, 2825, 2826, 71, 71, 2827, 2828, + 71, 71, 2830, 71, 71, 71, 71, 2836, 71, 71, + 2831, 2835, 71, 2839, 2832, 2853, 2833, 71, 71, 2838, + 71, 71, 71, 71, 2834, 71, 2840, 71, 2844, 71, + 2837, 2843, 2874, 2841, 2845, 71, 2846, 71, 2842, 71, + 2847, 71, 2851, 71, 2848, 71, 71, 2852, 71, 71, + 2849, 2857, 71, 2850, 2854, 2860, 71, 2858, 2855, 2861, + 71, 71, 2863, 71, 2909, 71, 2856, 2862, 2859, 2864, + 71, 71, 2866, 71, 2867, 71, 2865, 2868, 71, 2869, + 71, 2870, 71, 2871, 71, 2872, 71, 2873, 71, 2875, - 71, 2877, 71, 2878, 2875, 71, 2880, 71, 71, 71, - 2882, 71, 2881, 71, 2885, 71, 71, 71, 2879, 71, - 71, 2889, 2884, 2892, 71, 71, 2890, 2894, 71, 71, - 2886, 2887, 2888, 71, 2891, 2895, 71, 2893, 2896, 71, - 71, 71, 2898, 71, 71, 71, 71, 2907, 2897, 2900, - 2904, 71, 71, 2905, 2901, 2903, 71, 71, 2906, 71, - 71, 71, 71, 71, 2902, 2908, 71, 71, 71, 71, - 71, 2914, 71, 2911, 2918, 2909, 2913, 2910, 2915, 2921, - 71, 2922, 2919, 71, 2916, 2912, 71, 2917, 2923, 71, - 2920, 71, 2924, 2925, 71, 2926, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 2880, 71, 71, 71, + 2876, 71, 2884, 71, 2877, 71, 2886, 71, 71, 2881, + 71, 2882, 2893, 2878, 2879, 2883, 71, 2887, 71, 2888, + 2885, 71, 2890, 71, 71, 71, 2892, 71, 2891, 71, + 2895, 71, 71, 71, 2889, 71, 71, 2899, 2894, 2902, + 71, 71, 2900, 2904, 71, 71, 2896, 2897, 2898, 71, + 2901, 2905, 71, 2903, 2906, 71, 71, 71, 2908, 71, + 71, 71, 71, 2917, 2907, 2910, 2914, 71, 71, 2915, + 2911, 2913, 71, 71, 2916, 71, 71, 71, 71, 71, + 2912, 2918, 71, 71, 71, 71, 71, 2924, 71, 2921, - 2929, 71, 2927, 2930, 2931, 71, 2928, 2934, 71, 71, - 71, 71, 71, 71, 71, 2937, 2939, 71, 2942, 71, - 2933, 2936, 2935, 71, 71, 71, 2932, 2940, 2945, 71, - 2949, 2938, 71, 2941, 71, 2946, 71, 2950, 2943, 71, - 2947, 71, 2944, 71, 2948, 71, 71, 2955, 71, 2956, - 71, 2954, 71, 2951, 2952, 71, 71, 71, 71, 71, - 71, 2960, 71, 71, 2953, 2962, 71, 2969, 71, 71, - 2959, 71, 2964, 2957, 2967, 2958, 2965, 71, 2961, 71, - 71, 2963, 2968, 2973, 71, 2966, 71, 71, 2975, 71, - 2976, 2970, 2974, 71, 71, 71, 71, 2971, 2977, 2972, + 2928, 2919, 2923, 2920, 2925, 2931, 71, 2932, 2929, 71, + 2926, 2922, 71, 2927, 2933, 71, 2930, 71, 2934, 2935, + 71, 2936, 71, 71, 71, 71, 2939, 71, 2937, 2940, + 2941, 71, 2938, 2944, 71, 71, 71, 71, 71, 71, + 71, 2947, 2949, 71, 2952, 71, 2943, 2946, 2945, 71, + 71, 71, 2942, 2950, 2955, 71, 2959, 2948, 71, 2951, + 71, 2956, 71, 2960, 2953, 71, 2957, 71, 2954, 71, + 2958, 71, 71, 2965, 71, 2966, 71, 2964, 71, 2961, + 2962, 71, 71, 71, 71, 71, 71, 2970, 71, 71, + 2963, 2972, 71, 2979, 71, 71, 2969, 71, 2974, 2967, - 2978, 2979, 2981, 2982, 71, 2980, 71, 71, 71, 2984, - 71, 2983, 71, 71, 71, 71, 2985, 2990, 71, 71, - 2987, 71, 2993, 71, 2994, 71, 2986, 71, 71, 71, - 71, 71, 2992, 2988, 2989, 2997, 2995, 2991, 71, 2996, - 71, 3001, 71, 3002, 3000, 71, 71, 2998, 2999, 71, - 3005, 71, 3007, 71, 3008, 3003, 71, 71, 71, 3012, - 71, 3009, 71, 71, 3010, 3006, 71, 3013, 3014, 3015, - 71, 3004, 71, 71, 71, 71, 71, 3011, 71, 3016, - 3017, 3019, 3018, 3021, 71, 71, 71, 71, 71, 3027, - 3023, 3024, 71, 3020, 3022, 3028, 71, 3025, 71, 71, + 2977, 2968, 2975, 71, 2971, 71, 71, 2973, 2978, 2983, + 71, 2976, 71, 71, 2985, 71, 2986, 2980, 2984, 71, + 71, 71, 71, 2981, 2987, 2982, 2988, 2989, 2991, 2992, + 71, 2990, 71, 71, 71, 2994, 71, 2993, 71, 71, + 71, 71, 2995, 3000, 71, 71, 2997, 71, 3003, 71, + 3004, 71, 2996, 71, 71, 71, 71, 71, 3002, 2998, + 2999, 3007, 3005, 3001, 71, 3006, 71, 3011, 71, 3012, + 3010, 71, 71, 3008, 3009, 71, 3015, 71, 3017, 71, + 3018, 3013, 71, 71, 71, 3022, 71, 3019, 71, 71, + 3020, 3016, 71, 3023, 3024, 3025, 71, 3014, 71, 71, - 3031, 3032, 71, 71, 3034, 71, 3026, 3035, 71, 71, - 3033, 3029, 71, 71, 71, 71, 3036, 3030, 3037, 3038, - 3041, 71, 3042, 71, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3039, 3043, 3043, 3040, 43, 43, 43, 43, 43, - 43, 43, 48, 48, 48, 48, 48, 48, 48, 53, - 53, 53, 53, 53, 53, 53, 59, 59, 59, 59, - 59, 59, 59, 64, 64, 64, 64, 64, 64, 64, - 74, 74, 3043, 74, 74, 74, 74, 141, 141, 3043, - 3043, 3043, 141, 141, 143, 143, 3043, 3043, 143, 3043, - 143, 145, 3043, 3043, 3043, 3043, 3043, 145, 148, 148, + 71, 71, 71, 3021, 71, 3026, 3027, 3029, 3028, 3031, + 71, 71, 71, 71, 71, 3037, 3033, 3034, 71, 3030, + 3032, 3038, 71, 3035, 71, 71, 3041, 3042, 71, 71, + 3044, 71, 3036, 3045, 71, 71, 3043, 3039, 71, 71, + 71, 71, 3046, 3040, 3047, 3048, 3051, 71, 3052, 71, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3049, 3053, 3053, + 3050, 43, 43, 43, 43, 43, 43, 43, 48, 48, + 48, 48, 48, 48, 48, 53, 53, 53, 53, 53, + 53, 53, 59, 59, 59, 59, 59, 59, 59, 64, + 64, 64, 64, 64, 64, 64, 74, 74, 3053, 74, + + 74, 74, 74, 142, 142, 3053, 3053, 3053, 142, 142, + 144, 144, 3053, 3053, 144, 3053, 144, 146, 3053, 3053, + 3053, 3053, 3053, 146, 149, 149, 3053, 3053, 3053, 149, + 149, 151, 3053, 3053, 3053, 3053, 3053, 151, 153, 153, + 3053, 153, 153, 153, 153, 75, 75, 3053, 75, 75, + 75, 75, 13, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053 - 3043, 3043, 3043, 148, 148, 150, 3043, 3043, 3043, 3043, - 3043, 150, 152, 152, 3043, 152, 152, 152, 152, 75, - 75, 3043, 75, 75, 75, 75, 13, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043 } ; -static const flex_int16_t yy_chk[5968] = +static const flex_int16_t yy_chk[5994] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2092,654 +2099,658 @@ static const flex_int16_t yy_chk[5968] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3049, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3059, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1000, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 23, 23, 21, 21, 24, 12, 21, 34, 23, 24, + 42, 21, 23, 24, 12, 23, 24, 36, 24, 24, + 21, 26, 26, 27, 27, 42, 28, 69, 34, 84, + 28, 36, 27, 28, 33, 33, 26, 32, 32, 33, + 28, 69, 28, 27, 35, 52, 32, 84, 52, 35, + 63, 63, 32, 35, 40, 33, 32, 109, 40, 35, + 37, 37, 35, 72, 109, 37, 38, 72, 40, 35, + 775, 38, 40, 40, 38, 37, 37, 80, 37, 39, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 39, 38, 39, 41, 41, 38, 38, 77, 41, 80, + 77, 39, 41, 58, 775, 58, 58, 39, 58, 66, + 89, 66, 66, 68, 66, 68, 68, 71, 68, 71, + 71, 66, 71, 81, 74, 86, 74, 74, 71, 74, + 78, 93, 89, 85, 78, 74, 74, 82, 83, 86, + 82, 83, 85, 81, 87, 88, 90, 91, 92, 94, + 87, 93, 95, 91, 83, 96, 87, 98, 87, 1007, + 94, 94, 92, 88, 88, 90, 91, 97, 94, 99, + 95, 97, 100, 96, 99, 101, 102, 98, 101, 103, + 104, 101, 102, 107, 105, 104, 100, 105, 108, 106, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 110, 105, 108, 111, 101, 101, 112, 107, 103, 113, + 111, 102, 114, 110, 116, 104, 115, 105, 106, 112, + 115, 118, 117, 106, 119, 119, 120, 117, 122, 113, + 114, 117, 116, 123, 121, 124, 126, 125, 121, 127, + 125, 118, 133, 122, 128, 127, 120, 121, 131, 126, + 132, 125, 151, 121, 124, 125, 128, 129, 129, 123, + 134, 130, 136, 133, 131, 138, 137, 139, 130, 132, + 135, 137, 135, 159, 136, 129, 134, 138, 129, 130, + 141, 135, 140, 143, 143, 139, 145, 140, 159, 145, + 150, 150, 182, 135, 141, 147, 182, 147, 147, 152, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 189, 189, 191, 187, - 188, 185, 189, 184, 185, 190, 192, 180, 197, 186, - 190, 193, 194, 194, 189, 195, 189, 193, 191, 196, + 147, 152, 152, 153, 152, 153, 153, 155, 153, 156, + 155, 157, 158, 160, 156, 153, 161, 157, 163, 164, + 165, 160, 166, 162, 167, 165, 157, 161, 160, 168, + 158, 162, 169, 167, 164, 168, 168, 163, 170, 171, + 171, 172, 166, 170, 173, 180, 173, 172, 176, 173, + 174, 175, 175, 177, 174, 178, 179, 169, 177, 174, + 178, 185, 184, 181, 174, 180, 173, 176, 179, 181, + 174, 174, 183, 186, 187, 185, 188, 183, 184, 189, + 190, 191, 191, 193, 189, 190, 187, 191, 186, 187, + 192, 194, 181, 199, 188, 192, 195, 196, 196, 191, - 198, 195, 192, 199, 200, 196, 198, 195, 197, 199, - 201, 206, 202, 203, 204, 205, 201, 202, 199, 203, - 204, 207, 205, 208, 206, 200, 209, 207, 210, 211, - 213, 212, 209, 214, 215, 213, 216, 211, 217, 220, - 218, 222, 214, 208, 212, 218, 218, 221, 219, 215, - 210, 221, 216, 219, 223, 224, 225, 220, 217, 226, - 223, 227, 225, 222, 229, 228, 227, 228, 230, 233, - 231, 232, 234, 224, 224, 230, 231, 232, 234, 226, - 235, 236, 242, 229, 237, 237, 238, 238, 233, 243, - 239, 240, 235, 245, 243, 236, 239, 240, 241, 244, + 197, 191, 195, 193, 198, 200, 197, 194, 201, 202, + 198, 200, 197, 199, 201, 203, 208, 204, 205, 206, + 207, 203, 204, 201, 205, 206, 209, 207, 210, 208, + 202, 211, 209, 212, 213, 215, 214, 211, 216, 217, + 215, 218, 213, 219, 222, 220, 224, 216, 210, 214, + 220, 220, 223, 221, 217, 212, 223, 218, 221, 225, + 226, 227, 222, 219, 228, 225, 229, 227, 224, 231, + 230, 229, 230, 232, 235, 233, 234, 236, 226, 226, + 232, 233, 234, 236, 228, 237, 238, 244, 231, 239, + 239, 240, 240, 235, 245, 241, 242, 237, 247, 245, - 241, 246, 247, 248, 249, 242, 255, 250, 248, 246, - 251, 244, 245, 250, 239, 252, 251, 241, 253, 254, - 252, 255, 247, 253, 256, 254, 257, 249, 258, 259, - 260, 262, 266, 261, 262, 264, 264, 259, 256, 261, - 269, 263, 258, 263, 257, 265, 267, 267, 265, 270, - 266, 268, 268, 275, 271, 260, 269, 271, 272, 273, - 274, 285, 272, 276, 270, 278, 274, 275, 273, 276, - 277, 278, 277, 279, 280, 280, 281, 279, 282, 283, - 284, 281, 285, 286, 282, 287, 287, 288, 289, 290, - 288, 291, 293, 290, 279, 295, 286, 296, 284, 283, + 238, 241, 242, 243, 246, 243, 248, 249, 250, 251, + 244, 257, 252, 250, 248, 253, 246, 247, 252, 241, + 254, 253, 243, 255, 256, 254, 257, 249, 255, 258, + 256, 259, 251, 260, 261, 262, 264, 268, 263, 264, + 266, 266, 261, 258, 263, 271, 265, 260, 265, 259, + 267, 269, 269, 267, 272, 268, 270, 270, 277, 273, + 262, 271, 273, 274, 275, 276, 285, 274, 278, 272, + 280, 276, 277, 275, 278, 279, 280, 279, 281, 282, + 282, 283, 281, 284, 286, 285, 283, 287, 288, 284, + 289, 290, 290, 291, 292, 294, 291, 293, 296, 281, - 292, 292, 294, 296, 298, 294, 289, 295, 297, 291, - 293, 297, 300, 301, 302, 303, 298, 305, 303, 302, - 303, 300, 294, 299, 304, 306, 307, 304, 307, 307, - 305, 301, 299, 308, 310, 299, 303, 306, 308, 308, - 299, 299, 299, 299, 309, 311, 312, 309, 313, 314, - 314, 310, 317, 315, 310, 312, 319, 313, 315, 318, - 311, 316, 316, 320, 318, 321, 322, 317, 319, 323, - 326, 324, 324, 327, 324, 323, 335, 335, 327, 329, - 328, 322, 320, 324, 329, 321, 328, 330, 331, 332, - 326, 331, 330, 331, 333, 334, 336, 333, 330, 337, + 149, 293, 298, 289, 286, 287, 295, 295, 297, 288, + 301, 297, 292, 294, 298, 299, 296, 300, 303, 304, + 300, 299, 301, 307, 315, 305, 307, 303, 297, 302, + 305, 306, 308, 315, 306, 148, 306, 304, 302, 309, + 310, 302, 310, 310, 313, 308, 302, 302, 302, 302, + 311, 309, 306, 314, 312, 311, 311, 312, 316, 317, + 317, 313, 319, 319, 313, 318, 320, 316, 314, 321, + 318, 322, 323, 324, 321, 325, 326, 327, 327, 329, + 327, 320, 326, 322, 335, 338, 338, 330, 331, 327, + 325, 323, 330, 324, 331, 332, 333, 146, 335, 329, - 337, 338, 336, 332, 334, 339, 338, 343, 339, 341, - 333, 342, 373, 333, 339, 333, 344, 347, 339, 345, - 347, 348, 343, 350, 373, 351, 339, 340, 340, 341, - 340, 344, 342, 345, 351, 348, 347, 354, 350, 352, - 355, 353, 356, 340, 352, 352, 340, 353, 340, 358, - 340, 349, 357, 349, 349, 360, 359, 356, 354, 355, - 361, 357, 359, 349, 362, 349, 349, 349, 358, 363, - 349, 364, 365, 366, 367, 363, 369, 368, 362, 363, - 361, 360, 368, 372, 370, 371, 371, 374, 376, 367, - 370, 369, 365, 366, 364, 377, 375, 379, 379, 378, + 332, 333, 336, 334, 337, 336, 334, 333, 334, 339, + 340, 340, 341, 337, 344, 339, 342, 341, 336, 342, + 346, 336, 345, 336, 144, 342, 348, 347, 350, 342, + 351, 350, 357, 353, 344, 346, 354, 342, 343, 343, + 348, 343, 347, 345, 351, 354, 355, 350, 353, 356, + 358, 355, 355, 357, 343, 356, 359, 343, 360, 343, + 361, 343, 352, 363, 352, 352, 362, 360, 364, 358, + 365, 359, 362, 367, 352, 368, 352, 352, 352, 361, + 366, 352, 369, 370, 365, 372, 366, 371, 364, 363, + 366, 373, 371, 374, 374, 368, 367, 373, 370, 375, - 379, 374, 375, 372, 378, 380, 381, 382, 387, 387, - 383, 377, 384, 376, 384, 385, 386, 388, 389, 385, - 386, 390, 381, 382, 383, 380, 391, 392, 145, 393, - 394, 399, 384, 389, 397, 386, 388, 390, 393, 394, - 395, 392, 396, 397, 391, 395, 396, 398, 400, 393, - 403, 393, 399, 398, 400, 401, 402, 404, 404, 401, - 405, 402, 406, 406, 407, 408, 409, 409, 410, 407, - 403, 411, 412, 405, 410, 411, 413, 414, 408, 415, - 416, 416, 414, 417, 415, 418, 419, 412, 420, 416, - 421, 423, 422, 421, 426, 417, 422, 413, 424, 424, + 372, 376, 369, 377, 378, 379, 380, 381, 382, 382, + 378, 382, 381, 376, 383, 384, 385, 377, 387, 375, + 387, 386, 380, 388, 389, 390, 390, 388, 389, 391, + 379, 384, 385, 393, 383, 386, 392, 394, 387, 395, + 397, 396, 399, 389, 403, 398, 397, 399, 391, 393, + 396, 392, 400, 395, 398, 394, 400, 401, 402, 407, + 142, 396, 404, 396, 402, 403, 401, 405, 404, 406, + 409, 405, 408, 408, 406, 410, 410, 411, 412, 407, + 413, 413, 411, 409, 414, 415, 416, 417, 418, 415, + 414, 412, 419, 418, 420, 420, 422, 419, 421, 423, - 420, 425, 428, 423, 419, 418, 425, 427, 427, 430, - 430, 431, 432, 433, 434, 426, 435, 437, 438, 439, - 432, 440, 433, 442, 428, 450, 443, 440, 435, 442, - 441, 443, 431, 439, 434, 437, 444, 437, 438, 441, - 445, 446, 447, 448, 446, 450, 449, 452, 445, 453, - 444, 445, 449, 452, 451, 454, 447, 451, 448, 455, - 454, 456, 457, 453, 458, 459, 457, 460, 461, 458, - 462, 452, 460, 463, 466, 468, 469, 467, 476, 468, - 459, 455, 456, 470, 461, 473, 463, 476, 143, 462, - 464, 464, 467, 471, 466, 469, 464, 471, 464, 470, + 424, 416, 425, 420, 429, 425, 427, 426, 417, 429, + 421, 426, 424, 428, 428, 430, 422, 423, 427, 431, + 431, 432, 434, 434, 435, 436, 437, 438, 439, 442, + 441, 444, 443, 436, 447, 437, 430, 444, 446, 447, + 439, 448, 445, 432, 446, 435, 443, 438, 441, 442, + 441, 445, 449, 450, 451, 448, 450, 452, 453, 454, + 449, 456, 455, 449, 453, 455, 457, 456, 451, 458, + 459, 461, 452, 460, 458, 461, 462, 464, 463, 454, + 457, 462, 464, 465, 466, 456, 470, 467, 473, 485, + 508, 472, 459, 463, 460, 472, 471, 474, 475, 465, - 473, 475, 472, 474, 464, 478, 464, 472, 474, 464, - 464, 472, 477, 480, 481, 483, 464, 475, 477, 479, - 485, 478, 479, 477, 482, 482, 484, 484, 487, 486, - 488, 489, 490, 491, 481, 485, 480, 490, 492, 493, - 483, 486, 491, 487, 494, 501, 496, 497, 499, 488, - 494, 497, 498, 489, 493, 496, 500, 492, 498, 502, - 499, 503, 504, 505, 501, 506, 507, 505, 507, 508, - 511, 500, 513, 502, 509, 509, 503, 508, 506, 510, - 504, 512, 511, 514, 513, 510, 514, 512, 515, 516, - 517, 518, 519, 520, 518, 517, 638, 522, 523, 523, + 467, 70, 475, 466, 468, 468, 470, 473, 508, 485, + 468, 471, 468, 474, 477, 479, 476, 478, 468, 480, + 468, 476, 478, 468, 468, 476, 481, 482, 480, 477, + 468, 479, 481, 483, 484, 487, 483, 481, 486, 486, + 488, 488, 490, 482, 489, 492, 491, 493, 494, 495, + 497, 496, 518, 494, 490, 518, 498, 484, 495, 489, + 487, 491, 498, 500, 492, 497, 503, 501, 502, 493, + 496, 501, 500, 504, 502, 505, 506, 507, 503, 509, + 510, 512, 511, 509, 511, 513, 513, 515, 504, 512, + 506, 514, 507, 510, 505, 516, 517, 514, 519, 515, - 521, 519, 515, 529, 516, 521, 521, 638, 519, 520, - 522, 519, 524, 524, 525, 526, 526, 527, 527, 528, - 525, 532, 531, 530, 529, 528, 530, 531, 533, 534, - 535, 536, 534, 537, 538, 535, 533, 539, 538, 541, - 532, 540, 542, 539, 543, 540, 545, 542, 546, 544, - 548, 545, 537, 547, 536, 544, 547, 541, 549, 549, - 550, 547, 546, 553, 543, 547, 551, 552, 548, 554, - 556, 551, 552, 557, 563, 559, 556, 553, 550, 559, - 558, 560, 557, 558, 554, 561, 560, 562, 561, 564, - 563, 565, 562, 566, 567, 568, 569, 569, 565, 567, + 520, 516, 521, 522, 523, 524, 522, 521, 517, 526, + 64, 525, 519, 523, 533, 520, 525, 525, 527, 527, + 523, 524, 526, 523, 528, 528, 529, 530, 530, 531, + 531, 532, 529, 534, 535, 533, 534, 532, 536, 535, + 537, 538, 539, 540, 538, 541, 542, 539, 537, 543, + 542, 545, 544, 546, 547, 543, 544, 536, 546, 548, + 550, 549, 551, 553, 541, 550, 540, 549, 555, 545, + 547, 558, 552, 554, 554, 552, 551, 556, 557, 548, + 552, 553, 556, 557, 552, 558, 555, 559, 561, 562, + 563, 564, 565, 563, 561, 564, 566, 565, 562, 566, - 570, 559, 571, 572, 573, 574, 566, 564, 575, 570, - 576, 695, 581, 573, 575, 568, 576, 574, 582, 572, - 577, 571, 695, 577, 578, 578, 579, 578, 580, 579, - 581, 583, 582, 580, 584, 585, 591, 583, 589, 584, - 586, 585, 587, 586, 588, 590, 592, 587, 593, 588, - 588, 589, 592, 594, 595, 591, 591, 596, 590, 595, - 597, 597, 594, 598, 601, 599, 600, 593, 599, 602, - 598, 605, 600, 603, 602, 607, 601, 596, 603, 603, - 604, 604, 606, 599, 606, 608, 609, 608, 610, 611, - 612, 613, 614, 615, 607, 617, 605, 615, 614, 616, + 567, 570, 559, 568, 569, 567, 572, 571, 570, 573, + 577, 572, 574, 574, 575, 576, 578, 564, 579, 568, + 571, 580, 569, 575, 586, 578, 577, 580, 59, 573, + 579, 581, 582, 584, 576, 582, 584, 581, 583, 583, + 585, 583, 586, 587, 588, 585, 589, 590, 596, 591, + 588, 589, 591, 590, 592, 593, 594, 587, 595, 592, + 593, 593, 598, 599, 597, 601, 54, 596, 596, 594, + 597, 595, 599, 600, 602, 602, 603, 604, 600, 606, + 604, 598, 605, 603, 607, 601, 610, 608, 605, 607, + 612, 606, 608, 608, 614, 604, 609, 609, 611, 613, - 618, 619, 620, 622, 609, 621, 610, 611, 616, 612, - 617, 613, 624, 625, 623, 618, 626, 621, 622, 619, - 623, 620, 627, 628, 629, 625, 624, 628, 630, 631, - 632, 633, 634, 635, 635, 626, 636, 637, 639, 641, - 636, 627, 629, 642, 630, 141, 634, 631, 632, 632, - 633, 643, 639, 640, 644, 641, 637, 649, 640, 646, - 645, 644, 642, 647, 643, 645, 646, 648, 647, 650, - 651, 652, 648, 653, 654, 649, 650, 656, 655, 651, - 656, 658, 653, 655, 657, 652, 654, 659, 657, 660, - 662, 661, 663, 663, 666, 658, 659, 664, 664, 665, + 611, 613, 615, 616, 617, 618, 620, 619, 621, 612, + 620, 610, 614, 619, 622, 623, 624, 621, 625, 626, + 615, 616, 628, 617, 627, 618, 629, 631, 628, 622, + 623, 626, 630, 632, 624, 634, 636, 625, 633, 627, + 629, 635, 633, 637, 630, 638, 631, 640, 640, 639, + 642, 641, 632, 634, 636, 641, 643, 635, 644, 646, + 645, 637, 637, 639, 638, 645, 647, 643, 648, 642, + 649, 650, 644, 651, 652, 646, 650, 649, 653, 652, + 651, 648, 654, 653, 655, 647, 656, 657, 658, 660, + 659, 655, 663, 661, 660, 656, 661, 658, 664, 662, - 665, 668, 669, 666, 660, 661, 664, 670, 669, 671, - 672, 662, 673, 671, 674, 675, 676, 678, 677, 679, - 668, 675, 672, 680, 676, 677, 683, 670, 690, 686, - 689, 691, 674, 698, 690, 678, 692, 673, 696, 689, - 692, 683, 70, 680, 679, 681, 686, 691, 693, 693, - 681, 694, 694, 698, 681, 697, 696, 681, 701, 702, - 699, 703, 704, 701, 681, 681, 699, 681, 707, 697, - 700, 700, 700, 705, 700, 707, 705, 700, 709, 703, - 702, 64, 700, 706, 706, 708, 708, 704, 700, 700, - 710, 710, 711, 709, 713, 712, 715, 711, 712, 713, + 654, 657, 659, 662, 665, 667, 663, 664, 666, 668, + 668, 669, 669, 670, 670, 671, 673, 674, 675, 665, + 669, 676, 666, 674, 671, 676, 667, 677, 678, 679, + 680, 683, 681, 684, 682, 673, 680, 685, 675, 677, + 681, 682, 694, 706, 691, 688, 695, 679, 706, 683, + 696, 694, 695, 678, 698, 698, 701, 685, 684, 686, + 688, 691, 700, 697, 686, 703, 696, 697, 686, 699, + 699, 686, 702, 700, 701, 707, 704, 708, 686, 686, + 53, 686, 704, 709, 710, 703, 702, 705, 705, 705, + 711, 705, 715, 711, 705, 708, 707, 713, 709, 705, - 714, 716, 714, 717, 718, 720, 719, 717, 715, 721, - 721, 722, 725, 720, 723, 724, 724, 726, 727, 760, - 716, 728, 730, 730, 718, 719, 722, 728, 723, 726, - 725, 729, 731, 760, 733, 734, 729, 731, 731, 733, - 727, 734, 735, 738, 736, 737, 738, 739, 735, 736, - 740, 737, 743, 739, 741, 741, 742, 742, 740, 744, - 743, 745, 746, 747, 748, 748, 745, 749, 751, 746, - 750, 752, 754, 761, 751, 755, 749, 744, 750, 757, - 756, 754, 747, 758, 755, 756, 758, 759, 757, 763, - 752, 762, 759, 765, 765, 766, 767, 768, 761, 764, + 712, 712, 714, 714, 713, 705, 705, 715, 717, 710, + 716, 716, 718, 717, 719, 718, 720, 721, 720, 719, + 722, 723, 724, 726, 725, 723, 727, 727, 732, 721, + 728, 726, 729, 730, 730, 731, 733, 789, 734, 722, + 732, 789, 724, 725, 734, 728, 729, 735, 736, 736, + 737, 740, 735, 731, 739, 737, 737, 740, 733, 739, + 741, 744, 742, 743, 744, 745, 741, 742, 746, 743, + 749, 745, 747, 747, 748, 748, 746, 750, 749, 751, + 752, 753, 754, 754, 751, 755, 757, 752, 756, 758, + 760, 767, 757, 761, 755, 750, 756, 763, 762, 760, - 762, 769, 763, 774, 764, 764, 768, 772, 770, 772, - 766, 770, 773, 773, 776, 767, 775, 777, 778, 770, - 779, 775, 781, 780, 774, 769, 782, 784, 783, 785, - 786, 781, 783, 789, 788, 776, 786, 777, 778, 790, - 792, 787, 779, 780, 795, 784, 788, 796, 785, 782, - 787, 791, 789, 790, 792, 793, 796, 791, 794, 794, - 793, 797, 798, 799, 795, 800, 801, 803, 802, 805, - 798, 806, 804, 803, 807, 805, 808, 810, 811, 812, - 807, 797, 808, 799, 812, 801, 804, 800, 802, 809, - 811, 806, 813, 809, 814, 814, 810, 815, 811, 816, + 753, 764, 761, 762, 764, 765, 763, 766, 758, 768, + 765, 769, 771, 771, 770, 772, 767, 773, 768, 770, + 770, 766, 774, 776, 769, 778, 776, 778, 779, 779, + 772, 774, 780, 781, 776, 782, 773, 783, 781, 784, + 785, 786, 787, 788, 792, 790, 791, 48, 794, 793, + 792, 787, 795, 780, 796, 798, 782, 783, 793, 784, + 794, 786, 785, 790, 797, 791, 788, 799, 796, 798, + 797, 795, 799, 800, 800, 801, 802, 803, 804, 805, + 806, 807, 809, 808, 810, 802, 804, 811, 809, 812, + 813, 816, 819, 811, 817, 801, 813, 803, 810, 805, - 817, 818, 816, 815, 819, 820, 821, 821, 822, 825, - 819, 823, 828, 813, 818, 829, 823, 826, 817, 824, - 824, 826, 827, 827, 825, 820, 822, 830, 831, 833, - 834, 836, 830, 837, 828, 829, 839, 839, 840, 842, - 842, 841, 840, 843, 834, 844, 845, 831, 846, 844, - 852, 836, 847, 833, 837, 838, 841, 847, 838, 848, - 838, 845, 846, 850, 838, 852, 838, 854, 843, 849, - 856, 838, 857, 848, 849, 849, 838, 850, 851, 854, - 853, 855, 851, 858, 856, 853, 855, 862, 862, 865, - 859, 866, 860, 857, 851, 853, 859, 858, 860, 861, + 807, 814, 806, 808, 815, 823, 817, 814, 815, 812, + 816, 818, 824, 819, 817, 821, 818, 820, 820, 822, + 825, 821, 822, 823, 826, 824, 825, 827, 827, 828, + 829, 830, 830, 831, 832, 829, 833, 833, 832, 834, + 835, 836, 839, 837, 826, 840, 836, 828, 831, 842, + 843, 845, 845, 846, 849, 847, 896, 846, 851, 840, + 835, 834, 837, 848, 848, 896, 839, 43, 852, 842, + 847, 843, 844, 851, 850, 844, 854, 844, 850, 849, + 853, 844, 852, 844, 856, 853, 855, 858, 844, 859, + 854, 855, 855, 844, 859, 857, 860, 863, 856, 857, - 867, 863, 864, 869, 870, 861, 863, 871, 864, 870, - 866, 865, 872, 873, 873, 869, 876, 874, 867, 868, - 868, 871, 874, 875, 872, 868, 59, 868, 877, 878, - 876, 875, 880, 868, 879, 879, 880, 882, 868, 868, - 884, 883, 885, 882, 883, 868, 886, 877, 878, 887, - 888, 889, 886, 890, 887, 885, 891, 892, 893, 884, - 889, 894, 890, 892, 896, 895, 898, 893, 897, 888, - 895, 899, 891, 902, 903, 904, 900, 906, 901, 902, - 894, 904, 897, 899, 896, 900, 898, 901, 908, 909, - 911, 903, 910, 906, 912, 913, 914, 919, 915, 924, + 861, 862, 858, 864, 859, 861, 865, 866, 860, 869, + 867, 857, 865, 866, 869, 862, 867, 864, 863, 868, + 868, 870, 871, 872, 875, 873, 876, 870, 878, 879, + 879, 876, 880, 877, 882, 883, 875, 880, 884, 892, + 878, 881, 872, 873, 871, 874, 874, 877, 882, 881, + 885, 874, 892, 874, 883, 886, 886, 884, 887, 874, + 889, 891, 887, 893, 874, 874, 889, 890, 885, 893, + 890, 874, 894, 895, 897, 898, 899, 894, 900, 901, + 891, 902, 899, 897, 903, 904, 902, 900, 905, 906, + 909, 898, 895, 907, 908, 910, 909, 913, 901, 904, - 918, 914, 908, 915, 911, 918, 919, 920, 920, 909, - 913, 910, 912, 921, 922, 924, 925, 927, 928, 921, - 927, 925, 925, 929, 926, 926, 930, 922, 926, 931, - 932, 933, 928, 934, 935, 936, 937, 933, 938, 941, - 935, 937, 931, 929, 930, 932, 940, 944, 54, 940, - 936, 942, 938, 934, 943, 947, 942, 945, 949, 943, - 941, 946, 945, 944, 949, 950, 946, 947, 951, 952, - 953, 953, 955, 954, 951, 952, 956, 957, 957, 956, - 958, 950, 954, 959, 960, 961, 962, 963, 961, 964, - 955, 965, 966, 963, 970, 964, 965, 966, 958, 962, + 911, 906, 907, 908, 903, 915, 911, 916, 905, 917, + 918, 919, 910, 913, 928, 920, 921, 922, 925, 915, + 928, 921, 922, 925, 918, 926, 929, 916, 917, 919, + 920, 927, 927, 931, 926, 932, 935, 936, 937, 929, + 932, 932, 933, 933, 934, 938, 933, 934, 939, 931, + 935, 941, 943, 940, 942, 945, 937, 936, 938, 940, + 942, 944, 947, 939, 948, 947, 944, 943, 949, 945, + 950, 941, 951, 949, 952, 950, 953, 954, 956, 952, + 957, 953, 960, 960, 956, 948, 958, 959, 951, 954, + 961, 962, 958, 959, 963, 965, 957, 963, 966, 961, - 967, 968, 959, 971, 960, 967, 973, 968, 972, 974, - 974, 973, 970, 975, 972, 976, 977, 978, 979, 980, - 978, 979, 975, 971, 976, 981, 982, 983, 987, 984, - 980, 985, 986, 987, 977, 984, 989, 985, 982, 988, - 988, 991, 990, 981, 992, 993, 983, 986, 992, 994, - 995, 996, 998, 991, 1001, 989, 990, 1002, 994, 999, - 999, 1003, 1004, 993, 1007, 1005, 1013, 1004, 1001, 995, - 53, 998, 1002, 1003, 1005, 1008, 996, 1006, 1006, 1009, - 1013, 1008, 1010, 1014, 1007, 1009, 1011, 1010, 1011, 1012, - 1015, 1016, 1017, 1018, 1012, 1015, 1020, 1014, 1019, 1025, + 964, 964, 967, 968, 970, 969, 968, 972, 971, 962, + 970, 973, 972, 965, 971, 974, 973, 966, 969, 975, + 974, 977, 967, 978, 979, 975, 980, 981, 981, 982, + 979, 980, 983, 984, 985, 987, 988, 985, 982, 977, + 989, 983, 986, 978, 990, 986, 987, 991, 996, 992, + 993, 984, 989, 991, 988, 992, 994, 995, 995, 997, + 998, 994, 999, 990, 1000, 993, 999, 996, 1001, 1002, + 1003, 1005, 998, 997, 1006, 1006, 1009, 1001, 1008, 1011, + 1012, 1010, 1000, 1014, 1011, 1013, 1013, 14, 1002, 1012, + 1005, 1009, 1008, 1010, 1015, 1003, 1016, 1020, 1021, 1017, - 1018, 1022, 1022, 1023, 1024, 1027, 1016, 1028, 1030, 1030, - 1026, 1017, 1028, 1019, 1025, 1020, 1026, 1023, 1034, 1031, - 1036, 1028, 1024, 1028, 1031, 1027, 1028, 1032, 1032, 1033, - 1035, 1037, 1034, 1035, 1038, 1039, 1033, 1040, 1043, 1036, - 1039, 1041, 1042, 1038, 1045, 1045, 1041, 1046, 1048, 1037, - 1047, 1051, 1046, 1042, 1049, 1047, 1040, 1043, 1050, 1049, - 1051, 1052, 1050, 1053, 1054, 1055, 1056, 1057, 1048, 1059, - 1058, 1060, 1061, 1062, 1057, 1069, 1052, 1055, 1053, 1062, - 1063, 1056, 1058, 1054, 1064, 1065, 1070, 1066, 1059, 1069, - 1061, 1068, 1060, 1071, 1070, 1063, 1066, 1068, 1072, 1073, + 1015, 1019, 1016, 1014, 1017, 1018, 1019, 1018, 1022, 1023, + 1024, 1020, 1021, 1022, 1025, 1026, 1027, 1029, 1029, 1030, + 1031, 1025, 1032, 1034, 1023, 1033, 1037, 1037, 1041, 1024, + 1026, 1033, 1043, 1030, 1035, 1027, 1038, 1032, 1031, 1035, + 1040, 1038, 1041, 1034, 1039, 1039, 1042, 1040, 1035, 1042, + 1035, 1043, 1044, 1035, 1045, 1046, 1047, 1048, 1049, 1050, + 1046, 1053, 1048, 1045, 1052, 1052, 1053, 1054, 1055, 1049, + 1044, 1056, 1054, 1057, 1058, 1047, 1056, 1057, 1050, 1059, + 1060, 1061, 1063, 1058, 1062, 1064, 1065, 1066, 1055, 1067, + 1068, 1071, 1064, 1069, 1059, 1060, 1062, 1063, 1065, 1069, - 1075, 1074, 1076, 1072, 1064, 1065, 1074, 1074, 1077, 1078, - 1078, 1073, 1080, 1071, 1081, 1084, 1076, 1085, 1082, 1075, - 1084, 1077, 1079, 1081, 1082, 1080, 1085, 1079, 1083, 1083, - 1079, 1079, 1086, 1090, 1087, 1079, 1093, 1088, 1086, 1087, - 1094, 1079, 1088, 1089, 1089, 1079, 1091, 1091, 1092, 1096, - 1095, 1092, 1097, 1092, 1090, 1099, 1093, 1097, 1094, 1095, - 1098, 1100, 1101, 1104, 1134, 1102, 1134, 1100, 1101, 1096, - 1102, 1103, 1104, 1099, 1098, 1103, 1111, 1104, 1109, 1104, - 1107, 1104, 1109, 1104, 1105, 1105, 1106, 1106, 1110, 1106, - 1112, 1107, 1113, 1114, 1111, 1115, 1116, 1113, 1113, 1112, + 1061, 1070, 1072, 1073, 1074, 1077, 1066, 1076, 1068, 1078, + 1067, 1071, 1073, 1076, 1079, 1080, 1070, 1078, 1081, 1077, + 1080, 1082, 1072, 1083, 1074, 1084, 1082, 1082, 1085, 1089, + 1081, 1086, 1086, 1088, 1079, 1091, 1091, 13, 1089, 1084, + 1092, 1085, 1083, 1087, 1090, 1092, 1088, 1094, 1087, 1093, + 1090, 1087, 1087, 1094, 1095, 1096, 1087, 1098, 1093, 1095, + 1096, 1101, 1087, 1097, 1097, 1102, 1087, 1099, 1099, 1100, + 1103, 1104, 1100, 1106, 1100, 1105, 1107, 0, 1098, 1103, + 1105, 1101, 1108, 1102, 1109, 1111, 1112, 1106, 1108, 1111, + 1109, 1104, 1110, 1122, 1107, 1112, 1118, 1110, 1113, 1113, - 1115, 1118, 1117, 1110, 1119, 1120, 1121, 1122, 1122, 1123, - 1116, 1117, 1121, 1124, 1126, 1114, 1125, 1123, 1128, 1120, - 1118, 1125, 1127, 1119, 1129, 1130, 1132, 1124, 1126, 1138, - 1130, 1127, 1131, 1131, 1133, 1133, 1128, 1136, 1137, 1141, - 1136, 1132, 1139, 1137, 1140, 1140, 1142, 1142, 1138, 1129, - 1144, 1139, 1143, 1143, 1145, 1144, 1146, 1147, 1147, 1141, - 1148, 1149, 1150, 1151, 1149, 1152, 1154, 1153, 1151, 1153, - 1156, 1157, 48, 1156, 1152, 1145, 1158, 1146, 1159, 1160, - 1148, 1158, 1150, 1159, 1154, 1161, 1157, 1160, 1162, 1164, - 1161, 1163, 1163, 1162, 1164, 1165, 1166, 1167, 1168, 1170, + 1112, 1115, 1112, 1119, 1112, 1117, 1112, 1114, 1114, 1117, + 1114, 1118, 1115, 1120, 1121, 1122, 1124, 1125, 1123, 1121, + 1121, 1119, 1120, 1123, 1126, 1127, 1125, 1128, 1129, 1131, + 1124, 1130, 1130, 1132, 1129, 1133, 1134, 1131, 1136, 1135, + 1133, 1128, 1137, 1126, 1127, 1140, 1138, 1132, 1135, 1149, + 1134, 1138, 1139, 1139, 1141, 1141, 1136, 1142, 1144, 1142, + 1140, 1144, 1146, 1145, 1147, 1148, 1148, 1137, 1145, 1149, + 1150, 1150, 1152, 1147, 1151, 1151, 1153, 1152, 1154, 1155, + 1155, 1146, 1156, 1157, 1158, 1159, 1157, 1160, 1162, 1161, + 1159, 1161, 1164, 1165, 0, 1164, 1160, 1153, 1166, 1154, - 1171, 1173, 1166, 1172, 1167, 1170, 1171, 1173, 1172, 1174, - 1175, 1168, 1176, 1165, 1177, 1177, 1178, 1180, 1174, 1181, - 1182, 1183, 1184, 1176, 1186, 1187, 1182, 1183, 1184, 1175, - 1186, 1188, 1189, 1190, 1191, 1193, 1178, 1180, 1194, 1187, - 1192, 1192, 1181, 1195, 1189, 1187, 1198, 1190, 1196, 1197, - 1197, 1188, 1191, 1196, 1199, 1193, 1201, 43, 1203, 1199, - 1202, 1195, 1204, 1194, 1205, 1202, 1202, 1206, 1207, 1198, - 1208, 1204, 1205, 1211, 1209, 1201, 1203, 1217, 1210, 1209, - 1210, 1206, 1209, 1207, 1213, 1208, 1215, 1211, 1208, 1214, - 1213, 1218, 1219, 1214, 1216, 1221, 1217, 1215, 1220, 1216, + 1167, 1168, 1156, 1166, 1158, 1167, 1162, 1169, 1165, 1168, + 1170, 1172, 1169, 1171, 1171, 1170, 1172, 1173, 1174, 1175, + 1176, 1178, 1179, 1181, 1174, 1180, 1175, 1178, 1179, 1181, + 1180, 1182, 1183, 1176, 1184, 1173, 1185, 1185, 1186, 1188, + 1182, 1189, 1190, 1191, 1192, 1184, 1194, 1195, 1190, 1191, + 1192, 1183, 1194, 1196, 1197, 1198, 1199, 1201, 1186, 1188, + 1202, 1195, 1200, 1200, 1189, 1203, 1197, 1195, 1206, 1198, + 1204, 1205, 1205, 1196, 1199, 1204, 1207, 1201, 1209, 0, + 1211, 1207, 1210, 1203, 1212, 1202, 1213, 1210, 1210, 1214, + 1215, 1206, 1216, 1212, 1213, 1219, 1217, 1209, 1211, 1225, - 1216, 1222, 1223, 1220, 1225, 1226, 1222, 1227, 1228, 1228, - 1219, 1229, 1230, 1221, 1231, 1229, 1233, 1218, 1225, 1234, - 1232, 1235, 1223, 1226, 1236, 1227, 1232, 1237, 1233, 1238, - 1230, 1239, 1241, 1231, 1240, 1235, 1239, 1241, 1234, 1236, - 1242, 1240, 1237, 1243, 1244, 1244, 1245, 1246, 1238, 1247, - 1248, 1249, 1243, 1246, 1250, 1248, 1257, 1249, 1242, 1258, - 1250, 1245, 1251, 1251, 1252, 1252, 1254, 1254, 1255, 1256, - 1247, 1259, 1255, 1258, 1257, 1260, 1261, 1261, 1256, 1262, - 1263, 1265, 1260, 1266, 1264, 1267, 1259, 1268, 1263, 1264, - 1267, 1267, 1268, 1268, 1269, 1265, 1270, 1270, 1271, 1262, + 1218, 1217, 1218, 1214, 1217, 1215, 1221, 1216, 1223, 1219, + 1216, 1222, 1221, 1226, 1227, 1222, 1224, 1229, 1225, 1223, + 1228, 1224, 1224, 1230, 1231, 1228, 1233, 1234, 1230, 1235, + 1236, 1236, 1227, 1237, 1238, 1229, 1239, 1237, 1241, 1226, + 1233, 1242, 1240, 1243, 1231, 1234, 1244, 1235, 1240, 1245, + 1241, 1246, 1238, 1247, 1249, 1239, 1248, 1243, 1247, 1249, + 1242, 1244, 1250, 1248, 1245, 1251, 1252, 1252, 1253, 1255, + 1246, 1254, 1254, 1256, 1251, 1255, 1257, 1266, 1258, 1259, + 1250, 1257, 0, 1253, 1258, 1259, 1260, 1260, 1261, 1261, + 1263, 1263, 1264, 1265, 1256, 1266, 1264, 1267, 1268, 1269, - 1272, 1273, 1266, 1274, 1275, 1276, 1277, 1278, 1274, 1280, - 1273, 1279, 1281, 1278, 1269, 1282, 1279, 1271, 1281, 1272, - 1283, 1284, 1285, 1275, 1277, 1276, 1283, 1284, 1286, 1287, - 1288, 1289, 1290, 14, 1282, 1280, 1291, 1292, 1292, 1293, - 1294, 1285, 1293, 1295, 1295, 1289, 1298, 1286, 1287, 1288, - 1298, 1291, 1294, 1290, 1296, 1296, 1297, 1299, 1300, 1301, - 1302, 1297, 1302, 1304, 1306, 1305, 1302, 1300, 1304, 1307, - 1299, 1309, 1301, 1308, 1308, 1310, 1309, 1311, 1312, 1302, - 1305, 1310, 1313, 1316, 1306, 1307, 1314, 1313, 1317, 1315, - 1314, 1312, 1311, 1315, 1318, 1319, 1320, 1320, 1322, 1324, + 1270, 1270, 1265, 1271, 1272, 1273, 1269, 1274, 1275, 1276, + 1273, 1267, 1272, 1268, 1276, 1276, 1278, 1279, 1279, 1277, + 1280, 1274, 1281, 1271, 1277, 1277, 1282, 1275, 1283, 1284, + 1285, 1286, 1287, 1283, 1289, 1282, 1278, 1288, 1287, 1280, + 1290, 1281, 1288, 1291, 1294, 1292, 1290, 1293, 1284, 1286, + 1285, 1292, 1295, 1293, 1296, 1297, 1298, 1299, 1301, 1301, + 1289, 1300, 1291, 1294, 1302, 1303, 1309, 1302, 1304, 1304, + 1298, 1295, 1308, 1296, 1297, 1309, 1300, 1303, 1299, 1305, + 1305, 1306, 1310, 1307, 1313, 1308, 1306, 1307, 1311, 1313, + 1311, 1314, 1315, 1316, 1311, 1310, 1317, 1317, 1318, 1319, - 1325, 1319, 1328, 1316, 1327, 1325, 1317, 1326, 1326, 1334, - 1327, 1330, 1330, 1335, 1318, 1332, 1322, 1338, 1332, 1339, - 1324, 1341, 1328, 1333, 1333, 1334, 1342, 1337, 1339, 1335, - 1337, 1340, 1340, 1343, 1344, 1345, 1341, 1338, 1347, 1344, - 1346, 1346, 1348, 1349, 1350, 1350, 1351, 1342, 1352, 1345, - 1353, 1357, 1343, 1359, 1354, 1353, 1347, 1348, 1355, 1355, - 1351, 1356, 1358, 1358, 1362, 1356, 1352, 1360, 1349, 1354, - 1361, 1357, 1363, 1366, 1361, 1359, 1367, 1363, 1360, 1365, - 1365, 1368, 1369, 1362, 1370, 1371, 1371, 1372, 1373, 1375, - 1367, 1366, 1372, 1374, 1376, 1377, 1369, 1380, 1375, 1376, + 1320, 1321, 1325, 1318, 1327, 1319, 1314, 1311, 1322, 1316, + 1326, 1331, 1315, 1322, 1321, 1320, 1323, 1324, 1333, 1328, + 1323, 1324, 1325, 1337, 1327, 1328, 1329, 1329, 1326, 1331, + 1334, 1335, 1335, 1343, 1336, 1334, 1339, 1339, 1341, 1333, + 1336, 1341, 1344, 1337, 1342, 1342, 1347, 1346, 1348, 1343, + 1346, 1349, 1349, 1350, 1351, 1352, 1353, 1348, 1344, 1354, + 1356, 1353, 1355, 1355, 1357, 1358, 1347, 1360, 1350, 1359, + 1359, 1361, 1362, 1354, 1352, 1351, 1363, 1362, 1356, 1357, + 1365, 1360, 1364, 1364, 1365, 1366, 1367, 1367, 1368, 1361, + 1358, 1363, 1369, 1370, 1371, 1372, 1375, 1370, 1374, 1374, - 1368, 1368, 1378, 1380, 1378, 1379, 1381, 1384, 1373, 1370, - 1379, 1382, 1386, 1374, 1387, 1377, 1390, 1382, 1385, 1385, - 1387, 1384, 1389, 1391, 1391, 1393, 1381, 1389, 1392, 1392, - 1394, 1386, 1395, 1396, 1397, 1397, 1396, 1398, 1399, 1393, - 1390, 1402, 1407, 1411, 1411, 1401, 1402, 1395, 1394, 1398, - 1400, 1401, 1403, 1400, 1405, 1403, 1400, 1406, 1399, 1409, - 1413, 1408, 1406, 1405, 1408, 1409, 1413, 1407, 1400, 1410, - 1414, 1403, 1412, 1412, 1410, 1414, 1415, 1416, 1417, 1418, - 1419, 1420, 1421, 1419, 1424, 1422, 1423, 1420, 1421, 1415, - 1422, 1425, 1423, 1426, 1426, 1416, 1425, 1417, 1427, 1418, + 1372, 1376, 1377, 1369, 1378, 1366, 1379, 1380, 1380, 1382, + 1368, 1381, 1383, 1371, 1375, 1376, 1381, 1384, 1378, 1385, + 1386, 1377, 1377, 1387, 1385, 1387, 1384, 1390, 1388, 1382, + 1389, 1379, 1383, 1388, 1393, 1391, 1389, 1394, 1394, 1395, + 1386, 1391, 1399, 1396, 1403, 1398, 1402, 1390, 1393, 1396, + 1398, 1400, 1400, 1401, 1401, 1404, 1405, 1407, 1395, 1405, + 1402, 1408, 1403, 1406, 1406, 1409, 1399, 1410, 1409, 1407, + 1404, 1409, 1411, 1410, 1415, 1412, 1414, 1411, 1412, 1415, + 1416, 1408, 1418, 1409, 1417, 1414, 1419, 1417, 1418, 1420, + 1420, 1419, 1421, 1421, 1412, 1422, 1424, 1423, 1425, 1426, - 1428, 1429, 1430, 1427, 1433, 1431, 1432, 1424, 1435, 1436, - 1434, 1437, 1438, 1439, 1435, 1442, 1433, 1447, 1428, 1431, - 1432, 1429, 1430, 1434, 1441, 1441, 1438, 1443, 1445, 1436, - 1446, 1437, 1443, 1448, 1439, 1442, 1444, 1444, 1449, 1450, - 1453, 1447, 1451, 1445, 1446, 1455, 1452, 1449, 1457, 1451, - 1458, 1448, 1462, 1458, 1450, 1452, 1453, 1461, 1452, 1465, - 1455, 1459, 1459, 1460, 1460, 1455, 1464, 1464, 1463, 1461, - 1462, 1463, 1465, 1457, 1466, 1467, 1468, 1469, 1470, 1471, - 1467, 1468, 1472, 1473, 1475, 1476, 1476, 1477, 1471, 1474, - 1475, 1478, 1473, 1466, 1470, 1473, 1469, 1479, 1474, 1480, + 1427, 1422, 1423, 1428, 1429, 1416, 1428, 1430, 1432, 1424, + 1429, 1433, 1431, 1430, 1432, 1437, 1425, 1431, 1426, 1434, + 1427, 1435, 1435, 1436, 1434, 1438, 1439, 1440, 1436, 1441, + 1443, 1444, 1445, 1437, 1433, 1446, 1447, 1448, 1445, 1449, + 1457, 1440, 1443, 1441, 1444, 1438, 1439, 1451, 1451, 1452, + 1455, 1448, 1453, 1454, 1454, 1446, 1447, 1453, 1456, 1458, + 1449, 1459, 1462, 1460, 1457, 1455, 1461, 1463, 1467, 1452, + 1459, 1462, 1456, 1461, 1462, 1465, 1468, 1458, 1460, 1468, + 1469, 1469, 1471, 1463, 1470, 1470, 1472, 1475, 1473, 1476, + 1465, 1473, 1479, 1467, 1471, 1465, 1474, 1474, 1477, 1480, - 1481, 1472, 1482, 1485, 1478, 1486, 1488, 1477, 1487, 1487, - 1489, 1493, 1490, 1480, 1482, 1479, 1481, 1490, 1492, 1489, - 1491, 1491, 1488, 1486, 1494, 1495, 1496, 1492, 1485, 1493, - 1492, 1496, 1496, 1498, 1499, 1491, 1500, 1501, 1502, 1503, - 1504, 1504, 1501, 1495, 1502, 1494, 1505, 1498, 1506, 1499, - 1507, 1510, 1505, 1506, 1508, 1511, 1507, 1503, 1500, 1512, - 1508, 1513, 1515, 1514, 1519, 1512, 1514, 1517, 1515, 1511, - 1520, 1510, 1514, 1521, 1513, 1517, 1522, 1523, 1524, 1525, - 1526, 1521, 1528, 1519, 1530, 1522, 1527, 1527, 1528, 1520, - 1523, 1524, 1529, 1525, 1526, 1531, 1532, 1530, 1529, 1533, + 1475, 1478, 1482, 1477, 1472, 1481, 1478, 1483, 1476, 1484, + 1487, 1479, 1486, 1486, 1481, 1480, 1483, 1485, 1484, 1483, + 1488, 1482, 1489, 1485, 1490, 1491, 1495, 1492, 1496, 1498, + 1487, 1497, 1497, 1488, 1499, 1501, 1501, 1500, 1490, 1492, + 1489, 1491, 1500, 1499, 1502, 1498, 1496, 1503, 1504, 1505, + 1501, 1495, 1506, 1502, 1508, 1509, 1502, 1506, 1506, 1510, + 1513, 1511, 1514, 1514, 1520, 1503, 1511, 1505, 1508, 1504, + 1509, 1512, 1521, 1515, 1523, 1516, 1517, 1512, 1513, 1515, + 1516, 1510, 1517, 1518, 1520, 1522, 1521, 1523, 1525, 1518, + 1524, 1522, 1527, 1524, 1525, 1529, 1530, 1531, 1532, 1524, - 1534, 1535, 1536, 1537, 1538, 1540, 1540, 1535, 1527, 1541, - 1547, 13, 1542, 1534, 1532, 1531, 1542, 1549, 1533, 1537, - 1543, 1544, 1538, 1545, 1536, 1543, 1544, 1546, 1545, 1541, - 1550, 1550, 1549, 1547, 1551, 1552, 1546, 1553, 1554, 1554, - 1555, 1556, 1559, 1557, 1560, 1558, 1561, 1552, 1556, 1563, - 1562, 1654, 1561, 1551, 1555, 1557, 1553, 1558, 1654, 1564, - 1566, 1559, 1562, 1566, 1560, 1564, 1570, 1563, 1565, 1565, - 1567, 1567, 1569, 1571, 1573, 1570, 1574, 1569, 1574, 1571, - 1572, 1572, 1575, 1576, 1577, 1575, 1573, 1578, 1580, 1579, - 1581, 1584, 1582, 1580, 1583, 1586, 1584, 1588, 1592, 1581, + 1527, 1537, 1537, 1533, 1534, 1531, 1535, 1532, 1536, 1541, + 1542, 1540, 1538, 1539, 1529, 1530, 1533, 1534, 1538, 1539, + 1535, 1543, 1536, 1537, 1540, 1544, 1545, 1546, 1542, 1541, + 1547, 0, 1545, 1548, 1550, 1550, 1551, 1552, 1544, 1553, + 1543, 1552, 1554, 1555, 1553, 1556, 1547, 1554, 1555, 1546, + 1557, 1548, 1559, 1561, 1556, 1563, 1551, 1560, 1560, 1562, + 1564, 1564, 1565, 1566, 1569, 1567, 1568, 1559, 1570, 1571, + 1566, 1562, 1561, 1557, 1563, 1571, 1565, 1567, 1568, 1572, + 1573, 1574, 0, 1569, 1575, 1575, 1576, 1574, 1570, 1576, + 1579, 1572, 1577, 1577, 1580, 1579, 1581, 1583, 1573, 1582, - 0, 1585, 1588, 1576, 1582, 1578, 1577, 1579, 1587, 1583, - 1585, 1589, 1591, 1587, 1593, 1586, 1590, 1590, 1591, 1592, - 1587, 1594, 1595, 1585, 1597, 1596, 1589, 1596, 1598, 1598, - 1599, 1599, 1601, 1593, 1600, 1600, 1604, 1594, 1597, 1605, - 1597, 1612, 1595, 1602, 1602, 1603, 1603, 1606, 1606, 1607, - 1608, 1609, 1601, 1607, 1609, 1611, 1608, 1604, 1613, 1612, - 1605, 1611, 1614, 1615, 1613, 1618, 1615, 1616, 1616, 1617, - 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1625, 1626, 1632, - 1629, 1622, 1625, 1625, 1619, 1619, 1619, 1614, 1627, 1628, - 1627, 1619, 1626, 1620, 1621, 1629, 1623, 1630, 1631, 1632, + 1582, 1586, 1581, 1580, 1584, 1585, 1584, 1587, 1585, 1583, + 1588, 1590, 1589, 1591, 1592, 1594, 1590, 1593, 1595, 1596, + 1594, 1586, 1591, 1600, 1600, 1602, 1592, 1595, 1588, 1587, + 1589, 1597, 1593, 1598, 1599, 1601, 1597, 1603, 1598, 1596, + 1595, 1601, 1604, 1597, 1605, 1606, 1602, 1606, 1611, 1599, + 1614, 1607, 1608, 1608, 1609, 1609, 1603, 1615, 1604, 1610, + 1610, 1612, 1612, 1619, 1605, 1607, 1619, 1607, 1611, 1613, + 1613, 1614, 1616, 1616, 1618, 1617, 1621, 1622, 1615, 1617, + 1618, 1623, 1621, 1624, 1629, 1625, 1630, 1623, 1625, 1626, + 1626, 1627, 1627, 1628, 1631, 1622, 1629, 1629, 1629, 1628, - 1628, 1633, 1635, 1630, 1634, 1634, 1637, 1631, 1636, 1636, - 1638, 1639, 1639, 1640, 1640, 1641, 1644, 1644, 1645, 1649, - 1646, 1648, 1633, 1651, 1651, 1650, 1637, 1652, 1635, 1646, - 1648, 1650, 1638, 1655, 1653, 1641, 1656, 1657, 1657, 1658, - 1649, 1659, 1655, 1645, 1663, 1661, 1662, 1664, 1652, 1653, - 1661, 1668, 1662, 1665, 1664, 1666, 1668, 1659, 1670, 1665, - 1669, 1666, 1656, 1671, 1663, 1658, 1667, 1667, 1672, 1669, - 1673, 1674, 1675, 1673, 1676, 1676, 1678, 1677, 1670, 1679, - 1672, 1680, 1671, 1677, 1682, 1680, 1683, 1684, 1686, 1674, - 1685, 1685, 1684, 1689, 1679, 1687, 1678, 1697, 1675, 1690, + 1633, 1632, 1636, 1629, 1635, 1642, 1630, 1632, 1624, 1635, + 1635, 1637, 1638, 1637, 1631, 1639, 1636, 1641, 1640, 1643, + 1633, 1644, 1644, 1638, 1640, 1642, 1641, 1645, 1646, 1646, + 1639, 1647, 1648, 1649, 1649, 1650, 1650, 1651, 1654, 1654, + 1643, 1655, 1659, 1656, 1660, 1663, 1658, 1661, 1661, 1662, + 1660, 1647, 1656, 1645, 1648, 1658, 1666, 1651, 1664, 1665, + 1663, 1667, 1667, 1659, 1668, 1664, 1655, 1669, 1665, 1671, + 1662, 1672, 1673, 1674, 1671, 1675, 1681, 1672, 1676, 1680, + 1674, 1675, 1666, 1669, 1676, 1677, 1677, 1679, 1678, 1682, + 1668, 1683, 1673, 1678, 1683, 1681, 1679, 1684, 1685, 1680, - 1691, 1680, 1692, 1690, 1682, 1694, 1691, 1686, 1683, 1694, - 1687, 1692, 1689, 1693, 1693, 1695, 1696, 1696, 1697, 1698, - 1699, 1701, 1700, 1702, 1703, 1704, 1695, 1700, 1708, 1705, - 1703, 1695, 1708, 1698, 1705, 1706, 1706, 1707, 1707, 1699, - 1704, 1701, 1710, 1702, 1711, 1712, 1713, 1713, 1714, 1714, - 1716, 1710, 1715, 1717, 1718, 1711, 1716, 1715, 1715, 1717, - 1711, 1719, 1720, 1721, 1723, 1712, 1719, 1724, 1726, 1721, - 1725, 1724, 1727, 1728, 1720, 1729, 1723, 1730, 1727, 1732, - 1718, 1729, 1725, 1733, 1736, 1734, 1740, 1736, 1741, 1730, - 1734, 1732, 1750, 1726, 1741, 1728, 1737, 1737, 1738, 1738, + 1687, 1682, 1686, 1686, 1689, 1688, 1687, 1690, 1692, 1693, + 1696, 1690, 1694, 1695, 1695, 1684, 1699, 1694, 1697, 1689, + 1703, 1703, 1700, 1702, 1685, 1688, 1700, 1690, 1692, 1696, + 1701, 1693, 1702, 1697, 1704, 1699, 1701, 1705, 1704, 1706, + 1706, 1707, 1708, 1713, 1709, 1710, 1711, 1712, 1705, 1713, + 1710, 1718, 1715, 1705, 1714, 1718, 1708, 1715, 1716, 1716, + 1717, 1717, 1707, 1709, 1720, 1721, 1711, 1712, 1722, 1714, + 1723, 1723, 1725, 1720, 1724, 1724, 1721, 1725, 1725, 1726, + 1727, 1721, 1728, 1730, 1729, 1726, 1727, 1731, 1722, 1729, + 1733, 1735, 1734, 1731, 1736, 1730, 1734, 1740, 1737, 1738, - 1739, 1739, 1733, 1742, 1750, 1743, 1740, 1744, 1745, 1742, - 1743, 1747, 1749, 1744, 1753, 1749, 1747, 1745, 1751, 1751, - 1754, 1757, 1755, 1756, 1756, 1761, 1753, 1755, 1758, 1759, - 1757, 1762, 1754, 1758, 1759, 1760, 1760, 1763, 1764, 1765, - 1762, 1766, 1767, 1765, 1768, 1761, 1766, 1769, 1767, 1770, - 1771, 1773, 1773, 1774, 1778, 1763, 1769, 1764, 1779, 1775, - 1776, 1776, 1768, 1773, 1771, 1777, 1778, 1770, 1775, 1781, - 1780, 1774, 1784, 1784, 1777, 1780, 1787, 1786, 1788, 1779, - 1786, 1790, 1781, 1791, 1792, 1793, 1794, 1794, 1799, 1795, - 1792, 1795, 1787, 1797, 1788, 1799, 1790, 1791, 1796, 1796, + 1739, 1742, 1733, 1735, 1737, 1743, 1739, 1744, 1728, 1740, + 1750, 1746, 1744, 1742, 1746, 1747, 1747, 1748, 1748, 1736, + 1751, 1738, 1749, 1749, 1743, 1752, 1751, 1753, 1754, 1755, + 1750, 1752, 1753, 1759, 1754, 1757, 1759, 1760, 1755, 1763, + 1757, 1761, 1761, 1764, 1767, 1765, 1766, 1766, 1771, 1760, + 1765, 1763, 1768, 1767, 1769, 1764, 1772, 1768, 1773, 1769, + 1770, 1770, 1774, 1775, 1776, 1772, 1777, 1775, 1771, 1776, + 1778, 1779, 1777, 1780, 1784, 1781, 1773, 1785, 1783, 1783, + 1779, 1774, 1786, 1786, 1787, 1788, 1785, 1789, 1778, 1781, + 1783, 1780, 1784, 1787, 1790, 1796, 1791, 1788, 1796, 1790, - 1800, 1797, 1793, 1801, 1801, 1802, 1803, 1804, 1807, 1805, - 1806, 1808, 1809, 1811, 1802, 0, 1812, 1814, 1809, 1804, - 1800, 1805, 1806, 1813, 1813, 1815, 1808, 1803, 1812, 1816, - 1818, 1809, 1816, 1811, 1807, 1814, 1817, 1820, 1821, 1822, - 1821, 1817, 1820, 1823, 1824, 1815, 1826, 1828, 1823, 1829, - 1818, 1824, 1830, 1832, 1831, 1826, 1831, 1822, 1829, 1834, - 1835, 1834, 1836, 1836, 1830, 1828, 1837, 1839, 1838, 1839, - 1840, 1841, 1832, 1838, 1835, 1840, 1841, 1842, 1843, 1844, - 1846, 1845, 1847, 1849, 1853, 1844, 1845, 1850, 1851, 1851, - 1847, 1854, 1837, 1846, 1855, 1842, 1852, 1852, 1843, 1853, + 1794, 1794, 1797, 1798, 1802, 1800, 1803, 1801, 1789, 1791, + 1802, 1804, 1804, 1805, 1807, 1805, 1806, 1806, 1797, 1798, + 1800, 1801, 1807, 1803, 1809, 1810, 1811, 1811, 1812, 1813, + 1814, 1809, 1815, 1817, 1816, 1819, 1818, 1812, 1821, 1824, + 1822, 1819, 1814, 1825, 1815, 1810, 1816, 1823, 1823, 1828, + 1813, 1818, 1822, 1826, 1819, 1827, 1826, 1824, 1821, 1817, + 1827, 1830, 1831, 1825, 1831, 1832, 1830, 1833, 1834, 1828, + 1836, 1838, 1833, 1839, 1840, 1834, 1841, 1842, 1841, 1836, + 1845, 1847, 1839, 1832, 1852, 1844, 1840, 1844, 1848, 1838, + 1846, 1846, 1853, 1848, 1845, 1849, 1842, 1849, 1850, 1851, - 1855, 1850, 1849, 1856, 1857, 1858, 1857, 1860, 1856, 1859, - 1859, 1854, 1865, 1858, 1861, 1861, 1862, 1862, 1863, 1860, - 1864, 1858, 1867, 1869, 1868, 1864, 1868, 1863, 1872, 1874, - 1865, 1867, 1870, 1871, 1867, 1879, 1878, 1870, 1870, 1882, - 1872, 1874, 1871, 1875, 1869, 1876, 1883, 1880, 1875, 1878, - 1876, 1881, 1881, 1884, 1885, 1879, 1880, 1882, 1886, 1888, - 1889, 1890, 1891, 1899, 1883, 1892, 1893, 1891, 1885, 1884, - 1892, 1888, 1889, 1886, 1896, 1893, 1898, 1900, 1901, 1902, - 1896, 1890, 1898, 1904, 1904, 1903, 1899, 1907, 1905, 1906, - 1906, 1908, 1900, 1896, 1903, 1908, 1901, 1905, 1909, 1910, + 1854, 1856, 1852, 1850, 1851, 1855, 1854, 1847, 1857, 1859, + 1855, 1860, 1853, 1864, 1856, 1863, 1857, 1861, 1861, 1862, + 1862, 1865, 0, 1868, 1866, 1860, 1870, 1865, 1859, 1866, + 1863, 1868, 1867, 1864, 1867, 1869, 1869, 1873, 1870, 1868, + 1871, 1871, 1872, 1872, 1874, 1875, 1873, 1877, 1878, 1874, + 1878, 1879, 1880, 1881, 1882, 1884, 1877, 1880, 1880, 1877, + 1885, 1888, 1881, 1875, 1886, 1885, 1882, 1884, 1889, 1886, + 1890, 1892, 1879, 1893, 1888, 1891, 1891, 1894, 1895, 1890, + 1896, 1900, 1898, 1912, 1899, 1901, 1909, 0, 1889, 1892, + 1901, 1893, 1895, 1894, 1898, 1896, 1899, 1902, 1903, 1906, - 1916, 0, 1911, 1909, 1902, 1912, 1907, 1911, 1911, 1913, - 1914, 1912, 1910, 1914, 1915, 1913, 1919, 1919, 1920, 1920, - 1916, 1921, 1915, 1922, 1922, 1923, 1923, 1924, 1925, 1926, - 1921, 1927, 1937, 1920, 1934, 1926, 1927, 1928, 1928, 1924, - 1929, 1929, 1930, 1931, 1920, 1938, 1925, 1930, 1933, 1931, - 1938, 1935, 1933, 1939, 1934, 1935, 1940, 1937, 1941, 1942, - 1944, 1945, 1943, 1941, 1946, 1948, 1945, 1947, 1947, 1948, - 1949, 1940, 1951, 1953, 1950, 1952, 1939, 1942, 1943, 1950, - 1944, 1955, 1956, 1954, 1960, 1949, 1946, 1952, 1954, 1957, - 1957, 1959, 1953, 1961, 1955, 1962, 1963, 1964, 1951, 1959, + 1908, 1900, 1902, 1911, 1910, 1906, 1908, 1903, 1912, 1909, + 1917, 1913, 1914, 1914, 1915, 1916, 1916, 0, 1906, 1910, + 1913, 1911, 1918, 1915, 1920, 1919, 1918, 1921, 1922, 1917, + 1919, 1926, 1921, 1921, 1922, 1923, 1924, 1920, 1925, 1924, + 1931, 1923, 1929, 1929, 1930, 1930, 1925, 1932, 1932, 1931, + 1934, 1926, 1933, 1933, 1935, 1936, 1938, 1938, 1937, 1930, + 1944, 1936, 1934, 1937, 1939, 1939, 1940, 1941, 1947, 1949, + 1930, 1940, 1935, 1941, 1943, 1945, 1948, 1952, 1943, 1945, + 1944, 1948, 1950, 1951, 1953, 1954, 1955, 1956, 1951, 1957, + 1957, 1955, 1949, 1947, 1958, 1952, 1959, 1950, 1958, 1960, - 1956, 1965, 1966, 1960, 1967, 1973, 1969, 1970, 1970, 2134, - 1971, 1972, 1961, 1971, 1966, 1974, 1964, 2134, 1962, 1973, - 1963, 1969, 1965, 1978, 1972, 1967, 1975, 1975, 1974, 1976, - 1976, 1977, 1977, 1979, 1980, 1980, 1981, 1983, 1978, 1982, - 1982, 1986, 1983, 1987, 1985, 1981, 1979, 1988, 1981, 1985, - 1989, 1989, 1990, 1990, 1991, 1992, 1992, 1993, 1999, 1988, - 2002, 1986, 1995, 1987, 1994, 1994, 1996, 1997, 1997, 1998, - 1998, 1996, 1999, 1991, 2000, 1993, 2001, 1995, 2006, 2002, - 2004, 2005, 2005, 2000, 2008, 2004, 2007, 2007, 2009, 2010, - 2001, 2013, 2010, 2014, 2009, 2011, 2011, 2006, 2012, 2012, + 1953, 1961, 1962, 1963, 1960, 1954, 1965, 1964, 1966, 1956, + 1969, 1959, 1964, 1970, 1962, 1967, 1967, 1971, 1969, 1965, + 1972, 1973, 1963, 1974, 1979, 1975, 1966, 1961, 1976, 1977, + 1980, 1980, 1970, 1983, 1981, 1982, 1971, 1981, 1984, 1979, + 1976, 0, 1974, 1972, 1988, 1973, 1975, 1983, 1982, 1989, + 1977, 1984, 1985, 1985, 1986, 1986, 1987, 1987, 1991, 1988, + 1990, 1990, 1989, 1992, 1992, 1996, 1993, 1991, 1995, 1997, + 1991, 1993, 1998, 1995, 1999, 1999, 2000, 2000, 2001, 2002, + 2002, 2003, 2004, 2004, 1998, 1996, 2005, 2006, 2009, 1997, + 2007, 2007, 2006, 2008, 2008, 2010, 2011, 2001, 2012, 2003, - 2015, 2018, 2008, 2016, 2016, 2019, 2023, 2020, 2014, 2021, - 2013, 2011, 2024, 2021, 2022, 2022, 2025, 2027, 2027, 2015, - 2028, 2018, 2020, 2029, 2030, 2023, 2031, 2024, 2019, 2032, - 2029, 2025, 2033, 2034, 2034, 2036, 2035, 2036, 2030, 2037, - 2028, 2039, 2037, 2040, 2031, 2035, 2041, 2032, 2040, 2042, - 2043, 2041, 2044, 2039, 2046, 2045, 2048, 2037, 2033, 2037, - 2045, 2048, 2049, 2043, 2050, 2051, 2052, 2049, 2056, 2053, - 2057, 2051, 2054, 2044, 2042, 2053, 2055, 2054, 2063, 2050, - 2046, 2055, 2058, 2057, 2068, 2058, 2059, 2052, 2060, 2061, - 2062, 2074, 2063, 2056, 2064, 2059, 2065, 2060, 2061, 2062, + 2014, 2005, 2009, 2016, 2010, 2014, 2015, 2015, 2017, 2017, + 2011, 2018, 2019, 2020, 2021, 2021, 2020, 2012, 2019, 2022, + 2022, 2023, 2016, 2024, 2025, 2026, 2026, 2028, 2029, 2018, + 2021, 2030, 2031, 2032, 2032, 2033, 2031, 2034, 2024, 2038, + 2023, 2035, 2039, 2025, 2037, 2037, 2030, 2028, 2040, 2039, + 2041, 2029, 2034, 2042, 2033, 2043, 2035, 2044, 2044, 2038, + 2045, 2046, 2040, 2046, 2047, 2049, 2052, 2047, 2041, 2045, + 2050, 2042, 2053, 2051, 2054, 2050, 2056, 2049, 2051, 2062, + 2066, 2043, 2047, 2055, 2047, 2053, 2060, 2058, 2055, 2059, + 2061, 2052, 2058, 2063, 2059, 2054, 2061, 2067, 2064, 2063, - 2064, 2066, 2065, 2070, 2068, 2066, 2071, 2071, 2072, 2073, - 2073, 2074, 2070, 2074, 2072, 2076, 2077, 2080, 2073, 2078, - 2078, 2079, 2082, 2083, 2087, 2084, 2080, 2087, 2088, 2085, - 2089, 2076, 2077, 2088, 2082, 2090, 2079, 2091, 2091, 2083, - 2084, 2085, 2092, 2092, 2094, 2094, 2095, 2090, 2096, 2095, - 2089, 2097, 2098, 2096, 2099, 2099, 2100, 2097, 2098, 2101, - 2101, 2102, 2103, 2104, 2105, 2105, 2106, 2107, 0, 2108, - 2100, 2110, 2106, 2102, 2108, 2110, 2103, 2111, 2112, 2112, - 2111, 2107, 2104, 2113, 2114, 2115, 2116, 2118, 2113, 2120, - 2116, 2117, 2117, 2114, 2120, 2121, 2122, 2123, 2124, 2125, + 2062, 2060, 2056, 2064, 2065, 2066, 2069, 2070, 2068, 2065, + 2067, 2068, 2071, 2072, 2073, 2069, 2070, 2074, 2075, 2078, + 2084, 2071, 2072, 2074, 2075, 2076, 2080, 2082, 2073, 2076, + 2081, 2081, 2086, 2082, 2087, 2080, 2083, 2083, 2089, 2078, + 2084, 2093, 2084, 2088, 2088, 2083, 2090, 2092, 2086, 2094, + 2087, 2095, 2099, 2089, 2100, 2090, 2107, 2093, 2097, 2092, + 2098, 2097, 2107, 2095, 2094, 2098, 2100, 2101, 2101, 2102, + 2102, 2106, 2099, 2104, 2104, 2105, 2106, 2108, 2105, 2109, + 2109, 2110, 2112, 2108, 2111, 2111, 2113, 2114, 2115, 2115, + 2116, 2117, 2118, 2125, 2112, 2110, 2116, 2118, 2120, 0, - 2118, 2126, 2124, 2127, 2128, 2115, 2126, 2129, 2131, 2127, - 2128, 2123, 2132, 2138, 2133, 2121, 2122, 2132, 2141, 2125, - 2133, 2135, 2144, 2135, 2131, 2129, 2144, 2138, 2139, 2139, - 2140, 2142, 2142, 2140, 2145, 2146, 2147, 2147, 2153, 2148, - 2145, 2151, 2151, 2155, 2141, 2156, 2159, 2146, 2148, 2160, - 2161, 2159, 2169, 2162, 2170, 2161, 2153, 2155, 2162, 2163, - 2163, 2156, 2165, 2165, 2167, 2168, 2168, 2171, 2169, 2173, - 2167, 2174, 2171, 2175, 2175, 2160, 2170, 2177, 2178, 2179, - 2180, 2182, 2182, 2174, 2178, 2183, 2177, 2184, 2173, 2186, - 2186, 2187, 2187, 2188, 2189, 2180, 2191, 2179, 2188, 2190, + 2113, 2121, 2120, 2124, 2121, 2117, 2114, 2122, 2122, 2123, + 2128, 2126, 2124, 2125, 2123, 2126, 2127, 2127, 2131, 2130, + 2132, 2133, 2134, 2128, 2130, 2135, 2134, 2136, 2137, 2139, + 2138, 2144, 2136, 2141, 2137, 2133, 2138, 2142, 2131, 2144, + 2132, 2145, 2142, 2145, 2143, 2135, 2148, 2139, 2151, 2141, + 2143, 2149, 2149, 2150, 2152, 2152, 2150, 2154, 2155, 2156, + 2148, 2154, 2157, 2157, 2155, 2163, 2158, 2161, 2161, 2166, + 2165, 2156, 2169, 2170, 2151, 2158, 2171, 2169, 2173, 2173, + 2177, 2171, 2172, 2163, 2165, 2166, 2177, 2172, 2175, 2175, + 2178, 2178, 2179, 2180, 2183, 2181, 2187, 2184, 2188, 2170, - 2192, 2191, 2192, 2193, 2183, 2184, 2194, 2195, 2190, 2196, - 2197, 2198, 2189, 2204, 2196, 2239, 2198, 2193, 2239, 2195, - 2194, 2199, 2199, 2200, 2200, 2201, 2201, 2202, 2202, 2203, - 2197, 2204, 2205, 2206, 2206, 2207, 2207, 2205, 2208, 2209, - 2210, 2203, 2211, 2212, 2212, 2213, 2214, 2214, 2215, 2215, - 2208, 2209, 2216, 2217, 2218, 2219, 2220, 2221, 2211, 2222, - 2210, 2218, 2221, 2216, 2213, 2217, 2223, 2219, 2224, 2224, - 2226, 2225, 2227, 2229, 2228, 2230, 2220, 2231, 2231, 2222, - 2225, 2232, 2236, 2233, 2234, 2237, 2223, 2228, 2238, 2230, - 2232, 2240, 2227, 2243, 2243, 0, 2226, 2229, 2233, 2234, + 2181, 2185, 2185, 2189, 2188, 2187, 2193, 2190, 2179, 2184, + 2192, 2192, 2194, 2183, 2199, 2180, 2196, 2196, 2197, 2197, + 2200, 2189, 2190, 2198, 2203, 2193, 2201, 2204, 2198, 2200, + 2194, 2201, 2199, 2202, 2205, 2202, 2207, 2206, 2203, 2208, + 2214, 2204, 2206, 2213, 2208, 0, 2205, 2209, 2209, 2210, + 2210, 2211, 2211, 2212, 2212, 2213, 2207, 2215, 2214, 2216, + 2216, 2218, 2215, 2217, 2217, 2219, 2220, 2221, 2222, 2222, + 2223, 2224, 2224, 2218, 2225, 2225, 2226, 2219, 2227, 2229, + 2230, 2228, 2232, 2221, 2233, 2236, 2220, 2226, 2228, 2223, + 2227, 2229, 2231, 2234, 2234, 2237, 2235, 2231, 2239, 2238, - 2236, 2241, 2250, 2242, 2252, 2240, 2241, 2237, 2242, 2244, - 2244, 2238, 2245, 2245, 2247, 2247, 2249, 2249, 2251, 2254, - 2250, 2256, 2255, 2252, 2257, 2258, 2259, 2261, 2260, 2251, - 2260, 2262, 2263, 2267, 2258, 2264, 2264, 2266, 2266, 2254, - 2255, 2273, 2268, 2256, 2257, 2271, 2259, 2261, 2274, 2262, - 2263, 2268, 2269, 2269, 2271, 2267, 2272, 2272, 2275, 2273, - 2276, 2277, 2278, 2280, 2288, 2275, 2274, 2279, 2281, 2281, - 2282, 2282, 2283, 2284, 2285, 2276, 2286, 2289, 2283, 2277, - 2278, 2287, 2280, 2279, 2288, 2290, 2287, 2292, 2292, 2285, - 2290, 2284, 2291, 2296, 2291, 2286, 2293, 2289, 2293, 2294, + 2230, 2242, 2232, 2240, 2233, 2235, 2241, 2241, 2243, 2244, + 2242, 2236, 2238, 2246, 2247, 2237, 2248, 2240, 2249, 2250, + 2251, 2249, 2239, 2243, 2244, 2251, 2260, 2252, 2253, 2253, + 2262, 2246, 2252, 2250, 2254, 2254, 2247, 2255, 2255, 2248, + 2257, 2257, 2259, 2259, 2260, 2261, 2264, 2265, 2266, 2262, + 2268, 2267, 2269, 2270, 2271, 2270, 2261, 2272, 2273, 2268, + 2274, 2274, 2276, 2276, 2277, 2265, 2264, 2283, 2278, 2284, + 2266, 2267, 2269, 2281, 2271, 2272, 2273, 2278, 2279, 2279, + 2282, 2282, 2281, 2285, 2286, 2283, 2277, 2284, 2287, 2288, + 2285, 2290, 2289, 2291, 2291, 2292, 2292, 2293, 2294, 2286, - 2294, 2298, 2299, 2300, 2301, 2303, 2302, 2304, 2307, 2311, - 2298, 2302, 2296, 2308, 2310, 2300, 2308, 2309, 2309, 2312, - 2312, 2299, 2315, 2318, 2301, 2303, 2304, 2311, 2307, 2310, - 2313, 2316, 2317, 2317, 2313, 2316, 2318, 2315, 2320, 2321, - 2322, 2322, 2324, 2325, 2326, 2327, 2327, 2328, 2326, 2329, - 2329, 2330, 2325, 2331, 2324, 2332, 2330, 2333, 2320, 2321, - 2334, 2334, 2331, 2339, 2339, 2340, 2328, 2341, 2341, 2333, - 2342, 2332, 2343, 2344, 2347, 2345, 2346, 2346, 2349, 2349, - 2354, 2352, 2344, 2342, 2345, 2343, 2352, 2340, 2353, 2347, - 2355, 2356, 2357, 2353, 2354, 2355, 2358, 2361, 2359, 2356, + 2295, 2296, 2298, 2293, 2297, 2299, 2287, 2288, 2289, 2297, + 2290, 2301, 2300, 2301, 2306, 2295, 2294, 2300, 2302, 2302, + 2296, 2303, 2298, 2303, 2309, 2299, 2304, 2304, 2308, 2310, + 2311, 2312, 2313, 2306, 2314, 2317, 2312, 2308, 2321, 2318, + 2330, 2310, 2318, 2309, 2319, 2319, 2320, 2322, 2322, 2325, + 2311, 2331, 2313, 2314, 2323, 2317, 2321, 2328, 2323, 2326, + 2330, 2320, 2334, 2326, 2325, 2327, 2327, 2332, 2332, 2335, + 2328, 2331, 2336, 2338, 2334, 2341, 2336, 2342, 2335, 2337, + 2337, 2339, 2339, 2340, 2341, 2343, 2344, 2344, 2340, 2349, + 2349, 2350, 2338, 2342, 2351, 2351, 2352, 2343, 2353, 2354, - 2364, 2369, 2362, 2363, 0, 2358, 2359, 2362, 2363, 2365, - 2365, 2357, 2361, 2366, 2366, 2364, 2367, 2368, 2370, 2369, - 2371, 0, 2368, 2367, 2372, 2374, 2371, 2373, 2373, 2372, - 2375, 2376, 2376, 2377, 2377, 2375, 2370, 2380, 2381, 2381, - 2374, 2382, 2383, 2392, 2382, 2405, 2384, 2383, 2383, 2385, - 2380, 2384, 2386, 2387, 2385, 2388, 2389, 2387, 2386, 2390, - 2388, 2391, 2393, 2405, 2392, 2389, 2394, 2396, 2393, 2391, - 2395, 2398, 2394, 2401, 2390, 2395, 2398, 2399, 2403, 2396, - 2399, 2404, 2406, 2403, 2407, 2401, 2404, 2408, 2409, 2409, - 2410, 2413, 2414, 2407, 2415, 2406, 2408, 2416, 2416, 2410, + 2357, 2355, 2356, 2356, 2359, 2359, 2364, 2362, 2354, 2352, + 2355, 2353, 2362, 2350, 2363, 2357, 2365, 2366, 2367, 2363, + 2364, 2365, 2368, 2371, 2369, 2366, 2374, 2379, 2372, 2373, + 0, 2368, 2369, 2372, 2373, 2375, 2375, 2367, 2371, 2376, + 2376, 2374, 2377, 2378, 2380, 2379, 2381, 0, 2378, 2377, + 2382, 2384, 2381, 2383, 2383, 2382, 2385, 2386, 2386, 2387, + 2387, 2385, 2380, 2390, 2391, 2391, 2384, 2392, 2393, 2402, + 2392, 2415, 2394, 2393, 2393, 2395, 2390, 2394, 2396, 2397, + 2395, 2398, 2399, 2397, 2396, 2400, 2398, 2401, 2403, 2415, + 2402, 2399, 2404, 2406, 2403, 2401, 2405, 2408, 2404, 2411, - 2417, 2419, 2418, 2420, 2420, 2421, 2423, 2425, 2427, 2427, - 2413, 2418, 2414, 2415, 2426, 2428, 2419, 2429, 2426, 2417, - 2430, 2423, 2431, 2429, 2421, 2433, 2430, 2425, 2431, 2432, - 2432, 2434, 2436, 2433, 2437, 2439, 2434, 2440, 2441, 2439, - 2428, 2436, 2443, 2443, 2444, 2444, 2448, 2437, 2445, 2445, - 2448, 2440, 2449, 2441, 2447, 2447, 2453, 2449, 2451, 2451, - 2454, 2455, 2456, 2458, 2466, 2454, 2464, 2456, 2456, 2459, - 2459, 2461, 2461, 2455, 2462, 2462, 2453, 2463, 2468, 2464, - 2463, 2472, 2466, 2458, 2469, 2469, 2470, 2470, 2471, 2471, - 2473, 2473, 2474, 2475, 2476, 2477, 2472, 2483, 2468, 2478, + 2400, 2405, 2408, 2409, 2413, 2406, 2409, 2414, 2416, 2413, + 2417, 2411, 2414, 2418, 2419, 2419, 2420, 2423, 2424, 2417, + 2425, 2416, 2418, 2426, 2426, 2420, 2427, 2429, 2428, 2430, + 2430, 2431, 2433, 2435, 2437, 2437, 2423, 2428, 2424, 2425, + 2436, 2438, 2429, 2439, 2436, 2427, 2440, 2433, 2441, 2439, + 2431, 2443, 2440, 2435, 2441, 2442, 2442, 2444, 2446, 2443, + 2447, 2449, 2444, 2450, 2451, 2449, 2438, 2446, 2453, 2453, + 2454, 2454, 2458, 2447, 2455, 2455, 2458, 2450, 2459, 2451, + 2457, 2457, 2463, 2459, 2461, 2461, 2464, 2465, 2466, 2468, + 2476, 2464, 2474, 2466, 2466, 2469, 2469, 2471, 2471, 2465, - 2478, 2477, 2479, 2484, 2482, 2474, 2479, 2485, 2476, 2482, - 2482, 2475, 2486, 2487, 2488, 2490, 2490, 2489, 2486, 2487, - 2483, 2489, 2495, 2484, 2493, 2496, 2498, 2485, 2496, 2493, - 2495, 2499, 2500, 2501, 2499, 2502, 2503, 0, 2501, 2488, - 2504, 2505, 2505, 2506, 2507, 2508, 2509, 2507, 2512, 2500, - 2500, 2498, 2510, 2502, 2504, 2507, 2503, 2506, 2511, 2508, - 2510, 2513, 2513, 2511, 2511, 2509, 2518, 2512, 2514, 2514, - 2515, 2515, 2516, 2516, 2517, 2517, 2519, 2520, 2521, 2522, - 2523, 2519, 2518, 2524, 2526, 2526, 2527, 2528, 2522, 2527, - 2530, 2530, 2531, 2532, 2532, 2540, 2533, 2520, 0, 2531, + 2472, 2472, 2463, 2473, 2478, 2474, 2473, 2482, 2476, 2468, + 2479, 2479, 2480, 2480, 2481, 2481, 2483, 2483, 2484, 2485, + 2486, 2487, 2482, 2493, 2478, 2488, 2488, 2487, 2489, 2494, + 2492, 2484, 2489, 2495, 2486, 2492, 2492, 2485, 2496, 2497, + 2498, 2500, 2500, 2499, 2496, 2497, 2493, 2499, 2505, 2494, + 2503, 2506, 2508, 2495, 2506, 2503, 2505, 2509, 2510, 2511, + 2509, 2512, 2513, 0, 2511, 2498, 2514, 2515, 2515, 2516, + 2517, 2518, 2519, 2517, 2522, 2510, 2510, 2508, 2520, 2512, + 2514, 2517, 2513, 2516, 2521, 2518, 2520, 2523, 2523, 2521, + 2521, 2519, 2528, 2522, 2524, 2524, 2525, 2525, 2526, 2526, - 2523, 2533, 2536, 2524, 2521, 2528, 2535, 2535, 2537, 2538, - 2543, 2536, 2542, 2540, 2541, 2541, 2542, 2537, 2538, 2543, - 2544, 2545, 2547, 2546, 2551, 2555, 2545, 2545, 2556, 2551, - 2557, 2547, 2552, 2552, 2559, 2544, 2546, 2554, 2554, 2555, - 2560, 2563, 2564, 2559, 2565, 2568, 2570, 0, 2557, 2566, - 2616, 2564, 2560, 2556, 2572, 2566, 2573, 2568, 2616, 2572, - 2575, 2573, 2574, 2574, 2565, 2577, 2563, 2570, 2584, 2575, - 2577, 2578, 2578, 2580, 2580, 2578, 2581, 2581, 2582, 2582, - 2583, 2585, 2586, 2592, 2588, 2593, 2589, 2586, 2584, 2583, - 2588, 2589, 2590, 2591, 2591, 2595, 2596, 2590, 2594, 2597, + 2527, 2527, 2529, 2530, 2531, 2532, 2533, 2529, 2528, 2534, + 2536, 2536, 2537, 2538, 2532, 2537, 2540, 2540, 2541, 2542, + 2542, 2550, 2543, 2530, 0, 2541, 2533, 2543, 2546, 2534, + 2531, 2538, 2545, 2545, 2547, 2548, 2553, 2546, 2552, 2550, + 2551, 2551, 2552, 2547, 2548, 2553, 2554, 2555, 2557, 2556, + 2561, 2565, 2555, 2555, 2566, 2561, 2567, 2557, 2562, 2562, + 2569, 2554, 2556, 2564, 2564, 2565, 2570, 2573, 2574, 2569, + 2575, 2578, 2580, 0, 2567, 2576, 2626, 2574, 2570, 2566, + 2582, 2576, 2583, 2578, 2626, 2582, 2585, 2583, 2584, 2584, + 2575, 2587, 2573, 2580, 2594, 2585, 2587, 2588, 2588, 2590, - 2585, 2592, 2596, 2594, 2598, 2598, 2593, 2600, 2604, 2601, - 2602, 2600, 2606, 2595, 2601, 2602, 2603, 2603, 2605, 2608, - 2608, 2610, 2611, 2614, 2597, 2612, 2615, 2604, 2613, 2612, - 2618, 2617, 2606, 2605, 2610, 2611, 2617, 2613, 2620, 2614, - 2619, 2619, 2622, 2622, 2625, 2615, 2623, 2623, 2627, 2627, - 2629, 2630, 2631, 2632, 2634, 2634, 2618, 2620, 2632, 2635, - 2636, 2637, 2639, 2639, 2640, 2625, 2629, 2630, 2631, 2641, - 2641, 2644, 2646, 2647, 2650, 2645, 2654, 2646, 2640, 2635, - 2637, 2645, 2652, 2636, 2648, 2648, 2649, 2649, 2651, 2651, - 2653, 2644, 2655, 2652, 2650, 2647, 2654, 2656, 2655, 2653, + 2590, 2588, 2591, 2591, 2592, 2592, 2593, 2595, 2596, 2602, + 2598, 2603, 2599, 2596, 2594, 2593, 2598, 2599, 2600, 2601, + 2601, 2605, 2606, 2600, 2604, 2607, 2595, 2602, 2606, 2604, + 2608, 2608, 2603, 2610, 2614, 2611, 2612, 2610, 2616, 2605, + 2611, 2612, 2613, 2613, 2615, 2618, 2618, 2620, 2621, 2624, + 2607, 2622, 2625, 2614, 2623, 2622, 2628, 2627, 2616, 2615, + 2620, 2621, 2627, 2623, 2630, 2624, 2629, 2629, 2632, 2632, + 2635, 2625, 2633, 2633, 2637, 2637, 2639, 2640, 2641, 2642, + 2644, 2644, 2628, 2630, 2642, 2645, 2646, 2647, 2649, 2649, + 2650, 2635, 2639, 2640, 2641, 2651, 2651, 2654, 2656, 2657, - 2657, 2658, 2659, 2659, 2660, 2661, 2661, 2660, 2651, 2666, - 2665, 2667, 2657, 2668, 2668, 2669, 2656, 2667, 2669, 2670, - 2671, 2658, 2665, 2673, 2675, 2670, 2674, 2676, 2673, 2666, - 2677, 2674, 2680, 2676, 2678, 2678, 2681, 2682, 2671, 2683, - 2684, 2684, 2685, 2675, 2680, 2691, 2686, 2677, 2677, 2688, - 2688, 0, 2683, 2690, 2681, 2686, 2689, 2689, 2690, 2691, - 2692, 2685, 2682, 2693, 2693, 2692, 2694, 2694, 2695, 2695, - 2696, 2698, 2698, 2701, 2703, 2696, 2704, 2705, 2706, 2706, - 2708, 2708, 2710, 2709, 2711, 2712, 2712, 2715, 2714, 2716, - 2717, 0, 2701, 2711, 2714, 2717, 2703, 2709, 2704, 2705, + 2660, 2655, 2664, 2656, 2650, 2645, 2647, 2655, 2662, 2646, + 2658, 2658, 2659, 2659, 2661, 2661, 2663, 2654, 2665, 2662, + 2660, 2657, 2664, 2666, 2665, 2663, 2667, 2668, 2669, 2669, + 2670, 2671, 2671, 2670, 2661, 2676, 2675, 2677, 2667, 2678, + 2678, 2679, 2666, 2677, 2679, 2680, 2681, 2668, 2675, 2683, + 2685, 2680, 2684, 2686, 2683, 2676, 2687, 2684, 2690, 2686, + 2688, 2688, 2691, 2692, 2681, 2693, 2694, 2694, 2695, 2685, + 2690, 2701, 2696, 2687, 2687, 2698, 2698, 0, 2693, 2700, + 2691, 2696, 2699, 2699, 2700, 2701, 2702, 2695, 2692, 2703, + 2703, 2702, 2704, 2704, 2705, 2705, 2706, 2708, 2708, 2711, - 2720, 2720, 2710, 2722, 2722, 2723, 2724, 2715, 2716, 2725, - 2723, 2726, 2731, 2727, 2729, 2725, 2728, 2728, 2732, 2729, - 2724, 2727, 2733, 2726, 2734, 2735, 2737, 2733, 2738, 2739, - 2740, 2735, 2731, 2741, 2737, 2748, 2734, 2742, 2732, 2743, - 2744, 2745, 2752, 2747, 2756, 2756, 2745, 2738, 2747, 2739, - 2740, 2741, 2749, 2742, 2750, 2748, 2743, 2743, 2749, 2750, - 2753, 2744, 2752, 2757, 2757, 2758, 2762, 2762, 2768, 2758, - 2764, 2764, 2768, 2753, 2765, 2765, 2771, 2765, 2766, 2766, - 2774, 2766, 2767, 2767, 2772, 2767, 2770, 2770, 2775, 2780, - 2776, 2777, 2777, 2782, 2771, 2776, 2781, 2782, 2772, 2795, + 2713, 2706, 2714, 2715, 2716, 2716, 2718, 2718, 2720, 2719, + 2721, 2722, 2722, 2725, 2724, 2726, 2727, 0, 2711, 2721, + 2724, 2727, 2713, 2719, 2714, 2715, 2730, 2730, 2720, 2732, + 2732, 2733, 2734, 2725, 2726, 2735, 2733, 2736, 2741, 2737, + 2739, 2735, 2738, 2738, 2742, 2739, 2734, 2737, 2743, 2736, + 2744, 2745, 2747, 2743, 2748, 2749, 2750, 2745, 2741, 2751, + 2747, 2758, 2744, 2752, 2742, 2753, 2754, 2755, 2762, 2757, + 2766, 2766, 2755, 2748, 2757, 2749, 2750, 2751, 2759, 2752, + 2760, 2758, 2753, 2753, 2759, 2760, 2763, 2754, 2762, 2767, + 2767, 2768, 2772, 2772, 2778, 2768, 2774, 2774, 2778, 2763, - 2774, 2783, 2784, 2781, 2786, 2795, 2787, 2821, 2775, 2791, - 2783, 2788, 2788, 2796, 2780, 2787, 2821, 2784, 2789, 2789, - 2790, 2790, 2786, 2792, 2791, 2793, 2794, 2797, 2792, 2798, - 2799, 2794, 2794, 2801, 2793, 2799, 2800, 2793, 2796, 2802, - 2802, 2800, 2797, 2803, 2873, 2804, 2805, 2805, 2873, 2803, - 2798, 2804, 2801, 2806, 2806, 2807, 2810, 2810, 2813, 2813, - 2807, 2814, 2814, 2815, 2815, 2816, 2816, 2817, 2817, 2818, - 2818, 2819, 2819, 2822, 2822, 2823, 2824, 2825, 2829, 2827, - 2828, 2828, 2830, 2837, 2823, 2832, 2832, 2831, 2824, 2833, - 2834, 2834, 2839, 2829, 2841, 2830, 2844, 2825, 2827, 2831, + 2775, 2775, 2781, 2775, 2776, 2776, 2784, 2776, 2777, 2777, + 2782, 2777, 2780, 2780, 2785, 2790, 2786, 2787, 2787, 2792, + 2781, 2786, 2791, 2792, 2782, 2805, 2784, 2793, 2794, 2791, + 2796, 2805, 2797, 2831, 2785, 2801, 2793, 2798, 2798, 2806, + 2790, 2797, 2831, 2794, 2799, 2799, 2800, 2800, 2796, 2802, + 2801, 2803, 2804, 2807, 2802, 2808, 2809, 2804, 2804, 2811, + 2803, 2809, 2810, 2803, 2806, 2812, 2812, 2810, 2807, 2813, + 2883, 2814, 2815, 2815, 2883, 2813, 2808, 2814, 2811, 2816, + 2816, 2817, 2820, 2820, 2823, 2823, 2817, 2824, 2824, 2825, + 2825, 2826, 2826, 2827, 2827, 2828, 2828, 2829, 2829, 2832, - 2838, 2837, 2844, 2838, 2833, 2840, 2840, 2843, 2845, 2846, - 2843, 2847, 2841, 2848, 2846, 2851, 2849, 2852, 2839, 2855, - 2864, 2851, 2845, 2864, 2866, 2871, 2852, 2867, 2867, 2874, - 2847, 2848, 2849, 2872, 2855, 2868, 2868, 2866, 2869, 2869, - 2875, 2877, 2872, 2881, 2878, 2879, 2882, 2882, 2871, 2874, - 2879, 2880, 2883, 2880, 2875, 2878, 2884, 2886, 2881, 2885, - 2887, 2888, 2889, 2891, 2877, 2883, 2890, 2892, 2897, 2893, - 2898, 2889, 2900, 2886, 2893, 2884, 2888, 2885, 2890, 2899, - 2899, 2900, 2897, 2905, 2891, 2887, 2906, 2892, 2901, 2901, - 2898, 2902, 2902, 2903, 2903, 2904, 2904, 2907, 2908, 2909, + 2832, 2833, 2834, 2835, 2839, 2837, 2838, 2838, 2840, 2847, + 2833, 2842, 2842, 2841, 2834, 2843, 2844, 2844, 2849, 2839, + 2851, 2840, 2854, 2835, 2837, 2841, 2848, 2847, 2854, 2848, + 2843, 2850, 2850, 2853, 2855, 2856, 2853, 2857, 2851, 2858, + 2856, 2861, 2859, 2862, 2849, 2865, 2874, 2861, 2855, 2874, + 2876, 2881, 2862, 2877, 2877, 2884, 2857, 2858, 2859, 2882, + 2865, 2878, 2878, 2876, 2879, 2879, 2885, 2887, 2882, 2891, + 2888, 2889, 2892, 2892, 2881, 2884, 2889, 2890, 2893, 2890, + 2885, 2888, 2894, 2896, 2891, 2895, 2897, 2898, 2899, 2901, + 2887, 2893, 2900, 2902, 2907, 2903, 2908, 2899, 2910, 2896, - 2907, 2910, 2905, 2908, 2909, 2911, 2906, 2912, 2913, 2914, - 2915, 2916, 2918, 2912, 2919, 2915, 2917, 2917, 2920, 2920, - 2911, 2914, 2913, 2922, 2924, 2930, 2910, 2918, 2927, 2927, - 2931, 2916, 2929, 2919, 2928, 2928, 2931, 2932, 2922, 2933, - 2929, 2934, 2924, 2932, 2930, 2935, 2936, 2937, 2937, 2938, - 2938, 2936, 2940, 2933, 2934, 2941, 2943, 2944, 2946, 2949, - 2947, 2944, 2948, 2950, 2935, 2947, 2951, 2954, 2954, 2952, - 2943, 2957, 2949, 2940, 2952, 2941, 2950, 2953, 2946, 2958, - 2959, 2948, 2953, 2960, 2960, 2951, 2967, 2961, 2962, 2963, - 2963, 2957, 2961, 2964, 2962, 2965, 2966, 2958, 2964, 2959, + 2903, 2894, 2898, 2895, 2900, 2909, 2909, 2910, 2907, 2915, + 2901, 2897, 2916, 2902, 2911, 2911, 2908, 2912, 2912, 2913, + 2913, 2914, 2914, 2917, 2918, 2919, 2917, 2920, 2915, 2918, + 2919, 2921, 2916, 2922, 2923, 2924, 2925, 2926, 2928, 2922, + 2929, 2925, 2927, 2927, 2930, 2930, 2921, 2924, 2923, 2932, + 2934, 2940, 2920, 2928, 2937, 2937, 2941, 2926, 2939, 2929, + 2938, 2938, 2941, 2942, 2932, 2943, 2939, 2944, 2934, 2942, + 2940, 2945, 2946, 2947, 2947, 2948, 2948, 2946, 2950, 2943, + 2944, 2951, 2953, 2954, 2956, 2959, 2957, 2954, 2958, 2960, + 2945, 2957, 2961, 2964, 2964, 2962, 2953, 2967, 2959, 2950, - 2965, 2966, 2968, 2970, 2970, 2967, 2971, 2975, 2968, 2972, - 2972, 2971, 2974, 2976, 2977, 2978, 2974, 2979, 2980, 2981, - 2976, 2983, 2983, 2979, 2985, 2985, 2975, 2986, 2988, 2989, - 2987, 2990, 2981, 2977, 2978, 2987, 2986, 2980, 2992, 2986, - 2991, 2991, 2993, 2992, 2990, 2995, 2997, 2988, 2989, 2996, - 2996, 2998, 2998, 2999, 2999, 2993, 3000, 3001, 3002, 3003, - 3003, 3000, 3004, 3009, 3001, 2997, 3005, 3004, 3005, 3006, - 3006, 2995, 3007, 3008, 3011, 3014, 3010, 3002, 3018, 3007, - 3008, 3010, 3009, 3013, 3013, 3016, 3017, 3019, 3020, 3020, - 3016, 3017, 3023, 3011, 3014, 3022, 3022, 3018, 3024, 3025, + 2962, 2951, 2960, 2963, 2956, 2968, 2969, 2958, 2963, 2970, + 2970, 2961, 2977, 2971, 2972, 2973, 2973, 2967, 2971, 2974, + 2972, 2975, 2976, 2968, 2974, 2969, 2975, 2976, 2978, 2980, + 2980, 2977, 2981, 2985, 2978, 2982, 2982, 2981, 2984, 2986, + 2987, 2988, 2984, 2989, 2990, 2991, 2986, 2993, 2993, 2989, + 2995, 2995, 2985, 2996, 2998, 2999, 2997, 3000, 2991, 2987, + 2988, 2997, 2996, 2990, 3002, 2996, 3001, 3001, 3003, 3002, + 3000, 3005, 3007, 2998, 2999, 3006, 3006, 3008, 3008, 3009, + 3009, 3003, 3010, 3011, 3012, 3013, 3013, 3010, 3014, 3019, + 3011, 3007, 3015, 3014, 3015, 3016, 3016, 3005, 3017, 3018, - 3025, 3026, 3026, 3027, 3029, 3029, 3019, 3030, 3030, 3031, - 3027, 3023, 3037, 3033, 3036, 3038, 3031, 3024, 3033, 3036, - 3039, 3039, 3040, 3040, 0, 0, 0, 0, 0, 0, - 0, 3037, 0, 0, 3038, 3044, 3044, 3044, 3044, 3044, - 3044, 3044, 3045, 3045, 3045, 3045, 3045, 3045, 3045, 3046, - 3046, 3046, 3046, 3046, 3046, 3046, 3047, 3047, 3047, 3047, - 3047, 3047, 3047, 3048, 3048, 3048, 3048, 3048, 3048, 3048, - 3050, 3050, 0, 3050, 3050, 3050, 3050, 3051, 3051, 0, - 0, 0, 3051, 3051, 3052, 3052, 0, 0, 3052, 0, - 3052, 3053, 0, 0, 0, 0, 0, 3053, 3054, 3054, + 3021, 3024, 3020, 3012, 3028, 3017, 3018, 3020, 3019, 3023, + 3023, 3026, 3027, 3029, 3030, 3030, 3026, 3027, 3033, 3021, + 3024, 3032, 3032, 3028, 3034, 3035, 3035, 3036, 3036, 3037, + 3039, 3039, 3029, 3040, 3040, 3041, 3037, 3033, 3047, 3043, + 3046, 3048, 3041, 3034, 3043, 3046, 3049, 3049, 3050, 3050, + 0, 0, 0, 0, 0, 0, 0, 3047, 0, 0, + 3048, 3054, 3054, 3054, 3054, 3054, 3054, 3054, 3055, 3055, + 3055, 3055, 3055, 3055, 3055, 3056, 3056, 3056, 3056, 3056, + 3056, 3056, 3057, 3057, 3057, 3057, 3057, 3057, 3057, 3058, + 3058, 3058, 3058, 3058, 3058, 3058, 3060, 3060, 0, 3060, + + 3060, 3060, 3060, 3061, 3061, 0, 0, 0, 3061, 3061, + 3062, 3062, 0, 0, 3062, 0, 3062, 3063, 0, 0, + 0, 0, 0, 3063, 3064, 3064, 0, 0, 0, 3064, + 3064, 3065, 0, 0, 0, 0, 0, 3065, 3066, 3066, + 0, 3066, 3066, 3066, 3066, 3067, 3067, 0, 3067, 3067, + 3067, 3067, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, 3053, + 3053, 3053, 3053 - 0, 0, 0, 3054, 3054, 3055, 0, 0, 0, 0, - 0, 3055, 3056, 3056, 0, 3056, 3056, 3056, 3056, 3057, - 3057, 0, 3057, 3057, 3057, 3057, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, 3043, - 3043, 3043, 3043, 3043, 3043, 3043, 3043 } ; static yy_state_type yy_last_accepting_state; @@ -2938,7 +2949,7 @@ static void config_end_include(void) } #endif -#line 2939 "" +#line 2951 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2947,9 +2958,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2948 "" +#line 2960 "" -#line 2950 "" +#line 2962 "" #define INITIAL 0 #define quotedstring 1 @@ -3171,7 +3182,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3172 "" +#line 3184 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3204,13 +3215,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 >= 3044 ) + if ( yy_current_state >= 3054 ) 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] != 5927 ); + while ( yy_base[yy_current_state] != 5953 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3455,17 +3466,17 @@ YY_RULE_SETUP case 44: YY_RULE_SETUP #line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTPS_PORT) } YY_BREAK case 45: YY_RULE_SETUP #line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 46: YY_RULE_SETUP #line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 47: YY_RULE_SETUP @@ -3475,282 +3486,282 @@ YY_RULE_SETUP case 48: YY_RULE_SETUP #line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 49: YY_RULE_SETUP #line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 50: YY_RULE_SETUP #line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 51: YY_RULE_SETUP #line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 52: YY_RULE_SETUP #line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 53: YY_RULE_SETUP #line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 54: YY_RULE_SETUP #line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 55: YY_RULE_SETUP #line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 56: YY_RULE_SETUP #line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 57: YY_RULE_SETUP #line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 58: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 59: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 60: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 61: YY_RULE_SETUP #line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 62: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 63: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 64: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 65: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 66: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 67: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 68: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 69: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 70: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 71: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 72: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 73: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 74: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 75: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 76: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 77: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 78: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 79: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 80: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 81: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 82: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 83: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 84: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 85: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 86: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 87: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 88: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 89: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 90: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 91: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 92: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 93: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 94: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 95: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 96: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 97: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 98: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 99: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 100: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 101: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 102: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 103: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 104: YY_RULE_SETUP @@ -3760,32 +3771,32 @@ YY_RULE_SETUP case 105: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 106: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 107: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 108: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 109: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 110: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 111: YY_RULE_SETUP @@ -3795,731 +3806,731 @@ YY_RULE_SETUP case 112: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 113: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 114: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 115: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 116: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 117: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 118: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 119: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 120: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 121: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 122: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 123: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 124: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 125: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 126: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 127: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 128: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 129: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 130: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 131: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 132: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 133: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 134: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 135: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 136: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 137: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 138: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 139: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 140: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 141: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 142: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 143: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 144: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 145: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 146: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 147: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 148: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 149: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 150: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 151: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 152: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 153: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 154: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 155: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 156: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 157: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 158: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 159: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 160: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 161: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 162: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 163: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 164: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 165: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 166: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 167: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 168: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 169: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 175: YY_RULE_SETUP -#line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 382 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 176: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 177: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 178: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 179: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 180: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 181: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 182: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 231: YY_RULE_SETUP -#line 440 "./util/configlexer.lex" +#line 439 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 232: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 441 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 233: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 234: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 235: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 236: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 237: YY_RULE_SETUP -#line 448 "./util/configlexer.lex" +#line 447 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 238: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 239: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 240: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 457 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 244: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 245: YY_RULE_SETUP #line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 246: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 256: YY_RULE_SETUP @@ -4534,195 +4545,200 @@ YY_RULE_SETUP case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 260: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 261: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 269: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 270: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 487 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 271: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 272: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 273: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 289: -/* rule 289 can match eol */ YY_RULE_SETUP #line 507 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 290: +/* rule 290 can match eol */ +YY_RULE_SETUP +#line 508 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 290: +case 291: YY_RULE_SETUP -#line 510 "./util/configlexer.lex" +#line 511 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 511 "./util/configlexer.lex" +#line 512 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 291: -YY_RULE_SETUP -#line 516 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 292: -/* rule 292 can match eol */ YY_RULE_SETUP #line 517 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 293: +/* rule 293 can match eol */ +YY_RULE_SETUP +#line 518 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 293: +case 294: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" +#line 520 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4735,34 +4751,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 294: +case 295: YY_RULE_SETUP -#line 531 "./util/configlexer.lex" +#line 532 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 532 "./util/configlexer.lex" +#line 533 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 295: -YY_RULE_SETUP -#line 537 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 296: -/* rule 296 can match eol */ YY_RULE_SETUP #line 538 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 297: +/* rule 297 can match eol */ +YY_RULE_SETUP +#line 539 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 297: +case 298: YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 541 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4775,38 +4791,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 298: +case 299: YY_RULE_SETUP -#line 552 "./util/configlexer.lex" +#line 553 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 554 "./util/configlexer.lex" +#line 555 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 299: -YY_RULE_SETUP -#line 558 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 300: -/* rule 300 can match eol */ YY_RULE_SETUP #line 559 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 301: +/* rule 301 can match eol */ YY_RULE_SETUP #line 560 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 302: YY_RULE_SETUP #line 561 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 303: +YY_RULE_SETUP +#line 562 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4814,27 +4830,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 566 "./util/configlexer.lex" +#line 567 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 303: -YY_RULE_SETUP -#line 570 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 304: -/* rule 304 can match eol */ YY_RULE_SETUP #line 571 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 305: +/* rule 305 can match eol */ +YY_RULE_SETUP +#line 572 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 305: +case 306: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 574 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4844,7 +4860,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4856,33 +4872,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 306: +case 307: YY_RULE_SETUP -#line 590 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 307: +case 308: YY_RULE_SETUP -#line 594 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 308: +case 309: YY_RULE_SETUP -#line 598 "./util/configlexer.lex" +#line 599 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 309: +case 310: YY_RULE_SETUP -#line 602 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4883 "" +#line 4900 "" case YY_END_OF_BUFFER: { @@ -5177,7 +5193,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 >= 3044 ) + if ( yy_current_state >= 3054 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5205,11 +5221,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 >= 3044 ) + if ( yy_current_state >= 3054 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3043); + yy_is_jam = (yy_current_state == 3053); return yy_is_jam ? 0 : yy_current_state; } @@ -5848,6 +5864,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 602 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 1d7a38681..c445c433b 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -248,6 +248,7 @@ tls-additional-port{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } tls-session-ticket-keys{COLON} { YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } tls-ciphers{COLON} { YDVAR(1, VAR_TLS_CIPHERS) } tls-ciphersuites{COLON} { YDVAR(1, VAR_TLS_CIPHERSUITES) } +https-port{COLON} { YDVAR(1, VAR_HTTPS_PORT) } use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } diff --git a/util/configparser.c b/util/configparser.c index 6d792c698..830b79915 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,8 +61,8 @@ -/* First part of user prologue. */ -#line 38 "./util/configparser.y" +/* Copy the first part of user declarations. */ +#line 38 "./util/configparser.y" /* yacc.c:339 */ #include "config.h" @@ -95,17 +91,13 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" +#line 95 "util/configparser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -117,8 +109,8 @@ extern struct config_parser_state* cfg_parser; # define YYERROR_VERBOSE 0 #endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ +/* In a future release of Bison, this section will be replaced + by #include "configparser.h". */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -272,150 +264,151 @@ extern int yydebug; VAR_STUB_SSL_UPSTREAM = 393, VAR_FORWARD_SSL_UPSTREAM = 394, VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_DISABLE_DNSSEC_LAME_CHECK = 431, - VAR_IP_RATELIMIT = 432, - VAR_IP_RATELIMIT_SLABS = 433, - VAR_IP_RATELIMIT_SIZE = 434, - VAR_RATELIMIT = 435, - VAR_RATELIMIT_SLABS = 436, - VAR_RATELIMIT_SIZE = 437, - VAR_RATELIMIT_FOR_DOMAIN = 438, - VAR_RATELIMIT_BELOW_DOMAIN = 439, - VAR_IP_RATELIMIT_FACTOR = 440, - VAR_RATELIMIT_FACTOR = 441, - VAR_SEND_CLIENT_SUBNET = 442, - VAR_CLIENT_SUBNET_ZONE = 443, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 444, - VAR_CLIENT_SUBNET_OPCODE = 445, - VAR_MAX_CLIENT_SUBNET_IPV4 = 446, - VAR_MAX_CLIENT_SUBNET_IPV6 = 447, - VAR_MIN_CLIENT_SUBNET_IPV4 = 448, - VAR_MIN_CLIENT_SUBNET_IPV6 = 449, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 451, - VAR_CAPS_WHITELIST = 452, - VAR_CACHE_MAX_NEGATIVE_TTL = 453, - VAR_PERMIT_SMALL_HOLDDOWN = 454, - VAR_QNAME_MINIMISATION = 455, - VAR_QNAME_MINIMISATION_STRICT = 456, - VAR_IP_FREEBIND = 457, - VAR_DEFINE_TAG = 458, - VAR_LOCAL_ZONE_TAG = 459, - VAR_ACCESS_CONTROL_TAG = 460, - VAR_LOCAL_ZONE_OVERRIDE = 461, - VAR_ACCESS_CONTROL_TAG_ACTION = 462, - VAR_ACCESS_CONTROL_TAG_DATA = 463, - VAR_VIEW = 464, - VAR_ACCESS_CONTROL_VIEW = 465, - VAR_VIEW_FIRST = 466, - VAR_SERVE_EXPIRED = 467, - VAR_SERVE_EXPIRED_TTL = 468, - VAR_SERVE_EXPIRED_TTL_RESET = 469, - VAR_SERVE_EXPIRED_REPLY_TTL = 470, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 471, - VAR_FAKE_DSA = 472, - VAR_FAKE_SHA1 = 473, - VAR_LOG_IDENTITY = 474, - VAR_HIDE_TRUSTANCHOR = 475, - VAR_TRUST_ANCHOR_SIGNALING = 476, - VAR_AGGRESSIVE_NSEC = 477, - VAR_USE_SYSTEMD = 478, - VAR_SHM_ENABLE = 479, - VAR_SHM_KEY = 480, - VAR_ROOT_KEY_SENTINEL = 481, - VAR_DNSCRYPT = 482, - VAR_DNSCRYPT_ENABLE = 483, - VAR_DNSCRYPT_PORT = 484, - VAR_DNSCRYPT_PROVIDER = 485, - VAR_DNSCRYPT_SECRET_KEY = 486, - VAR_DNSCRYPT_PROVIDER_CERT = 487, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 488, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 490, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 491, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 492, - VAR_IPSECMOD_ENABLED = 493, - VAR_IPSECMOD_HOOK = 494, - VAR_IPSECMOD_IGNORE_BOGUS = 495, - VAR_IPSECMOD_MAX_TTL = 496, - VAR_IPSECMOD_WHITELIST = 497, - VAR_IPSECMOD_STRICT = 498, - VAR_CACHEDB = 499, - VAR_CACHEDB_BACKEND = 500, - VAR_CACHEDB_SECRETSEED = 501, - VAR_CACHEDB_REDISHOST = 502, - VAR_CACHEDB_REDISPORT = 503, - VAR_CACHEDB_REDISTIMEOUT = 504, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 505, - VAR_FOR_UPSTREAM = 506, - VAR_AUTH_ZONE = 507, - VAR_ZONEFILE = 508, - VAR_MASTER = 509, - VAR_URL = 510, - VAR_FOR_DOWNSTREAM = 511, - VAR_FALLBACK_ENABLED = 512, - VAR_TLS_ADDITIONAL_PORT = 513, - VAR_LOW_RTT = 514, - VAR_LOW_RTT_PERMIL = 515, - VAR_FAST_SERVER_PERMIL = 516, - VAR_FAST_SERVER_NUM = 517, - VAR_ALLOW_NOTIFY = 518, - VAR_TLS_WIN_CERT = 519, - VAR_TCP_CONNECTION_LIMIT = 520, - VAR_FORWARD_NO_CACHE = 521, - VAR_STUB_NO_CACHE = 522, - VAR_LOG_SERVFAIL = 523, - VAR_DENY_ANY = 524, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 525, - VAR_LOG_TAG_QUERYREPLY = 526, - VAR_STREAM_WAIT_SIZE = 527, - VAR_TLS_CIPHERS = 528, - VAR_TLS_CIPHERSUITES = 529, - VAR_IPSET = 530, - VAR_IPSET_NAME_V4 = 531, - VAR_IPSET_NAME_V6 = 532, - VAR_TLS_SESSION_TICKET_KEYS = 533, - VAR_RPZ = 534, - VAR_TAGS = 535, - VAR_RPZ_ACTION_OVERRIDE = 536, - VAR_RPZ_CNAME_OVERRIDE = 537, - VAR_RPZ_LOG = 538, - VAR_RPZ_LOG_NAME = 539 + VAR_HTTPS_PORT = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_DISABLE_DNSSEC_LAME_CHECK = 432, + VAR_IP_RATELIMIT = 433, + VAR_IP_RATELIMIT_SLABS = 434, + VAR_IP_RATELIMIT_SIZE = 435, + VAR_RATELIMIT = 436, + VAR_RATELIMIT_SLABS = 437, + VAR_RATELIMIT_SIZE = 438, + VAR_RATELIMIT_FOR_DOMAIN = 439, + VAR_RATELIMIT_BELOW_DOMAIN = 440, + VAR_IP_RATELIMIT_FACTOR = 441, + VAR_RATELIMIT_FACTOR = 442, + VAR_SEND_CLIENT_SUBNET = 443, + VAR_CLIENT_SUBNET_ZONE = 444, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, + VAR_CLIENT_SUBNET_OPCODE = 446, + VAR_MAX_CLIENT_SUBNET_IPV4 = 447, + VAR_MAX_CLIENT_SUBNET_IPV6 = 448, + VAR_MIN_CLIENT_SUBNET_IPV4 = 449, + VAR_MIN_CLIENT_SUBNET_IPV6 = 450, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, + VAR_CAPS_WHITELIST = 453, + VAR_CACHE_MAX_NEGATIVE_TTL = 454, + VAR_PERMIT_SMALL_HOLDDOWN = 455, + VAR_QNAME_MINIMISATION = 456, + VAR_QNAME_MINIMISATION_STRICT = 457, + VAR_IP_FREEBIND = 458, + VAR_DEFINE_TAG = 459, + VAR_LOCAL_ZONE_TAG = 460, + VAR_ACCESS_CONTROL_TAG = 461, + VAR_LOCAL_ZONE_OVERRIDE = 462, + VAR_ACCESS_CONTROL_TAG_ACTION = 463, + VAR_ACCESS_CONTROL_TAG_DATA = 464, + VAR_VIEW = 465, + VAR_ACCESS_CONTROL_VIEW = 466, + VAR_VIEW_FIRST = 467, + VAR_SERVE_EXPIRED = 468, + VAR_SERVE_EXPIRED_TTL = 469, + VAR_SERVE_EXPIRED_TTL_RESET = 470, + VAR_SERVE_EXPIRED_REPLY_TTL = 471, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, + VAR_FAKE_DSA = 473, + VAR_FAKE_SHA1 = 474, + VAR_LOG_IDENTITY = 475, + VAR_HIDE_TRUSTANCHOR = 476, + VAR_TRUST_ANCHOR_SIGNALING = 477, + VAR_AGGRESSIVE_NSEC = 478, + VAR_USE_SYSTEMD = 479, + VAR_SHM_ENABLE = 480, + VAR_SHM_KEY = 481, + VAR_ROOT_KEY_SENTINEL = 482, + VAR_DNSCRYPT = 483, + VAR_DNSCRYPT_ENABLE = 484, + VAR_DNSCRYPT_PORT = 485, + VAR_DNSCRYPT_PROVIDER = 486, + VAR_DNSCRYPT_SECRET_KEY = 487, + VAR_DNSCRYPT_PROVIDER_CERT = 488, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, + VAR_IPSECMOD_ENABLED = 494, + VAR_IPSECMOD_HOOK = 495, + VAR_IPSECMOD_IGNORE_BOGUS = 496, + VAR_IPSECMOD_MAX_TTL = 497, + VAR_IPSECMOD_WHITELIST = 498, + VAR_IPSECMOD_STRICT = 499, + VAR_CACHEDB = 500, + VAR_CACHEDB_BACKEND = 501, + VAR_CACHEDB_SECRETSEED = 502, + VAR_CACHEDB_REDISHOST = 503, + VAR_CACHEDB_REDISPORT = 504, + VAR_CACHEDB_REDISTIMEOUT = 505, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, + VAR_FOR_UPSTREAM = 507, + VAR_AUTH_ZONE = 508, + VAR_ZONEFILE = 509, + VAR_MASTER = 510, + VAR_URL = 511, + VAR_FOR_DOWNSTREAM = 512, + VAR_FALLBACK_ENABLED = 513, + VAR_TLS_ADDITIONAL_PORT = 514, + VAR_LOW_RTT = 515, + VAR_LOW_RTT_PERMIL = 516, + VAR_FAST_SERVER_PERMIL = 517, + VAR_FAST_SERVER_NUM = 518, + VAR_ALLOW_NOTIFY = 519, + VAR_TLS_WIN_CERT = 520, + VAR_TCP_CONNECTION_LIMIT = 521, + VAR_FORWARD_NO_CACHE = 522, + VAR_STUB_NO_CACHE = 523, + VAR_LOG_SERVFAIL = 524, + VAR_DENY_ANY = 525, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, + VAR_LOG_TAG_QUERYREPLY = 527, + VAR_STREAM_WAIT_SIZE = 528, + VAR_TLS_CIPHERS = 529, + VAR_TLS_CIPHERSUITES = 530, + VAR_IPSET = 531, + VAR_IPSET_NAME_V4 = 532, + VAR_IPSET_NAME_V6 = 533, + VAR_TLS_SESSION_TICKET_KEYS = 534, + VAR_RPZ = 535, + VAR_TAGS = 536, + VAR_RPZ_ACTION_OVERRIDE = 537, + VAR_RPZ_CNAME_OVERRIDE = 538, + VAR_RPZ_LOG = 539, + VAR_RPZ_LOG_NAME = 540 }; #endif /* Tokens. */ @@ -557,162 +550,164 @@ extern int yydebug; #define VAR_STUB_SSL_UPSTREAM 393 #define VAR_FORWARD_SSL_UPSTREAM 394 #define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 -#define VAR_IP_RATELIMIT 432 -#define VAR_IP_RATELIMIT_SLABS 433 -#define VAR_IP_RATELIMIT_SIZE 434 -#define VAR_RATELIMIT 435 -#define VAR_RATELIMIT_SLABS 436 -#define VAR_RATELIMIT_SIZE 437 -#define VAR_RATELIMIT_FOR_DOMAIN 438 -#define VAR_RATELIMIT_BELOW_DOMAIN 439 -#define VAR_IP_RATELIMIT_FACTOR 440 -#define VAR_RATELIMIT_FACTOR 441 -#define VAR_SEND_CLIENT_SUBNET 442 -#define VAR_CLIENT_SUBNET_ZONE 443 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 -#define VAR_CLIENT_SUBNET_OPCODE 445 -#define VAR_MAX_CLIENT_SUBNET_IPV4 446 -#define VAR_MAX_CLIENT_SUBNET_IPV6 447 -#define VAR_MIN_CLIENT_SUBNET_IPV4 448 -#define VAR_MIN_CLIENT_SUBNET_IPV6 449 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 -#define VAR_CAPS_WHITELIST 452 -#define VAR_CACHE_MAX_NEGATIVE_TTL 453 -#define VAR_PERMIT_SMALL_HOLDDOWN 454 -#define VAR_QNAME_MINIMISATION 455 -#define VAR_QNAME_MINIMISATION_STRICT 456 -#define VAR_IP_FREEBIND 457 -#define VAR_DEFINE_TAG 458 -#define VAR_LOCAL_ZONE_TAG 459 -#define VAR_ACCESS_CONTROL_TAG 460 -#define VAR_LOCAL_ZONE_OVERRIDE 461 -#define VAR_ACCESS_CONTROL_TAG_ACTION 462 -#define VAR_ACCESS_CONTROL_TAG_DATA 463 -#define VAR_VIEW 464 -#define VAR_ACCESS_CONTROL_VIEW 465 -#define VAR_VIEW_FIRST 466 -#define VAR_SERVE_EXPIRED 467 -#define VAR_SERVE_EXPIRED_TTL 468 -#define VAR_SERVE_EXPIRED_TTL_RESET 469 -#define VAR_SERVE_EXPIRED_REPLY_TTL 470 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 -#define VAR_FAKE_DSA 472 -#define VAR_FAKE_SHA1 473 -#define VAR_LOG_IDENTITY 474 -#define VAR_HIDE_TRUSTANCHOR 475 -#define VAR_TRUST_ANCHOR_SIGNALING 476 -#define VAR_AGGRESSIVE_NSEC 477 -#define VAR_USE_SYSTEMD 478 -#define VAR_SHM_ENABLE 479 -#define VAR_SHM_KEY 480 -#define VAR_ROOT_KEY_SENTINEL 481 -#define VAR_DNSCRYPT 482 -#define VAR_DNSCRYPT_ENABLE 483 -#define VAR_DNSCRYPT_PORT 484 -#define VAR_DNSCRYPT_PROVIDER 485 -#define VAR_DNSCRYPT_SECRET_KEY 486 -#define VAR_DNSCRYPT_PROVIDER_CERT 487 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 -#define VAR_IPSECMOD_ENABLED 493 -#define VAR_IPSECMOD_HOOK 494 -#define VAR_IPSECMOD_IGNORE_BOGUS 495 -#define VAR_IPSECMOD_MAX_TTL 496 -#define VAR_IPSECMOD_WHITELIST 497 -#define VAR_IPSECMOD_STRICT 498 -#define VAR_CACHEDB 499 -#define VAR_CACHEDB_BACKEND 500 -#define VAR_CACHEDB_SECRETSEED 501 -#define VAR_CACHEDB_REDISHOST 502 -#define VAR_CACHEDB_REDISPORT 503 -#define VAR_CACHEDB_REDISTIMEOUT 504 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 505 -#define VAR_FOR_UPSTREAM 506 -#define VAR_AUTH_ZONE 507 -#define VAR_ZONEFILE 508 -#define VAR_MASTER 509 -#define VAR_URL 510 -#define VAR_FOR_DOWNSTREAM 511 -#define VAR_FALLBACK_ENABLED 512 -#define VAR_TLS_ADDITIONAL_PORT 513 -#define VAR_LOW_RTT 514 -#define VAR_LOW_RTT_PERMIL 515 -#define VAR_FAST_SERVER_PERMIL 516 -#define VAR_FAST_SERVER_NUM 517 -#define VAR_ALLOW_NOTIFY 518 -#define VAR_TLS_WIN_CERT 519 -#define VAR_TCP_CONNECTION_LIMIT 520 -#define VAR_FORWARD_NO_CACHE 521 -#define VAR_STUB_NO_CACHE 522 -#define VAR_LOG_SERVFAIL 523 -#define VAR_DENY_ANY 524 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 525 -#define VAR_LOG_TAG_QUERYREPLY 526 -#define VAR_STREAM_WAIT_SIZE 527 -#define VAR_TLS_CIPHERS 528 -#define VAR_TLS_CIPHERSUITES 529 -#define VAR_IPSET 530 -#define VAR_IPSET_NAME_V4 531 -#define VAR_IPSET_NAME_V6 532 -#define VAR_TLS_SESSION_TICKET_KEYS 533 -#define VAR_RPZ 534 -#define VAR_TAGS 535 -#define VAR_RPZ_ACTION_OVERRIDE 536 -#define VAR_RPZ_CNAME_OVERRIDE 537 -#define VAR_RPZ_LOG 538 -#define VAR_RPZ_LOG_NAME 539 +#define VAR_HTTPS_PORT 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 +#define VAR_IP_RATELIMIT 433 +#define VAR_IP_RATELIMIT_SLABS 434 +#define VAR_IP_RATELIMIT_SIZE 435 +#define VAR_RATELIMIT 436 +#define VAR_RATELIMIT_SLABS 437 +#define VAR_RATELIMIT_SIZE 438 +#define VAR_RATELIMIT_FOR_DOMAIN 439 +#define VAR_RATELIMIT_BELOW_DOMAIN 440 +#define VAR_IP_RATELIMIT_FACTOR 441 +#define VAR_RATELIMIT_FACTOR 442 +#define VAR_SEND_CLIENT_SUBNET 443 +#define VAR_CLIENT_SUBNET_ZONE 444 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 +#define VAR_CLIENT_SUBNET_OPCODE 446 +#define VAR_MAX_CLIENT_SUBNET_IPV4 447 +#define VAR_MAX_CLIENT_SUBNET_IPV6 448 +#define VAR_MIN_CLIENT_SUBNET_IPV4 449 +#define VAR_MIN_CLIENT_SUBNET_IPV6 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 +#define VAR_CAPS_WHITELIST 453 +#define VAR_CACHE_MAX_NEGATIVE_TTL 454 +#define VAR_PERMIT_SMALL_HOLDDOWN 455 +#define VAR_QNAME_MINIMISATION 456 +#define VAR_QNAME_MINIMISATION_STRICT 457 +#define VAR_IP_FREEBIND 458 +#define VAR_DEFINE_TAG 459 +#define VAR_LOCAL_ZONE_TAG 460 +#define VAR_ACCESS_CONTROL_TAG 461 +#define VAR_LOCAL_ZONE_OVERRIDE 462 +#define VAR_ACCESS_CONTROL_TAG_ACTION 463 +#define VAR_ACCESS_CONTROL_TAG_DATA 464 +#define VAR_VIEW 465 +#define VAR_ACCESS_CONTROL_VIEW 466 +#define VAR_VIEW_FIRST 467 +#define VAR_SERVE_EXPIRED 468 +#define VAR_SERVE_EXPIRED_TTL 469 +#define VAR_SERVE_EXPIRED_TTL_RESET 470 +#define VAR_SERVE_EXPIRED_REPLY_TTL 471 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 +#define VAR_FAKE_DSA 473 +#define VAR_FAKE_SHA1 474 +#define VAR_LOG_IDENTITY 475 +#define VAR_HIDE_TRUSTANCHOR 476 +#define VAR_TRUST_ANCHOR_SIGNALING 477 +#define VAR_AGGRESSIVE_NSEC 478 +#define VAR_USE_SYSTEMD 479 +#define VAR_SHM_ENABLE 480 +#define VAR_SHM_KEY 481 +#define VAR_ROOT_KEY_SENTINEL 482 +#define VAR_DNSCRYPT 483 +#define VAR_DNSCRYPT_ENABLE 484 +#define VAR_DNSCRYPT_PORT 485 +#define VAR_DNSCRYPT_PROVIDER 486 +#define VAR_DNSCRYPT_SECRET_KEY 487 +#define VAR_DNSCRYPT_PROVIDER_CERT 488 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 +#define VAR_IPSECMOD_ENABLED 494 +#define VAR_IPSECMOD_HOOK 495 +#define VAR_IPSECMOD_IGNORE_BOGUS 496 +#define VAR_IPSECMOD_MAX_TTL 497 +#define VAR_IPSECMOD_WHITELIST 498 +#define VAR_IPSECMOD_STRICT 499 +#define VAR_CACHEDB 500 +#define VAR_CACHEDB_BACKEND 501 +#define VAR_CACHEDB_SECRETSEED 502 +#define VAR_CACHEDB_REDISHOST 503 +#define VAR_CACHEDB_REDISPORT 504 +#define VAR_CACHEDB_REDISTIMEOUT 505 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 +#define VAR_FOR_UPSTREAM 507 +#define VAR_AUTH_ZONE 508 +#define VAR_ZONEFILE 509 +#define VAR_MASTER 510 +#define VAR_URL 511 +#define VAR_FOR_DOWNSTREAM 512 +#define VAR_FALLBACK_ENABLED 513 +#define VAR_TLS_ADDITIONAL_PORT 514 +#define VAR_LOW_RTT 515 +#define VAR_LOW_RTT_PERMIL 516 +#define VAR_FAST_SERVER_PERMIL 517 +#define VAR_FAST_SERVER_NUM 518 +#define VAR_ALLOW_NOTIFY 519 +#define VAR_TLS_WIN_CERT 520 +#define VAR_TCP_CONNECTION_LIMIT 521 +#define VAR_FORWARD_NO_CACHE 522 +#define VAR_STUB_NO_CACHE 523 +#define VAR_LOG_SERVFAIL 524 +#define VAR_DENY_ANY 525 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 +#define VAR_LOG_TAG_QUERYREPLY 527 +#define VAR_STREAM_WAIT_SIZE 528 +#define VAR_TLS_CIPHERS 529 +#define VAR_TLS_CIPHERSUITES 530 +#define VAR_IPSET 531 +#define VAR_IPSET_NAME_V4 532 +#define VAR_IPSET_NAME_V6 533 +#define VAR_TLS_SESSION_TICKET_KEYS 534 +#define VAR_RPZ 535 +#define VAR_TAGS 536 +#define VAR_RPZ_ACTION_OVERRIDE 537 +#define VAR_RPZ_CNAME_OVERRIDE 538 +#define VAR_RPZ_LOG 539 +#define VAR_RPZ_LOG_NAME 540 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:355 */ char* str; -#line 714 "util/configparser.c" - +#line 709 "util/configparser.c" /* yacc.c:355 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -725,7 +720,9 @@ int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Copy the second part of user declarations. */ +#line 726 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -746,13 +743,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -764,7 +761,7 @@ typedef short yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -800,6 +797,15 @@ typedef short yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -807,7 +813,7 @@ typedef short yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -827,8 +833,6 @@ typedef short yytype_int16; #endif -#define YY_ASSERT(E) ((void) (0 && (E))) - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -960,27 +964,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 604 +#define YYLAST 606 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 285 +#define YYNTOKENS 286 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 308 +#define YYNNTS 309 /* YYNRULES -- Number of rules. */ -#define YYNRULES 594 +#define YYNRULES 596 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 884 +#define YYNSTATES 887 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 539 +#define YYMAXUTOK 540 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1036,73 +1040,74 @@ static const yytype_uint16 yytranslate[] = 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284 + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 177, 177, 177, 178, 178, 179, 179, 180, 180, - 180, 181, 181, 182, 182, 183, 187, 192, 193, 194, - 194, 194, 195, 195, 196, 196, 196, 197, 197, 198, - 198, 198, 199, 199, 200, 200, 200, 201, 201, 201, - 202, 202, 203, 203, 204, 204, 205, 205, 206, 206, - 207, 207, 208, 208, 209, 209, 210, 210, 210, 211, - 211, 211, 212, 212, 212, 213, 213, 214, 214, 215, - 215, 216, 216, 217, 217, 217, 218, 218, 219, 219, - 220, 220, 220, 221, 221, 222, 222, 223, 223, 224, - 224, 224, 225, 225, 226, 226, 227, 227, 228, 228, - 229, 229, 230, 230, 230, 231, 231, 232, 232, 232, - 233, 233, 233, 234, 234, 234, 235, 235, 235, 235, - 236, 237, 237, 237, 238, 238, 238, 239, 239, 240, - 240, 241, 241, 241, 242, 242, 243, 243, 243, 244, - 244, 245, 245, 246, 247, 247, 248, 248, 249, 249, - 250, 251, 251, 252, 252, 253, 253, 254, 254, 255, - 255, 256, 256, 256, 257, 257, 258, 258, 259, 259, - 260, 260, 261, 261, 262, 262, 263, 263, 263, 264, - 264, 264, 265, 265, 265, 266, 266, 267, 268, 268, - 269, 269, 270, 270, 271, 271, 272, 272, 272, 273, - 273, 273, 274, 274, 274, 275, 275, 276, 276, 277, - 277, 279, 291, 292, 293, 293, 293, 293, 293, 294, - 294, 296, 308, 309, 310, 310, 310, 310, 311, 311, - 313, 327, 328, 329, 329, 329, 329, 330, 330, 330, - 332, 349, 350, 351, 351, 351, 351, 352, 352, 352, - 353, 356, 375, 392, 400, 410, 418, 435, 436, 437, - 437, 437, 437, 437, 438, 438, 438, 439, 439, 441, - 450, 459, 470, 479, 488, 497, 508, 517, 529, 543, - 558, 569, 586, 603, 620, 637, 652, 667, 680, 695, - 704, 713, 722, 731, 740, 749, 758, 767, 776, 785, - 794, 803, 812, 821, 834, 843, 856, 865, 874, 883, - 890, 897, 906, 913, 922, 930, 937, 944, 952, 961, - 970, 984, 993, 1002, 1011, 1020, 1029, 1038, 1045, 1052, - 1078, 1086, 1093, 1100, 1107, 1114, 1122, 1130, 1138, 1145, - 1156, 1167, 1174, 1183, 1192, 1201, 1208, 1215, 1223, 1231, - 1241, 1251, 1261, 1269, 1282, 1293, 1301, 1314, 1323, 1332, - 1341, 1351, 1361, 1369, 1382, 1391, 1399, 1408, 1416, 1429, - 1438, 1445, 1455, 1465, 1475, 1485, 1495, 1505, 1515, 1525, - 1532, 1539, 1546, 1555, 1564, 1573, 1582, 1589, 1599, 1619, - 1626, 1644, 1657, 1670, 1679, 1688, 1697, 1706, 1716, 1726, - 1737, 1746, 1755, 1764, 1773, 1782, 1791, 1804, 1817, 1826, - 1833, 1842, 1851, 1860, 1869, 1877, 1890, 1898, 1939, 1946, - 1961, 1971, 1981, 1988, 1995, 2002, 2011, 2019, 2033, 2054, - 2075, 2087, 2099, 2111, 2120, 2141, 2151, 2160, 2168, 2176, - 2189, 2202, 2217, 2232, 2241, 2250, 2256, 2265, 2274, 2284, - 2294, 2307, 2320, 2332, 2346, 2358, 2372, 2382, 2389, 2396, - 2405, 2414, 2424, 2434, 2444, 2451, 2458, 2467, 2476, 2486, - 2496, 2503, 2510, 2517, 2525, 2535, 2545, 2555, 2565, 2604, - 2614, 2622, 2630, 2645, 2654, 2659, 2660, 2661, 2661, 2661, - 2662, 2662, 2662, 2663, 2663, 2665, 2675, 2684, 2691, 2698, - 2705, 2712, 2719, 2726, 2731, 2732, 2733, 2733, 2734, 2734, - 2734, 2735, 2736, 2736, 2737, 2737, 2738, 2738, 2739, 2740, - 2741, 2742, 2743, 2744, 2746, 2755, 2762, 2769, 2778, 2785, - 2792, 2799, 2806, 2815, 2824, 2831, 2838, 2848, 2858, 2868, - 2878, 2888, 2898, 2903, 2904, 2905, 2907, 2913, 2923, 2930, - 2939, 2947, 2952, 2953, 2955, 2955, 2955, 2956, 2956, 2957, - 2958, 2959, 2960, 2961, 2963, 2973, 2982, 2989, 2998, 3005, - 3014, 3022, 3035, 3043, 3056, 3061, 3062, 3063, 3063, 3064, - 3064, 3064, 3066, 3078, 3090, 3102, 3117, 3130, 3141, 3146, - 3147, 3148, 3148, 3150, 3165 + 0, 178, 178, 178, 179, 179, 180, 180, 181, 181, + 181, 182, 182, 183, 183, 184, 188, 193, 194, 195, + 195, 195, 196, 196, 197, 197, 197, 198, 198, 199, + 199, 199, 200, 200, 201, 201, 201, 202, 202, 202, + 203, 203, 204, 204, 205, 205, 206, 206, 207, 207, + 208, 208, 209, 209, 210, 210, 211, 211, 211, 212, + 212, 212, 213, 213, 213, 214, 214, 215, 215, 216, + 216, 217, 217, 218, 218, 218, 219, 219, 220, 220, + 221, 221, 221, 222, 222, 223, 223, 224, 224, 225, + 225, 225, 226, 226, 227, 227, 228, 228, 229, 229, + 230, 230, 231, 231, 231, 232, 232, 233, 233, 233, + 234, 234, 234, 235, 235, 235, 236, 236, 236, 236, + 237, 238, 238, 238, 239, 240, 240, 240, 241, 241, + 242, 242, 243, 243, 243, 244, 244, 245, 245, 245, + 246, 246, 247, 247, 248, 249, 249, 250, 250, 251, + 251, 252, 253, 253, 254, 254, 255, 255, 256, 256, + 257, 257, 258, 258, 258, 259, 259, 260, 260, 261, + 261, 262, 262, 263, 263, 264, 264, 265, 265, 265, + 266, 266, 266, 267, 267, 267, 268, 268, 269, 270, + 270, 271, 271, 272, 272, 273, 273, 274, 274, 274, + 275, 275, 275, 276, 276, 276, 277, 277, 278, 278, + 279, 279, 281, 293, 294, 295, 295, 295, 295, 295, + 296, 296, 298, 310, 311, 312, 312, 312, 312, 313, + 313, 315, 329, 330, 331, 331, 331, 331, 332, 332, + 332, 334, 351, 352, 353, 353, 353, 353, 354, 354, + 354, 355, 358, 377, 394, 402, 412, 420, 437, 438, + 439, 439, 439, 439, 439, 440, 440, 440, 441, 441, + 443, 452, 461, 472, 481, 490, 499, 510, 519, 531, + 545, 560, 571, 588, 605, 622, 639, 654, 669, 682, + 697, 706, 715, 724, 733, 742, 751, 760, 769, 778, + 787, 796, 805, 814, 823, 836, 845, 858, 867, 876, + 885, 892, 899, 908, 915, 924, 932, 939, 946, 954, + 963, 972, 981, 995, 1004, 1013, 1022, 1031, 1040, 1049, + 1056, 1063, 1089, 1097, 1104, 1111, 1118, 1125, 1133, 1141, + 1149, 1156, 1167, 1178, 1185, 1194, 1203, 1212, 1219, 1226, + 1234, 1242, 1252, 1262, 1272, 1280, 1293, 1304, 1312, 1325, + 1334, 1343, 1352, 1362, 1372, 1380, 1393, 1402, 1410, 1419, + 1427, 1440, 1449, 1456, 1466, 1476, 1486, 1496, 1506, 1516, + 1526, 1536, 1543, 1550, 1557, 1566, 1575, 1584, 1593, 1600, + 1610, 1630, 1637, 1655, 1668, 1681, 1690, 1699, 1708, 1717, + 1727, 1737, 1748, 1757, 1766, 1775, 1784, 1793, 1802, 1815, + 1828, 1837, 1844, 1853, 1862, 1871, 1880, 1888, 1901, 1909, + 1950, 1957, 1972, 1982, 1992, 1999, 2006, 2013, 2022, 2030, + 2044, 2065, 2086, 2098, 2110, 2122, 2131, 2152, 2162, 2171, + 2179, 2187, 2200, 2213, 2228, 2243, 2252, 2261, 2267, 2276, + 2285, 2295, 2305, 2318, 2331, 2343, 2357, 2369, 2383, 2393, + 2400, 2407, 2416, 2425, 2435, 2445, 2455, 2462, 2469, 2478, + 2487, 2497, 2507, 2514, 2521, 2528, 2536, 2546, 2556, 2566, + 2576, 2615, 2625, 2633, 2641, 2656, 2665, 2670, 2671, 2672, + 2672, 2672, 2673, 2673, 2673, 2674, 2674, 2676, 2686, 2695, + 2702, 2709, 2716, 2723, 2730, 2737, 2742, 2743, 2744, 2744, + 2745, 2745, 2745, 2746, 2747, 2747, 2748, 2748, 2749, 2749, + 2750, 2751, 2752, 2753, 2754, 2755, 2757, 2766, 2773, 2780, + 2789, 2796, 2803, 2810, 2817, 2826, 2835, 2842, 2849, 2859, + 2869, 2879, 2889, 2899, 2909, 2914, 2915, 2916, 2918, 2924, + 2934, 2941, 2950, 2958, 2963, 2964, 2966, 2966, 2966, 2967, + 2967, 2968, 2969, 2970, 2971, 2972, 2974, 2984, 2993, 3000, + 3009, 3016, 3025, 3033, 3046, 3054, 3067, 3072, 3073, 3074, + 3074, 3075, 3075, 3075, 3077, 3089, 3101, 3113, 3128, 3141, + 3152, 3157, 3158, 3159, 3159, 3161, 3176 }; #endif @@ -1155,16 +1160,16 @@ static const char *const yytname[] = "VAR_LOG_REPLIES", "VAR_LOG_LOCAL_ACTIONS", "VAR_TCP_UPSTREAM", "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", - "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_STUB_FIRST", - "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", - "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", - "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", - "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", - "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", - "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", + "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", + "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", + "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", + "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", + "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", + "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME", + "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", + "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", + "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1244,9 +1249,9 @@ static const char *const yytname[] = "server_tls_cert_bundle", "server_tls_win_cert", "server_tls_additional_port", "server_tls_ciphers", "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", + "server_https_port", "server_use_systemd", "server_do_daemonize", + "server_use_syslog", "server_log_time_ascii", "server_log_queries", + "server_log_replies", "server_log_tag_queryreply", "server_log_servfail", "server_log_local_actions", "server_chroot", "server_username", "server_directory", "server_logfile", "server_pidfile", "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", @@ -1377,14 +1382,14 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540 }; # endif -#define YYPACT_NINF -269 +#define YYPACT_NINF -271 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-269))) + (!!((Yystate) == (-271))) #define YYTABLE_NINF -1 @@ -1395,95 +1400,95 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -269, 0, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, 268, -42, - -37, -41, -21, -43, -44, -87, -106, -204, -228, -268, - 2, 3, 4, 12, 24, 25, 26, 27, 28, 31, + -271, 0, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, 269, -42, + -38, -41, -21, -43, -44, -88, -103, -205, -230, -270, + 2, 3, 11, 12, 24, 25, 26, 27, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 50, 51, 52, 53, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 87, 88, 91, 93, 94, 95, 96, + 82, 83, 84, 87, 88, 92, 93, 94, 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 123, 124, 125, 126, 127, 128, 129, + 118, 119, 120, 121, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, + 140, 141, 142, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 203, 204, 205, - 206, 207, 208, 209, 211, 212, 213, 214, 216, 218, - 221, 233, 235, 236, 237, 238, 239, 240, 241, 243, + 192, 193, 194, 195, 196, 197, 198, 199, 204, 205, + 206, 207, 208, 209, 210, 212, 213, 214, 215, 217, + 220, 222, 234, 236, 237, 238, 239, 240, 241, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 266, 267, 302, 303, 304, 305, 309, 310, 311, - 353, 354, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, 355, 356, 357, 358, 359, - 360, 361, -269, -269, -269, -269, -269, -269, -269, -269, - 365, 369, 370, 395, 396, 397, -269, -269, -269, -269, - -269, -269, -269, 399, 410, 411, 412, 413, 414, 415, - -269, -269, -269, -269, -269, -269, -269, -269, 416, 417, - 418, 419, 420, 421, 422, 423, -269, -269, -269, -269, - -269, -269, -269, -269, -269, 424, 425, 426, 427, 428, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, 467, 469, 485, 486, 487, 488, 489, 490, -269, - -269, -269, -269, -269, -269, -269, -269, -269, 491, 492, - 493, 494, 495, 502, 503, 504, 505, 506, 507, 509, - 510, 511, 512, 513, 514, 515, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, 518, -269, -269, 521, 524, - 525, 533, 534, 535, 537, 538, 539, 540, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, 541, - 542, 543, 544, 545, -269, -269, -269, -269, -269, -269, - 546, 547, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, 548, 549, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, 550, 551, 552, -269, -269, -269, -269, -269, - -269, -269, -269, -269, 553, 554, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, 555, 556, 557, 558, 559, - 560, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, 561, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, 562, -269, -269, 563, 564, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, 565, 566, 567, -269, -269, -269, -269, - -269, -269, -269, -269 + 264, 265, 267, 268, 303, 304, 305, 306, 310, 311, + 312, 354, 355, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, 356, 357, 358, + 359, 360, 361, 362, -271, -271, -271, -271, -271, -271, + -271, -271, 366, 370, 371, 396, 397, 398, -271, -271, + -271, -271, -271, -271, -271, 401, 412, 413, 414, 415, + 416, 417, -271, -271, -271, -271, -271, -271, -271, -271, + 418, 419, 420, 421, 422, 423, 424, 425, -271, -271, + -271, -271, -271, -271, -271, -271, -271, 426, 427, 428, + 429, 430, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, 469, 471, 487, 488, 489, 490, 491, + 492, -271, -271, -271, -271, -271, -271, -271, -271, -271, + 493, 494, 495, 496, 497, 504, 505, 506, 507, 508, + 509, 511, 512, 513, 514, 515, 516, 517, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, 520, -271, -271, + 523, 526, 527, 535, 536, 537, 539, 540, 541, 542, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, 543, 544, 545, 546, 547, -271, -271, -271, -271, + -271, -271, 548, 549, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, 550, 551, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, 552, 553, 554, -271, -271, + -271, -271, -271, -271, -271, -271, -271, 555, 556, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, 557, 558, + 559, 560, 561, 562, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, 563, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, 564, -271, -271, 565, 566, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, 567, 568, 569, -271, + -271, -271, -271, -271, -271, -271, -271 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1491,9 +1496,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 211, 221, 484, 542, 503, 230, - 551, 574, 240, 588, 256, 3, 18, 213, 223, 232, - 242, 258, 486, 505, 544, 553, 576, 590, 4, 5, + 2, 0, 1, 16, 212, 222, 486, 544, 505, 231, + 553, 576, 241, 590, 257, 3, 18, 214, 224, 233, + 243, 259, 488, 507, 546, 555, 578, 592, 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1514,144 +1519,144 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 19, 20, 83, 86, 95, 182, 183, - 21, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 34, 74, 22, 87, 88, 45, 67, 82, 23, - 24, 27, 28, 25, 26, 29, 30, 31, 32, 33, - 118, 194, 119, 121, 122, 123, 196, 201, 197, 208, - 209, 210, 178, 84, 73, 99, 116, 117, 206, 203, - 120, 35, 36, 37, 38, 39, 75, 89, 90, 105, - 61, 71, 62, 186, 187, 100, 55, 56, 185, 57, - 58, 109, 113, 127, 136, 161, 207, 110, 68, 40, - 41, 42, 97, 128, 129, 130, 43, 44, 46, 47, - 49, 50, 48, 134, 51, 52, 53, 59, 78, 114, - 92, 135, 85, 157, 93, 94, 111, 112, 204, 98, - 54, 76, 79, 60, 63, 101, 102, 77, 158, 103, - 64, 65, 66, 195, 115, 171, 172, 173, 174, 175, - 176, 184, 104, 72, 106, 107, 108, 159, 69, 70, - 91, 80, 81, 96, 124, 125, 205, 126, 131, 132, - 133, 162, 163, 165, 167, 168, 166, 169, 179, 137, - 138, 141, 142, 139, 140, 143, 144, 146, 145, 198, - 200, 199, 160, 170, 188, 190, 189, 191, 192, 193, - 164, 177, 180, 181, 202, 0, 0, 0, 0, 0, - 0, 0, 212, 214, 215, 216, 218, 219, 220, 217, - 0, 0, 0, 0, 0, 0, 222, 224, 225, 226, - 227, 228, 229, 0, 0, 0, 0, 0, 0, 0, - 231, 233, 234, 237, 238, 235, 239, 236, 0, 0, - 0, 0, 0, 0, 0, 0, 241, 243, 244, 245, - 246, 250, 247, 248, 249, 0, 0, 0, 0, 0, - 261, 265, 266, 267, 268, 257, 259, 260, 262, 263, - 264, 0, 0, 0, 0, 0, 0, 0, 0, 485, - 487, 489, 488, 494, 490, 491, 492, 493, 0, 0, + 0, 0, 0, 17, 19, 20, 83, 86, 95, 183, + 184, 21, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 34, 74, 22, 87, 88, 45, 67, 82, + 23, 24, 27, 28, 25, 26, 29, 30, 31, 32, + 33, 118, 195, 119, 121, 122, 123, 197, 202, 198, + 209, 210, 211, 124, 179, 84, 73, 99, 116, 117, + 207, 204, 120, 35, 36, 37, 38, 39, 75, 89, + 90, 105, 61, 71, 62, 187, 188, 100, 55, 56, + 186, 57, 58, 109, 113, 128, 137, 162, 208, 110, + 68, 40, 41, 42, 97, 129, 130, 131, 43, 44, + 46, 47, 49, 50, 48, 135, 51, 52, 53, 59, + 78, 114, 92, 136, 85, 158, 93, 94, 111, 112, + 205, 98, 54, 76, 79, 60, 63, 101, 102, 77, + 159, 103, 64, 65, 66, 196, 115, 172, 173, 174, + 175, 176, 177, 185, 104, 72, 106, 107, 108, 160, + 69, 70, 91, 80, 81, 96, 125, 126, 206, 127, + 132, 133, 134, 163, 164, 166, 168, 169, 167, 170, + 180, 138, 139, 142, 143, 140, 141, 144, 145, 147, + 146, 199, 201, 200, 161, 171, 189, 191, 190, 192, + 193, 194, 165, 178, 181, 182, 203, 0, 0, 0, + 0, 0, 0, 0, 213, 215, 216, 217, 219, 220, + 221, 218, 0, 0, 0, 0, 0, 0, 223, 225, + 226, 227, 228, 229, 230, 0, 0, 0, 0, 0, + 0, 0, 232, 234, 235, 238, 239, 236, 240, 237, + 0, 0, 0, 0, 0, 0, 0, 0, 242, 244, + 245, 246, 247, 251, 248, 249, 250, 0, 0, 0, + 0, 0, 262, 266, 267, 268, 269, 258, 260, 261, + 263, 264, 265, 0, 0, 0, 0, 0, 0, 0, + 0, 487, 489, 491, 490, 496, 492, 493, 494, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 504, 506, 507, 508, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 0, 543, 545, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 552, 554, - 555, 556, 558, 559, 557, 560, 561, 562, 563, 0, - 0, 0, 0, 0, 575, 577, 578, 579, 580, 581, - 0, 0, 589, 591, 592, 270, 269, 276, 289, 287, - 299, 295, 296, 300, 297, 298, 301, 302, 303, 304, - 305, 327, 328, 329, 330, 331, 355, 356, 357, 362, - 363, 292, 364, 365, 368, 366, 367, 370, 371, 372, - 386, 342, 343, 345, 346, 373, 389, 336, 338, 390, - 396, 397, 398, 293, 354, 414, 415, 337, 409, 320, - 288, 332, 387, 393, 374, 0, 0, 418, 294, 271, - 319, 378, 272, 290, 291, 333, 334, 416, 376, 380, - 381, 273, 419, 358, 385, 321, 341, 391, 392, 395, - 408, 335, 412, 410, 411, 347, 353, 382, 383, 348, - 349, 375, 400, 322, 323, 326, 306, 308, 309, 310, - 311, 312, 420, 421, 423, 359, 360, 361, 369, 424, - 425, 426, 0, 0, 0, 377, 350, 547, 435, 439, - 437, 436, 440, 438, 0, 0, 443, 444, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 379, 394, - 413, 448, 449, 351, 427, 0, 0, 0, 0, 0, - 0, 401, 402, 403, 404, 405, 406, 407, 548, 344, - 339, 399, 318, 274, 275, 340, 450, 452, 451, 453, - 454, 455, 307, 314, 445, 447, 446, 313, 0, 325, - 384, 422, 324, 352, 315, 316, 317, 456, 457, 458, - 462, 461, 459, 460, 463, 464, 465, 466, 468, 467, - 477, 0, 481, 482, 0, 0, 483, 469, 475, 470, - 471, 472, 474, 476, 473, 251, 252, 253, 254, 255, - 495, 497, 496, 499, 500, 501, 502, 498, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, - 536, 537, 538, 539, 540, 541, 546, 564, 565, 566, - 569, 567, 568, 570, 571, 572, 573, 582, 583, 584, - 585, 586, 593, 594, 388, 417, 434, 549, 550, 441, - 442, 428, 429, 0, 0, 0, 433, 587, 478, 479, - 480, 432, 430, 431 + 519, 520, 521, 522, 523, 524, 525, 0, 545, 547, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 554, 556, 557, 558, 560, 561, 559, 562, 563, 564, + 565, 0, 0, 0, 0, 0, 577, 579, 580, 581, + 582, 583, 0, 0, 591, 593, 594, 271, 270, 277, + 290, 288, 300, 296, 297, 301, 298, 299, 302, 303, + 304, 305, 306, 329, 330, 331, 332, 333, 357, 358, + 359, 364, 365, 293, 366, 367, 370, 368, 369, 372, + 373, 374, 388, 344, 345, 347, 348, 375, 391, 338, + 340, 392, 398, 399, 400, 294, 356, 416, 417, 339, + 411, 322, 289, 334, 389, 395, 376, 0, 0, 420, + 295, 272, 321, 380, 273, 291, 292, 335, 336, 418, + 378, 382, 383, 274, 421, 360, 387, 323, 343, 393, + 394, 397, 410, 337, 414, 412, 413, 349, 355, 384, + 385, 350, 351, 377, 402, 324, 325, 328, 307, 309, + 310, 311, 312, 313, 319, 422, 423, 425, 361, 362, + 363, 371, 426, 427, 428, 0, 0, 0, 379, 352, + 549, 437, 441, 439, 438, 442, 440, 0, 0, 445, + 446, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 381, 396, 415, 450, 451, 353, 429, 0, 0, + 0, 0, 0, 0, 403, 404, 405, 406, 407, 408, + 409, 550, 346, 341, 401, 320, 275, 276, 342, 452, + 454, 453, 455, 456, 457, 308, 315, 447, 449, 448, + 314, 0, 327, 386, 424, 326, 354, 316, 317, 318, + 458, 459, 460, 464, 463, 461, 462, 465, 466, 467, + 468, 470, 469, 479, 0, 483, 484, 0, 0, 485, + 471, 477, 472, 473, 474, 476, 478, 475, 252, 253, + 254, 255, 256, 497, 499, 498, 501, 502, 503, 504, + 500, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 548, + 566, 567, 568, 571, 569, 570, 572, 573, 574, 575, + 584, 585, 586, 587, 588, 595, 596, 390, 419, 436, + 551, 552, 443, 444, 430, 431, 0, 0, 0, 435, + 589, 480, 481, 482, 434, 432, 433 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -23, 568, 569, 570, - 571, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269, -269, -269, - -269, -269, -269, -269, -269, -269, -269, -269 + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -23, 570, 571, + 572, 573, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, + -271, -271, -271, -271, -271, -271, -271, -271, -271 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 232, 17, 29, 432, 18, - 30, 446, 19, 31, 460, 20, 32, 476, 490, 491, - 492, 493, 494, 21, 33, 495, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 433, 434, 435, 436, 437, 438, 439, - 447, 448, 449, 450, 451, 452, 477, 478, 479, 480, - 481, 482, 483, 484, 461, 462, 463, 464, 465, 466, - 467, 22, 34, 509, 510, 511, 512, 513, 514, 515, - 516, 517, 23, 35, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, - 552, 553, 554, 24, 36, 556, 557, 420, 421, 422, - 423, 25, 37, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 26, 38, 584, 585, 586, 587, - 588, 589, 424, 27, 39, 592, 593, 594 + -1, 1, 15, 16, 28, 233, 17, 29, 434, 18, + 30, 448, 19, 31, 462, 20, 32, 478, 492, 493, + 494, 495, 496, 21, 33, 497, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 435, 436, 437, 438, 439, 440, + 441, 449, 450, 451, 452, 453, 454, 479, 480, 481, + 482, 483, 484, 485, 486, 463, 464, 465, 466, 467, + 468, 469, 22, 34, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 23, 35, 538, 539, 540, 541, 542, + 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 24, 36, 558, 559, 422, 423, + 424, 425, 25, 37, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 26, 38, 586, 587, 588, + 589, 590, 591, 426, 27, 39, 594, 595, 596 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1659,142 +1664,142 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 468, 425, 453, 426, 427, 555, 440, 590, 591, - 496, 3, 595, 596, 597, 441, 442, 579, 580, 581, - 582, 583, 598, 468, 558, 559, 560, 561, 562, 563, - 564, 565, 566, 567, 599, 600, 601, 602, 603, 454, - 455, 604, 605, 606, 607, 4, 608, 609, 610, 611, - 612, 5, 501, 502, 503, 504, 505, 506, 507, 508, - 613, 614, 615, 616, 456, 428, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, - 532, 533, 534, 535, 617, 618, 619, 620, 621, 622, - 623, 624, 625, 626, 627, 6, 429, 628, 629, 430, - 443, 630, 444, 631, 632, 633, 634, 635, 636, 637, - 638, 7, 639, 640, 641, 642, 643, 644, 645, 646, - 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, - 657, 457, 458, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 8, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, - 459, 694, 695, 696, 697, 698, 699, 700, 701, 702, - 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 730, 731, 9, - 470, 471, 472, 732, 733, 734, 735, 736, 737, 738, - 475, 739, 740, 741, 742, 431, 743, 10, 744, 445, - 469, 745, 470, 471, 472, 473, 474, 485, 486, 487, - 488, 489, 475, 746, 11, 747, 748, 749, 750, 751, - 752, 753, 12, 754, 755, 756, 757, 758, 759, 760, - 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, - 771, 772, 773, 774, 775, 13, 776, 777, 0, 14, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 778, 779, 780, 781, 72, 73, 74, 782, - 783, 784, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 785, 786, 787, 788, 789, 790, 791, - 792, 793, 116, 117, 118, 794, 119, 120, 121, 795, - 796, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 797, 798, 799, 146, 800, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, - 811, 812, 813, 814, 815, 816, 817, 818, 819, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 820, 195, 821, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 822, 823, 824, 825, 826, - 827, 828, 829, 830, 831, 832, 211, 212, 213, 214, - 215, 216, 833, 834, 835, 836, 837, 838, 217, 839, - 840, 841, 842, 843, 844, 845, 218, 219, 846, 220, - 221, 847, 222, 223, 848, 849, 224, 225, 226, 227, - 228, 229, 230, 850, 851, 852, 231, 853, 854, 855, - 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, - 876, 877, 878, 879, 880, 881, 882, 883, 0, 0, + 2, 470, 427, 455, 428, 429, 442, 592, 593, 557, + 498, 3, 597, 598, 443, 444, 581, 582, 583, 584, + 585, 599, 600, 470, 560, 561, 562, 563, 564, 565, + 566, 567, 568, 569, 601, 602, 603, 604, 605, 456, + 457, 606, 607, 608, 609, 4, 610, 611, 612, 613, + 614, 5, 503, 504, 505, 506, 507, 508, 509, 510, + 615, 616, 617, 618, 458, 430, 520, 521, 522, 523, + 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 534, 535, 536, 537, 619, 620, 621, 622, 623, 624, + 625, 626, 627, 628, 629, 6, 431, 630, 631, 445, + 432, 446, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 7, 641, 642, 643, 644, 645, 646, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 459, 460, 661, 662, 663, 664, 665, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 8, 680, 681, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, + 696, 461, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, + 9, 472, 473, 474, 735, 736, 737, 738, 739, 740, + 741, 477, 742, 743, 744, 745, 433, 746, 10, 447, + 747, 471, 748, 472, 473, 474, 475, 476, 487, 488, + 489, 490, 491, 477, 749, 11, 750, 751, 752, 753, + 754, 755, 756, 12, 757, 758, 759, 760, 761, 762, + 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, + 773, 774, 775, 776, 777, 778, 13, 779, 780, 0, + 14, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 781, 782, 783, 784, 72, 73, 74, + 785, 786, 787, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 788, 789, 790, 791, 792, 793, + 794, 795, 796, 116, 117, 118, 797, 119, 120, 121, + 798, 799, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 800, 801, 802, 146, + 147, 803, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 804, 805, 806, 807, 808, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 819, 820, 821, + 822, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 823, + 196, 824, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 825, 826, 827, + 828, 829, 830, 831, 832, 833, 834, 835, 212, 213, + 214, 215, 216, 217, 836, 837, 838, 839, 840, 841, + 218, 842, 843, 844, 845, 846, 847, 848, 219, 220, + 849, 221, 222, 850, 223, 224, 851, 852, 225, 226, + 227, 228, 229, 230, 231, 853, 854, 855, 232, 856, + 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, + 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, + 877, 878, 879, 880, 881, 882, 883, 884, 885, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 497, 498, 499, 500 + 0, 0, 0, 499, 500, 501, 502 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 276, 277, - 33, 11, 10, 10, 10, 52, 53, 245, 246, 247, - 248, 249, 10, 44, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 10, 10, 10, 10, 10, 80, + 0, 44, 44, 44, 46, 47, 44, 277, 278, 112, + 33, 11, 10, 10, 52, 53, 246, 247, 248, 249, + 250, 10, 10, 44, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 10, 10, 10, 10, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, 10, 51, 96, 97, 98, 99, 100, 101, 102, 103, - 10, 10, 10, 10, 105, 107, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, - 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 105, 107, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 95, 138, 10, 10, 137, + 142, 139, 10, 10, 10, 10, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 211, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 209, - 253, 254, 255, 10, 10, 10, 10, 10, 10, 10, - 263, 10, 10, 10, 10, 267, 10, 227, 10, 266, - 251, 10, 253, 254, 255, 256, 257, 280, 281, 282, - 283, 284, 263, 10, 244, 10, 10, 10, 10, 10, - 10, 10, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 275, 10, 10, -1, 279, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 10, 10, 10, 10, 48, 49, 50, 10, - 10, 10, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 104, 105, 106, 10, 108, 109, 110, 10, - 10, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 10, 10, 10, 140, 10, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 210, 254, 255, 256, 10, 10, 10, 10, 10, 10, + 10, 264, 10, 10, 10, 10, 268, 10, 228, 267, + 10, 252, 10, 254, 255, 256, 257, 258, 281, 282, + 283, 284, 285, 264, 10, 245, 10, 10, 10, 10, + 10, 10, 10, 253, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 276, 10, 10, -1, + 280, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 10, 10, 10, 10, 48, 49, 50, + 10, 10, 10, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 104, 105, 106, 10, 108, 109, 110, + 10, 10, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 10, 10, 10, 140, + 141, 10, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 10, + 211, 10, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 239, 240, + 241, 242, 243, 244, 10, 10, 10, 10, 10, 10, + 251, 10, 10, 10, 10, 10, 10, 10, 259, 260, + 10, 262, 263, 10, 265, 266, 10, 10, 269, 270, + 271, 272, 273, 274, 275, 10, 10, 10, 279, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 10, 210, 10, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 238, 239, 240, 241, - 242, 243, 10, 10, 10, 10, 10, 10, 250, 10, - 10, 10, 10, 10, 10, 10, 258, 259, 10, 261, - 262, 10, 264, 265, 10, 10, 268, 269, 270, 271, - 272, 273, 274, 10, 10, 10, 278, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, 33, 33, 33 + -1, -1, -1, 33, 33, 33, 33 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 286, 0, 11, 45, 51, 95, 111, 152, 209, - 227, 244, 252, 275, 279, 287, 288, 291, 294, 297, - 300, 308, 526, 537, 558, 566, 579, 588, 289, 292, - 295, 298, 301, 309, 527, 538, 559, 567, 580, 589, + 0, 287, 0, 11, 45, 51, 95, 111, 153, 210, + 228, 245, 253, 276, 280, 288, 289, 292, 295, 298, + 301, 309, 528, 539, 560, 568, 581, 590, 290, 293, + 296, 299, 302, 310, 529, 540, 561, 569, 582, 591, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -1805,16 +1810,16 @@ static const yytype_uint16 yystos[] = 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, + 131, 132, 133, 134, 135, 136, 140, 141, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 210, 212, 213, 214, 215, + 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 238, 239, 240, 241, 242, 243, 250, 258, 259, - 261, 262, 264, 265, 268, 269, 270, 271, 272, 273, - 274, 278, 290, 311, 312, 313, 314, 315, 316, 317, + 226, 227, 239, 240, 241, 242, 243, 244, 251, 259, + 260, 262, 263, 265, 266, 269, 270, 271, 272, 273, + 274, 275, 279, 291, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, @@ -1833,24 +1838,24 @@ static const yytype_uint16 yystos[] = 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, - 562, 563, 564, 565, 587, 44, 46, 47, 107, 138, - 141, 267, 293, 498, 499, 500, 501, 502, 503, 504, - 44, 52, 53, 137, 139, 266, 296, 505, 506, 507, - 508, 509, 510, 44, 80, 81, 105, 172, 173, 211, - 299, 519, 520, 521, 522, 523, 524, 525, 44, 251, - 253, 254, 255, 256, 257, 263, 302, 511, 512, 513, - 514, 515, 516, 517, 518, 280, 281, 282, 283, 284, - 303, 304, 305, 306, 307, 310, 511, 512, 513, 514, - 515, 96, 97, 98, 99, 100, 101, 102, 103, 528, - 529, 530, 531, 532, 533, 534, 535, 536, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 539, 540, 541, 542, + 498, 499, 564, 565, 566, 567, 589, 44, 46, 47, + 107, 138, 142, 268, 294, 500, 501, 502, 503, 504, + 505, 506, 44, 52, 53, 137, 139, 267, 297, 507, + 508, 509, 510, 511, 512, 44, 80, 81, 105, 173, + 174, 212, 300, 521, 522, 523, 524, 525, 526, 527, + 44, 252, 254, 255, 256, 257, 258, 264, 303, 513, + 514, 515, 516, 517, 518, 519, 520, 281, 282, 283, + 284, 285, 304, 305, 306, 307, 308, 311, 513, 514, + 515, 516, 517, 96, 97, 98, 99, 100, 101, 102, + 103, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, - 553, 554, 555, 556, 557, 112, 560, 561, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 245, - 246, 247, 248, 249, 581, 582, 583, 584, 585, 586, - 276, 277, 590, 591, 592, 10, 10, 10, 10, 10, + 553, 554, 555, 556, 557, 558, 559, 112, 562, 563, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 246, 247, 248, 249, 250, 583, 584, 585, 586, + 587, 588, 277, 278, 592, 593, 594, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1879,39 +1884,39 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 285, 286, 286, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 288, 289, 289, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, - 290, 291, 292, 292, 293, 293, 293, 293, 293, 293, - 293, 294, 295, 295, 296, 296, 296, 296, 296, 296, - 297, 298, 298, 299, 299, 299, 299, 299, 299, 299, - 300, 301, 301, 302, 302, 302, 302, 302, 302, 302, - 302, 303, 304, 305, 306, 307, 308, 309, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 311, + 0, 286, 287, 287, 288, 288, 288, 288, 288, 288, + 288, 288, 288, 288, 288, 288, 289, 290, 290, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, + 291, 291, 292, 293, 293, 294, 294, 294, 294, 294, + 294, 294, 295, 296, 296, 297, 297, 297, 297, 297, + 297, 298, 299, 299, 300, 300, 300, 300, 300, 300, + 300, 301, 302, 302, 303, 303, 303, 303, 303, 303, + 303, 303, 304, 305, 306, 307, 308, 309, 310, 310, + 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, @@ -1933,18 +1938,18 @@ static const yytype_uint16 yyr1[] = 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, 527, 528, 528, 528, - 528, 528, 528, 528, 528, 529, 530, 531, 532, 533, - 534, 535, 536, 537, 538, 538, 539, 539, 539, 539, - 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, - 539, 539, 539, 539, 540, 541, 542, 543, 544, 545, + 522, 523, 524, 525, 526, 527, 528, 529, 529, 530, + 530, 530, 530, 530, 530, 530, 530, 531, 532, 533, + 534, 535, 536, 537, 538, 539, 540, 540, 541, 541, + 541, 541, 541, 541, 541, 541, 541, 541, 541, 541, + 541, 541, 541, 541, 541, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 567, 568, 568, 568, 568, 568, 568, - 568, 568, 568, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 580, 581, 581, 581, - 581, 581, 582, 583, 584, 585, 586, 587, 588, 589, - 589, 590, 590, 591, 592 + 556, 557, 558, 559, 560, 561, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 569, 570, 570, 570, 570, + 570, 570, 570, 570, 570, 570, 571, 572, 573, 574, + 575, 576, 577, 578, 579, 580, 581, 582, 582, 583, + 583, 583, 583, 583, 584, 585, 586, 587, 588, 589, + 590, 591, 591, 592, 592, 593, 594 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1971,45 +1976,45 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 4, 4, 4, 3, 3, 2, 2, 2, 2, 2, - 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 3, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 3, 1, 2, - 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 4, 4, 4, 3, 3, 2, 2, 2, + 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, + 1, 2, 0, 1, 1, 2, 2 }; @@ -2025,22 +2030,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -2080,37 +2085,37 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -2144,7 +2149,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -2155,7 +2160,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } @@ -2259,10 +2264,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -2280,7 +2282,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -2358,10 +2360,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -2373,7 +2375,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break - default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -2385,10 +2386,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2514,33 +2514,23 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2556,10 +2546,14 @@ yysetstate: &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); + yyss = yyss1; yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2575,33 +2569,35 @@ yysetstate: goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2659,6 +2655,7 @@ yybackup: YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + goto yynewstate; @@ -2673,7 +2670,7 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2693,16 +2690,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 16: -#line 188 "./util/configparser.y" + case 16: +#line 189 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2702 "util/configparser.c" +#line 2699 "util/configparser.c" /* yacc.c:1646 */ break; - case 211: -#line 280 "./util/configparser.y" + case 212: +#line 282 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2713,11 +2710,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2717 "util/configparser.c" +#line 2714 "util/configparser.c" /* yacc.c:1646 */ break; - case 221: -#line 297 "./util/configparser.y" + case 222: +#line 299 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2728,11 +2725,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2732 "util/configparser.c" +#line 2729 "util/configparser.c" /* yacc.c:1646 */ break; - case 230: -#line 314 "./util/configparser.y" + case 231: +#line 316 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2745,11 +2742,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2749 "util/configparser.c" +#line 2746 "util/configparser.c" /* yacc.c:1646 */ break; - case 240: -#line 333 "./util/configparser.y" + case 241: +#line 335 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2765,11 +2762,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2769 "util/configparser.c" +#line 2766 "util/configparser.c" /* yacc.c:1646 */ break; - case 251: -#line 357 "./util/configparser.y" + case 252: +#line 359 "./util/configparser.y" /* yacc.c:1646 */ { uint8_t* bitlist; size_t len = 0; @@ -2786,11 +2783,11 @@ yyreduce: } } -#line 2790 "util/configparser.c" +#line 2787 "util/configparser.c" /* yacc.c:1646 */ break; - case 252: -#line 376 "./util/configparser.y" + case 253: +#line 378 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2805,21 +2802,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2809 "util/configparser.c" +#line 2806 "util/configparser.c" /* yacc.c:1646 */ break; - case 253: -#line 393 "./util/configparser.y" + case 254: +#line 395 "./util/configparser.y" /* yacc.c:1646 */ { 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 2819 "util/configparser.c" +#line 2816 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 401 "./util/configparser.y" + case 255: +#line 403 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2827,21 +2824,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2831 "util/configparser.c" +#line 2828 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 411 "./util/configparser.y" + case 256: +#line 413 "./util/configparser.y" /* yacc.c:1646 */ { 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 2841 "util/configparser.c" +#line 2838 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 419 "./util/configparser.y" + case 257: +#line 421 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2857,11 +2854,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2861 "util/configparser.c" +#line 2858 "util/configparser.c" /* yacc.c:1646 */ break; - case 269: -#line 442 "./util/configparser.y" + case 270: +#line 444 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2869,11 +2866,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2873 "util/configparser.c" +#line 2870 "util/configparser.c" /* yacc.c:1646 */ break; - case 270: -#line 451 "./util/configparser.y" + case 271: +#line 453 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2881,11 +2878,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2885 "util/configparser.c" +#line 2882 "util/configparser.c" /* yacc.c:1646 */ break; - case 271: -#line 460 "./util/configparser.y" + case 272: +#line 462 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2895,11 +2892,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2899 "util/configparser.c" +#line 2896 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 471 "./util/configparser.y" + case 273: +#line 473 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2907,11 +2904,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2911 "util/configparser.c" +#line 2908 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 480 "./util/configparser.y" + case 274: +#line 482 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2919,11 +2916,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2923 "util/configparser.c" +#line 2920 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 489 "./util/configparser.y" + case 275: +#line 491 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2931,11 +2928,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2935 "util/configparser.c" +#line 2932 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 498 "./util/configparser.y" + case 276: +#line 500 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2945,11 +2942,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2949 "util/configparser.c" +#line 2946 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 509 "./util/configparser.y" + case 277: +#line 511 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2957,11 +2954,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2961 "util/configparser.c" +#line 2958 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 518 "./util/configparser.y" + case 278: +#line 520 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2972,11 +2969,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2976 "util/configparser.c" +#line 2973 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 530 "./util/configparser.y" + case 279: +#line 532 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -2988,11 +2985,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 2989 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 544 "./util/configparser.y" + case 280: +#line 546 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3006,11 +3003,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3010 "util/configparser.c" +#line 3007 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 559 "./util/configparser.y" + case 281: +#line 561 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3020,11 +3017,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3024 "util/configparser.c" +#line 3021 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 570 "./util/configparser.y" + case 282: +#line 572 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3040,11 +3037,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3044 "util/configparser.c" +#line 3041 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 587 "./util/configparser.y" + case 283: +#line 589 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3060,11 +3057,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3064 "util/configparser.c" +#line 3061 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 604 "./util/configparser.y" + case 284: +#line 606 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3080,11 +3077,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 3081 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 621 "./util/configparser.y" + case 285: +#line 623 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3100,11 +3097,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3104 "util/configparser.c" +#line 3101 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 638 "./util/configparser.y" + case 286: +#line 640 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3118,11 +3115,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3122 "util/configparser.c" +#line 3119 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 653 "./util/configparser.y" + case 287: +#line 655 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3136,11 +3133,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3140 "util/configparser.c" +#line 3137 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 668 "./util/configparser.y" + case 288: +#line 670 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3152,11 +3149,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3156 "util/configparser.c" +#line 3153 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 681 "./util/configparser.y" + case 289: +#line 683 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3170,11 +3167,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3174 "util/configparser.c" +#line 3171 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 696 "./util/configparser.y" + case 290: +#line 698 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3182,11 +3179,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3186 "util/configparser.c" +#line 3183 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 705 "./util/configparser.y" + case 291: +#line 707 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3194,11 +3191,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3198 "util/configparser.c" +#line 3195 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 714 "./util/configparser.y" + case 292: +#line 716 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3206,11 +3203,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3210 "util/configparser.c" +#line 3207 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 723 "./util/configparser.y" + case 293: +#line 725 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3218,11 +3215,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3222 "util/configparser.c" +#line 3219 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 732 "./util/configparser.y" + case 294: +#line 734 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3230,11 +3227,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3231 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 741 "./util/configparser.y" + case 295: +#line 743 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3242,11 +3239,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3246 "util/configparser.c" +#line 3243 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 750 "./util/configparser.y" + case 296: +#line 752 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3254,11 +3251,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3258 "util/configparser.c" +#line 3255 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 759 "./util/configparser.y" + case 297: +#line 761 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3266,11 +3263,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3270 "util/configparser.c" +#line 3267 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 768 "./util/configparser.y" + case 298: +#line 770 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3278,11 +3275,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3282 "util/configparser.c" +#line 3279 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 777 "./util/configparser.y" + case 299: +#line 779 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3290,11 +3287,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3294 "util/configparser.c" +#line 3291 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 786 "./util/configparser.y" + case 300: +#line 788 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3302,11 +3299,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3306 "util/configparser.c" +#line 3303 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 795 "./util/configparser.y" + case 301: +#line 797 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3314,11 +3311,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3318 "util/configparser.c" +#line 3315 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 804 "./util/configparser.y" + case 302: +#line 806 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3326,11 +3323,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3330 "util/configparser.c" +#line 3327 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 813 "./util/configparser.y" + case 303: +#line 815 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3338,11 +3335,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" +#line 3339 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 822 "./util/configparser.y" + case 304: +#line 824 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3354,11 +3351,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3355 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 835 "./util/configparser.y" + case 305: +#line 837 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3366,11 +3363,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3370 "util/configparser.c" +#line 3367 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 844 "./util/configparser.y" + case 306: +#line 846 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3382,11 +3379,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3383 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 857 "./util/configparser.y" + case 307: +#line 859 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3394,11 +3391,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3398 "util/configparser.c" +#line 3395 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 866 "./util/configparser.y" + case 308: +#line 868 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -3406,11 +3403,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3410 "util/configparser.c" +#line 3407 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 875 "./util/configparser.y" + case 309: +#line 877 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3418,31 +3415,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3422 "util/configparser.c" +#line 3419 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 884 "./util/configparser.y" + case 310: +#line 886 "./util/configparser.y" /* yacc.c:1646 */ { 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 3432 "util/configparser.c" +#line 3429 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 891 "./util/configparser.y" + case 311: +#line 893 "./util/configparser.y" /* yacc.c:1646 */ { 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 3442 "util/configparser.c" +#line 3439 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 898 "./util/configparser.y" + case 312: +#line 900 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3450,21 +3447,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3454 "util/configparser.c" +#line 3451 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 907 "./util/configparser.y" + case 313: +#line 909 "./util/configparser.y" /* yacc.c:1646 */ { 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 3464 "util/configparser.c" +#line 3461 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 914 "./util/configparser.y" + case 314: +#line 916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3472,53 +3469,65 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3476 "util/configparser.c" +#line 3473 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 923 "./util/configparser.y" + case 315: +#line 925 "./util/configparser.y" /* yacc.c:1646 */ { 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 3487 "util/configparser.c" +#line 3484 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 931 "./util/configparser.y" + case 316: +#line 933 "./util/configparser.y" /* yacc.c:1646 */ { 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 3497 "util/configparser.c" +#line 3494 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 938 "./util/configparser.y" + case 317: +#line 940 "./util/configparser.y" /* yacc.c:1646 */ { 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 3507 "util/configparser.c" +#line 3504 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 945 "./util/configparser.y" + case 318: +#line 947 "./util/configparser.y" /* yacc.c:1646 */ { 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 3518 "util/configparser.c" +#line 3515 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 953 "./util/configparser.y" + case 319: +#line 955 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3527 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 320: +#line 964 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3526,11 +3535,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3530 "util/configparser.c" +#line 3539 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 962 "./util/configparser.y" + case 321: +#line 973 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3538,11 +3547,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3542 "util/configparser.c" +#line 3551 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 971 "./util/configparser.y" + case 322: +#line 982 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3555,11 +3564,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3568 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 985 "./util/configparser.y" + case 323: +#line 996 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3567,11 +3576,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3580 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 994 "./util/configparser.y" + case 324: +#line 1005 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3579,11 +3588,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3592 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 1003 "./util/configparser.y" + case 325: +#line 1014 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3591,11 +3600,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3595 "util/configparser.c" +#line 3604 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 1012 "./util/configparser.y" + case 326: +#line 1023 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3603,11 +3612,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3607 "util/configparser.c" +#line 3616 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 1021 "./util/configparser.y" + case 327: +#line 1032 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3615,11 +3624,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3619 "util/configparser.c" +#line 3628 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1030 "./util/configparser.y" + case 328: +#line 1041 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3627,31 +3636,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3631 "util/configparser.c" +#line 3640 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1039 "./util/configparser.y" + case 329: +#line 1050 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3641 "util/configparser.c" +#line 3650 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1046 "./util/configparser.y" + case 330: +#line 1057 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3651 "util/configparser.c" +#line 3660 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1053 "./util/configparser.y" + case 331: +#line 1064 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3676,105 +3685,105 @@ yyreduce: } } } -#line 3680 "util/configparser.c" +#line 3689 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1079 "./util/configparser.y" + case 332: +#line 1090 "./util/configparser.y" /* yacc.c:1646 */ { 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 3691 "util/configparser.c" +#line 3700 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1087 "./util/configparser.y" + case 333: +#line 1098 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3701 "util/configparser.c" +#line 3710 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1094 "./util/configparser.y" + case 334: +#line 1105 "./util/configparser.y" /* yacc.c:1646 */ { 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 3711 "util/configparser.c" +#line 3720 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1101 "./util/configparser.y" + case 335: +#line 1112 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3721 "util/configparser.c" +#line 3730 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1108 "./util/configparser.y" + case 336: +#line 1119 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3731 "util/configparser.c" +#line 3740 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1115 "./util/configparser.y" + case 337: +#line 1126 "./util/configparser.y" /* yacc.c:1646 */ { 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 3742 "util/configparser.c" +#line 3751 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1123 "./util/configparser.y" + case 338: +#line 1134 "./util/configparser.y" /* yacc.c:1646 */ { 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 3753 "util/configparser.c" +#line 3762 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1131 "./util/configparser.y" + case 339: +#line 1142 "./util/configparser.y" /* yacc.c:1646 */ { 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 3764 "util/configparser.c" +#line 3773 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1139 "./util/configparser.y" + case 340: +#line 1150 "./util/configparser.y" /* yacc.c:1646 */ { 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 3774 "util/configparser.c" +#line 3783 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1146 "./util/configparser.y" + case 341: +#line 1157 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3784,11 +3793,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3788 "util/configparser.c" +#line 3797 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1157 "./util/configparser.y" + case 342: +#line 1168 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3798,21 +3807,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3802 "util/configparser.c" +#line 3811 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1168 "./util/configparser.y" + case 343: +#line 1179 "./util/configparser.y" /* yacc.c:1646 */ { 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 3812 "util/configparser.c" +#line 3821 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1175 "./util/configparser.y" + case 344: +#line 1186 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3820,11 +3829,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3824 "util/configparser.c" +#line 3833 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1184 "./util/configparser.y" + case 345: +#line 1195 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3832,11 +3841,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3836 "util/configparser.c" +#line 3845 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1193 "./util/configparser.y" + case 346: +#line 1204 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3844,53 +3853,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3848 "util/configparser.c" +#line 3857 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1202 "./util/configparser.y" + case 347: +#line 1213 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3858 "util/configparser.c" +#line 3867 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1209 "./util/configparser.y" + case 348: +#line 1220 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3868 "util/configparser.c" +#line 3877 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1216 "./util/configparser.y" + case 349: +#line 1227 "./util/configparser.y" /* yacc.c:1646 */ { 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 3879 "util/configparser.c" +#line 3888 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1224 "./util/configparser.y" + case 350: +#line 1235 "./util/configparser.y" /* yacc.c:1646 */ { 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 3890 "util/configparser.c" +#line 3899 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1232 "./util/configparser.y" + case 351: +#line 1243 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3899,11 +3908,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3912 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1242 "./util/configparser.y" + case 352: +#line 1253 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3912,11 +3921,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3916 "util/configparser.c" +#line 3925 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1252 "./util/configparser.y" + case 353: +#line 1263 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3925,22 +3934,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3929 "util/configparser.c" +#line 3938 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1262 "./util/configparser.y" + case 354: +#line 1273 "./util/configparser.y" /* yacc.c:1646 */ { 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 3940 "util/configparser.c" +#line 3949 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1270 "./util/configparser.y" + case 355: +#line 1281 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3952,11 +3961,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3956 "util/configparser.c" +#line 3965 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1283 "./util/configparser.y" + case 356: +#line 1294 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3966,22 +3975,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3970 "util/configparser.c" +#line 3979 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1294 "./util/configparser.y" + case 357: +#line 1305 "./util/configparser.y" /* yacc.c:1646 */ { 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 3981 "util/configparser.c" +#line 3990 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1302 "./util/configparser.y" + case 358: +#line 1313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3993,11 +4002,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 3997 "util/configparser.c" +#line 4006 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1315 "./util/configparser.y" + case 359: +#line 1326 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4005,11 +4014,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4009 "util/configparser.c" +#line 4018 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1324 "./util/configparser.y" + case 360: +#line 1335 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4017,11 +4026,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4021 "util/configparser.c" +#line 4030 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1333 "./util/configparser.y" + case 361: +#line 1344 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4029,11 +4038,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4033 "util/configparser.c" +#line 4042 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1342 "./util/configparser.y" + case 362: +#line 1353 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4042,11 +4051,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4046 "util/configparser.c" +#line 4055 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1352 "./util/configparser.y" + case 363: +#line 1363 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4055,22 +4064,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4059 "util/configparser.c" +#line 4068 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1362 "./util/configparser.y" + case 364: +#line 1373 "./util/configparser.y" /* yacc.c:1646 */ { 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 4070 "util/configparser.c" +#line 4079 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1370 "./util/configparser.y" + case 365: +#line 1381 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4082,11 +4091,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4086 "util/configparser.c" +#line 4095 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1383 "./util/configparser.y" + case 366: +#line 1394 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4094,22 +4103,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 4107 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1392 "./util/configparser.y" + case 367: +#line 1403 "./util/configparser.y" /* yacc.c:1646 */ { 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 4109 "util/configparser.c" +#line 4118 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1400 "./util/configparser.y" + case 368: +#line 1411 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4117,22 +4126,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4121 "util/configparser.c" +#line 4130 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1409 "./util/configparser.y" + case 369: +#line 1420 "./util/configparser.y" /* yacc.c:1646 */ { 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 4132 "util/configparser.c" +#line 4141 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1417 "./util/configparser.y" + case 370: +#line 1428 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4144,11 +4153,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4148 "util/configparser.c" +#line 4157 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1430 "./util/configparser.y" + case 371: +#line 1441 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4156,21 +4165,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4160 "util/configparser.c" +#line 4169 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1439 "./util/configparser.y" + case 372: +#line 1450 "./util/configparser.y" /* yacc.c:1646 */ { 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 4170 "util/configparser.c" +#line 4179 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1446 "./util/configparser.y" + case 373: +#line 1457 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4179,11 +4188,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4183 "util/configparser.c" +#line 4192 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1456 "./util/configparser.y" + case 374: +#line 1467 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4192,11 +4201,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4196 "util/configparser.c" +#line 4205 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1466 "./util/configparser.y" + case 375: +#line 1477 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4205,11 +4214,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4209 "util/configparser.c" +#line 4218 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1476 "./util/configparser.y" + case 376: +#line 1487 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4218,11 +4227,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4222 "util/configparser.c" +#line 4231 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1486 "./util/configparser.y" + case 377: +#line 1497 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4231,11 +4240,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 4244 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1496 "./util/configparser.y" + case 378: +#line 1507 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4244,11 +4253,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4257 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1506 "./util/configparser.y" + case 379: +#line 1517 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4257,11 +4266,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" +#line 4270 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1516 "./util/configparser.y" + case 380: +#line 1527 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4270,41 +4279,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4274 "util/configparser.c" +#line 4283 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1526 "./util/configparser.y" + case 381: +#line 1537 "./util/configparser.y" /* yacc.c:1646 */ { 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 4284 "util/configparser.c" +#line 4293 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1533 "./util/configparser.y" + case 382: +#line 1544 "./util/configparser.y" /* yacc.c:1646 */ { 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 4294 "util/configparser.c" +#line 4303 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1540 "./util/configparser.y" + case 383: +#line 1551 "./util/configparser.y" /* yacc.c:1646 */ { 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 4304 "util/configparser.c" +#line 4313 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1547 "./util/configparser.y" + case 384: +#line 1558 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4312,11 +4321,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4316 "util/configparser.c" +#line 4325 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1556 "./util/configparser.y" + case 385: +#line 1567 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4324,11 +4333,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4328 "util/configparser.c" +#line 4337 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1565 "./util/configparser.y" + case 386: +#line 1576 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4336,11 +4345,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4349 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1574 "./util/configparser.y" + case 387: +#line 1585 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4348,21 +4357,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4352 "util/configparser.c" +#line 4361 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1583 "./util/configparser.y" + case 388: +#line 1594 "./util/configparser.y" /* yacc.c:1646 */ { 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 4362 "util/configparser.c" +#line 4371 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1590 "./util/configparser.y" + case 389: +#line 1601 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4371,11 +4380,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" +#line 4384 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1600 "./util/configparser.y" + case 390: +#line 1611 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4394,21 +4403,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4398 "util/configparser.c" +#line 4407 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1620 "./util/configparser.y" + case 391: +#line 1631 "./util/configparser.y" /* yacc.c:1646 */ { 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 4408 "util/configparser.c" +#line 4417 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1627 "./util/configparser.y" + case 392: +#line 1638 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4425,11 +4434,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4438 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1645 "./util/configparser.y" + case 393: +#line 1656 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4441,11 +4450,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4445 "util/configparser.c" +#line 4454 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1658 "./util/configparser.y" + case 394: +#line 1669 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4457,11 +4466,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4461 "util/configparser.c" +#line 4470 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1671 "./util/configparser.y" + case 395: +#line 1682 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4469,11 +4478,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4473 "util/configparser.c" +#line 4482 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1680 "./util/configparser.y" + case 396: +#line 1691 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4481,11 +4490,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4485 "util/configparser.c" +#line 4494 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1689 "./util/configparser.y" + case 397: +#line 1700 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4493,11 +4502,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4497 "util/configparser.c" +#line 4506 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1698 "./util/configparser.y" + case 398: +#line 1709 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4505,11 +4514,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4509 "util/configparser.c" +#line 4518 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1707 "./util/configparser.y" + case 399: +#line 1718 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4518,11 +4527,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4522 "util/configparser.c" +#line 4531 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1717 "./util/configparser.y" + case 400: +#line 1728 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4531,11 +4540,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4535 "util/configparser.c" +#line 4544 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1727 "./util/configparser.y" + case 401: +#line 1738 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4545,11 +4554,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4558 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1738 "./util/configparser.y" + case 402: +#line 1749 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4557,11 +4566,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4561 "util/configparser.c" +#line 4570 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1747 "./util/configparser.y" + case 403: +#line 1758 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4569,11 +4578,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4573 "util/configparser.c" +#line 4582 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1756 "./util/configparser.y" + case 404: +#line 1767 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4581,11 +4590,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4585 "util/configparser.c" +#line 4594 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1765 "./util/configparser.y" + case 405: +#line 1776 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4593,11 +4602,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4597 "util/configparser.c" +#line 4606 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1774 "./util/configparser.y" + case 406: +#line 1785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4605,11 +4614,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4618 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1783 "./util/configparser.y" + case 407: +#line 1794 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4617,11 +4626,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4630 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1792 "./util/configparser.y" + case 408: +#line 1803 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4633,11 +4642,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4646 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1805 "./util/configparser.y" + case 409: +#line 1816 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4649,11 +4658,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" +#line 4662 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1818 "./util/configparser.y" + case 410: +#line 1829 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4661,21 +4670,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 4674 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 1827 "./util/configparser.y" + case 411: +#line 1838 "./util/configparser.y" /* yacc.c:1646 */ { 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 4675 "util/configparser.c" +#line 4684 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 1834 "./util/configparser.y" + case 412: +#line 1845 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4683,11 +4692,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4687 "util/configparser.c" +#line 4696 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 1843 "./util/configparser.y" + case 413: +#line 1854 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4695,11 +4704,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4708 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 1852 "./util/configparser.y" + case 414: +#line 1863 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4707,11 +4716,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4711 "util/configparser.c" +#line 4720 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 1861 "./util/configparser.y" + case 415: +#line 1872 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4720,22 +4729,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4724 "util/configparser.c" +#line 4733 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 1870 "./util/configparser.y" + case 416: +#line 1881 "./util/configparser.y" /* yacc.c:1646 */ { 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 4735 "util/configparser.c" +#line 4744 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 1878 "./util/configparser.y" + case 417: +#line 1889 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4747,22 +4756,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4760 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 1891 "./util/configparser.y" + case 418: +#line 1902 "./util/configparser.y" /* yacc.c:1646 */ { 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 4762 "util/configparser.c" +#line 4771 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 1899 "./util/configparser.y" + case 419: +#line 1910 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4802,21 +4811,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4806 "util/configparser.c" +#line 4815 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 1940 "./util/configparser.y" + case 420: +#line 1951 "./util/configparser.y" /* yacc.c:1646 */ { 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 4816 "util/configparser.c" +#line 4825 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 1947 "./util/configparser.y" + case 421: +#line 1958 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4830,11 +4839,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4834 "util/configparser.c" +#line 4843 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 1962 "./util/configparser.y" + case 422: +#line 1973 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4843,11 +4852,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4847 "util/configparser.c" +#line 4856 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 1972 "./util/configparser.y" + case 423: +#line 1983 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4856,41 +4865,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4860 "util/configparser.c" +#line 4869 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 1982 "./util/configparser.y" + case 424: +#line 1993 "./util/configparser.y" /* yacc.c:1646 */ { 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 4870 "util/configparser.c" +#line 4879 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 1989 "./util/configparser.y" + case 425: +#line 2000 "./util/configparser.y" /* yacc.c:1646 */ { 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 4880 "util/configparser.c" +#line 4889 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 1996 "./util/configparser.y" + case 426: +#line 2007 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4890 "util/configparser.c" +#line 4899 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 2003 "./util/configparser.y" + case 427: +#line 2014 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4898,22 +4907,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4911 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2012 "./util/configparser.y" + case 428: +#line 2023 "./util/configparser.y" /* yacc.c:1646 */ { 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 4913 "util/configparser.c" +#line 4922 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2020 "./util/configparser.y" + case 429: +#line 2031 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4926,11 +4935,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4930 "util/configparser.c" +#line 4939 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2034 "./util/configparser.y" + case 430: +#line 2045 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4950,11 +4959,11 @@ yyreduce: } } } -#line 4954 "util/configparser.c" +#line 4963 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2055 "./util/configparser.y" + case 431: +#line 2066 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4974,11 +4983,11 @@ yyreduce: } } } -#line 4978 "util/configparser.c" +#line 4987 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2076 "./util/configparser.y" + case 432: +#line 2087 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -4989,11 +4998,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 4993 "util/configparser.c" +#line 5002 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2088 "./util/configparser.y" + case 433: +#line 2099 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5004,11 +5013,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5008 "util/configparser.c" +#line 5017 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2100 "./util/configparser.y" + case 434: +#line 2111 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5019,11 +5028,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5023 "util/configparser.c" +#line 5032 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2112 "./util/configparser.y" + case 435: +#line 2123 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5031,11 +5040,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5035 "util/configparser.c" +#line 5044 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2121 "./util/configparser.y" + case 436: +#line 2132 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5055,11 +5064,11 @@ yyreduce: } } } -#line 5059 "util/configparser.c" +#line 5068 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2142 "./util/configparser.y" + case 437: +#line 2153 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5067,11 +5076,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5071 "util/configparser.c" +#line 5080 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2152 "./util/configparser.y" + case 438: +#line 2163 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5079,33 +5088,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5083 "util/configparser.c" +#line 5092 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2161 "./util/configparser.y" + case 439: +#line 2172 "./util/configparser.y" /* yacc.c:1646 */ { 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 5094 "util/configparser.c" +#line 5103 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2169 "./util/configparser.y" + case 440: +#line 2180 "./util/configparser.y" /* yacc.c:1646 */ { 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 5105 "util/configparser.c" +#line 5114 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2177 "./util/configparser.y" + case 441: +#line 2188 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5117,11 +5126,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5121 "util/configparser.c" +#line 5130 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2190 "./util/configparser.y" + case 442: +#line 2201 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5133,11 +5142,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5137 "util/configparser.c" +#line 5146 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2203 "./util/configparser.y" + case 443: +#line 2214 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5151,11 +5160,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5155 "util/configparser.c" +#line 5164 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2218 "./util/configparser.y" + case 444: +#line 2229 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5169,11 +5178,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5173 "util/configparser.c" +#line 5182 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2233 "./util/configparser.y" + case 445: +#line 2244 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5181,11 +5190,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5185 "util/configparser.c" +#line 5194 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2242 "./util/configparser.y" + case 446: +#line 2253 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5193,20 +5202,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5197 "util/configparser.c" +#line 5206 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2251 "./util/configparser.y" + case 447: +#line 2262 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5206 "util/configparser.c" +#line 5215 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2257 "./util/configparser.y" + case 448: +#line 2268 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5214,11 +5223,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5218 "util/configparser.c" +#line 5227 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2266 "./util/configparser.y" + case 449: +#line 2277 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5226,11 +5235,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5239 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2275 "./util/configparser.y" + case 450: +#line 2286 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5239,11 +5248,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5243 "util/configparser.c" +#line 5252 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2285 "./util/configparser.y" + case 451: +#line 2296 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5252,11 +5261,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5256 "util/configparser.c" +#line 5265 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2295 "./util/configparser.y" + case 452: +#line 2306 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5268,11 +5277,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5272 "util/configparser.c" +#line 5281 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2308 "./util/configparser.y" + case 453: +#line 2319 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5284,11 +5293,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5297 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2321 "./util/configparser.y" + case 454: +#line 2332 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5299,11 +5308,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5303 "util/configparser.c" +#line 5312 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2333 "./util/configparser.y" + case 455: +#line 2344 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5316,11 +5325,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5320 "util/configparser.c" +#line 5329 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2347 "./util/configparser.y" + case 456: +#line 2358 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5331,11 +5340,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5335 "util/configparser.c" +#line 5344 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2359 "./util/configparser.y" + case 457: +#line 2370 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5348,11 +5357,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5352 "util/configparser.c" +#line 5361 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2373 "./util/configparser.y" + case 458: +#line 2384 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5361,31 +5370,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5365 "util/configparser.c" +#line 5374 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2383 "./util/configparser.y" + case 459: +#line 2394 "./util/configparser.y" /* yacc.c:1646 */ { 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 5375 "util/configparser.c" +#line 5384 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2390 "./util/configparser.y" + case 460: +#line 2401 "./util/configparser.y" /* yacc.c:1646 */ { 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 5385 "util/configparser.c" +#line 5394 "util/configparser.c" /* yacc.c:1646 */ break; - case 459: -#line 2397 "./util/configparser.y" + case 461: +#line 2408 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5393,11 +5402,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 5406 "util/configparser.c" /* yacc.c:1646 */ break; - case 460: -#line 2406 "./util/configparser.y" + case 462: +#line 2417 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5405,11 +5414,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5409 "util/configparser.c" +#line 5418 "util/configparser.c" /* yacc.c:1646 */ break; - case 461: -#line 2415 "./util/configparser.y" + case 463: +#line 2426 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5418,11 +5427,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5422 "util/configparser.c" +#line 5431 "util/configparser.c" /* yacc.c:1646 */ break; - case 462: -#line 2425 "./util/configparser.y" + case 464: +#line 2436 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5431,11 +5440,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5435 "util/configparser.c" +#line 5444 "util/configparser.c" /* yacc.c:1646 */ break; - case 463: -#line 2435 "./util/configparser.y" + case 465: +#line 2446 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5444,31 +5453,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5448 "util/configparser.c" +#line 5457 "util/configparser.c" /* yacc.c:1646 */ break; - case 464: -#line 2445 "./util/configparser.y" + case 466: +#line 2456 "./util/configparser.y" /* yacc.c:1646 */ { 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 5458 "util/configparser.c" +#line 5467 "util/configparser.c" /* yacc.c:1646 */ break; - case 465: -#line 2452 "./util/configparser.y" + case 467: +#line 2463 "./util/configparser.y" /* yacc.c:1646 */ { 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 5468 "util/configparser.c" +#line 5477 "util/configparser.c" /* yacc.c:1646 */ break; - case 466: -#line 2459 "./util/configparser.y" + case 468: +#line 2470 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5476,11 +5485,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5489 "util/configparser.c" /* yacc.c:1646 */ break; - case 467: -#line 2468 "./util/configparser.y" + case 469: +#line 2479 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5488,11 +5497,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5492 "util/configparser.c" +#line 5501 "util/configparser.c" /* yacc.c:1646 */ break; - case 468: -#line 2477 "./util/configparser.y" + case 470: +#line 2488 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5501,11 +5510,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5505 "util/configparser.c" +#line 5514 "util/configparser.c" /* yacc.c:1646 */ break; - case 469: -#line 2487 "./util/configparser.y" + case 471: +#line 2498 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5514,52 +5523,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5518 "util/configparser.c" +#line 5527 "util/configparser.c" /* yacc.c:1646 */ break; - case 470: -#line 2497 "./util/configparser.y" + case 472: +#line 2508 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5528 "util/configparser.c" +#line 5537 "util/configparser.c" /* yacc.c:1646 */ break; - case 471: -#line 2504 "./util/configparser.y" + case 473: +#line 2515 "./util/configparser.y" /* yacc.c:1646 */ { 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 5538 "util/configparser.c" +#line 5547 "util/configparser.c" /* yacc.c:1646 */ break; - case 472: -#line 2511 "./util/configparser.y" + case 474: +#line 2522 "./util/configparser.y" /* yacc.c:1646 */ { 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 5548 "util/configparser.c" +#line 5557 "util/configparser.c" /* yacc.c:1646 */ break; - case 473: -#line 2518 "./util/configparser.y" + case 475: +#line 2529 "./util/configparser.y" /* yacc.c:1646 */ { 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 5559 "util/configparser.c" +#line 5568 "util/configparser.c" /* yacc.c:1646 */ break; - case 474: -#line 2526 "./util/configparser.y" + case 476: +#line 2537 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5568,11 +5577,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5572 "util/configparser.c" +#line 5581 "util/configparser.c" /* yacc.c:1646 */ break; - case 475: -#line 2536 "./util/configparser.y" + case 477: +#line 2547 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5581,11 +5590,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5585 "util/configparser.c" +#line 5594 "util/configparser.c" /* yacc.c:1646 */ break; - case 476: -#line 2546 "./util/configparser.y" + case 478: +#line 2557 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5594,11 +5603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5598 "util/configparser.c" +#line 5607 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2556 "./util/configparser.y" + case 479: +#line 2567 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5607,11 +5616,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5611 "util/configparser.c" +#line 5620 "util/configparser.c" /* yacc.c:1646 */ break; - case 478: -#line 2566 "./util/configparser.y" + case 480: +#line 2577 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -5649,11 +5658,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5653 "util/configparser.c" +#line 5662 "util/configparser.c" /* yacc.c:1646 */ break; - case 479: -#line 2605 "./util/configparser.y" + case 481: +#line 2616 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5662,33 +5671,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5666 "util/configparser.c" +#line 5675 "util/configparser.c" /* yacc.c:1646 */ break; - case 480: -#line 2615 "./util/configparser.y" + case 482: +#line 2626 "./util/configparser.y" /* yacc.c:1646 */ { 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 5677 "util/configparser.c" +#line 5686 "util/configparser.c" /* yacc.c:1646 */ break; - case 481: -#line 2623 "./util/configparser.y" + case 483: +#line 2634 "./util/configparser.y" /* yacc.c:1646 */ { 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 5688 "util/configparser.c" +#line 5697 "util/configparser.c" /* yacc.c:1646 */ break; - case 482: -#line 2631 "./util/configparser.y" + case 484: +#line 2642 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5702,11 +5711,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5706 "util/configparser.c" +#line 5715 "util/configparser.c" /* yacc.c:1646 */ break; - case 483: -#line 2646 "./util/configparser.y" + case 485: +#line 2657 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5714,19 +5723,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5718 "util/configparser.c" +#line 5727 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2655 "./util/configparser.y" + case 486: +#line 2666 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5726 "util/configparser.c" +#line 5735 "util/configparser.c" /* yacc.c:1646 */ break; - case 495: -#line 2666 "./util/configparser.y" + case 497: +#line 2677 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5735,11 +5744,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5739 "util/configparser.c" +#line 5748 "util/configparser.c" /* yacc.c:1646 */ break; - case 496: -#line 2676 "./util/configparser.y" + case 498: +#line 2687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5747,79 +5756,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5751 "util/configparser.c" +#line 5760 "util/configparser.c" /* yacc.c:1646 */ break; - case 497: -#line 2685 "./util/configparser.y" + case 499: +#line 2696 "./util/configparser.y" /* yacc.c:1646 */ { 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 5761 "util/configparser.c" +#line 5770 "util/configparser.c" /* yacc.c:1646 */ break; - case 498: -#line 2692 "./util/configparser.y" + case 500: +#line 2703 "./util/configparser.y" /* yacc.c:1646 */ { 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 5771 "util/configparser.c" +#line 5780 "util/configparser.c" /* yacc.c:1646 */ break; - case 499: -#line 2699 "./util/configparser.y" + case 501: +#line 2710 "./util/configparser.y" /* yacc.c:1646 */ { 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 5781 "util/configparser.c" +#line 5790 "util/configparser.c" /* yacc.c:1646 */ break; - case 500: -#line 2706 "./util/configparser.y" + case 502: +#line 2717 "./util/configparser.y" /* yacc.c:1646 */ { 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 5791 "util/configparser.c" +#line 5800 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2713 "./util/configparser.y" + case 503: +#line 2724 "./util/configparser.y" /* yacc.c:1646 */ { 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 5801 "util/configparser.c" +#line 5810 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2720 "./util/configparser.y" + case 504: +#line 2731 "./util/configparser.y" /* yacc.c:1646 */ { 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 5811 "util/configparser.c" +#line 5820 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2727 "./util/configparser.y" + case 505: +#line 2738 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5819 "util/configparser.c" +#line 5828 "util/configparser.c" /* yacc.c:1646 */ break; - case 524: -#line 2747 "./util/configparser.y" + case 526: +#line 2758 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5827,31 +5836,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5831 "util/configparser.c" +#line 5840 "util/configparser.c" /* yacc.c:1646 */ break; - case 525: -#line 2756 "./util/configparser.y" + case 527: +#line 2767 "./util/configparser.y" /* yacc.c:1646 */ { 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 5841 "util/configparser.c" +#line 5850 "util/configparser.c" /* yacc.c:1646 */ break; - case 526: -#line 2763 "./util/configparser.y" + case 528: +#line 2774 "./util/configparser.y" /* yacc.c:1646 */ { 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 5851 "util/configparser.c" +#line 5860 "util/configparser.c" /* yacc.c:1646 */ break; - case 527: -#line 2770 "./util/configparser.y" + case 529: +#line 2781 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5859,51 +5868,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5863 "util/configparser.c" +#line 5872 "util/configparser.c" /* yacc.c:1646 */ break; - case 528: -#line 2779 "./util/configparser.y" + case 530: +#line 2790 "./util/configparser.y" /* yacc.c:1646 */ { 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 5873 "util/configparser.c" +#line 5882 "util/configparser.c" /* yacc.c:1646 */ break; - case 529: -#line 2786 "./util/configparser.y" + case 531: +#line 2797 "./util/configparser.y" /* yacc.c:1646 */ { 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 5883 "util/configparser.c" +#line 5892 "util/configparser.c" /* yacc.c:1646 */ break; - case 530: -#line 2793 "./util/configparser.y" + case 532: +#line 2804 "./util/configparser.y" /* yacc.c:1646 */ { 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 5893 "util/configparser.c" +#line 5902 "util/configparser.c" /* yacc.c:1646 */ break; - case 531: -#line 2800 "./util/configparser.y" + case 533: +#line 2811 "./util/configparser.y" /* yacc.c:1646 */ { 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 5903 "util/configparser.c" +#line 5912 "util/configparser.c" /* yacc.c:1646 */ break; - case 532: -#line 2807 "./util/configparser.y" + case 534: +#line 2818 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5911,11 +5920,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5924 "util/configparser.c" /* yacc.c:1646 */ break; - case 533: -#line 2816 "./util/configparser.y" + case 535: +#line 2827 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5923,31 +5932,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5927 "util/configparser.c" +#line 5936 "util/configparser.c" /* yacc.c:1646 */ break; - case 534: -#line 2825 "./util/configparser.y" + case 536: +#line 2836 "./util/configparser.y" /* yacc.c:1646 */ { 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 5937 "util/configparser.c" +#line 5946 "util/configparser.c" /* yacc.c:1646 */ break; - case 535: -#line 2832 "./util/configparser.y" + case 537: +#line 2843 "./util/configparser.y" /* yacc.c:1646 */ { 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 5947 "util/configparser.c" +#line 5956 "util/configparser.c" /* yacc.c:1646 */ break; - case 536: -#line 2839 "./util/configparser.y" + case 538: +#line 2850 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -5956,11 +5965,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5969 "util/configparser.c" /* yacc.c:1646 */ break; - case 537: -#line 2849 "./util/configparser.y" + case 539: +#line 2860 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -5969,11 +5978,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5973 "util/configparser.c" +#line 5982 "util/configparser.c" /* yacc.c:1646 */ break; - case 538: -#line 2859 "./util/configparser.y" + case 540: +#line 2870 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -5982,11 +5991,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5986 "util/configparser.c" +#line 5995 "util/configparser.c" /* yacc.c:1646 */ break; - case 539: -#line 2869 "./util/configparser.y" + case 541: +#line 2880 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -5995,11 +6004,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5999 "util/configparser.c" +#line 6008 "util/configparser.c" /* yacc.c:1646 */ break; - case 540: -#line 2879 "./util/configparser.y" + case 542: +#line 2890 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6008,11 +6017,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6021 "util/configparser.c" /* yacc.c:1646 */ break; - case 541: -#line 2889 "./util/configparser.y" + case 543: +#line 2900 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6021,29 +6030,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6034 "util/configparser.c" /* yacc.c:1646 */ break; - case 542: -#line 2899 "./util/configparser.y" + case 544: +#line 2910 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 6033 "util/configparser.c" +#line 6042 "util/configparser.c" /* yacc.c:1646 */ break; - case 546: -#line 2908 "./util/configparser.y" + case 548: +#line 2919 "./util/configparser.y" /* yacc.c:1646 */ { 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 6043 "util/configparser.c" +#line 6052 "util/configparser.c" /* yacc.c:1646 */ break; - case 547: -#line 2914 "./util/configparser.y" + case 549: +#line 2925 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6052,21 +6061,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6056 "util/configparser.c" +#line 6065 "util/configparser.c" /* yacc.c:1646 */ break; - case 548: -#line 2924 "./util/configparser.y" + case 550: +#line 2935 "./util/configparser.y" /* yacc.c:1646 */ { 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 6066 "util/configparser.c" +#line 6075 "util/configparser.c" /* yacc.c:1646 */ break; - case 549: -#line 2931 "./util/configparser.y" + case 551: +#line 2942 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6074,30 +6083,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6078 "util/configparser.c" +#line 6087 "util/configparser.c" /* yacc.c:1646 */ break; - case 550: -#line 2940 "./util/configparser.y" + case 552: +#line 2951 "./util/configparser.y" /* yacc.c:1646 */ { 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 6089 "util/configparser.c" +#line 6098 "util/configparser.c" /* yacc.c:1646 */ break; - case 551: -#line 2948 "./util/configparser.y" + case 553: +#line 2959 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6097 "util/configparser.c" +#line 6106 "util/configparser.c" /* yacc.c:1646 */ break; - case 564: -#line 2964 "./util/configparser.y" + case 566: +#line 2975 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6105,11 +6114,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6109 "util/configparser.c" +#line 6118 "util/configparser.c" /* yacc.c:1646 */ break; - case 565: -#line 2974 "./util/configparser.y" + case 567: +#line 2985 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6117,21 +6126,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6121 "util/configparser.c" +#line 6130 "util/configparser.c" /* yacc.c:1646 */ break; - case 566: -#line 2983 "./util/configparser.y" + case 568: +#line 2994 "./util/configparser.y" /* yacc.c:1646 */ { 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 6131 "util/configparser.c" +#line 6140 "util/configparser.c" /* yacc.c:1646 */ break; - case 567: -#line 2990 "./util/configparser.y" + case 569: +#line 3001 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6139,21 +6148,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 6143 "util/configparser.c" +#line 6152 "util/configparser.c" /* yacc.c:1646 */ break; - case 568: -#line 2999 "./util/configparser.y" + case 570: +#line 3010 "./util/configparser.y" /* yacc.c:1646 */ { 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 6153 "util/configparser.c" +#line 6162 "util/configparser.c" /* yacc.c:1646 */ break; - case 569: -#line 3006 "./util/configparser.y" + case 571: +#line 3017 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6161,22 +6170,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 6165 "util/configparser.c" +#line 6174 "util/configparser.c" /* yacc.c:1646 */ break; - case 570: -#line 3015 "./util/configparser.y" + case 572: +#line 3026 "./util/configparser.y" /* yacc.c:1646 */ { 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 6176 "util/configparser.c" +#line 6185 "util/configparser.c" /* yacc.c:1646 */ break; - case 571: -#line 3023 "./util/configparser.y" + case 573: +#line 3034 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6188,22 +6197,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6192 "util/configparser.c" +#line 6201 "util/configparser.c" /* yacc.c:1646 */ break; - case 572: -#line 3036 "./util/configparser.y" + case 574: +#line 3047 "./util/configparser.y" /* yacc.c:1646 */ { 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 6203 "util/configparser.c" +#line 6212 "util/configparser.c" /* yacc.c:1646 */ break; - case 573: -#line 3044 "./util/configparser.y" + case 575: +#line 3055 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6215,19 +6224,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6219 "util/configparser.c" +#line 6228 "util/configparser.c" /* yacc.c:1646 */ break; - case 574: -#line 3057 "./util/configparser.y" + case 576: +#line 3068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 6227 "util/configparser.c" +#line 6236 "util/configparser.c" /* yacc.c:1646 */ break; - case 582: -#line 3067 "./util/configparser.y" + case 584: +#line 3078 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6238,11 +6247,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6242 "util/configparser.c" +#line 6251 "util/configparser.c" /* yacc.c:1646 */ break; - case 583: -#line 3079 "./util/configparser.y" + case 585: +#line 3090 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6253,11 +6262,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6257 "util/configparser.c" +#line 6266 "util/configparser.c" /* yacc.c:1646 */ break; - case 584: -#line 3091 "./util/configparser.y" + case 586: +#line 3102 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6268,11 +6277,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6272 "util/configparser.c" +#line 6281 "util/configparser.c" /* yacc.c:1646 */ break; - case 585: -#line 3103 "./util/configparser.y" + case 587: +#line 3114 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6286,11 +6295,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6290 "util/configparser.c" +#line 6299 "util/configparser.c" /* yacc.c:1646 */ break; - case 586: -#line 3118 "./util/configparser.y" + case 588: +#line 3129 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6302,11 +6311,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6306 "util/configparser.c" +#line 6315 "util/configparser.c" /* yacc.c:1646 */ break; - case 587: -#line 3131 "./util/configparser.y" + case 589: +#line 3142 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6316,19 +6325,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6320 "util/configparser.c" +#line 6329 "util/configparser.c" /* yacc.c:1646 */ break; - case 588: -#line 3142 "./util/configparser.y" + case 590: +#line 3153 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6328 "util/configparser.c" +#line 6337 "util/configparser.c" /* yacc.c:1646 */ break; - case 593: -#line 3151 "./util/configparser.y" + case 595: +#line 3162 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6342,11 +6351,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6346 "util/configparser.c" +#line 6355 "util/configparser.c" /* yacc.c:1646 */ break; - case 594: -#line 3166 "./util/configparser.y" + case 596: +#line 3177 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6360,12 +6369,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6364 "util/configparser.c" +#line 6373 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6368 "util/configparser.c" - +#line 6377 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6390,13 +6398,14 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -6479,10 +6488,12 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -6544,7 +6555,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -6552,7 +6562,6 @@ yyabortlab: yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -6563,10 +6572,6 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6596,7 +6601,7 @@ yyreturn: #endif return yyresult; } -#line 3180 "./util/configparser.y" +#line 3191 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index aaf822223..117b1e5fe 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -187,150 +183,151 @@ extern int yydebug; VAR_STUB_SSL_UPSTREAM = 393, VAR_FORWARD_SSL_UPSTREAM = 394, VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_DISABLE_DNSSEC_LAME_CHECK = 431, - VAR_IP_RATELIMIT = 432, - VAR_IP_RATELIMIT_SLABS = 433, - VAR_IP_RATELIMIT_SIZE = 434, - VAR_RATELIMIT = 435, - VAR_RATELIMIT_SLABS = 436, - VAR_RATELIMIT_SIZE = 437, - VAR_RATELIMIT_FOR_DOMAIN = 438, - VAR_RATELIMIT_BELOW_DOMAIN = 439, - VAR_IP_RATELIMIT_FACTOR = 440, - VAR_RATELIMIT_FACTOR = 441, - VAR_SEND_CLIENT_SUBNET = 442, - VAR_CLIENT_SUBNET_ZONE = 443, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 444, - VAR_CLIENT_SUBNET_OPCODE = 445, - VAR_MAX_CLIENT_SUBNET_IPV4 = 446, - VAR_MAX_CLIENT_SUBNET_IPV6 = 447, - VAR_MIN_CLIENT_SUBNET_IPV4 = 448, - VAR_MIN_CLIENT_SUBNET_IPV6 = 449, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 451, - VAR_CAPS_WHITELIST = 452, - VAR_CACHE_MAX_NEGATIVE_TTL = 453, - VAR_PERMIT_SMALL_HOLDDOWN = 454, - VAR_QNAME_MINIMISATION = 455, - VAR_QNAME_MINIMISATION_STRICT = 456, - VAR_IP_FREEBIND = 457, - VAR_DEFINE_TAG = 458, - VAR_LOCAL_ZONE_TAG = 459, - VAR_ACCESS_CONTROL_TAG = 460, - VAR_LOCAL_ZONE_OVERRIDE = 461, - VAR_ACCESS_CONTROL_TAG_ACTION = 462, - VAR_ACCESS_CONTROL_TAG_DATA = 463, - VAR_VIEW = 464, - VAR_ACCESS_CONTROL_VIEW = 465, - VAR_VIEW_FIRST = 466, - VAR_SERVE_EXPIRED = 467, - VAR_SERVE_EXPIRED_TTL = 468, - VAR_SERVE_EXPIRED_TTL_RESET = 469, - VAR_SERVE_EXPIRED_REPLY_TTL = 470, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 471, - VAR_FAKE_DSA = 472, - VAR_FAKE_SHA1 = 473, - VAR_LOG_IDENTITY = 474, - VAR_HIDE_TRUSTANCHOR = 475, - VAR_TRUST_ANCHOR_SIGNALING = 476, - VAR_AGGRESSIVE_NSEC = 477, - VAR_USE_SYSTEMD = 478, - VAR_SHM_ENABLE = 479, - VAR_SHM_KEY = 480, - VAR_ROOT_KEY_SENTINEL = 481, - VAR_DNSCRYPT = 482, - VAR_DNSCRYPT_ENABLE = 483, - VAR_DNSCRYPT_PORT = 484, - VAR_DNSCRYPT_PROVIDER = 485, - VAR_DNSCRYPT_SECRET_KEY = 486, - VAR_DNSCRYPT_PROVIDER_CERT = 487, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 488, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 490, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 491, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 492, - VAR_IPSECMOD_ENABLED = 493, - VAR_IPSECMOD_HOOK = 494, - VAR_IPSECMOD_IGNORE_BOGUS = 495, - VAR_IPSECMOD_MAX_TTL = 496, - VAR_IPSECMOD_WHITELIST = 497, - VAR_IPSECMOD_STRICT = 498, - VAR_CACHEDB = 499, - VAR_CACHEDB_BACKEND = 500, - VAR_CACHEDB_SECRETSEED = 501, - VAR_CACHEDB_REDISHOST = 502, - VAR_CACHEDB_REDISPORT = 503, - VAR_CACHEDB_REDISTIMEOUT = 504, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 505, - VAR_FOR_UPSTREAM = 506, - VAR_AUTH_ZONE = 507, - VAR_ZONEFILE = 508, - VAR_MASTER = 509, - VAR_URL = 510, - VAR_FOR_DOWNSTREAM = 511, - VAR_FALLBACK_ENABLED = 512, - VAR_TLS_ADDITIONAL_PORT = 513, - VAR_LOW_RTT = 514, - VAR_LOW_RTT_PERMIL = 515, - VAR_FAST_SERVER_PERMIL = 516, - VAR_FAST_SERVER_NUM = 517, - VAR_ALLOW_NOTIFY = 518, - VAR_TLS_WIN_CERT = 519, - VAR_TCP_CONNECTION_LIMIT = 520, - VAR_FORWARD_NO_CACHE = 521, - VAR_STUB_NO_CACHE = 522, - VAR_LOG_SERVFAIL = 523, - VAR_DENY_ANY = 524, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 525, - VAR_LOG_TAG_QUERYREPLY = 526, - VAR_STREAM_WAIT_SIZE = 527, - VAR_TLS_CIPHERS = 528, - VAR_TLS_CIPHERSUITES = 529, - VAR_IPSET = 530, - VAR_IPSET_NAME_V4 = 531, - VAR_IPSET_NAME_V6 = 532, - VAR_TLS_SESSION_TICKET_KEYS = 533, - VAR_RPZ = 534, - VAR_TAGS = 535, - VAR_RPZ_ACTION_OVERRIDE = 536, - VAR_RPZ_CNAME_OVERRIDE = 537, - VAR_RPZ_LOG = 538, - VAR_RPZ_LOG_NAME = 539 + VAR_HTTPS_PORT = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_DISABLE_DNSSEC_LAME_CHECK = 432, + VAR_IP_RATELIMIT = 433, + VAR_IP_RATELIMIT_SLABS = 434, + VAR_IP_RATELIMIT_SIZE = 435, + VAR_RATELIMIT = 436, + VAR_RATELIMIT_SLABS = 437, + VAR_RATELIMIT_SIZE = 438, + VAR_RATELIMIT_FOR_DOMAIN = 439, + VAR_RATELIMIT_BELOW_DOMAIN = 440, + VAR_IP_RATELIMIT_FACTOR = 441, + VAR_RATELIMIT_FACTOR = 442, + VAR_SEND_CLIENT_SUBNET = 443, + VAR_CLIENT_SUBNET_ZONE = 444, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, + VAR_CLIENT_SUBNET_OPCODE = 446, + VAR_MAX_CLIENT_SUBNET_IPV4 = 447, + VAR_MAX_CLIENT_SUBNET_IPV6 = 448, + VAR_MIN_CLIENT_SUBNET_IPV4 = 449, + VAR_MIN_CLIENT_SUBNET_IPV6 = 450, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, + VAR_CAPS_WHITELIST = 453, + VAR_CACHE_MAX_NEGATIVE_TTL = 454, + VAR_PERMIT_SMALL_HOLDDOWN = 455, + VAR_QNAME_MINIMISATION = 456, + VAR_QNAME_MINIMISATION_STRICT = 457, + VAR_IP_FREEBIND = 458, + VAR_DEFINE_TAG = 459, + VAR_LOCAL_ZONE_TAG = 460, + VAR_ACCESS_CONTROL_TAG = 461, + VAR_LOCAL_ZONE_OVERRIDE = 462, + VAR_ACCESS_CONTROL_TAG_ACTION = 463, + VAR_ACCESS_CONTROL_TAG_DATA = 464, + VAR_VIEW = 465, + VAR_ACCESS_CONTROL_VIEW = 466, + VAR_VIEW_FIRST = 467, + VAR_SERVE_EXPIRED = 468, + VAR_SERVE_EXPIRED_TTL = 469, + VAR_SERVE_EXPIRED_TTL_RESET = 470, + VAR_SERVE_EXPIRED_REPLY_TTL = 471, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, + VAR_FAKE_DSA = 473, + VAR_FAKE_SHA1 = 474, + VAR_LOG_IDENTITY = 475, + VAR_HIDE_TRUSTANCHOR = 476, + VAR_TRUST_ANCHOR_SIGNALING = 477, + VAR_AGGRESSIVE_NSEC = 478, + VAR_USE_SYSTEMD = 479, + VAR_SHM_ENABLE = 480, + VAR_SHM_KEY = 481, + VAR_ROOT_KEY_SENTINEL = 482, + VAR_DNSCRYPT = 483, + VAR_DNSCRYPT_ENABLE = 484, + VAR_DNSCRYPT_PORT = 485, + VAR_DNSCRYPT_PROVIDER = 486, + VAR_DNSCRYPT_SECRET_KEY = 487, + VAR_DNSCRYPT_PROVIDER_CERT = 488, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, + VAR_IPSECMOD_ENABLED = 494, + VAR_IPSECMOD_HOOK = 495, + VAR_IPSECMOD_IGNORE_BOGUS = 496, + VAR_IPSECMOD_MAX_TTL = 497, + VAR_IPSECMOD_WHITELIST = 498, + VAR_IPSECMOD_STRICT = 499, + VAR_CACHEDB = 500, + VAR_CACHEDB_BACKEND = 501, + VAR_CACHEDB_SECRETSEED = 502, + VAR_CACHEDB_REDISHOST = 503, + VAR_CACHEDB_REDISPORT = 504, + VAR_CACHEDB_REDISTIMEOUT = 505, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 506, + VAR_FOR_UPSTREAM = 507, + VAR_AUTH_ZONE = 508, + VAR_ZONEFILE = 509, + VAR_MASTER = 510, + VAR_URL = 511, + VAR_FOR_DOWNSTREAM = 512, + VAR_FALLBACK_ENABLED = 513, + VAR_TLS_ADDITIONAL_PORT = 514, + VAR_LOW_RTT = 515, + VAR_LOW_RTT_PERMIL = 516, + VAR_FAST_SERVER_PERMIL = 517, + VAR_FAST_SERVER_NUM = 518, + VAR_ALLOW_NOTIFY = 519, + VAR_TLS_WIN_CERT = 520, + VAR_TCP_CONNECTION_LIMIT = 521, + VAR_FORWARD_NO_CACHE = 522, + VAR_STUB_NO_CACHE = 523, + VAR_LOG_SERVFAIL = 524, + VAR_DENY_ANY = 525, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 526, + VAR_LOG_TAG_QUERYREPLY = 527, + VAR_STREAM_WAIT_SIZE = 528, + VAR_TLS_CIPHERS = 529, + VAR_TLS_CIPHERSUITES = 530, + VAR_IPSET = 531, + VAR_IPSET_NAME_V4 = 532, + VAR_IPSET_NAME_V6 = 533, + VAR_TLS_SESSION_TICKET_KEYS = 534, + VAR_RPZ = 535, + VAR_TAGS = 536, + VAR_RPZ_ACTION_OVERRIDE = 537, + VAR_RPZ_CNAME_OVERRIDE = 538, + VAR_RPZ_LOG = 539, + VAR_RPZ_LOG_NAME = 540 }; #endif /* Tokens. */ @@ -472,162 +469,164 @@ extern int yydebug; #define VAR_STUB_SSL_UPSTREAM 393 #define VAR_FORWARD_SSL_UPSTREAM 394 #define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 431 -#define VAR_IP_RATELIMIT 432 -#define VAR_IP_RATELIMIT_SLABS 433 -#define VAR_IP_RATELIMIT_SIZE 434 -#define VAR_RATELIMIT 435 -#define VAR_RATELIMIT_SLABS 436 -#define VAR_RATELIMIT_SIZE 437 -#define VAR_RATELIMIT_FOR_DOMAIN 438 -#define VAR_RATELIMIT_BELOW_DOMAIN 439 -#define VAR_IP_RATELIMIT_FACTOR 440 -#define VAR_RATELIMIT_FACTOR 441 -#define VAR_SEND_CLIENT_SUBNET 442 -#define VAR_CLIENT_SUBNET_ZONE 443 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 444 -#define VAR_CLIENT_SUBNET_OPCODE 445 -#define VAR_MAX_CLIENT_SUBNET_IPV4 446 -#define VAR_MAX_CLIENT_SUBNET_IPV6 447 -#define VAR_MIN_CLIENT_SUBNET_IPV4 448 -#define VAR_MIN_CLIENT_SUBNET_IPV6 449 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 451 -#define VAR_CAPS_WHITELIST 452 -#define VAR_CACHE_MAX_NEGATIVE_TTL 453 -#define VAR_PERMIT_SMALL_HOLDDOWN 454 -#define VAR_QNAME_MINIMISATION 455 -#define VAR_QNAME_MINIMISATION_STRICT 456 -#define VAR_IP_FREEBIND 457 -#define VAR_DEFINE_TAG 458 -#define VAR_LOCAL_ZONE_TAG 459 -#define VAR_ACCESS_CONTROL_TAG 460 -#define VAR_LOCAL_ZONE_OVERRIDE 461 -#define VAR_ACCESS_CONTROL_TAG_ACTION 462 -#define VAR_ACCESS_CONTROL_TAG_DATA 463 -#define VAR_VIEW 464 -#define VAR_ACCESS_CONTROL_VIEW 465 -#define VAR_VIEW_FIRST 466 -#define VAR_SERVE_EXPIRED 467 -#define VAR_SERVE_EXPIRED_TTL 468 -#define VAR_SERVE_EXPIRED_TTL_RESET 469 -#define VAR_SERVE_EXPIRED_REPLY_TTL 470 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 471 -#define VAR_FAKE_DSA 472 -#define VAR_FAKE_SHA1 473 -#define VAR_LOG_IDENTITY 474 -#define VAR_HIDE_TRUSTANCHOR 475 -#define VAR_TRUST_ANCHOR_SIGNALING 476 -#define VAR_AGGRESSIVE_NSEC 477 -#define VAR_USE_SYSTEMD 478 -#define VAR_SHM_ENABLE 479 -#define VAR_SHM_KEY 480 -#define VAR_ROOT_KEY_SENTINEL 481 -#define VAR_DNSCRYPT 482 -#define VAR_DNSCRYPT_ENABLE 483 -#define VAR_DNSCRYPT_PORT 484 -#define VAR_DNSCRYPT_PROVIDER 485 -#define VAR_DNSCRYPT_SECRET_KEY 486 -#define VAR_DNSCRYPT_PROVIDER_CERT 487 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 488 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 490 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 492 -#define VAR_IPSECMOD_ENABLED 493 -#define VAR_IPSECMOD_HOOK 494 -#define VAR_IPSECMOD_IGNORE_BOGUS 495 -#define VAR_IPSECMOD_MAX_TTL 496 -#define VAR_IPSECMOD_WHITELIST 497 -#define VAR_IPSECMOD_STRICT 498 -#define VAR_CACHEDB 499 -#define VAR_CACHEDB_BACKEND 500 -#define VAR_CACHEDB_SECRETSEED 501 -#define VAR_CACHEDB_REDISHOST 502 -#define VAR_CACHEDB_REDISPORT 503 -#define VAR_CACHEDB_REDISTIMEOUT 504 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 505 -#define VAR_FOR_UPSTREAM 506 -#define VAR_AUTH_ZONE 507 -#define VAR_ZONEFILE 508 -#define VAR_MASTER 509 -#define VAR_URL 510 -#define VAR_FOR_DOWNSTREAM 511 -#define VAR_FALLBACK_ENABLED 512 -#define VAR_TLS_ADDITIONAL_PORT 513 -#define VAR_LOW_RTT 514 -#define VAR_LOW_RTT_PERMIL 515 -#define VAR_FAST_SERVER_PERMIL 516 -#define VAR_FAST_SERVER_NUM 517 -#define VAR_ALLOW_NOTIFY 518 -#define VAR_TLS_WIN_CERT 519 -#define VAR_TCP_CONNECTION_LIMIT 520 -#define VAR_FORWARD_NO_CACHE 521 -#define VAR_STUB_NO_CACHE 522 -#define VAR_LOG_SERVFAIL 523 -#define VAR_DENY_ANY 524 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 525 -#define VAR_LOG_TAG_QUERYREPLY 526 -#define VAR_STREAM_WAIT_SIZE 527 -#define VAR_TLS_CIPHERS 528 -#define VAR_TLS_CIPHERSUITES 529 -#define VAR_IPSET 530 -#define VAR_IPSET_NAME_V4 531 -#define VAR_IPSET_NAME_V6 532 -#define VAR_TLS_SESSION_TICKET_KEYS 533 -#define VAR_RPZ 534 -#define VAR_TAGS 535 -#define VAR_RPZ_ACTION_OVERRIDE 536 -#define VAR_RPZ_CNAME_OVERRIDE 537 -#define VAR_RPZ_LOG 538 -#define VAR_RPZ_LOG_NAME 539 +#define VAR_HTTPS_PORT 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 +#define VAR_IP_RATELIMIT 433 +#define VAR_IP_RATELIMIT_SLABS 434 +#define VAR_IP_RATELIMIT_SIZE 435 +#define VAR_RATELIMIT 436 +#define VAR_RATELIMIT_SLABS 437 +#define VAR_RATELIMIT_SIZE 438 +#define VAR_RATELIMIT_FOR_DOMAIN 439 +#define VAR_RATELIMIT_BELOW_DOMAIN 440 +#define VAR_IP_RATELIMIT_FACTOR 441 +#define VAR_RATELIMIT_FACTOR 442 +#define VAR_SEND_CLIENT_SUBNET 443 +#define VAR_CLIENT_SUBNET_ZONE 444 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 +#define VAR_CLIENT_SUBNET_OPCODE 446 +#define VAR_MAX_CLIENT_SUBNET_IPV4 447 +#define VAR_MAX_CLIENT_SUBNET_IPV6 448 +#define VAR_MIN_CLIENT_SUBNET_IPV4 449 +#define VAR_MIN_CLIENT_SUBNET_IPV6 450 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 +#define VAR_CAPS_WHITELIST 453 +#define VAR_CACHE_MAX_NEGATIVE_TTL 454 +#define VAR_PERMIT_SMALL_HOLDDOWN 455 +#define VAR_QNAME_MINIMISATION 456 +#define VAR_QNAME_MINIMISATION_STRICT 457 +#define VAR_IP_FREEBIND 458 +#define VAR_DEFINE_TAG 459 +#define VAR_LOCAL_ZONE_TAG 460 +#define VAR_ACCESS_CONTROL_TAG 461 +#define VAR_LOCAL_ZONE_OVERRIDE 462 +#define VAR_ACCESS_CONTROL_TAG_ACTION 463 +#define VAR_ACCESS_CONTROL_TAG_DATA 464 +#define VAR_VIEW 465 +#define VAR_ACCESS_CONTROL_VIEW 466 +#define VAR_VIEW_FIRST 467 +#define VAR_SERVE_EXPIRED 468 +#define VAR_SERVE_EXPIRED_TTL 469 +#define VAR_SERVE_EXPIRED_TTL_RESET 470 +#define VAR_SERVE_EXPIRED_REPLY_TTL 471 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 +#define VAR_FAKE_DSA 473 +#define VAR_FAKE_SHA1 474 +#define VAR_LOG_IDENTITY 475 +#define VAR_HIDE_TRUSTANCHOR 476 +#define VAR_TRUST_ANCHOR_SIGNALING 477 +#define VAR_AGGRESSIVE_NSEC 478 +#define VAR_USE_SYSTEMD 479 +#define VAR_SHM_ENABLE 480 +#define VAR_SHM_KEY 481 +#define VAR_ROOT_KEY_SENTINEL 482 +#define VAR_DNSCRYPT 483 +#define VAR_DNSCRYPT_ENABLE 484 +#define VAR_DNSCRYPT_PORT 485 +#define VAR_DNSCRYPT_PROVIDER 486 +#define VAR_DNSCRYPT_SECRET_KEY 487 +#define VAR_DNSCRYPT_PROVIDER_CERT 488 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 +#define VAR_IPSECMOD_ENABLED 494 +#define VAR_IPSECMOD_HOOK 495 +#define VAR_IPSECMOD_IGNORE_BOGUS 496 +#define VAR_IPSECMOD_MAX_TTL 497 +#define VAR_IPSECMOD_WHITELIST 498 +#define VAR_IPSECMOD_STRICT 499 +#define VAR_CACHEDB 500 +#define VAR_CACHEDB_BACKEND 501 +#define VAR_CACHEDB_SECRETSEED 502 +#define VAR_CACHEDB_REDISHOST 503 +#define VAR_CACHEDB_REDISPORT 504 +#define VAR_CACHEDB_REDISTIMEOUT 505 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 506 +#define VAR_FOR_UPSTREAM 507 +#define VAR_AUTH_ZONE 508 +#define VAR_ZONEFILE 509 +#define VAR_MASTER 510 +#define VAR_URL 511 +#define VAR_FOR_DOWNSTREAM 512 +#define VAR_FALLBACK_ENABLED 513 +#define VAR_TLS_ADDITIONAL_PORT 514 +#define VAR_LOW_RTT 515 +#define VAR_LOW_RTT_PERMIL 516 +#define VAR_FAST_SERVER_PERMIL 517 +#define VAR_FAST_SERVER_NUM 518 +#define VAR_ALLOW_NOTIFY 519 +#define VAR_TLS_WIN_CERT 520 +#define VAR_TCP_CONNECTION_LIMIT 521 +#define VAR_FORWARD_NO_CACHE 522 +#define VAR_STUB_NO_CACHE 523 +#define VAR_LOG_SERVFAIL 524 +#define VAR_DENY_ANY 525 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 526 +#define VAR_LOG_TAG_QUERYREPLY 527 +#define VAR_STREAM_WAIT_SIZE 528 +#define VAR_TLS_CIPHERS 529 +#define VAR_TLS_CIPHERSUITES 530 +#define VAR_IPSET 531 +#define VAR_IPSET_NAME_V4 532 +#define VAR_IPSET_NAME_V6 533 +#define VAR_TLS_SESSION_TICKET_KEYS 534 +#define VAR_RPZ 535 +#define VAR_TAGS 536 +#define VAR_RPZ_ACTION_OVERRIDE 537 +#define VAR_RPZ_CNAME_OVERRIDE 538 +#define VAR_RPZ_LOG 539 +#define VAR_RPZ_LOG_NAME 540 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:1909 */ char* str; -#line 629 "util/configparser.h" - +#line 628 "util/configparser.h" /* yacc.c:1909 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index 206f2f946..7498ab4f9 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -111,6 +111,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE +%token VAR_HTTPS_PORT %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES @@ -235,6 +236,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_log_queries | server_log_replies | server_tcp_upstream | server_ssl_upstream | server_log_local_actions | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | + server_https_port | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | server_so_reuseport | server_delay_close | server_unblock_lan_zones | server_insecure_lan_zones | @@ -949,6 +951,15 @@ server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG yyerror("out of memory"); } ; +server_https_port: VAR_HTTPS_PORT STRING_ARG + { + OUTYY(("P(server_https_port:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->https_port = atoi($2); + free($2); + } + ; server_use_systemd: VAR_USE_SYSTEMD STRING_ARG { OUTYY(("P(server_use_systemd:%s)\n", $2)); diff --git a/util/iana_ports.inc b/util/iana_ports.inc index b26677efb..0e01394bf 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -3771,6 +3771,7 @@ 4188, 4191, 4192, +4195, 4197, 4199, 4300, diff --git a/util/net_help.c b/util/net_help.c index 135d33427..82d37f489 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -58,6 +58,9 @@ #ifdef USE_WINSOCK #include #endif +#ifdef HAVE_NGHTTP2_NGHTTP2_H +#include +#endif /** max length of an IP address (the address portion) that we allow */ #define MAX_ADDR_STRLEN 128 /* characters */ @@ -855,6 +858,21 @@ log_cert(unsigned level, const char* str, void* cert) } #endif /* HAVE_SSL */ +#if defined(HAVE_SSL) && defined(HAVE_NGHTTP2) +static int alpn_select_cb(SSL* ATTR_UNUSED(ssl), const unsigned char** out, + unsigned char* outlen, const unsigned char* in, unsigned int inlen, + void* ATTR_UNUSED(arg)) +{ + int rv = nghttp2_select_next_protocol((unsigned char **)out, outlen, in, + inlen); + if(rv == -1) { + return SSL_TLSEXT_ERR_NOACK; + } + /* either http/1.1 or h2 selected */ + return SSL_TLSEXT_ERR_OK; +} +#endif + int listen_sslctx_setup(void* ctxt) { @@ -913,6 +931,9 @@ listen_sslctx_setup(void* ctxt) #ifdef HAVE_SSL_CTX_SET_SECURITY_LEVEL SSL_CTX_set_security_level(ctx, 0); #endif +#if defined(HAVE_SSL_CTX_SET_ALPN_SELECT_CB) && defined(HAVE_NGHTTP2) + SSL_CTX_set_alpn_select_cb(ctx, alpn_select_cb, NULL); +#endif #else (void)ctxt; #endif /* HAVE_SSL */ diff --git a/util/netevent.c b/util/netevent.c index 090238384..d3802e4f6 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -733,7 +733,7 @@ static void setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) { int handler_usage; - log_assert(c->type == comm_tcp); + log_assert(c->type == comm_tcp || c->type == comm_http); log_assert(c->fd == -1); sldns_buffer_clear(c->buffer); #ifdef USE_DNSCRYPT @@ -908,6 +908,41 @@ comm_point_tcp_win_bio_cb(struct comm_point* c, void* thessl) } #endif +#ifdef HAVE_NGHTTP2 +/** Create http2 session server. Per connection, after TCP accepted.*/ +static int http2_session_server_create(struct http2_session* h2_session) +{ + log_assert(h2_session->callbacks); + h2_session->is_drop = 0; + if(nghttp2_session_server_new(&h2_session->session, + h2_session->callbacks, + h2_session) == NGHTTP2_ERR_NOMEM) { + log_err("failed to create nghttp2 session server"); + return 0; + } + + return 1; +} + +/** Submit http2 setting to session. Once per session. */ +static int http2_submit_settings(struct http2_session* h2_session) +{ + int ret; + nghttp2_settings_entry settings[1] = { + {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100}}; + + ret = nghttp2_submit_settings(h2_session->session, NGHTTP2_FLAG_NONE, + settings, 1); + if(ret) { + verbose(VERB_QUERY, "http2: submit_settings failed, " + "error: %s", nghttp2_strerror(ret)); + return 0; + } + return 1; +} +#endif /* HAVE_NGHTTP2 */ + + void comm_point_tcp_accept_callback(int fd, short event, void* arg) { @@ -929,7 +964,28 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); - c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, comm_point_tcp_handle_callback, c_hdl); + +#ifdef HAVE_NGHTTP2 + if(c_hdl->type == comm_http && c_hdl->h2_session) { + if(!http2_session_server_create(c_hdl->h2_session)) { + log_warn("failed to create nghttp2"); + return; + } + if(!http2_submit_settings(c_hdl->h2_session)) { + log_warn("failed to submit http2 settings"); + return; + } + c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, + UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, + comm_point_http_handle_callback, c_hdl); + } else { +#endif + c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, + UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, + comm_point_tcp_handle_callback, c_hdl); +#ifdef HAVE_NGHTTP2 + } +#endif if(!c_hdl->ev->ev) { log_warn("could not ub_event_new, dropped tcp"); return; @@ -1163,6 +1219,18 @@ ssl_handshake(struct comm_point* c) c->repinfo.addrlen); } + /* check if http2 use is negotiated */ + if(c->type == comm_http && c->h2_session) { + const unsigned char *alpn; + unsigned int alpnlen = 0; + SSL_get0_alpn_selected(c->ssl, &alpn, &alpnlen); + if(alpnlen == 2 && memcmp("h2", alpn, 2) == 0) { + /* connection upgraded to HTTP2 */ + c->tcp_do_toggle_rw = 0; + c->alpn_h2 = 1; + } + } + /* setup listen rw correctly */ if(c->tcp_is_reading) { if(c->ssl_shake_state != comm_ssl_shake_read) @@ -2180,11 +2248,210 @@ http_chunked_segment(struct comm_point* c) return 1; } +#ifdef HAVE_NGHTTP2 +/** Create new http2 session. Called when creating handling comm point. */ +struct http2_session* http2_session_create(struct comm_point* c) +{ + struct http2_session* session = calloc(1, sizeof(*session)); + if(!session) { + log_err("malloc failure while creating http2 session"); + return NULL; + } + session->c = c; + + return session; +} +#endif + +/** Delete http2 session. After closing connection or on error */ +void http2_session_delete(struct http2_session* h2_session) +{ +#ifdef HAVE_NGHTTP2 + if(h2_session->callbacks) + nghttp2_session_callbacks_del(h2_session->callbacks); + free(h2_session); +#else + (void)h2_session; +#endif +} + +#ifdef HAVE_NGHTTP2 +struct http2_stream* http2_stream_create(int32_t stream_id) +{ + struct http2_stream* h2_stream = calloc(1, sizeof(*h2_stream)); + if(!h2_stream) { + log_err("malloc failure while creating http2 stream"); + return NULL; + } + h2_stream->stream_id = stream_id; + return h2_stream; +} + +/** Delete http2 stream. After session delete or stream close callback */ +void http2_stream_delete(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + if(h2_stream->mesh_state) { + mesh_state_remove_reply(h2_stream->mesh, h2_stream->mesh_state, + h2_session->c); + } + if(h2_stream->qbuffer) + sldns_buffer_free(h2_stream->qbuffer); + if(h2_stream->rbuffer) + sldns_buffer_free(h2_stream->rbuffer); + free(h2_stream); +} +#endif + +void http2_stream_add_meshstate(struct http2_stream* h2_stream, + struct mesh_area* mesh, struct mesh_state* m) +{ + h2_stream->mesh = mesh; + h2_stream->mesh_state = m; +} + +/** delete http2 session server. After closing connection. */ +static void http2_session_server_delete(struct http2_session* h2_session) +{ +#ifdef HAVE_NGHTTP2 + struct http2_stream* h2_stream, *next; + nghttp2_session_del(h2_session->session); /* NULL input is fine */ + h2_session->session = NULL; + for(h2_stream = h2_session->first_stream; h2_stream;) { + next = h2_stream->next; + http2_stream_delete(h2_session, h2_stream); + h2_stream = next; + } + h2_session->first_stream = NULL; + h2_session->is_drop = 0; + h2_session->postpone_drop = 0; + h2_session->c->h2_stream = NULL; +#endif + (void)h2_session; +} + +#ifdef HAVE_NGHTTP2 +void http2_session_add_stream(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + if(h2_session->first_stream) + h2_session->first_stream->prev = h2_stream; + h2_stream->next = h2_session->first_stream; + h2_session->first_stream = h2_stream; +} + +/** remove stream from session linked list. After stream close callback or + * closing connection */ +void http2_session_remove_stream(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + if(h2_stream->prev) + h2_stream->prev->next = h2_stream->next; + else + h2_session->first_stream = h2_stream->next; + if(h2_stream->next) + h2_stream->next->prev = h2_stream->prev; + +} + +int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), + int32_t stream_id, uint32_t ATTR_UNUSED(error_code), void* cb_arg) +{ + struct http2_stream* h2_stream; + struct http2_session* h2_session = (struct http2_session*)cb_arg; + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + return 0; + } + http2_session_remove_stream(h2_session, h2_stream); + http2_stream_delete(h2_session, h2_stream); + return 0; +} + +ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), uint8_t* buf, + size_t len, int ATTR_UNUSED(flags), void* cb_arg) +{ +#ifdef HAVE_SSL + struct http2_session* h2_session = (struct http2_session*)cb_arg; + int r; + + log_assert(h2_session->c->type == comm_http); + log_assert(h2_session->c->h2_session); + + if(!h2_session->c->ssl) + return 0; + + ERR_clear_error(); + r = SSL_read(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } else if(want == SSL_ERROR_WANT_READ) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write; + comm_point_listen_for_rw(h2_session->c, 0, 1); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef ECONNRESET + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_read"); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + return r; +#else + (void)buf; + (void)len; + (void)cb_arg; + return -1; +#endif +} +#endif /* HAVE_NGHTTP2 */ + +/** Handle http2 read */ +static int +comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) +{ +#ifdef HAVE_NGHTTP2 + int ret; + log_assert(c->h2_session); + log_assert(c->ssl); + + /* reading until recv cb returns NGHTTP2_ERR_WOULDBLOCK */ + ret = nghttp2_session_recv(c->h2_session->session); + if(ret) { + if(ret != NGHTTP2_ERR_EOF) { + verbose(VERB_QUERY, "http2: session_recv failed, " + "error: %s", nghttp2_strerror(ret)); + } + return 0; + } + if(nghttp2_session_want_write(c->h2_session->session)) { + c->tcp_is_reading = 0; + comm_point_stop_listening(c); + comm_point_start_listening(c, -1, c->tcp_timeout_msec); + } else if(!nghttp2_session_want_read(c->h2_session->session)) + return 0; /* connection can be closed */ + return 1; +#else + (void)c; + return 0; +#endif +} + /** - * Handle http reading callback. + * Handle http reading callback. * @param fd: file descriptor of socket. * @param c: comm point to read from into buffer. - * @return: 0 on error + * @return: 0 on error */ static int comm_point_http_handle_read(int fd, struct comm_point* c) @@ -2204,6 +2471,18 @@ comm_point_http_handle_read(int fd, struct comm_point* c) if(!c->tcp_is_reading) return 1; + + if(c->alpn_h2) { + return comm_point_http2_handle_read(fd, c); + } + + /* http version is <= http/1.1 */ + + if(c->http_min_version >= http_version_2) { + /* HTTP/2 failed, not allowed to use lower version. */ + return 0; + } + /* read more data */ if(c->ssl) { if(!ssl_http_read_more(c)) @@ -2214,7 +2493,9 @@ comm_point_http_handle_read(int fd, struct comm_point* c) } sldns_buffer_flip(c->buffer); + while(sldns_buffer_remaining(c->buffer) > 0) { + /* Handle HTTP/1.x data */ /* if we are reading headers, read more headers */ if(c->http_in_headers || c->http_in_chunk_headers) { /* if header is done, process the header */ @@ -2376,6 +2657,83 @@ http_write_more(int fd, struct comm_point* c) return 1; } +#ifdef HAVE_NGHTTP2 +ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf, + size_t len, int ATTR_UNUSED(flags), void* cb_arg) +{ +#ifdef HAVE_SSL + int r; + struct http2_session* h2_session = (struct http2_session*)cb_arg; + log_assert(h2_session->c->type == comm_http); + log_assert(h2_session->c->h2_session); + + if(!h2_session->c->ssl) + return 0; + + ERR_clear_error(); + r = SSL_write(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(want == SSL_ERROR_WANT_READ) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read; + comm_point_listen_for_rw(h2_session->c, 1, 0); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef EPIPE + if(errno == EPIPE && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + if(errno != 0) + log_err("SSL_write syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + return r; +#else + (void)buf; + (void)len; + (void)cb_arg; + return -1; +#endif +} +#endif /* HAVE_NGHTTP2 */ + +/** Handle http2 writing */ +static int +comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) +{ +#ifdef HAVE_NGHTTP2 + int ret; + log_assert(c->h2_session); + log_assert(c->ssl); + + ret = nghttp2_session_send(c->h2_session->session); + if(ret) { + verbose(VERB_QUERY, "http2: session_send failed, " + "error: %s", nghttp2_strerror(ret)); + return 0; + } + + if(nghttp2_session_want_read(c->h2_session->session)) { + c->tcp_is_reading = 1; + comm_point_stop_listening(c); + comm_point_start_listening(c, -1, c->tcp_timeout_msec); + } else if(!nghttp2_session_want_write(c->h2_session->session)) + return 0; /* connection can be closed */ + return 1; +#else + (void)c; + return 0; +#endif +} + /** * Handle http writing callback. * @param fd: file descriptor of socket. @@ -2407,6 +2765,18 @@ comm_point_http_handle_write(int fd, struct comm_point* c) #endif /* HAVE_SSL */ if(c->tcp_is_reading) return 1; + + if(c->alpn_h2) { + return comm_point_http2_handle_write(fd, c); + } + + /* http version is <= http/1.1 */ + + if(c->http_min_version >= http_version_2) { + /* HTTP/2 failed, not allowed to use lower version. */ + return 0; + } + /* if we are writing, write more */ if(c->ssl) { if(!ssl_http_write_more(c)) @@ -2718,11 +3088,116 @@ comm_point_create_tcp_handler(struct comm_base *base, return c; } +static struct comm_point* +comm_point_create_http_handler(struct comm_base *base, + struct comm_point* parent, size_t bufsize, int harden_large_queries, + comm_point_callback_type* callback, void* callback_arg) +{ + struct comm_point* c = (struct comm_point*)calloc(1, + sizeof(struct comm_point)); + short evbits; + if(!c) + return NULL; + c->ev = (struct internal_event*)calloc(1, + sizeof(struct internal_event)); + if(!c->ev) { + free(c); + return NULL; + } + c->ev->base = base; + c->fd = -1; + c->buffer = sldns_buffer_new(bufsize); + if(!c->buffer) { + free(c->ev); + free(c); + return NULL; + } + c->timeout = (struct timeval*)malloc(sizeof(struct timeval)); + if(!c->timeout) { + sldns_buffer_free(c->buffer); + free(c->ev); + free(c); + return NULL; + } + c->tcp_is_reading = 0; + c->tcp_byte_count = 0; + c->tcp_parent = parent; + c->tcp_timeout_msec = parent->tcp_timeout_msec; + c->tcp_conn_limit = parent->tcp_conn_limit; + c->tcl_addr = NULL; + c->tcp_keepalive = 0; + c->max_tcp_count = 0; + c->cur_tcp_count = 0; + c->tcp_handlers = NULL; + c->tcp_free = NULL; + c->type = comm_http; + c->tcp_do_close = 1; + c->do_not_close = 0; + c->tcp_do_toggle_rw = 1; /* will be set to 0 after http2 upgrade */ + c->tcp_check_nb_connect = 0; +#ifdef USE_MSG_FASTOPEN + c->tcp_do_fastopen = 0; +#endif +#ifdef USE_DNSCRYPT + c->dnscrypt = 0; + c->dnscrypt_buffer = NULL; +#endif + c->repinfo.c = c; + c->callback = callback; + c->cb_arg = callback_arg; + + c->http_min_version = http_version_2; + c->http2_max_qbuffer_size = bufsize; + if(harden_large_queries && bufsize > 512) + c->http2_max_qbuffer_size = 512; + c->alpn_h2 = 0; +#ifdef HAVE_NGHTTP2 + if(!(c->h2_session = http2_session_create(c))) { + log_err("could not create http2 session"); + sldns_buffer_free(c->buffer); + free(c->timeout); + free(c->ev); + free(c); + return NULL; + } + if(!(c->h2_session->callbacks = http2_req_callbacks_create())) { + log_err("could not create http2 callbacks"); + http2_session_delete(c->h2_session); + sldns_buffer_free(c->buffer); + free(c->timeout); + free(c->ev); + free(c); + return NULL; + } +#endif + + /* add to parent free list */ + c->tcp_free = parent->tcp_free; + parent->tcp_free = c; + /* ub_event stuff */ + evbits = UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT; + c->ev->ev = ub_event_new(base->eb->base, c->fd, evbits, + comm_point_http_handle_callback, c); + if(c->ev->ev == NULL) + { + log_err("could not set http handler event"); + parent->tcp_free = c->tcp_free; + http2_session_delete(c->h2_session); + sldns_buffer_free(c->buffer); + free(c->timeout); + free(c->ev); + free(c); + return NULL; + } + return c; +} + struct comm_point* comm_point_create_tcp(struct comm_base *base, int fd, int num, - int idle_timeout, struct tcl_list* tcp_conn_limit, size_t bufsize, - struct sldns_buffer* spoolbuf, comm_point_callback_type* callback, - void* callback_arg) + int idle_timeout, int harden_large_queries, + struct tcl_list* tcp_conn_limit, size_t bufsize, + struct sldns_buffer* spoolbuf, enum listen_type port_type, + comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, sizeof(struct comm_point)); @@ -2786,10 +3261,23 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, comm_point_delete(c); return NULL; } - /* now prealloc the tcp handlers */ + /* now prealloc the handlers */ for(i=0; itcp_handlers[i] = comm_point_create_tcp_handler(base, - c, bufsize, spoolbuf, callback, callback_arg); + if(port_type == listen_type_tcp || + port_type == listen_type_ssl || + port_type == listen_type_tcp_dnscrypt) { + c->tcp_handlers[i] = comm_point_create_tcp_handler(base, + c, bufsize, spoolbuf, callback, callback_arg); + } else if(port_type == listen_type_http) { + c->tcp_handlers[i] = comm_point_create_http_handler( + base, c, bufsize, harden_large_queries, + callback, callback_arg); + } + else { + log_err("could not create tcp handler, unknown listen " + "type"); + return NULL; + } if(!c->tcp_handlers[i]) { comm_point_delete(c); return NULL; @@ -3073,6 +3561,9 @@ comm_point_close(struct comm_point* c) tcl_close_connection(c->tcl_addr); if(c->tcp_req_info) tcp_req_info_clear(c->tcp_req_info); + if(c->h2_session) + http2_session_server_delete(c->h2_session); + /* close fd after removing from event lists, or epoll.. is messed up */ if(c->fd != -1 && !c->do_not_close) { if(c->type == comm_tcp || c->type == comm_http) { @@ -3119,6 +3610,9 @@ comm_point_delete(struct comm_point* c) if(c->tcp_req_info) { tcp_req_info_delete(c->tcp_req_info); } + if(c->h2_session) { + http2_session_delete(c->h2_session); + } } ub_event_free(c->ev->ev); free(c->ev); @@ -3161,6 +3655,17 @@ comm_point_send_reply(struct comm_reply *repinfo) #endif if(repinfo->c->tcp_req_info) { tcp_req_info_send_reply(repinfo->c->tcp_req_info); + } else if(repinfo->c->alpn_h2) { + if(!http2_submit_dns_response(repinfo->c->h2_session)) { + comm_point_drop_reply(repinfo); + return; + } + repinfo->c->h2_stream = NULL; + repinfo->c->tcp_is_reading = 0; + comm_point_stop_listening(repinfo->c); + comm_point_start_listening(repinfo->c, -1, + repinfo->c->tcp_timeout_msec); + return; } else { comm_point_start_listening(repinfo->c, -1, repinfo->c->tcp_timeout_msec); @@ -3179,6 +3684,16 @@ comm_point_drop_reply(struct comm_reply* repinfo) return; if(repinfo->c->tcp_req_info) repinfo->c->tcp_req_info->is_drop = 1; + if(repinfo->c->type == comm_http) { + if(repinfo->c->h2_session) { + repinfo->c->h2_session->is_drop = 1; + if(!repinfo->c->h2_session->postpone_drop) + reclaim_http_handler(repinfo->c); + return; + } + reclaim_http_handler(repinfo->c); + return; + } reclaim_tcp_handler(repinfo->c); } diff --git a/util/netevent.h b/util/netevent.h index bb2cd1e53..8664a61b6 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -61,6 +61,9 @@ #define NET_EVENT_H #include "dnscrypt/dnscrypt.h" +#ifdef HAVE_NGHTTP2_NGHTTP2_H +#include +#endif struct sldns_buffer; struct comm_point; @@ -68,11 +71,16 @@ struct comm_reply; struct tcl_list; struct ub_event_base; +struct mesh_state; +struct mesh_area; + /* internal event notification data storage structure. */ struct internal_event; struct internal_base; struct internal_timer; /* A sub struct of the comm_timer super struct */ +enum listen_type; + /** callback from communication point function type */ typedef int comm_point_callback_type(struct comm_point*, void*, int, struct comm_reply*); @@ -205,6 +213,13 @@ struct comm_point { } ssl_shake_state; /* -------- HTTP ------- */ + /** Do not allow connection to use HTTP version lower than this. 0=no + * minimum. */ + enum { + http_version_none = 0, + http_version_2 = 2 + } http_min_version; + /* -------- HTTP/1.1 ------- */ /** Currently reading in http headers */ int http_in_headers; /** Currently reading in chunk headers, 0=not, 1=firstline, 2=unused @@ -216,6 +231,15 @@ struct comm_point { struct sldns_buffer* http_temp; /** http stored content in buffer */ size_t http_stored; + /* -------- HTTP/2 ------- */ + /** http2 session */ + struct http2_session* h2_session; + /** set to 1 if h2 is negatiated using alpn */ + int alpn_h2; + /** maximum allowed query buffer size */ + size_t http2_max_qbuffer_size; + /** stream currently being handled */ + struct http2_stream* h2_stream; /* -------- dnstap ------- */ /** the dnstap environment */ @@ -456,10 +480,13 @@ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, * @param num: becomes max_tcp_count, the routine allocates that * many tcp handler commpoints. * @param idle_timeout: TCP idle timeout in ms. + * @param harden_large_queries: whether query size should be limited. * @param tcp_conn_limit: TCP connection limit info. * @param bufsize: size of buffer to create for handlers. * @param spoolbuf: shared spool buffer for tcp_req_info structures. * or NULL to not create those structures in the tcp handlers. + * @param port_type: the type of port we are creating a TCP listener for. Used + * to select handler type to use. * @param callback: callback function pointer for TCP handlers. * @param callback_arg: will be passed to your callback function. * @return: returns the TCP listener commpoint. You can find the @@ -468,8 +495,10 @@ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, * Inits timeout to NULL. All handlers are on the free list. */ struct comm_point* comm_point_create_tcp(struct comm_base* base, - int fd, int num, int idle_timeout, struct tcl_list* tcp_conn_limit, + int fd, int num, int idle_timeout, int harden_large_queries, + struct tcl_list* tcp_conn_limit, size_t bufsize, struct sldns_buffer* spoolbuf, + enum listen_type port_type, comm_point_callback_type* callback, void* callback_arg); /** @@ -723,6 +752,110 @@ void comm_point_tcp_handle_callback(int fd, short event, void* arg); */ void comm_point_http_handle_callback(int fd, short event, void* arg); +/** + * HTTP2 session. HTTP2 related info per comm point. + */ +struct http2_session { + /** first item in list of streams */ + struct http2_stream* first_stream; +#ifdef HAVE_NGHTTP2 + /** nghttp2 session */ + nghttp2_session *session; + /** store nghttp2 callbacks for easy reuse */ + nghttp2_session_callbacks* callbacks; +#endif + /** comm point containing buffer used to build answer in worker or + * module */ + struct comm_point* c; + /** session is instructed to get dropped (comm port will be closed) */ + int is_drop; + /** postpone dropping the session, can be used to prevent dropping + * while being in a callback */ + int postpone_drop; +}; + +/** enum of HTTP status */ +enum http_status { + HTTP_STATUS_OK = 200, + HTTP_STATUS_BAD_REQUEST = 400, + HTTP_STATUS_NOT_FOUND = 404, + HTTP_STATUS_PAYLOAD_TOO_LARGE = 413, + HTTP_STATUS_URI_TOO_LONG = 414, + HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415, + HTTP_STATUS_NOT_IMPLEMENTED = 501 +}; + +/** + * HTTP stream. Part of list of HTTP2 streams per session. + */ +struct http2_stream { + /** next stream in list per session */ + struct http2_stream* next; + /** previous stream in list per session */ + struct http2_stream* prev; + /** HTTP2 stream ID is an unsigned 31-bit integer */ + int32_t stream_id; + /** HTTP method used for this stream */ + enum { + HTTP_METHOD_POST = 1, + HTTP_METHOD_GET, + HTTP_METHOD_UNSUPPORTED + } http_method; + /** message contains invalid content type */ + int invalid_content_type; + /** message body content type */ + size_t content_length; + /** HTTP response status */ + enum http_status status; + /** request for non existing endpoint */ + int invalid_endpoint; + /** query in request is too large */ + int query_too_large; + /** buffer to store query into. Can't use session shared buffer as query + * can arrive in parts, intertwined with frames for other queries. */ + struct sldns_buffer* qbuffer; + /** buffer to store response into. Can't use shared buffer as a next + * query read callback can overwrite it before it is send out. */ + struct sldns_buffer* rbuffer; + /** mesh area containing mesh state */ + struct mesh_area* mesh; + /** mesh state for query. Used to remove mesh reply before closing + * stream. */ + struct mesh_state* mesh_state; +}; + +#ifdef HAVE_NGHTTP2 +/** nghttp2 receive cb. Read from SSL connection into nghttp2 buffer */ +ssize_t http2_recv_cb(nghttp2_session* session, uint8_t* buf, + size_t len, int flags, void* cb_arg); +/** nghttp2 send callback. Send from nghttp2 buffer to ssl socket */ +ssize_t http2_send_cb(nghttp2_session* session, const uint8_t* buf, + size_t len, int flags, void* cb_arg); +/** nghttp2 callback on closing stream */ +int http2_stream_close_cb(nghttp2_session* session, int32_t stream_id, + uint32_t error_code, void* cb_arg); +#endif + +/** + * Create new http2 stream + * @param stream_id: ID for stream to create. + * @return malloc'ed stream, NULL on error + */ +struct http2_stream* http2_stream_create(int32_t stream_id); + +/** + * Add new stream to session linked list + * @param h2_session: http2 session to add stream to + * @param h2_stream: stream to add to session list + */ +void http2_session_add_stream(struct http2_session* h2_session, + struct http2_stream* h2_stream); + +/** Add mesh state to stream. To be able to remove mesh reply on stream closure + */ +void http2_stream_add_meshstate(struct http2_stream* h2_stream, + struct mesh_area* mesh, struct mesh_state* m); + /** * This routine is published for checks and tests, and is only used internally. * handle libevent callback for timer comm. From 723980fe77e327780d1bc80256ab3cf25f4d47db Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 8 May 2020 12:14:17 +0200 Subject: [PATCH 014/394] - Add query.num.https counter --- daemon/remote.c | 2 ++ daemon/stats.c | 3 +++ doc/unbound-control.8.in | 5 +++++ libunbound/unbound.h | 2 ++ smallapp/unbound-control.c | 1 + 5 files changed, 13 insertions(+) diff --git a/daemon/remote.c b/daemon/remote.c index 83eef7af2..09f3ae88f 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -979,6 +979,8 @@ print_ext(RES* ssl, struct ub_stats_info* s) (unsigned long)s->svr.qtls_resume)) return 0; if(!ssl_printf(ssl, "num.query.ipv6"SQ"%lu\n", (unsigned long)s->svr.qipv6)) return 0; + if(!ssl_printf(ssl, "num.query.https"SQ"%lu\n", + (unsigned long)s->svr.qhttps)) return 0; /* flags */ if(!ssl_printf(ssl, "num.query.flags.QR"SQ"%lu\n", (unsigned long)s->svr.qbit_QR)) return 0; diff --git a/daemon/stats.c b/daemon/stats.c index a568ba070..2b88eb097 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -421,6 +421,7 @@ void server_stats_add(struct ub_stats_info* total, struct ub_stats_info* a) total->svr.qtcp_outgoing += a->svr.qtcp_outgoing; total->svr.qtls += a->svr.qtls; total->svr.qtls_resume += a->svr.qtls_resume; + total->svr.qhttps += a->svr.qhttps; total->svr.qipv6 += a->svr.qipv6; total->svr.qbit_QR += a->svr.qbit_QR; total->svr.qbit_AA += a->svr.qbit_AA; @@ -484,6 +485,8 @@ void server_stats_insquery(struct ub_server_stats* stats, struct comm_point* c, if(SSL_session_reused(c->ssl)) stats->qtls_resume++; #endif + if(c->type == comm_http) + stats->qhttps++; } } if(repinfo && addr_is_ip6(&repinfo->addr, repinfo->addrlen)) diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 74d06cfd9..42eb8ea14 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -545,6 +545,11 @@ These are also counted in num.query.tcp, because TLS uses TCP. Number of TLS session resumptions, these are queries over TLS towards the unbound server where the client negotiated a TLS session resumption key. .TP +.I num.query.https +Number of queries that were made using HTTPS towards the unbound server. +These are also counted in num.query.tcp and num.query.tls, because HTTPS +uses TLS and TCP. +.TP .I num.query.ipv6 Number of queries that were made using IPv6 towards the unbound server. .TP diff --git a/libunbound/unbound.h b/libunbound/unbound.h index ca9592d62..2fad02f2c 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -696,6 +696,8 @@ struct ub_server_stats { long long qtcp_outgoing; /** number of queries over (DNS over) TLS */ long long qtls; + /** number of queries over (DNS over) HTTPS */ + long long qhttps; /** number of queries over IPv6 */ long long qipv6; /** number of queries with QR bit */ diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 4e5ce1e4b..ee5e44d2f 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -338,6 +338,7 @@ static void print_extended(struct ub_stats_info* s) PR_UL("num.query.tcpout", s->svr.qtcp_outgoing); PR_UL("num.query.tls", s->svr.qtls); PR_UL("num.query.tls_resume", s->svr.qtls_resume); + PR_UL("num.query.https", s->svr.qhttps); PR_UL("num.query.ipv6", s->svr.qipv6); /* flags */ From 6cc761f6b2db8b03dfc61468c9893d55e4f874c4 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 8 May 2020 14:19:44 +0200 Subject: [PATCH 015/394] - Add base64 decode unit test --- testcode/unitldns.c | 52 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/testcode/unitldns.c b/testcode/unitldns.c index 66f756170..22c9ed945 100644 --- a/testcode/unitldns.c +++ b/testcode/unitldns.c @@ -44,6 +44,7 @@ #include "sldns/sbuffer.h" #include "sldns/str2wire.h" #include "sldns/wire2str.h" +#include "sldns/parseutil.h" /** verbose this unit test */ static int vbmp = 0; @@ -220,9 +221,60 @@ rr_tests(void) SRCDIRSTR "/testdata/test_ldnsrr.c5"); } +/** test various base64 decoding options */ +static void +b64_test(void) +{ + /* "normal" b64 alphabet, with padding */ + char* p1 = "aGVsbG8="; /* "hello" */ + char* p2 = "aGVsbG8+"; /* "hello>" */ + char* p3 = "aGVsbG8/IQ=="; /* "hello?!" */ + char* p4 = "aGVsbG8"; /* "hel" + extra garbage */ + + /* base64 url, without padding */ + char* u1 = "aGVsbG8"; /* "hello" */ + char* u2 = "aGVsbG8-"; /* "hello>" */ + char* u3 = "aGVsbG8_IQ"; /* "hello?!" */ + char* u4 = "aaaaa"; /* garbage */ + + char target[128]; + size_t tarsize = 128; + int result; + + memset(target, 0, sizeof(target)); + result = sldns_b64_pton(p1, (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello") && strcmp(target, "hello") == 0); + memset(target, 0, sizeof(target)); + result = sldns_b64_pton(p2, (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello>") && strcmp(target, "hello>") == 0); + memset(target, 0, sizeof(target)); + result = sldns_b64_pton(p3, (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello?!") && strcmp(target, "hello?!") == 0); + memset(target, 0, sizeof(target)); + result = sldns_b64_pton(p4, (uint8_t*)target, tarsize); + /* when padding is used everything that is not a block of 4 will be + * ignored */ + unit_assert(result == strlen("hel") && strcmp(target, "hel") == 0); + + memset(target, 0, sizeof(target)); + result = sldns_b64url_pton(u1, strlen(u1), (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello") && strcmp(target, "hello") == 0); + memset(target, 0, sizeof(target)); + result = sldns_b64url_pton(u2, strlen(u2), (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello>") && strcmp(target, "hello>") == 0); + memset(target, 0, sizeof(target)); + result = sldns_b64url_pton(u3, strlen(u3), (uint8_t*)target, tarsize); + unit_assert(result == strlen("hello+/") && strcmp(target, "hello?!") == 0); + /* one item in block of four is not allowed */ + memset(target, 0, sizeof(target)); + result = sldns_b64url_pton(u4, strlen(u4), (uint8_t*)target, tarsize); + unit_assert(result == -1); +} + void ldns_test(void) { unit_show_feature("sldns"); rr_tests(); + b64_test(); } From 8175161059dadce2a3370bf29bef9cfb40f5e4fe Mon Sep 17 00:00:00 2001 From: Jeremie Courreges-Anglas Date: Sun, 10 May 2020 16:46:48 +0200 Subject: [PATCH 016/394] Ensure proper alignment of cmsg buffers The cmsg macros expect a control message buffer to be aligned like a struct cmsghdr. The current layout around those stack-allocated buffers probably provides the required alignment (usually 4 bytes). Use a union to enforce proper alignment, in case future changes modify the stack layout. Spotted when chasing an unrelated bug with Otto Moerbeek (@omoerbeek). --- util/netevent.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index f7bb9b897..159d344d6 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -447,7 +447,10 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, ssize_t sent; struct msghdr msg; struct iovec iov[1]; - char control[256]; + union { + struct cmsghdr hdr; + char buf[256]; + } control; #ifndef S_SPLINT_S struct cmsghdr *cmsg; #endif /* S_SPLINT_S */ @@ -465,9 +468,9 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, iov[0].iov_len = sldns_buffer_remaining(packet); msg.msg_iov = iov; msg.msg_iovlen = 1; - msg.msg_control = control; + msg.msg_control = control.buf; #ifndef S_SPLINT_S - msg.msg_controllen = sizeof(control); + msg.msg_controllen = sizeof(control.buf); #endif /* S_SPLINT_S */ msg.msg_flags = 0; @@ -584,7 +587,10 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) struct msghdr msg; struct iovec iov[1]; ssize_t rcv; - char ancil[256]; + union { + struct cmsghdr hdr; + char buf[256]; + } ancil; int i; #ifndef S_SPLINT_S struct cmsghdr* cmsg; @@ -608,9 +614,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) iov[0].iov_len = sldns_buffer_remaining(rep.c->buffer); msg.msg_iov = iov; msg.msg_iovlen = 1; - msg.msg_control = ancil; + msg.msg_control = ancil.buf; #ifndef S_SPLINT_S - msg.msg_controllen = sizeof(ancil); + msg.msg_controllen = sizeof(ancil.buf); #endif /* S_SPLINT_S */ msg.msg_flags = 0; rcv = recvmsg(fd, &msg, 0); From 8fc2320b5cadc491ea34f3073685579d70e7a8b5 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Tue, 12 May 2020 18:12:19 +0200 Subject: [PATCH 017/394] - Add mem.http.query_buffer and mem.http.response_buffer stats - Add configurable limits for http-query-buffer-size and http-response-buffer-size - Make http endpoint, max_streams, and TCP_NODELAY for HTTP sockets configurable. --- Makefile.in | 19 +- daemon/remote.c | 6 + daemon/stats.c | 4 + daemon/worker.c | 4 +- doc/unbound-control.8.in | 8 + libunbound/unbound.h | 4 + services/listen_dnsport.c | 227 +- services/listen_dnsport.h | 21 +- smallapp/unbound-control.c | 2 + testcode/fake_event.c | 16 +- util/config_file.c | 26 +- util/config_file.h | 19 +- util/configlexer.c | 4753 ++++++++++++++++++------------------ util/configlexer.lex | 7 +- util/configparser.c | 3444 +++++++++++++------------- util/configparser.h | 600 ++--- util/configparser.y | 68 +- util/netevent.c | 33 +- util/netevent.h | 12 +- 19 files changed, 4869 insertions(+), 4404 deletions(-) diff --git a/Makefile.in b/Makefile.in index 3a63c97be..f2b9ac76d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -904,7 +904,7 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ @@ -915,7 +915,15 @@ fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/ $(srcdir)/libunbound/worker.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h @@ -987,7 +995,7 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h + $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ @@ -997,7 +1005,7 @@ ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1160,7 +1168,8 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/parseutil.h unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ diff --git a/daemon/remote.c b/daemon/remote.c index 09f3ae88f..465665d6f 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -853,6 +853,12 @@ print_mem(RES* ssl, struct worker* worker, struct daemon* daemon, if(!print_longnum(ssl, "mem.streamwait"SQ, (size_t)s->svr.mem_stream_wait)) return 0; + if(!print_longnum(ssl, "mem.http.query_buffer"SQ, + (size_t)s->svr.mem_http2_query_buffer)) + return 0; + if(!print_longnum(ssl, "mem.http.response_buffer"SQ, + (size_t)s->svr.mem_http2_response_buffer)) + return 0; return 1; } diff --git a/daemon/stats.c b/daemon/stats.c index 2b88eb097..bb7b4232f 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -335,6 +335,10 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) } s->svr.mem_stream_wait = (long long)tcp_req_info_get_stream_buffer_size(); + s->svr.mem_http2_query_buffer = + (long long)http2_get_query_buffer_size(); + s->svr.mem_http2_response_buffer = + (long long)http2_get_response_buffer_size(); /* Set neg cache usage numbers */ set_neg_cache_stats(worker, &s->svr, reset); diff --git a/daemon/worker.c b/daemon/worker.c index f6043c3ae..e1d64bceb 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1797,8 +1797,8 @@ worker_init(struct worker* worker, struct config_file *cfg, cfg->do_tcp_keepalive ? cfg->tcp_keepalive_timeout : cfg->tcp_idle_timeout, - cfg->harden_large_queries, - worker->daemon->tcl, + cfg->harden_large_queries, cfg->http_max_streams, + cfg->http_endpoint, worker->daemon->tcl, worker->daemon->listen_sslctx, dtenv, worker_handle_request, worker); if(!worker->front) { diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 42eb8ea14..97972ff27 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -506,6 +506,14 @@ negative cache. Memory in bytes in used by the TCP and TLS stream wait buffers. These are answers waiting to be written back to the clients. .TP +.I mem.http.query_buffer +Memory in bytes used by the HTTP/2 query buffers. Containing (partial) DNS +queries waiting for request stream completion. +.TP +.I mem.http.response_buffer +Memory in bytes used by the HTTP/2 response buffers. Containing DNS responses +waiting to be written back to the clients. +.TP .I histogram...to.. Shows a histogram, summed over all threads. Every element counts the recursive queries whose reply time fit between the lower and upper bound. diff --git a/libunbound/unbound.h b/libunbound/unbound.h index 2fad02f2c..0f9d78c7c 100644 --- a/libunbound/unbound.h +++ b/libunbound/unbound.h @@ -788,6 +788,10 @@ struct ub_server_stats { long long num_query_subnet_cache; /** number of bytes in the stream wait buffers */ long long mem_stream_wait; + /** number of bytes in the HTTP2 query buffers */ + long long mem_http2_query_buffer; + /** number of bytes in the HTTP2 response buffers */ + long long mem_http2_response_buffer; /** number of TLS connection resume */ long long qtls_resume; /** RPZ action stats */ diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 656663b42..076cac646 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -80,11 +80,23 @@ #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ static lock_basic_type stream_wait_count_lock; +/** lock on the counter of HTTP2 query buffer memory */ +static lock_basic_type http2_query_buffer_count_lock; +/** lock on the counter of HTTP2 response buffer memory */ +static lock_basic_type http2_response_buffer_count_lock; #endif /** size (in bytes) of stream wait buffers */ static size_t stream_wait_count = 0; /** is the lock initialised for stream wait buffers */ static int stream_wait_lock_inited = 0; +/** size (in bytes) of HTTP2 query buffers */ +static size_t http2_query_buffer_count = 0; +/** is the lock initialised for HTTP2 query buffers */ +static int http2_query_buffer_lock_inited = 0; +/** size (in bytes) of HTTP2 response buffers */ +static size_t http2_response_buffer_count = 0; +/** is the lock initialised for HTTP2 response buffers */ +static int http2_response_buffer_lock_inited = 0; /** * Debug print of the getaddrinfo returned address. @@ -707,20 +719,6 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #else log_warn(" setsockopt(TCP_NODELAY) unsupported"); #endif /* defined(IPPROTO_TCP) && defined(TCP_NODELAY) */ -#if defined(IPPROTO_TCP) && defined(TCP_QUICKACK) - if(setsockopt(s, IPPROTO_TCP, TCP_QUICKACK, (void*)&on, - (socklen_t)sizeof(on)) < 0) { - #ifndef USE_WINSOCK - log_err(" setsockopt(.. TCP_QUICKACK ..) failed: %s", - strerror(errno)); - #else - log_err(" setsockopt(.. TCP_QUICKACK ..) failed: %s", - wsa_strerror(WSAGetLastError())); - #endif - } -#else - log_warn(" setsockopt(TCP_QUICKACK) unsupported"); -#endif /* defined(IPPROTO_TCP) && defined(TCP_QUICKACK) */ } if (mss > 0) { #if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) @@ -1251,6 +1249,7 @@ if_is_https(const char* ifname, const char* port, int https_port) * @param transparent: set IP_TRANSPARENT socket option. * @param tcp_mss: maximum segment size of tcp socket. default if zero. * @param freebind: set IP_FREEBIND socket option. + * @param http2_nodelay: set TCP_NODELAY on HTTP/2 connection * @param use_systemd: if true, fetch sockets from systemd. * @param dnscrypt_port: dnscrypt service port number * @param dscp: DSCP to use. @@ -1262,11 +1261,11 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, 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 use_systemd, int dnscrypt_port, int dscp) + int http2_nodelay, int use_systemd, int dnscrypt_port, int dscp) { int s, noip6=0; int is_https = if_is_https(ifname, port, https_port); - int nodelay = is_https; /* TODO make config option */ + int nodelay = is_https && http2_nodelay; #ifdef USE_DNSCRYPT int is_dnscrypt = ((strchr(ifname, '@') && atoi(strchr(ifname, '@')+1) == dnscrypt_port) || @@ -1384,7 +1383,8 @@ listen_cp_insert(struct comm_point* c, struct listen_dnsport* front) struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, - int harden_large_queries, struct tcl_list* tcp_conn_limit, void* sslctx, + int harden_large_queries, uint32_t http_max_streams, + char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg) { struct listen_dnsport* front = (struct listen_dnsport*) @@ -1404,6 +1404,14 @@ listen_create(struct comm_base* base, struct listen_port* ports, lock_basic_init(&stream_wait_count_lock); stream_wait_lock_inited = 1; } + if(!http2_query_buffer_lock_inited) { + lock_basic_init(&http2_query_buffer_count_lock); + http2_query_buffer_lock_inited = 1; + } + if(!http2_response_buffer_lock_inited) { + lock_basic_init(&http2_response_buffer_count_lock); + http2_response_buffer_lock_inited = 1; + } /* create comm points as needed */ while(ports) { @@ -1416,7 +1424,7 @@ listen_create(struct comm_base* base, struct listen_port* ports, ports->ftype == listen_type_tcp_dnscrypt) cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, - harden_large_queries, + harden_large_queries, 0, NULL, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg); else if(ports->ftype == listen_type_ssl || @@ -1424,6 +1432,7 @@ listen_create(struct comm_base* base, struct listen_port* ports, cp = comm_point_create_tcp(base, ports->fd, tcp_accept_count, tcp_idle_timeout, harden_large_queries, + http_max_streams, http_endpoint, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg); cp->ssl = sslctx; @@ -1518,6 +1527,14 @@ listen_delete(struct listen_dnsport* front) stream_wait_lock_inited = 0; lock_basic_destroy(&stream_wait_count_lock); } + if(http2_query_buffer_lock_inited) { + http2_query_buffer_lock_inited = 0; + lock_basic_destroy(&http2_query_buffer_count_lock); + } + if(http2_response_buffer_lock_inited) { + http2_response_buffer_lock_inited = 0; + lock_basic_destroy(&http2_response_buffer_count_lock); + } } struct listen_port* @@ -1558,9 +1575,9 @@ listening_ports_open(struct config_file* cfg, int* reuseport) &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, - cfg->https_port, - reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, cfg->dnscrypt_port, cfg->ip_dscp)) { listening_ports_free(list); return NULL; @@ -1573,9 +1590,9 @@ listening_ports_open(struct config_file* cfg, int* reuseport) &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, - cfg->https_port, - reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, cfg->dnscrypt_port, cfg->ip_dscp)) { listening_ports_free(list); return NULL; @@ -1590,9 +1607,9 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, - cfg->https_port, - reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, cfg->dnscrypt_port, cfg->ip_dscp)) { listening_ports_free(list); return NULL; @@ -1605,9 +1622,9 @@ listening_ports_open(struct config_file* cfg, int* reuseport) do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, - cfg->https_port, - reuseport, cfg->ip_transparent, - cfg->tcp_mss, cfg->ip_freebind, cfg->use_systemd, + cfg->https_port, reuseport, cfg->ip_transparent, + cfg->tcp_mss, cfg->ip_freebind, + cfg->http_nodelay, cfg->use_systemd, cfg->dnscrypt_port, cfg->ip_dscp)) { listening_ports_free(list); return NULL; @@ -2050,6 +2067,28 @@ size_t tcp_req_info_get_stream_buffer_size(void) return s; } +size_t http2_get_query_buffer_size(void) +{ + size_t s; + if(!http2_query_buffer_lock_inited) + return http2_query_buffer_count; + lock_basic_lock(&http2_query_buffer_count_lock); + s = http2_query_buffer_count; + lock_basic_unlock(&http2_query_buffer_count_lock); + return s; +} + +size_t http2_get_response_buffer_size(void) +{ + size_t s; + if(!http2_response_buffer_lock_inited) + return http2_response_buffer_count; + lock_basic_lock(&http2_response_buffer_count_lock); + s = http2_response_buffer_count; + lock_basic_unlock(&http2_response_buffer_count_lock); + return s; +} + #ifdef HAVE_NGHTTP2 /** nghttp2 callback. Used to copy response from rbuffer to nghttp2 session */ static ssize_t http2_submit_response_read_callback( @@ -2070,8 +2109,7 @@ static ssize_t http2_submit_response_read_callback( sldns_buffer_remaining(h2_stream->rbuffer) == 0) { verbose(VERB_QUERY, "http2: cannot submit buffer. No data " "available in rbuffer"); - sldns_buffer_free(h2_stream->rbuffer); - h2_stream->rbuffer = NULL; + /* rbuffer will be free'd in frame close cb */ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE; } @@ -2085,6 +2123,10 @@ static ssize_t http2_submit_response_read_callback( if(sldns_buffer_remaining(h2_stream->rbuffer) == 0) { *data_flags |= NGHTTP2_DATA_FLAG_EOF; + lock_basic_lock(&http2_response_buffer_count_lock); + http2_response_buffer_count -= + sldns_buffer_capacity(h2_stream->rbuffer); + lock_basic_unlock(&http2_response_buffer_count_lock); sldns_buffer_free(h2_stream->rbuffer); h2_stream->rbuffer = NULL; } @@ -2092,6 +2134,26 @@ static ssize_t http2_submit_response_read_callback( return copylen; } +/** + * Send RST_STREAM frame for stream. + * @param h2_session: http2 session to submit frame to + * @param h2_stream: http2 stream containing frame ID to use in RST_STREAM + * @return 0 on error, 1 otherwise + */ +static int http2_submit_rst_stream(struct http2_session* h2_session, + struct http2_stream* h2_stream) +{ + int ret = nghttp2_submit_rst_stream(h2_session->session, + NGHTTP2_FLAG_NONE, h2_stream->stream_id, + NGHTTP2_INTERNAL_ERROR); + if(ret) { + verbose(VERB_QUERY, "http2: nghttp2_submit_rst_stream failed, " + "error: %s", nghttp2_strerror(ret)); + return 0; + } + return 1; +} + /** * DNS response ready to be submitted to nghttp2, to be prepared for sending * out. Response is stored in c->buffer. Copy to rbuffer because the c->buffer @@ -2106,6 +2168,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) char status[4]; nghttp2_nv headers[2]; struct http2_stream* h2_stream = h2_session->c->h2_stream; + size_t rlen; if(h2_stream->rbuffer) { log_err("http2 submit response error: rbuffer already " @@ -2117,17 +2180,28 @@ int http2_submit_dns_response(struct http2_session* h2_session) return 0; } - if(!(h2_stream->rbuffer = sldns_buffer_new( - sldns_buffer_remaining(h2_session->c->buffer)))) { - log_err("http2 submit response error: malloc failure"); - return 0; - } - if(snprintf(status, 4, "%d", h2_stream->status) != 3) { verbose(VERB_QUERY, "http2: submit response error: " "invalid status"); return 0; } + + rlen = sldns_buffer_remaining(h2_session->c->buffer); + lock_basic_lock(&http2_response_buffer_count_lock); + if(http2_response_buffer_count + rlen > http2_response_buffer_max) { + lock_basic_unlock(&http2_response_buffer_count_lock); + verbose(VERB_ALGO, "reset HTTP2 stream, no space left, " + "in https-response-buffer-size"); + return http2_submit_rst_stream(h2_session, h2_stream); + } + if(!(h2_stream->rbuffer = sldns_buffer_new(rlen))) { + lock_basic_unlock(&http2_response_buffer_count_lock); + log_err("http2 submit response error: malloc failure"); + return 0; + } + http2_response_buffer_count += rlen; + lock_basic_unlock(&http2_response_buffer_count_lock); + headers[0].name = (uint8_t*)":status"; headers[0].namelen = 7; headers[0].value = (uint8_t*)status; @@ -2275,8 +2349,7 @@ static int http2_query_read_done(struct http2_session* h2_session, } if(sldns_buffer_remaining(h2_session->c->buffer) < sldns_buffer_remaining(h2_stream->qbuffer)) { - sldns_buffer_free(h2_stream->qbuffer); - h2_stream->qbuffer = NULL; + /* qbuffer will be free'd in frame close cb */ sldns_buffer_clear(h2_session->c->buffer); verbose(VERB_ALGO, "http2_query_read_done failure: can't fit " "qbuffer in c->buffer"); @@ -2287,6 +2360,9 @@ static int http2_query_read_done(struct http2_session* h2_session, sldns_buffer_current(h2_stream->qbuffer), sldns_buffer_remaining(h2_stream->qbuffer)); + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= sldns_buffer_capacity(h2_stream->qbuffer); + lock_basic_unlock(&http2_query_buffer_count_lock); sldns_buffer_free(h2_stream->qbuffer); h2_stream->qbuffer = NULL; @@ -2449,21 +2525,34 @@ static int http2_buffer_uri_query(struct http2_session* h2_session, expectb64len = sldns_b64_pton_calculate_size(length); log_assert(expectb64len > 0); if(expectb64len > - h2_session->c->http2_max_qbuffer_size) { + h2_session->c->http2_stream_max_qbuffer_size) { h2_stream->query_too_large = 1; return 1; } + lock_basic_lock(&http2_query_buffer_count_lock); + if(http2_query_buffer_count + expectb64len > http2_query_buffer_max) { + lock_basic_unlock(&http2_query_buffer_count_lock); + verbose(VERB_ALGO, "reset HTTP2 stream, no space left, " + "in http2-query-buffer-size"); + return http2_submit_rst_stream(h2_session, h2_stream); + } if(!(h2_stream->qbuffer = sldns_buffer_new(expectb64len))) { + lock_basic_unlock(&http2_query_buffer_count_lock); log_err("http2_req_header fail, qbuffer " "malloc failure"); return 0; } + http2_query_buffer_count += expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); if(!(b64len = sldns_b64url_pton( (char const *)start, length, sldns_buffer_current(h2_stream->qbuffer), expectb64len)) || b64len < 0) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); sldns_buffer_free(h2_stream->qbuffer); h2_stream->qbuffer = NULL; /* return without error, method can be an @@ -2518,6 +2607,10 @@ static int http2_req_header_cb(nghttp2_session* session, h2_stream->http_method = HTTP_METHOD_POST; if(h2_stream->qbuffer) { /* POST method uses query from DATA frames */ + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= + sldns_buffer_capacity(h2_stream->qbuffer); + lock_basic_unlock(&http2_query_buffer_count_lock); sldns_buffer_free(h2_stream->qbuffer); h2_stream->qbuffer = NULL; } @@ -2526,17 +2619,15 @@ static int http2_req_header_cb(nghttp2_session* session, return 0; } if(namelen == 5 && memcmp(":path", name, namelen) == 0) { - /* Hard coded /dns-query endpoint, might be nice to make - * configurable. - * :path may contain DNS query, depending on method. Method might + /* :path may contain DNS query, depending on method. Method might * not be known yet here, so check after finishing receiving * stream. */ -#define HTTP_ENDPOINT "/dns-query" #define HTTP_QUERY_PARAM "?dns=" - size_t el = sizeof(HTTP_ENDPOINT) - 1; + size_t el = strlen(h2_session->c->http_endpoint); size_t qpl = sizeof(HTTP_QUERY_PARAM) - 1; - if(valuelen < el || memcmp(HTTP_ENDPOINT, value, el) != 0) { + if(valuelen < el || memcmp(h2_session->c->http_endpoint, + value, el) != 0) { h2_stream->invalid_endpoint = 1; return 0; } @@ -2583,7 +2674,7 @@ static int http2_req_header_cb(nghttp2_session* session, /* guaranteed to only contian digits and be null terminated */ h2_stream->content_length = atoi((const char*)value); if(h2_stream->content_length > - h2_session->c->http2_max_qbuffer_size) { + h2_session->c->http2_stream_max_qbuffer_size) { h2_stream->query_too_large = 1; return 0; } @@ -2599,6 +2690,7 @@ static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), { struct http2_session* h2_session = (struct http2_session*)cb_arg; struct http2_stream* h2_stream; + size_t qlen = 0; if(!(h2_stream = nghttp2_session_get_stream_user_data( h2_session->session, stream_id))) { @@ -2614,17 +2706,28 @@ static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), /* getting more data in DATA frame than * advertised in content-length header. */ return NGHTTP2_ERR_CALLBACK_FAILURE; - h2_stream->qbuffer = sldns_buffer_new( - h2_stream->content_length); - } else if(len <= h2_session->c->http2_max_qbuffer_size) { + qlen = h2_stream->content_length; + } else if(len <= h2_session->c->http2_stream_max_qbuffer_size) { /* setting this to msg-buffer-size can result in a lot * of memory consuption. Most queries should fit in a * single DATA frame, and most POST queries will * containt content-length which does not impose this * limit. */ - h2_stream->qbuffer = sldns_buffer_new(len); + qlen = len; } } + if(!h2_stream->qbuffer && qlen) { + lock_basic_lock(&http2_query_buffer_count_lock); + if(http2_query_buffer_count + qlen > http2_query_buffer_max) { + lock_basic_unlock(&http2_query_buffer_count_lock); + verbose(VERB_ALGO, "reset HTTP2 stream, no space left, " + "in http2-query-buffer-size"); + return http2_submit_rst_stream(h2_session, h2_stream); + } + if((h2_stream->qbuffer = sldns_buffer_new(qlen))) + http2_query_buffer_count += qlen; + lock_basic_unlock(&http2_query_buffer_count_lock); + } if(!h2_stream->qbuffer || sldns_buffer_remaining(h2_stream->qbuffer) < len) { @@ -2640,6 +2743,26 @@ static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), return 0; } +void http2_req_stream_clear(struct http2_stream* h2_stream) +{ + if(h2_stream->qbuffer) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= + sldns_buffer_capacity(h2_stream->qbuffer); + lock_basic_unlock(&http2_query_buffer_count_lock); + sldns_buffer_free(h2_stream->qbuffer); + h2_stream->qbuffer = NULL; + } + if(h2_stream->rbuffer) { + lock_basic_lock(&http2_response_buffer_count_lock); + http2_response_buffer_count -= + sldns_buffer_capacity(h2_stream->rbuffer); + lock_basic_unlock(&http2_response_buffer_count_lock); + sldns_buffer_free(h2_stream->rbuffer); + h2_stream->rbuffer = NULL; + } +} + nghttp2_session_callbacks* http2_req_callbacks_create() { nghttp2_session_callbacks *callbacks; diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 603b1388d..0b1d90f33 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -144,6 +144,8 @@ void listening_ports_free(struct listen_port* list); * from clients. * @param tcp_idle_timeout: idle timeout for TCP connections in msec. * @param harden_large_queries: whether query size should be limited. + * @param http_max_streams: maximum number of HTTP/2 streams per connection. + * @param http_endpoint: HTTP endpoint to service queries on * @param tcp_conn_limit: TCP connection limit info. * @param sslctx: nonNULL if ssl context. * @param dtenv: nonNULL if dnstap enabled. @@ -152,11 +154,12 @@ void listening_ports_free(struct listen_port* list); * @param cb_arg: user data argument for callback function. * @return: the malloced listening structure, ready for use. NULL on error. */ -struct listen_dnsport* listen_create(struct comm_base* base, - struct listen_port* ports, size_t bufsize, - int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, - struct tcl_list* tcp_conn_limit, void* sslctx, - struct dt_env *dtenv, comm_point_callback_type* cb, void* cb_arg); +struct listen_dnsport* +listen_create(struct comm_base* base, struct listen_port* ports, + size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, + int harden_large_queries, uint32_t http_max_streams, + char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, + struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg); /** * delete the listening structure @@ -376,6 +379,11 @@ int tcp_req_info_handle_read_close(struct tcp_req_info* req); /** get the size of currently used tcp stream wait buffers (in bytes) */ size_t tcp_req_info_get_stream_buffer_size(void); +/** get the size of currently used HTTP2 query buffers (in bytes) */ +size_t http2_get_query_buffer_size(void); +/** get the size of currently used HTTP2 response buffers (in bytes) */ +size_t http2_get_response_buffer_size(void); + #ifdef HAVE_NGHTTP2 /** * Create nghttp2 callbacks to handle HTTP2 requests. @@ -383,6 +391,9 @@ size_t tcp_req_info_get_stream_buffer_size(void); */ nghttp2_session_callbacks* http2_req_callbacks_create(); +/** Free http2 stream buffers and decrease buffer counters */ +void http2_req_stream_clear(struct http2_stream* h2_stream); + /** * DNS response ready to be submitted to nghttp2, to be prepared for sending * out. Response is stored in c->buffer. Copy to rbuffer because the c->buffer diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index ee5e44d2f..597744758 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -275,6 +275,8 @@ static void print_mem(struct ub_shm_stat_info* shm_stat, shm_stat->mem.dnscrypt_nonce); #endif PR_LL("mem.streamwait", s->svr.mem_stream_wait); + PR_LL("mem.http.query_buffer", s->svr.mem_http2_query_buffer); + PR_LL("mem.http.response_buffer", s->svr.mem_http2_response_buffer); } /** print histogram */ diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 3bdfa343c..d2d5bbe5c 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -869,9 +869,11 @@ listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), size_t bufsize, int ATTR_UNUSED(tcp_accept_count), int ATTR_UNUSED(tcp_idle_timeout), int ATTR_UNUSED(harden_large_queries), + uint32_t ATTR_UNUSED(http_max_streams), + char* ATTR_UNUSED(http_endpoint), struct tcl_list* ATTR_UNUSED(tcp_conn_limit), void* ATTR_UNUSED(sslctx), struct dt_env* ATTR_UNUSED(dtenv), - comm_point_callback_type* cb, void* cb_arg) + comm_point_callback_type* cb, void *cb_arg) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct listen_dnsport* l= calloc(1, sizeof(struct listen_dnsport)); @@ -1826,6 +1828,18 @@ tcp_req_info_get_stream_buffer_size(void) return 0; } +size_t +http2_get_query_buffer_size(void) +{ + return 0; +} + +size_t +http2_get_response_buffer_size(void) +{ + return 0; +} + void http2_stream_add_meshstate(struct http2_stream* ATTR_UNUSED(h2_stream), struct mesh_area* ATTR_UNUSED(mesh), struct mesh_state* ATTR_UNUSED(m)) { diff --git a/util/config_file.c b/util/config_file.c index 1406158c8..3ec25d196 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -78,6 +78,8 @@ gid_t cfg_gid = (gid_t)-1; int autr_permit_small_holddown = 0; /** size (in bytes) of stream wait buffers max */ size_t stream_wait_max = 4 * 1024 * 1024; +size_t http2_query_buffer_max = 4 * 1024 * 1024; +size_t http2_response_buffer_max = 4 * 1024 * 1024; /** global config during parsing */ struct config_parser_state* cfg_parser = 0; @@ -116,8 +118,13 @@ config_create(void) cfg->ssl_upstream = 0; cfg->tls_cert_bundle = NULL; cfg->tls_win_cert = 0; - cfg->https_port = UNBOUND_DNS_OVER_HTTPS_PORT; cfg->tls_use_sni = 1; + cfg->https_port = UNBOUND_DNS_OVER_HTTPS_PORT; + if(!(cfg->http_endpoint = strdup("/dns-query"))) goto error_exit; + cfg->http_max_streams = 100; + cfg->http_query_buffer_size = 4*1024*1024; + cfg->http_response_buffer_size = 4*1024*1024; + cfg->http_nodelay = 1; cfg->use_syslog = 1; cfg->log_identity = NULL; /* changed later with argv[0] */ cfg->log_time_ascii = 0; @@ -509,8 +516,13 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STRLIST_APPEND("tls-session-ticket-keys:", tls_session_ticket_keys) else S_STR("tls-ciphers:", tls_ciphers) else S_STR("tls-ciphersuites:", tls_ciphersuites) - else S_NUMBER_NONZERO("https-port:", https_port) else S_YNO("tls-use-sni:", tls_use_sni) + else S_NUMBER_NONZERO("https-port:", https_port) + else S_STR("http-endpoint", http_endpoint) + else S_NUMBER_NONZERO("http-max-streams", http_max_streams) + else S_MEMSIZE("http-query-buffer-size", http_query_buffer_size) + else S_MEMSIZE("http-response-buffer-size", http_response_buffer_size) + else S_YNO("http-nodelay", http_nodelay) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) @@ -965,8 +977,13 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LST(opt, "tls-session-ticket-keys", tls_session_ticket_keys.first) else O_STR(opt, "tls-ciphers", tls_ciphers) else O_STR(opt, "tls-ciphersuites", tls_ciphersuites) - else O_DEC(opt, "https-port", https_port) else O_YNO(opt, "tls-use-sni", tls_use_sni) + else O_DEC(opt, "https-port", https_port) + else O_STR(opt, "http-endpoint", http_endpoint) + else O_UNS(opt, "http-max-streams", http_max_streams) + else O_MEM(opt, "http-query-buffer-size", http_query_buffer_size) + else O_MEM(opt, "http-response-buffer-size", http_response_buffer_size) + else O_YNO(opt, "http-nodelay", http_nodelay) else O_YNO(opt, "use-systemd", use_systemd) else O_YNO(opt, "do-daemonize", do_daemonize) else O_STR(opt, "chroot", chrootdir) @@ -1431,6 +1448,7 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->tls_session_ticket_keys.first); free(cfg->tls_ciphers); free(cfg->tls_ciphersuites); + free(cfg->http_endpoint); if(cfg->log_identity) { log_ident_revert_to_default(); free(cfg->log_identity); @@ -2039,6 +2057,8 @@ config_apply(struct config_file* config) log_set_time_asc(config->log_time_ascii); autr_permit_small_holddown = config->permit_small_holddown; stream_wait_max = config->stream_wait_size; + http2_query_buffer_max = config->http_query_buffer_size; + http2_response_buffer_max = config->http_response_buffer_size; } void config_lookup_uid(struct config_file* cfg) diff --git a/util/config_file.h b/util/config_file.h index 24d3e4dc1..b6282de80 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -128,11 +128,22 @@ struct config_file { char* tls_ciphers; /** TLS chiphersuites (TLSv1.3) */ char* tls_ciphersuites; - /** port on which to provide DNS over HTTPS service */ - int https_port; /** if SNI is to be used */ int tls_use_sni; + /** port on which to provide DNS over HTTPS service */ + int https_port; + /** endpoint for HTTP service */ + char* http_endpoint; + /** MAX_CONCURRENT_STREAMS HTTP/2 setting */ + uint32_t http_max_streams; + /** maximum size of all HTTP2 query buffers combined. */ + size_t http_query_buffer_size; + /** maximum size of all HTTP2 response buffers combined. */ + size_t http_response_buffer_size; + /** set TCP_NODELAY option for http sockets */ + int http_nodelay; + /** outgoing port range number of ports (per thread) */ int outgoing_num_ports; /** number of outgoing tcp buffers per (per thread) */ @@ -622,6 +633,10 @@ extern gid_t cfg_gid; extern int autr_permit_small_holddown; /** size (in bytes) of stream wait buffers max */ extern size_t stream_wait_max; +/** size (in bytes) of all total HTTP2 query buffers max */ +extern size_t http2_query_buffer_max; +/** size (in bytes) of all total HTTP2 response buffers max */ +extern size_t http2_response_buffer_max; /** * Stub config options diff --git a/util/configlexer.c b/util/configlexer.c index c6cadaa8b..776e93f64 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 313 -#define YY_END_OF_BUFFER 314 +#define YY_NUM_RULES 318 +#define YY_END_OF_BUFFER 319 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,346 +363,354 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3081] = +static const flex_int16_t yy_accept[3150] = { 0, - 1, 1, 295, 295, 299, 299, 303, 303, 307, 307, - 1, 1, 314, 311, 1, 293, 293, 312, 2, 312, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 295, 296, 296, 297, 312, 299, 300, 300, - 301, 312, 306, 303, 304, 304, 305, 312, 307, 308, - 308, 309, 312, 310, 294, 2, 298, 312, 310, 311, - 0, 1, 2, 2, 2, 2, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 1, 1, 300, 300, 304, 304, 308, 308, 312, 312, + 1, 1, 319, 316, 1, 298, 298, 317, 2, 317, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 300, 301, 301, 302, 317, 304, 305, 305, + 306, 317, 311, 308, 309, 309, 310, 317, 312, 313, + 313, 314, 317, 315, 299, 2, 303, 317, 315, 316, + 0, 1, 2, 2, 2, 2, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 295, 0, 299, 0, 306, 0, 303, 307, 0, - 310, 0, 2, 2, 310, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 300, 0, 304, 0, 311, 0, 308, 312, 0, + 315, 0, 2, 2, 315, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 310, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 315, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 116, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 124, - 311, 311, 311, 311, 311, 311, 311, 310, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 121, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 129, + 316, 316, 316, 316, 316, 316, 316, 315, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 100, 311, 311, 311, 311, 311, - 311, 8, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 117, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 105, 316, 316, 316, 316, + 316, 316, 8, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 122, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 129, 311, 310, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 288, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 134, 316, 315, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 293, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 310, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 58, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 226, 311, 14, 15, 311, 19, 18, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 315, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 63, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 231, 316, 14, 15, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 123, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 210, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 3, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 19, 18, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 128, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 215, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 3, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 310, 311, 311, 311, - 311, 311, 311, 311, 282, 311, 311, 281, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 302, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 315, 316, 316, + 316, 316, 316, 316, 316, 287, 316, 316, 286, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 57, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 61, - 311, 256, 311, 311, 311, 311, 311, 311, 311, 311, - 289, 290, 311, 311, 311, 311, 311, 62, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 120, 311, 311, 311, 311, 311, - 311, 311, 311, 199, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 21, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 307, 316, 316, 316, 316, 316, 316, 316, 62, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 66, 316, 261, 316, 316, + 316, 316, 316, 316, 316, 316, 294, 295, 316, 316, + 316, 316, 316, 67, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 125, 316, 316, 316, 316, 316, 316, 316, 316, 204, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 148, 311, 311, 302, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 98, 311, 311, - 311, 311, 311, 311, 311, 264, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 171, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 147, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 21, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 153, + 316, 316, 307, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 103, 316, 316, 316, 316, 316, 316, + 316, 269, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 176, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 97, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 32, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 33, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 59, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 122, 311, + 316, 316, 316, 316, 316, 152, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 102, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 32, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 33, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 115, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 60, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 229, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 172, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 48, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 64, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 127, + 316, 316, 316, 316, 316, 120, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 65, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 234, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 177, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 53, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 247, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 52, 311, 53, 311, 311, 311, 311, 311, - 101, 311, 102, 311, 311, 311, 311, 99, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 7, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 252, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 57, 316, + 58, 316, 316, 316, 316, 316, 106, 316, 107, 316, + 316, 316, 316, 104, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 219, 311, 311, 311, 311, - 150, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 230, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 44, 311, 311, 311, 311, - 311, 311, 311, 49, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 191, 311, 190, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 7, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 224, 316, 316, 316, 316, 155, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 235, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 45, 316, 316, 316, + 316, 316, 316, 316, 54, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 16, 17, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 63, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 198, 311, 311, 311, 311, 311, 311, - 104, 311, 103, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 182, 311, 311, 311, 311, 311, - 311, 311, 311, 130, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 82, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 196, 316, + 195, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 16, 17, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 68, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 203, 316, 316, 316, 316, 316, + 316, 109, 316, 108, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 187, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 86, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 56, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 185, 186, 311, - 311, 311, 258, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 6, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 135, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 87, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 91, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 61, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 262, 311, 311, - 311, 311, 311, 311, 283, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 42, 311, 311, 311, 311, - 45, 311, 311, 311, 311, 311, 311, 311, 311, 46, - 311, 311, 311, 311, 311, 311, 311, 311, 178, 311, - 311, 311, 125, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 203, 311, 179, 311, 311, 311, 216, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 47, + 316, 316, 316, 190, 191, 316, 316, 316, 263, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 6, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 267, 316, 316, 316, 316, 316, 316, + 288, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 42, 316, 316, 316, 316, 44, 316, 316, 316, + 316, 316, 316, 316, 316, 51, 316, 316, 316, 316, + 316, 316, 316, 316, 183, 316, 316, 316, 130, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 127, - 109, 311, 110, 311, 311, 311, 108, 311, 311, 311, - 311, 311, 311, 311, 311, 145, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 246, 311, 311, - 311, 311, 311, 311, 311, 311, 180, 311, 311, 311, - 311, 311, 183, 311, 189, 311, 311, 311, 311, 311, - 215, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 96, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 121, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 208, + 316, 184, 316, 316, 316, 221, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 52, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 132, 114, 316, 115, 316, + 316, 316, 113, 316, 316, 316, 316, 316, 316, 316, + 316, 150, 316, 316, 50, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 251, 316, + 316, 316, 316, 316, 316, 316, 316, 185, 316, 316, + 316, 316, 316, 188, 316, 194, 316, 316, 316, 316, - 311, 54, 311, 311, 311, 26, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 20, 311, 311, 311, 311, - 311, 311, 27, 36, 311, 155, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 71, 73, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 266, 311, 311, 311, 227, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 111, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 144, 311, 311, 311, + 316, 220, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 101, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 126, 316, 316, 316, 316, + 316, 316, 59, 316, 316, 316, 26, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 20, 316, 316, 316, + 316, 316, 316, 27, 36, 316, 160, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 76, 78, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 277, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 149, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 209, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 286, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 166, 311, 311, - 311, 311, 311, 311, 311, 311, 105, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 161, 311, 173, 311, + 316, 271, 316, 316, 316, 232, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 116, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 149, 316, 46, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 282, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 154, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 214, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 311, 311, 311, 133, 311, 311, 311, 311, 311, - 92, 311, 311, 311, 311, 201, 311, 311, 311, 311, - 311, 311, 217, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 238, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 126, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 165, - 311, 311, 311, 311, 311, 74, 75, 311, 311, 311, - 311, 311, 55, 311, 311, 311, 311, 311, 81, 174, - 311, 192, 311, 220, 311, 311, 184, 259, 311, 311, - 311, 311, 311, 67, 311, 176, 311, 311, 311, 311, + 291, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 171, 316, 316, 316, 316, 316, 316, 316, + 316, 110, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 166, 316, 178, 316, 316, 316, 316, 316, 138, + 316, 316, 316, 316, 316, 97, 316, 316, 316, 316, + 206, 316, 316, 316, 316, 316, 316, 222, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 243, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 131, 316, 316, 316, 316, 316, 316, - 311, 9, 311, 311, 311, 95, 311, 311, 311, 311, - 251, 311, 311, 311, 311, 200, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 164, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 151, 311, 265, 311, - 311, 311, 311, 237, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 211, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 170, 316, 316, + 316, 316, 316, 79, 80, 316, 316, 316, 316, 316, + 60, 316, 316, 316, 316, 316, 86, 179, 316, 197, + 316, 225, 316, 316, 189, 264, 316, 316, 316, 316, + 316, 72, 316, 181, 316, 316, 316, 316, 316, 9, + 316, 316, 316, 100, 316, 316, 316, 316, 256, 316, + 316, 316, 316, 205, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 257, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 280, 311, 175, 311, 311, - 311, 311, 311, 311, 311, 66, 68, 311, 311, 311, - 311, 311, 311, 311, 94, 311, 311, 311, 311, 249, - 311, 311, 311, 311, 261, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 205, 34, 28, 30, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 35, - 311, 29, 31, 311, 311, 311, 311, 311, 311, 311, - 311, 91, 311, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 169, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 156, 316, 270, 316, 316, 316, + 316, 242, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 216, 316, 316, 316, 316, 262, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 285, 316, 180, 316, + 316, 316, 316, 316, 316, 316, 71, 73, 316, 316, + 316, 316, 316, 316, 316, 99, 316, 316, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 207, - 204, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 65, 311, - 311, 128, 311, 112, 311, 311, 311, 311, 311, 311, - 311, 311, 146, 13, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 275, 311, 278, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 12, 311, 311, 22, - 311, 311, 311, 255, 311, 311, 311, 311, 263, 311, - 311, 311, 69, 311, 213, 311, 311, 311, 311, 206, - 311, 311, 64, 311, 311, 311, 311, 23, 311, 43, + 254, 316, 316, 316, 316, 266, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 210, 34, 28, + 30, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 35, 316, 29, 31, 316, 316, 316, 316, 316, 316, + 316, 316, 96, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 212, 209, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 70, + 316, 316, 133, 316, 117, 316, 316, 316, 316, 316, + 316, 316, 316, 151, 47, 316, 316, 13, 316, 316, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 160, 159, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 208, 202, 311, 218, 311, 311, 267, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 76, 311, 311, - 311, 250, 311, 311, 311, 311, 188, 311, 311, 311, - 311, 212, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 284, 285, 157, 311, 311, 70, 311, 311, 311, - 311, 167, 311, 311, 106, 107, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 316, 280, 316, 283, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 12, 316, 316, 22, 316, 316, 316, 260, 316, 316, + 316, 316, 268, 316, 316, 316, 74, 316, 218, 316, + 316, 316, 316, 211, 316, 316, 69, 316, 316, 316, + 316, 23, 316, 43, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 165, 164, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 213, 207, 316, + 223, 316, 316, 272, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 152, 311, 154, 311, 193, 311, 311, 311, 311, 158, - 311, 311, 221, 311, 311, 311, 311, 311, 311, 311, - 135, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 228, 311, 311, 311, 311, 311, 311, 311, - 24, 311, 260, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 194, 311, 311, 248, 311, 279, - 311, 187, 311, 311, 311, 311, 50, 311, 311, 311, - 311, 4, 311, 311, 311, 311, 119, 134, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 224, 37, 38, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 81, 316, 316, 316, 255, 316, 316, + 316, 316, 193, 316, 316, 316, 316, 217, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 289, 290, 162, + 316, 316, 75, 316, 316, 316, 316, 172, 316, 316, + 111, 112, 316, 316, 316, 316, 157, 316, 159, 316, + 198, 316, 316, 316, 316, 163, 316, 316, 226, 316, + 316, 316, 316, 316, 316, 316, 140, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 233, 316, + 316, 316, 316, 316, 316, 316, 24, 316, 265, 316, - 311, 311, 311, 311, 311, 311, 268, 311, 311, 311, - 311, 311, 311, 236, 311, 311, 311, 311, 311, 311, - 311, 197, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 79, 311, 51, 254, 311, 225, 311, 311, 311, - 311, 11, 311, 311, 311, 311, 311, 311, 118, 311, - 311, 311, 311, 195, 83, 311, 40, 311, 311, 311, - 311, 311, 311, 311, 311, 163, 311, 311, 311, 311, - 311, 137, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 235, 311, 311, 311, 311, 131, 311, 311, 113, - 114, 311, 311, 311, 85, 89, 84, 311, 77, 311, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 199, 316, 316, 253, 316, 284, 316, 192, + 316, 316, 316, 316, 55, 316, 316, 316, 316, 4, + 316, 316, 316, 316, 124, 139, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 229, 37, 38, 316, 316, 316, + 316, 316, 316, 316, 273, 316, 316, 316, 316, 316, + 316, 241, 316, 316, 316, 316, 316, 316, 316, 202, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 84, 316, 56, 259, 316, 230, 316, 316, 316, - 311, 311, 311, 311, 10, 311, 311, 311, 252, 287, - 311, 311, 311, 311, 292, 39, 311, 311, 311, 311, - 311, 162, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 90, 88, 311, 78, 276, 311, - 311, 311, 311, 311, 311, 311, 181, 311, 311, 311, - 311, 311, 196, 311, 311, 311, 311, 311, 311, 311, - 311, 153, 72, 311, 311, 311, 311, 311, 269, 311, - 311, 311, 311, 311, 311, 311, 232, 311, 311, 231, - 132, 311, 87, 138, 139, 142, 143, 140, 141, 80, + 316, 11, 316, 316, 316, 316, 316, 316, 123, 316, + 316, 316, 316, 200, 88, 316, 40, 316, 316, 316, + 316, 316, 316, 316, 316, 168, 316, 316, 316, 316, + 316, 142, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 240, 316, 316, 316, 316, 136, 316, 316, 118, + 119, 316, 316, 316, 90, 94, 89, 316, 316, 316, + 82, 316, 316, 316, 316, 316, 10, 316, 316, 316, + 257, 292, 316, 316, 316, 316, 297, 39, 316, 316, + 316, 316, 316, 167, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, - 311, 253, 311, 311, 311, 311, 156, 311, 311, 311, - 311, 311, 223, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 169, 168, 41, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 93, 311, 222, - 311, 245, 273, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 5, 311, 311, 214, 311, - 311, 274, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 233, 25, 311, 311, 311, 311, 311, 311, 311, + 316, 316, 316, 316, 316, 316, 95, 93, 316, 316, + 316, 83, 281, 316, 316, 316, 316, 316, 316, 316, + 186, 316, 316, 316, 316, 316, 201, 316, 316, 316, + 316, 316, 316, 316, 316, 158, 77, 316, 316, 316, + 316, 316, 274, 316, 316, 316, 316, 316, 316, 316, + 237, 316, 316, 236, 137, 316, 92, 48, 316, 143, + 144, 147, 148, 145, 146, 85, 316, 258, 316, 316, + 316, 316, 161, 316, 316, 316, 316, 316, 228, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 174, 173, 41, - 311, 311, 311, 311, 311, 234, 311, 311, 311, 136, - 311, 311, 311, 311, 311, 311, 311, 311, 170, 311, - 177, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 270, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 291, 311, - 311, 241, 311, 311, 311, 311, 311, 271, 311, 311, - 311, 311, 311, 311, 272, 311, 311, 311, 239, 311, - 242, 243, 311, 311, 311, 311, 311, 240, 244, 0 + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 98, 316, 227, 316, 250, + 278, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 49, 5, 316, 316, 219, 316, 316, + 279, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 238, 25, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 239, 316, 316, 316, 141, 316, + 316, 316, 316, 316, 316, 316, 316, 175, 316, 182, + 316, 316, 316, 316, 316, 316, 316, 316, 316, 275, + + 316, 316, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 316, 316, 316, 316, 316, 296, 316, 316, + 246, 316, 316, 316, 316, 316, 276, 316, 316, 316, + 316, 316, 316, 277, 316, 316, 316, 244, 316, 247, + 248, 316, 316, 316, 316, 316, 245, 249, 0 } ; static const YY_CHAR yy_ec[256] = @@ -745,15 +753,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3095] = +static const flex_int16_t yy_base[3164] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2247, 2197, 81, 6009, 6009, 6009, 96, 52, + 90, 112, 2455, 2233, 81, 6134, 6134, 6134, 96, 52, 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, 76, 144, 141, 114, 151, 124, 167, 173, 186, 161, - 190, 117, 1869, 6009, 6009, 6009, 107, 1639, 6009, 6009, - 6009, 162, 1581, 1486, 6009, 6009, 6009, 212, 1444, 6009, - 6009, 6009, 167, 1373, 6009, 218, 6009, 222, 134, 1256, + 190, 117, 2110, 6134, 6134, 6134, 107, 1933, 6134, 6134, + 6134, 162, 1672, 1627, 6134, 6134, 6134, 212, 1563, 6134, + 6134, 6134, 167, 1102, 6134, 218, 6134, 222, 134, 856, 226, 182, 0, 233, 0, 0, 194, 227, 85, 184, 220, 234, 235, 136, 230, 222, 241, 242, 207, 243, 250, 245, 228, 246, 249, 252, 264, 254, 266, 269, @@ -762,7 +770,7 @@ static const flex_int16_t yy_base[3095] = 290, 293, 296, 299, 303, 301, 309, 308, 311, 313, 321, 315, 320, 322, 324, 323, 332, 331, 344, 348, 335, 337, 329, 347, 357, 349, 353, 352, 354, 369, - 367, 1200, 380, 1091, 383, 782, 394, 612, 508, 387, + 367, 821, 380, 731, 383, 656, 394, 612, 508, 387, 339, 398, 402, 0, 394, 396, 404, 399, 360, 400, 403, 410, 405, 406, 407, 409, 411, 422, 419, 425, 426, 434, 433, 437, 438, 435, 440, 442, 443, 432, @@ -777,665 +785,679 @@ static const flex_int16_t yy_base[3095] = 597, 605, 615, 612, 613, 625, 614, 610, 621, 622, 623, 601, 633, 632, 628, 637, 643, 634, 641, 644, 646, 648, 647, 649, 651, 661, 654, 664, 657, 671, - 666, 672, 669, 681, 667, 656, 677, 678, 679, 682, - 685, 680, 689, 684, 690, 696, 691, 701, 694, 711, + 666, 672, 669, 681, 682, 677, 667, 678, 679, 683, + 686, 680, 690, 688, 691, 695, 693, 700, 702, 710, - 707, 700, 722, 714, 702, 713, 724, 716, 715, 725, - 730, 744, 746, 735, 736, 717, 747, 754, 757, 758, - 748, 760, 761, 750, 764, 766, 774, 775, 6009, 770, - 767, 777, 780, 783, 786, 779, 792, 796, 797, 806, - 802, 799, 807, 829, 803, 812, 809, 819, 817, 6009, - 818, 822, 853, 825, 826, 844, 841, 839, 827, 842, - 849, 851, 877, 854, 859, 861, 882, 862, 863, 864, - 866, 873, 874, 893, 814, 888, 890, 891, 898, 894, - 895, 896, 906, 897, 899, 900, 907, 910, 909, 914, - 922, 920, 925, 926, 927, 924, 928, 935, 932, 931, + 705, 706, 721, 713, 716, 712, 723, 724, 719, 725, + 743, 748, 749, 736, 735, 751, 754, 758, 759, 761, + 755, 766, 765, 767, 768, 769, 778, 773, 6134, 775, + 782, 789, 791, 792, 799, 715, 790, 798, 779, 800, + 813, 805, 814, 836, 781, 808, 815, 816, 818, 6134, + 819, 820, 860, 825, 824, 847, 842, 828, 826, 843, + 844, 850, 867, 851, 864, 854, 886, 865, 871, 873, + 866, 878, 870, 895, 896, 882, 887, 892, 900, 898, + 901, 903, 907, 909, 910, 911, 914, 913, 912, 918, + 919, 921, 924, 925, 930, 931, 934, 944, 938, 942, - 943, 944, 952, 934, 951, 954, 956, 960, 949, 961, - 963, 967, 968, 964, 970, 978, 975, 974, 980, 981, - 982, 983, 985, 988, 991, 990, 993, 994, 995, 999, - 1005, 1003, 1011, 1004, 6009, 1013, 1006, 1015, 1016, 1017, - 1018, 6009, 1020, 1019, 1021, 1028, 1032, 1042, 1029, 1031, - 1043, 1044, 1046, 1033, 1055, 1050, 1053, 1058, 1057, 1059, - 1061, 1063, 1062, 1067, 1065, 1068, 1069, 1074, 1075, 1094, - 6009, 1077, 1081, 1078, 1079, 1087, 1086, 1106, 1089, 1107, - 1105, 1092, 1122, 1109, 1123, 1117, 1099, 1128, 1118, 1130, - 1132, 1133, 1134, 1135, 1136, 1137, 1139, 1138, 1141, 1144, + 947, 946, 955, 959, 960, 963, 966, 965, 967, 971, + 935, 973, 975, 977, 976, 978, 990, 983, 980, 985, + 988, 992, 998, 996, 994, 1000, 1001, 1002, 1011, 1004, + 1009, 1012, 1003, 1019, 1021, 6134, 1022, 1025, 1026, 1027, + 1028, 1029, 6134, 1031, 1030, 1033, 1038, 1035, 1045, 1037, + 1040, 1052, 1053, 1055, 1057, 1064, 1059, 1062, 1067, 1066, + 1068, 1070, 1074, 1071, 1076, 1078, 1077, 1083, 1084, 1087, + 1104, 6134, 1086, 1094, 1097, 1088, 1098, 1111, 1108, 1116, + 1091, 1119, 1125, 1127, 1126, 1133, 1122, 1128, 1089, 1129, + 1139, 1137, 1141, 1143, 1144, 1146, 1150, 1147, 1151, 1149, - 6009, 1146, 1159, 1166, 1152, 1153, 1151, 1161, 1162, 1165, - 1167, 1169, 1172, 1173, 1179, 1186, 1176, 1190, 1185, 1189, - 1187, 1191, 1193, 1196, 1194, 1195, 1208, 1204, 1215, 1219, - 1222, 1221, 1224, 1231, 1205, 1209, 1227, 1228, 1229, 1230, - 1234, 1235, 1236, 1238, 1246, 1241, 1243, 1244, 1248, 1250, - 1257, 1254, 1252, 1260, 1253, 1273, 1262, 1265, 1277, 1278, - 1275, 1269, 6009, 1285, 1267, 1287, 1288, 1286, 1293, 1294, - 1295, 1297, 1298, 1300, 1301, 1302, 1304, 1307, 1308, 1309, - 1310, 1312, 1323, 1320, 1318, 1331, 1330, 1332, 1334, 1335, - 1342, 1338, 1345, 1341, 1346, 1354, 1347, 1350, 1356, 1364, + 1159, 6134, 1157, 1167, 1175, 1160, 1161, 1162, 1173, 1174, + 1177, 1178, 1179, 1183, 1180, 1191, 1199, 1184, 1200, 1186, + 1201, 1197, 1202, 1203, 1206, 1205, 1207, 1216, 1212, 1219, + 1227, 1228, 1230, 1232, 1239, 1213, 1235, 1236, 1237, 1240, + 1242, 1244, 1220, 1246, 1247, 1258, 1250, 1253, 1255, 1259, + 1261, 1257, 1263, 1264, 1266, 1267, 1274, 1270, 1276, 1277, + 1278, 1291, 1279, 1283, 1281, 1288, 1294, 1295, 6134, 1304, + 1300, 1302, 1303, 1301, 1311, 1312, 1315, 1316, 1313, 1319, + 1318, 1321, 1325, 1326, 1327, 1322, 1328, 1330, 1339, 1343, + 1344, 1353, 1345, 1352, 1336, 1355, 1362, 1358, 1365, 1361, - 1340, 1357, 1362, 1365, 1368, 1370, 1371, 1378, 1379, 1381, - 1388, 1383, 1355, 1390, 1393, 1394, 1395, 1397, 1398, 1399, - 1400, 1407, 1402, 1405, 1404, 1408, 1403, 1409, 1410, 1411, - 1430, 1417, 1425, 1427, 1429, 1432, 1433, 1434, 1435, 1438, - 1439, 1440, 1441, 1442, 1459, 1447, 1449, 1454, 1462, 1461, - 1452, 1465, 1469, 1470, 1472, 1480, 1481, 1464, 1483, 1484, - 1473, 1488, 1489, 1491, 1492, 1494, 1499, 1500, 1502, 1504, - 1503, 1506, 1507, 1511, 1512, 6009, 1514, 1525, 1515, 1522, - 1520, 1523, 1527, 1534, 1529, 1531, 1536, 1530, 1539, 1560, - 6009, 1541, 6009, 6009, 1540, 6009, 6009, 1542, 1543, 1546, + 1366, 1373, 1368, 1370, 1374, 1382, 1377, 1375, 1380, 1340, + 1386, 1388, 1389, 1397, 1378, 1398, 1405, 1400, 1402, 1406, + 1409, 1410, 1411, 1413, 1414, 1415, 1416, 1423, 1418, 1421, + 1420, 1424, 1419, 1425, 1426, 1433, 1446, 1441, 1442, 1443, + 1445, 1447, 1449, 1450, 1452, 1453, 1456, 1458, 1459, 1460, + 1465, 1457, 1468, 1474, 1477, 1478, 1480, 1483, 1484, 1481, + 1485, 1490, 1493, 1487, 1497, 1500, 1489, 1501, 1502, 1506, + 1512, 1513, 1507, 1516, 1508, 1518, 1519, 1527, 1528, 1531, + 1524, 6134, 1520, 1541, 1522, 1534, 1536, 1543, 1544, 1551, + 1546, 1549, 1547, 1550, 1552, 1576, 6134, 1555, 6134, 6134, - 1563, 1552, 1570, 1547, 1550, 1561, 1544, 1583, 1584, 1573, - 1566, 1574, 1589, 1576, 1590, 1595, 1598, 1599, 1597, 1606, - 1608, 1611, 1610, 1617, 1618, 1609, 1619, 1622, 1623, 1625, - 1624, 1627, 1630, 1633, 1634, 1631, 1629, 1636, 1646, 1637, - 1651, 1654, 6009, 1652, 1661, 1662, 1659, 1666, 1665, 1663, - 1667, 1671, 1673, 1674, 1676, 1678, 1677, 1679, 1681, 1686, - 1685, 1696, 1687, 6009, 1688, 1691, 177, 1699, 1692, 1702, - 1703, 1707, 1689, 1709, 1710, 1717, 1712, 1715, 1719, 1720, - 1722, 1724, 6009, 1726, 1732, 1733, 1734, 1736, 1725, 1740, - 1737, 1741, 1742, 1743, 1744, 1747, 1749, 1756, 1753, 1752, + 1557, 6134, 6134, 1558, 1553, 1561, 1560, 1578, 1582, 1569, + 1566, 1573, 1571, 1592, 1599, 1589, 1593, 1590, 1605, 177, + 1612, 1597, 1604, 1607, 1610, 1621, 1620, 1625, 1626, 1613, + 1629, 1631, 1634, 1633, 1640, 1641, 1642, 1644, 1645, 1646, + 1648, 1647, 1650, 1653, 1656, 1657, 1659, 1652, 1660, 1671, + 1669, 1662, 1679, 6134, 1675, 1687, 1689, 1685, 1692, 1688, + 1693, 1676, 1695, 1697, 1698, 1700, 1702, 1701, 1703, 1705, + 1710, 1709, 1720, 1711, 6134, 1712, 1715, 1713, 1723, 1716, + 1726, 1727, 1731, 1733, 1734, 1735, 1742, 1738, 1740, 1744, + 1747, 1746, 1749, 6134, 1751, 1762, 1750, 1754, 1757, 1764, - 1755, 1758, 1763, 1767, 1770, 1777, 1771, 1773, 1778, 1779, - 1780, 1783, 1784, 1786, 1794, 1795, 1785, 1796, 1792, 1807, - 1808, 1793, 1804, 1809, 1810, 1811, 1813, 1822, 1817, 1818, - 1824, 1825, 1826, 1828, 1830, 1833, 1835, 1839, 1840, 1841, - 1831, 1843, 1845, 1847, 6009, 1849, 1851, 6009, 1852, 1855, - 1877, 1856, 1858, 1859, 1861, 1864, 1867, 1868, 1870, 1885, - 1878, 1897, 1881, 1899, 1879, 1901, 1875, 1900, 1904, 1902, - 1907, 1908, 1917, 1919, 1910, 1925, 1928, 1912, 1924, 1926, - 1945, 1927, 1930, 1933, 1929, 1931, 1937, 1940, 1936, 1938, - 1949, 1952, 1955, 1956, 6009, 1967, 1963, 1958, 1962, 1978, + 1765, 1766, 1767, 1768, 1769, 1772, 1773, 1774, 1781, 1780, + 1782, 1779, 1783, 1790, 1786, 1799, 1802, 1795, 1803, 1805, + 1806, 1807, 1808, 1809, 1811, 1816, 1819, 1818, 1823, 1820, + 1835, 1839, 1822, 1824, 1834, 1836, 1821, 1837, 1850, 1845, + 1847, 1849, 1857, 1852, 1856, 1853, 1858, 1860, 1861, 1864, + 1866, 1869, 1870, 1873, 1874, 6134, 1875, 1880, 6134, 1877, + 1879, 1901, 1881, 1883, 1888, 1885, 1886, 1892, 1898, 1895, + 1902, 1905, 1921, 1914, 1923, 1916, 1925, 1924, 1929, 1918, + 1926, 1935, 1937, 1944, 1948, 1946, 1955, 1957, 1941, 1889, + 1952, 1971, 1953, 1954, 1960, 1956, 1961, 1964, 1958, 1967, - 1969, 1973, 6009, 1976, 1979, 1980, 1987, 1982, 1983, 1984, - 1986, 1990, 1993, 1995, 1994, 1999, 2005, 1997, 2015, 6009, - 2000, 6009, 1998, 2001, 2010, 2017, 2018, 2019, 2020, 2022, - 6009, 6009, 2023, 2024, 2037, 2032, 2030, 6009, 2035, 2045, - 2046, 2049, 2040, 2041, 2042, 2048, 2055, 2056, 2059, 2057, - 2069, 2060, 2062, 2064, 6009, 2070, 2065, 2074, 2076, 2072, - 2080, 2082, 2083, 6009, 2084, 2089, 2091, 2098, 2094, 2099, - 2096, 2100, 2101, 2104, 2106, 2107, 2109, 2110, 2117, 2119, - 2115, 2116, 2124, 2132, 6009, 2118, 2128, 2137, 2130, 2134, - 2138, 2140, 2139, 2141, 2142, 2143, 2144, 2150, 2151, 2152, + 1973, 1975, 1980, 1982, 1978, 1984, 1987, 1986, 1989, 1995, + 6134, 2006, 1998, 1993, 2005, 2013, 2009, 2008, 6134, 2010, + 2011, 2015, 2022, 2017, 2021, 2023, 2024, 2025, 2029, 2030, + 2032, 2034, 2045, 2033, 2052, 6134, 2037, 6134, 2047, 2035, + 2038, 2048, 2036, 2056, 2058, 2059, 6134, 6134, 2060, 2066, + 2067, 2076, 2069, 6134, 2072, 2079, 2080, 2074, 2083, 2085, + 2086, 2089, 2087, 2091, 2096, 2092, 2099, 2094, 2098, 2101, + 6134, 2108, 2095, 2113, 2114, 2104, 2117, 2121, 2123, 6134, + 2124, 2125, 2127, 2134, 2132, 2129, 2136, 2137, 2142, 2139, + 2144, 2145, 2146, 2147, 2156, 2158, 2148, 2159, 2161, 2168, - 2159, 2162, 2154, 2161, 2165, 2158, 2167, 2170, 2176, 2173, - 2174, 2175, 2178, 6009, 2179, 2185, 256, 2186, 2180, 2187, - 2188, 2192, 2190, 2196, 2208, 2210, 2206, 2205, 2209, 2212, - 2213, 2215, 2217, 2218, 2221, 2219, 2222, 6009, 2224, 2225, - 2229, 2230, 2236, 2231, 2238, 6009, 2248, 2235, 2256, 2246, - 2244, 2259, 2250, 2260, 2261, 2263, 2264, 2266, 2265, 2267, - 6009, 2273, 2274, 2275, 2277, 2282, 2281, 2284, 2288, 2289, - 2290, 2294, 2292, 2291, 2296, 2295, 2299, 2300, 2305, 2301, - 2302, 2310, 2312, 2313, 6009, 2323, 2315, 2319, 2324, 2326, - 2325, 2340, 2328, 2332, 2335, 2341, 2349, 2338, 2336, 2356, + 6134, 2151, 2155, 2173, 2171, 2178, 2170, 2172, 2174, 2180, + 2182, 2183, 2184, 2187, 2188, 2189, 2196, 2197, 2194, 2193, + 2202, 2203, 2204, 2207, 2210, 2211, 2212, 2213, 2214, 6134, + 2215, 2217, 256, 2223, 2220, 2224, 2225, 2231, 2227, 2228, + 2244, 2247, 2245, 2249, 2252, 2242, 2246, 2253, 2254, 2243, + 2259, 2255, 2261, 6134, 2264, 2265, 2267, 2268, 2271, 2272, + 2281, 6134, 2273, 2282, 2276, 2284, 2288, 2290, 2289, 2278, + 2294, 2299, 2298, 2301, 2305, 2307, 6134, 2310, 2313, 2314, + 2311, 2315, 2321, 2323, 2312, 2322, 2324, 2328, 2329, 2334, + 2330, 2333, 2335, 2336, 2339, 2338, 2346, 2347, 2348, 2349, - 2352, 2355, 2361, 2365, 2364, 2366, 2373, 2363, 2375, 2377, - 2367, 2378, 2379, 2381, 2385, 2383, 2386, 2395, 2398, 2394, - 2402, 2391, 2412, 2417, 2408, 6009, 2416, 2403, 2410, 2421, - 2432, 2424, 2422, 2429, 2423, 2427, 2435, 2438, 2425, 2446, - 2441, 2443, 2445, 2447, 2448, 2449, 2450, 2453, 2455, 2464, - 2456, 2466, 2467, 6009, 2470, 2472, 2461, 2474, 2476, 2479, - 2482, 2484, 2486, 2487, 2488, 2490, 2492, 2493, 2494, 2495, - 2497, 2501, 2498, 6009, 2502, 2504, 2510, 2507, 2513, 2517, - 2522, 2523, 2529, 2526, 2520, 2533, 2534, 2511, 6009, 2542, - 2543, 2535, 2550, 2545, 2532, 2546, 2548, 2549, 6009, 2552, + 2350, 2351, 2355, 2358, 2359, 6134, 2368, 2360, 2370, 2361, + 2371, 2365, 2388, 2372, 2375, 2383, 2384, 2397, 2386, 2392, + 2400, 2403, 2390, 2398, 2414, 2412, 2413, 2421, 2409, 2423, + 2426, 2415, 2393, 2419, 2425, 2427, 2433, 2434, 2442, 2443, + 2439, 2446, 2440, 2461, 2466, 2448, 6134, 2451, 2438, 2457, + 2465, 2473, 2468, 2469, 2471, 2470, 2478, 2479, 2480, 2481, + 2488, 2485, 2489, 2490, 2496, 2492, 2493, 2494, 2483, 2500, + 2510, 2503, 2514, 2515, 6134, 2516, 2520, 2507, 2521, 2523, + 2511, 2528, 2532, 2524, 2534, 2535, 2537, 2538, 2539, 2540, + 2541, 2543, 2545, 2544, 6134, 2548, 2549, 2554, 2553, 2561, - 2553, 2561, 2562, 2558, 6009, 2565, 2560, 2563, 2566, 2567, - 2568, 2570, 2573, 2575, 2577, 2579, 2588, 2582, 2585, 6009, - 2589, 2597, 2592, 2594, 2598, 2599, 2601, 2602, 2604, 2619, - 2611, 6009, 2624, 2622, 2623, 2633, 2628, 2614, 2630, 2631, - 2635, 2637, 2629, 6009, 2638, 2639, 2641, 2643, 2646, 2645, - 2651, 2660, 2655, 2656, 2658, 2661, 2662, 2664, 2666, 2673, - 2669, 2668, 2678, 2681, 2679, 2685, 2689, 2688, 2691, 2698, - 2699, 2700, 2702, 6009, 2705, 2706, 2707, 2690, 2697, 2712, - 2713, 2714, 2717, 2607, 2718, 2719, 2721, 2730, 2732, 2722, - 2734, 2725, 2728, 2736, 2738, 2739, 2741, 2746, 2754, 2750, + 2557, 2563, 2569, 2570, 2572, 2573, 2575, 2576, 2579, 6134, + 2584, 2586, 2582, 2594, 2589, 2585, 2590, 2596, 2593, 6134, + 2597, 2599, 2606, 2608, 2603, 6134, 2611, 2607, 2610, 2612, + 2614, 2615, 2618, 2616, 2620, 2623, 2626, 2635, 2625, 2632, + 6134, 2638, 2650, 2629, 2642, 2646, 2639, 2640, 2643, 2659, + 2660, 2652, 6134, 2669, 2668, 2665, 2679, 2656, 2670, 2671, + 2677, 2674, 2680, 2681, 6134, 2683, 2684, 2686, 2687, 2690, + 2691, 2693, 2705, 2695, 2698, 2700, 2703, 2706, 2708, 2710, + 2713, 2711, 2719, 2722, 2723, 2725, 2726, 2728, 2729, 2738, + 2733, 2742, 2739, 2734, 2744, 2752, 2756, 2753, 2757, 6134, - 2749, 2757, 2752, 2753, 2762, 2760, 2763, 2765, 2766, 2767, - 2768, 2772, 2769, 2773, 2774, 2778, 2791, 2783, 2792, 2780, - 2794, 2795, 2798, 6009, 2797, 2801, 2799, 2802, 2805, 2810, - 2807, 2819, 2811, 2816, 2818, 2820, 2827, 2825, 2828, 2830, - 2838, 2834, 6009, 2835, 6009, 2836, 2837, 2839, 2847, 2843, - 6009, 2849, 6009, 2851, 2856, 2844, 2852, 6009, 2858, 2859, - 2862, 2864, 2866, 2867, 2870, 2869, 2872, 2875, 2873, 2877, - 2878, 2880, 2883, 2885, 2890, 2887, 2891, 2897, 2894, 2900, - 2901, 2903, 2904, 2907, 2909, 2912, 6009, 2914, 2916, 2910, - 2918, 2919, 2921, 2922, 2926, 2927, 2929, 2930, 2935, 2932, + 2760, 2761, 2762, 2751, 2763, 2764, 2736, 2766, 2768, 2770, + 2775, 2772, 2773, 2782, 2790, 2774, 2795, 2783, 2785, 2791, + 2793, 2787, 2797, 2801, 2805, 2803, 2807, 2815, 2810, 2812, + 2820, 2811, 2813, 2816, 2821, 2822, 2823, 2824, 2825, 2828, + 2834, 2838, 2842, 2843, 2845, 2847, 2850, 2851, 2852, 6134, + 2855, 2856, 2853, 2857, 2862, 2866, 2867, 2869, 2870, 2874, + 2875, 2879, 2882, 2876, 2881, 2884, 2894, 2890, 6134, 2891, + 6134, 2892, 2893, 2900, 2903, 2895, 6134, 2906, 6134, 2907, + 2912, 2902, 2908, 6134, 2914, 2916, 2919, 2920, 2922, 2923, + 2926, 2925, 2927, 2931, 2929, 2933, 2934, 2935, 2939, 2942, - 2941, 2945, 2942, 2944, 2954, 6009, 2951, 2956, 2953, 2957, - 6009, 2961, 2958, 2959, 2967, 2962, 2969, 2970, 2971, 2977, - 2979, 2973, 2980, 2981, 2984, 2992, 6009, 2988, 2994, 2990, - 3000, 3002, 3001, 3004, 3007, 3016, 3009, 3012, 3013, 3017, - 3018, 3019, 3026, 3027, 3023, 3030, 3029, 3032, 3034, 3035, - 3039, 3041, 3042, 3044, 3045, 6009, 3043, 3047, 3054, 3046, - 3049, 3050, 3051, 6009, 3068, 3053, 3065, 3074, 3056, 3063, - 3076, 3078, 3079, 3080, 3082, 3081, 3083, 6009, 3086, 6009, - 3084, 3091, 3098, 3103, 3092, 3087, 3107, 3112, 3108, 3113, - 3114, 3115, 3116, 3117, 3118, 3122, 3125, 3129, 3130, 3140, + 2943, 2947, 2948, 2954, 2946, 2955, 2957, 2959, 2962, 2964, + 2965, 2966, 6134, 2970, 2967, 2972, 2974, 2976, 2977, 2978, + 2982, 2980, 2983, 2988, 2991, 2989, 2999, 3005, 2998, 2995, + 3012, 6134, 3004, 3008, 3011, 3013, 6134, 3016, 3014, 3022, + 3024, 3017, 3026, 3020, 3029, 3027, 3033, 3034, 3037, 3042, + 3041, 3047, 6134, 3039, 3051, 3049, 3057, 3058, 3059, 3061, + 3067, 3069, 3065, 3071, 3072, 3073, 3075, 3076, 3083, 3086, + 3082, 3091, 3078, 3088, 3097, 3089, 3081, 3098, 3100, 3102, + 3103, 3105, 3104, 3106, 3107, 3108, 6134, 3111, 3112, 3121, + 3110, 3113, 3114, 3124, 6134, 3135, 3126, 3132, 3138, 3129, - 3123, 3131, 3128, 3136, 3126, 3145, 6009, 6009, 3147, 3148, - 3151, 3149, 3153, 3154, 3155, 3164, 3158, 3160, 3161, 3167, - 3175, 6009, 3177, 3168, 3171, 3179, 3186, 3181, 3188, 3195, - 3192, 3196, 3194, 6009, 3198, 3201, 3208, 3203, 3204, 3211, - 6009, 3206, 6009, 3209, 3210, 3212, 3217, 3219, 3221, 3222, - 3223, 3225, 3233, 3241, 3230, 3239, 3231, 3240, 3242, 3244, - 3253, 3245, 3248, 3250, 6009, 3255, 3249, 3252, 3260, 3266, - 3270, 3263, 3259, 6009, 3262, 3274, 3276, 3278, 3279, 3281, - 3283, 3284, 3287, 3288, 3285, 3286, 3302, 3289, 3292, 3303, - 3294, 3305, 3312, 6009, 3313, 3307, 3320, 3322, 3315, 3317, + 3136, 3140, 3141, 3142, 3143, 3147, 3148, 3149, 6134, 3152, + 6134, 3153, 3163, 3156, 3162, 3168, 3169, 3170, 3175, 3171, + 3176, 3177, 3181, 3179, 3183, 3185, 3188, 3191, 3192, 3196, + 3205, 3189, 3193, 3197, 3202, 3208, 3210, 6134, 6134, 3211, + 3212, 3213, 3217, 3218, 3220, 3228, 3223, 3221, 3219, 3231, + 3238, 3240, 6134, 3241, 3242, 3244, 3245, 3253, 3246, 3249, + 3260, 3258, 3265, 3261, 6134, 3251, 3262, 3274, 3269, 3270, + 3278, 6134, 3275, 6134, 3277, 3280, 3281, 3284, 3285, 3287, + 3288, 3290, 3292, 3301, 3303, 3294, 3306, 3308, 3309, 3310, + 3311, 3318, 3314, 3315, 3316, 6134, 3320, 3317, 3321, 3330, - 3323, 3324, 3325, 3328, 3330, 3329, 3331, 3333, 3335, 3332, - 3342, 3336, 3349, 3338, 3352, 3358, 3359, 3339, 3355, 3362, - 3363, 3366, 3365, 3369, 3372, 3376, 3373, 3385, 3386, 3377, - 3380, 3389, 3390, 3397, 3392, 6009, 3402, 3382, 3405, 3403, - 3404, 3409, 3410, 3412, 3413, 3414, 3415, 3422, 3417, 6009, - 3424, 3419, 3429, 3430, 3421, 3444, 3439, 3420, 3442, 3446, - 3443, 3449, 3447, 3451, 3452, 3455, 3456, 6009, 6009, 3458, - 3459, 3461, 6009, 3462, 3460, 3472, 3465, 3468, 3475, 3478, - 3474, 3477, 3479, 3482, 3486, 6009, 3487, 3494, 3491, 3493, - 3501, 3504, 3497, 3505, 3506, 3499, 3507, 3509, 3513, 3512, + 3333, 3339, 3323, 3322, 6134, 3326, 3343, 3340, 3346, 3347, + 3349, 3350, 3353, 3351, 3355, 3352, 3354, 3362, 3357, 3361, + 3370, 3373, 3365, 3378, 6134, 3375, 3381, 3388, 3384, 3385, + 3387, 3391, 3386, 3392, 3393, 3395, 3396, 3398, 3400, 3402, + 3399, 3409, 3403, 3410, 3416, 3405, 3425, 3432, 3408, 3419, + 3427, 3428, 3433, 3430, 3436, 3440, 3442, 3434, 3450, 3451, + 3445, 3447, 3456, 3453, 3464, 3459, 6134, 3467, 3460, 3469, + 3465, 3470, 3472, 3474, 3475, 3477, 3479, 3481, 3482, 3491, + 3484, 3487, 3488, 3495, 3492, 6134, 3505, 3501, 3509, 3502, + 3506, 3516, 3514, 3517, 3518, 3520, 3522, 3524, 3526, 3527, - 3514, 3517, 3528, 3529, 3524, 3520, 3527, 6009, 3525, 3532, - 3533, 3537, 3534, 3541, 6009, 3539, 3542, 3543, 3548, 3551, - 3555, 3552, 3561, 3562, 3564, 3565, 3566, 3567, 3569, 3576, - 3573, 3572, 3575, 3579, 3581, 6009, 3582, 3586, 3590, 3593, - 6009, 3595, 3604, 3605, 3606, 3596, 3607, 3601, 3614, 6009, - 3609, 3611, 3616, 3617, 3624, 3619, 3626, 3623, 6009, 3625, - 3627, 3629, 6009, 3630, 3631, 3639, 3644, 3636, 3651, 3647, - 3649, 3652, 3648, 6009, 3650, 6009, 3659, 3660, 3663, 6009, - 3661, 3665, 3666, 3668, 3669, 3670, 3674, 3681, 3676, 3682, - 3683, 3684, 3685, 3687, 3694, 3686, 3690, 3693, 3695, 6009, + 3528, 3531, 3532, 6134, 6134, 3534, 3535, 3536, 6134, 3538, + 3540, 3550, 3542, 3543, 3551, 3555, 3554, 3553, 3556, 3558, + 3559, 6134, 3565, 3573, 3568, 3569, 3577, 3578, 3581, 3582, + 3574, 3585, 3589, 3586, 3590, 3591, 3592, 3594, 3602, 3603, + 3599, 3600, 3606, 6134, 3601, 3607, 3611, 3613, 3604, 3617, + 6134, 3614, 3620, 3622, 3625, 3631, 3635, 3627, 3637, 3640, + 3641, 3644, 3642, 3645, 3646, 3654, 3649, 3651, 3653, 3657, + 3667, 6134, 3650, 3662, 3660, 3669, 6134, 3675, 3682, 3683, + 3685, 3670, 3684, 3686, 3693, 6134, 3688, 3690, 3691, 3672, + 3701, 3692, 3705, 3704, 6134, 3706, 3702, 3707, 6134, 3708, - 3705, 3697, 3698, 3712, 3710, 3702, 3700, 3718, 3716, 6009, - 6009, 3725, 6009, 3727, 3720, 3722, 6009, 3726, 3728, 3737, - 3732, 3733, 3743, 3740, 3744, 6009, 3746, 3735, 3747, 3750, - 3751, 3754, 3756, 3757, 3758, 3760, 3761, 6009, 3762, 3764, - 3771, 3763, 3765, 3774, 3773, 3779, 6009, 3783, 3787, 3786, - 3790, 3791, 6009, 3792, 6009, 3793, 3794, 3796, 3800, 3797, - 6009, 3805, 3806, 3810, 3812, 3813, 3815, 3814, 3821, 3822, - 3823, 3830, 3827, 3828, 3825, 6009, 3829, 3831, 3835, 3836, - 3839, 3842, 3850, 3846, 3847, 3852, 3853, 3856, 3859, 3857, - 3863, 3865, 3867, 3860, 6009, 3868, 3873, 3866, 3882, 3879, + 3709, 3720, 3723, 3713, 3730, 3725, 3727, 3728, 3717, 6134, + 3735, 6134, 3736, 3729, 3737, 6134, 3742, 3743, 3744, 3746, + 3747, 3748, 3752, 3751, 3758, 3759, 3761, 3762, 3760, 3765, + 3769, 3766, 3767, 3771, 3772, 6134, 3773, 3775, 3782, 3787, + 3783, 3790, 3777, 3794, 3795, 6134, 6134, 3797, 6134, 3800, + 3801, 3804, 6134, 3806, 3805, 3813, 3809, 3810, 3812, 3816, + 3822, 6134, 3824, 3827, 6134, 3825, 3835, 3832, 3818, 3833, + 3836, 3837, 3840, 3841, 3842, 3843, 3844, 3849, 6134, 3846, + 3848, 3851, 3847, 3856, 3861, 3857, 3863, 6134, 3867, 3871, + 3870, 3874, 3875, 6134, 3877, 6134, 3878, 3880, 3881, 3885, - 3883, 6009, 3884, 3885, 3886, 6009, 3889, 3892, 3894, 3898, - 3893, 3899, 3900, 3901, 3904, 6009, 3906, 3908, 3905, 3909, - 3921, 3913, 6009, 6009, 3923, 6009, 3924, 3910, 3928, 3927, - 3907, 3931, 3935, 3937, 3939, 3936, 3944, 3947, 3941, 3957, - 3959, 3964, 3960, 3961, 3950, 6009, 6009, 3966, 3967, 3962, - 3973, 3974, 3976, 3977, 3984, 3980, 3986, 3990, 3991, 3998, - 6009, 3979, 3981, 3999, 6009, 3994, 3997, 4000, 4005, 4004, - 4006, 4010, 4007, 4008, 4011, 4015, 4012, 4017, 4025, 4018, - 4022, 4021, 4031, 4028, 4029, 4038, 6009, 4035, 4039, 4042, - 4045, 4046, 4048, 4050, 4051, 4052, 6009, 4049, 4054, 4056, + 3884, 6134, 3890, 3891, 3895, 3897, 3899, 3898, 3901, 3902, + 3908, 3909, 3916, 3912, 3911, 3913, 6134, 3914, 3918, 3920, + 3927, 3915, 3922, 3931, 3934, 3935, 3936, 3940, 3944, 3938, + 3945, 3951, 3949, 3955, 3941, 6134, 3953, 3961, 3947, 3970, + 3957, 3967, 6134, 3971, 3972, 3973, 6134, 3974, 3975, 3976, + 3981, 3982, 3984, 3988, 3989, 3986, 6134, 3993, 3994, 3990, + 3991, 3992, 3998, 6134, 6134, 4008, 6134, 4009, 3999, 4011, + 4012, 4013, 4016, 4018, 4019, 4021, 4023, 4029, 4031, 4024, + 4040, 4041, 4049, 4044, 4045, 4032, 6134, 6134, 4051, 4054, + 4048, 4059, 4060, 4056, 4046, 4071, 4062, 4072, 4075, 4076, - 4062, 4055, 4065, 4076, 4080, 4082, 4057, 4074, 4083, 4085, - 4089, 4086, 6009, 4090, 4092, 4093, 4096, 4099, 4101, 4102, - 4104, 4105, 4107, 4109, 4110, 4117, 4119, 4111, 4120, 4114, - 4122, 6009, 4126, 4133, 4127, 4135, 4130, 4060, 4136, 4137, - 4143, 4140, 4145, 4144, 4150, 6009, 4147, 4151, 4154, 4152, - 4158, 4161, 4165, 4162, 4164, 6009, 4172, 4155, 4166, 4168, - 4176, 4178, 4181, 4183, 4186, 4185, 4188, 6009, 4189, 4192, - 4193, 4190, 4199, 4200, 4204, 4202, 6009, 4205, 4211, 4203, - 4219, 4214, 4223, 4220, 4222, 4224, 4226, 4229, 4231, 4233, - 4234, 4236, 4230, 4247, 4252, 4250, 6009, 4237, 6009, 4251, + 4083, 6134, 4066, 4078, 4082, 6134, 4063, 4079, 4085, 4087, + 4089, 4091, 4090, 4092, 4095, 4093, 4097, 4099, 4101, 4105, + 4104, 4107, 4113, 4117, 4111, 4118, 4121, 6134, 4123, 4114, + 4125, 4126, 4127, 4128, 4129, 4134, 4135, 6134, 4137, 6134, + 4140, 4139, 4141, 4155, 4157, 4148, 4158, 4162, 4163, 4166, + 4168, 4159, 4169, 4170, 4176, 4178, 4179, 6134, 4181, 4173, + 4180, 4183, 4190, 4192, 4187, 4197, 4194, 4199, 4201, 4202, + 4204, 4209, 4205, 4211, 4210, 4213, 6134, 4217, 4215, 4218, + 4226, 4221, 4223, 4227, 4233, 4236, 4228, 4231, 4238, 4241, + 6134, 4242, 4243, 4244, 4138, 4251, 4245, 4248, 4252, 4254, - 4255, 4259, 4261, 4258, 6009, 4248, 4263, 4266, 4267, 4268, - 6009, 4269, 4271, 4273, 4272, 6009, 4283, 4285, 4274, 4289, - 4276, 4291, 6009, 4296, 4297, 4293, 4305, 4308, 4304, 4306, - 4309, 4307, 4311, 4312, 4313, 4321, 4316, 4317, 6009, 4323, - 4326, 4333, 4334, 4328, 4318, 4336, 4342, 4335, 6009, 4344, - 4343, 4345, 4346, 4347, 4350, 4352, 4359, 4355, 4354, 6009, - 4358, 4362, 4375, 4356, 4366, 6009, 6009, 4371, 4376, 4378, - 4373, 4379, 6009, 4382, 4389, 4384, 4388, 4391, 6009, 6009, - 4393, 6009, 4390, 6009, 4395, 4394, 6009, 6009, 4397, 4398, - 4401, 4407, 4404, 6009, 4414, 6009, 4411, 4415, 4417, 4418, + 6134, 4256, 4258, 4261, 4260, 4263, 4265, 4270, 4271, 4273, + 4275, 4284, 6134, 4276, 4280, 4286, 4289, 4279, 4290, 4293, + 4294, 6134, 4295, 4301, 4297, 4305, 4303, 4313, 4310, 4316, + 4308, 4309, 4323, 4318, 4319, 4325, 4329, 4317, 4336, 4341, + 4339, 6134, 4332, 6134, 4337, 4344, 4348, 4349, 4340, 6134, + 4347, 4351, 4354, 4355, 4356, 6134, 4357, 4359, 4361, 4366, + 6134, 4368, 4372, 4364, 4373, 4380, 4381, 6134, 4387, 4388, + 4389, 4396, 4398, 4400, 4383, 4401, 4393, 4395, 4403, 4406, + 4410, 4411, 4408, 6134, 4412, 4414, 4419, 4415, 4421, 4423, + 4424, 4427, 4429, 6134, 4431, 4432, 4433, 4434, 4435, 4437, - 4420, 6009, 4419, 4422, 4427, 6009, 4421, 4429, 4428, 4432, - 6009, 4436, 4439, 4431, 4437, 6009, 4443, 4449, 4451, 4441, - 4445, 4452, 4458, 4453, 4461, 4462, 4463, 4464, 4465, 4472, - 4477, 4479, 4481, 4473, 4469, 4483, 4489, 4491, 4482, 4486, - 4493, 4495, 4497, 4499, 4501, 4503, 4504, 4505, 4507, 4508, - 4506, 4516, 4509, 4510, 4523, 4519, 4512, 4524, 4527, 4525, - 4531, 4532, 4534, 4535, 4536, 6009, 4537, 4539, 4541, 4553, - 4546, 4542, 4552, 4559, 4563, 4565, 6009, 4567, 6009, 4569, - 4554, 4571, 4573, 6009, 4574, 4575, 4576, 4577, 4578, 4579, - 4581, 4580, 4584, 4585, 4588, 6009, 4591, 4586, 4595, 4606, + 4440, 4444, 4441, 4446, 4449, 4450, 4451, 6134, 4454, 4456, + 4465, 4458, 4460, 6134, 6134, 4463, 4473, 4475, 4467, 4479, + 6134, 4481, 4482, 4471, 4487, 4488, 6134, 6134, 4490, 6134, + 4484, 6134, 4491, 4492, 6134, 6134, 4494, 4469, 4496, 4498, + 4507, 6134, 4510, 6134, 4517, 4512, 4500, 4504, 4514, 6134, + 4515, 4518, 4521, 6134, 4522, 4529, 4524, 4525, 6134, 4528, + 4532, 4533, 4536, 6134, 4537, 4544, 4541, 4539, 4547, 4545, + 4549, 4548, 4553, 4558, 4555, 4559, 4561, 4564, 4569, 4572, + 4574, 4565, 4575, 4576, 4582, 4584, 4578, 4580, 4586, 4587, + 4589, 4591, 4595, 4597, 4598, 4599, 4600, 4601, 4602, 4612, - 6009, 4601, 4612, 4596, 4607, 4609, 4613, 4615, 4617, 4618, - 4619, 4621, 4623, 4630, 4626, 4627, 4629, 4631, 4632, 4637, - 4640, 4639, 4647, 4649, 4654, 6009, 4643, 6009, 4650, 4655, - 4656, 4658, 4660, 4661, 4663, 6009, 6009, 4664, 4666, 4671, - 4672, 4667, 4676, 4673, 6009, 4679, 4686, 4689, 4680, 6009, - 4683, 4691, 4692, 4696, 6009, 4697, 4699, 4700, 4702, 4703, - 4706, 4710, 4707, 4713, 4714, 4718, 6009, 6009, 6009, 6009, - 4719, 4721, 4724, 4725, 4727, 4728, 4730, 4732, 4733, 6009, - 4735, 6009, 6009, 4736, 4742, 4744, 4745, 4746, 4749, 4751, - 4753, 6009, 4752, 4757, 4759, 4755, 4766, 4772, 4756, 4769, + 4604, 4605, 4615, 4618, 4608, 4616, 4619, 4620, 4621, 4628, + 4630, 4623, 4626, 6134, 4631, 4633, 4637, 4640, 4642, 4645, + 4646, 4648, 4653, 4657, 6134, 4661, 6134, 4663, 4654, 4659, + 4665, 6134, 4666, 4667, 4668, 4669, 4671, 4673, 4674, 4675, + 4678, 4679, 4681, 6134, 4688, 4677, 4683, 4701, 6134, 4694, + 4705, 4691, 4698, 4706, 4702, 4707, 4708, 4711, 4710, 4715, + 4719, 4712, 4722, 4721, 4737, 4723, 4724, 4732, 4733, 4734, + 4735, 4740, 4742, 4747, 4748, 4753, 6134, 4743, 6134, 4749, + 4756, 4757, 4759, 4760, 4761, 4763, 6134, 6134, 4764, 4767, + 4772, 4768, 4773, 4777, 4774, 6134, 4780, 4785, 4787, 4788, - 4773, 4775, 4782, 4778, 4779, 4777, 4781, 4785, 4788, 6009, - 6009, 4789, 4795, 4796, 4804, 4800, 4801, 4813, 4808, 4809, - 4810, 4811, 4815, 4797, 4822, 4827, 4820, 4817, 6009, 4828, - 4831, 6009, 4824, 6009, 4830, 4832, 4838, 4839, 4840, 4841, - 4842, 4844, 6009, 6009, 4845, 4846, 4848, 4855, 4851, 4859, - 4847, 4858, 4860, 6009, 4861, 6009, 4863, 4865, 4872, 4873, - 4880, 4881, 4884, 4886, 4882, 4887, 6009, 4888, 4889, 6009, - 4891, 4893, 4894, 6009, 4899, 4896, 4904, 4906, 6009, 4911, - 4908, 4913, 6009, 4916, 6009, 4901, 4917, 4919, 4926, 6009, - 4923, 4927, 6009, 4930, 4933, 4934, 4935, 6009, 4924, 6009, + 6134, 4790, 4792, 4793, 4797, 6134, 4794, 4798, 4799, 4809, + 4800, 4811, 4815, 4814, 4802, 4804, 4822, 6134, 6134, 6134, + 6134, 4824, 4817, 4827, 4828, 4829, 4831, 4834, 4833, 4830, + 6134, 4836, 6134, 6134, 4844, 4846, 4838, 4848, 4847, 4837, + 4850, 4854, 6134, 4857, 4858, 4860, 4861, 4867, 4869, 4864, + 4870, 4873, 4874, 4883, 4879, 4880, 4878, 4882, 4886, 4889, + 6134, 6134, 4890, 4895, 4896, 4906, 4897, 4904, 4907, 4908, + 4910, 4911, 4898, 4914, 4916, 4923, 4924, 4921, 4919, 6134, + 4925, 4929, 6134, 4927, 6134, 4928, 4935, 4934, 4936, 4938, + 4941, 4942, 4944, 6134, 6134, 4951, 4948, 6134, 4946, 4955, - 4936, 4939, 4940, 4945, 4946, 4950, 4947, 4951, 4952, 4959, - 4955, 4958, 6009, 6009, 4971, 4957, 4963, 4964, 4967, 4974, - 4972, 4975, 4977, 6009, 6009, 4981, 6009, 4982, 4985, 6009, - 4978, 4989, 4987, 4991, 4993, 4994, 4995, 4999, 5001, 5007, - 5002, 5000, 5012, 5023, 5006, 5027, 5028, 5030, 5032, 5034, - 5008, 5036, 5037, 5013, 5038, 5040, 5042, 6009, 5044, 5045, - 5046, 6009, 5050, 5051, 5053, 5054, 6009, 5056, 5061, 5063, - 5065, 6009, 5066, 5068, 5069, 5071, 5075, 5082, 5078, 5077, - 5079, 6009, 6009, 6009, 5087, 5089, 6009, 5094, 5085, 5095, - 5096, 6009, 5097, 5098, 6009, 6009, 5100, 5102, 5101, 5109, + 4957, 4959, 4960, 4961, 4956, 4963, 4964, 6134, 4966, 6134, + 4967, 4968, 4974, 4969, 4984, 4986, 4988, 4990, 4977, 4991, + 6134, 4992, 4993, 6134, 4995, 4997, 4998, 6134, 5002, 5000, + 5005, 5008, 6134, 5010, 5012, 5014, 6134, 5021, 6134, 5015, + 5017, 5024, 5029, 6134, 5025, 5026, 6134, 5031, 5033, 5034, + 5038, 6134, 5039, 6134, 5040, 5042, 5043, 5047, 5048, 5050, + 5052, 5053, 5054, 5061, 5059, 5062, 6134, 6134, 5070, 5056, + 5067, 5072, 5074, 5081, 5073, 5078, 5077, 6134, 6134, 5083, + 6134, 5085, 5086, 6134, 5084, 5091, 5090, 5095, 5096, 5097, + 5099, 5102, 5104, 5112, 5105, 5103, 5116, 5126, 5110, 5128, - 6009, 5104, 6009, 5105, 6009, 5107, 5108, 5117, 5115, 6009, - 5122, 5128, 6009, 5131, 5134, 5136, 5137, 5119, 5123, 5138, - 6009, 5147, 5140, 5144, 5151, 5148, 5152, 5153, 5154, 5161, - 5156, 5160, 6009, 5163, 5157, 5164, 5170, 5165, 5168, 5174, - 6009, 5176, 6009, 5177, 5178, 5182, 5179, 5180, 5185, 5187, - 5192, 5189, 5199, 5193, 6009, 5201, 5203, 6009, 5205, 6009, - 5207, 6009, 5208, 5209, 5211, 5213, 6009, 5217, 5210, 5214, - 5219, 6009, 5220, 5222, 5223, 5229, 6009, 6009, 5231, 5239, - 5235, 5232, 5244, 5246, 5241, 5248, 5249, 5250, 5252, 5262, - 5234, 5257, 5255, 5264, 5265, 5270, 6009, 6009, 6009, 5266, + 5130, 5132, 5134, 5136, 5138, 5106, 5121, 5139, 5140, 5142, + 5143, 5144, 5146, 6134, 5149, 5150, 5145, 6134, 5156, 5151, + 5161, 5157, 6134, 5168, 5169, 5170, 5171, 6134, 5172, 5174, + 5177, 5175, 5176, 5188, 5183, 5185, 5189, 6134, 6134, 6134, + 5192, 5199, 6134, 5201, 5195, 5186, 5202, 6134, 5203, 5204, + 6134, 6134, 5205, 5206, 5207, 5214, 6134, 5210, 6134, 5213, + 6134, 5218, 5219, 5225, 5228, 6134, 5231, 5238, 6134, 5233, + 5241, 5244, 5245, 5229, 5246, 5247, 6134, 5256, 5248, 5255, + 5258, 5217, 5251, 5259, 5261, 5268, 5263, 5267, 6134, 5269, + 5270, 5271, 5277, 5274, 5280, 5281, 6134, 5283, 6134, 5284, - 5273, 5280, 5277, 5279, 5287, 5283, 6009, 5284, 5285, 5286, - 5294, 5291, 5296, 6009, 5292, 5297, 5298, 5299, 5303, 5300, - 5307, 6009, 5311, 5314, 5317, 5306, 5321, 5325, 5328, 5330, - 5331, 6009, 5333, 6009, 6009, 5318, 6009, 5334, 5335, 5338, - 5339, 6009, 5342, 5344, 5343, 5345, 5347, 5349, 6009, 5359, - 5350, 5352, 5361, 6009, 6009, 5365, 6009, 5368, 5369, 5362, - 5378, 5373, 5375, 5380, 5377, 6009, 5381, 5384, 5386, 5387, - 5388, 6009, 5389, 5390, 5392, 5393, 5396, 5395, 5398, 5400, - 5402, 6009, 5403, 5405, 5423, 5419, 6009, 5406, 5418, 6009, - 6009, 5428, 5430, 5351, 6009, 6009, 6009, 5433, 6009, 5435, + 5285, 5286, 5287, 5289, 5291, 5292, 5294, 5302, 5303, 5304, + 5307, 5308, 6134, 5313, 5315, 6134, 5316, 6134, 5318, 6134, + 5309, 5319, 5320, 5323, 6134, 5332, 5322, 5324, 5326, 6134, + 5333, 5329, 5338, 5340, 6134, 6134, 5341, 5350, 5346, 5348, + 5353, 5355, 5349, 5359, 5356, 5362, 5360, 5372, 5363, 5364, + 5365, 5374, 5381, 5386, 6134, 6134, 6134, 5377, 5368, 5396, + 5392, 5394, 5399, 5383, 6134, 5395, 5398, 5402, 5410, 5405, + 5407, 6134, 5408, 5409, 5411, 5412, 5414, 5415, 5417, 6134, + 5419, 5429, 5430, 5424, 5432, 5440, 5442, 5444, 5431, 5451, + 5447, 6134, 5449, 6134, 6134, 5446, 6134, 5433, 5450, 5453, - 5439, 5443, 5447, 5438, 6009, 5449, 5446, 5451, 6009, 6009, - 5450, 5452, 5453, 5455, 6009, 6009, 5456, 5459, 5457, 5460, - 5462, 6009, 5467, 5471, 5473, 5476, 5479, 5468, 5482, 5484, - 5492, 5494, 5489, 5490, 5495, 5497, 5498, 5499, 5501, 5510, - 5506, 5508, 5520, 5517, 6009, 6009, 5524, 6009, 6009, 5526, - 5528, 5530, 5532, 5534, 5536, 5538, 6009, 5539, 5541, 5542, - 5410, 5543, 6009, 5545, 5547, 5544, 5549, 5509, 5552, 5550, - 5555, 6009, 6009, 5556, 5557, 5558, 5566, 5561, 6009, 5568, - 5575, 5572, 5573, 5570, 5576, 5577, 6009, 5581, 5582, 6009, - 6009, 5580, 6009, 6009, 6009, 6009, 6009, 6009, 6009, 6009, + 5458, 6134, 5461, 5454, 5456, 5462, 5464, 5467, 6134, 5479, + 5469, 5474, 5477, 6134, 6134, 5481, 6134, 5484, 5485, 5478, + 5494, 5486, 5487, 5497, 5499, 6134, 5491, 5500, 5501, 5502, + 5503, 6134, 5505, 5507, 5508, 5510, 5515, 5516, 5517, 5518, + 5519, 6134, 5522, 5521, 5529, 5531, 6134, 5525, 5537, 6134, + 6134, 5543, 5547, 5375, 6134, 6134, 6134, 5544, 5538, 5552, + 6134, 5554, 5558, 5562, 5566, 5561, 6134, 5568, 5569, 5570, + 6134, 6134, 5571, 5572, 5573, 5575, 6134, 6134, 5576, 5579, + 5577, 5580, 5582, 6134, 5585, 5590, 5593, 5596, 5605, 5583, + 5602, 5600, 5614, 5616, 5606, 5611, 5615, 5617, 5618, 5619, - 5585, 6009, 5583, 5598, 5600, 5602, 6009, 5590, 5603, 5511, - 5604, 5592, 6009, 5605, 5607, 5609, 5608, 5611, 5615, 5617, - 5619, 5621, 5620, 5622, 5625, 5623, 5629, 5627, 5631, 5637, - 6009, 6009, 6009, 5635, 5633, 5644, 5645, 5656, 5657, 5660, - 5662, 5646, 5650, 5663, 5664, 5667, 5652, 5668, 5679, 5671, - 5674, 5675, 5676, 5682, 5678, 5684, 5688, 6009, 5689, 6009, - 5690, 6009, 6009, 5692, 5694, 5697, 5698, 5706, 5707, 5699, - 5702, 5709, 5711, 5719, 5721, 6009, 5710, 5712, 6009, 5722, - 5723, 6009, 5714, 5724, 5725, 5726, 5730, 5733, 5735, 5737, - 5746, 6009, 6009, 5738, 5741, 5747, 5749, 5750, 5757, 5753, + 5621, 5630, 5627, 5629, 5635, 5632, 6134, 6134, 5640, 5642, + 5643, 6134, 6134, 5645, 5647, 5649, 5651, 5654, 5656, 5658, + 6134, 5659, 5661, 5662, 5663, 5664, 6134, 5666, 5670, 5665, + 5673, 5667, 5676, 5672, 5682, 6134, 6134, 5674, 5688, 5678, + 5689, 5683, 6134, 5693, 5700, 5695, 5697, 5698, 5703, 5699, + 6134, 5705, 5707, 6134, 6134, 5708, 6134, 6134, 5706, 6134, + 6134, 6134, 6134, 6134, 6134, 6134, 5710, 6134, 5712, 5719, + 5727, 5729, 6134, 5714, 5722, 5720, 5730, 5733, 6134, 5734, + 5735, 5736, 5738, 5739, 5742, 5745, 5744, 5748, 5749, 5751, + 5752, 5753, 5756, 5759, 5755, 5761, 5764, 6134, 6134, 6134, - 5756, 5760, 5762, 5763, 5770, 6009, 5769, 5771, 5773, 6009, - 5774, 5775, 5777, 5779, 5780, 5787, 5783, 5788, 6009, 5785, - 6009, 5790, 5791, 5792, 5793, 5795, 5796, 5804, 5806, 5807, - 6009, 5808, 5815, 5810, 5817, 5821, 5819, 5823, 5813, 5826, - 5828, 5835, 5839, 5836, 5840, 5827, 5844, 5831, 6009, 5842, - 5845, 6009, 5848, 5851, 5852, 5854, 5857, 6009, 5860, 5855, - 5861, 5862, 5866, 5868, 6009, 5870, 5877, 5872, 6009, 5878, - 6009, 6009, 5881, 5882, 5884, 5888, 5890, 6009, 6009, 6009, - 5917, 5924, 5931, 5938, 5945, 88, 5952, 5959, 5966, 5973, - 5980, 5987, 5994, 6001 + 5770, 5771, 5773, 5774, 5778, 5785, 5788, 5790, 5775, 5779, + 5792, 5793, 5796, 5782, 5797, 5806, 5802, 5803, 5804, 5805, + 5811, 5814, 5808, 5817, 5819, 6134, 5820, 6134, 5821, 6134, + 6134, 5827, 5828, 5540, 5822, 5830, 5837, 5832, 5834, 5833, + 5838, 5845, 5849, 6134, 6134, 5840, 5842, 6134, 5850, 5851, + 6134, 5853, 5854, 5856, 5857, 5858, 5860, 5863, 5867, 5866, + 6134, 6134, 5869, 5874, 5876, 5878, 5880, 5887, 5882, 5886, + 5888, 5894, 5884, 5896, 6134, 5898, 5900, 5902, 6134, 5904, + 5906, 5907, 5909, 5910, 5917, 5912, 5913, 6134, 5915, 6134, + 5919, 5921, 5922, 5920, 5923, 5924, 5934, 5936, 5932, 6134, + 5938, 5943, 5940, 5946, 5948, 5950, 5951, 5952, 5954, 5956, + 5960, 5966, 5963, 5967, 5957, 5968, 5969, 6134, 5978, 5972, + 6134, 5975, 5979, 5981, 5982, 5985, 6134, 5990, 5983, 5987, + 5992, 5995, 5996, 6134, 5998, 6005, 6007, 6134, 6008, 6134, + 6134, 6010, 5999, 6009, 6012, 6017, 6134, 6134, 6134, 6042, + 6049, 6056, 6063, 6070, 88, 6077, 6084, 6091, 6098, 6105, + 6112, 6119, 6126 } ; -static const flex_int16_t yy_def[3095] = +static const flex_int16_t yy_def[3164] = { 0, - 3080, 1, 3081, 3081, 3082, 3082, 3083, 3083, 3084, 3084, - 3085, 3085, 3080, 3086, 3080, 3080, 3080, 3080, 3087, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3088, 3080, 3080, 3080, 3088, 3089, 3080, 3080, - 3080, 3089, 3090, 3080, 3080, 3080, 3080, 3090, 3091, 3080, - 3080, 3080, 3091, 3092, 3080, 3093, 3080, 3092, 3092, 3086, - 3086, 3080, 3094, 3087, 3094, 3087, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3149, 1, 3150, 3150, 3151, 3151, 3152, 3152, 3153, 3153, + 3154, 3154, 3149, 3155, 3149, 3149, 3149, 3149, 3156, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3157, 3149, 3149, 3149, 3157, 3158, 3149, 3149, + 3149, 3158, 3159, 3149, 3149, 3149, 3149, 3159, 3160, 3149, + 3149, 3149, 3160, 3161, 3149, 3162, 3149, 3161, 3161, 3155, + 3155, 3149, 3163, 3156, 3163, 3156, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3088, 3088, 3089, 3089, 3090, 3090, 3080, 3091, 3091, - 3092, 3092, 3093, 3093, 3092, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3157, 3157, 3158, 3158, 3159, 3159, 3149, 3160, 3160, + 3161, 3161, 3162, 3162, 3161, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3092, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3092, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3080, 3086, 3092, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3149, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3092, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3080, 3080, 3086, 3080, 3080, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3149, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3149, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3092, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3092, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, + 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3080, 3086, 3080, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3149, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, - 3086, 3080, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3080, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3149, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3080, 3086, + 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3080, 3080, - 3086, 3080, 3086, 3080, 3086, 3086, 3080, 3080, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3080, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3080, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3149, + 3155, 3149, 3155, 3155, 3149, 3149, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3080, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3080, + 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3149, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3149, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3149, 3155, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3080, 3086, 3080, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3080, 3080, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3080, 3080, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3149, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3149, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, + 3149, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3080, 3086, 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3080, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, 3086, 3080, - 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3080, 3080, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3149, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3149, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, + 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3080, 3080, 3086, 3080, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3080, 3080, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, - 3080, 3086, 3086, 3086, 3080, 3080, 3080, 3086, 3080, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3149, 3155, 3149, 3155, 3149, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3149, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3149, 3149, 3155, 3149, 3155, 3155, 3155, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3080, 3080, - 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3086, 3086, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3080, 3086, 3080, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, - 3080, 3086, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3149, 3149, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3149, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3149, + 3149, 3155, 3155, 3155, 3149, 3149, 3149, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3149, 3149, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3086, 3080, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, - 3086, 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3080, - 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3080, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, + 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, + 3155, 3149, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3155, 3155, 3149, 3149, 3155, 3149, 3149, 3155, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3155, 3149, 3155, 3155, + 3155, 3155, 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 3149, - 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3080, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3080, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3086, 3080, 3086, - 3086, 3080, 3086, 3086, 3086, 3086, 3086, 3080, 3086, 3086, - 3086, 3086, 3086, 3086, 3080, 3086, 3086, 3086, 3080, 3086, - 3080, 3080, 3086, 3086, 3086, 3086, 3086, 3080, 3080, 0, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080 + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, 3155, 3149, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3149, 3155, 3155, 3149, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3149, 3149, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3155, 3155, 3155, + 3155, 3155, 3155, 3149, 3155, 3155, 3155, 3149, 3155, 3149, + 3149, 3155, 3155, 3155, 3155, 3155, 3149, 3149, 0, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149 } ; -static const flex_int16_t yy_nxt[6050] = +static const flex_int16_t yy_nxt[6175] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1460,7 +1482,7 @@ static const flex_int16_t yy_nxt[6050] = 71, 125, 136, 137, 126, 122, 123, 71, 124, 71, 130, 127, 131, 71, 138, 128, 129, 71, 139, 159, - 156, 132, 140, 146, 945, 146, 146, 133, 146, 75, + 156, 132, 140, 146, 904, 146, 146, 133, 146, 75, 71, 75, 75, 151, 75, 151, 151, 70, 151, 70, 70, 154, 70, 71, 75, 71, 75, 75, 70, 75, 71, 71, 172, 71, 157, 75, 76, 71, 71, 166, @@ -1509,602 +1531,616 @@ static const flex_int16_t yy_nxt[6050] = 366, 367, 368, 363, 71, 71, 71, 370, 71, 374, 375, 71, 369, 377, 373, 71, 71, 71, 376, 372, 71, 378, 371, 379, 71, 381, 71, 71, 382, 71, - 71, 71, 71, 385, 71, 380, 386, 71, 388, 71, + 71, 71, 71, 385, 71, 380, 386, 71, 388, 147, 71, 390, 391, 387, 71, 383, 384, 71, 392, 71, - 71, 389, 71, 393, 71, 71, 395, 396, 397, 399, - 71, 71, 71, 71, 71, 71, 403, 71, 71, 398, + 71, 389, 71, 393, 71, 71, 395, 396, 397, 398, + 71, 71, 71, 71, 71, 71, 71, 404, 401, 71, - 394, 404, 71, 71, 71, 402, 406, 71, 400, 71, - 409, 405, 401, 71, 71, 71, 407, 411, 414, 413, - 71, 408, 410, 415, 71, 416, 71, 71, 71, 71, - 71, 425, 429, 424, 412, 71, 423, 71, 71, 440, - 426, 430, 427, 71, 417, 432, 433, 418, 71, 71, - 431, 434, 419, 420, 421, 422, 435, 71, 428, 71, - 71, 71, 436, 71, 439, 437, 442, 71, 438, 441, - 71, 71, 444, 71, 71, 443, 445, 71, 446, 71, - 71, 451, 448, 71, 457, 456, 447, 71, 71, 452, - 71, 453, 71, 71, 450, 147, 71, 449, 458, 71, + 394, 71, 405, 71, 71, 403, 71, 407, 71, 410, + 400, 406, 402, 71, 399, 71, 412, 415, 71, 71, + 408, 416, 409, 71, 411, 71, 71, 414, 71, 71, + 426, 417, 71, 413, 71, 424, 71, 71, 71, 427, + 430, 428, 464, 418, 145, 431, 419, 425, 71, 71, + 432, 420, 421, 422, 423, 435, 71, 429, 433, 434, + 436, 71, 71, 440, 71, 437, 438, 71, 71, 439, + 443, 71, 71, 441, 71, 445, 442, 444, 71, 71, + 71, 71, 71, 446, 447, 452, 71, 453, 71, 454, + 448, 71, 71, 470, 71, 71, 458, 451, 455, 449, - 454, 459, 461, 455, 462, 71, 463, 460, 464, 71, - 71, 469, 71, 470, 471, 71, 71, 472, 468, 71, - 71, 465, 71, 473, 466, 71, 467, 71, 521, 474, - 71, 71, 71, 475, 488, 71, 483, 485, 71, 71, - 71, 476, 71, 477, 487, 478, 484, 486, 499, 490, - 489, 500, 152, 498, 71, 71, 501, 71, 479, 504, - 502, 480, 71, 481, 71, 482, 71, 71, 491, 492, - 505, 506, 71, 503, 71, 71, 71, 71, 493, 71, - 494, 495, 496, 507, 508, 497, 71, 71, 511, 512, - 71, 518, 510, 509, 517, 71, 515, 516, 514, 513, + 457, 450, 71, 71, 71, 71, 465, 471, 456, 459, + 460, 71, 71, 71, 484, 462, 461, 463, 71, 466, + 469, 71, 467, 473, 468, 472, 71, 71, 71, 71, + 474, 71, 71, 71, 143, 489, 475, 71, 71, 71, + 476, 152, 485, 486, 487, 488, 500, 491, 477, 71, + 478, 490, 479, 499, 501, 71, 71, 71, 505, 502, + 71, 503, 504, 71, 71, 480, 507, 71, 481, 71, + 482, 506, 483, 71, 509, 492, 493, 71, 71, 71, + 71, 512, 508, 71, 71, 494, 71, 495, 496, 497, + 510, 71, 498, 513, 518, 71, 519, 511, 520, 71, - 520, 71, 519, 71, 71, 525, 71, 71, 71, 71, - 71, 71, 71, 71, 528, 523, 529, 530, 524, 71, - 71, 522, 71, 71, 527, 535, 537, 71, 532, 533, - 531, 538, 526, 71, 534, 71, 540, 71, 71, 71, - 71, 71, 549, 536, 71, 71, 539, 71, 71, 551, - 546, 545, 541, 542, 550, 543, 71, 71, 544, 554, - 552, 547, 71, 548, 71, 71, 553, 71, 555, 71, - 556, 557, 558, 71, 71, 561, 71, 71, 559, 563, - 71, 71, 560, 71, 566, 567, 564, 71, 71, 562, - 565, 71, 568, 71, 71, 71, 71, 573, 71, 571, + 71, 515, 521, 514, 516, 71, 517, 526, 71, 71, + 522, 71, 524, 71, 71, 523, 71, 530, 531, 525, + 71, 529, 71, 71, 71, 71, 71, 71, 536, 538, + 528, 71, 71, 541, 71, 539, 527, 71, 71, 533, + 534, 535, 532, 71, 71, 555, 537, 71, 71, 567, + 540, 71, 543, 542, 544, 71, 547, 71, 546, 71, + 71, 545, 550, 558, 556, 557, 560, 548, 71, 549, + 551, 552, 71, 71, 553, 554, 71, 559, 71, 71, + 71, 564, 562, 563, 71, 565, 71, 569, 71, 71, + 71, 71, 572, 71, 561, 570, 71, 573, 71, 568, - 572, 71, 569, 71, 71, 574, 71, 71, 71, 579, - 575, 580, 71, 582, 570, 578, 71, 71, 71, 71, - 581, 576, 577, 583, 71, 585, 71, 587, 71, 71, - 71, 71, 71, 71, 71, 597, 589, 584, 590, 586, - 588, 71, 71, 592, 71, 71, 71, 600, 596, 599, - 591, 593, 595, 594, 598, 71, 71, 71, 601, 71, - 604, 606, 607, 71, 602, 610, 71, 603, 71, 609, - 71, 71, 71, 605, 71, 71, 71, 613, 71, 616, - 71, 71, 71, 608, 612, 617, 619, 71, 71, 611, - 71, 71, 71, 618, 71, 633, 614, 615, 620, 71, + 574, 71, 571, 71, 566, 71, 577, 71, 575, 71, + 578, 71, 579, 71, 71, 71, 71, 71, 585, 576, + 580, 581, 71, 588, 71, 71, 584, 582, 586, 587, + 589, 583, 71, 591, 71, 71, 593, 590, 71, 71, + 71, 71, 71, 71, 71, 603, 71, 595, 71, 596, + 71, 71, 605, 71, 598, 606, 592, 604, 71, 594, + 602, 597, 599, 601, 600, 71, 71, 607, 71, 610, + 71, 613, 71, 608, 616, 71, 609, 71, 615, 71, + 71, 71, 611, 71, 71, 612, 619, 71, 622, 71, + 71, 71, 614, 618, 623, 625, 71, 71, 617, 71, - 71, 622, 71, 636, 145, 71, 621, 71, 623, 632, - 631, 634, 71, 624, 643, 625, 635, 639, 71, 71, - 71, 626, 71, 627, 637, 640, 628, 629, 638, 644, - 71, 71, 649, 630, 641, 71, 71, 642, 646, 647, - 645, 71, 650, 71, 652, 71, 71, 71, 71, 71, - 71, 71, 71, 648, 71, 658, 651, 71, 654, 71, - 653, 659, 655, 662, 71, 71, 71, 656, 663, 661, - 660, 657, 152, 665, 71, 71, 664, 666, 71, 71, - 71, 667, 71, 668, 672, 71, 71, 674, 669, 71, - 670, 676, 71, 677, 675, 673, 671, 679, 71, 71, + 71, 71, 71, 656, 71, 620, 624, 71, 621, 646, + 71, 71, 626, 628, 639, 152, 627, 71, 629, 637, + 640, 71, 638, 630, 71, 631, 643, 641, 642, 71, + 644, 632, 71, 633, 650, 71, 634, 635, 71, 71, + 71, 71, 71, 636, 645, 651, 71, 649, 647, 653, + 71, 648, 71, 658, 71, 652, 71, 71, 654, 71, + 71, 655, 71, 71, 71, 659, 660, 657, 664, 665, + 71, 661, 71, 71, 71, 71, 662, 667, 668, 669, + 152, 663, 671, 666, 670, 672, 71, 71, 71, 673, + 71, 71, 71, 71, 674, 678, 71, 71, 680, 71, - 71, 678, 71, 71, 71, 681, 71, 71, 71, 71, - 680, 684, 685, 143, 682, 690, 686, 71, 71, 683, - 691, 71, 71, 687, 689, 700, 688, 693, 71, 695, - 692, 694, 71, 696, 71, 71, 697, 71, 698, 699, - 71, 71, 71, 71, 71, 701, 704, 71, 71, 71, - 703, 71, 705, 709, 71, 708, 71, 71, 710, 71, - 702, 71, 712, 71, 715, 71, 71, 71, 707, 71, - 71, 706, 716, 71, 711, 71, 718, 713, 71, 717, - 71, 719, 71, 714, 721, 720, 71, 722, 71, 730, - 71, 71, 729, 723, 724, 725, 726, 728, 71, 71, + 675, 681, 676, 682, 71, 679, 683, 685, 677, 684, + 71, 686, 71, 71, 71, 71, 71, 687, 71, 71, + 71, 690, 691, 696, 688, 71, 71, 692, 697, 71, + 689, 699, 71, 71, 693, 701, 695, 694, 698, 700, + 71, 71, 702, 71, 703, 71, 704, 705, 71, 71, + 71, 706, 71, 71, 707, 71, 712, 71, 710, 71, + 71, 709, 711, 71, 714, 715, 71, 716, 71, 708, + 71, 71, 71, 718, 71, 720, 71, 71, 713, 71, + 71, 726, 723, 71, 717, 721, 719, 71, 727, 71, + 71, 71, 71, 729, 71, 724, 71, 722, 730, 736, - 71, 71, 727, 731, 734, 732, 71, 71, 71, 735, - 71, 71, 736, 71, 71, 71, 743, 71, 739, 741, - 71, 71, 71, 71, 737, 71, 740, 733, 738, 744, - 749, 71, 747, 71, 751, 742, 71, 748, 746, 750, - 745, 752, 753, 71, 71, 71, 754, 71, 71, 758, - 755, 71, 760, 71, 71, 71, 759, 761, 71, 71, - 71, 763, 757, 71, 762, 756, 764, 71, 71, 71, - 71, 770, 771, 765, 767, 71, 766, 71, 71, 772, - 773, 71, 775, 71, 71, 779, 152, 777, 768, 769, - 776, 71, 71, 785, 71, 782, 71, 784, 774, 781, + 725, 71, 731, 728, 71, 733, 737, 71, 71, 732, + 734, 740, 735, 71, 71, 71, 71, 71, 742, 745, + 743, 738, 741, 739, 71, 71, 71, 746, 71, 71, + 747, 71, 71, 750, 71, 71, 752, 754, 71, 71, + 71, 71, 744, 71, 748, 751, 760, 749, 755, 71, + 758, 757, 71, 71, 753, 759, 71, 71, 71, 756, + 762, 765, 761, 763, 764, 71, 71, 767, 71, 769, + 766, 71, 771, 785, 71, 71, 770, 772, 71, 71, + 774, 71, 768, 71, 773, 775, 71, 71, 71, 781, + 71, 71, 778, 71, 776, 71, 777, 783, 784, 71, - 783, 71, 778, 71, 780, 786, 71, 71, 71, 788, - 71, 71, 71, 71, 794, 71, 71, 71, 71, 795, - 71, 71, 71, 71, 71, 787, 789, 796, 790, 791, - 71, 792, 797, 793, 799, 801, 798, 803, 71, 802, - 71, 800, 71, 71, 804, 71, 71, 71, 71, 808, - 805, 71, 71, 71, 71, 71, 817, 150, 815, 806, - 71, 807, 71, 810, 809, 71, 811, 71, 816, 812, - 813, 814, 71, 820, 71, 71, 818, 71, 71, 819, - 822, 821, 71, 71, 824, 71, 71, 148, 827, 826, - 823, 825, 828, 71, 71, 831, 71, 71, 829, 830, + 786, 71, 71, 791, 790, 788, 779, 780, 787, 782, + 71, 71, 793, 71, 795, 71, 792, 794, 71, 71, + 789, 797, 71, 71, 71, 799, 71, 71, 71, 71, + 805, 71, 71, 71, 71, 806, 71, 71, 71, 71, + 796, 798, 800, 807, 801, 802, 71, 803, 808, 804, + 810, 812, 809, 814, 71, 71, 71, 811, 71, 71, + 71, 813, 71, 71, 819, 71, 71, 816, 815, 71, + 71, 71, 71, 71, 828, 817, 826, 818, 71, 821, + 820, 71, 829, 822, 823, 824, 827, 71, 825, 830, + 71, 71, 831, 71, 71, 833, 71, 71, 71, 838, - 834, 71, 71, 832, 152, 71, 833, 71, 838, 837, - 835, 839, 71, 71, 836, 71, 71, 71, 845, 71, - 71, 846, 841, 848, 71, 71, 840, 71, 71, 847, - 842, 843, 851, 71, 849, 71, 71, 844, 71, 853, - 71, 857, 71, 71, 71, 854, 850, 71, 852, 71, - 858, 859, 71, 71, 71, 71, 71, 71, 856, 71, - 71, 855, 872, 71, 871, 71, 875, 860, 861, 869, - 870, 877, 862, 71, 71, 873, 71, 880, 863, 71, - 874, 878, 864, 71, 876, 865, 71, 71, 879, 71, - 881, 889, 866, 867, 147, 868, 71, 71, 882, 883, + 71, 832, 71, 71, 837, 839, 71, 834, 840, 836, + 71, 841, 835, 71, 71, 71, 845, 843, 842, 152, + 71, 71, 844, 846, 848, 71, 71, 847, 849, 71, + 850, 71, 71, 71, 851, 71, 853, 71, 852, 856, + 71, 71, 857, 859, 71, 854, 860, 71, 862, 71, + 858, 864, 861, 855, 71, 863, 71, 71, 868, 71, + 71, 865, 71, 71, 71, 71, 71, 869, 71, 870, + 71, 71, 883, 71, 71, 867, 150, 885, 871, 71, + 882, 866, 71, 880, 71, 873, 71, 881, 872, 71, + 884, 71, 886, 888, 874, 71, 887, 889, 875, 892, - 890, 884, 71, 71, 885, 891, 894, 895, 71, 886, - 71, 71, 71, 897, 893, 887, 888, 892, 896, 71, - 899, 71, 71, 71, 71, 898, 900, 901, 902, 903, - 71, 71, 71, 904, 905, 71, 71, 71, 71, 907, - 71, 911, 71, 71, 71, 910, 71, 71, 914, 71, - 71, 906, 145, 918, 916, 919, 908, 909, 912, 71, - 913, 921, 915, 920, 71, 71, 922, 71, 924, 925, - 923, 917, 71, 927, 71, 71, 71, 926, 71, 71, - 71, 928, 929, 931, 71, 932, 71, 71, 930, 71, - 71, 71, 71, 938, 71, 933, 935, 936, 71, 71, + 890, 876, 71, 71, 891, 71, 71, 900, 877, 878, + 71, 879, 71, 893, 894, 906, 895, 71, 71, 896, + 71, 902, 903, 71, 897, 71, 71, 901, 148, 905, + 898, 899, 911, 71, 71, 908, 907, 910, 71, 71, + 913, 914, 71, 915, 71, 912, 71, 71, 909, 916, + 917, 918, 919, 71, 71, 71, 920, 71, 71, 71, + 71, 71, 923, 71, 927, 71, 71, 921, 926, 71, + 71, 930, 71, 71, 936, 71, 922, 932, 934, 924, + 925, 928, 71, 929, 71, 147, 937, 935, 71, 71, + 931, 938, 71, 939, 940, 933, 941, 946, 71, 943, - 71, 71, 71, 941, 71, 71, 940, 934, 939, 71, - 943, 937, 71, 944, 947, 71, 71, 946, 948, 942, - 71, 949, 71, 71, 954, 71, 956, 951, 71, 955, - 71, 952, 71, 71, 950, 71, 953, 71, 71, 71, - 961, 963, 959, 957, 964, 71, 71, 71, 962, 71, - 71, 958, 966, 71, 71, 71, 71, 71, 968, 960, - 71, 974, 71, 977, 972, 71, 71, 965, 71, 71, - 967, 71, 970, 969, 971, 978, 71, 979, 975, 973, - 71, 976, 982, 71, 71, 981, 71, 980, 984, 985, - 71, 71, 71, 71, 983, 987, 71, 71, 71, 71, + 71, 71, 71, 942, 944, 71, 71, 947, 71, 948, + 71, 71, 945, 71, 71, 71, 71, 954, 71, 949, + 951, 952, 71, 71, 71, 71, 71, 957, 71, 71, + 956, 950, 955, 71, 959, 953, 71, 960, 963, 71, + 71, 962, 964, 958, 71, 965, 71, 71, 71, 970, + 961, 71, 972, 71, 971, 71, 968, 71, 966, 71, + 71, 969, 71, 71, 71, 977, 979, 71, 973, 975, + 71, 967, 982, 978, 980, 71, 974, 71, 71, 71, + 71, 71, 71, 976, 981, 71, 71, 71, 993, 990, + 988, 983, 71, 71, 71, 71, 71, 984, 985, 71, - 989, 994, 995, 997, 986, 71, 71, 71, 71, 71, - 1001, 988, 996, 990, 999, 1000, 992, 71, 991, 993, - 71, 71, 71, 71, 71, 998, 71, 1007, 1005, 1008, - 71, 71, 1012, 1009, 1003, 71, 1002, 71, 71, 71, - 1014, 71, 1004, 71, 71, 1006, 71, 1017, 152, 1010, - 1011, 1016, 71, 71, 71, 1020, 71, 1019, 71, 1013, - 71, 1015, 71, 1023, 71, 71, 1021, 1018, 71, 71, - 1035, 71, 71, 1038, 71, 1036, 1022, 71, 1026, 1024, - 71, 71, 143, 71, 1040, 1027, 1025, 1037, 71, 1028, - 71, 71, 71, 1029, 71, 1030, 1041, 1042, 71, 1031, + 987, 986, 994, 71, 991, 989, 992, 995, 71, 998, + 997, 996, 71, 999, 1001, 71, 71, 1000, 71, 71, + 71, 71, 71, 1010, 71, 1003, 1011, 1005, 1002, 71, + 1013, 71, 71, 71, 71, 71, 71, 71, 1004, 1017, + 1006, 1008, 1015, 1007, 1009, 1012, 1016, 71, 71, 71, + 71, 1023, 71, 1014, 1021, 1022, 1018, 1024, 71, 1019, + 71, 1025, 71, 71, 1028, 71, 71, 1020, 1030, 71, + 71, 71, 1033, 152, 71, 1027, 1032, 71, 1026, 71, + 1036, 1035, 71, 71, 1031, 1029, 71, 71, 71, 1034, + 71, 1039, 71, 71, 71, 1051, 71, 1054, 71, 71, - 1053, 1032, 1039, 1043, 1045, 1044, 1033, 1050, 1047, 1046, - 71, 1034, 71, 71, 71, 71, 1048, 71, 1054, 1051, - 71, 71, 1061, 71, 1059, 71, 1060, 1058, 1049, 1052, - 71, 1055, 71, 1062, 1057, 1063, 1056, 71, 71, 71, - 71, 71, 71, 71, 71, 1078, 71, 1064, 1075, 71, - 71, 71, 1074, 71, 1077, 1079, 1065, 1066, 71, 1067, - 1076, 1080, 71, 1081, 1068, 71, 1069, 1085, 71, 71, - 1082, 71, 1070, 1086, 1087, 71, 71, 1071, 1072, 1088, - 71, 1083, 71, 1084, 1073, 1091, 71, 1092, 1090, 71, - 1089, 71, 71, 71, 1097, 71, 71, 71, 1094, 71, + 1052, 71, 71, 1038, 1037, 71, 1040, 1042, 71, 1056, + 1043, 71, 1041, 1044, 71, 71, 1053, 1045, 71, 1046, + 1059, 1081, 1058, 1047, 1055, 1048, 1057, 71, 1061, 71, + 1049, 71, 1060, 1062, 71, 1050, 71, 71, 71, 71, + 1064, 1063, 71, 1067, 1066, 1071, 145, 1070, 71, 1069, + 71, 1075, 1065, 1068, 71, 1076, 1074, 71, 1077, 71, + 1072, 71, 1073, 1078, 1079, 71, 71, 71, 71, 71, + 71, 71, 1091, 71, 71, 1094, 1080, 71, 1090, 1096, + 71, 1093, 1095, 1082, 71, 1083, 71, 1092, 71, 1101, + 1084, 71, 1085, 71, 1097, 71, 1102, 71, 1086, 71, - 71, 1095, 1100, 71, 1098, 1093, 71, 71, 71, 1096, - 71, 71, 71, 71, 71, 1099, 1105, 1102, 71, 1101, - 1104, 1106, 1109, 71, 1107, 1111, 1103, 1108, 71, 1110, - 71, 71, 71, 71, 1112, 71, 71, 71, 1117, 1122, - 1118, 1119, 1113, 71, 1114, 71, 1120, 1116, 71, 1115, - 71, 1121, 1125, 71, 71, 71, 1123, 1126, 71, 71, - 1127, 71, 71, 1128, 1124, 1129, 1136, 1130, 71, 71, - 71, 1132, 71, 71, 1131, 71, 1138, 71, 71, 1133, - 1140, 1134, 71, 71, 1135, 71, 1142, 71, 1139, 71, - 1137, 1141, 1144, 71, 1145, 71, 71, 71, 1147, 1143, + 71, 1106, 71, 1087, 1088, 1098, 71, 1099, 71, 1100, + 1089, 71, 1107, 1108, 1109, 1103, 1104, 1105, 71, 71, + 1112, 71, 71, 71, 71, 1110, 71, 1113, 71, 1118, + 71, 1111, 1115, 1116, 71, 71, 71, 71, 71, 1119, + 1114, 1121, 71, 71, 1117, 71, 71, 71, 71, 71, + 71, 71, 1123, 1120, 1126, 1125, 1127, 1122, 71, 1130, + 71, 71, 1124, 1129, 1128, 71, 1131, 1136, 1133, 71, + 1134, 71, 71, 71, 1132, 1135, 1138, 1139, 1140, 71, + 71, 1142, 71, 1143, 1137, 71, 1146, 71, 1141, 71, + 1150, 1147, 71, 71, 1148, 1144, 71, 1149, 71, 71, - 1148, 1146, 71, 1150, 71, 1153, 1154, 71, 1149, 71, - 1152, 71, 71, 71, 71, 1158, 1157, 71, 1151, 71, - 71, 1155, 71, 71, 1164, 1162, 1165, 1156, 71, 71, - 71, 71, 71, 1166, 1167, 1159, 1163, 71, 1160, 1169, - 1161, 71, 1168, 71, 1172, 71, 1174, 71, 1173, 1170, - 71, 71, 71, 71, 71, 71, 71, 71, 1179, 1180, - 1175, 1171, 1176, 71, 71, 71, 1185, 71, 1181, 1186, - 1177, 71, 71, 1178, 71, 71, 1183, 1189, 71, 1188, - 71, 1182, 1187, 71, 1184, 1193, 71, 71, 71, 71, - 1190, 71, 71, 71, 1191, 1192, 1195, 1199, 71, 71, + 71, 1145, 71, 1157, 71, 71, 1159, 71, 71, 71, + 1151, 71, 71, 1155, 71, 1153, 1161, 71, 1152, 1156, + 1154, 71, 1160, 143, 1163, 1158, 71, 71, 1162, 1164, + 71, 1165, 1166, 1167, 71, 1168, 71, 71, 71, 1169, + 71, 1174, 71, 1171, 1175, 71, 1173, 71, 1170, 71, + 71, 1176, 71, 1178, 1172, 71, 1179, 71, 71, 71, + 71, 71, 1183, 1185, 71, 1186, 1187, 1177, 71, 71, + 1180, 71, 71, 1184, 71, 1190, 1181, 1188, 1182, 1189, + 1193, 71, 1191, 71, 71, 71, 71, 71, 1192, 1194, + 1195, 71, 1196, 71, 1197, 71, 71, 71, 1200, 1201, - 71, 71, 1205, 71, 1194, 71, 1203, 1196, 1201, 71, - 71, 1198, 1202, 1200, 1204, 1207, 1197, 1208, 71, 71, - 1210, 71, 71, 71, 1209, 71, 71, 1211, 71, 1206, - 71, 71, 71, 1214, 71, 71, 1220, 71, 71, 1212, - 1213, 1217, 71, 71, 71, 1215, 3080, 1218, 71, 71, - 1216, 71, 1221, 1231, 1219, 1224, 1226, 71, 1223, 71, - 1222, 71, 1230, 71, 1225, 1227, 1233, 1228, 1232, 71, - 1229, 1234, 71, 71, 71, 1235, 71, 71, 71, 71, - 71, 1239, 1236, 1238, 1241, 1244, 71, 71, 71, 1242, - 71, 1237, 1245, 1246, 71, 71, 1240, 71, 1249, 1243, + 71, 71, 71, 1206, 1207, 1198, 71, 71, 1202, 71, + 71, 1209, 1199, 1204, 1210, 71, 71, 71, 1203, 1214, + 71, 1205, 1208, 71, 71, 71, 71, 71, 71, 1220, + 71, 1212, 1213, 71, 1216, 1211, 71, 71, 71, 1226, + 71, 71, 1215, 1224, 71, 1217, 71, 1219, 1222, 1223, + 1221, 1228, 1218, 1225, 1229, 71, 71, 71, 71, 71, + 71, 1227, 71, 1230, 1231, 71, 71, 71, 71, 1233, + 1232, 1235, 71, 1234, 71, 1237, 1241, 71, 71, 1238, + 71, 71, 1236, 1239, 71, 71, 71, 1251, 1253, 71, + 1245, 71, 1242, 1240, 71, 71, 1244, 71, 1243, 1247, - 1248, 71, 71, 71, 71, 71, 1250, 71, 71, 71, - 1247, 1256, 71, 71, 71, 71, 1251, 1252, 71, 1254, - 1255, 1257, 1253, 71, 1261, 71, 71, 1258, 71, 1262, - 1267, 1260, 71, 1259, 1265, 1263, 71, 71, 71, 71, - 1269, 71, 1268, 1264, 1271, 71, 1266, 1273, 71, 71, - 1272, 71, 1274, 71, 71, 1278, 3080, 1270, 1286, 1276, - 1275, 1277, 71, 1287, 1285, 71, 1288, 1279, 71, 71, - 1280, 1281, 1291, 1289, 71, 1282, 71, 71, 71, 71, - 71, 1283, 1292, 1290, 1293, 1284, 71, 1294, 71, 1296, - 71, 71, 71, 1297, 71, 1298, 71, 1295, 71, 71, + 1252, 71, 71, 71, 1254, 1246, 1256, 71, 1248, 1258, + 1249, 71, 71, 1250, 71, 1255, 1259, 1260, 71, 1262, + 71, 1257, 1265, 71, 71, 71, 71, 71, 71, 1263, + 1261, 1266, 1267, 1269, 71, 71, 71, 71, 1270, 1264, + 1272, 71, 71, 71, 1268, 1271, 71, 71, 71, 71, + 1273, 71, 71, 1275, 1277, 1278, 1274, 1276, 1282, 71, + 71, 71, 71, 71, 71, 1279, 1283, 1281, 71, 1280, + 1286, 71, 71, 71, 71, 1293, 1289, 1287, 71, 1284, + 1285, 71, 1288, 71, 71, 71, 1291, 1294, 71, 1297, + 1298, 1295, 1292, 1290, 1296, 1299, 71, 71, 1304, 71, - 1299, 1301, 1306, 1303, 71, 1307, 3080, 71, 71, 1300, - 1304, 71, 1308, 1310, 1302, 71, 71, 1305, 1311, 1309, - 1312, 71, 1313, 71, 1314, 71, 1315, 1316, 1317, 71, - 71, 1320, 1318, 1319, 71, 71, 71, 71, 71, 1323, - 71, 1321, 71, 1322, 1324, 71, 1325, 1327, 71, 1329, - 1328, 71, 1332, 1333, 71, 1334, 71, 1326, 71, 71, - 71, 71, 71, 71, 1335, 1337, 71, 1330, 71, 71, - 1331, 1339, 1336, 1342, 71, 1338, 1343, 71, 1345, 71, - 71, 1340, 1346, 71, 1344, 71, 1347, 71, 1351, 71, - 1348, 1341, 71, 1349, 1353, 71, 1350, 71, 1354, 71, + 1300, 71, 1302, 71, 1301, 71, 71, 1313, 1315, 1303, + 71, 71, 1311, 71, 1312, 1305, 71, 1314, 1306, 1307, + 1316, 1317, 71, 1308, 1326, 71, 71, 71, 71, 1309, + 1318, 1319, 71, 1310, 71, 1320, 71, 1322, 71, 71, + 71, 1327, 1323, 1321, 1324, 1329, 71, 71, 1325, 1332, + 1333, 71, 71, 71, 3149, 71, 71, 1334, 1328, 71, + 1330, 71, 1336, 1335, 71, 1331, 1346, 1337, 1345, 1338, + 71, 1339, 1344, 1340, 71, 1341, 1342, 1343, 71, 71, + 1349, 71, 71, 71, 71, 1350, 71, 1348, 1347, 1353, + 1351, 71, 71, 71, 71, 1359, 71, 1354, 71, 1360, - 71, 71, 1358, 71, 1355, 71, 71, 71, 71, 1360, - 71, 71, 1352, 1362, 71, 71, 1364, 71, 1366, 1363, - 71, 1356, 1357, 71, 71, 1359, 71, 1361, 1368, 1365, - 71, 1370, 1367, 71, 1369, 71, 71, 1379, 1371, 71, - 1372, 1373, 71, 1374, 1375, 71, 71, 71, 71, 1380, - 1381, 1376, 1377, 1382, 1378, 71, 71, 1383, 71, 71, - 1387, 71, 71, 71, 1385, 71, 71, 1384, 1391, 1392, - 1386, 71, 1394, 71, 71, 71, 71, 1393, 71, 71, - 71, 71, 1388, 71, 1401, 1389, 71, 1395, 71, 1390, - 71, 1398, 71, 1396, 1399, 71, 1397, 1405, 71, 1400, + 1355, 71, 71, 71, 1352, 71, 71, 71, 1358, 71, + 1361, 1356, 1357, 71, 1363, 1365, 71, 1362, 1368, 1364, + 71, 1367, 1369, 71, 71, 1366, 1371, 71, 71, 71, + 1372, 1370, 1373, 71, 71, 1377, 71, 71, 1374, 1375, + 1379, 71, 1381, 1376, 1378, 71, 1380, 71, 71, 1384, + 71, 71, 71, 71, 71, 1386, 71, 71, 71, 1388, + 1390, 71, 71, 3149, 1392, 1389, 71, 71, 1382, 1383, + 71, 1385, 1394, 1387, 71, 1391, 71, 1393, 1397, 1396, + 1395, 1398, 71, 71, 1400, 71, 71, 1399, 71, 71, + 1401, 1406, 71, 1407, 1403, 71, 1404, 71, 71, 71, - 1406, 71, 71, 1408, 1410, 71, 1402, 71, 1404, 1411, - 71, 71, 71, 1403, 71, 71, 1413, 71, 1407, 1414, - 71, 1409, 1419, 1412, 71, 1420, 1415, 71, 1473, 1416, - 1417, 1423, 71, 1418, 1421, 71, 71, 71, 1422, 1424, - 1426, 71, 71, 71, 71, 1427, 71, 1425, 71, 1431, - 71, 71, 71, 1429, 71, 1433, 71, 1438, 71, 71, - 1428, 1430, 1434, 1439, 71, 1435, 1432, 1442, 71, 71, - 1436, 71, 1437, 71, 71, 71, 1440, 71, 3080, 71, - 1443, 71, 71, 1441, 1449, 1445, 71, 1451, 1444, 1446, - 1447, 71, 71, 1450, 71, 1454, 1448, 1456, 71, 1452, + 1408, 1409, 71, 71, 1402, 1405, 71, 71, 1413, 71, + 71, 1410, 71, 1417, 1412, 1418, 71, 1411, 1420, 71, + 71, 71, 1419, 71, 71, 71, 1414, 71, 71, 71, + 1415, 71, 1427, 71, 1421, 1416, 71, 1424, 71, 71, + 1422, 1425, 71, 1423, 1431, 71, 1426, 1432, 71, 1428, + 1434, 71, 71, 71, 1430, 71, 71, 1436, 1429, 71, + 1438, 1433, 1437, 71, 1439, 71, 1441, 1440, 1442, 71, + 1435, 1443, 71, 71, 1444, 1447, 1449, 1445, 71, 1448, + 1446, 71, 71, 71, 71, 1450, 1452, 71, 1454, 1451, + 71, 1453, 71, 71, 71, 1457, 71, 71, 1459, 71, - 1453, 71, 71, 71, 71, 1460, 1461, 1455, 1457, 1459, - 71, 71, 71, 71, 1462, 71, 1463, 1464, 71, 71, - 71, 1467, 1458, 1465, 1468, 71, 71, 71, 1471, 1466, - 71, 71, 71, 1470, 71, 71, 1474, 1477, 71, 1479, - 1469, 71, 1478, 71, 1480, 71, 1475, 71, 1482, 71, - 1472, 71, 71, 1476, 71, 1481, 1486, 1483, 1485, 71, - 1484, 1490, 71, 71, 1493, 71, 71, 71, 1491, 1496, - 71, 1487, 1495, 71, 1488, 71, 71, 1489, 71, 71, - 71, 71, 71, 1504, 1494, 71, 71, 71, 1492, 1505, - 1507, 71, 1497, 71, 1501, 1498, 71, 1499, 1500, 1506, + 71, 1464, 1456, 71, 71, 1458, 71, 1465, 71, 1455, + 1461, 71, 1468, 71, 1460, 1462, 71, 1463, 71, 71, + 1469, 71, 1466, 71, 71, 1467, 71, 1471, 1475, 1477, + 1470, 1472, 71, 1476, 1473, 71, 71, 1480, 71, 71, + 1474, 71, 71, 1484, 1479, 1485, 71, 71, 1482, 71, + 1478, 71, 71, 1481, 1487, 71, 1501, 71, 1488, 1491, + 1486, 1483, 1490, 1492, 71, 71, 71, 1493, 1489, 71, + 71, 1494, 1495, 71, 71, 71, 71, 71, 1496, 71, + 1502, 71, 1498, 71, 1497, 71, 71, 71, 71, 1508, + 1499, 1504, 1500, 1505, 1509, 71, 71, 1510, 71, 1506, - 1503, 1509, 1502, 1508, 71, 71, 1511, 71, 71, 1510, - 71, 71, 71, 1514, 71, 71, 1512, 1515, 71, 1518, - 71, 1513, 1522, 71, 71, 1523, 1524, 1519, 1517, 71, - 1516, 71, 71, 71, 1521, 1520, 1527, 1528, 71, 1525, - 71, 71, 1526, 71, 1529, 1533, 1534, 71, 71, 71, - 71, 71, 71, 1538, 1539, 1537, 71, 71, 1530, 1531, - 71, 1541, 71, 1532, 71, 71, 1535, 1542, 1543, 71, - 1536, 71, 71, 1544, 1546, 71, 1540, 71, 1549, 71, - 71, 1545, 71, 71, 1548, 71, 71, 1553, 71, 1555, - 71, 71, 1547, 71, 1550, 1556, 71, 1560, 71, 1554, + 71, 1503, 1511, 71, 71, 1507, 71, 1512, 71, 1513, + 71, 1517, 1521, 1516, 71, 1514, 71, 1515, 71, 1518, + 71, 1522, 1524, 71, 71, 71, 71, 1527, 71, 71, + 1519, 1526, 1520, 71, 71, 71, 71, 71, 71, 1535, + 3149, 71, 1525, 1528, 1536, 1529, 1523, 71, 1530, 1532, + 1538, 71, 1534, 1531, 1539, 71, 71, 1533, 71, 1537, + 71, 1540, 1541, 71, 71, 71, 71, 1545, 71, 71, + 71, 1546, 1543, 1542, 1549, 71, 1555, 1544, 1553, 71, + 71, 1550, 71, 71, 1547, 1554, 1548, 71, 71, 71, + 1551, 1552, 71, 1558, 71, 71, 1559, 71, 1556, 1560, - 71, 1551, 1552, 71, 71, 1563, 1558, 71, 1557, 1565, - 71, 1566, 1561, 71, 71, 1568, 71, 71, 1559, 1564, - 71, 1562, 71, 71, 1571, 71, 1574, 71, 1570, 71, - 1573, 71, 71, 1567, 71, 71, 1581, 1576, 1569, 71, - 71, 1572, 71, 71, 1582, 71, 1579, 1575, 71, 1590, - 1577, 1578, 1585, 1586, 71, 71, 1588, 71, 71, 1580, - 1583, 1592, 1584, 1589, 71, 1587, 71, 71, 1594, 71, - 71, 71, 71, 1599, 71, 71, 1596, 1591, 1593, 1597, - 71, 1600, 71, 71, 71, 1595, 71, 1604, 1611, 1601, - 71, 1605, 71, 71, 71, 1598, 1608, 71, 1603, 1609, + 1557, 1564, 1565, 71, 71, 71, 71, 71, 71, 1561, + 1570, 1568, 1562, 71, 1569, 71, 71, 1563, 1572, 71, + 71, 71, 1566, 1573, 1574, 71, 1567, 71, 1571, 71, + 1577, 1575, 71, 71, 1580, 71, 71, 1576, 71, 71, + 71, 1579, 71, 1584, 71, 1586, 71, 71, 71, 1578, + 1581, 1587, 71, 1591, 1585, 71, 71, 1582, 1583, 71, + 71, 71, 1589, 1597, 1588, 1594, 1596, 71, 71, 1592, + 71, 1599, 71, 1590, 1593, 71, 1595, 71, 71, 71, + 71, 1602, 1605, 71, 1604, 71, 1601, 71, 1598, 71, + 71, 71, 1612, 71, 1600, 71, 71, 1603, 1606, 1607, - 1602, 71, 1612, 71, 1606, 71, 1607, 71, 1613, 1619, - 1615, 1610, 1616, 71, 71, 71, 1618, 71, 1621, 1620, - 71, 1622, 71, 1623, 1614, 71, 71, 1624, 1617, 71, - 71, 71, 71, 1630, 1631, 1629, 71, 1633, 1625, 71, - 71, 1632, 71, 71, 1626, 71, 1636, 71, 71, 1627, - 1635, 1628, 71, 1637, 71, 71, 71, 71, 71, 71, - 71, 1645, 71, 71, 71, 1634, 71, 71, 1643, 71, - 1638, 1641, 1642, 1644, 1639, 1640, 71, 1648, 71, 1646, - 1650, 71, 1647, 1652, 1654, 1649, 1651, 71, 1653, 71, - 1655, 71, 71, 71, 71, 71, 71, 71, 3080, 71, + 1613, 71, 71, 1610, 71, 1621, 1608, 1609, 71, 1617, + 1616, 71, 71, 1614, 1619, 1611, 1615, 71, 71, 1623, + 1625, 71, 1618, 1620, 71, 71, 71, 71, 1622, 71, + 71, 1624, 1627, 71, 1628, 71, 1630, 71, 1631, 71, + 71, 1636, 71, 1626, 1632, 1635, 71, 71, 1634, 1642, + 71, 1629, 71, 1639, 71, 71, 1640, 1633, 1637, 1643, + 71, 1646, 71, 1644, 71, 1650, 3149, 1638, 1641, 1647, + 71, 71, 71, 1649, 71, 1652, 1654, 1651, 71, 1645, + 71, 1653, 71, 1655, 71, 71, 71, 1648, 71, 71, + 1661, 71, 1660, 1662, 71, 71, 71, 1656, 1664, 71, - 71, 1658, 1660, 1661, 71, 71, 1662, 1667, 1659, 1657, - 1668, 71, 1663, 1656, 1664, 1669, 71, 1670, 1671, 1665, - 71, 71, 1666, 1672, 1673, 71, 71, 71, 71, 71, - 71, 71, 1676, 1677, 1674, 71, 71, 1685, 71, 71, - 1680, 71, 71, 71, 71, 1675, 1679, 1682, 1678, 71, - 1683, 1684, 1686, 71, 1681, 1691, 1687, 1688, 71, 1689, - 71, 71, 71, 1690, 71, 1695, 71, 71, 71, 1699, - 1692, 71, 1698, 71, 71, 1697, 1703, 71, 1696, 1694, - 71, 71, 1707, 1700, 71, 1693, 1701, 1708, 71, 1702, - 71, 1704, 71, 1713, 71, 1705, 1710, 1712, 1706, 71, + 1663, 71, 71, 1657, 71, 1658, 1666, 1668, 1659, 1667, + 71, 71, 1669, 71, 1665, 71, 71, 71, 71, 71, + 71, 71, 1677, 71, 71, 71, 71, 71, 1681, 1672, + 1673, 1670, 1674, 1671, 71, 1675, 1679, 71, 1680, 71, + 1678, 1684, 71, 1682, 1676, 71, 1683, 1686, 71, 71, + 1688, 71, 1689, 71, 71, 71, 71, 1690, 1685, 1687, + 71, 71, 71, 1691, 1694, 71, 71, 1696, 1704, 71, + 1697, 1695, 1693, 1698, 1705, 71, 71, 1692, 1699, 1703, + 1700, 71, 71, 71, 71, 1701, 1708, 1709, 71, 71, + 71, 1702, 71, 1706, 71, 1712, 71, 1710, 71, 1713, - 1715, 71, 1716, 1718, 1709, 71, 1711, 71, 71, 71, - 1717, 71, 1714, 1719, 71, 1722, 71, 71, 1726, 71, - 1724, 71, 71, 71, 71, 71, 1725, 1727, 1721, 1723, - 71, 1720, 71, 1730, 71, 71, 71, 1736, 71, 1731, - 1738, 1728, 1729, 71, 71, 1732, 71, 1733, 1739, 1734, - 1735, 1741, 71, 71, 71, 71, 1740, 71, 71, 1737, - 1746, 71, 71, 71, 1742, 71, 71, 1750, 71, 1752, - 1745, 1743, 71, 71, 1744, 71, 71, 1748, 1753, 71, - 1747, 1749, 1751, 71, 1754, 1756, 1759, 71, 1755, 71, - 1758, 71, 71, 1763, 71, 1757, 71, 71, 71, 71, + 1707, 71, 71, 1721, 71, 71, 71, 1716, 1711, 71, + 71, 1714, 1715, 1718, 1720, 71, 1719, 1722, 71, 1724, + 1717, 71, 1723, 71, 71, 71, 71, 1731, 1725, 1726, + 71, 71, 71, 71, 71, 1728, 71, 1727, 1734, 1739, + 1733, 71, 1735, 1730, 71, 1737, 1732, 1743, 1738, 1729, + 1740, 71, 1744, 71, 71, 71, 1736, 71, 71, 71, + 1749, 1751, 71, 1748, 71, 1741, 71, 1752, 1745, 1742, + 1746, 71, 1754, 71, 71, 71, 1753, 1750, 71, 1747, + 1755, 1758, 71, 71, 1756, 1762, 1760, 71, 71, 1757, + 71, 71, 1761, 71, 71, 1759, 1763, 71, 71, 3149, - 71, 71, 71, 1761, 1765, 71, 1774, 71, 1760, 1770, - 1764, 1762, 1766, 1767, 1771, 71, 71, 1768, 71, 1769, - 71, 1775, 1773, 1772, 1776, 71, 71, 1779, 71, 1778, - 71, 1777, 1782, 71, 1780, 71, 71, 71, 71, 1783, - 1781, 71, 71, 71, 71, 71, 71, 1788, 71, 71, - 1792, 71, 71, 1789, 3080, 71, 1798, 1784, 1790, 1786, - 1785, 1787, 71, 1791, 1793, 71, 1801, 1796, 71, 1795, - 1800, 71, 71, 1802, 1797, 71, 71, 1794, 71, 71, - 1799, 1806, 71, 1809, 1810, 71, 71, 1803, 1811, 71, - 71, 1804, 1807, 71, 1808, 71, 1805, 1813, 71, 71, + 71, 71, 1766, 71, 1772, 71, 1767, 71, 1774, 1764, + 1775, 1768, 1765, 1769, 71, 1770, 71, 1771, 1777, 71, + 1776, 71, 71, 71, 71, 1782, 1773, 71, 71, 71, + 71, 71, 1786, 71, 71, 71, 71, 1781, 1788, 71, + 1779, 1778, 1780, 71, 1784, 1792, 71, 1785, 1789, 1783, + 1787, 1790, 71, 71, 1794, 1795, 71, 1791, 1793, 71, + 71, 1799, 71, 71, 71, 71, 71, 71, 71, 1806, + 71, 1797, 1796, 1801, 71, 71, 1802, 1800, 71, 1798, + 1803, 1811, 1807, 71, 1804, 1810, 71, 1805, 71, 1809, + 1812, 71, 1808, 1813, 71, 1815, 1816, 71, 71, 71, - 1814, 1817, 71, 71, 1819, 71, 1812, 1818, 1820, 1821, - 71, 1815, 1823, 1822, 1816, 71, 71, 71, 71, 1828, - 1825, 1826, 71, 71, 1827, 71, 71, 71, 71, 1835, - 71, 1837, 71, 71, 71, 71, 1838, 71, 1829, 1830, - 1831, 1824, 71, 71, 1840, 1832, 1839, 1833, 1834, 1842, - 1836, 1843, 71, 1845, 1841, 71, 71, 71, 1847, 71, - 71, 1844, 71, 1849, 71, 71, 1852, 1853, 71, 71, - 1855, 71, 71, 71, 71, 71, 1846, 1861, 71, 1860, - 1850, 71, 1848, 1857, 1858, 71, 1851, 71, 71, 1854, - 71, 71, 71, 1867, 1859, 71, 1865, 1856, 1864, 71, + 71, 71, 1818, 1814, 71, 71, 71, 1819, 71, 71, + 1817, 71, 71, 71, 1824, 71, 71, 1828, 71, 1820, + 1825, 71, 71, 71, 1822, 1826, 1823, 1821, 1832, 71, + 1827, 1829, 71, 1835, 1834, 1833, 1831, 1836, 71, 1837, + 71, 71, 1838, 71, 1830, 71, 71, 71, 1842, 71, + 1845, 1839, 1846, 71, 1847, 71, 1840, 1843, 71, 1844, + 71, 1841, 1849, 71, 71, 1850, 71, 1848, 1853, 71, + 1854, 1855, 71, 71, 1857, 1856, 1859, 71, 71, 1851, + 71, 1852, 71, 71, 1862, 71, 1861, 71, 71, 1865, + 71, 1858, 71, 1864, 71, 71, 1868, 71, 1869, 1867, - 71, 1871, 1862, 1863, 71, 1870, 71, 71, 1874, 1876, - 71, 1875, 71, 1873, 71, 1869, 1866, 71, 71, 71, - 71, 1868, 71, 1877, 1872, 71, 71, 71, 1878, 1882, - 71, 1885, 1879, 71, 1881, 1886, 1887, 71, 71, 1880, - 71, 71, 71, 1883, 1890, 71, 71, 71, 1889, 1895, - 71, 1894, 71, 1884, 71, 71, 71, 1888, 1892, 1899, - 1891, 71, 1900, 1902, 71, 71, 1896, 1893, 71, 1897, - 1901, 1898, 1903, 1906, 71, 71, 1904, 71, 71, 71, - 71, 1905, 71, 1913, 1910, 71, 71, 1916, 71, 71, - 1915, 1908, 71, 1917, 71, 71, 1907, 1909, 1918, 71, + 71, 71, 1876, 1860, 71, 71, 3149, 1863, 71, 1870, + 1871, 1872, 1878, 1866, 71, 71, 1873, 1879, 71, 71, + 1874, 1875, 71, 1884, 1881, 1877, 1882, 71, 1880, 71, + 71, 71, 1888, 71, 1883, 71, 1885, 71, 1890, 71, + 71, 71, 1893, 1894, 71, 71, 1896, 71, 71, 71, + 1886, 71, 1887, 71, 1902, 71, 71, 1901, 1898, 1891, + 1899, 1889, 1892, 71, 71, 1895, 71, 71, 71, 71, + 1908, 71, 71, 1897, 1900, 1905, 1906, 1903, 71, 1904, + 1912, 71, 71, 1911, 1915, 1916, 71, 71, 1910, 1914, + 71, 71, 1907, 1917, 71, 71, 1919, 1909, 71, 71, - 1911, 1914, 1912, 71, 1919, 1923, 71, 1924, 71, 71, - 1920, 1925, 1927, 1928, 71, 1921, 1926, 71, 71, 71, - 71, 1932, 71, 1922, 71, 1930, 1931, 71, 1934, 71, - 71, 1937, 71, 1939, 1933, 1929, 71, 71, 71, 71, - 71, 1935, 71, 71, 71, 1945, 1944, 1943, 1940, 71, - 1941, 1946, 71, 3080, 1938, 1936, 1947, 71, 1949, 1942, - 71, 71, 71, 71, 71, 71, 1950, 1951, 1954, 1948, - 1953, 1952, 71, 71, 71, 1955, 71, 1957, 71, 71, - 1961, 71, 71, 71, 1960, 1956, 1958, 71, 1963, 71, - 1959, 1962, 1964, 1965, 71, 71, 71, 71, 71, 71, + 1918, 1913, 71, 71, 71, 71, 1923, 71, 1926, 1927, + 1928, 1922, 71, 71, 71, 71, 71, 71, 1920, 71, + 71, 1921, 1924, 1931, 71, 1936, 71, 71, 1930, 1935, + 71, 1925, 1929, 71, 1933, 71, 1937, 1940, 71, 1932, + 71, 1941, 1934, 1943, 71, 1938, 1939, 1942, 71, 1947, + 71, 1945, 1944, 71, 71, 71, 1946, 71, 71, 71, + 1951, 1954, 71, 71, 71, 1957, 71, 71, 1949, 1956, + 71, 1958, 1960, 71, 1948, 71, 1950, 1955, 1952, 1953, + 71, 1964, 71, 71, 1959, 71, 1961, 1965, 71, 1966, + 1968, 1962, 1969, 1963, 1967, 71, 71, 71, 71, 71, - 71, 1972, 1970, 71, 1967, 1971, 71, 71, 71, 1966, - 71, 71, 1974, 71, 1968, 71, 1969, 1973, 71, 1977, - 1980, 3080, 1976, 71, 1975, 71, 1981, 1983, 1979, 71, - 1978, 71, 1982, 71, 1984, 71, 1985, 1987, 71, 71, - 71, 71, 1986, 1988, 1993, 71, 71, 1995, 71, 1989, - 71, 1990, 1997, 71, 1991, 1992, 71, 71, 1996, 71, - 71, 2001, 1994, 71, 71, 1998, 1999, 71, 2000, 71, - 71, 71, 2002, 71, 71, 71, 71, 71, 71, 2004, - 2009, 2005, 2006, 2013, 71, 2003, 71, 71, 2008, 2012, - 2016, 2017, 71, 2010, 2014, 2011, 71, 2007, 2015, 71, + 1973, 71, 1971, 71, 71, 71, 71, 1975, 1978, 1970, + 1977, 1972, 1980, 1974, 71, 71, 1976, 71, 71, 71, + 71, 71, 71, 1986, 1985, 1984, 71, 1979, 3149, 1981, + 71, 1982, 1987, 71, 1983, 1988, 71, 1990, 71, 1994, + 71, 71, 71, 71, 1991, 1992, 1989, 1993, 71, 71, + 71, 1998, 1996, 1995, 1997, 71, 71, 71, 2002, 71, + 71, 71, 2001, 2006, 71, 71, 2004, 1999, 2000, 2003, + 2005, 71, 71, 71, 71, 71, 2013, 2011, 71, 71, + 71, 2008, 71, 2012, 71, 71, 71, 2018, 71, 2015, + 71, 2007, 2009, 3149, 2010, 71, 71, 2014, 2019, 2017, - 71, 2019, 2020, 71, 71, 71, 71, 71, 2022, 71, - 71, 2023, 2018, 71, 2024, 2028, 2026, 2021, 71, 71, - 2030, 2027, 2032, 71, 2025, 71, 71, 71, 71, 2029, - 2035, 2034, 2036, 2031, 71, 71, 71, 2040, 71, 2037, - 71, 71, 71, 71, 71, 2041, 2043, 2046, 71, 71, - 2047, 2033, 71, 2038, 2042, 71, 2039, 2050, 2045, 71, - 71, 2044, 2052, 71, 2051, 71, 71, 2048, 2056, 71, - 71, 2058, 71, 71, 2054, 2049, 71, 2059, 71, 71, - 71, 71, 2055, 2053, 2057, 2061, 71, 2060, 2065, 2067, - 2063, 2062, 71, 2064, 2068, 71, 71, 71, 71, 71, + 71, 2022, 2016, 71, 2021, 2023, 2020, 71, 71, 2028, + 71, 2025, 2026, 71, 71, 2024, 2029, 71, 71, 71, + 2034, 2027, 71, 71, 2036, 71, 71, 2037, 2038, 71, + 2030, 71, 2033, 2031, 2032, 71, 2040, 71, 71, 2035, + 71, 2041, 2043, 2039, 2042, 71, 71, 2046, 71, 71, + 71, 2045, 2044, 71, 71, 71, 71, 71, 2047, 71, + 71, 71, 71, 2058, 71, 2049, 2050, 2051, 2054, 71, + 71, 2048, 2053, 2057, 71, 2062, 71, 2061, 2059, 2056, + 71, 2055, 2052, 71, 71, 2064, 2065, 71, 71, 2060, + 71, 71, 2067, 71, 71, 2068, 2063, 71, 71, 2069, - 2066, 2069, 71, 2072, 2073, 71, 71, 71, 2070, 2071, - 2077, 71, 71, 71, 71, 2074, 2076, 71, 71, 71, - 71, 71, 71, 71, 2078, 2075, 71, 2086, 2081, 2080, - 2079, 2083, 2082, 2084, 71, 2088, 71, 71, 2085, 2087, - 71, 71, 2089, 2091, 71, 2095, 2092, 2097, 71, 71, - 71, 2099, 71, 2096, 71, 2090, 2093, 71, 2094, 2098, - 71, 2101, 3080, 71, 2104, 2102, 2106, 2103, 2100, 2105, - 71, 2107, 71, 71, 71, 71, 2108, 71, 2111, 71, - 71, 2112, 2109, 2110, 2115, 2116, 71, 71, 2117, 71, - 71, 2120, 71, 71, 71, 2113, 2126, 71, 2121, 71, + 2073, 2066, 2071, 71, 71, 2075, 2072, 2077, 71, 2070, + 71, 71, 71, 2080, 71, 71, 2074, 2079, 2076, 2081, + 2082, 71, 71, 2085, 71, 71, 71, 71, 71, 71, + 2086, 71, 2091, 71, 2088, 71, 2078, 2087, 2095, 2083, + 71, 2092, 2084, 2093, 71, 2090, 2089, 71, 71, 71, + 2097, 71, 2096, 71, 71, 2094, 2101, 71, 71, 2103, + 71, 2099, 71, 2102, 71, 2104, 71, 2098, 71, 2100, + 71, 2105, 2107, 2106, 71, 2108, 2110, 2112, 2109, 2114, + 71, 2111, 2113, 71, 71, 71, 71, 71, 71, 71, + 2117, 2118, 2115, 2122, 71, 71, 2116, 71, 2121, 71, - 2122, 2118, 2123, 71, 71, 2125, 2114, 71, 2119, 2124, - 71, 71, 71, 71, 2127, 2130, 2128, 71, 71, 71, - 71, 71, 2133, 71, 71, 71, 2137, 2139, 71, 2140, - 71, 71, 2129, 2132, 71, 71, 2131, 2134, 71, 2135, - 2136, 71, 71, 2142, 71, 2141, 2138, 2144, 71, 2146, - 2149, 71, 71, 2145, 2147, 71, 2150, 2143, 71, 71, - 2148, 71, 71, 71, 71, 71, 2160, 71, 71, 71, - 71, 2151, 2161, 71, 2152, 71, 2157, 2159, 71, 2198, - 2155, 2153, 2163, 2154, 2156, 2168, 2158, 71, 2162, 71, - 2165, 2164, 2166, 71, 2167, 71, 71, 2170, 71, 71, + 2119, 71, 71, 71, 71, 71, 71, 71, 2120, 2131, + 2132, 71, 71, 2123, 2127, 2124, 2126, 2125, 2128, 2129, + 2133, 71, 71, 2130, 71, 71, 71, 2134, 2136, 71, + 2142, 71, 71, 2144, 71, 2137, 71, 71, 2141, 2138, + 2135, 2143, 71, 2139, 71, 71, 2146, 2149, 2151, 2147, + 2148, 2140, 2150, 71, 71, 2145, 2152, 71, 71, 71, + 2153, 71, 71, 2156, 71, 2155, 2154, 71, 2157, 71, + 2160, 2161, 71, 71, 2162, 71, 71, 2164, 2165, 71, + 2166, 2163, 2158, 2171, 71, 71, 2167, 2168, 71, 71, + 2170, 71, 71, 2159, 2169, 71, 71, 2175, 71, 2173, - 2169, 2173, 71, 71, 2174, 71, 71, 2171, 2175, 71, - 2172, 2179, 71, 2180, 71, 71, 2182, 71, 71, 2184, - 71, 2178, 71, 71, 71, 2176, 2177, 71, 2186, 2187, - 71, 2188, 71, 71, 2181, 71, 2183, 2185, 2189, 71, - 71, 2191, 2190, 71, 2193, 2194, 71, 2196, 71, 71, - 71, 2200, 2199, 71, 2192, 2202, 71, 71, 71, 2195, - 71, 2197, 2206, 71, 71, 71, 2201, 71, 71, 2210, - 2211, 71, 2203, 2204, 71, 71, 2205, 71, 71, 71, - 2207, 71, 2209, 2213, 2216, 71, 2218, 2208, 2217, 71, - 2214, 71, 2215, 2212, 71, 2219, 71, 2223, 71, 71, + 71, 2174, 71, 71, 71, 71, 71, 2178, 71, 2184, + 71, 2172, 71, 2182, 71, 2177, 2185, 71, 71, 2180, + 71, 2176, 2179, 2187, 71, 2181, 71, 71, 2183, 2186, + 71, 71, 2189, 2194, 71, 2191, 71, 2192, 71, 71, + 71, 71, 71, 2188, 2195, 2190, 2196, 71, 71, 2193, + 71, 71, 71, 71, 71, 2258, 2207, 2197, 2206, 2202, + 2200, 71, 2198, 2201, 2199, 2204, 2205, 2208, 71, 2203, + 71, 71, 71, 2209, 2210, 71, 71, 2213, 2214, 71, + 2215, 71, 71, 71, 2218, 2211, 71, 2216, 2212, 71, + 2221, 71, 71, 71, 71, 2217, 71, 2222, 2219, 2223, - 2225, 71, 71, 71, 2226, 71, 71, 2220, 2224, 2221, - 2230, 2231, 71, 71, 2229, 71, 71, 71, 71, 2227, - 2222, 2228, 2235, 2237, 71, 2233, 2240, 71, 2232, 2238, - 2242, 2239, 71, 71, 2234, 71, 71, 71, 2243, 71, - 2244, 2236, 71, 71, 71, 2247, 71, 71, 2241, 71, - 71, 3080, 2246, 2248, 2253, 2249, 2250, 2252, 2251, 2254, - 71, 71, 2245, 71, 71, 71, 2259, 2255, 71, 2258, - 2256, 71, 71, 2257, 71, 2260, 71, 2264, 2266, 71, - 71, 71, 71, 2261, 71, 71, 71, 71, 2277, 71, - 2268, 2262, 2265, 2263, 2269, 2267, 71, 2272, 71, 2273, + 71, 2220, 2227, 71, 2228, 71, 2224, 71, 2226, 2230, + 71, 2232, 71, 2225, 71, 71, 2235, 71, 71, 2229, + 2234, 2236, 71, 71, 71, 2231, 71, 2242, 71, 2233, + 71, 71, 2237, 2238, 71, 2241, 71, 2239, 2244, 71, + 71, 71, 2246, 2247, 71, 2240, 71, 2248, 2250, 71, + 2243, 71, 2245, 2254, 71, 71, 71, 71, 71, 2252, + 2251, 71, 2249, 2259, 71, 71, 2261, 71, 2264, 71, + 2253, 71, 2257, 71, 71, 2255, 71, 2260, 71, 2256, + 2262, 2266, 2263, 71, 71, 2271, 71, 2267, 71, 71, + 2273, 2265, 71, 71, 2268, 2272, 2269, 71, 2278, 71, - 2270, 2271, 71, 2274, 71, 2278, 71, 2275, 2279, 71, - 71, 2281, 2282, 2280, 2276, 2283, 2284, 71, 71, 71, - 71, 71, 71, 2286, 71, 71, 71, 2290, 2291, 71, - 71, 71, 2287, 2285, 71, 2293, 71, 3080, 2288, 71, - 2294, 71, 2295, 2292, 2289, 2296, 71, 71, 71, 71, - 2298, 2299, 2297, 2300, 2301, 71, 71, 71, 71, 71, - 71, 2302, 2303, 71, 2307, 71, 2310, 71, 71, 71, - 2309, 71, 71, 2306, 2311, 71, 2304, 2316, 2305, 71, - 2314, 2317, 2315, 2308, 71, 2312, 71, 2313, 71, 71, - 2319, 71, 71, 2322, 2320, 71, 2324, 71, 2318, 2323, + 2274, 2277, 71, 71, 2279, 2281, 71, 71, 71, 2270, + 71, 2283, 2288, 2285, 71, 2275, 71, 2276, 71, 2286, + 2290, 71, 71, 71, 2282, 2287, 71, 2280, 2291, 71, + 71, 71, 71, 2284, 2292, 2294, 71, 2289, 71, 2295, + 2296, 2297, 71, 2301, 2300, 71, 2293, 2298, 2302, 71, + 71, 2299, 71, 71, 71, 2307, 2303, 71, 2306, 2305, + 71, 71, 71, 2308, 71, 2304, 2314, 71, 71, 71, + 71, 2309, 71, 2310, 71, 2311, 2312, 71, 2316, 71, + 2313, 71, 2317, 2315, 2321, 71, 71, 3149, 2318, 2319, + 2322, 2320, 2325, 71, 71, 2326, 71, 2323, 2324, 2327, - 2326, 71, 71, 71, 71, 2328, 71, 71, 71, 2325, - 71, 71, 2321, 2327, 71, 2332, 2336, 71, 2338, 2334, - 71, 2329, 2330, 2331, 71, 2335, 2337, 71, 71, 2339, - 71, 71, 71, 71, 71, 71, 2347, 2333, 2342, 2345, - 71, 71, 71, 2346, 71, 71, 2340, 2344, 2350, 71, - 71, 2343, 71, 2341, 71, 2351, 71, 2354, 71, 2348, - 2349, 2355, 71, 2352, 71, 71, 71, 2358, 2353, 2356, - 2359, 71, 2357, 2360, 71, 71, 71, 71, 71, 3080, - 2361, 2364, 71, 2366, 2367, 71, 71, 2363, 2362, 2368, - 71, 2369, 71, 2370, 71, 71, 71, 2365, 2371, 71, + 71, 71, 71, 2330, 2328, 2331, 71, 2329, 71, 71, + 2333, 71, 2332, 71, 71, 2334, 71, 2339, 2335, 71, + 2338, 71, 2336, 71, 71, 71, 2341, 71, 71, 2342, + 2343, 2344, 71, 2345, 71, 2337, 71, 71, 2340, 2349, + 71, 2348, 71, 2346, 71, 71, 71, 71, 71, 2351, + 71, 2358, 2355, 71, 71, 2350, 2347, 71, 2357, 71, + 2359, 2354, 71, 71, 71, 2352, 2353, 71, 2362, 71, + 2356, 71, 2366, 71, 2365, 2368, 71, 2360, 71, 2367, + 71, 2361, 71, 2364, 71, 2363, 71, 2370, 71, 2375, + 2369, 2371, 71, 2373, 71, 71, 2376, 71, 2374, 2377, - 2372, 2373, 71, 2374, 71, 2375, 71, 2376, 71, 2380, - 71, 2377, 71, 2382, 71, 2383, 71, 71, 71, 71, - 71, 71, 71, 71, 2379, 71, 2378, 2386, 2384, 71, - 2385, 2381, 71, 2387, 2389, 2392, 71, 71, 71, 2388, - 71, 2393, 2390, 2391, 71, 71, 2399, 71, 71, 71, - 71, 2394, 71, 2396, 71, 71, 2400, 2395, 2398, 71, - 2408, 3080, 2397, 2401, 2402, 71, 71, 71, 2403, 2406, - 2409, 2410, 71, 2407, 2404, 2411, 71, 2405, 71, 2412, - 71, 2413, 71, 2414, 71, 2415, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 2416, 2424, 71, 71, 71, + 71, 71, 2379, 71, 71, 71, 2372, 71, 2384, 71, + 2378, 71, 2383, 71, 2385, 2380, 2386, 71, 2381, 2387, + 71, 2382, 2388, 71, 2389, 71, 2390, 71, 71, 2391, + 71, 71, 2393, 2396, 71, 71, 2398, 71, 71, 2392, + 2401, 71, 71, 2395, 2397, 71, 71, 2394, 2402, 71, + 71, 2405, 71, 2400, 71, 2399, 2406, 71, 71, 2407, + 71, 71, 71, 2410, 2411, 2403, 71, 2404, 71, 2409, + 2408, 71, 71, 2415, 71, 2412, 2418, 71, 71, 2417, + 2413, 2419, 71, 2414, 2420, 71, 2421, 71, 71, 71, + 2422, 71, 2416, 71, 2424, 71, 2425, 71, 2426, 71, - 2422, 71, 2428, 2429, 71, 2417, 2419, 2418, 71, 71, - 2421, 2420, 2423, 2425, 71, 2426, 2427, 2431, 2432, 71, - 71, 2430, 71, 2433, 2434, 71, 71, 2435, 71, 2437, - 71, 71, 71, 2443, 71, 2444, 71, 2445, 2436, 71, - 71, 2438, 71, 71, 71, 71, 2439, 2441, 2440, 2449, - 71, 2442, 71, 71, 2453, 2447, 71, 2446, 2452, 2454, - 71, 2448, 71, 71, 2455, 2450, 2456, 71, 71, 71, - 2451, 71, 2458, 71, 71, 2457, 71, 71, 2462, 71, - 71, 2460, 2466, 2467, 71, 71, 71, 2459, 2470, 71, - 2471, 2461, 71, 71, 2463, 2464, 71, 2465, 2469, 71, + 71, 2431, 71, 2427, 71, 2428, 2423, 2433, 71, 2434, + 71, 71, 71, 71, 71, 71, 2430, 71, 71, 2429, + 2437, 71, 2435, 2432, 2436, 71, 2438, 2443, 71, 71, + 2440, 71, 71, 71, 71, 2439, 71, 2441, 2442, 71, + 2444, 71, 2450, 71, 71, 2447, 71, 2445, 2449, 2446, + 71, 2452, 2451, 71, 2453, 71, 2457, 2448, 71, 71, + 2461, 71, 2454, 2459, 2460, 2462, 71, 71, 2455, 2458, + 71, 2463, 71, 2456, 71, 2464, 71, 2465, 71, 71, + 71, 71, 71, 2467, 71, 2466, 71, 71, 71, 2475, + 71, 71, 71, 2473, 71, 2479, 71, 2468, 2470, 2469, - 2468, 2474, 71, 2473, 71, 71, 2475, 2472, 2479, 71, - 71, 2476, 71, 71, 2483, 71, 71, 2482, 2485, 71, - 71, 2481, 2480, 71, 2477, 2478, 71, 71, 2486, 2487, - 2490, 71, 71, 2491, 71, 2484, 2493, 71, 71, 2489, - 71, 71, 2488, 71, 2498, 71, 71, 2500, 71, 71, - 2496, 2494, 2497, 2495, 2501, 71, 2492, 71, 71, 71, - 2502, 2499, 71, 2504, 71, 71, 71, 2505, 71, 71, - 71, 2503, 71, 2507, 2508, 2510, 2515, 2511, 2513, 71, - 2509, 2506, 71, 2512, 2514, 71, 71, 2516, 71, 2519, - 71, 71, 71, 2521, 71, 71, 2520, 2524, 71, 2523, + 2480, 71, 2472, 2471, 71, 2482, 2474, 71, 2476, 2477, + 2478, 71, 2481, 2483, 71, 71, 2484, 2485, 71, 71, + 71, 71, 2486, 71, 71, 71, 2488, 2494, 71, 2487, + 2489, 2495, 71, 2498, 71, 71, 71, 71, 2490, 2491, + 2492, 2497, 2493, 2496, 2499, 71, 71, 71, 71, 3149, + 71, 2503, 2501, 71, 2500, 71, 71, 2507, 2506, 2508, + 71, 71, 71, 2509, 2502, 2510, 71, 2504, 2505, 71, + 71, 2512, 71, 71, 71, 2511, 71, 71, 2516, 3149, + 71, 71, 2514, 2520, 2521, 71, 71, 71, 2513, 2524, + 71, 2525, 2515, 71, 2517, 2518, 2522, 2519, 71, 2528, - 2525, 71, 71, 3080, 2517, 2522, 2518, 2527, 71, 71, - 71, 2529, 2528, 71, 71, 2526, 2530, 71, 2531, 2532, - 2533, 71, 71, 71, 71, 2534, 71, 2535, 71, 2540, - 71, 2539, 2536, 71, 2541, 71, 2538, 71, 2542, 2537, - 71, 71, 2543, 71, 71, 71, 2544, 2545, 2547, 2546, - 2548, 71, 71, 71, 71, 71, 2553, 71, 71, 71, - 71, 71, 2551, 2552, 71, 2550, 2554, 2558, 71, 2549, - 2562, 71, 71, 71, 71, 2561, 71, 2555, 71, 2556, - 2557, 2560, 2566, 2559, 2567, 71, 71, 2569, 2570, 2564, - 3080, 2571, 2563, 71, 71, 71, 2565, 71, 2572, 71, + 71, 71, 2527, 71, 2523, 71, 71, 71, 2526, 2533, + 71, 71, 71, 71, 2529, 71, 2536, 71, 2530, 2534, + 2535, 2537, 71, 2539, 71, 2531, 2532, 71, 71, 2543, + 71, 2542, 2538, 2540, 2544, 71, 2541, 71, 2545, 2547, + 71, 71, 71, 71, 71, 2552, 71, 71, 2554, 71, + 71, 71, 2546, 2550, 2548, 2549, 2551, 71, 2553, 71, + 71, 71, 2555, 71, 2556, 2557, 2558, 71, 2559, 2560, + 71, 71, 2561, 71, 71, 2562, 2564, 71, 2565, 2567, + 71, 2568, 71, 71, 2569, 2563, 71, 71, 2570, 2566, + 2573, 71, 71, 71, 2575, 71, 71, 2574, 2578, 71, - 71, 71, 71, 2573, 71, 2574, 71, 71, 2577, 71, - 2575, 2568, 71, 2580, 71, 2576, 2582, 71, 2583, 71, - 2578, 71, 2579, 2584, 71, 2585, 71, 2581, 2587, 71, - 71, 2586, 71, 2591, 2588, 2589, 71, 71, 2592, 71, - 71, 2594, 2595, 71, 2590, 2596, 71, 71, 71, 71, - 2597, 2601, 71, 71, 2602, 2599, 2593, 2603, 71, 71, - 71, 2598, 2605, 71, 71, 71, 2609, 2610, 71, 2600, - 71, 71, 71, 2606, 2604, 2611, 71, 71, 2612, 2608, - 71, 2618, 2607, 2613, 71, 71, 2617, 71, 71, 2621, - 71, 71, 2620, 2614, 71, 71, 2615, 2616, 71, 2622, + 2577, 2579, 71, 71, 2571, 2572, 2576, 2581, 71, 71, + 71, 71, 2582, 2583, 2587, 2585, 2580, 71, 2584, 71, + 71, 71, 2586, 71, 71, 2588, 2591, 71, 2589, 71, + 2594, 2595, 71, 2590, 71, 2592, 71, 71, 71, 2596, + 71, 71, 71, 2598, 2597, 2599, 2601, 71, 71, 71, + 2593, 71, 2600, 2602, 71, 71, 2607, 71, 2609, 71, + 2605, 71, 2604, 2606, 71, 2603, 2608, 2610, 71, 71, + 71, 2614, 71, 71, 71, 2618, 71, 71, 2611, 71, + 71, 71, 71, 2616, 2617, 2622, 2623, 71, 2612, 2613, + 71, 2625, 2615, 2626, 2620, 2627, 2619, 71, 2629, 71, - 71, 2624, 71, 2623, 71, 2626, 71, 71, 71, 2629, - 2619, 2633, 71, 71, 71, 71, 2625, 2627, 2628, 71, - 71, 71, 2632, 2635, 2630, 71, 71, 2631, 2634, 2637, - 2640, 2636, 2638, 2639, 3080, 2641, 71, 2648, 2642, 2643, - 71, 71, 2644, 71, 2645, 71, 2646, 71, 2647, 71, - 71, 71, 2651, 71, 2649, 71, 2655, 71, 71, 71, - 2652, 2656, 2658, 71, 71, 2660, 71, 71, 2662, 71, - 2650, 2659, 2661, 2653, 71, 2654, 71, 2657, 71, 71, - 2667, 71, 71, 2663, 71, 2664, 2668, 2665, 71, 2671, - 71, 71, 71, 2669, 2672, 71, 2675, 2666, 71, 2674, + 2621, 71, 2628, 71, 71, 71, 71, 2624, 71, 2630, + 71, 71, 2633, 71, 2631, 71, 2636, 2638, 71, 2632, + 2639, 71, 2640, 71, 2634, 71, 2635, 71, 71, 2641, + 71, 2637, 2642, 2643, 71, 2645, 2647, 71, 71, 71, + 2650, 2648, 71, 2651, 71, 2652, 71, 71, 2644, 2646, + 2653, 71, 71, 71, 2657, 71, 71, 2658, 2649, 2659, + 71, 71, 2661, 71, 2654, 71, 71, 71, 2665, 71, + 2655, 2666, 71, 2656, 71, 71, 2660, 2668, 2662, 2667, + 71, 2664, 2669, 71, 2663, 71, 71, 71, 2674, 2677, + 71, 71, 2670, 2673, 71, 2676, 71, 71, 71, 71, - 71, 2677, 71, 2670, 2673, 2676, 2678, 71, 71, 71, - 71, 71, 2679, 71, 71, 71, 2687, 71, 71, 2682, - 71, 71, 71, 2683, 2685, 2690, 2691, 2681, 71, 2688, - 71, 2692, 71, 2680, 2686, 71, 71, 2693, 2684, 2689, - 2694, 71, 2695, 2697, 71, 2696, 2698, 71, 2699, 71, - 71, 71, 2701, 71, 2704, 2702, 2703, 71, 2705, 2700, - 71, 71, 2706, 2707, 71, 71, 71, 71, 2712, 71, - 71, 2710, 2714, 71, 71, 2716, 71, 71, 71, 2708, - 2715, 71, 2717, 71, 2718, 2711, 2709, 71, 2722, 71, - 71, 71, 71, 71, 2713, 71, 2720, 2719, 71, 2725, + 2671, 2678, 2680, 71, 71, 2672, 2679, 2682, 71, 71, + 71, 2675, 71, 2685, 2689, 71, 71, 71, 71, 71, + 2683, 2684, 2681, 71, 2705, 71, 2688, 2686, 2691, 71, + 2687, 2690, 2693, 2696, 71, 2694, 2692, 2695, 2697, 71, + 2699, 71, 2698, 71, 2700, 71, 2701, 71, 2702, 71, + 2703, 71, 71, 71, 2706, 71, 71, 71, 71, 71, + 2709, 2713, 71, 71, 71, 2710, 2714, 2704, 2716, 71, + 71, 2717, 2708, 2718, 71, 2719, 2715, 2711, 2707, 2712, + 2720, 71, 71, 71, 71, 71, 2725, 71, 71, 71, + 71, 2721, 2722, 2723, 2726, 2729, 71, 2727, 71, 71, - 71, 2726, 71, 2723, 2724, 71, 71, 2721, 2729, 2727, - 2730, 2732, 71, 2734, 71, 2735, 71, 2728, 71, 2737, - 71, 71, 71, 71, 71, 2733, 71, 71, 2731, 2742, - 71, 2741, 71, 71, 2746, 71, 71, 2738, 2739, 2736, - 2740, 2749, 71, 2743, 71, 71, 2751, 71, 71, 2747, - 2744, 2745, 71, 2752, 71, 2748, 2754, 71, 2755, 71, - 2757, 71, 71, 71, 2750, 71, 2763, 2753, 71, 2762, - 71, 3080, 2760, 2759, 2756, 71, 2766, 71, 71, 71, - 2758, 2767, 2764, 71, 2768, 2761, 71, 2771, 2765, 2772, - 71, 2769, 71, 71, 2774, 2773, 71, 71, 71, 71, + 2730, 71, 71, 2724, 2728, 71, 2733, 2732, 71, 2731, + 2734, 2735, 71, 2736, 71, 71, 71, 71, 71, 71, + 71, 2745, 2737, 71, 2738, 2740, 71, 71, 2743, 2741, + 71, 71, 71, 2739, 3149, 2746, 2748, 2749, 71, 2750, + 2744, 71, 71, 2742, 71, 2755, 71, 2747, 2766, 2752, + 2751, 71, 2753, 2756, 71, 2754, 2757, 71, 71, 71, + 71, 71, 2759, 2762, 71, 2761, 2763, 2758, 71, 71, + 2765, 71, 71, 2764, 71, 2770, 71, 2768, 2760, 2772, + 71, 71, 71, 71, 71, 2767, 2773, 71, 2774, 2775, + 71, 2776, 2769, 71, 71, 2780, 71, 71, 71, 71, - 71, 2779, 2776, 2777, 71, 71, 2770, 71, 2782, 71, - 71, 71, 71, 71, 2775, 2787, 71, 2783, 2778, 71, - 71, 2780, 2781, 2790, 71, 2786, 2791, 71, 2784, 2789, - 71, 71, 2788, 2793, 71, 2792, 2785, 2795, 71, 2794, - 2796, 71, 2797, 71, 71, 2799, 71, 71, 71, 2798, - 2800, 71, 71, 2804, 2805, 71, 71, 71, 71, 2809, - 71, 2810, 71, 71, 71, 71, 2811, 2808, 2847, 2801, - 2802, 2806, 71, 2803, 71, 71, 2807, 2815, 71, 2814, - 2816, 71, 71, 2812, 2813, 2819, 71, 2817, 71, 2818, - 71, 71, 2822, 71, 71, 2823, 2821, 71, 2820, 71, + 71, 2771, 71, 2783, 71, 71, 2777, 71, 2778, 2784, + 2781, 2782, 2788, 2787, 2779, 71, 71, 71, 2785, 2792, + 71, 71, 71, 2786, 2789, 2794, 71, 2795, 71, 71, + 2797, 71, 71, 71, 2790, 71, 71, 71, 2798, 71, + 2793, 2801, 71, 2791, 2802, 71, 71, 2806, 2799, 2800, + 2796, 71, 2809, 71, 71, 2803, 2807, 2811, 2805, 71, + 2804, 71, 71, 71, 2812, 2814, 71, 2815, 71, 71, + 2808, 2817, 71, 71, 2810, 71, 71, 71, 71, 2822, + 2819, 71, 2816, 2813, 2820, 71, 2826, 71, 71, 2824, + 71, 2818, 2909, 2821, 71, 2823, 71, 2827, 2825, 71, - 71, 71, 71, 71, 2826, 71, 71, 2828, 71, 71, - 2829, 71, 2827, 71, 2824, 71, 71, 2825, 71, 71, - 2838, 2839, 2830, 71, 2834, 2831, 2832, 2833, 2835, 2836, - 2841, 71, 71, 3080, 2837, 2904, 71, 2842, 2840, 2843, - 2845, 71, 2846, 71, 2844, 2848, 71, 2849, 71, 2850, - 2851, 71, 71, 2852, 2853, 2856, 71, 2854, 2855, 71, - 71, 2857, 71, 71, 71, 71, 71, 2863, 71, 71, - 71, 2862, 71, 71, 2866, 71, 3080, 2858, 2859, 2865, - 71, 71, 2867, 2860, 71, 2861, 71, 2871, 2872, 71, - 2868, 2873, 71, 2870, 2864, 71, 2874, 71, 2869, 2878, + 2828, 2830, 2829, 2831, 2832, 71, 2834, 71, 71, 71, + 2833, 71, 71, 2836, 2835, 71, 2837, 2839, 71, 2842, + 71, 71, 71, 71, 71, 71, 2847, 71, 71, 3149, + 71, 2850, 71, 2843, 2838, 2840, 2841, 71, 2846, 2849, + 2844, 2851, 71, 71, 71, 71, 71, 2848, 2852, 2845, + 2854, 2853, 2855, 71, 2856, 71, 2857, 71, 2859, 71, + 71, 2861, 71, 71, 71, 2860, 71, 71, 2863, 71, + 2858, 71, 2866, 2867, 71, 71, 2871, 71, 2862, 2872, + 71, 2868, 71, 3149, 2870, 2864, 2873, 71, 2865, 2869, + 71, 71, 71, 2877, 71, 2876, 2878, 71, 71, 71, - 2875, 2880, 71, 71, 2879, 71, 2876, 71, 71, 2877, - 71, 71, 71, 2887, 71, 2884, 2885, 2888, 2882, 71, - 2890, 71, 71, 71, 71, 2889, 3080, 2881, 2936, 2883, - 71, 2886, 2891, 71, 2910, 2892, 2893, 71, 2894, 71, - 2895, 71, 2896, 71, 2897, 71, 2898, 71, 2899, 71, - 2900, 71, 71, 2902, 71, 71, 71, 71, 71, 2907, - 71, 2901, 71, 71, 2903, 71, 2911, 2913, 71, 71, - 71, 71, 2908, 2915, 71, 2909, 2905, 2906, 2912, 71, - 2917, 71, 2920, 71, 2919, 71, 71, 2914, 71, 71, - 71, 2922, 2918, 71, 71, 71, 71, 2916, 71, 2921, + 71, 2881, 2874, 2879, 71, 2880, 2875, 71, 2883, 2884, + 71, 2882, 71, 71, 71, 71, 71, 2885, 71, 2888, + 71, 71, 2890, 71, 2886, 3149, 2891, 2889, 71, 71, + 71, 71, 71, 2887, 71, 71, 2903, 2900, 71, 2892, + 2901, 2893, 71, 2894, 71, 2896, 2895, 2897, 2898, 2904, + 71, 71, 2899, 71, 2902, 2907, 71, 71, 2905, 2908, + 71, 3053, 2910, 2906, 2912, 71, 2913, 71, 2914, 2915, + 2911, 71, 2916, 2917, 71, 71, 2918, 2919, 2920, 71, + 2921, 71, 71, 71, 71, 71, 71, 2927, 71, 71, + 71, 2926, 71, 71, 2930, 71, 71, 2923, 71, 2929, - 2926, 2929, 2923, 71, 2927, 71, 2925, 2924, 2928, 2930, - 2931, 71, 2932, 71, 2933, 71, 71, 71, 71, 2938, - 71, 71, 71, 2942, 71, 2935, 2934, 2941, 71, 2944, - 71, 2940, 71, 71, 71, 71, 71, 2937, 71, 2943, - 71, 2939, 71, 2945, 71, 2951, 71, 3080, 71, 2948, - 71, 2946, 2947, 2950, 2952, 2955, 2958, 71, 71, 71, - 2949, 2953, 2956, 71, 2954, 71, 2957, 2959, 2960, 71, - 71, 2961, 2962, 71, 2963, 71, 71, 71, 2964, 2966, - 71, 71, 2967, 2965, 71, 2968, 2971, 71, 71, 71, - 2969, 71, 71, 2974, 2976, 71, 2970, 71, 2972, 2973, + 2922, 3149, 2931, 71, 2924, 2925, 71, 2935, 2936, 71, + 2932, 2938, 2934, 71, 2928, 71, 2933, 2937, 71, 71, + 2939, 2942, 2940, 2944, 71, 2941, 2943, 71, 71, 71, + 71, 71, 71, 2951, 71, 2948, 2949, 2952, 3149, 2946, + 71, 2954, 71, 71, 2945, 71, 2953, 2955, 71, 2947, + 2956, 2950, 2957, 71, 2958, 71, 71, 2960, 71, 2961, + 71, 2962, 71, 2963, 71, 2959, 2964, 71, 2965, 71, + 2966, 71, 71, 2968, 71, 71, 71, 71, 71, 71, + 71, 2967, 2973, 71, 2969, 71, 71, 71, 2970, 71, + 2977, 71, 2976, 2974, 2979, 71, 71, 2971, 2972, 2975, - 2979, 71, 71, 71, 2982, 71, 2977, 71, 2983, 2975, - 71, 71, 71, 2986, 2987, 71, 2978, 2980, 2984, 71, - 71, 2981, 71, 71, 71, 71, 2988, 71, 2989, 2991, - 2985, 2992, 71, 2993, 71, 71, 71, 71, 71, 71, - 2997, 2990, 2999, 71, 2994, 2995, 71, 2998, 71, 2996, - 71, 71, 3001, 3004, 71, 3005, 3002, 3000, 3006, 71, - 71, 3010, 71, 71, 3012, 3003, 71, 3013, 3011, 71, - 71, 3007, 3008, 71, 3014, 71, 71, 3018, 3015, 3009, - 3016, 3019, 71, 71, 71, 3021, 71, 71, 71, 3020, - 71, 3022, 71, 71, 3027, 3017, 71, 3024, 71, 3030, + 2978, 71, 71, 2983, 2981, 2980, 71, 2986, 71, 2985, + 71, 71, 71, 71, 2984, 2988, 71, 2982, 71, 71, + 71, 71, 2987, 71, 2992, 71, 2996, 71, 2991, 2993, + 2989, 2998, 71, 71, 2990, 71, 2994, 3003, 2997, 2999, + 71, 3000, 71, 71, 3002, 2995, 71, 71, 71, 71, + 3001, 71, 71, 3009, 3008, 71, 3011, 71, 71, 3007, + 3005, 71, 71, 3004, 71, 71, 71, 3010, 71, 71, + 3006, 3012, 71, 3021, 71, 3018, 3013, 71, 3015, 3014, + 3017, 3019, 3023, 71, 71, 3026, 71, 71, 71, 3016, + 3028, 71, 71, 3020, 3022, 71, 3027, 3024, 71, 3029, - 71, 71, 3031, 71, 71, 71, 71, 3023, 71, 71, - 3034, 3025, 3026, 3032, 3029, 3028, 3033, 71, 3038, 71, - 71, 71, 3037, 71, 3039, 3035, 71, 3036, 71, 3042, - 71, 3044, 71, 3040, 71, 3045, 71, 3046, 3049, 71, - 71, 71, 3043, 3047, 71, 3048, 3050, 3041, 71, 71, - 3051, 3052, 71, 71, 3058, 71, 3053, 71, 71, 3055, - 3054, 71, 3056, 3057, 71, 71, 3060, 71, 71, 3061, - 71, 3064, 3065, 71, 71, 71, 3068, 3059, 3069, 71, - 3080, 71, 3071, 71, 3062, 71, 3063, 3066, 3070, 3072, - 71, 71, 3073, 3067, 71, 71, 3074, 71, 3080, 3075, + 3030, 71, 3031, 71, 3025, 71, 71, 3032, 3034, 71, + 71, 3035, 3033, 3039, 3036, 71, 71, 71, 71, 71, + 3037, 71, 3042, 3044, 71, 3038, 3045, 71, 3041, 3040, + 71, 3048, 71, 71, 71, 71, 3046, 3055, 3043, 3051, + 71, 71, 3052, 71, 3056, 71, 71, 71, 3049, 3047, + 71, 71, 3050, 71, 3054, 71, 3060, 3061, 71, 3057, + 3058, 3062, 71, 71, 71, 3059, 71, 71, 3066, 71, + 71, 71, 3068, 71, 3063, 3064, 71, 3065, 3075, 71, + 71, 3073, 71, 3070, 3071, 3074, 3067, 71, 3069, 71, + 3079, 71, 3072, 71, 3081, 71, 3082, 71, 3080, 71, - 3078, 71, 3079, 71, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3076, 3080, 3077, 43, 43, 43, - 43, 43, 43, 43, 48, 48, 48, 48, 48, 48, - 48, 53, 53, 53, 53, 53, 53, 53, 59, 59, - 59, 59, 59, 59, 59, 64, 64, 64, 64, 64, - 64, 64, 74, 74, 3080, 74, 74, 74, 74, 142, - 142, 3080, 3080, 3080, 142, 142, 144, 144, 3080, 3080, - 144, 3080, 144, 146, 3080, 3080, 3080, 3080, 3080, 146, - 149, 149, 3080, 3080, 3080, 149, 149, 151, 3080, 3080, - 3080, 3080, 3080, 151, 153, 153, 3080, 153, 153, 153, + 71, 71, 3076, 3087, 3083, 3077, 3084, 71, 3078, 71, + 3088, 71, 3085, 71, 3090, 71, 3086, 71, 3089, 71, + 71, 3091, 71, 71, 3096, 71, 71, 3093, 71, 3099, + 71, 3100, 71, 71, 71, 71, 71, 71, 3092, 3098, + 3103, 3094, 3095, 3101, 3097, 71, 3102, 71, 3107, 71, + 3106, 71, 3104, 71, 3108, 3105, 71, 3111, 3109, 71, + 3113, 71, 3114, 71, 71, 71, 3118, 71, 3115, 71, + 71, 3116, 3112, 71, 3119, 3120, 71, 3110, 3121, 71, + 71, 71, 71, 3122, 3117, 71, 3125, 3123, 71, 3124, + 3127, 71, 71, 3129, 71, 71, 71, 3130, 71, 3133, - 153, 75, 75, 3080, 75, 75, 75, 75, 13, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080 + 71, 3126, 3134, 71, 3128, 71, 3137, 3138, 71, 71, + 3140, 71, 71, 3131, 3132, 3135, 3139, 3141, 71, 3136, + 71, 71, 71, 71, 3147, 71, 3143, 3142, 3144, 3148, + 71, 3145, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3146, 43, 43, 43, 43, 43, 43, 43, 48, + 48, 48, 48, 48, 48, 48, 53, 53, 53, 53, + 53, 53, 53, 59, 59, 59, 59, 59, 59, 59, + 64, 64, 64, 64, 64, 64, 64, 74, 74, 3149, + 74, 74, 74, 74, 142, 142, 3149, 3149, 3149, 142, + 142, 144, 144, 3149, 3149, 144, 3149, 144, 146, 3149, + + 3149, 3149, 3149, 3149, 146, 149, 149, 3149, 3149, 3149, + 149, 149, 151, 3149, 3149, 3149, 3149, 3149, 151, 153, + 153, 3149, 153, 153, 153, 153, 75, 75, 3149, 75, + 75, 75, 75, 13, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149 } ; -static const flex_int16_t yy_chk[6050] = +static const flex_int16_t yy_chk[6175] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2114,7 +2150,7 @@ static const flex_int16_t yy_chk[6050] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3086, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3155, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, @@ -2126,15 +2162,15 @@ static const flex_int16_t yy_chk[6050] = 28, 69, 28, 27, 35, 52, 32, 84, 52, 35, 63, 63, 32, 35, 40, 33, 32, 109, 40, 35, 37, 37, 35, 72, 109, 37, 38, 72, 40, 35, - 767, 38, 40, 40, 38, 37, 37, 80, 37, 39, + 720, 38, 40, 40, 38, 37, 37, 80, 37, 39, 39, 38, 39, 41, 41, 38, 38, 77, 41, 80, - 77, 39, 41, 58, 767, 58, 58, 39, 58, 66, + 77, 39, 41, 58, 720, 58, 58, 39, 58, 66, 89, 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, 66, 71, 81, 74, 86, 74, 74, 71, 74, 78, 93, 89, 85, 78, 74, 74, 82, 83, 86, 82, 83, 85, 81, 87, 88, 90, 91, 92, 94, - 87, 93, 95, 91, 83, 96, 87, 98, 87, 1017, + 87, 93, 95, 91, 83, 96, 87, 98, 87, 1033, 94, 94, 92, 88, 88, 90, 91, 97, 94, 99, 95, 97, 100, 96, 99, 101, 102, 98, 101, 103, 104, 101, 102, 107, 105, 104, 100, 105, 108, 106, @@ -2178,599 +2214,613 @@ static const flex_int16_t yy_chk[6050] = 254, 255, 256, 251, 259, 260, 261, 258, 256, 262, 263, 265, 257, 265, 261, 264, 263, 268, 264, 260, 266, 266, 259, 267, 269, 269, 267, 270, 270, 271, - 273, 272, 274, 273, 275, 268, 274, 277, 276, 286, + 273, 272, 274, 273, 275, 268, 274, 277, 276, 146, 279, 278, 279, 275, 276, 271, 272, 278, 280, 281, - 285, 277, 283, 281, 280, 282, 282, 283, 284, 286, - 287, 288, 289, 292, 284, 290, 290, 294, 291, 285, + 287, 277, 283, 281, 280, 282, 282, 283, 284, 285, + 286, 288, 289, 292, 284, 285, 290, 290, 287, 291, - 281, 291, 293, 295, 297, 289, 293, 299, 287, 296, - 296, 292, 288, 302, 298, 305, 294, 298, 300, 299, - 301, 295, 297, 301, 300, 302, 306, 304, 309, 308, - 316, 306, 308, 305, 298, 303, 304, 307, 310, 316, - 307, 309, 307, 311, 303, 311, 311, 303, 314, 315, - 310, 312, 303, 303, 303, 303, 312, 312, 307, 313, - 317, 321, 313, 324, 315, 314, 318, 318, 314, 317, - 319, 320, 320, 322, 323, 319, 321, 325, 322, 326, - 331, 327, 324, 330, 332, 331, 323, 327, 328, 328, - 332, 328, 336, 333, 326, 146, 334, 325, 333, 335, + 281, 294, 291, 293, 295, 289, 297, 293, 296, 296, + 286, 292, 288, 298, 285, 299, 298, 300, 301, 302, + 294, 301, 295, 300, 297, 306, 304, 299, 336, 305, + 306, 302, 309, 298, 303, 304, 307, 308, 310, 307, + 308, 307, 336, 303, 144, 309, 303, 305, 315, 314, + 310, 303, 303, 303, 303, 312, 311, 307, 311, 311, + 312, 312, 313, 315, 316, 313, 314, 317, 321, 314, + 318, 318, 319, 316, 320, 320, 317, 319, 323, 322, + 324, 325, 326, 321, 322, 327, 328, 328, 330, 328, + 323, 327, 339, 339, 345, 331, 332, 326, 328, 324, - 328, 334, 335, 330, 335, 337, 336, 334, 337, 338, - 339, 339, 342, 340, 341, 341, 345, 342, 338, 340, - 343, 337, 347, 343, 337, 346, 337, 375, 375, 343, - 349, 351, 348, 343, 351, 352, 345, 347, 354, 355, - 359, 343, 344, 344, 349, 344, 346, 348, 355, 352, - 351, 356, 358, 354, 357, 360, 356, 356, 344, 359, - 357, 344, 361, 344, 362, 344, 353, 364, 353, 353, - 360, 361, 365, 358, 366, 368, 369, 370, 353, 371, - 353, 353, 353, 362, 363, 353, 372, 373, 366, 367, - 363, 372, 365, 364, 371, 367, 369, 370, 368, 367, + 331, 325, 332, 337, 333, 334, 337, 340, 330, 333, + 334, 338, 335, 340, 345, 335, 334, 335, 342, 337, + 338, 346, 337, 342, 337, 341, 341, 343, 347, 348, + 343, 349, 351, 352, 142, 351, 343, 355, 354, 359, + 343, 358, 346, 347, 348, 349, 355, 352, 343, 344, + 344, 351, 344, 354, 356, 357, 360, 361, 359, 356, + 356, 357, 358, 362, 364, 344, 361, 366, 344, 70, + 344, 360, 344, 353, 363, 353, 353, 365, 368, 371, + 363, 366, 362, 373, 369, 353, 370, 353, 353, 353, + 364, 372, 353, 367, 371, 376, 372, 365, 373, 367, - 374, 376, 373, 377, 378, 379, 374, 380, 381, 382, - 384, 379, 385, 386, 382, 377, 383, 383, 378, 383, - 387, 376, 389, 388, 381, 388, 389, 390, 385, 386, - 384, 390, 380, 392, 387, 391, 391, 396, 393, 394, - 395, 397, 398, 388, 400, 399, 390, 404, 398, 400, - 397, 396, 392, 393, 399, 394, 401, 402, 395, 403, - 401, 397, 409, 397, 405, 403, 402, 406, 404, 407, - 405, 406, 407, 408, 410, 410, 411, 414, 408, 412, - 412, 413, 409, 415, 415, 416, 413, 418, 417, 411, - 414, 416, 417, 419, 420, 421, 422, 422, 423, 420, + 377, 368, 374, 367, 369, 378, 370, 379, 374, 375, + 375, 380, 377, 379, 381, 376, 382, 383, 383, 378, + 383, 382, 384, 385, 386, 389, 388, 387, 388, 389, + 381, 390, 391, 391, 392, 390, 380, 393, 394, 385, + 386, 387, 384, 395, 396, 399, 388, 397, 411, 411, + 390, 399, 393, 392, 394, 400, 397, 398, 396, 402, + 401, 395, 398, 402, 400, 401, 404, 397, 403, 397, + 398, 398, 404, 405, 398, 398, 406, 403, 408, 407, + 409, 408, 406, 407, 410, 409, 412, 413, 413, 415, + 414, 416, 416, 419, 405, 414, 418, 417, 420, 412, - 421, 424, 418, 426, 425, 422, 427, 428, 429, 427, - 423, 428, 430, 430, 419, 426, 432, 434, 431, 437, - 429, 424, 425, 431, 433, 433, 436, 436, 438, 439, - 440, 441, 444, 443, 445, 446, 438, 432, 439, 434, - 437, 446, 449, 441, 450, 447, 454, 449, 445, 448, - 440, 443, 444, 443, 447, 448, 451, 452, 450, 453, - 452, 454, 455, 456, 451, 458, 457, 451, 455, 457, - 459, 458, 460, 453, 461, 463, 462, 460, 465, 463, - 464, 466, 467, 456, 459, 464, 466, 468, 469, 458, - 472, 474, 475, 465, 473, 474, 461, 462, 467, 477, + 418, 421, 415, 417, 410, 422, 421, 425, 419, 424, + 422, 423, 423, 426, 427, 428, 433, 430, 428, 420, + 423, 424, 431, 431, 429, 432, 427, 425, 429, 430, + 432, 426, 434, 434, 435, 437, 437, 433, 438, 439, + 440, 441, 442, 445, 444, 447, 446, 439, 448, 440, + 450, 447, 449, 451, 442, 450, 435, 448, 449, 438, + 446, 441, 444, 445, 444, 452, 453, 451, 454, 453, + 455, 456, 457, 452, 459, 458, 452, 456, 458, 460, + 459, 461, 454, 462, 464, 455, 461, 463, 464, 465, + 467, 466, 457, 460, 465, 467, 468, 469, 459, 473, - 476, 469, 479, 477, 144, 482, 468, 470, 470, 473, - 472, 475, 487, 470, 482, 470, 476, 479, 481, 478, - 480, 470, 484, 470, 478, 480, 470, 470, 478, 483, - 486, 489, 487, 470, 481, 483, 485, 481, 484, 485, - 483, 488, 488, 490, 490, 491, 492, 493, 494, 495, - 496, 498, 497, 486, 499, 496, 489, 500, 492, 502, - 491, 497, 493, 500, 507, 505, 506, 494, 502, 499, - 498, 495, 503, 504, 508, 509, 503, 505, 510, 504, - 511, 506, 512, 507, 511, 513, 514, 513, 508, 517, - 509, 515, 515, 516, 514, 512, 510, 518, 519, 516, + 470, 476, 489, 489, 481, 462, 466, 474, 463, 481, + 475, 477, 468, 470, 475, 64, 469, 471, 471, 473, + 476, 479, 474, 471, 478, 471, 479, 477, 478, 480, + 479, 471, 482, 471, 484, 487, 471, 471, 483, 485, + 484, 488, 490, 471, 480, 484, 486, 483, 482, 486, + 492, 482, 491, 491, 493, 485, 494, 495, 487, 496, + 498, 488, 500, 497, 499, 492, 493, 490, 497, 498, + 503, 494, 501, 506, 507, 508, 495, 500, 501, 503, + 504, 496, 505, 499, 504, 506, 509, 510, 505, 507, + 511, 512, 513, 515, 508, 512, 514, 518, 514, 520, - 521, 517, 520, 518, 522, 520, 523, 525, 526, 524, - 519, 523, 524, 142, 521, 527, 525, 528, 535, 522, - 527, 527, 536, 525, 526, 536, 525, 529, 529, 531, - 528, 530, 530, 532, 532, 531, 533, 533, 534, 535, - 537, 538, 539, 540, 534, 537, 540, 541, 542, 543, - 539, 544, 541, 545, 546, 544, 547, 548, 546, 545, - 538, 549, 548, 550, 551, 553, 555, 552, 543, 70, - 551, 542, 552, 554, 547, 557, 554, 549, 558, 553, - 565, 554, 562, 550, 555, 554, 556, 556, 561, 565, - 559, 560, 564, 557, 558, 559, 560, 562, 564, 568, + 509, 515, 510, 516, 516, 513, 517, 519, 511, 518, + 522, 520, 517, 519, 521, 523, 524, 521, 526, 525, + 527, 524, 525, 528, 522, 529, 536, 526, 528, 528, + 523, 530, 530, 543, 526, 532, 527, 526, 529, 531, + 531, 532, 533, 533, 534, 534, 535, 536, 537, 538, + 539, 537, 535, 540, 538, 541, 543, 542, 541, 544, + 545, 540, 542, 547, 545, 546, 548, 547, 549, 539, + 552, 546, 550, 549, 551, 551, 553, 554, 544, 555, + 556, 557, 554, 558, 548, 552, 550, 557, 558, 559, + 560, 561, 563, 560, 565, 555, 564, 553, 560, 565, - 566, 567, 561, 566, 568, 567, 569, 570, 571, 569, - 572, 573, 570, 574, 575, 576, 577, 577, 573, 575, - 578, 579, 580, 581, 571, 582, 574, 567, 572, 578, - 583, 585, 581, 584, 585, 576, 583, 582, 580, 584, - 579, 586, 586, 587, 586, 588, 587, 589, 590, 591, - 588, 592, 593, 601, 594, 591, 592, 594, 593, 595, - 597, 596, 590, 598, 595, 589, 596, 596, 613, 599, - 602, 600, 601, 597, 599, 603, 598, 600, 604, 602, - 603, 605, 605, 606, 607, 608, 64, 607, 599, 599, - 606, 608, 609, 613, 610, 611, 612, 612, 604, 610, + 556, 566, 560, 559, 562, 562, 566, 567, 568, 561, + 563, 570, 564, 571, 574, 572, 573, 570, 572, 574, + 573, 567, 571, 568, 575, 576, 579, 575, 577, 578, + 576, 581, 580, 579, 582, 586, 581, 583, 583, 584, + 585, 587, 573, 588, 577, 580, 589, 578, 584, 595, + 587, 586, 589, 610, 582, 588, 590, 591, 593, 585, + 591, 593, 590, 592, 592, 594, 592, 595, 596, 597, + 594, 598, 599, 610, 600, 597, 598, 600, 599, 601, + 602, 603, 596, 604, 601, 602, 602, 605, 608, 606, + 607, 615, 605, 609, 603, 606, 604, 608, 609, 611, - 611, 611, 607, 614, 609, 614, 615, 616, 617, 616, - 618, 619, 620, 621, 622, 623, 627, 625, 624, 623, - 622, 626, 628, 629, 630, 615, 617, 624, 618, 619, - 632, 620, 625, 621, 627, 629, 626, 631, 633, 630, - 634, 628, 635, 631, 632, 636, 637, 638, 639, 636, - 633, 640, 641, 642, 643, 644, 644, 59, 642, 634, - 646, 635, 647, 638, 637, 651, 639, 648, 643, 640, - 640, 641, 645, 647, 650, 649, 645, 658, 652, 646, - 649, 648, 653, 654, 651, 655, 661, 54, 654, 653, - 650, 652, 655, 656, 657, 658, 659, 660, 656, 657, + 611, 612, 613, 615, 614, 613, 605, 605, 612, 607, + 614, 616, 617, 618, 618, 619, 616, 617, 617, 620, + 613, 620, 621, 622, 623, 622, 624, 625, 626, 627, + 628, 629, 633, 631, 630, 629, 628, 632, 634, 635, + 619, 621, 623, 630, 624, 625, 636, 626, 631, 627, + 633, 635, 632, 637, 638, 639, 640, 634, 641, 637, + 642, 636, 643, 644, 642, 645, 646, 639, 638, 647, + 652, 648, 649, 650, 650, 640, 648, 641, 651, 644, + 643, 653, 651, 645, 646, 646, 649, 654, 647, 652, + 655, 656, 653, 657, 660, 655, 658, 659, 661, 660, - 661, 662, 663, 659, 664, 665, 660, 666, 665, 664, - 662, 666, 667, 668, 663, 669, 671, 670, 672, 672, - 673, 673, 668, 674, 674, 675, 667, 677, 679, 673, - 669, 670, 678, 681, 675, 680, 682, 671, 678, 680, - 683, 684, 685, 688, 686, 681, 677, 684, 679, 687, - 685, 686, 689, 695, 692, 698, 699, 707, 683, 700, - 704, 682, 699, 705, 698, 702, 702, 687, 688, 692, - 695, 704, 689, 690, 706, 700, 701, 707, 690, 711, - 701, 705, 690, 703, 703, 690, 710, 712, 706, 714, - 708, 710, 690, 690, 53, 690, 708, 709, 709, 709, + 664, 654, 667, 662, 659, 661, 663, 656, 662, 658, + 665, 663, 657, 666, 668, 669, 667, 665, 664, 670, + 673, 675, 666, 668, 670, 671, 672, 669, 671, 674, + 672, 676, 677, 683, 673, 685, 675, 681, 674, 678, + 678, 679, 679, 680, 680, 676, 681, 686, 684, 687, + 679, 686, 683, 677, 684, 685, 688, 689, 690, 691, + 693, 687, 692, 694, 690, 695, 705, 691, 698, 692, + 701, 704, 705, 707, 706, 689, 59, 707, 693, 711, + 704, 688, 710, 698, 713, 695, 712, 701, 694, 696, + 706, 708, 708, 710, 696, 709, 709, 711, 696, 714, - 711, 709, 713, 715, 709, 712, 715, 716, 716, 709, - 719, 717, 718, 718, 714, 709, 709, 713, 717, 720, - 720, 721, 726, 723, 722, 719, 721, 722, 723, 724, - 724, 725, 727, 725, 726, 728, 729, 731, 730, 728, - 732, 732, 737, 733, 736, 731, 734, 735, 735, 738, - 740, 727, 48, 739, 737, 740, 729, 730, 733, 739, - 734, 742, 736, 741, 741, 744, 742, 742, 745, 746, - 744, 738, 747, 748, 745, 746, 750, 747, 749, 748, - 751, 749, 750, 752, 752, 753, 753, 754, 751, 755, - 757, 756, 758, 759, 759, 754, 756, 757, 761, 760, + 712, 696, 716, 718, 713, 714, 717, 716, 696, 696, + 722, 696, 715, 715, 715, 722, 715, 723, 719, 715, + 724, 718, 719, 725, 715, 721, 730, 717, 54, 721, + 715, 715, 727, 727, 726, 724, 723, 726, 728, 729, + 729, 730, 731, 731, 732, 728, 734, 733, 725, 732, + 733, 734, 735, 735, 736, 737, 736, 738, 739, 740, + 742, 741, 739, 743, 743, 748, 744, 737, 742, 745, + 746, 746, 747, 749, 752, 752, 738, 748, 750, 740, + 741, 744, 751, 745, 750, 53, 753, 751, 755, 762, + 747, 753, 753, 755, 756, 749, 757, 762, 758, 759, - 763, 765, 773, 762, 766, 769, 761, 755, 760, 762, - 765, 758, 768, 766, 769, 770, 771, 768, 770, 763, - 772, 771, 774, 775, 776, 777, 777, 773, 778, 776, - 776, 774, 779, 780, 772, 781, 775, 782, 789, 784, - 782, 784, 780, 778, 785, 785, 786, 787, 782, 788, - 791, 779, 787, 790, 792, 793, 794, 795, 789, 781, - 796, 795, 797, 798, 793, 800, 799, 786, 801, 798, - 788, 802, 791, 790, 792, 799, 803, 800, 796, 794, - 804, 797, 803, 805, 807, 802, 808, 801, 805, 806, - 806, 809, 810, 811, 804, 808, 812, 813, 817, 814, + 756, 760, 757, 758, 760, 759, 761, 763, 763, 764, + 764, 765, 761, 766, 768, 767, 769, 770, 770, 765, + 767, 768, 772, 771, 774, 776, 778, 773, 777, 780, + 772, 766, 771, 773, 776, 769, 779, 777, 780, 781, + 782, 779, 781, 774, 783, 782, 784, 785, 786, 787, + 778, 788, 788, 789, 787, 787, 785, 790, 783, 792, + 791, 786, 793, 797, 795, 793, 795, 798, 789, 791, + 799, 784, 798, 793, 796, 796, 790, 800, 801, 802, + 803, 804, 805, 792, 797, 806, 807, 808, 809, 806, + 804, 799, 812, 810, 809, 811, 813, 800, 801, 815, - 810, 815, 816, 818, 807, 819, 822, 815, 816, 818, - 822, 809, 817, 811, 820, 821, 813, 823, 812, 814, - 820, 821, 824, 825, 826, 819, 827, 827, 825, 828, - 829, 830, 832, 829, 824, 828, 823, 831, 832, 833, - 834, 834, 824, 835, 841, 826, 836, 837, 837, 830, - 831, 836, 838, 839, 840, 840, 842, 839, 843, 833, - 844, 835, 846, 843, 847, 849, 841, 838, 850, 852, - 852, 853, 854, 855, 855, 853, 842, 856, 847, 844, - 857, 858, 43, 859, 857, 849, 846, 854, 867, 850, - 851, 861, 865, 851, 863, 851, 858, 859, 860, 851, + 803, 802, 810, 814, 807, 805, 808, 811, 818, 814, + 813, 812, 816, 815, 817, 817, 819, 816, 820, 821, + 822, 823, 824, 826, 825, 819, 827, 821, 818, 826, + 829, 828, 827, 830, 837, 833, 829, 834, 820, 833, + 822, 824, 831, 823, 825, 828, 832, 835, 831, 836, + 838, 838, 832, 830, 836, 837, 834, 839, 840, 835, + 841, 840, 842, 839, 843, 844, 846, 835, 845, 845, + 843, 847, 848, 848, 849, 842, 847, 850, 841, 851, + 851, 850, 852, 853, 846, 844, 854, 855, 857, 849, + 860, 854, 861, 858, 863, 863, 864, 866, 866, 867, - 867, 851, 856, 860, 862, 861, 851, 865, 863, 862, - 862, 851, 864, 868, 866, 870, 864, 869, 868, 866, - 871, 872, 875, 875, 873, 878, 874, 872, 864, 866, - 873, 869, 874, 876, 871, 877, 870, 879, 876, 880, - 882, 877, 885, 883, 886, 886, 884, 878, 883, 889, - 887, 890, 882, 888, 885, 887, 879, 880, 881, 881, - 884, 888, 891, 889, 881, 892, 881, 893, 893, 894, - 890, 898, 881, 894, 896, 899, 897, 881, 881, 897, - 896, 891, 901, 892, 881, 900, 902, 901, 899, 904, - 898, 900, 905, 906, 907, 908, 909, 910, 904, 911, + 864, 865, 890, 853, 852, 868, 855, 858, 870, 868, + 860, 869, 857, 861, 862, 871, 865, 862, 872, 862, + 871, 890, 870, 862, 867, 862, 869, 874, 873, 876, + 862, 880, 872, 873, 873, 862, 875, 878, 877, 881, + 875, 874, 879, 877, 876, 880, 48, 879, 882, 878, + 883, 884, 875, 877, 889, 885, 883, 884, 886, 886, + 881, 885, 882, 887, 888, 891, 893, 894, 887, 896, + 888, 899, 894, 895, 897, 897, 889, 898, 893, 899, + 900, 896, 898, 891, 892, 892, 901, 895, 902, 904, + 892, 905, 892, 903, 900, 904, 905, 906, 892, 908, - 907, 905, 910, 912, 908, 902, 913, 915, 914, 906, - 918, 923, 916, 921, 924, 909, 915, 912, 917, 911, - 914, 916, 919, 925, 917, 923, 913, 918, 919, 921, - 926, 927, 928, 929, 924, 930, 933, 934, 929, 936, - 930, 933, 925, 937, 926, 936, 934, 928, 939, 927, - 935, 935, 940, 943, 944, 945, 937, 940, 940, 941, - 941, 946, 942, 941, 939, 942, 949, 943, 947, 948, - 950, 945, 949, 952, 944, 953, 951, 954, 957, 946, - 953, 947, 951, 956, 948, 960, 956, 958, 952, 959, - 950, 954, 958, 961, 959, 962, 963, 965, 961, 957, + 907, 909, 909, 892, 892, 901, 914, 902, 910, 903, + 892, 913, 910, 912, 913, 906, 907, 908, 915, 912, + 916, 918, 917, 920, 921, 914, 916, 917, 922, 923, + 924, 915, 920, 921, 925, 923, 926, 927, 928, 924, + 918, 926, 929, 930, 922, 931, 934, 932, 940, 943, + 937, 941, 928, 925, 931, 930, 932, 927, 933, 935, + 939, 942, 929, 934, 933, 935, 937, 943, 940, 944, + 941, 945, 946, 949, 939, 942, 945, 946, 949, 950, + 951, 951, 953, 952, 944, 955, 956, 958, 950, 952, + 958, 956, 956, 957, 957, 953, 959, 957, 960, 961, - 962, 960, 966, 965, 967, 968, 969, 969, 963, 971, - 967, 968, 970, 972, 973, 973, 972, 974, 966, 975, - 976, 970, 977, 978, 979, 977, 980, 971, 981, 982, - 979, 986, 980, 981, 982, 974, 978, 983, 975, 984, - 976, 987, 983, 989, 988, 984, 990, 990, 989, 986, - 988, 991, 993, 992, 994, 995, 996, 997, 995, 996, - 991, 987, 992, 998, 999, 1000, 1001, 1003, 997, 1002, - 993, 1006, 1001, 994, 1004, 1002, 999, 1005, 1005, 1004, - 1007, 998, 1003, 1008, 1000, 1009, 1010, 1011, 1012, 1009, - 1006, 1013, 1015, 1019, 1007, 1008, 1011, 1016, 1016, 1018, + 963, 955, 962, 965, 964, 966, 967, 968, 973, 965, + 959, 969, 967, 963, 970, 961, 969, 976, 960, 964, + 962, 972, 968, 43, 972, 966, 974, 975, 970, 973, + 977, 974, 975, 976, 978, 977, 979, 981, 982, 978, + 983, 984, 986, 981, 985, 985, 983, 984, 979, 987, + 988, 986, 990, 988, 982, 989, 989, 991, 992, 993, + 994, 997, 993, 995, 1002, 996, 997, 987, 1003, 995, + 990, 996, 998, 994, 999, 1000, 991, 998, 992, 999, + 1004, 1000, 1002, 1007, 1005, 1008, 1004, 1009, 1003, 1005, + 1006, 1006, 1007, 1010, 1008, 1011, 1012, 1013, 1011, 1012, - 1020, 1021, 1023, 1023, 1010, 1022, 1021, 1012, 1019, 1024, - 14, 1015, 1020, 1018, 1022, 1025, 1013, 1026, 1028, 1027, - 1028, 1025, 1029, 1026, 1027, 1030, 1031, 1029, 1032, 1024, - 1033, 1034, 1036, 1032, 1035, 1037, 1039, 1039, 1040, 1030, - 1031, 1035, 1041, 1042, 1044, 1033, 13, 1036, 1048, 1043, - 1034, 1045, 1040, 1048, 1037, 1043, 1045, 1051, 1042, 1050, - 1041, 1047, 1047, 1053, 1044, 1045, 1050, 1045, 1049, 1049, - 1045, 1051, 1052, 1054, 1055, 1052, 1056, 1057, 1059, 1058, - 1060, 1056, 1053, 1055, 1058, 1062, 1062, 1063, 1064, 1059, - 1065, 1054, 1063, 1064, 1067, 1066, 1057, 1068, 1067, 1060, + 1014, 1015, 1016, 1017, 1018, 1009, 1020, 1019, 1013, 1017, + 1018, 1020, 1010, 1015, 1021, 1021, 1022, 1023, 1014, 1025, + 1024, 1016, 1019, 1025, 1026, 1027, 1028, 1029, 1031, 1032, + 1032, 1023, 1024, 1035, 1027, 1022, 1034, 1036, 1037, 1039, + 1039, 1040, 1026, 1037, 1038, 1028, 14, 1031, 1035, 1036, + 1034, 1041, 1029, 1038, 1042, 1046, 1050, 1041, 1043, 1047, + 1042, 1040, 1044, 1043, 1044, 1045, 1048, 1049, 1052, 1046, + 1045, 1048, 1051, 1047, 1053, 1050, 1055, 1055, 1056, 1051, + 1057, 1058, 1049, 1052, 1059, 1060, 1063, 1063, 1065, 1065, + 1059, 1070, 1056, 1053, 1061, 1064, 1058, 1066, 1057, 1061, - 1066, 1069, 1070, 1071, 1074, 1073, 1068, 1072, 1076, 1075, - 1065, 1074, 1077, 1078, 1080, 1081, 1069, 1070, 1079, 1072, - 1073, 1075, 1071, 1082, 1079, 1083, 1084, 1076, 1087, 1080, - 1086, 1078, 1088, 1077, 1083, 1081, 1086, 1089, 1091, 1090, - 1088, 1093, 1087, 1082, 1090, 1094, 1084, 1092, 1095, 1099, - 1091, 1098, 1092, 1092, 1096, 1096, 0, 1089, 1099, 1094, - 1093, 1095, 1097, 1100, 1098, 1101, 1101, 1097, 1102, 1100, - 1097, 1097, 1104, 1102, 1103, 1097, 1108, 1105, 1104, 1106, - 1111, 1097, 1105, 1103, 1106, 1097, 1107, 1107, 1109, 1109, - 1110, 1112, 1113, 1110, 1114, 1110, 1116, 1108, 1115, 1117, + 1064, 1067, 1069, 1068, 1066, 1060, 1068, 1071, 1061, 1070, + 1061, 1073, 1072, 1061, 1074, 1067, 1071, 1072, 1075, 1074, + 1076, 1069, 1078, 1078, 1081, 1085, 1079, 1080, 1082, 1075, + 1073, 1079, 1080, 1082, 1083, 1086, 1084, 1087, 1083, 1076, + 1085, 1088, 1089, 1091, 1081, 1084, 1092, 1090, 1093, 1094, + 1086, 1096, 1095, 1088, 1090, 1091, 1087, 1089, 1095, 1097, + 1098, 1099, 1100, 1101, 1102, 1092, 1096, 1094, 1103, 1093, + 1099, 1104, 1105, 1108, 1110, 1107, 1102, 1100, 1112, 1097, + 1098, 1107, 1101, 1109, 1111, 1114, 1104, 1108, 1115, 1111, + 1112, 1109, 1105, 1103, 1110, 1113, 1116, 1117, 1117, 1119, - 1111, 1113, 1118, 1115, 1122, 1119, 0, 1120, 1118, 1112, - 1116, 1119, 1120, 1122, 1114, 1121, 1128, 1117, 1122, 1121, - 1122, 1125, 1122, 1129, 1122, 1123, 1123, 1124, 1124, 1127, - 1124, 1128, 1125, 1127, 1130, 1133, 1135, 1132, 1139, 1131, - 1136, 1129, 1134, 1130, 1131, 1131, 1132, 1134, 1137, 1136, - 1135, 1138, 1139, 1140, 1141, 1141, 1142, 1133, 1143, 1140, - 1144, 1145, 1146, 1147, 1142, 1144, 1148, 1137, 1149, 1151, - 1138, 1146, 1143, 1149, 1157, 1145, 1150, 1150, 1152, 1152, - 1153, 1147, 1153, 1155, 1151, 1156, 1155, 1158, 1159, 1159, - 1156, 1148, 1160, 1157, 1161, 1161, 1158, 1162, 1162, 1163, + 1113, 1113, 1115, 1123, 1114, 1120, 1133, 1121, 1123, 1116, + 1118, 1124, 1119, 1121, 1120, 1118, 1122, 1122, 1118, 1118, + 1124, 1125, 1129, 1118, 1133, 1126, 1127, 1125, 1132, 1118, + 1126, 1127, 1134, 1118, 1128, 1128, 1130, 1130, 1135, 1131, + 1136, 1134, 1131, 1129, 1131, 1136, 1137, 1138, 1132, 1139, + 1140, 1149, 1141, 1143, 13, 1139, 1140, 1141, 1135, 1142, + 1137, 1146, 1143, 1142, 1148, 1138, 1149, 1143, 1148, 1143, + 1150, 1143, 1146, 1143, 1144, 1144, 1145, 1145, 1151, 1145, + 1152, 1153, 1154, 1156, 1155, 1152, 1152, 1151, 1150, 1155, + 1153, 1157, 1158, 1159, 1160, 1161, 1169, 1156, 1162, 1162, - 1164, 1165, 1166, 1166, 1163, 1167, 1168, 1169, 1170, 1168, - 1171, 1173, 1160, 1170, 1172, 1175, 1172, 1176, 1175, 1171, - 1178, 1164, 1165, 1177, 1188, 1167, 1179, 1169, 1177, 1173, - 1180, 1179, 1176, 1185, 1178, 1181, 1182, 1188, 1180, 1184, - 1181, 1182, 1183, 1183, 1184, 1195, 1186, 1187, 1192, 1190, - 1191, 1185, 1186, 1192, 1187, 1190, 1191, 1193, 1194, 1196, - 1197, 1197, 1198, 1193, 1195, 1200, 1201, 1194, 1202, 1203, - 1196, 1204, 1206, 1207, 1202, 1203, 1208, 1204, 1206, 1209, - 1210, 1211, 1198, 1212, 1212, 1200, 1213, 1207, 1214, 1201, - 1215, 1209, 1216, 1207, 1210, 1218, 1208, 1216, 1219, 1211, + 1157, 1161, 1163, 1164, 1154, 1166, 1167, 1168, 1160, 1165, + 1163, 1158, 1159, 1170, 1165, 1167, 1172, 1164, 1170, 1166, + 1178, 1169, 1171, 1171, 1181, 1168, 1173, 1173, 1174, 1176, + 1174, 1172, 1176, 1177, 1179, 1180, 1180, 1184, 1177, 1178, + 1182, 1182, 1184, 1179, 1181, 1183, 1183, 1185, 1186, 1187, + 1187, 1188, 1189, 1190, 1191, 1189, 1192, 1194, 1193, 1191, + 1193, 1196, 1197, 0, 1196, 1192, 1199, 1198, 1185, 1186, + 1201, 1188, 1198, 1190, 1200, 1194, 1202, 1197, 1201, 1200, + 1199, 1202, 1203, 1204, 1204, 1205, 1206, 1203, 1207, 1208, + 1205, 1211, 1209, 1212, 1207, 1213, 1208, 1211, 1216, 1212, - 1217, 1217, 1221, 1219, 1222, 1223, 1213, 1224, 1215, 1222, - 1222, 1225, 1226, 1214, 1227, 1228, 1224, 1229, 1218, 1225, - 1284, 1221, 1229, 1223, 1231, 1229, 1226, 1238, 1284, 1227, - 1228, 1233, 1230, 1228, 1230, 1234, 1235, 1233, 1231, 1234, - 1236, 1237, 1243, 1239, 1240, 1236, 1236, 1235, 1241, 1240, - 1242, 1245, 1246, 1238, 1247, 1242, 1248, 1248, 1250, 1249, - 1237, 1239, 1243, 1249, 1251, 1245, 1241, 1252, 1253, 1254, - 1246, 1255, 1247, 1252, 1256, 1257, 1250, 1258, 0, 1259, - 1253, 1262, 1261, 1251, 1259, 1255, 1260, 1261, 1254, 1256, - 1257, 1263, 1265, 1260, 1264, 1264, 1258, 1266, 1266, 1262, + 1213, 1214, 1215, 1217, 1206, 1209, 1219, 1214, 1218, 1218, + 1221, 1215, 1222, 1223, 1217, 1224, 1225, 1216, 1227, 1223, + 1228, 1224, 1225, 1229, 1227, 1230, 1219, 1231, 1232, 1234, + 1221, 1233, 1233, 1235, 1228, 1222, 1236, 1230, 1239, 1237, + 1228, 1231, 1244, 1229, 1237, 1240, 1232, 1238, 1238, 1234, + 1240, 1242, 1247, 1248, 1236, 1245, 1249, 1243, 1235, 1246, + 1244, 1239, 1243, 1243, 1245, 1252, 1247, 1246, 1248, 1258, + 1242, 1249, 1250, 1251, 1249, 1251, 1254, 1250, 1256, 1252, + 1250, 1255, 1254, 1259, 1260, 1255, 1257, 1262, 1258, 1256, + 1261, 1257, 1257, 1263, 1264, 1261, 1266, 1267, 1263, 1268, - 1263, 1268, 1267, 1278, 1269, 1270, 1271, 1265, 1267, 1269, - 1279, 1270, 1271, 1272, 1272, 1273, 1273, 1275, 1275, 1276, - 1277, 1278, 1268, 1276, 1279, 1280, 1281, 1282, 1282, 1277, - 1283, 1285, 1286, 1281, 1287, 1290, 1285, 1288, 1292, 1289, - 1280, 1293, 1288, 1288, 1289, 1289, 1286, 1291, 1291, 1294, - 1283, 1295, 1296, 1287, 1297, 1290, 1295, 1292, 1294, 1298, - 1293, 1299, 1301, 1300, 1302, 1303, 1304, 1299, 1300, 1305, - 1302, 1296, 1304, 1306, 1297, 1305, 1307, 1298, 1308, 1309, - 1310, 1311, 1313, 1313, 1303, 1312, 1314, 1315, 1301, 1314, - 1316, 1316, 1306, 1320, 1310, 1307, 1318, 1308, 1309, 1315, + 1269, 1269, 1260, 1270, 1271, 1262, 1272, 1270, 1274, 1259, + 1266, 1275, 1273, 1276, 1264, 1267, 1277, 1268, 1273, 1278, + 1274, 1279, 1271, 1280, 1282, 1272, 1281, 1276, 1280, 1282, + 1275, 1277, 1283, 1281, 1278, 1284, 1285, 1285, 1286, 1287, + 1279, 1288, 1289, 1289, 1284, 1290, 1291, 1294, 1287, 1307, + 1283, 1290, 1293, 1286, 1292, 1292, 1307, 1295, 1293, 1296, + 1291, 1288, 1295, 1297, 1304, 1296, 1298, 1298, 1294, 1297, + 1299, 1299, 1301, 1301, 1302, 1303, 1305, 1306, 1302, 1308, + 1308, 1309, 1304, 1310, 1303, 1312, 1313, 1316, 1311, 1314, + 1305, 1310, 1306, 1311, 1314, 1314, 1318, 1315, 1319, 1312, - 1312, 1318, 1311, 1317, 1317, 1319, 1320, 1321, 1322, 1319, - 1325, 1323, 1327, 1323, 1326, 1328, 1321, 1323, 1329, 1326, - 1331, 1322, 1330, 1330, 1333, 1331, 1332, 1327, 1325, 1334, - 1323, 1335, 1332, 1336, 1329, 1328, 1335, 1336, 1338, 1333, - 1337, 1339, 1334, 1340, 1337, 1341, 1342, 1342, 1344, 1346, - 1347, 1341, 1348, 1348, 1349, 1347, 1350, 1356, 1338, 1339, - 1349, 1352, 1352, 1340, 1354, 1357, 1344, 1354, 1355, 1355, - 1346, 1359, 1360, 1356, 1359, 1361, 1350, 1362, 1362, 1363, - 1364, 1357, 1366, 1365, 1361, 1367, 1369, 1366, 1368, 1368, - 1370, 1371, 1360, 1372, 1363, 1369, 1373, 1373, 1374, 1367, + 1322, 1309, 1315, 1315, 1320, 1313, 1321, 1316, 1317, 1317, + 1323, 1321, 1325, 1320, 1324, 1318, 1326, 1319, 1325, 1322, + 1327, 1326, 1328, 1329, 1332, 1330, 1333, 1331, 1328, 1334, + 1323, 1330, 1324, 1331, 1335, 1336, 1337, 1338, 1339, 1339, + 0, 1340, 1329, 1332, 1340, 1333, 1327, 1341, 1334, 1336, + 1342, 1342, 1338, 1335, 1343, 1343, 1344, 1337, 1345, 1341, + 1346, 1344, 1345, 1347, 1348, 1349, 1353, 1349, 1351, 1352, + 1354, 1349, 1347, 1346, 1352, 1355, 1358, 1348, 1356, 1356, + 1357, 1353, 1358, 1359, 1349, 1357, 1351, 1360, 1361, 1364, + 1354, 1355, 1362, 1361, 1365, 1363, 1362, 1366, 1359, 1363, - 1376, 1364, 1365, 1375, 1377, 1376, 1371, 1379, 1370, 1378, - 1378, 1379, 1374, 1380, 1381, 1381, 1382, 1383, 1372, 1377, - 1384, 1375, 1385, 1390, 1384, 1386, 1388, 1388, 1383, 1389, - 1386, 1391, 1392, 1380, 1393, 1394, 1394, 1390, 1382, 1395, - 1396, 1385, 1397, 1398, 1395, 1400, 1392, 1389, 1399, 1403, - 1391, 1391, 1398, 1399, 1401, 1403, 1401, 1404, 1402, 1393, - 1396, 1405, 1397, 1402, 1407, 1400, 1409, 1405, 1408, 1408, - 1410, 1413, 1414, 1414, 1412, 1416, 1410, 1404, 1407, 1412, - 1415, 1415, 1417, 1418, 1419, 1409, 1422, 1419, 1424, 1416, - 1420, 1420, 1421, 1423, 1424, 1413, 1423, 1425, 1418, 1423, + 1360, 1367, 1368, 1368, 1370, 1372, 1373, 1367, 1376, 1364, + 1375, 1373, 1365, 1374, 1374, 1382, 1375, 1366, 1378, 1378, + 1380, 1383, 1370, 1380, 1381, 1381, 1372, 1385, 1376, 1386, + 1385, 1382, 1387, 1388, 1388, 1389, 1390, 1383, 1392, 1391, + 1393, 1387, 1395, 1392, 1394, 1394, 1396, 1397, 1398, 1386, + 1389, 1395, 1399, 1399, 1393, 1400, 1401, 1390, 1391, 1405, + 1402, 1403, 1397, 1405, 1396, 1402, 1404, 1404, 1406, 1400, + 1407, 1407, 1408, 1398, 1401, 1409, 1403, 1410, 1411, 1412, + 1415, 1410, 1414, 1414, 1412, 1416, 1409, 1417, 1406, 1418, + 1419, 1420, 1420, 1422, 1408, 1421, 1423, 1411, 1415, 1416, - 1417, 1428, 1425, 1430, 1421, 1426, 1422, 1429, 1426, 1432, - 1428, 1423, 1429, 1431, 1433, 1432, 1431, 1434, 1434, 1433, - 1435, 1435, 1437, 1436, 1426, 1438, 1439, 1437, 1430, 1436, - 1440, 1441, 1442, 1443, 1444, 1442, 1445, 1446, 1438, 1443, - 1444, 1445, 1447, 1446, 1439, 1448, 1449, 1449, 1450, 1440, - 1448, 1441, 1451, 1450, 1452, 1453, 1457, 1454, 1455, 1460, - 1458, 1459, 1461, 1462, 1463, 1447, 1466, 1459, 1457, 1469, - 1451, 1454, 1455, 1458, 1452, 1453, 1470, 1462, 1467, 1460, - 1465, 1465, 1461, 1467, 1469, 1463, 1466, 1468, 1468, 1471, - 1470, 1472, 1473, 1474, 1476, 1475, 1477, 1481, 0, 1479, + 1421, 1424, 1426, 1418, 1425, 1429, 1417, 1417, 1430, 1425, + 1424, 1429, 1427, 1422, 1427, 1419, 1423, 1433, 1428, 1431, + 1434, 1434, 1426, 1428, 1435, 1431, 1436, 1439, 1430, 1438, + 1442, 1433, 1436, 1444, 1438, 1440, 1440, 1441, 1441, 1443, + 1446, 1446, 1445, 1435, 1442, 1445, 1447, 1448, 1444, 1450, + 1449, 1439, 1454, 1449, 1451, 1450, 1449, 1443, 1447, 1451, + 1452, 1454, 1456, 1452, 1455, 1458, 0, 1448, 1449, 1455, + 1457, 1458, 1459, 1457, 1460, 1460, 1462, 1459, 1463, 1452, + 1461, 1461, 1462, 1463, 1464, 1465, 1466, 1456, 1467, 1468, + 1469, 1473, 1468, 1470, 1477, 1471, 1469, 1464, 1472, 1470, - 1486, 1473, 1475, 1476, 1482, 1485, 1476, 1482, 1474, 1472, - 1483, 1483, 1477, 1471, 1479, 1484, 1484, 1485, 1486, 1479, - 1487, 1489, 1481, 1487, 1488, 1488, 1490, 1491, 1492, 1493, - 1494, 1495, 1491, 1492, 1489, 1496, 1501, 1499, 1497, 1505, - 1495, 1503, 1498, 1499, 1502, 1490, 1494, 1497, 1493, 1504, - 1497, 1498, 1500, 1500, 1496, 1505, 1501, 1502, 1506, 1503, - 1509, 1510, 1512, 1504, 1511, 1511, 1513, 1514, 1515, 1515, - 1506, 1517, 1514, 1518, 1519, 1513, 1517, 1516, 1512, 1510, - 1520, 1524, 1521, 1515, 1525, 1509, 1516, 1521, 1521, 1516, - 1523, 1518, 1526, 1527, 1528, 1519, 1524, 1526, 1520, 1527, + 1471, 1474, 1476, 1465, 1472, 1466, 1474, 1476, 1467, 1475, + 1475, 1478, 1477, 1479, 1473, 1480, 1481, 1483, 1482, 1484, + 1485, 1486, 1485, 1491, 1488, 1489, 1492, 1493, 1490, 1480, + 1481, 1478, 1482, 1479, 1490, 1483, 1488, 1494, 1489, 1497, + 1486, 1493, 1500, 1491, 1484, 1498, 1492, 1496, 1496, 1501, + 1498, 1499, 1499, 1502, 1503, 1504, 1505, 1500, 1494, 1497, + 1506, 1507, 1508, 1501, 1504, 1510, 1512, 1506, 1514, 1514, + 1507, 1505, 1503, 1507, 1515, 1515, 1513, 1502, 1508, 1513, + 1510, 1516, 1517, 1518, 1520, 1510, 1518, 1519, 1519, 1521, + 1522, 1512, 1524, 1516, 1523, 1522, 1525, 1520, 1526, 1523, - 1529, 1529, 1530, 1532, 1523, 1531, 1525, 1533, 1530, 1532, - 1531, 1535, 1528, 1533, 1536, 1537, 1538, 1539, 1540, 1542, - 1539, 1537, 1544, 1545, 1540, 1546, 1539, 1542, 1536, 1538, - 1547, 1535, 1548, 1546, 1549, 1550, 1551, 1552, 1552, 1547, - 1553, 1544, 1545, 1555, 1557, 1548, 1553, 1549, 1554, 1550, - 1551, 1556, 1556, 1558, 1554, 1559, 1555, 1560, 1562, 1552, - 1561, 1563, 1567, 1564, 1557, 1568, 1561, 1566, 1566, 1568, - 1560, 1558, 1573, 1569, 1559, 1575, 1572, 1563, 1569, 1570, - 1562, 1564, 1567, 1571, 1570, 1572, 1576, 1576, 1571, 1577, - 1575, 1578, 1579, 1580, 1580, 1573, 1581, 1582, 1585, 1586, + 1517, 1527, 1532, 1530, 1528, 1529, 1533, 1526, 1521, 1530, + 1534, 1524, 1525, 1528, 1529, 1535, 1528, 1531, 1531, 1533, + 1527, 1536, 1532, 1537, 1540, 1541, 1542, 1542, 1534, 1535, + 1543, 1544, 1549, 1545, 1548, 1537, 1547, 1536, 1545, 1548, + 1544, 1546, 1546, 1541, 1550, 1547, 1543, 1552, 1547, 1540, + 1549, 1551, 1552, 1552, 1554, 1555, 1546, 1556, 1557, 1559, + 1558, 1560, 1560, 1557, 1566, 1550, 1558, 1561, 1554, 1551, + 1555, 1562, 1563, 1561, 1564, 1567, 1562, 1559, 1563, 1556, + 1564, 1568, 1569, 1570, 1566, 1571, 1570, 1568, 1573, 1567, + 1575, 1571, 1570, 1576, 1577, 1569, 1573, 1578, 1579, 0, - 1583, 1584, 1588, 1578, 1582, 1589, 1591, 1591, 1577, 1587, - 1581, 1579, 1583, 1584, 1588, 1587, 1590, 1585, 1592, 1586, - 1596, 1592, 1590, 1589, 1593, 1593, 1595, 1597, 1599, 1596, - 1600, 1595, 1600, 1597, 1598, 1598, 1601, 1602, 1603, 1601, - 1599, 1604, 1606, 1605, 1607, 1610, 1608, 1606, 1609, 1612, - 1610, 1614, 1618, 1607, 0, 1611, 1614, 1602, 1608, 1604, - 1603, 1605, 1613, 1609, 1611, 1615, 1617, 1613, 1619, 1612, - 1616, 1616, 1617, 1618, 1613, 1620, 1621, 1611, 1623, 1622, - 1615, 1622, 1624, 1624, 1625, 1625, 1627, 1619, 1626, 1626, - 1630, 1620, 1623, 1631, 1623, 1638, 1621, 1628, 1628, 1629, + 1580, 1581, 1577, 1582, 1583, 1583, 1578, 1586, 1584, 1575, + 1585, 1579, 1576, 1580, 1584, 1581, 1585, 1582, 1587, 1587, + 1586, 1588, 1589, 1590, 1591, 1592, 1583, 1593, 1594, 1595, + 1598, 1592, 1597, 1597, 1599, 1604, 1603, 1591, 1599, 1606, + 1589, 1588, 1590, 1600, 1594, 1603, 1601, 1595, 1600, 1593, + 1598, 1601, 1602, 1608, 1606, 1607, 1607, 1602, 1604, 1609, + 1610, 1611, 1611, 1612, 1614, 1616, 1613, 1617, 1615, 1618, + 1619, 1609, 1608, 1613, 1620, 1618, 1614, 1612, 1623, 1610, + 1615, 1623, 1619, 1621, 1616, 1622, 1622, 1617, 1626, 1621, + 1624, 1624, 1620, 1626, 1627, 1628, 1629, 1629, 1630, 1633, - 1629, 1632, 1632, 1633, 1634, 1635, 1627, 1633, 1635, 1637, - 1634, 1630, 1639, 1638, 1631, 1637, 1640, 1641, 1639, 1644, - 1641, 1642, 1642, 1643, 1643, 1644, 1645, 1646, 1647, 1648, - 1649, 1651, 1652, 1658, 1655, 1648, 1651, 1651, 1645, 1645, - 1645, 1640, 1653, 1654, 1653, 1645, 1652, 1646, 1647, 1655, - 1649, 1656, 1657, 1658, 1654, 1659, 1661, 1656, 1660, 1660, - 1663, 1657, 1662, 1662, 1664, 1665, 1665, 1666, 1666, 1667, - 1670, 1670, 1671, 1675, 1672, 1674, 1659, 1677, 1677, 1676, - 1663, 1678, 1661, 1672, 1674, 1676, 1664, 1681, 1679, 1667, - 1682, 1680, 1683, 1683, 1675, 1684, 1681, 1671, 1680, 1685, + 1631, 1628, 1631, 1627, 1632, 1634, 1635, 1632, 1636, 1637, + 1630, 1638, 1641, 1639, 1637, 1640, 1643, 1641, 1646, 1633, + 1638, 1649, 1642, 1644, 1635, 1639, 1636, 1634, 1644, 1645, + 1640, 1642, 1650, 1646, 1645, 1644, 1643, 1647, 1647, 1648, + 1651, 1652, 1649, 1654, 1642, 1648, 1653, 1658, 1653, 1655, + 1655, 1650, 1656, 1656, 1657, 1657, 1651, 1654, 1661, 1654, + 1662, 1652, 1659, 1659, 1660, 1660, 1664, 1658, 1663, 1663, + 1664, 1665, 1666, 1669, 1668, 1666, 1670, 1665, 1671, 1661, + 1668, 1662, 1670, 1672, 1673, 1673, 1672, 1674, 1675, 1676, + 1676, 1669, 1677, 1675, 1678, 1679, 1679, 1681, 1680, 1678, - 1687, 1688, 1678, 1679, 1689, 1687, 1690, 1688, 1691, 1693, - 1693, 1692, 1696, 1690, 1691, 1685, 1682, 1692, 1694, 1695, - 1697, 1684, 1698, 1694, 1689, 1700, 1699, 1701, 1695, 1699, - 1702, 1702, 1696, 1706, 1698, 1703, 1704, 1705, 1709, 1697, - 1707, 1703, 1704, 1700, 1707, 1710, 1711, 1713, 1706, 1712, - 1712, 1711, 1716, 1701, 1714, 1717, 1718, 1705, 1709, 1717, - 1707, 1719, 1718, 1720, 1720, 1722, 1713, 1710, 1721, 1714, - 1719, 1716, 1721, 1723, 1723, 1724, 1722, 1725, 1726, 1727, - 1728, 1722, 1729, 1730, 1727, 1732, 1731, 1733, 1733, 1730, - 1732, 1725, 1734, 1734, 1735, 1737, 1724, 1726, 1735, 1738, + 1682, 1683, 1684, 1671, 1680, 1685, 0, 1674, 1684, 1681, + 1681, 1681, 1687, 1677, 1688, 1690, 1681, 1687, 1687, 1691, + 1682, 1683, 1689, 1692, 1689, 1685, 1690, 1693, 1688, 1692, + 1694, 1695, 1696, 1696, 1691, 1697, 1693, 1698, 1698, 1699, + 1700, 1701, 1701, 1702, 1702, 1703, 1706, 1706, 1707, 1708, + 1694, 1710, 1695, 1711, 1713, 1713, 1714, 1712, 1708, 1699, + 1710, 1697, 1700, 1712, 1715, 1703, 1718, 1717, 1716, 1719, + 1719, 1720, 1721, 1707, 1711, 1716, 1717, 1714, 1723, 1715, + 1724, 1725, 1726, 1723, 1727, 1728, 1724, 1731, 1721, 1726, + 1727, 1728, 1718, 1729, 1729, 1730, 1731, 1720, 1732, 1734, - 1728, 1731, 1729, 1739, 1737, 1740, 1740, 1742, 1742, 1746, - 1738, 1743, 1744, 1745, 1748, 1738, 1743, 1743, 1744, 1745, - 1747, 1749, 1751, 1739, 1752, 1747, 1748, 1749, 1752, 1753, - 1754, 1755, 1756, 1757, 1751, 1746, 1758, 1755, 1760, 1757, - 1761, 1753, 1762, 1764, 1765, 1765, 1764, 1762, 1758, 1768, - 1760, 1766, 1766, 0, 1756, 1754, 1767, 1767, 1769, 1761, - 1770, 1773, 1771, 1775, 1769, 1772, 1770, 1771, 1775, 1768, - 1773, 1772, 1777, 1778, 1781, 1777, 1779, 1779, 1782, 1783, - 1784, 1784, 1785, 1786, 1783, 1778, 1781, 1787, 1786, 1789, - 1782, 1785, 1787, 1788, 1788, 1790, 1791, 1792, 1793, 1796, + 1730, 1725, 1733, 1735, 1736, 1737, 1735, 1738, 1738, 1739, + 1740, 1734, 1741, 1742, 1745, 1739, 1740, 1749, 1732, 1743, + 1746, 1733, 1736, 1743, 1747, 1748, 1748, 1752, 1742, 1747, + 1750, 1737, 1741, 1753, 1745, 1754, 1749, 1753, 1755, 1743, + 1758, 1754, 1746, 1756, 1756, 1750, 1752, 1755, 1757, 1759, + 1759, 1758, 1757, 1760, 1761, 1763, 1758, 1762, 1764, 1765, + 1763, 1766, 1767, 1773, 1768, 1769, 1769, 1766, 1761, 1768, + 1770, 1770, 1773, 1775, 1760, 1774, 1762, 1767, 1764, 1765, + 1771, 1776, 1776, 1782, 1771, 1790, 1774, 1778, 1778, 1779, + 1780, 1774, 1781, 1775, 1779, 1779, 1780, 1783, 1781, 1784, - 1794, 1795, 1793, 1797, 1790, 1794, 1798, 1795, 1799, 1789, - 1802, 1803, 1797, 1807, 1791, 1806, 1792, 1796, 1801, 1801, - 1803, 0, 1799, 1805, 1798, 1804, 1804, 1806, 1802, 1809, - 1801, 1808, 1805, 1815, 1807, 1816, 1808, 1812, 1812, 1818, - 1814, 1819, 1809, 1814, 1820, 1821, 1822, 1822, 1828, 1815, - 1820, 1816, 1824, 1824, 1818, 1819, 1823, 1825, 1823, 1827, - 1829, 1829, 1821, 1830, 1831, 1825, 1827, 1832, 1828, 1833, - 1834, 1835, 1830, 1836, 1837, 1839, 1842, 1840, 1843, 1832, - 1837, 1833, 1834, 1841, 1841, 1831, 1845, 1844, 1836, 1840, - 1844, 1845, 1846, 1837, 1842, 1839, 1848, 1835, 1843, 1850, + 1785, 1787, 1783, 1788, 1789, 1792, 1785, 1788, 1791, 1782, + 1790, 1784, 1793, 1787, 1791, 1797, 1789, 1794, 1793, 1796, + 1798, 1800, 1801, 1801, 1800, 1798, 1804, 1792, 0, 1794, + 1809, 1796, 1802, 1802, 1797, 1803, 1803, 1805, 1806, 1809, + 1807, 1808, 1814, 1805, 1806, 1807, 1804, 1808, 1811, 1813, + 1815, 1815, 1813, 1811, 1814, 1817, 1818, 1819, 1820, 1820, + 1821, 1822, 1819, 1824, 1824, 1823, 1822, 1817, 1818, 1821, + 1823, 1825, 1826, 1829, 1827, 1828, 1831, 1829, 1830, 1832, + 1833, 1826, 1831, 1830, 1834, 1835, 1837, 1837, 1838, 1833, + 1843, 1825, 1827, 0, 1828, 1839, 1841, 1832, 1837, 1835, - 1849, 1848, 1849, 1851, 1852, 1854, 1856, 1857, 1851, 1858, - 1860, 1852, 1846, 1859, 1854, 1859, 1857, 1850, 1862, 1863, - 1862, 1858, 1864, 1864, 1856, 1865, 1866, 1868, 1867, 1860, - 1867, 1866, 1868, 1863, 1869, 1870, 1871, 1872, 1875, 1869, - 1873, 1874, 1877, 1872, 1878, 1873, 1875, 1879, 1879, 1880, - 1880, 1865, 1881, 1870, 1874, 1882, 1871, 1883, 1878, 1884, - 1885, 1877, 1885, 1883, 1884, 1886, 1887, 1881, 1888, 1888, - 1890, 1890, 1889, 1894, 1887, 1882, 1891, 1891, 1892, 1898, - 1893, 1896, 1887, 1886, 1889, 1893, 1897, 1892, 1897, 1899, - 1896, 1894, 1900, 1896, 1899, 1899, 1901, 1903, 1904, 1905, + 1840, 1840, 1834, 1842, 1839, 1841, 1838, 1844, 1845, 1848, + 1848, 1843, 1844, 1850, 1851, 1842, 1850, 1852, 1855, 1854, + 1856, 1845, 1857, 1858, 1858, 1859, 1856, 1859, 1860, 1860, + 1851, 1869, 1855, 1852, 1854, 1861, 1863, 1863, 1866, 1857, + 1864, 1864, 1867, 1861, 1866, 1868, 1870, 1870, 1867, 1871, + 1872, 1869, 1868, 1873, 1874, 1875, 1876, 1877, 1871, 1880, + 1883, 1881, 1878, 1882, 1882, 1873, 1874, 1875, 1878, 1884, + 1886, 1872, 1877, 1881, 1885, 1886, 1887, 1885, 1883, 1880, + 1889, 1878, 1876, 1891, 1890, 1889, 1890, 1892, 1893, 1884, + 1895, 1897, 1892, 1898, 1899, 1893, 1887, 1901, 1900, 1895, - 1898, 1900, 1907, 1904, 1905, 1908, 1911, 1909, 1901, 1903, - 1910, 1910, 1912, 1913, 1914, 1907, 1909, 1915, 1919, 1917, - 1931, 1918, 1920, 1928, 1911, 1908, 1922, 1920, 1914, 1913, - 1912, 1917, 1915, 1918, 1921, 1922, 1925, 1927, 1919, 1921, - 1930, 1929, 1925, 1927, 1932, 1931, 1928, 1933, 1933, 1936, - 1934, 1935, 1935, 1932, 1939, 1925, 1929, 1937, 1930, 1934, - 1938, 1937, 0, 1945, 1940, 1938, 1941, 1939, 1936, 1940, - 1940, 1942, 1941, 1943, 1944, 1950, 1943, 1942, 1948, 1948, - 1949, 1949, 1944, 1945, 1950, 1951, 1951, 1952, 1952, 1953, - 1954, 1955, 1962, 1956, 1963, 1949, 1962, 1955, 1956, 1957, + 1900, 1891, 1898, 1903, 1904, 1903, 1899, 1905, 1905, 1897, + 1906, 1908, 1907, 1908, 1909, 1910, 1901, 1907, 1904, 1909, + 1910, 1911, 1912, 1913, 1915, 1914, 1916, 1918, 1922, 1913, + 1914, 1919, 1920, 1920, 1916, 1923, 1906, 1915, 1924, 1911, + 1921, 1921, 1912, 1922, 1924, 1919, 1918, 1925, 1926, 1927, + 1926, 1930, 1925, 1928, 1935, 1923, 1929, 1929, 1931, 1931, + 1939, 1928, 1933, 1930, 1932, 1932, 1937, 1927, 1934, 1928, + 1941, 1933, 1935, 1934, 1938, 1937, 1938, 1940, 1937, 1941, + 1942, 1939, 1940, 1940, 1944, 1945, 1946, 1948, 1949, 1950, + 1945, 1946, 1942, 1951, 1951, 1952, 1944, 1953, 1950, 1956, - 1957, 1953, 1958, 1958, 1959, 1960, 1949, 1966, 1954, 1959, - 1967, 1960, 1964, 1968, 1963, 1967, 1964, 1970, 1969, 1971, - 1973, 1974, 1970, 1972, 1975, 1977, 1974, 1976, 1976, 1977, - 1978, 1980, 1966, 1969, 1982, 1981, 1968, 1971, 1979, 1972, - 1973, 1984, 1985, 1979, 1983, 1978, 1975, 1981, 1988, 1983, - 1986, 1986, 1989, 1982, 1984, 1990, 1988, 1980, 1991, 1992, - 1985, 1993, 1998, 1994, 1995, 1996, 1999, 1999, 2002, 2000, - 2007, 1989, 2000, 2038, 1990, 2001, 1995, 1998, 2003, 2038, - 1993, 1991, 2002, 1992, 1994, 2007, 1996, 2008, 2001, 2004, - 2004, 2003, 2005, 2005, 2006, 2006, 2009, 2009, 2010, 2012, + 1948, 1954, 1955, 1960, 1961, 1962, 1958, 1959, 1949, 1961, + 1962, 1963, 1969, 1952, 1956, 1953, 1955, 1954, 1958, 1959, + 1963, 1966, 1968, 1960, 1970, 1971, 1972, 1966, 1968, 1973, + 1974, 1974, 1975, 1976, 1976, 1969, 1977, 1980, 1973, 1970, + 1966, 1975, 1978, 1971, 1979, 1986, 1978, 1981, 1982, 1979, + 1980, 1972, 1981, 1981, 1982, 1977, 1983, 1984, 1985, 1995, + 1984, 1991, 1983, 1989, 1989, 1986, 1985, 1990, 1990, 1994, + 1991, 1992, 1992, 1993, 1993, 1997, 2007, 1995, 1996, 2003, + 1997, 1994, 1990, 2003, 1996, 1998, 1998, 1999, 1999, 2000, + 2001, 2004, 2008, 1990, 2000, 2005, 2001, 2008, 2009, 2005, - 2008, 2011, 2011, 2014, 2012, 2015, 2016, 2010, 2014, 2017, - 2010, 2018, 2018, 2019, 2019, 2020, 2021, 2021, 2022, 2023, - 2023, 2017, 2024, 2025, 2028, 2015, 2016, 2030, 2025, 2026, - 2026, 2027, 2027, 2029, 2020, 2031, 2022, 2024, 2028, 2033, - 2035, 2030, 2029, 2037, 2033, 2034, 2034, 2036, 2036, 2039, - 2040, 2040, 2039, 2042, 2031, 2041, 2041, 2044, 2043, 2035, - 2047, 2037, 2045, 2045, 2048, 2050, 2040, 2049, 2058, 2050, - 2051, 2051, 2042, 2043, 2052, 2054, 2044, 2055, 2053, 2059, - 2047, 2060, 2049, 2053, 2057, 2057, 2059, 2048, 2058, 2061, - 2054, 2062, 2055, 2052, 2063, 2060, 2064, 2064, 2066, 2065, + 2010, 2007, 2011, 2013, 2012, 2014, 2016, 2011, 2015, 2017, + 2017, 2004, 2018, 2015, 2019, 2010, 2018, 2021, 2020, 2013, + 2022, 2009, 2012, 2020, 2025, 2014, 2023, 2030, 2016, 2019, + 2024, 2026, 2022, 2027, 2027, 2024, 2029, 2025, 2031, 2032, + 2033, 2034, 2035, 2021, 2029, 2023, 2030, 2036, 2037, 2026, + 2039, 2095, 2042, 2041, 2043, 2095, 2043, 2031, 2042, 2036, + 2034, 2046, 2032, 2035, 2033, 2039, 2041, 2044, 2044, 2037, + 2045, 2047, 2052, 2045, 2046, 2048, 2049, 2049, 2050, 2050, + 2051, 2051, 2053, 2054, 2054, 2047, 2060, 2052, 2048, 2055, + 2056, 2056, 2057, 2061, 2059, 2053, 2062, 2057, 2055, 2059, - 2066, 2067, 2069, 2072, 2067, 2070, 2071, 2061, 2065, 2062, - 2070, 2071, 2073, 2074, 2069, 2076, 2080, 2075, 2078, 2067, - 2063, 2067, 2075, 2078, 2079, 2073, 2081, 2082, 2072, 2079, - 2083, 2080, 2081, 2084, 2074, 2085, 2083, 2086, 2084, 2087, - 2085, 2076, 2088, 2093, 2089, 2088, 2090, 2091, 2082, 2092, - 2098, 0, 2087, 2089, 2094, 2090, 2091, 2093, 2092, 2095, - 2094, 2106, 2086, 2096, 2100, 2095, 2102, 2096, 2101, 2101, - 2098, 2104, 2102, 2100, 2103, 2103, 2107, 2106, 2108, 2108, - 2109, 2110, 2112, 2103, 2113, 2115, 2114, 2119, 2121, 2121, - 2110, 2104, 2107, 2104, 2112, 2109, 2117, 2115, 2118, 2117, + 2065, 2055, 2063, 2063, 2064, 2064, 2060, 2067, 2062, 2066, + 2066, 2068, 2068, 2061, 2069, 2070, 2071, 2071, 2073, 2065, + 2070, 2072, 2072, 2075, 2074, 2067, 2076, 2079, 2079, 2069, + 2078, 2080, 2073, 2074, 2082, 2078, 2083, 2075, 2081, 2081, + 2084, 2087, 2083, 2084, 2088, 2076, 2085, 2085, 2086, 2086, + 2080, 2089, 2082, 2090, 2090, 2092, 2093, 2094, 2097, 2088, + 2087, 2098, 2085, 2096, 2096, 2099, 2098, 2100, 2102, 2102, + 2089, 2103, 2094, 2105, 2104, 2092, 2106, 2097, 2107, 2093, + 2099, 2104, 2100, 2108, 2109, 2109, 2110, 2105, 2111, 2114, + 2111, 2103, 2118, 2115, 2106, 2110, 2107, 2112, 2115, 2116, - 2113, 2114, 2120, 2118, 2122, 2122, 2126, 2119, 2124, 2124, - 2125, 2126, 2127, 2125, 2120, 2128, 2129, 2129, 2127, 2130, - 2132, 2128, 2131, 2131, 2133, 2134, 2135, 2135, 2136, 2137, - 2138, 2145, 2132, 2130, 2136, 2138, 2140, 0, 2133, 2141, - 2140, 2144, 2141, 2137, 2134, 2142, 2142, 2143, 2148, 2146, - 2144, 2145, 2143, 2146, 2147, 2147, 2151, 2150, 2152, 2153, - 2154, 2148, 2150, 2155, 2154, 2156, 2157, 2159, 2158, 2164, - 2156, 2161, 2157, 2153, 2158, 2162, 2151, 2164, 2152, 2165, - 2162, 2165, 2163, 2155, 2168, 2159, 2171, 2161, 2163, 2169, - 2169, 2170, 2172, 2172, 2170, 2174, 2175, 2176, 2168, 2174, + 2112, 2114, 2117, 2119, 2116, 2118, 2120, 2121, 2123, 2108, + 2125, 2120, 2126, 2123, 2124, 2112, 2127, 2112, 2126, 2124, + 2128, 2131, 2132, 2129, 2119, 2125, 2128, 2117, 2129, 2130, + 2138, 2134, 2135, 2121, 2130, 2132, 2133, 2127, 2136, 2133, + 2134, 2135, 2137, 2139, 2138, 2143, 2131, 2136, 2140, 2139, + 2145, 2137, 2141, 2149, 2140, 2147, 2141, 2146, 2146, 2145, + 2151, 2147, 2148, 2148, 2152, 2143, 2153, 2153, 2154, 2155, + 2157, 2148, 2158, 2149, 2159, 2149, 2151, 2164, 2155, 2160, + 2152, 2162, 2157, 2154, 2162, 2163, 2165, 0, 2158, 2159, + 2163, 2160, 2166, 2166, 2167, 2167, 2175, 2164, 2165, 2169, - 2177, 2177, 2175, 2183, 2178, 2181, 2181, 2186, 2185, 2176, - 2189, 2190, 2171, 2178, 2191, 2189, 2193, 2193, 2197, 2191, - 2192, 2183, 2185, 2186, 2197, 2192, 2195, 2195, 2198, 2198, - 2199, 2200, 2203, 2201, 2207, 2204, 2208, 2190, 2201, 2205, - 2205, 2209, 2208, 2207, 2214, 2210, 2199, 2204, 2212, 2212, - 2215, 2203, 2213, 2200, 2220, 2213, 2217, 2217, 2221, 2209, - 2210, 2218, 2218, 2214, 2219, 2222, 2224, 2221, 2215, 2219, - 2222, 2223, 2220, 2223, 2225, 2226, 2227, 2228, 2229, 0, - 2224, 2227, 2235, 2229, 2230, 2230, 2234, 2226, 2225, 2231, - 2231, 2232, 2232, 2233, 2233, 2239, 2236, 2228, 2234, 2240, + 2169, 2170, 2171, 2172, 2170, 2173, 2177, 2171, 2178, 2172, + 2175, 2173, 2174, 2174, 2176, 2176, 2179, 2181, 2177, 2180, + 2180, 2183, 2178, 2181, 2182, 2185, 2183, 2186, 2188, 2185, + 2186, 2187, 2187, 2188, 2189, 2179, 2190, 2191, 2182, 2192, + 2192, 2191, 2193, 2189, 2195, 2196, 2197, 2198, 2199, 2195, + 2200, 2202, 2199, 2201, 2203, 2193, 2190, 2202, 2201, 2204, + 2203, 2198, 2205, 2206, 2207, 2196, 2197, 2209, 2206, 2210, + 2200, 2212, 2211, 2213, 2210, 2213, 2216, 2204, 2211, 2212, + 2219, 2205, 2238, 2209, 2224, 2207, 2217, 2217, 2218, 2223, + 2216, 2218, 2220, 2220, 2222, 2223, 2224, 2231, 2222, 2225, - 2235, 2236, 2237, 2237, 2238, 2238, 2241, 2239, 2242, 2243, - 2243, 2240, 2244, 2245, 2245, 2246, 2246, 2247, 2248, 2251, - 2249, 2250, 2253, 2254, 2242, 2257, 2241, 2249, 2247, 2252, - 2248, 2244, 2256, 2250, 2252, 2255, 2255, 2258, 2260, 2251, - 2259, 2256, 2253, 2254, 2261, 2262, 2262, 2263, 2264, 2265, - 2267, 2257, 2268, 2259, 2269, 2272, 2263, 2258, 2261, 2271, - 2272, 0, 2260, 2264, 2265, 2273, 2270, 2281, 2267, 2270, - 2273, 2274, 2274, 2271, 2268, 2275, 2275, 2269, 2276, 2276, - 2278, 2278, 2280, 2280, 2282, 2281, 2283, 2285, 2286, 2287, - 2288, 2289, 2290, 2292, 2291, 2282, 2291, 2293, 2294, 2298, + 2225, 2226, 2229, 2229, 2233, 2234, 2219, 2237, 2238, 2239, + 2226, 2240, 2237, 2247, 2239, 2231, 2240, 2248, 2233, 2241, + 2241, 2234, 2243, 2243, 2245, 2246, 2246, 2249, 2251, 2247, + 2245, 2252, 2249, 2253, 2253, 2255, 2256, 2257, 2258, 2248, + 2260, 2260, 2256, 2252, 2255, 2261, 2262, 2251, 2261, 2263, + 2265, 2265, 2268, 2258, 2267, 2257, 2266, 2266, 2270, 2267, + 2269, 2272, 2271, 2270, 2271, 2262, 2273, 2263, 2275, 2269, + 2268, 2274, 2276, 2275, 2277, 2272, 2278, 2278, 2282, 2277, + 2273, 2279, 2279, 2274, 2280, 2280, 2281, 2281, 2283, 2284, + 2282, 2287, 2276, 2288, 2284, 2285, 2285, 2286, 2286, 2289, - 2289, 2295, 2295, 2297, 2297, 2283, 2286, 2285, 2299, 2304, - 2288, 2287, 2290, 2292, 2302, 2293, 2294, 2299, 2300, 2300, - 2305, 2298, 2306, 2302, 2303, 2303, 2307, 2304, 2308, 2306, - 2309, 2310, 2311, 2312, 2312, 2313, 2313, 2314, 2305, 2315, - 2316, 2307, 2317, 2314, 2318, 2319, 2308, 2310, 2309, 2318, - 2320, 2311, 2322, 2321, 2322, 2316, 2327, 2315, 2321, 2323, - 2323, 2317, 2324, 2329, 2324, 2319, 2325, 2325, 2330, 2331, - 2320, 2332, 2329, 2333, 2334, 2327, 2335, 2338, 2333, 2339, - 2342, 2331, 2339, 2340, 2340, 2341, 2344, 2330, 2343, 2343, - 2344, 2332, 2346, 2349, 2334, 2335, 2351, 2338, 2342, 2347, + 2290, 2291, 2291, 2287, 2292, 2288, 2283, 2293, 2293, 2294, + 2294, 2295, 2296, 2297, 2298, 2299, 2290, 2301, 2302, 2289, + 2297, 2305, 2295, 2292, 2296, 2300, 2298, 2303, 2303, 2306, + 2300, 2304, 2307, 2308, 2309, 2299, 2312, 2301, 2302, 2313, + 2304, 2310, 2310, 2311, 2315, 2307, 2316, 2305, 2309, 2306, + 2317, 2312, 2311, 2318, 2313, 2319, 2318, 2308, 2320, 2321, + 2322, 2322, 2315, 2320, 2321, 2323, 2323, 2329, 2316, 2319, + 2324, 2324, 2330, 2317, 2326, 2326, 2328, 2328, 2331, 2333, + 2334, 2335, 2336, 2330, 2337, 2329, 2338, 2339, 2340, 2339, + 2346, 2341, 2342, 2337, 2343, 2343, 2347, 2331, 2334, 2333, - 2341, 2348, 2348, 2347, 2352, 2353, 2349, 2346, 2354, 2354, - 2356, 2351, 2357, 2358, 2359, 2359, 2360, 2358, 2361, 2361, - 2363, 2357, 2356, 2362, 2352, 2353, 2364, 2365, 2362, 2363, - 2366, 2366, 2371, 2371, 2372, 2360, 2373, 2373, 2374, 2365, - 2375, 2376, 2364, 2377, 2378, 2378, 2379, 2381, 2381, 2384, - 2376, 2374, 2377, 2375, 2384, 2385, 2372, 2386, 2387, 2388, - 2385, 2379, 2389, 2387, 2390, 2393, 2391, 2388, 2396, 2399, - 2394, 2386, 2395, 2390, 2391, 2394, 2399, 2395, 2397, 2397, - 2393, 2389, 2400, 2396, 2398, 2398, 2401, 2400, 2402, 2403, - 2406, 2404, 2405, 2405, 2407, 2403, 2404, 2408, 2408, 2407, + 2345, 2345, 2336, 2335, 2352, 2347, 2338, 2350, 2340, 2341, + 2342, 2353, 2346, 2348, 2348, 2355, 2350, 2351, 2351, 2354, + 2356, 2357, 2352, 2359, 2358, 2362, 2354, 2360, 2360, 2353, + 2355, 2361, 2361, 2364, 2364, 2363, 2366, 2367, 2356, 2357, + 2358, 2363, 2359, 2362, 2365, 2368, 2369, 2370, 2371, 0, + 2365, 2369, 2367, 2372, 2366, 2373, 2378, 2373, 2372, 2374, + 2374, 2375, 2380, 2375, 2368, 2376, 2376, 2370, 2371, 2381, + 2382, 2380, 2383, 2384, 2385, 2378, 2386, 2389, 2384, 0, + 2390, 2392, 2382, 2390, 2391, 2391, 2393, 2395, 2381, 2394, + 2394, 2395, 2383, 2397, 2385, 2386, 2392, 2389, 2398, 2399, - 2409, 2409, 2412, 0, 2401, 2406, 2402, 2413, 2413, 2414, - 2424, 2415, 2414, 2416, 2417, 2412, 2415, 2415, 2416, 2417, - 2418, 2419, 2420, 2421, 2422, 2419, 2418, 2420, 2423, 2425, - 2428, 2424, 2421, 2427, 2426, 2425, 2423, 2433, 2427, 2422, - 2426, 2430, 2428, 2435, 2431, 2436, 2430, 2431, 2435, 2433, - 2436, 2437, 2438, 2439, 2440, 2441, 2441, 2442, 2445, 2446, - 2451, 2447, 2439, 2440, 2449, 2438, 2442, 2448, 2448, 2437, - 2452, 2452, 2450, 2453, 2455, 2451, 2457, 2445, 2458, 2446, - 2447, 2450, 2458, 2449, 2459, 2459, 2460, 2461, 2462, 2455, - 0, 2463, 2453, 2461, 2462, 2465, 2457, 2463, 2464, 2464, + 2399, 2400, 2398, 2402, 2393, 2403, 2404, 2407, 2397, 2405, + 2405, 2408, 2409, 2411, 2400, 2415, 2409, 2416, 2402, 2407, + 2408, 2410, 2410, 2412, 2412, 2403, 2404, 2414, 2413, 2416, + 2423, 2415, 2411, 2413, 2417, 2417, 2414, 2422, 2422, 2424, + 2424, 2425, 2426, 2430, 2427, 2429, 2429, 2428, 2432, 2432, + 2440, 2437, 2423, 2427, 2425, 2426, 2428, 2435, 2430, 2436, + 2439, 2438, 2435, 2441, 2436, 2437, 2438, 2442, 2439, 2440, + 2444, 2445, 2441, 2446, 2447, 2442, 2445, 2450, 2446, 2448, + 2448, 2449, 2449, 2451, 2450, 2444, 2452, 2453, 2451, 2447, + 2454, 2457, 2455, 2456, 2456, 2458, 2454, 2455, 2459, 2459, - 2466, 2468, 2469, 2465, 2471, 2466, 2472, 2473, 2471, 2476, - 2468, 2460, 2475, 2475, 2486, 2469, 2477, 2477, 2478, 2478, - 2472, 2481, 2473, 2480, 2480, 2481, 2482, 2476, 2484, 2484, - 2487, 2482, 2488, 2489, 2486, 2487, 2491, 2499, 2489, 2489, - 2492, 2492, 2494, 2494, 2488, 2495, 2495, 2496, 2497, 2501, - 2496, 2502, 2502, 2503, 2503, 2499, 2491, 2504, 2504, 2505, - 2507, 2497, 2506, 2506, 2508, 2509, 2510, 2511, 2511, 2501, - 2516, 2512, 2510, 2507, 2505, 2512, 2517, 2518, 2515, 2509, - 2519, 2520, 2508, 2515, 2515, 2521, 2519, 2520, 2522, 2523, - 2523, 2531, 2522, 2516, 2526, 2528, 2517, 2518, 2529, 2526, + 2458, 2460, 2460, 2463, 2452, 2453, 2457, 2464, 2464, 2465, + 2467, 2473, 2465, 2466, 2469, 2467, 2463, 2468, 2466, 2466, + 2469, 2470, 2468, 2471, 2472, 2470, 2473, 2474, 2471, 2475, + 2476, 2477, 2479, 2472, 2478, 2474, 2476, 2477, 2481, 2478, + 2484, 2486, 2482, 2481, 2479, 2482, 2486, 2488, 2487, 2489, + 2475, 2490, 2484, 2487, 2491, 2492, 2492, 2493, 2496, 2499, + 2490, 2497, 2489, 2491, 2496, 2488, 2493, 2497, 2500, 2505, + 2501, 2502, 2502, 2503, 2504, 2506, 2506, 2507, 2499, 2509, + 2511, 2512, 2514, 2504, 2505, 2512, 2513, 2513, 2500, 2501, + 2519, 2515, 2503, 2516, 2509, 2517, 2507, 2515, 2519, 2516, - 2533, 2529, 2532, 2528, 2534, 2532, 2535, 2536, 2537, 2534, - 2521, 2538, 2538, 2542, 2539, 2541, 2531, 2533, 2533, 2545, - 2540, 2551, 2537, 2540, 2535, 2543, 2554, 2536, 2539, 2541, - 2544, 2540, 2542, 2543, 0, 2544, 2544, 2551, 2545, 2546, - 2546, 2547, 2547, 2548, 2548, 2549, 2549, 2550, 2550, 2552, - 2553, 2555, 2554, 2556, 2552, 2557, 2559, 2559, 2560, 2561, - 2555, 2560, 2563, 2563, 2564, 2565, 2565, 2566, 2568, 2568, - 2553, 2564, 2566, 2556, 2569, 2557, 2570, 2561, 2571, 2573, - 2574, 2574, 2575, 2569, 2576, 2570, 2575, 2571, 2577, 2578, - 2580, 2579, 2581, 2576, 2578, 2578, 2581, 2573, 2589, 2580, + 2511, 2517, 2518, 2518, 2520, 2522, 2523, 2514, 2525, 2520, + 2526, 2527, 2525, 2530, 2522, 2529, 2529, 2531, 2531, 2523, + 2532, 2532, 2534, 2534, 2526, 2535, 2527, 2536, 2540, 2535, + 2541, 2530, 2536, 2538, 2538, 2541, 2543, 2542, 2545, 2546, + 2546, 2543, 2543, 2548, 2548, 2549, 2549, 2550, 2540, 2542, + 2550, 2551, 2553, 2555, 2556, 2556, 2557, 2557, 2545, 2558, + 2558, 2559, 2560, 2560, 2551, 2561, 2562, 2563, 2564, 2570, + 2553, 2565, 2565, 2555, 2564, 2566, 2559, 2569, 2561, 2566, + 2571, 2563, 2569, 2569, 2562, 2572, 2575, 2573, 2574, 2577, + 2577, 2576, 2570, 2573, 2574, 2576, 2580, 2585, 2582, 2583, - 2585, 2586, 2586, 2577, 2579, 2585, 2588, 2588, 2590, 2591, - 2593, 2594, 2589, 2597, 2599, 2598, 2600, 2602, 2604, 2593, - 2606, 2607, 2600, 2594, 2598, 2606, 2607, 2591, 2609, 2602, - 2608, 2608, 2618, 2590, 2599, 2611, 2619, 2609, 2597, 2604, - 2611, 2612, 2612, 2614, 2614, 2612, 2615, 2615, 2616, 2616, - 2617, 2620, 2618, 2623, 2622, 2619, 2620, 2624, 2623, 2617, - 2622, 2626, 2624, 2625, 2625, 2627, 2628, 2629, 2630, 2631, - 2635, 2628, 2632, 2632, 2630, 2635, 2634, 2636, 2638, 2626, - 2634, 2639, 2636, 2637, 2637, 2629, 2627, 2640, 2642, 2642, - 2644, 2645, 2647, 2648, 2631, 2646, 2639, 2638, 2649, 2646, + 2571, 2580, 2583, 2587, 2586, 2572, 2582, 2586, 2588, 2589, + 2590, 2575, 2591, 2588, 2592, 2592, 2596, 2593, 2595, 2606, + 2587, 2587, 2585, 2599, 2606, 2594, 2591, 2589, 2594, 2597, + 2590, 2593, 2595, 2598, 2607, 2596, 2594, 2597, 2598, 2598, + 2600, 2600, 2599, 2601, 2601, 2602, 2602, 2603, 2603, 2604, + 2604, 2605, 2608, 2609, 2607, 2610, 2611, 2612, 2617, 2613, + 2610, 2615, 2615, 2616, 2620, 2611, 2616, 2605, 2619, 2619, + 2622, 2620, 2609, 2621, 2621, 2622, 2617, 2612, 2608, 2613, + 2624, 2624, 2625, 2626, 2627, 2629, 2630, 2630, 2632, 2633, + 2631, 2625, 2626, 2627, 2631, 2634, 2635, 2632, 2636, 2646, - 2650, 2647, 2652, 2644, 2645, 2651, 2654, 2640, 2650, 2648, - 2651, 2653, 2653, 2656, 2656, 2657, 2657, 2649, 2659, 2661, - 2661, 2663, 2664, 2669, 2665, 2654, 2666, 2670, 2652, 2668, - 2668, 2666, 2671, 2673, 2673, 2674, 2675, 2663, 2664, 2659, - 2665, 2676, 2676, 2669, 2679, 2682, 2680, 2691, 2681, 2674, - 2670, 2671, 2680, 2681, 2685, 2675, 2683, 2683, 2684, 2684, - 2686, 2686, 2687, 2688, 2679, 2689, 2691, 2682, 2693, 2690, - 2692, 0, 2688, 2687, 2685, 2690, 2694, 2694, 2695, 2700, - 2686, 2695, 2692, 2696, 2696, 2689, 2701, 2702, 2693, 2703, - 2703, 2700, 2704, 2702, 2705, 2704, 2706, 2708, 2709, 2710, + 2634, 2634, 2637, 2629, 2633, 2641, 2637, 2636, 2645, 2635, + 2641, 2642, 2642, 2644, 2644, 2647, 2649, 2650, 2653, 2654, + 2655, 2656, 2645, 2658, 2646, 2649, 2660, 2656, 2654, 2650, + 2682, 2662, 2663, 2647, 0, 2658, 2662, 2663, 2664, 2664, + 2655, 2665, 2674, 2653, 2667, 2670, 2670, 2660, 2682, 2667, + 2665, 2668, 2668, 2671, 2671, 2668, 2672, 2672, 2673, 2675, + 2676, 2679, 2674, 2678, 2683, 2676, 2679, 2673, 2680, 2678, + 2681, 2681, 2684, 2680, 2685, 2686, 2687, 2684, 2675, 2688, + 2688, 2686, 2690, 2691, 2692, 2683, 2690, 2694, 2691, 2692, + 2693, 2693, 2685, 2695, 2696, 2698, 2698, 2700, 2701, 2702, - 2705, 2711, 2708, 2709, 2712, 2715, 2701, 2711, 2713, 2713, - 2716, 2717, 2718, 2720, 2706, 2719, 2719, 2715, 2710, 2726, - 2721, 2712, 2712, 2723, 2723, 2718, 2724, 2724, 2716, 2721, - 2725, 2736, 2720, 2726, 2727, 2725, 2717, 2728, 2728, 2727, - 2729, 2729, 2730, 2730, 2731, 2733, 2733, 2738, 2739, 2731, - 2736, 2740, 2741, 2741, 2743, 2743, 2745, 2744, 2746, 2747, - 2747, 2748, 2748, 2751, 2794, 2752, 2750, 2746, 2794, 2738, - 2739, 2744, 2750, 2740, 2753, 2760, 2745, 2756, 2756, 2753, - 2758, 2758, 2759, 2751, 2752, 2761, 2762, 2759, 2763, 2760, - 2765, 2761, 2764, 2764, 2767, 2765, 2763, 2768, 2762, 2769, + 2703, 2687, 2704, 2702, 2705, 2706, 2694, 2707, 2695, 2703, + 2700, 2701, 2707, 2706, 2696, 2708, 2709, 2710, 2704, 2711, + 2711, 2712, 2721, 2705, 2708, 2714, 2714, 2715, 2715, 2717, + 2719, 2719, 2722, 2723, 2709, 2727, 2724, 2728, 2721, 2729, + 2712, 2724, 2732, 2710, 2726, 2726, 2731, 2731, 2722, 2723, + 2717, 2733, 2734, 2734, 2737, 2727, 2732, 2738, 2729, 2739, + 2728, 2740, 2743, 2738, 2739, 2741, 2741, 2742, 2742, 2745, + 2733, 2744, 2744, 2747, 2737, 2746, 2749, 2750, 2751, 2748, + 2745, 2759, 2743, 2740, 2746, 2748, 2752, 2752, 2854, 2750, + 2758, 2744, 2854, 2747, 2753, 2749, 2764, 2753, 2751, 2754, - 2770, 2771, 2773, 2774, 2769, 2775, 2776, 2771, 2778, 2777, - 2773, 2779, 2770, 2780, 2767, 2781, 2783, 2768, 2784, 2788, - 2781, 2783, 2774, 2861, 2778, 2775, 2776, 2777, 2779, 2779, - 2785, 2789, 2786, 0, 2780, 2861, 2785, 2786, 2784, 2788, - 2792, 2792, 2793, 2793, 2789, 2798, 2798, 2800, 2800, 2801, - 2801, 2804, 2801, 2802, 2802, 2804, 2802, 2803, 2803, 2807, - 2803, 2806, 2806, 2811, 2808, 2812, 2813, 2814, 2814, 2817, - 2819, 2813, 2818, 2820, 2819, 2821, 0, 2807, 2808, 2818, - 2823, 2828, 2820, 2811, 2824, 2812, 2825, 2825, 2826, 2826, - 2821, 2827, 2827, 2824, 2817, 2829, 2828, 2830, 2823, 2831, + 2754, 2759, 2758, 2760, 2761, 2761, 2763, 2762, 2766, 2760, + 2762, 2767, 2763, 2766, 2764, 2768, 2767, 2769, 2770, 2771, + 2771, 2773, 2774, 2769, 2775, 2776, 2777, 2777, 2778, 0, + 2779, 2781, 2781, 2773, 2768, 2770, 2770, 2784, 2776, 2779, + 2774, 2782, 2782, 2783, 2789, 2785, 2798, 2778, 2783, 2775, + 2785, 2784, 2786, 2786, 2787, 2787, 2788, 2788, 2790, 2796, + 2791, 2793, 2793, 2799, 2790, 2791, 2800, 2804, 2798, 2805, + 2789, 2801, 2801, 2803, 2803, 2806, 2807, 2807, 2796, 2808, + 2808, 2804, 2811, 0, 2806, 2799, 2810, 2812, 2800, 2805, + 2813, 2820, 2810, 2816, 2816, 2813, 2818, 2818, 2819, 2822, - 2829, 2832, 2833, 2834, 2831, 2831, 2830, 2832, 2835, 2830, - 2836, 2837, 2838, 2839, 2839, 2836, 2837, 2840, 2834, 2841, - 2842, 2842, 2868, 2840, 2910, 2841, 0, 2833, 2910, 2835, - 2844, 2838, 2843, 2843, 2868, 2844, 2847, 2847, 2850, 2850, - 2851, 2851, 2852, 2852, 2853, 2853, 2854, 2854, 2855, 2855, - 2856, 2856, 2858, 2859, 2859, 2860, 2862, 2866, 2864, 2865, - 2865, 2858, 2867, 2870, 2860, 2869, 2869, 2871, 2871, 2874, - 2875, 2876, 2866, 2875, 2878, 2867, 2862, 2864, 2870, 2877, - 2877, 2880, 2881, 2884, 2880, 2882, 2883, 2874, 2881, 2885, - 2886, 2883, 2878, 2892, 2888, 2889, 2903, 2876, 2901, 2882, + 2823, 2821, 2811, 2819, 2827, 2820, 2812, 2821, 2823, 2824, + 2824, 2822, 2825, 2828, 2829, 2830, 2831, 2825, 2833, 2829, + 2834, 2835, 2831, 2836, 2827, 0, 2833, 2830, 2837, 2838, + 2839, 2840, 2841, 2828, 2844, 2843, 2845, 2841, 2848, 2834, + 2843, 2835, 2845, 2836, 2846, 2838, 2837, 2839, 2839, 2846, + 2849, 2859, 2840, 3034, 2844, 2852, 2852, 2858, 2848, 2853, + 2853, 3034, 2858, 2849, 2860, 2860, 2862, 2862, 2863, 2863, + 2859, 2863, 2864, 2864, 2866, 2864, 2865, 2865, 2866, 2865, + 2868, 2868, 2869, 2870, 2873, 2874, 2875, 2876, 2876, 2879, + 2881, 2875, 2880, 2882, 2881, 2883, 2890, 2870, 2885, 2880, - 2888, 2901, 2884, 2908, 2889, 2912, 2886, 2885, 2892, 2903, - 2904, 2904, 2905, 2905, 2906, 2906, 2909, 2911, 2914, 2912, - 2915, 2917, 2916, 2917, 2918, 2909, 2908, 2916, 2919, 2919, - 2920, 2915, 2921, 2923, 2922, 2924, 2926, 2911, 2925, 2918, - 2928, 2914, 2927, 2920, 2929, 2926, 2935, 0, 2934, 2923, - 2930, 2921, 2922, 2925, 2927, 2930, 2936, 2936, 2937, 2942, - 2924, 2928, 2934, 2943, 2929, 2947, 2935, 2937, 2938, 2938, - 2939, 2939, 2940, 2940, 2941, 2941, 2944, 2945, 2942, 2944, - 2946, 2948, 2945, 2943, 2950, 2946, 2949, 2951, 2952, 2953, - 2947, 2955, 2949, 2952, 2954, 2954, 2948, 2956, 2950, 2951, + 2869, 0, 2882, 2886, 2873, 2874, 2887, 2887, 2888, 2888, + 2883, 2890, 2886, 2892, 2879, 2891, 2885, 2889, 2889, 2895, + 2891, 2893, 2892, 2894, 2896, 2892, 2893, 2893, 2897, 2894, + 2898, 2899, 2900, 2901, 2901, 2898, 2899, 2902, 0, 2896, + 2903, 2904, 2904, 2902, 2895, 2906, 2903, 2905, 2905, 2897, + 2906, 2900, 2909, 2909, 2910, 2910, 2911, 2914, 2914, 2915, + 2915, 2916, 2916, 2917, 2917, 2911, 2918, 2918, 2919, 2919, + 2920, 2920, 2922, 2923, 2923, 2924, 2925, 2926, 2930, 2928, + 2932, 2922, 2929, 2929, 2924, 2934, 2931, 2938, 2925, 2933, + 2933, 2940, 2932, 2930, 2935, 2935, 2942, 2926, 2928, 2931, - 2957, 2957, 2959, 2961, 2964, 2964, 2955, 2965, 2965, 2953, - 2966, 2967, 2970, 2968, 2969, 2971, 2956, 2959, 2966, 2968, - 2969, 2961, 2972, 2977, 2973, 2978, 2970, 2983, 2971, 2973, - 2967, 2974, 2974, 2975, 2975, 2980, 2981, 2984, 2985, 2986, - 2981, 2972, 2984, 2987, 2977, 2978, 2988, 2983, 2989, 2980, - 2990, 2994, 2986, 2989, 2995, 2990, 2987, 2985, 2991, 2991, - 2996, 2997, 2997, 2998, 2999, 2988, 3000, 3000, 2998, 3001, - 2999, 2994, 2995, 3002, 3001, 3003, 3004, 3005, 3002, 2996, - 3003, 3007, 3007, 3005, 3008, 3009, 3009, 3011, 3012, 3008, - 3013, 3011, 3014, 3015, 3016, 3004, 3017, 3013, 3020, 3020, + 2934, 2939, 2941, 2941, 2939, 2938, 2944, 2945, 2946, 2944, + 2947, 2948, 2950, 2945, 2942, 2947, 2949, 2940, 2952, 2959, + 2953, 2956, 2946, 2967, 2952, 2969, 2967, 2974, 2950, 2953, + 2948, 2970, 2970, 2976, 2949, 2975, 2956, 2976, 2969, 2971, + 2971, 2972, 2972, 2977, 2975, 2959, 2978, 2980, 2981, 2982, + 2974, 2983, 2984, 2983, 2982, 2985, 2985, 2987, 2986, 2981, + 2978, 2988, 2989, 2977, 2990, 2991, 2992, 2984, 2995, 2993, + 2980, 2986, 2994, 2995, 2996, 2992, 2987, 2997, 2989, 2988, + 2991, 2993, 2997, 3001, 3002, 3003, 3003, 3004, 3009, 2990, + 3005, 3005, 3010, 2994, 2996, 3014, 3004, 3001, 3006, 3006, - 3016, 3018, 3022, 3022, 3023, 3024, 3025, 3012, 3026, 3027, - 3024, 3014, 3015, 3023, 3018, 3017, 3023, 3028, 3028, 3029, - 3030, 3032, 3027, 3034, 3029, 3025, 3039, 3026, 3033, 3033, - 3035, 3035, 3037, 3030, 3036, 3036, 3038, 3037, 3040, 3040, - 3046, 3041, 3034, 3038, 3048, 3039, 3041, 3032, 3042, 3044, - 3042, 3043, 3043, 3045, 3050, 3050, 3044, 3047, 3051, 3046, - 3045, 3053, 3047, 3048, 3054, 3055, 3053, 3056, 3060, 3054, - 3057, 3057, 3059, 3059, 3061, 3062, 3062, 3051, 3063, 3063, - 0, 3064, 3066, 3066, 3055, 3068, 3056, 3060, 3064, 3067, - 3067, 3070, 3068, 3061, 3073, 3074, 3070, 3075, 0, 3073, + 3007, 3007, 3008, 3008, 3002, 3011, 3012, 3009, 3011, 3013, + 3015, 3012, 3010, 3016, 3013, 3017, 3018, 3019, 3020, 3016, + 3014, 3023, 3019, 3021, 3021, 3015, 3022, 3022, 3018, 3017, + 3024, 3025, 3025, 3027, 3029, 3035, 3023, 3036, 3020, 3032, + 3032, 3033, 3033, 3036, 3037, 3038, 3040, 3039, 3027, 3024, + 3037, 3041, 3029, 3046, 3035, 3047, 3041, 3042, 3042, 3038, + 3039, 3043, 3043, 3049, 3050, 3040, 3052, 3053, 3050, 3054, + 3055, 3056, 3053, 3057, 3046, 3047, 3058, 3049, 3060, 3060, + 3059, 3058, 3063, 3055, 3056, 3059, 3052, 3064, 3054, 3065, + 3066, 3066, 3057, 3067, 3068, 3069, 3069, 3073, 3067, 3070, - 3076, 3076, 3077, 3077, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3074, 0, 3075, 3081, 3081, 3081, - 3081, 3081, 3081, 3081, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3084, 3084, - 3084, 3084, 3084, 3084, 3084, 3085, 3085, 3085, 3085, 3085, - 3085, 3085, 3087, 3087, 0, 3087, 3087, 3087, 3087, 3088, - 3088, 0, 0, 0, 3088, 3088, 3089, 3089, 0, 0, - 3089, 0, 3089, 3090, 0, 0, 0, 0, 0, 3090, - 3091, 3091, 0, 0, 0, 3091, 3091, 3092, 0, 0, - 0, 0, 0, 3092, 3093, 3093, 0, 3093, 3093, 3093, + 3068, 3071, 3063, 3074, 3070, 3064, 3071, 3072, 3065, 3074, + 3076, 3076, 3072, 3077, 3078, 3078, 3073, 3080, 3077, 3081, + 3082, 3080, 3083, 3084, 3085, 3086, 3087, 3082, 3089, 3089, + 3085, 3091, 3091, 3094, 3092, 3093, 3095, 3096, 3081, 3087, + 3093, 3083, 3084, 3092, 3086, 3099, 3092, 3097, 3097, 3098, + 3096, 3101, 3094, 3103, 3098, 3095, 3102, 3102, 3099, 3104, + 3104, 3105, 3105, 3106, 3107, 3108, 3109, 3109, 3106, 3110, + 3115, 3107, 3103, 3111, 3110, 3111, 3113, 3101, 3112, 3112, + 3114, 3116, 3117, 3113, 3108, 3120, 3116, 3114, 3122, 3115, + 3119, 3119, 3123, 3122, 3124, 3125, 3129, 3123, 3126, 3126, - 3093, 3094, 3094, 0, 3094, 3094, 3094, 3094, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, - 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080, 3080 + 3130, 3117, 3128, 3128, 3120, 3131, 3131, 3132, 3132, 3133, + 3135, 3135, 3143, 3124, 3125, 3129, 3133, 3136, 3136, 3130, + 3137, 3139, 3144, 3142, 3145, 3145, 3139, 3137, 3142, 3146, + 3146, 3143, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3144, 3150, 3150, 3150, 3150, 3150, 3150, 3150, 3151, + 3151, 3151, 3151, 3151, 3151, 3151, 3152, 3152, 3152, 3152, + 3152, 3152, 3152, 3153, 3153, 3153, 3153, 3153, 3153, 3153, + 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3156, 3156, 0, + 3156, 3156, 3156, 3156, 3157, 3157, 0, 0, 0, 3157, + 3157, 3158, 3158, 0, 0, 3158, 0, 3158, 3159, 0, + + 0, 0, 0, 0, 3159, 3160, 3160, 0, 0, 0, + 3160, 3160, 3161, 0, 0, 0, 0, 0, 3161, 3162, + 3162, 0, 3162, 3162, 3162, 3162, 3163, 3163, 0, 3163, + 3163, 3163, 3163, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3149 } ; static yy_state_type yy_last_accepting_state; @@ -2969,7 +3019,7 @@ static void config_end_include(void) } #endif -#line 2971 "" +#line 3021 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2978,9 +3028,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2980 "" +#line 3030 "" -#line 2982 "" +#line 3032 "" #define INITIAL 0 #define quotedstring 1 @@ -3202,7 +3252,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3204 "" +#line 3254 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3235,13 +3285,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 >= 3081 ) + if ( yy_current_state >= 3150 ) 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] != 6009 ); + while ( yy_base[yy_current_state] != 6134 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3486,1294 +3536,1319 @@ YY_RULE_SETUP case 44: YY_RULE_SETUP #line 251 "./util/configlexer.lex" -{ YDVAR(1, VAR_HTTPS_PORT) } +{ YDVAR(1, VAR_TLS_USE_SNI) } YY_BREAK case 45: YY_RULE_SETUP #line 252 "./util/configlexer.lex" -{ YDVAR(1, VAR_TLS_USE_SNI) } +{ YDVAR(1, VAR_HTTPS_PORT) } YY_BREAK case 46: YY_RULE_SETUP #line 253 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTP_ENDPOINT) } YY_BREAK case 47: YY_RULE_SETUP #line 254 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_HTTP_MAX_STREAMS) } YY_BREAK case 48: YY_RULE_SETUP #line 255 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } YY_BREAK case 49: YY_RULE_SETUP #line 256 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } YY_BREAK case 50: YY_RULE_SETUP #line 257 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_HTTP_NODELAY) } YY_BREAK case 51: YY_RULE_SETUP #line 258 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 52: YY_RULE_SETUP #line 259 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 53: YY_RULE_SETUP #line 260 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 54: YY_RULE_SETUP #line 261 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 55: YY_RULE_SETUP #line 262 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 56: YY_RULE_SETUP #line 263 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 57: YY_RULE_SETUP #line 264 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 58: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 59: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 60: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 61: YY_RULE_SETUP #line 268 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 62: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 63: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 64: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 65: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 66: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 67: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 68: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 69: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 70: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 71: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 72: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 73: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 74: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 75: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 76: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 77: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 78: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 79: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 80: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 81: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 82: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 83: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 84: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 85: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 86: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 87: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 88: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 89: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 90: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 91: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 92: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 93: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 94: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 95: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 96: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 97: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 98: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 99: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 100: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 101: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 102: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 103: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 104: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 105: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 106: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 107: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 108: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 109: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 110: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 111: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 112: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 113: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 114: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 115: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 116: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 117: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 118: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 119: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 120: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 121: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 122: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 123: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 124: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 125: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 126: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 127: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 128: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 129: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 130: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 131: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 132: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 133: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 134: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 135: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 136: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 137: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 138: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 139: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 140: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 141: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 142: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 143: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 144: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 145: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 146: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 147: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 148: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 149: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 150: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 151: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 152: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 153: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 154: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 155: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 156: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 157: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 158: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 159: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 160: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 161: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 162: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 163: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 164: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 165: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 166: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 167: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 168: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 169: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 175: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 176: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 177: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 178: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 385 "./util/configlexer.lex" +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 179: YY_RULE_SETUP -#line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +#line 386 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 180: YY_RULE_SETUP -#line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +#line 387 "./util/configlexer.lex" +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 181: YY_RULE_SETUP -#line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +#line 388 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 182: YY_RULE_SETUP -#line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +#line 389 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 233: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 234: YY_RULE_SETUP -#line 443 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 442 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 235: YY_RULE_SETUP -#line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 443 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 444 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 237: YY_RULE_SETUP -#line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +#line 445 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 238: YY_RULE_SETUP -#line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +#line 446 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 239: YY_RULE_SETUP -#line 449 "./util/configlexer.lex" +#line 448 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 240: YY_RULE_SETUP -#line 451 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 450 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 241: YY_RULE_SETUP -#line 453 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } +#line 451 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 242: YY_RULE_SETUP -#line 455 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } +#line 452 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 243: YY_RULE_SETUP -#line 457 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } +#line 453 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 244: YY_RULE_SETUP -#line 459 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 456 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 458 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 247: YY_RULE_SETUP -#line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +#line 460 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 248: YY_RULE_SETUP -#line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +#line 462 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 249: YY_RULE_SETUP -#line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +#line 464 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 260: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 261: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 271: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 272: YY_RULE_SETUP -#line 489 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 488 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 273: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 489 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 490 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 275: YY_RULE_SETUP -#line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +#line 491 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 276: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +#line 492 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 277: YY_RULE_SETUP -#line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +#line 494 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 292: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 293: -/* rule 293 can match eol */ YY_RULE_SETUP #line 511 "./util/configlexer.lex" +{ YDVAR(0, VAR_IPSET) } + YY_BREAK +case 294: +YY_RULE_SETUP +#line 512 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V4) } + YY_BREAK +case 295: +YY_RULE_SETUP +#line 513 "./util/configlexer.lex" +{ YDVAR(1, VAR_IPSET_NAME_V6) } + YY_BREAK +case 296: +YY_RULE_SETUP +#line 514 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 297: +YY_RULE_SETUP +#line 515 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 298: +/* rule 298 can match eol */ +YY_RULE_SETUP +#line 516 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 294: +case 299: YY_RULE_SETUP -#line 514 "./util/configlexer.lex" +#line 519 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 515 "./util/configlexer.lex" +#line 520 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 295: +case 300: YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 296: -/* rule 296 can match eol */ +case 301: +/* rule 301 can match eol */ YY_RULE_SETUP -#line 521 "./util/configlexer.lex" +#line 526 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 297: +case 302: YY_RULE_SETUP -#line 523 "./util/configlexer.lex" +#line 528 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4786,34 +4861,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 298: +case 303: YY_RULE_SETUP -#line 535 "./util/configlexer.lex" +#line 540 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 536 "./util/configlexer.lex" +#line 541 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 299: +case 304: YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 300: -/* rule 300 can match eol */ +case 305: +/* rule 305 can match eol */ YY_RULE_SETUP -#line 542 "./util/configlexer.lex" +#line 547 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 301: +case 306: YY_RULE_SETUP -#line 544 "./util/configlexer.lex" +#line 549 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4826,38 +4901,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 302: +case 307: YY_RULE_SETUP -#line 556 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 558 "./util/configlexer.lex" +#line 563 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 303: +case 308: YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 567 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK -case 304: -/* rule 304 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 563 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK -case 305: +case 310: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK -case 306: +case 311: YY_RULE_SETUP -#line 565 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4865,27 +4940,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 570 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 307: +case 312: YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 308: -/* rule 308 can match eol */ +case 313: +/* rule 313 can match eol */ YY_RULE_SETUP -#line 575 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 309: +case 314: YY_RULE_SETUP -#line 577 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4895,7 +4970,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 583 "./util/configlexer.lex" +#line 588 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4907,33 +4982,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 310: +case 315: YY_RULE_SETUP -#line 594 "./util/configlexer.lex" +#line 599 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 311: +case 316: YY_RULE_SETUP -#line 598 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 312: +case 317: YY_RULE_SETUP -#line 602 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 313: +case 318: YY_RULE_SETUP -#line 606 "./util/configlexer.lex" +#line 611 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4935 "" +#line 5010 "" case YY_END_OF_BUFFER: { @@ -5228,7 +5303,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 >= 3081 ) + if ( yy_current_state >= 3150 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5256,11 +5331,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 >= 3081 ) + if ( yy_current_state >= 3150 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3080); + yy_is_jam = (yy_current_state == 3149); return yy_is_jam ? 0 : yy_current_state; } @@ -5899,6 +5974,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 606 "./util/configlexer.lex" +#line 611 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d20c8f5ed..cbe0fd2c1 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -248,8 +248,13 @@ tls-additional-port{COLON} { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } tls-session-ticket-keys{COLON} { YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } tls-ciphers{COLON} { YDVAR(1, VAR_TLS_CIPHERS) } tls-ciphersuites{COLON} { YDVAR(1, VAR_TLS_CIPHERSUITES) } -https-port{COLON} { YDVAR(1, VAR_HTTPS_PORT) } tls-use-sni{COLON} { YDVAR(1, VAR_TLS_USE_SNI) } +https-port{COLON} { YDVAR(1, VAR_HTTPS_PORT) } +http-endpoint{COLON} { YDVAR(1, VAR_HTTP_ENDPOINT) } +http-max-streams{COLON} { YDVAR(1, VAR_HTTP_MAX_STREAMS) } +http-query-buffer-size{COLON} { YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } +http-response-buffer-size{COLON} { YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } +http-nodelay{COLON} { YDVAR(1, VAR_HTTP_NODELAY) } use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } diff --git a/util/configparser.c b/util/configparser.c index 0069a96e3..57656864b 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -265,153 +265,158 @@ extern int yydebug; VAR_FORWARD_SSL_UPSTREAM = 394, VAR_TLS_CERT_BUNDLE = 395, VAR_HTTPS_PORT = 396, - VAR_STUB_FIRST = 397, - VAR_MINIMAL_RESPONSES = 398, - VAR_RRSET_ROUNDROBIN = 399, - VAR_MAX_UDP_SIZE = 400, - VAR_DELAY_CLOSE = 401, - VAR_UNBLOCK_LAN_ZONES = 402, - VAR_INSECURE_LAN_ZONES = 403, - VAR_INFRA_CACHE_MIN_RTT = 404, - VAR_DNS64_PREFIX = 405, - VAR_DNS64_SYNTHALL = 406, - VAR_DNS64_IGNORE_AAAA = 407, - VAR_DNSTAP = 408, - VAR_DNSTAP_ENABLE = 409, - VAR_DNSTAP_SOCKET_PATH = 410, - VAR_DNSTAP_IP = 411, - VAR_DNSTAP_TLS = 412, - VAR_DNSTAP_TLS_SERVER_NAME = 413, - VAR_DNSTAP_TLS_CERT_BUNDLE = 414, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, - VAR_DNSTAP_SEND_IDENTITY = 417, - VAR_DNSTAP_SEND_VERSION = 418, - VAR_DNSTAP_IDENTITY = 419, - VAR_DNSTAP_VERSION = 420, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, - VAR_RESPONSE_IP_TAG = 427, - VAR_RESPONSE_IP = 428, - VAR_RESPONSE_IP_DATA = 429, - VAR_HARDEN_ALGO_DOWNGRADE = 430, - VAR_IP_TRANSPARENT = 431, - VAR_IP_DSCP = 432, - VAR_DISABLE_DNSSEC_LAME_CHECK = 433, - VAR_IP_RATELIMIT = 434, - VAR_IP_RATELIMIT_SLABS = 435, - VAR_IP_RATELIMIT_SIZE = 436, - VAR_RATELIMIT = 437, - VAR_RATELIMIT_SLABS = 438, - VAR_RATELIMIT_SIZE = 439, - VAR_RATELIMIT_FOR_DOMAIN = 440, - VAR_RATELIMIT_BELOW_DOMAIN = 441, - VAR_IP_RATELIMIT_FACTOR = 442, - VAR_RATELIMIT_FACTOR = 443, - VAR_SEND_CLIENT_SUBNET = 444, - VAR_CLIENT_SUBNET_ZONE = 445, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, - VAR_CLIENT_SUBNET_OPCODE = 447, - VAR_MAX_CLIENT_SUBNET_IPV4 = 448, - VAR_MAX_CLIENT_SUBNET_IPV6 = 449, - VAR_MIN_CLIENT_SUBNET_IPV4 = 450, - VAR_MIN_CLIENT_SUBNET_IPV6 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, - VAR_CAPS_WHITELIST = 454, - VAR_CACHE_MAX_NEGATIVE_TTL = 455, - VAR_PERMIT_SMALL_HOLDDOWN = 456, - VAR_QNAME_MINIMISATION = 457, - VAR_QNAME_MINIMISATION_STRICT = 458, - VAR_IP_FREEBIND = 459, - VAR_DEFINE_TAG = 460, - VAR_LOCAL_ZONE_TAG = 461, - VAR_ACCESS_CONTROL_TAG = 462, - VAR_LOCAL_ZONE_OVERRIDE = 463, - VAR_ACCESS_CONTROL_TAG_ACTION = 464, - VAR_ACCESS_CONTROL_TAG_DATA = 465, - VAR_VIEW = 466, - VAR_ACCESS_CONTROL_VIEW = 467, - VAR_VIEW_FIRST = 468, - VAR_SERVE_EXPIRED = 469, - VAR_SERVE_EXPIRED_TTL = 470, - VAR_SERVE_EXPIRED_TTL_RESET = 471, - VAR_SERVE_EXPIRED_REPLY_TTL = 472, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, - VAR_FAKE_DSA = 474, - VAR_FAKE_SHA1 = 475, - VAR_LOG_IDENTITY = 476, - VAR_HIDE_TRUSTANCHOR = 477, - VAR_TRUST_ANCHOR_SIGNALING = 478, - VAR_AGGRESSIVE_NSEC = 479, - VAR_USE_SYSTEMD = 480, - VAR_SHM_ENABLE = 481, - VAR_SHM_KEY = 482, - VAR_ROOT_KEY_SENTINEL = 483, - VAR_DNSCRYPT = 484, - VAR_DNSCRYPT_ENABLE = 485, - VAR_DNSCRYPT_PORT = 486, - VAR_DNSCRYPT_PROVIDER = 487, - VAR_DNSCRYPT_SECRET_KEY = 488, - VAR_DNSCRYPT_PROVIDER_CERT = 489, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, - VAR_IPSECMOD_ENABLED = 495, - VAR_IPSECMOD_HOOK = 496, - VAR_IPSECMOD_IGNORE_BOGUS = 497, - VAR_IPSECMOD_MAX_TTL = 498, - VAR_IPSECMOD_WHITELIST = 499, - VAR_IPSECMOD_STRICT = 500, - VAR_CACHEDB = 501, - VAR_CACHEDB_BACKEND = 502, - VAR_CACHEDB_SECRETSEED = 503, - VAR_CACHEDB_REDISHOST = 504, - VAR_CACHEDB_REDISPORT = 505, - VAR_CACHEDB_REDISTIMEOUT = 506, - VAR_CACHEDB_REDISEXPIRERECORDS = 507, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, - VAR_FOR_UPSTREAM = 509, - VAR_AUTH_ZONE = 510, - VAR_ZONEFILE = 511, - VAR_MASTER = 512, - VAR_URL = 513, - VAR_FOR_DOWNSTREAM = 514, - VAR_FALLBACK_ENABLED = 515, - VAR_TLS_ADDITIONAL_PORT = 516, - VAR_LOW_RTT = 517, - VAR_LOW_RTT_PERMIL = 518, - VAR_FAST_SERVER_PERMIL = 519, - VAR_FAST_SERVER_NUM = 520, - VAR_ALLOW_NOTIFY = 521, - VAR_TLS_WIN_CERT = 522, - VAR_TCP_CONNECTION_LIMIT = 523, - VAR_FORWARD_NO_CACHE = 524, - VAR_STUB_NO_CACHE = 525, - VAR_LOG_SERVFAIL = 526, - VAR_DENY_ANY = 527, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, - VAR_LOG_TAG_QUERYREPLY = 529, - VAR_STREAM_WAIT_SIZE = 530, - VAR_TLS_CIPHERS = 531, - VAR_TLS_CIPHERSUITES = 532, - VAR_TLS_USE_SNI = 533, - VAR_IPSET = 534, - VAR_IPSET_NAME_V4 = 535, - VAR_IPSET_NAME_V6 = 536, - VAR_TLS_SESSION_TICKET_KEYS = 537, - VAR_RPZ = 538, - VAR_TAGS = 539, - VAR_RPZ_ACTION_OVERRIDE = 540, - VAR_RPZ_CNAME_OVERRIDE = 541, - VAR_RPZ_LOG = 542, - VAR_RPZ_LOG_NAME = 543 + VAR_HTTP_ENDPOINT = 397, + VAR_HTTP_MAX_STREAMS = 398, + VAR_HTTP_QUERY_BUFFER_SIZE = 399, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 400, + VAR_HTTP_NODELAY = 401, + VAR_STUB_FIRST = 402, + VAR_MINIMAL_RESPONSES = 403, + VAR_RRSET_ROUNDROBIN = 404, + VAR_MAX_UDP_SIZE = 405, + VAR_DELAY_CLOSE = 406, + VAR_UNBLOCK_LAN_ZONES = 407, + VAR_INSECURE_LAN_ZONES = 408, + VAR_INFRA_CACHE_MIN_RTT = 409, + VAR_DNS64_PREFIX = 410, + VAR_DNS64_SYNTHALL = 411, + VAR_DNS64_IGNORE_AAAA = 412, + VAR_DNSTAP = 413, + VAR_DNSTAP_ENABLE = 414, + VAR_DNSTAP_SOCKET_PATH = 415, + VAR_DNSTAP_IP = 416, + VAR_DNSTAP_TLS = 417, + VAR_DNSTAP_TLS_SERVER_NAME = 418, + VAR_DNSTAP_TLS_CERT_BUNDLE = 419, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 420, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 421, + VAR_DNSTAP_SEND_IDENTITY = 422, + VAR_DNSTAP_SEND_VERSION = 423, + VAR_DNSTAP_IDENTITY = 424, + VAR_DNSTAP_VERSION = 425, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 426, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 427, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 428, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 429, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 430, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 431, + VAR_RESPONSE_IP_TAG = 432, + VAR_RESPONSE_IP = 433, + VAR_RESPONSE_IP_DATA = 434, + VAR_HARDEN_ALGO_DOWNGRADE = 435, + VAR_IP_TRANSPARENT = 436, + VAR_IP_DSCP = 437, + VAR_DISABLE_DNSSEC_LAME_CHECK = 438, + VAR_IP_RATELIMIT = 439, + VAR_IP_RATELIMIT_SLABS = 440, + VAR_IP_RATELIMIT_SIZE = 441, + VAR_RATELIMIT = 442, + VAR_RATELIMIT_SLABS = 443, + VAR_RATELIMIT_SIZE = 444, + VAR_RATELIMIT_FOR_DOMAIN = 445, + VAR_RATELIMIT_BELOW_DOMAIN = 446, + VAR_IP_RATELIMIT_FACTOR = 447, + VAR_RATELIMIT_FACTOR = 448, + VAR_SEND_CLIENT_SUBNET = 449, + VAR_CLIENT_SUBNET_ZONE = 450, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 451, + VAR_CLIENT_SUBNET_OPCODE = 452, + VAR_MAX_CLIENT_SUBNET_IPV4 = 453, + VAR_MAX_CLIENT_SUBNET_IPV6 = 454, + VAR_MIN_CLIENT_SUBNET_IPV4 = 455, + VAR_MIN_CLIENT_SUBNET_IPV6 = 456, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 457, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 458, + VAR_CAPS_WHITELIST = 459, + VAR_CACHE_MAX_NEGATIVE_TTL = 460, + VAR_PERMIT_SMALL_HOLDDOWN = 461, + VAR_QNAME_MINIMISATION = 462, + VAR_QNAME_MINIMISATION_STRICT = 463, + VAR_IP_FREEBIND = 464, + VAR_DEFINE_TAG = 465, + VAR_LOCAL_ZONE_TAG = 466, + VAR_ACCESS_CONTROL_TAG = 467, + VAR_LOCAL_ZONE_OVERRIDE = 468, + VAR_ACCESS_CONTROL_TAG_ACTION = 469, + VAR_ACCESS_CONTROL_TAG_DATA = 470, + VAR_VIEW = 471, + VAR_ACCESS_CONTROL_VIEW = 472, + VAR_VIEW_FIRST = 473, + VAR_SERVE_EXPIRED = 474, + VAR_SERVE_EXPIRED_TTL = 475, + VAR_SERVE_EXPIRED_TTL_RESET = 476, + VAR_SERVE_EXPIRED_REPLY_TTL = 477, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 478, + VAR_FAKE_DSA = 479, + VAR_FAKE_SHA1 = 480, + VAR_LOG_IDENTITY = 481, + VAR_HIDE_TRUSTANCHOR = 482, + VAR_TRUST_ANCHOR_SIGNALING = 483, + VAR_AGGRESSIVE_NSEC = 484, + VAR_USE_SYSTEMD = 485, + VAR_SHM_ENABLE = 486, + VAR_SHM_KEY = 487, + VAR_ROOT_KEY_SENTINEL = 488, + VAR_DNSCRYPT = 489, + VAR_DNSCRYPT_ENABLE = 490, + VAR_DNSCRYPT_PORT = 491, + VAR_DNSCRYPT_PROVIDER = 492, + VAR_DNSCRYPT_SECRET_KEY = 493, + VAR_DNSCRYPT_PROVIDER_CERT = 494, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 495, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 496, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 497, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 498, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 499, + VAR_IPSECMOD_ENABLED = 500, + VAR_IPSECMOD_HOOK = 501, + VAR_IPSECMOD_IGNORE_BOGUS = 502, + VAR_IPSECMOD_MAX_TTL = 503, + VAR_IPSECMOD_WHITELIST = 504, + VAR_IPSECMOD_STRICT = 505, + VAR_CACHEDB = 506, + VAR_CACHEDB_BACKEND = 507, + VAR_CACHEDB_SECRETSEED = 508, + VAR_CACHEDB_REDISHOST = 509, + VAR_CACHEDB_REDISPORT = 510, + VAR_CACHEDB_REDISTIMEOUT = 511, + VAR_CACHEDB_REDISEXPIRERECORDS = 512, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 513, + VAR_FOR_UPSTREAM = 514, + VAR_AUTH_ZONE = 515, + VAR_ZONEFILE = 516, + VAR_MASTER = 517, + VAR_URL = 518, + VAR_FOR_DOWNSTREAM = 519, + VAR_FALLBACK_ENABLED = 520, + VAR_TLS_ADDITIONAL_PORT = 521, + VAR_LOW_RTT = 522, + VAR_LOW_RTT_PERMIL = 523, + VAR_FAST_SERVER_PERMIL = 524, + VAR_FAST_SERVER_NUM = 525, + VAR_ALLOW_NOTIFY = 526, + VAR_TLS_WIN_CERT = 527, + VAR_TCP_CONNECTION_LIMIT = 528, + VAR_FORWARD_NO_CACHE = 529, + VAR_STUB_NO_CACHE = 530, + VAR_LOG_SERVFAIL = 531, + VAR_DENY_ANY = 532, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 533, + VAR_LOG_TAG_QUERYREPLY = 534, + VAR_STREAM_WAIT_SIZE = 535, + VAR_TLS_CIPHERS = 536, + VAR_TLS_CIPHERSUITES = 537, + VAR_TLS_USE_SNI = 538, + VAR_IPSET = 539, + VAR_IPSET_NAME_V4 = 540, + VAR_IPSET_NAME_V6 = 541, + VAR_TLS_SESSION_TICKET_KEYS = 542, + VAR_RPZ = 543, + VAR_TAGS = 544, + VAR_RPZ_ACTION_OVERRIDE = 545, + VAR_RPZ_CNAME_OVERRIDE = 546, + VAR_RPZ_LOG = 547, + VAR_RPZ_LOG_NAME = 548 }; #endif /* Tokens. */ @@ -554,153 +559,158 @@ extern int yydebug; #define VAR_FORWARD_SSL_UPSTREAM 394 #define VAR_TLS_CERT_BUNDLE 395 #define VAR_HTTPS_PORT 396 -#define VAR_STUB_FIRST 397 -#define VAR_MINIMAL_RESPONSES 398 -#define VAR_RRSET_ROUNDROBIN 399 -#define VAR_MAX_UDP_SIZE 400 -#define VAR_DELAY_CLOSE 401 -#define VAR_UNBLOCK_LAN_ZONES 402 -#define VAR_INSECURE_LAN_ZONES 403 -#define VAR_INFRA_CACHE_MIN_RTT 404 -#define VAR_DNS64_PREFIX 405 -#define VAR_DNS64_SYNTHALL 406 -#define VAR_DNS64_IGNORE_AAAA 407 -#define VAR_DNSTAP 408 -#define VAR_DNSTAP_ENABLE 409 -#define VAR_DNSTAP_SOCKET_PATH 410 -#define VAR_DNSTAP_IP 411 -#define VAR_DNSTAP_TLS 412 -#define VAR_DNSTAP_TLS_SERVER_NAME 413 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 -#define VAR_DNSTAP_SEND_IDENTITY 417 -#define VAR_DNSTAP_SEND_VERSION 418 -#define VAR_DNSTAP_IDENTITY 419 -#define VAR_DNSTAP_VERSION 420 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 -#define VAR_RESPONSE_IP_TAG 427 -#define VAR_RESPONSE_IP 428 -#define VAR_RESPONSE_IP_DATA 429 -#define VAR_HARDEN_ALGO_DOWNGRADE 430 -#define VAR_IP_TRANSPARENT 431 -#define VAR_IP_DSCP 432 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 -#define VAR_IP_RATELIMIT 434 -#define VAR_IP_RATELIMIT_SLABS 435 -#define VAR_IP_RATELIMIT_SIZE 436 -#define VAR_RATELIMIT 437 -#define VAR_RATELIMIT_SLABS 438 -#define VAR_RATELIMIT_SIZE 439 -#define VAR_RATELIMIT_FOR_DOMAIN 440 -#define VAR_RATELIMIT_BELOW_DOMAIN 441 -#define VAR_IP_RATELIMIT_FACTOR 442 -#define VAR_RATELIMIT_FACTOR 443 -#define VAR_SEND_CLIENT_SUBNET 444 -#define VAR_CLIENT_SUBNET_ZONE 445 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 -#define VAR_CLIENT_SUBNET_OPCODE 447 -#define VAR_MAX_CLIENT_SUBNET_IPV4 448 -#define VAR_MAX_CLIENT_SUBNET_IPV6 449 -#define VAR_MIN_CLIENT_SUBNET_IPV4 450 -#define VAR_MIN_CLIENT_SUBNET_IPV6 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 -#define VAR_CAPS_WHITELIST 454 -#define VAR_CACHE_MAX_NEGATIVE_TTL 455 -#define VAR_PERMIT_SMALL_HOLDDOWN 456 -#define VAR_QNAME_MINIMISATION 457 -#define VAR_QNAME_MINIMISATION_STRICT 458 -#define VAR_IP_FREEBIND 459 -#define VAR_DEFINE_TAG 460 -#define VAR_LOCAL_ZONE_TAG 461 -#define VAR_ACCESS_CONTROL_TAG 462 -#define VAR_LOCAL_ZONE_OVERRIDE 463 -#define VAR_ACCESS_CONTROL_TAG_ACTION 464 -#define VAR_ACCESS_CONTROL_TAG_DATA 465 -#define VAR_VIEW 466 -#define VAR_ACCESS_CONTROL_VIEW 467 -#define VAR_VIEW_FIRST 468 -#define VAR_SERVE_EXPIRED 469 -#define VAR_SERVE_EXPIRED_TTL 470 -#define VAR_SERVE_EXPIRED_TTL_RESET 471 -#define VAR_SERVE_EXPIRED_REPLY_TTL 472 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 -#define VAR_FAKE_DSA 474 -#define VAR_FAKE_SHA1 475 -#define VAR_LOG_IDENTITY 476 -#define VAR_HIDE_TRUSTANCHOR 477 -#define VAR_TRUST_ANCHOR_SIGNALING 478 -#define VAR_AGGRESSIVE_NSEC 479 -#define VAR_USE_SYSTEMD 480 -#define VAR_SHM_ENABLE 481 -#define VAR_SHM_KEY 482 -#define VAR_ROOT_KEY_SENTINEL 483 -#define VAR_DNSCRYPT 484 -#define VAR_DNSCRYPT_ENABLE 485 -#define VAR_DNSCRYPT_PORT 486 -#define VAR_DNSCRYPT_PROVIDER 487 -#define VAR_DNSCRYPT_SECRET_KEY 488 -#define VAR_DNSCRYPT_PROVIDER_CERT 489 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 -#define VAR_IPSECMOD_ENABLED 495 -#define VAR_IPSECMOD_HOOK 496 -#define VAR_IPSECMOD_IGNORE_BOGUS 497 -#define VAR_IPSECMOD_MAX_TTL 498 -#define VAR_IPSECMOD_WHITELIST 499 -#define VAR_IPSECMOD_STRICT 500 -#define VAR_CACHEDB 501 -#define VAR_CACHEDB_BACKEND 502 -#define VAR_CACHEDB_SECRETSEED 503 -#define VAR_CACHEDB_REDISHOST 504 -#define VAR_CACHEDB_REDISPORT 505 -#define VAR_CACHEDB_REDISTIMEOUT 506 -#define VAR_CACHEDB_REDISEXPIRERECORDS 507 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 -#define VAR_FOR_UPSTREAM 509 -#define VAR_AUTH_ZONE 510 -#define VAR_ZONEFILE 511 -#define VAR_MASTER 512 -#define VAR_URL 513 -#define VAR_FOR_DOWNSTREAM 514 -#define VAR_FALLBACK_ENABLED 515 -#define VAR_TLS_ADDITIONAL_PORT 516 -#define VAR_LOW_RTT 517 -#define VAR_LOW_RTT_PERMIL 518 -#define VAR_FAST_SERVER_PERMIL 519 -#define VAR_FAST_SERVER_NUM 520 -#define VAR_ALLOW_NOTIFY 521 -#define VAR_TLS_WIN_CERT 522 -#define VAR_TCP_CONNECTION_LIMIT 523 -#define VAR_FORWARD_NO_CACHE 524 -#define VAR_STUB_NO_CACHE 525 -#define VAR_LOG_SERVFAIL 526 -#define VAR_DENY_ANY 527 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 -#define VAR_LOG_TAG_QUERYREPLY 529 -#define VAR_STREAM_WAIT_SIZE 530 -#define VAR_TLS_CIPHERS 531 -#define VAR_TLS_CIPHERSUITES 532 -#define VAR_TLS_USE_SNI 533 -#define VAR_IPSET 534 -#define VAR_IPSET_NAME_V4 535 -#define VAR_IPSET_NAME_V6 536 -#define VAR_TLS_SESSION_TICKET_KEYS 537 -#define VAR_RPZ 538 -#define VAR_TAGS 539 -#define VAR_RPZ_ACTION_OVERRIDE 540 -#define VAR_RPZ_CNAME_OVERRIDE 541 -#define VAR_RPZ_LOG 542 -#define VAR_RPZ_LOG_NAME 543 +#define VAR_HTTP_ENDPOINT 397 +#define VAR_HTTP_MAX_STREAMS 398 +#define VAR_HTTP_QUERY_BUFFER_SIZE 399 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 400 +#define VAR_HTTP_NODELAY 401 +#define VAR_STUB_FIRST 402 +#define VAR_MINIMAL_RESPONSES 403 +#define VAR_RRSET_ROUNDROBIN 404 +#define VAR_MAX_UDP_SIZE 405 +#define VAR_DELAY_CLOSE 406 +#define VAR_UNBLOCK_LAN_ZONES 407 +#define VAR_INSECURE_LAN_ZONES 408 +#define VAR_INFRA_CACHE_MIN_RTT 409 +#define VAR_DNS64_PREFIX 410 +#define VAR_DNS64_SYNTHALL 411 +#define VAR_DNS64_IGNORE_AAAA 412 +#define VAR_DNSTAP 413 +#define VAR_DNSTAP_ENABLE 414 +#define VAR_DNSTAP_SOCKET_PATH 415 +#define VAR_DNSTAP_IP 416 +#define VAR_DNSTAP_TLS 417 +#define VAR_DNSTAP_TLS_SERVER_NAME 418 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 419 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 420 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 421 +#define VAR_DNSTAP_SEND_IDENTITY 422 +#define VAR_DNSTAP_SEND_VERSION 423 +#define VAR_DNSTAP_IDENTITY 424 +#define VAR_DNSTAP_VERSION 425 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 426 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 427 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 428 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 429 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 430 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 431 +#define VAR_RESPONSE_IP_TAG 432 +#define VAR_RESPONSE_IP 433 +#define VAR_RESPONSE_IP_DATA 434 +#define VAR_HARDEN_ALGO_DOWNGRADE 435 +#define VAR_IP_TRANSPARENT 436 +#define VAR_IP_DSCP 437 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 438 +#define VAR_IP_RATELIMIT 439 +#define VAR_IP_RATELIMIT_SLABS 440 +#define VAR_IP_RATELIMIT_SIZE 441 +#define VAR_RATELIMIT 442 +#define VAR_RATELIMIT_SLABS 443 +#define VAR_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT_FOR_DOMAIN 445 +#define VAR_RATELIMIT_BELOW_DOMAIN 446 +#define VAR_IP_RATELIMIT_FACTOR 447 +#define VAR_RATELIMIT_FACTOR 448 +#define VAR_SEND_CLIENT_SUBNET 449 +#define VAR_CLIENT_SUBNET_ZONE 450 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 451 +#define VAR_CLIENT_SUBNET_OPCODE 452 +#define VAR_MAX_CLIENT_SUBNET_IPV4 453 +#define VAR_MAX_CLIENT_SUBNET_IPV6 454 +#define VAR_MIN_CLIENT_SUBNET_IPV4 455 +#define VAR_MIN_CLIENT_SUBNET_IPV6 456 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 457 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 458 +#define VAR_CAPS_WHITELIST 459 +#define VAR_CACHE_MAX_NEGATIVE_TTL 460 +#define VAR_PERMIT_SMALL_HOLDDOWN 461 +#define VAR_QNAME_MINIMISATION 462 +#define VAR_QNAME_MINIMISATION_STRICT 463 +#define VAR_IP_FREEBIND 464 +#define VAR_DEFINE_TAG 465 +#define VAR_LOCAL_ZONE_TAG 466 +#define VAR_ACCESS_CONTROL_TAG 467 +#define VAR_LOCAL_ZONE_OVERRIDE 468 +#define VAR_ACCESS_CONTROL_TAG_ACTION 469 +#define VAR_ACCESS_CONTROL_TAG_DATA 470 +#define VAR_VIEW 471 +#define VAR_ACCESS_CONTROL_VIEW 472 +#define VAR_VIEW_FIRST 473 +#define VAR_SERVE_EXPIRED 474 +#define VAR_SERVE_EXPIRED_TTL 475 +#define VAR_SERVE_EXPIRED_TTL_RESET 476 +#define VAR_SERVE_EXPIRED_REPLY_TTL 477 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 478 +#define VAR_FAKE_DSA 479 +#define VAR_FAKE_SHA1 480 +#define VAR_LOG_IDENTITY 481 +#define VAR_HIDE_TRUSTANCHOR 482 +#define VAR_TRUST_ANCHOR_SIGNALING 483 +#define VAR_AGGRESSIVE_NSEC 484 +#define VAR_USE_SYSTEMD 485 +#define VAR_SHM_ENABLE 486 +#define VAR_SHM_KEY 487 +#define VAR_ROOT_KEY_SENTINEL 488 +#define VAR_DNSCRYPT 489 +#define VAR_DNSCRYPT_ENABLE 490 +#define VAR_DNSCRYPT_PORT 491 +#define VAR_DNSCRYPT_PROVIDER 492 +#define VAR_DNSCRYPT_SECRET_KEY 493 +#define VAR_DNSCRYPT_PROVIDER_CERT 494 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 495 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 496 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 497 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 498 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 499 +#define VAR_IPSECMOD_ENABLED 500 +#define VAR_IPSECMOD_HOOK 501 +#define VAR_IPSECMOD_IGNORE_BOGUS 502 +#define VAR_IPSECMOD_MAX_TTL 503 +#define VAR_IPSECMOD_WHITELIST 504 +#define VAR_IPSECMOD_STRICT 505 +#define VAR_CACHEDB 506 +#define VAR_CACHEDB_BACKEND 507 +#define VAR_CACHEDB_SECRETSEED 508 +#define VAR_CACHEDB_REDISHOST 509 +#define VAR_CACHEDB_REDISPORT 510 +#define VAR_CACHEDB_REDISTIMEOUT 511 +#define VAR_CACHEDB_REDISEXPIRERECORDS 512 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 513 +#define VAR_FOR_UPSTREAM 514 +#define VAR_AUTH_ZONE 515 +#define VAR_ZONEFILE 516 +#define VAR_MASTER 517 +#define VAR_URL 518 +#define VAR_FOR_DOWNSTREAM 519 +#define VAR_FALLBACK_ENABLED 520 +#define VAR_TLS_ADDITIONAL_PORT 521 +#define VAR_LOW_RTT 522 +#define VAR_LOW_RTT_PERMIL 523 +#define VAR_FAST_SERVER_PERMIL 524 +#define VAR_FAST_SERVER_NUM 525 +#define VAR_ALLOW_NOTIFY 526 +#define VAR_TLS_WIN_CERT 527 +#define VAR_TCP_CONNECTION_LIMIT 528 +#define VAR_FORWARD_NO_CACHE 529 +#define VAR_STUB_NO_CACHE 530 +#define VAR_LOG_SERVFAIL 531 +#define VAR_DENY_ANY 532 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 533 +#define VAR_LOG_TAG_QUERYREPLY 534 +#define VAR_STREAM_WAIT_SIZE 535 +#define VAR_TLS_CIPHERS 536 +#define VAR_TLS_CIPHERSUITES 537 +#define VAR_TLS_USE_SNI 538 +#define VAR_IPSET 539 +#define VAR_IPSET_NAME_V4 540 +#define VAR_IPSET_NAME_V6 541 +#define VAR_TLS_SESSION_TICKET_KEYS 542 +#define VAR_RPZ 543 +#define VAR_TAGS 544 +#define VAR_RPZ_ACTION_OVERRIDE 545 +#define VAR_RPZ_CNAME_OVERRIDE 546 +#define VAR_RPZ_LOG 547 +#define VAR_RPZ_LOG_NAME 548 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -711,7 +721,7 @@ union YYSTYPE char* str; -#line 715 "util/configparser.c" /* yacc.c:355 */ +#line 725 "util/configparser.c" /* yacc.c:355 */ }; typedef union YYSTYPE YYSTYPE; @@ -728,7 +738,7 @@ int yyparse (void); /* Copy the second part of user declarations. */ -#line 732 "util/configparser.c" /* yacc.c:358 */ +#line 742 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -970,21 +980,21 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 611 +#define YYLAST 621 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 289 +#define YYNTOKENS 294 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 312 +#define YYNNTS 317 /* YYNRULES -- Number of rules. */ -#define YYNRULES 602 +#define YYNRULES 612 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 896 +#define YYNSTATES 911 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 543 +#define YYMAXUTOK 548 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -1047,74 +1057,75 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288 + 285, 286, 287, 288, 289, 290, 291, 292, 293 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, - 183, 184, 184, 185, 185, 186, 190, 195, 196, 197, - 197, 197, 198, 198, 199, 199, 199, 200, 200, 201, - 201, 201, 202, 202, 203, 203, 203, 204, 204, 204, - 205, 205, 206, 206, 207, 207, 208, 208, 209, 209, - 210, 210, 211, 211, 212, 212, 213, 213, 213, 214, - 214, 214, 215, 215, 215, 216, 216, 217, 217, 218, - 218, 219, 219, 220, 220, 220, 221, 221, 222, 222, - 223, 223, 223, 224, 224, 225, 225, 226, 226, 227, - 227, 227, 228, 228, 229, 229, 230, 230, 231, 231, - 232, 232, 233, 233, 233, 234, 234, 235, 235, 235, - 236, 236, 236, 237, 237, 237, 238, 238, 238, 238, - 239, 240, 240, 240, 241, 242, 242, 242, 243, 243, - 244, 244, 245, 245, 245, 246, 246, 247, 247, 247, - 248, 249, 249, 250, 250, 251, 252, 252, 253, 253, - 254, 254, 255, 256, 256, 257, 257, 258, 258, 259, - 259, 260, 260, 261, 261, 261, 262, 262, 263, 263, - 264, 264, 265, 265, 266, 266, 267, 267, 268, 268, - 268, 269, 269, 269, 270, 270, 270, 271, 271, 272, - 273, 273, 274, 274, 275, 275, 276, 276, 277, 277, - 277, 278, 278, 278, 279, 279, 279, 280, 280, 281, - 281, 282, 282, 283, 285, 297, 298, 299, 299, 299, - 299, 299, 300, 300, 302, 314, 315, 316, 316, 316, - 316, 317, 317, 319, 333, 334, 335, 335, 335, 335, - 336, 336, 336, 338, 355, 356, 357, 357, 357, 357, - 358, 358, 358, 359, 362, 381, 398, 406, 416, 424, - 441, 442, 443, 443, 443, 443, 443, 444, 444, 444, - 445, 445, 447, 456, 465, 476, 485, 494, 503, 514, - 523, 535, 549, 564, 575, 592, 609, 626, 643, 658, - 673, 686, 701, 710, 719, 728, 737, 746, 755, 764, - 773, 782, 791, 800, 809, 818, 827, 840, 849, 862, - 871, 880, 889, 896, 903, 912, 919, 928, 936, 943, - 950, 958, 965, 974, 983, 992, 1006, 1015, 1024, 1033, - 1042, 1051, 1060, 1067, 1074, 1100, 1108, 1115, 1122, 1129, - 1136, 1144, 1152, 1160, 1167, 1178, 1189, 1196, 1205, 1214, - 1223, 1230, 1237, 1245, 1253, 1263, 1273, 1283, 1297, 1305, - 1318, 1329, 1337, 1350, 1359, 1368, 1377, 1387, 1397, 1405, - 1418, 1427, 1435, 1444, 1452, 1465, 1474, 1481, 1491, 1501, - 1511, 1521, 1531, 1541, 1551, 1561, 1568, 1575, 1582, 1591, - 1600, 1609, 1618, 1625, 1635, 1655, 1662, 1680, 1693, 1706, - 1715, 1724, 1733, 1742, 1752, 1762, 1773, 1782, 1791, 1800, - 1809, 1818, 1827, 1840, 1853, 1862, 1869, 1878, 1887, 1896, - 1905, 1913, 1926, 1934, 1975, 1982, 1997, 2007, 2017, 2024, - 2031, 2038, 2047, 2055, 2069, 2090, 2111, 2123, 2135, 2147, - 2156, 2177, 2187, 2196, 2204, 2212, 2225, 2238, 2253, 2268, - 2277, 2286, 2292, 2301, 2310, 2320, 2330, 2343, 2356, 2368, - 2382, 2394, 2408, 2418, 2425, 2432, 2441, 2450, 2460, 2470, - 2480, 2487, 2494, 2503, 2512, 2522, 2532, 2539, 2546, 2553, - 2561, 2571, 2581, 2591, 2601, 2640, 2650, 2658, 2666, 2681, - 2690, 2695, 2696, 2697, 2697, 2697, 2698, 2698, 2698, 2699, - 2699, 2701, 2711, 2720, 2727, 2734, 2741, 2748, 2755, 2762, - 2767, 2768, 2769, 2769, 2770, 2770, 2770, 2771, 2772, 2772, - 2773, 2773, 2774, 2774, 2775, 2776, 2777, 2778, 2779, 2780, - 2782, 2791, 2798, 2805, 2814, 2821, 2828, 2835, 2842, 2851, - 2860, 2867, 2874, 2884, 2894, 2904, 2914, 2924, 2934, 2939, - 2940, 2941, 2943, 2949, 2959, 2966, 2975, 2983, 2988, 2989, - 2991, 2991, 2991, 2992, 2992, 2993, 2994, 2995, 2996, 2997, - 2999, 3009, 3018, 3025, 3034, 3041, 3050, 3058, 3071, 3079, - 3092, 3097, 3098, 3099, 3099, 3100, 3100, 3100, 3101, 3103, - 3115, 3127, 3139, 3154, 3167, 3180, 3191, 3196, 3197, 3198, - 3198, 3200, 3215 + 0, 182, 182, 182, 183, 183, 184, 184, 185, 185, + 185, 186, 186, 187, 187, 188, 192, 197, 198, 199, + 199, 199, 200, 200, 201, 201, 201, 202, 202, 203, + 203, 203, 204, 204, 205, 205, 205, 206, 206, 206, + 207, 207, 208, 208, 209, 209, 210, 210, 211, 211, + 212, 212, 213, 213, 214, 214, 215, 215, 215, 216, + 216, 216, 217, 217, 217, 218, 218, 219, 219, 220, + 220, 221, 221, 222, 222, 222, 223, 223, 224, 224, + 225, 225, 225, 226, 226, 227, 227, 228, 228, 229, + 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, 239, 240, 240, 240, 240, + 241, 242, 242, 242, 243, 243, 243, 244, 244, 245, + 246, 246, 246, 247, 247, 248, 248, 249, 249, 249, + 250, 250, 251, 251, 251, 252, 253, 253, 254, 254, + 255, 256, 256, 257, 257, 258, 258, 259, 260, 260, + 261, 261, 262, 262, 263, 263, 264, 264, 265, 265, + 265, 266, 266, 267, 267, 268, 268, 269, 269, 270, + 270, 271, 271, 272, 272, 272, 273, 273, 273, 274, + 274, 274, 275, 275, 276, 277, 277, 278, 278, 279, + 279, 280, 280, 281, 281, 281, 282, 282, 282, 283, + 283, 283, 284, 284, 285, 285, 286, 286, 287, 289, + 301, 302, 303, 303, 303, 303, 303, 304, 304, 306, + 318, 319, 320, 320, 320, 320, 321, 321, 323, 337, + 338, 339, 339, 339, 339, 340, 340, 340, 342, 359, + 360, 361, 361, 361, 361, 362, 362, 362, 363, 366, + 385, 402, 410, 420, 428, 445, 446, 447, 447, 447, + 447, 447, 448, 448, 448, 449, 449, 451, 460, 469, + 480, 489, 498, 507, 518, 527, 539, 553, 568, 579, + 596, 613, 630, 647, 662, 677, 690, 705, 714, 723, + 732, 741, 750, 759, 768, 777, 786, 795, 804, 813, + 822, 831, 844, 853, 866, 875, 884, 893, 900, 907, + 916, 923, 932, 940, 947, 954, 962, 971, 978, 992, + 1000, 1008, 1016, 1024, 1033, 1042, 1056, 1065, 1074, 1083, + 1092, 1101, 1110, 1117, 1124, 1150, 1158, 1165, 1172, 1179, + 1186, 1194, 1202, 1210, 1217, 1228, 1239, 1246, 1255, 1264, + 1273, 1280, 1287, 1295, 1303, 1313, 1323, 1333, 1347, 1355, + 1368, 1379, 1387, 1400, 1409, 1418, 1427, 1437, 1447, 1455, + 1468, 1477, 1485, 1494, 1502, 1515, 1524, 1531, 1541, 1551, + 1561, 1571, 1581, 1591, 1601, 1611, 1618, 1625, 1632, 1641, + 1650, 1659, 1668, 1675, 1685, 1705, 1712, 1730, 1743, 1756, + 1765, 1774, 1783, 1792, 1802, 1812, 1823, 1832, 1841, 1850, + 1859, 1868, 1877, 1890, 1903, 1912, 1919, 1928, 1937, 1946, + 1955, 1963, 1976, 1984, 2025, 2032, 2047, 2057, 2067, 2074, + 2081, 2088, 2097, 2105, 2119, 2140, 2161, 2173, 2185, 2197, + 2206, 2227, 2237, 2246, 2254, 2262, 2275, 2288, 2303, 2318, + 2327, 2336, 2342, 2351, 2360, 2370, 2380, 2393, 2406, 2418, + 2432, 2444, 2458, 2468, 2475, 2482, 2491, 2500, 2510, 2520, + 2530, 2537, 2544, 2553, 2562, 2572, 2582, 2589, 2596, 2603, + 2611, 2621, 2631, 2641, 2651, 2690, 2700, 2708, 2716, 2731, + 2740, 2745, 2746, 2747, 2747, 2747, 2748, 2748, 2748, 2749, + 2749, 2751, 2761, 2770, 2777, 2784, 2791, 2798, 2805, 2812, + 2817, 2818, 2819, 2819, 2820, 2820, 2820, 2821, 2822, 2822, + 2823, 2823, 2824, 2824, 2825, 2826, 2827, 2828, 2829, 2830, + 2832, 2841, 2848, 2855, 2864, 2871, 2878, 2885, 2892, 2901, + 2910, 2917, 2924, 2934, 2944, 2954, 2964, 2974, 2984, 2989, + 2990, 2991, 2993, 2999, 3009, 3016, 3025, 3033, 3038, 3039, + 3041, 3041, 3041, 3042, 3042, 3043, 3044, 3045, 3046, 3047, + 3049, 3059, 3068, 3075, 3084, 3091, 3100, 3108, 3121, 3129, + 3142, 3147, 3148, 3149, 3149, 3150, 3150, 3150, 3151, 3153, + 3165, 3177, 3189, 3204, 3217, 3230, 3241, 3246, 3247, 3248, + 3248, 3250, 3265 }; #endif @@ -1168,15 +1179,18 @@ static const char *const yytname[] = "VAR_SSL_UPSTREAM", "VAR_SSL_SERVICE_KEY", "VAR_SSL_SERVICE_PEM", "VAR_SSL_PORT", "VAR_FORWARD_FIRST", "VAR_STUB_SSL_UPSTREAM", "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", - "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", - "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", - "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", - "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", - "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", - "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME", - "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", - "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", - "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", + "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", + "VAR_HTTP_NODELAY", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", + "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", + "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", + "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", + "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", + "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", + "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", + "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", + "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", + "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1256,47 +1270,50 @@ static const char *const yytname[] = "server_tls_cert_bundle", "server_tls_win_cert", "server_tls_additional_port", "server_tls_ciphers", "server_tls_ciphersuites", "server_tls_session_ticket_keys", - "server_https_port", "server_tls_use_sni", "server_use_systemd", - "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", - "server_log_queries", "server_log_replies", "server_log_tag_queryreply", - "server_log_servfail", "server_log_local_actions", "server_chroot", - "server_username", "server_directory", "server_logfile", - "server_pidfile", "server_root_hints", "server_dlv_anchor_file", - "server_dlv_anchor", "server_auto_trust_anchor_file", - "server_trust_anchor_file", "server_trusted_keys_file", - "server_trust_anchor", "server_trust_anchor_signaling", - "server_root_key_sentinel", "server_domain_insecure", - "server_hide_identity", "server_hide_version", "server_hide_trustanchor", - "server_identity", "server_version", "server_so_rcvbuf", - "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", - "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", - "server_edns_buffer_size", "server_msg_buffer_size", - "server_msg_cache_size", "server_msg_cache_slabs", - "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_unblock_lan_zones", - "server_insecure_lan_zones", "server_rrset_cache_size", - "server_rrset_cache_slabs", "server_infra_host_ttl", - "server_infra_lame_ttl", "server_infra_cache_numhosts", - "server_infra_cache_lame_size", "server_infra_cache_slabs", - "server_infra_cache_min_rtt", "server_target_fetch_policy", - "server_harden_short_bufsize", "server_harden_large_queries", - "server_harden_glue", "server_harden_dnssec_stripped", - "server_harden_below_nxdomain", "server_harden_referral_path", - "server_harden_algo_downgrade", "server_use_caps_for_id", - "server_caps_whitelist", "server_private_address", - "server_private_domain", "server_prefetch", "server_prefetch_key", - "server_deny_any", "server_unwanted_reply_threshold", - "server_do_not_query_address", "server_do_not_query_localhost", - "server_access_control", "server_module_conf", - "server_val_override_date", "server_val_sig_skew_min", - "server_val_sig_skew_max", "server_cache_max_ttl", - "server_cache_max_negative_ttl", "server_cache_min_ttl", - "server_bogus_ttl", "server_val_clean_additional", - "server_val_permissive_mode", "server_aggressive_nsec", - "server_ignore_cd_flag", "server_serve_expired", - "server_serve_expired_ttl", "server_serve_expired_ttl_reset", - "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", - "server_fake_dsa", "server_fake_sha1", "server_val_log_level", + "server_tls_use_sni", "server_https_port", "server_http_endpoint", + "server_http_max_streams", "server_http_query_buffer_size", + "server_http_response_buffer_size", "server_http_nodelay", + "server_use_systemd", "server_do_daemonize", "server_use_syslog", + "server_log_time_ascii", "server_log_queries", "server_log_replies", + "server_log_tag_queryreply", "server_log_servfail", + "server_log_local_actions", "server_chroot", "server_username", + "server_directory", "server_logfile", "server_pidfile", + "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", + "server_auto_trust_anchor_file", "server_trust_anchor_file", + "server_trusted_keys_file", "server_trust_anchor", + "server_trust_anchor_signaling", "server_root_key_sentinel", + "server_domain_insecure", "server_hide_identity", "server_hide_version", + "server_hide_trustanchor", "server_identity", "server_version", + "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", + "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", + "server_stream_wait_size", "server_edns_buffer_size", + "server_msg_buffer_size", "server_msg_cache_size", + "server_msg_cache_slabs", "server_num_queries_per_thread", + "server_jostle_timeout", "server_delay_close", + "server_unblock_lan_zones", "server_insecure_lan_zones", + "server_rrset_cache_size", "server_rrset_cache_slabs", + "server_infra_host_ttl", "server_infra_lame_ttl", + "server_infra_cache_numhosts", "server_infra_cache_lame_size", + "server_infra_cache_slabs", "server_infra_cache_min_rtt", + "server_target_fetch_policy", "server_harden_short_bufsize", + "server_harden_large_queries", "server_harden_glue", + "server_harden_dnssec_stripped", "server_harden_below_nxdomain", + "server_harden_referral_path", "server_harden_algo_downgrade", + "server_use_caps_for_id", "server_caps_whitelist", + "server_private_address", "server_private_domain", "server_prefetch", + "server_prefetch_key", "server_deny_any", + "server_unwanted_reply_threshold", "server_do_not_query_address", + "server_do_not_query_localhost", "server_access_control", + "server_module_conf", "server_val_override_date", + "server_val_sig_skew_min", "server_val_sig_skew_max", + "server_cache_max_ttl", "server_cache_max_negative_ttl", + "server_cache_min_ttl", "server_bogus_ttl", + "server_val_clean_additional", "server_val_permissive_mode", + "server_aggressive_nsec", "server_ignore_cd_flag", + "server_serve_expired", "server_serve_expired_ttl", + "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", + "server_serve_expired_client_timeout", "server_fake_dsa", + "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1390,14 +1407,15 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 546, 547, 548 }; # endif -#define YYPACT_NINF -274 +#define YYPACT_NINF -279 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-274))) + (!!((Yystate) == (-279))) #define YYTABLE_NINF -1 @@ -1408,96 +1426,98 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -274, 0, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, 272, -42, - -38, -41, -7, -43, -30, -138, -103, -178, -173, -273, + -279, 0, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, 277, -42, + -38, -41, -7, -43, -30, -143, -103, -183, -178, -278, 2, 3, 24, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 87, 88, 92, 93, 94, 95, 96, 97, + 83, 84, 87, 88, 90, 92, 93, 94, 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 124, 125, 126, 127, 128, 129, 130, + 119, 120, 121, 122, 123, 124, 125, 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 144, 145, 146, 147, 148, 149, 150, 151, + 141, 142, 143, 144, 145, 146, 147, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 162, 163, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 202, 206, - 207, 208, 209, 210, 211, 212, 214, 215, 216, 217, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 238, 244, 246, 247, 248, 250, 251, 252, 253, 254, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 207, 211, 212, 213, 214, 215, 216, + 217, 219, 220, 221, 222, 225, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 243, 249, 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 270, 271, 306, 307, 308, 309, - 313, 314, 315, 357, 358, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, 359, 360, 361, 362, 363, 364, 365, -274, -274, - -274, -274, -274, -274, -274, -274, 369, 373, 374, 399, - 400, 401, -274, -274, -274, -274, -274, -274, -274, 404, - 415, 416, 417, 418, 419, 420, -274, -274, -274, -274, - -274, -274, -274, -274, 421, 422, 423, 424, 425, 426, - 427, 428, -274, -274, -274, -274, -274, -274, -274, -274, - -274, 429, 430, 431, 432, 433, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, 473, 475, 491, - 492, 493, 494, 495, 496, -274, -274, -274, -274, -274, - -274, -274, -274, -274, 497, 498, 499, 500, 501, 508, - 509, 510, 511, 512, 513, 514, 516, 517, 518, 519, - 520, 521, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, 522, -274, -274, 525, 528, 531, 532, 541, 542, - 543, 545, 546, 547, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, 548, 549, 550, 551, 552, - 553, -274, -274, -274, -274, -274, -274, -274, 554, 555, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, 556, 557, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, 558, 559, 560, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, 561, 562, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, 563, 564, 565, 566, 567, - 568, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, 569, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, 570, -274, -274, 571, 572, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, 573, 574, 575, -274, -274, - -274, -274, -274, -274, -274, -274 + 265, 266, 267, 268, 269, 270, 271, 272, 273, 275, + 276, 311, 312, 313, 314, 318, 319, 320, 362, 363, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, 364, 365, 366, 367, 368, 369, 370, -279, -279, + -279, -279, -279, -279, -279, -279, 374, 378, 379, 404, + 405, 406, -279, -279, -279, -279, -279, -279, -279, 414, + 425, 426, 427, 428, 429, 430, -279, -279, -279, -279, + -279, -279, -279, -279, 431, 432, 433, 434, 435, 436, + 437, 438, -279, -279, -279, -279, -279, -279, -279, -279, + -279, 439, 440, 441, 442, 443, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, 483, 485, 501, + 502, 503, 504, 505, 506, -279, -279, -279, -279, -279, + -279, -279, -279, -279, 507, 508, 509, 510, 511, 518, + 519, 520, 521, 522, 523, 524, 526, 527, 528, 529, + 530, 531, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, 532, -279, -279, 535, 538, 541, 542, 551, 552, + 553, 555, 556, 557, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, 558, 559, 560, 561, 562, + 563, -279, -279, -279, -279, -279, -279, -279, 564, 565, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, 566, 567, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, 568, 569, 570, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, 571, + 572, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 573, 574, 575, 576, 577, 578, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, 579, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, 580, -279, -279, + 581, 582, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + 583, 584, 585, -279, -279, -279, -279, -279, -279, -279, + -279 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1505,9 +1525,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 214, 224, 490, 548, 509, 233, - 557, 580, 243, 596, 259, 3, 18, 216, 226, 235, - 245, 261, 492, 511, 550, 559, 582, 598, 4, 5, + 2, 0, 1, 16, 219, 229, 500, 558, 519, 238, + 567, 590, 248, 606, 264, 3, 18, 221, 231, 240, + 250, 266, 502, 521, 560, 569, 592, 608, 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1528,147 +1548,149 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 17, 19, 20, 83, 86, - 95, 184, 185, 21, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 34, 74, 22, 87, 88, 45, - 67, 82, 23, 24, 27, 28, 25, 26, 29, 30, - 31, 32, 33, 118, 196, 119, 121, 122, 123, 198, - 203, 199, 210, 211, 212, 124, 213, 180, 84, 73, - 99, 116, 117, 208, 205, 120, 35, 36, 37, 38, - 39, 75, 89, 90, 105, 61, 71, 62, 188, 189, - 100, 55, 56, 187, 57, 58, 109, 113, 128, 137, - 163, 140, 209, 110, 68, 40, 41, 42, 97, 129, - 130, 131, 43, 44, 46, 47, 49, 50, 48, 135, - 51, 52, 53, 59, 78, 114, 92, 136, 85, 159, - 93, 94, 111, 112, 206, 98, 54, 76, 79, 60, - 63, 101, 102, 77, 160, 103, 64, 65, 66, 197, - 115, 173, 174, 175, 176, 177, 178, 186, 104, 72, - 106, 107, 108, 161, 69, 70, 91, 80, 81, 96, - 125, 126, 207, 127, 132, 133, 134, 164, 165, 167, - 169, 170, 168, 171, 181, 138, 139, 143, 144, 141, - 142, 145, 146, 148, 147, 200, 202, 201, 162, 172, - 190, 192, 191, 193, 194, 195, 166, 179, 182, 183, - 204, 0, 0, 0, 0, 0, 0, 0, 215, 217, - 218, 219, 221, 222, 223, 220, 0, 0, 0, 0, - 0, 0, 225, 227, 228, 229, 230, 231, 232, 0, - 0, 0, 0, 0, 0, 0, 234, 236, 237, 240, - 241, 238, 242, 239, 0, 0, 0, 0, 0, 0, - 0, 0, 244, 246, 247, 248, 249, 253, 250, 251, - 252, 0, 0, 0, 0, 0, 264, 268, 269, 270, - 271, 260, 262, 263, 265, 266, 267, 0, 0, 0, - 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, - 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, - 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, - 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, - 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, - 597, 599, 600, 273, 272, 279, 292, 290, 302, 298, - 299, 303, 300, 301, 304, 305, 306, 307, 308, 332, - 333, 334, 335, 336, 361, 362, 363, 368, 369, 295, - 370, 371, 374, 372, 373, 376, 377, 378, 392, 347, - 348, 350, 351, 379, 395, 341, 343, 396, 402, 403, - 404, 296, 360, 420, 421, 342, 415, 325, 291, 337, - 393, 399, 380, 0, 0, 424, 297, 274, 324, 384, - 275, 293, 294, 338, 339, 422, 382, 386, 387, 276, - 425, 364, 391, 326, 346, 397, 398, 401, 414, 340, - 418, 416, 417, 352, 359, 388, 389, 353, 354, 381, - 406, 327, 328, 331, 309, 311, 312, 313, 314, 315, - 321, 426, 427, 429, 365, 366, 367, 375, 430, 431, - 432, 0, 0, 0, 383, 355, 357, 553, 441, 445, - 443, 442, 446, 444, 0, 0, 449, 450, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 385, 400, - 419, 454, 455, 356, 433, 0, 0, 0, 0, 0, - 0, 407, 408, 409, 410, 411, 412, 413, 554, 349, - 344, 405, 323, 277, 278, 345, 456, 458, 457, 459, - 460, 461, 310, 317, 451, 453, 452, 316, 0, 330, - 390, 428, 329, 358, 318, 319, 322, 320, 462, 463, - 464, 468, 467, 465, 466, 469, 470, 471, 472, 474, - 473, 483, 0, 487, 488, 0, 0, 489, 475, 481, - 476, 477, 478, 480, 482, 479, 254, 255, 256, 257, - 258, 501, 503, 502, 505, 506, 507, 508, 504, 530, - 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, - 541, 542, 543, 544, 545, 546, 547, 552, 570, 571, - 572, 575, 573, 574, 576, 577, 578, 579, 589, 590, - 591, 592, 593, 594, 601, 602, 394, 423, 440, 555, - 556, 447, 448, 434, 435, 0, 0, 0, 439, 595, - 484, 485, 486, 438, 436, 437 + 17, 19, 20, 83, 86, 95, 189, 190, 21, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 34, + 74, 22, 87, 88, 45, 67, 82, 23, 24, 27, + 28, 25, 26, 29, 30, 31, 32, 33, 118, 201, + 119, 121, 122, 123, 203, 208, 204, 215, 216, 217, + 218, 124, 125, 126, 127, 128, 129, 185, 84, 73, + 99, 116, 117, 213, 210, 120, 35, 36, 37, 38, + 39, 75, 89, 90, 105, 61, 71, 62, 193, 194, + 100, 55, 56, 192, 57, 58, 109, 113, 133, 142, + 168, 145, 214, 110, 68, 40, 41, 42, 97, 134, + 135, 136, 43, 44, 46, 47, 49, 50, 48, 140, + 51, 52, 53, 59, 78, 114, 92, 141, 85, 164, + 93, 94, 111, 112, 211, 98, 54, 76, 79, 60, + 63, 101, 102, 77, 165, 103, 64, 65, 66, 202, + 115, 178, 179, 180, 181, 182, 183, 191, 104, 72, + 106, 107, 108, 166, 69, 70, 91, 80, 81, 96, + 130, 131, 212, 132, 137, 138, 139, 169, 170, 172, + 174, 175, 173, 176, 186, 143, 144, 148, 149, 146, + 147, 150, 151, 153, 152, 205, 207, 206, 167, 177, + 195, 197, 196, 198, 199, 200, 171, 184, 187, 188, + 209, 0, 0, 0, 0, 0, 0, 0, 220, 222, + 223, 224, 226, 227, 228, 225, 0, 0, 0, 0, + 0, 0, 230, 232, 233, 234, 235, 236, 237, 0, + 0, 0, 0, 0, 0, 0, 239, 241, 242, 245, + 246, 243, 247, 244, 0, 0, 0, 0, 0, 0, + 0, 0, 249, 251, 252, 253, 254, 258, 255, 256, + 257, 0, 0, 0, 0, 0, 269, 273, 274, 275, + 276, 265, 267, 268, 270, 271, 272, 0, 0, 0, + 0, 0, 0, 0, 0, 501, 503, 505, 504, 510, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 520, 522, 523, 524, 525, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 0, 559, 561, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 568, 570, 571, 572, 574, 575, + 573, 576, 577, 578, 579, 0, 0, 0, 0, 0, + 0, 591, 593, 594, 595, 596, 597, 598, 0, 0, + 607, 609, 610, 278, 277, 284, 297, 295, 307, 303, + 304, 308, 305, 306, 309, 310, 311, 312, 313, 342, + 343, 344, 345, 346, 371, 372, 373, 378, 379, 300, + 380, 381, 384, 382, 383, 386, 387, 388, 402, 357, + 358, 360, 361, 389, 405, 351, 353, 406, 412, 413, + 414, 301, 370, 430, 431, 352, 425, 335, 296, 347, + 403, 409, 390, 0, 0, 434, 302, 279, 334, 394, + 280, 298, 299, 348, 349, 432, 392, 396, 397, 281, + 435, 374, 401, 336, 356, 407, 408, 411, 424, 350, + 428, 426, 427, 362, 369, 398, 399, 363, 364, 391, + 416, 337, 338, 341, 314, 316, 317, 318, 319, 320, + 327, 328, 329, 330, 331, 332, 436, 437, 439, 375, + 376, 377, 385, 440, 441, 442, 0, 0, 0, 393, + 365, 367, 563, 451, 455, 453, 452, 456, 454, 0, + 0, 459, 460, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 395, 410, 429, 464, 465, 366, 443, + 0, 0, 0, 0, 0, 0, 417, 418, 419, 420, + 421, 422, 423, 564, 359, 354, 415, 333, 282, 283, + 355, 466, 468, 467, 469, 470, 471, 315, 322, 461, + 463, 462, 321, 0, 340, 400, 438, 339, 368, 323, + 324, 326, 325, 472, 473, 474, 478, 477, 475, 476, + 479, 480, 481, 482, 484, 483, 493, 0, 497, 498, + 0, 0, 499, 485, 491, 486, 487, 488, 490, 492, + 489, 259, 260, 261, 262, 263, 511, 513, 512, 515, + 516, 517, 518, 514, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 562, 580, 581, 582, 585, 583, 584, 586, + 587, 588, 589, 599, 600, 601, 602, 603, 604, 611, + 612, 404, 433, 450, 565, 566, 457, 458, 444, 445, + 0, 0, 0, 449, 605, 494, 495, 496, 448, 446, + 447 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -23, - 249, 576, 577, 578, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274, -274, -274, -274, -274, -274, -274, -274, -274, - -274, -274 + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -23, 254, 586, 587, 588, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279, -279, -279, -279, + -279, -279, -279, -279, -279, -279, -279 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 235, 17, 29, 438, 18, - 30, 452, 19, 31, 466, 20, 32, 482, 496, 497, - 498, 499, 500, 21, 33, 501, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 439, 440, 441, 442, - 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, - 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, - 470, 471, 472, 473, 22, 34, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 23, 35, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 24, 36, 562, 563, - 426, 427, 428, 429, 25, 37, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 26, 38, 591, - 592, 593, 594, 595, 596, 597, 430, 27, 39, 600, - 601, 602 + -1, 1, 15, 16, 28, 240, 17, 29, 448, 18, + 30, 462, 19, 31, 476, 20, 32, 492, 506, 507, + 508, 509, 510, 21, 33, 511, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 449, 450, 451, 452, 453, 454, 455, 463, 464, + 465, 466, 467, 468, 493, 494, 495, 496, 497, 498, + 499, 500, 477, 478, 479, 480, 481, 482, 483, 22, + 34, 525, 526, 527, 528, 529, 530, 531, 532, 533, + 23, 35, 552, 553, 554, 555, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 568, 569, + 570, 24, 36, 572, 573, 436, 437, 438, 439, 25, + 37, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 26, 38, 601, 602, 603, 604, 605, 606, + 607, 440, 27, 39, 610, 611, 612 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1676,128 +1698,130 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 474, 431, 459, 432, 433, 446, 598, 599, 561, - 502, 3, 603, 604, 447, 448, 524, 525, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 605, 606, 607, 474, 608, 460, - 461, 609, 610, 611, 612, 4, 613, 614, 615, 616, - 617, 5, 564, 565, 566, 567, 568, 569, 570, 571, - 572, 573, 618, 619, 462, 434, 507, 508, 509, 510, - 511, 512, 513, 514, 585, 586, 587, 588, 589, 590, - 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, - 630, 631, 632, 633, 634, 6, 435, 635, 636, 449, - 436, 450, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 7, 646, 647, 648, 649, 650, 651, 652, 653, - 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, - 664, 665, 463, 464, 666, 667, 668, 669, 670, 671, - 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 8, 685, 686, 687, 688, 689, 690, - 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, - 701, 702, 465, 703, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 2, 484, 441, 469, 442, 443, 456, 608, 609, 571, + 512, 3, 613, 614, 457, 458, 534, 535, 536, 537, + 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 551, 615, 616, 617, 484, 618, 470, + 471, 619, 620, 621, 622, 4, 623, 624, 625, 626, + 627, 5, 574, 575, 576, 577, 578, 579, 580, 581, + 582, 583, 628, 629, 472, 444, 517, 518, 519, 520, + 521, 522, 523, 524, 595, 596, 597, 598, 599, 600, + 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, + 640, 641, 642, 643, 644, 6, 445, 645, 646, 459, + 647, 460, 648, 649, 650, 446, 651, 652, 653, 654, + 655, 7, 656, 657, 658, 659, 660, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 679, 680, 473, 474, 681, + 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 8, 700, + 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 716, 717, 475, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, - 740, 9, 741, 476, 477, 478, 742, 743, 744, 745, - 746, 747, 748, 481, 749, 750, 751, 752, 437, 10, - 753, 451, 754, 755, 756, 757, 758, 759, 760, 761, - 762, 491, 492, 493, 494, 495, 11, 475, 763, 476, - 477, 478, 479, 480, 764, 12, 765, 766, 767, 481, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 779, 780, 781, 782, 783, 784, 785, 786, 13, - 787, 788, 503, 14, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 789, 790, 791, 792, - 72, 73, 74, 793, 794, 795, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 796, 797, 798, - 799, 800, 801, 802, 803, 804, 116, 117, 118, 805, - 119, 120, 121, 806, 807, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 808, - 809, 810, 146, 147, 811, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 812, 813, 814, 815, 816, - 817, 818, 819, 820, 821, 822, 823, 824, 825, 826, - 827, 828, 829, 830, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 831, 197, 832, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 833, 834, 835, 836, 837, 838, 839, 840, 841, - 842, 843, 213, 214, 215, 216, 217, 218, 844, 845, - 846, 847, 848, 849, 850, 219, 851, 852, 853, 854, - 855, 856, 857, 220, 221, 858, 222, 223, 859, 224, - 225, 860, 861, 226, 227, 228, 229, 230, 231, 232, - 233, 862, 863, 864, 234, 865, 866, 867, 868, 869, - 870, 871, 872, 873, 874, 875, 876, 877, 878, 879, - 880, 881, 882, 883, 884, 885, 886, 887, 888, 889, - 890, 891, 892, 893, 894, 895, 0, 0, 0, 0, + 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 9, 756, 486, 487, + 488, 757, 758, 759, 760, 761, 762, 763, 491, 764, + 765, 766, 767, 447, 10, 768, 461, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 501, 502, 503, 504, + 505, 11, 485, 778, 486, 487, 488, 489, 490, 779, + 12, 780, 781, 782, 491, 783, 784, 785, 786, 787, + 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, + 798, 799, 800, 801, 13, 802, 803, 513, 14, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 804, 805, 806, 807, 72, 73, 74, 808, 809, + 810, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 811, 812, 813, 814, 815, 816, 817, 818, + 819, 116, 117, 118, 820, 119, 120, 121, 821, 822, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 823, 824, 825, 146, 147, 148, + 149, 150, 151, 152, 826, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 827, 828, 829, 830, 831, + 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 842, 843, 844, 845, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 846, 202, 847, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 848, 849, 850, 851, 852, 853, 854, 855, 856, + 857, 858, 218, 219, 220, 221, 222, 223, 859, 860, + 861, 862, 863, 864, 865, 224, 866, 867, 868, 869, + 870, 871, 872, 225, 226, 873, 227, 228, 874, 229, + 230, 875, 876, 231, 232, 233, 234, 235, 236, 237, + 238, 877, 878, 879, 239, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 903, 904, + 905, 906, 907, 908, 909, 910, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 504, - 505, 506 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 514, + 515, 516 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 44, 280, 281, 112, - 33, 11, 10, 10, 52, 53, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 10, 10, 10, 44, 10, 80, + 0, 44, 44, 44, 46, 47, 44, 285, 286, 112, + 33, 11, 10, 10, 52, 53, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 10, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, + 10, 51, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 252, 253, 254, 255, 256, 257, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 137, - 142, 139, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 139, 10, 10, 10, 147, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 178, 179, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 158, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 213, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 218, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, - 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, - 10, 269, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, - 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, + 10, 10, 10, 10, 10, 10, 216, 10, 261, 262, + 263, 10, 10, 10, 10, 10, 10, 10, 271, 10, + 10, 10, 10, 275, 234, 10, 274, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 289, 290, 291, 292, + 293, 251, 259, 10, 261, 262, 263, 264, 265, 10, + 260, 10, 10, 10, 271, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, - 10, 10, 33, 283, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 10, 10, 10, 10, - 48, 49, 50, 10, 10, 10, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 104, 105, 106, 10, - 108, 109, 110, 10, 10, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 10, - 10, 10, 140, 141, 10, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 284, 10, 10, 33, 288, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, + 10, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 10, 10, 10, 140, 141, 142, + 143, 144, 145, 146, 10, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 10, 212, 10, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 240, 241, 242, 243, 244, 245, 10, 10, - 10, 10, 10, 10, 10, 253, 10, 10, 10, 10, - 10, 10, 10, 261, 262, 10, 264, 265, 10, 267, - 268, 10, 10, 271, 272, 273, 274, 275, 276, 277, - 278, 10, 10, 10, 282, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 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, 10, 217, 10, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 245, 246, 247, 248, 249, 250, 10, 10, + 10, 10, 10, 10, 10, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 267, 10, 269, 270, 10, 272, + 273, 10, 10, 276, 277, 278, 279, 280, 281, 282, + 283, 10, 10, 10, 287, 10, 10, 10, 10, 10, 10, 10, 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, @@ -1810,10 +1834,10 @@ static const yytype_int16 yycheck[] = symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 290, 0, 11, 45, 51, 95, 111, 153, 211, - 229, 246, 255, 279, 283, 291, 292, 295, 298, 301, - 304, 312, 533, 544, 565, 573, 586, 596, 293, 296, - 299, 302, 305, 313, 534, 545, 566, 574, 587, 597, + 0, 295, 0, 11, 45, 51, 95, 111, 158, 216, + 234, 251, 260, 284, 288, 296, 297, 300, 303, 306, + 309, 317, 543, 554, 575, 583, 596, 606, 298, 301, + 304, 307, 310, 318, 544, 555, 576, 584, 597, 607, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -1824,17 +1848,17 @@ static const yytype_uint16 yystos[] = 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 141, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 131, 132, 133, 134, 135, 136, 140, 141, 142, 143, + 144, 145, 146, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 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, 212, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 240, 241, 242, 243, 244, 245, 253, - 261, 262, 264, 265, 267, 268, 271, 272, 273, 274, - 275, 276, 277, 278, 282, 294, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 217, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 245, 246, + 247, 248, 249, 250, 258, 266, 267, 269, 270, 272, + 273, 276, 277, 278, 279, 280, 281, 282, 283, 287, + 299, 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, @@ -1852,25 +1876,26 @@ static const yytype_uint16 yystos[] = 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, 569, 570, 571, 572, - 595, 44, 46, 47, 107, 138, 142, 270, 297, 505, - 506, 507, 508, 509, 510, 511, 44, 52, 53, 137, - 139, 269, 300, 512, 513, 514, 515, 516, 517, 44, - 80, 81, 105, 173, 174, 213, 303, 526, 527, 528, - 529, 530, 531, 532, 44, 254, 256, 257, 258, 259, - 260, 266, 306, 518, 519, 520, 521, 522, 523, 524, - 525, 284, 285, 286, 287, 288, 307, 308, 309, 310, - 311, 314, 518, 519, 520, 521, 522, 96, 97, 98, - 99, 100, 101, 102, 103, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, - 564, 112, 567, 568, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, - 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, - 598, 599, 600, 10, 10, 10, 10, 10, 10, 10, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 511, 512, 513, 514, 579, 580, 581, 582, + 605, 44, 46, 47, 107, 138, 147, 275, 302, 515, + 516, 517, 518, 519, 520, 521, 44, 52, 53, 137, + 139, 274, 305, 522, 523, 524, 525, 526, 527, 44, + 80, 81, 105, 178, 179, 218, 308, 536, 537, 538, + 539, 540, 541, 542, 44, 259, 261, 262, 263, 264, + 265, 271, 311, 528, 529, 530, 531, 532, 533, 534, + 535, 289, 290, 291, 292, 293, 312, 313, 314, 315, + 316, 319, 528, 529, 530, 531, 532, 96, 97, 98, + 99, 100, 101, 102, 103, 545, 546, 547, 548, 549, + 550, 551, 552, 553, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 565, 566, 567, 568, 569, 570, 571, 572, 573, + 574, 112, 577, 578, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 252, 253, 254, 255, 256, + 257, 598, 599, 600, 601, 602, 603, 604, 285, 286, + 608, 609, 610, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1899,40 +1924,41 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 292, 293, 293, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 295, 296, 296, 297, 297, 297, - 297, 297, 297, 297, 298, 299, 299, 300, 300, 300, - 300, 300, 300, 301, 302, 302, 303, 303, 303, 303, - 303, 303, 303, 304, 305, 305, 306, 306, 306, 306, - 306, 306, 306, 306, 307, 308, 309, 310, 311, 312, - 313, 313, 314, 314, 314, 314, 314, 314, 314, 314, - 314, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 0, 294, 295, 295, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 297, 298, 298, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 300, + 301, 301, 302, 302, 302, 302, 302, 302, 302, 303, + 304, 304, 305, 305, 305, 305, 305, 305, 306, 307, + 307, 308, 308, 308, 308, 308, 308, 308, 309, 310, + 310, 311, 311, 311, 311, 311, 311, 311, 311, 312, + 313, 314, 315, 316, 317, 318, 318, 319, 319, 319, + 319, 319, 319, 319, 319, 319, 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, @@ -1954,18 +1980,19 @@ static const yytype_uint16 yyr1[] = 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, 534, 535, 535, 535, 535, 535, 535, 535, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, + 543, 544, 544, 545, 545, 545, 545, 545, 545, 545, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 555, 556, 556, 556, 556, 556, 556, 556, 556, + 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, - 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, - 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, - 598, 599, 600 + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 584, + 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, + 596, 597, 597, 598, 598, 598, 598, 598, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 607, 608, + 608, 609, 610 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1992,13 +2019,14 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 1, 1, 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, 2, 2, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2708,15 +2736,15 @@ yyreduce: switch (yyn) { case 16: -#line 191 "./util/configparser.y" /* yacc.c:1646 */ +#line 193 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2716 "util/configparser.c" /* yacc.c:1646 */ +#line 2744 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 286 "./util/configparser.y" /* yacc.c:1646 */ + case 219: +#line 290 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2727,11 +2755,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2731 "util/configparser.c" /* yacc.c:1646 */ +#line 2759 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 303 "./util/configparser.y" /* yacc.c:1646 */ + case 229: +#line 307 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2742,11 +2770,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2746 "util/configparser.c" /* yacc.c:1646 */ +#line 2774 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 320 "./util/configparser.y" /* yacc.c:1646 */ + case 238: +#line 324 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2759,11 +2787,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2763 "util/configparser.c" /* yacc.c:1646 */ +#line 2791 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 339 "./util/configparser.y" /* yacc.c:1646 */ + case 248: +#line 343 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2779,11 +2807,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2783 "util/configparser.c" /* yacc.c:1646 */ +#line 2811 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 363 "./util/configparser.y" /* yacc.c:1646 */ + case 259: +#line 367 "./util/configparser.y" /* yacc.c:1646 */ { uint8_t* bitlist; size_t len = 0; @@ -2800,11 +2828,11 @@ yyreduce: } } -#line 2804 "util/configparser.c" /* yacc.c:1646 */ +#line 2832 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 382 "./util/configparser.y" /* yacc.c:1646 */ + case 260: +#line 386 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2819,21 +2847,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2823 "util/configparser.c" /* yacc.c:1646 */ +#line 2851 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 399 "./util/configparser.y" /* yacc.c:1646 */ + case 261: +#line 403 "./util/configparser.y" /* yacc.c:1646 */ { 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 2833 "util/configparser.c" /* yacc.c:1646 */ +#line 2861 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 407 "./util/configparser.y" /* yacc.c:1646 */ + case 262: +#line 411 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2841,21 +2869,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2845 "util/configparser.c" /* yacc.c:1646 */ +#line 2873 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 417 "./util/configparser.y" /* yacc.c:1646 */ + case 263: +#line 421 "./util/configparser.y" /* yacc.c:1646 */ { 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 2855 "util/configparser.c" /* yacc.c:1646 */ +#line 2883 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 425 "./util/configparser.y" /* yacc.c:1646 */ + case 264: +#line 429 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2871,11 +2899,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2875 "util/configparser.c" /* yacc.c:1646 */ +#line 2903 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 448 "./util/configparser.y" /* yacc.c:1646 */ + case 277: +#line 452 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2883,11 +2911,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2887 "util/configparser.c" /* yacc.c:1646 */ +#line 2915 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 457 "./util/configparser.y" /* yacc.c:1646 */ + case 278: +#line 461 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2895,11 +2923,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2899 "util/configparser.c" /* yacc.c:1646 */ +#line 2927 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 466 "./util/configparser.y" /* yacc.c:1646 */ + case 279: +#line 470 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2909,11 +2937,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2913 "util/configparser.c" /* yacc.c:1646 */ +#line 2941 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 477 "./util/configparser.y" /* yacc.c:1646 */ + case 280: +#line 481 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2921,11 +2949,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2925 "util/configparser.c" /* yacc.c:1646 */ +#line 2953 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 486 "./util/configparser.y" /* yacc.c:1646 */ + case 281: +#line 490 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2933,11 +2961,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2937 "util/configparser.c" /* yacc.c:1646 */ +#line 2965 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 495 "./util/configparser.y" /* yacc.c:1646 */ + case 282: +#line 499 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2945,11 +2973,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2949 "util/configparser.c" /* yacc.c:1646 */ +#line 2977 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 504 "./util/configparser.y" /* yacc.c:1646 */ + case 283: +#line 508 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2959,11 +2987,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2963 "util/configparser.c" /* yacc.c:1646 */ +#line 2991 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 515 "./util/configparser.y" /* yacc.c:1646 */ + case 284: +#line 519 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2971,11 +2999,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2975 "util/configparser.c" /* yacc.c:1646 */ +#line 3003 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 524 "./util/configparser.y" /* yacc.c:1646 */ + case 285: +#line 528 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2986,11 +3014,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2990 "util/configparser.c" /* yacc.c:1646 */ +#line 3018 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 536 "./util/configparser.y" /* yacc.c:1646 */ + case 286: +#line 540 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3002,11 +3030,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3006 "util/configparser.c" /* yacc.c:1646 */ +#line 3034 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 550 "./util/configparser.y" /* yacc.c:1646 */ + case 287: +#line 554 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3020,11 +3048,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3024 "util/configparser.c" /* yacc.c:1646 */ +#line 3052 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 565 "./util/configparser.y" /* yacc.c:1646 */ + case 288: +#line 569 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3034,11 +3062,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3038 "util/configparser.c" /* yacc.c:1646 */ +#line 3066 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 576 "./util/configparser.y" /* yacc.c:1646 */ + case 289: +#line 580 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3054,11 +3082,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" /* yacc.c:1646 */ +#line 3086 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 593 "./util/configparser.y" /* yacc.c:1646 */ + case 290: +#line 597 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3074,11 +3102,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3078 "util/configparser.c" /* yacc.c:1646 */ +#line 3106 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 610 "./util/configparser.y" /* yacc.c:1646 */ + case 291: +#line 614 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3094,11 +3122,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3098 "util/configparser.c" /* yacc.c:1646 */ +#line 3126 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 627 "./util/configparser.y" /* yacc.c:1646 */ + case 292: +#line 631 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3114,11 +3142,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3118 "util/configparser.c" /* yacc.c:1646 */ +#line 3146 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 644 "./util/configparser.y" /* yacc.c:1646 */ + case 293: +#line 648 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3132,11 +3160,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3136 "util/configparser.c" /* yacc.c:1646 */ +#line 3164 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 659 "./util/configparser.y" /* yacc.c:1646 */ + case 294: +#line 663 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3150,11 +3178,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3154 "util/configparser.c" /* yacc.c:1646 */ +#line 3182 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 674 "./util/configparser.y" /* yacc.c:1646 */ + case 295: +#line 678 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3166,11 +3194,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3170 "util/configparser.c" /* yacc.c:1646 */ +#line 3198 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 687 "./util/configparser.y" /* yacc.c:1646 */ + case 296: +#line 691 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3184,11 +3212,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3188 "util/configparser.c" /* yacc.c:1646 */ +#line 3216 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 702 "./util/configparser.y" /* yacc.c:1646 */ + case 297: +#line 706 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3196,11 +3224,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3200 "util/configparser.c" /* yacc.c:1646 */ +#line 3228 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 711 "./util/configparser.y" /* yacc.c:1646 */ + case 298: +#line 715 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3208,11 +3236,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3212 "util/configparser.c" /* yacc.c:1646 */ +#line 3240 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 720 "./util/configparser.y" /* yacc.c:1646 */ + case 299: +#line 724 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3220,11 +3248,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3224 "util/configparser.c" /* yacc.c:1646 */ +#line 3252 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 729 "./util/configparser.y" /* yacc.c:1646 */ + case 300: +#line 733 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3232,11 +3260,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3236 "util/configparser.c" /* yacc.c:1646 */ +#line 3264 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 738 "./util/configparser.y" /* yacc.c:1646 */ + case 301: +#line 742 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3244,11 +3272,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3248 "util/configparser.c" /* yacc.c:1646 */ +#line 3276 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 747 "./util/configparser.y" /* yacc.c:1646 */ + case 302: +#line 751 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3256,11 +3284,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3260 "util/configparser.c" /* yacc.c:1646 */ +#line 3288 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 756 "./util/configparser.y" /* yacc.c:1646 */ + case 303: +#line 760 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3268,11 +3296,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3272 "util/configparser.c" /* yacc.c:1646 */ +#line 3300 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 765 "./util/configparser.y" /* yacc.c:1646 */ + case 304: +#line 769 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3280,11 +3308,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3284 "util/configparser.c" /* yacc.c:1646 */ +#line 3312 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 774 "./util/configparser.y" /* yacc.c:1646 */ + case 305: +#line 778 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3292,11 +3320,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3296 "util/configparser.c" /* yacc.c:1646 */ +#line 3324 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 783 "./util/configparser.y" /* yacc.c:1646 */ + case 306: +#line 787 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3304,11 +3332,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3308 "util/configparser.c" /* yacc.c:1646 */ +#line 3336 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 792 "./util/configparser.y" /* yacc.c:1646 */ + case 307: +#line 796 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3316,11 +3344,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3320 "util/configparser.c" /* yacc.c:1646 */ +#line 3348 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 801 "./util/configparser.y" /* yacc.c:1646 */ + case 308: +#line 805 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3328,11 +3356,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3332 "util/configparser.c" /* yacc.c:1646 */ +#line 3360 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 810 "./util/configparser.y" /* yacc.c:1646 */ + case 309: +#line 814 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3340,11 +3368,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3344 "util/configparser.c" /* yacc.c:1646 */ +#line 3372 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 819 "./util/configparser.y" /* yacc.c:1646 */ + case 310: +#line 823 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3352,11 +3380,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" /* yacc.c:1646 */ +#line 3384 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 828 "./util/configparser.y" /* yacc.c:1646 */ + case 311: +#line 832 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3368,11 +3396,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3372 "util/configparser.c" /* yacc.c:1646 */ +#line 3400 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 841 "./util/configparser.y" /* yacc.c:1646 */ + case 312: +#line 845 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3380,11 +3408,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3384 "util/configparser.c" /* yacc.c:1646 */ +#line 3412 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 850 "./util/configparser.y" /* yacc.c:1646 */ + case 313: +#line 854 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3396,11 +3424,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3400 "util/configparser.c" /* yacc.c:1646 */ +#line 3428 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 863 "./util/configparser.y" /* yacc.c:1646 */ + case 314: +#line 867 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3408,11 +3436,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3412 "util/configparser.c" /* yacc.c:1646 */ +#line 3440 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 872 "./util/configparser.y" /* yacc.c:1646 */ + case 315: +#line 876 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -3420,11 +3448,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3424 "util/configparser.c" /* yacc.c:1646 */ +#line 3452 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 881 "./util/configparser.y" /* yacc.c:1646 */ + case 316: +#line 885 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3432,31 +3460,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3436 "util/configparser.c" /* yacc.c:1646 */ +#line 3464 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 890 "./util/configparser.y" /* yacc.c:1646 */ + case 317: +#line 894 "./util/configparser.y" /* yacc.c:1646 */ { 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 3446 "util/configparser.c" /* yacc.c:1646 */ +#line 3474 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 897 "./util/configparser.y" /* yacc.c:1646 */ + case 318: +#line 901 "./util/configparser.y" /* yacc.c:1646 */ { 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 3456 "util/configparser.c" /* yacc.c:1646 */ +#line 3484 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 904 "./util/configparser.y" /* yacc.c:1646 */ + case 319: +#line 908 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3464,21 +3492,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3468 "util/configparser.c" /* yacc.c:1646 */ +#line 3496 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 913 "./util/configparser.y" /* yacc.c:1646 */ + case 320: +#line 917 "./util/configparser.y" /* yacc.c:1646 */ { 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 3478 "util/configparser.c" /* yacc.c:1646 */ +#line 3506 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 920 "./util/configparser.y" /* yacc.c:1646 */ + case 321: +#line 924 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3486,64 +3514,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3490 "util/configparser.c" /* yacc.c:1646 */ +#line 3518 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 929 "./util/configparser.y" /* yacc.c:1646 */ + case 322: +#line 933 "./util/configparser.y" /* yacc.c:1646 */ { 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 3501 "util/configparser.c" /* yacc.c:1646 */ +#line 3529 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 937 "./util/configparser.y" /* yacc.c:1646 */ + case 323: +#line 941 "./util/configparser.y" /* yacc.c:1646 */ { 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 3511 "util/configparser.c" /* yacc.c:1646 */ +#line 3539 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 944 "./util/configparser.y" /* yacc.c:1646 */ + case 324: +#line 948 "./util/configparser.y" /* yacc.c:1646 */ { 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 3521 "util/configparser.c" /* yacc.c:1646 */ +#line 3549 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 951 "./util/configparser.y" /* yacc.c:1646 */ + case 325: +#line 955 "./util/configparser.y" /* yacc.c:1646 */ { 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 3532 "util/configparser.c" /* yacc.c:1646 */ +#line 3560 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 959 "./util/configparser.y" /* yacc.c:1646 */ - { - OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); - if(atoi((yyvsp[0].str)) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); - } -#line 3543 "util/configparser.c" /* yacc.c:1646 */ - break; - - case 322: -#line 966 "./util/configparser.y" /* yacc.c:1646 */ + case 326: +#line 963 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3551,11 +3568,88 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3555 "util/configparser.c" /* yacc.c:1646 */ +#line 3572 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 975 "./util/configparser.y" /* yacc.c:1646 */ + case 327: +#line 972 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); + } +#line 3583 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 328: +#line 979 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->http_endpoint); + if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { + cfg_parser->cfg->http_endpoint = malloc(strlen((yyvsp[0].str))+2); + cfg_parser->cfg->http_endpoint[0] = '/'; + memcpy(cfg_parser->cfg->http_endpoint+1, (yyvsp[0].str), + strlen((yyvsp[0].str))+1); + free((yyvsp[0].str)); + } else { + cfg_parser->cfg->http_endpoint = (yyvsp[0].str); + } + } +#line 3601 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 329: +#line 993 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); + } +#line 3613 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 330: +#line 1001 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), + &cfg_parser->cfg->http_query_buffer_size)) + yyerror("memory size expected"); + free((yyvsp[0].str)); + } +#line 3625 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 331: +#line 1009 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); + if(!cfg_parse_memsize((yyvsp[0].str), + &cfg_parser->cfg->http_response_buffer_size)) + yyerror("memory size expected"); + free((yyvsp[0].str)); + } +#line 3637 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 332: +#line 1017 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3649 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 333: +#line 1025 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3563,11 +3657,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3567 "util/configparser.c" /* yacc.c:1646 */ +#line 3661 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 984 "./util/configparser.y" /* yacc.c:1646 */ + case 334: +#line 1034 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3575,11 +3669,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3579 "util/configparser.c" /* yacc.c:1646 */ +#line 3673 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 993 "./util/configparser.y" /* yacc.c:1646 */ + case 335: +#line 1043 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3592,11 +3686,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3596 "util/configparser.c" /* yacc.c:1646 */ +#line 3690 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1007 "./util/configparser.y" /* yacc.c:1646 */ + case 336: +#line 1057 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3604,11 +3698,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3608 "util/configparser.c" /* yacc.c:1646 */ +#line 3702 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1016 "./util/configparser.y" /* yacc.c:1646 */ + case 337: +#line 1066 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3616,11 +3710,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3620 "util/configparser.c" /* yacc.c:1646 */ +#line 3714 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1025 "./util/configparser.y" /* yacc.c:1646 */ + case 338: +#line 1075 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3628,11 +3722,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3632 "util/configparser.c" /* yacc.c:1646 */ +#line 3726 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1034 "./util/configparser.y" /* yacc.c:1646 */ + case 339: +#line 1084 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3640,11 +3734,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3644 "util/configparser.c" /* yacc.c:1646 */ +#line 3738 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1043 "./util/configparser.y" /* yacc.c:1646 */ + case 340: +#line 1093 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3652,11 +3746,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3656 "util/configparser.c" /* yacc.c:1646 */ +#line 3750 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1052 "./util/configparser.y" /* yacc.c:1646 */ + case 341: +#line 1102 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3664,31 +3758,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3668 "util/configparser.c" /* yacc.c:1646 */ +#line 3762 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1061 "./util/configparser.y" /* yacc.c:1646 */ + case 342: +#line 1111 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3678 "util/configparser.c" /* yacc.c:1646 */ +#line 3772 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1068 "./util/configparser.y" /* yacc.c:1646 */ + case 343: +#line 1118 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3688 "util/configparser.c" /* yacc.c:1646 */ +#line 3782 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1075 "./util/configparser.y" /* yacc.c:1646 */ + case 344: +#line 1125 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3713,105 +3807,105 @@ yyreduce: } } } -#line 3717 "util/configparser.c" /* yacc.c:1646 */ +#line 3811 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1101 "./util/configparser.y" /* yacc.c:1646 */ + case 345: +#line 1151 "./util/configparser.y" /* yacc.c:1646 */ { 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 3728 "util/configparser.c" /* yacc.c:1646 */ +#line 3822 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1109 "./util/configparser.y" /* yacc.c:1646 */ + case 346: +#line 1159 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3738 "util/configparser.c" /* yacc.c:1646 */ +#line 3832 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1116 "./util/configparser.y" /* yacc.c:1646 */ + case 347: +#line 1166 "./util/configparser.y" /* yacc.c:1646 */ { 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 3748 "util/configparser.c" /* yacc.c:1646 */ +#line 3842 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1123 "./util/configparser.y" /* yacc.c:1646 */ + case 348: +#line 1173 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3758 "util/configparser.c" /* yacc.c:1646 */ +#line 3852 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1130 "./util/configparser.y" /* yacc.c:1646 */ + case 349: +#line 1180 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3768 "util/configparser.c" /* yacc.c:1646 */ +#line 3862 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1137 "./util/configparser.y" /* yacc.c:1646 */ + case 350: +#line 1187 "./util/configparser.y" /* yacc.c:1646 */ { 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 3779 "util/configparser.c" /* yacc.c:1646 */ +#line 3873 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1145 "./util/configparser.y" /* yacc.c:1646 */ + case 351: +#line 1195 "./util/configparser.y" /* yacc.c:1646 */ { 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 3790 "util/configparser.c" /* yacc.c:1646 */ +#line 3884 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1153 "./util/configparser.y" /* yacc.c:1646 */ + case 352: +#line 1203 "./util/configparser.y" /* yacc.c:1646 */ { 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 3801 "util/configparser.c" /* yacc.c:1646 */ +#line 3895 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1161 "./util/configparser.y" /* yacc.c:1646 */ + case 353: +#line 1211 "./util/configparser.y" /* yacc.c:1646 */ { 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 3811 "util/configparser.c" /* yacc.c:1646 */ +#line 3905 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1168 "./util/configparser.y" /* yacc.c:1646 */ + case 354: +#line 1218 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3821,11 +3915,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3825 "util/configparser.c" /* yacc.c:1646 */ +#line 3919 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1179 "./util/configparser.y" /* yacc.c:1646 */ + case 355: +#line 1229 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3835,21 +3929,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3839 "util/configparser.c" /* yacc.c:1646 */ +#line 3933 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1190 "./util/configparser.y" /* yacc.c:1646 */ + case 356: +#line 1240 "./util/configparser.y" /* yacc.c:1646 */ { 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 3849 "util/configparser.c" /* yacc.c:1646 */ +#line 3943 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1197 "./util/configparser.y" /* yacc.c:1646 */ + case 357: +#line 1247 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3857,11 +3951,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3861 "util/configparser.c" /* yacc.c:1646 */ +#line 3955 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1206 "./util/configparser.y" /* yacc.c:1646 */ + case 358: +#line 1256 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3869,11 +3963,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3873 "util/configparser.c" /* yacc.c:1646 */ +#line 3967 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1215 "./util/configparser.y" /* yacc.c:1646 */ + case 359: +#line 1265 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3881,53 +3975,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3885 "util/configparser.c" /* yacc.c:1646 */ +#line 3979 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1224 "./util/configparser.y" /* yacc.c:1646 */ + case 360: +#line 1274 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3895 "util/configparser.c" /* yacc.c:1646 */ +#line 3989 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1231 "./util/configparser.y" /* yacc.c:1646 */ + case 361: +#line 1281 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3905 "util/configparser.c" /* yacc.c:1646 */ +#line 3999 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1238 "./util/configparser.y" /* yacc.c:1646 */ + case 362: +#line 1288 "./util/configparser.y" /* yacc.c:1646 */ { 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 3916 "util/configparser.c" /* yacc.c:1646 */ +#line 4010 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1246 "./util/configparser.y" /* yacc.c:1646 */ + case 363: +#line 1296 "./util/configparser.y" /* yacc.c:1646 */ { 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 3927 "util/configparser.c" /* yacc.c:1646 */ +#line 4021 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1254 "./util/configparser.y" /* yacc.c:1646 */ + case 364: +#line 1304 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3936,11 +4030,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3940 "util/configparser.c" /* yacc.c:1646 */ +#line 4034 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1264 "./util/configparser.y" /* yacc.c:1646 */ + case 365: +#line 1314 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3949,11 +4043,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3953 "util/configparser.c" /* yacc.c:1646 */ +#line 4047 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1274 "./util/configparser.y" /* yacc.c:1646 */ + case 366: +#line 1324 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3962,11 +4056,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3966 "util/configparser.c" /* yacc.c:1646 */ +#line 4060 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1284 "./util/configparser.y" /* yacc.c:1646 */ + case 367: +#line 1334 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3979,22 +4073,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" /* yacc.c:1646 */ +#line 4077 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1298 "./util/configparser.y" /* yacc.c:1646 */ + case 368: +#line 1348 "./util/configparser.y" /* yacc.c:1646 */ { 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 3994 "util/configparser.c" /* yacc.c:1646 */ +#line 4088 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1306 "./util/configparser.y" /* yacc.c:1646 */ + case 369: +#line 1356 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4006,11 +4100,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4010 "util/configparser.c" /* yacc.c:1646 */ +#line 4104 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1319 "./util/configparser.y" /* yacc.c:1646 */ + case 370: +#line 1369 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4020,22 +4114,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4024 "util/configparser.c" /* yacc.c:1646 */ +#line 4118 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1330 "./util/configparser.y" /* yacc.c:1646 */ + case 371: +#line 1380 "./util/configparser.y" /* yacc.c:1646 */ { 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 4035 "util/configparser.c" /* yacc.c:1646 */ +#line 4129 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1338 "./util/configparser.y" /* yacc.c:1646 */ + case 372: +#line 1388 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4047,11 +4141,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4051 "util/configparser.c" /* yacc.c:1646 */ +#line 4145 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1351 "./util/configparser.y" /* yacc.c:1646 */ + case 373: +#line 1401 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4059,11 +4153,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" /* yacc.c:1646 */ +#line 4157 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1360 "./util/configparser.y" /* yacc.c:1646 */ + case 374: +#line 1410 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4071,11 +4165,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4075 "util/configparser.c" /* yacc.c:1646 */ +#line 4169 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1369 "./util/configparser.y" /* yacc.c:1646 */ + case 375: +#line 1419 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4083,11 +4177,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4087 "util/configparser.c" /* yacc.c:1646 */ +#line 4181 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1378 "./util/configparser.y" /* yacc.c:1646 */ + case 376: +#line 1428 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4096,11 +4190,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4100 "util/configparser.c" /* yacc.c:1646 */ +#line 4194 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1388 "./util/configparser.y" /* yacc.c:1646 */ + case 377: +#line 1438 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4109,22 +4203,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4113 "util/configparser.c" /* yacc.c:1646 */ +#line 4207 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1398 "./util/configparser.y" /* yacc.c:1646 */ + case 378: +#line 1448 "./util/configparser.y" /* yacc.c:1646 */ { 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 4124 "util/configparser.c" /* yacc.c:1646 */ +#line 4218 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1406 "./util/configparser.y" /* yacc.c:1646 */ + case 379: +#line 1456 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4136,11 +4230,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4140 "util/configparser.c" /* yacc.c:1646 */ +#line 4234 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1419 "./util/configparser.y" /* yacc.c:1646 */ + case 380: +#line 1469 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4148,22 +4242,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4152 "util/configparser.c" /* yacc.c:1646 */ +#line 4246 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1428 "./util/configparser.y" /* yacc.c:1646 */ + case 381: +#line 1478 "./util/configparser.y" /* yacc.c:1646 */ { 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 4163 "util/configparser.c" /* yacc.c:1646 */ +#line 4257 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1436 "./util/configparser.y" /* yacc.c:1646 */ + case 382: +#line 1486 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4171,22 +4265,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4175 "util/configparser.c" /* yacc.c:1646 */ +#line 4269 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1445 "./util/configparser.y" /* yacc.c:1646 */ + case 383: +#line 1495 "./util/configparser.y" /* yacc.c:1646 */ { 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 4186 "util/configparser.c" /* yacc.c:1646 */ +#line 4280 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1453 "./util/configparser.y" /* yacc.c:1646 */ + case 384: +#line 1503 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4198,11 +4292,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4202 "util/configparser.c" /* yacc.c:1646 */ +#line 4296 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1466 "./util/configparser.y" /* yacc.c:1646 */ + case 385: +#line 1516 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4210,21 +4304,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4214 "util/configparser.c" /* yacc.c:1646 */ +#line 4308 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1475 "./util/configparser.y" /* yacc.c:1646 */ + case 386: +#line 1525 "./util/configparser.y" /* yacc.c:1646 */ { 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 4224 "util/configparser.c" /* yacc.c:1646 */ +#line 4318 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1482 "./util/configparser.y" /* yacc.c:1646 */ + case 387: +#line 1532 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4233,11 +4327,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4237 "util/configparser.c" /* yacc.c:1646 */ +#line 4331 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1492 "./util/configparser.y" /* yacc.c:1646 */ + case 388: +#line 1542 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4246,11 +4340,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" /* yacc.c:1646 */ +#line 4344 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1502 "./util/configparser.y" /* yacc.c:1646 */ + case 389: +#line 1552 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4259,11 +4353,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4263 "util/configparser.c" /* yacc.c:1646 */ +#line 4357 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1512 "./util/configparser.y" /* yacc.c:1646 */ + case 390: +#line 1562 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4272,11 +4366,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4276 "util/configparser.c" /* yacc.c:1646 */ +#line 4370 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1522 "./util/configparser.y" /* yacc.c:1646 */ + case 391: +#line 1572 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4285,11 +4379,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4289 "util/configparser.c" /* yacc.c:1646 */ +#line 4383 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1532 "./util/configparser.y" /* yacc.c:1646 */ + case 392: +#line 1582 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4298,11 +4392,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4302 "util/configparser.c" /* yacc.c:1646 */ +#line 4396 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1542 "./util/configparser.y" /* yacc.c:1646 */ + case 393: +#line 1592 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4311,11 +4405,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4315 "util/configparser.c" /* yacc.c:1646 */ +#line 4409 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1552 "./util/configparser.y" /* yacc.c:1646 */ + case 394: +#line 1602 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4324,41 +4418,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4328 "util/configparser.c" /* yacc.c:1646 */ +#line 4422 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1562 "./util/configparser.y" /* yacc.c:1646 */ + case 395: +#line 1612 "./util/configparser.y" /* yacc.c:1646 */ { 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 4338 "util/configparser.c" /* yacc.c:1646 */ +#line 4432 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1569 "./util/configparser.y" /* yacc.c:1646 */ + case 396: +#line 1619 "./util/configparser.y" /* yacc.c:1646 */ { 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 4348 "util/configparser.c" /* yacc.c:1646 */ +#line 4442 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1576 "./util/configparser.y" /* yacc.c:1646 */ + case 397: +#line 1626 "./util/configparser.y" /* yacc.c:1646 */ { 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 4358 "util/configparser.c" /* yacc.c:1646 */ +#line 4452 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1583 "./util/configparser.y" /* yacc.c:1646 */ + case 398: +#line 1633 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4366,11 +4460,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4370 "util/configparser.c" /* yacc.c:1646 */ +#line 4464 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1592 "./util/configparser.y" /* yacc.c:1646 */ + case 399: +#line 1642 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4378,11 +4472,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4382 "util/configparser.c" /* yacc.c:1646 */ +#line 4476 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1601 "./util/configparser.y" /* yacc.c:1646 */ + case 400: +#line 1651 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4390,11 +4484,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" /* yacc.c:1646 */ +#line 4488 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1610 "./util/configparser.y" /* yacc.c:1646 */ + case 401: +#line 1660 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4402,21 +4496,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4406 "util/configparser.c" /* yacc.c:1646 */ +#line 4500 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1619 "./util/configparser.y" /* yacc.c:1646 */ + case 402: +#line 1669 "./util/configparser.y" /* yacc.c:1646 */ { 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 4416 "util/configparser.c" /* yacc.c:1646 */ +#line 4510 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1626 "./util/configparser.y" /* yacc.c:1646 */ + case 403: +#line 1676 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4425,11 +4519,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" /* yacc.c:1646 */ +#line 4523 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1636 "./util/configparser.y" /* yacc.c:1646 */ + case 404: +#line 1686 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4448,21 +4542,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4452 "util/configparser.c" /* yacc.c:1646 */ +#line 4546 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1656 "./util/configparser.y" /* yacc.c:1646 */ + case 405: +#line 1706 "./util/configparser.y" /* yacc.c:1646 */ { 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 4462 "util/configparser.c" /* yacc.c:1646 */ +#line 4556 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1663 "./util/configparser.y" /* yacc.c:1646 */ + case 406: +#line 1713 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4479,11 +4573,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4483 "util/configparser.c" /* yacc.c:1646 */ +#line 4577 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1681 "./util/configparser.y" /* yacc.c:1646 */ + case 407: +#line 1731 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4495,11 +4589,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4499 "util/configparser.c" /* yacc.c:1646 */ +#line 4593 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1694 "./util/configparser.y" /* yacc.c:1646 */ + case 408: +#line 1744 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4511,11 +4605,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4515 "util/configparser.c" /* yacc.c:1646 */ +#line 4609 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1707 "./util/configparser.y" /* yacc.c:1646 */ + case 409: +#line 1757 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4523,11 +4617,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4527 "util/configparser.c" /* yacc.c:1646 */ +#line 4621 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1716 "./util/configparser.y" /* yacc.c:1646 */ + case 410: +#line 1766 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4535,11 +4629,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" /* yacc.c:1646 */ +#line 4633 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1725 "./util/configparser.y" /* yacc.c:1646 */ + case 411: +#line 1775 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4547,11 +4641,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4551 "util/configparser.c" /* yacc.c:1646 */ +#line 4645 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1734 "./util/configparser.y" /* yacc.c:1646 */ + case 412: +#line 1784 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4559,11 +4653,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4563 "util/configparser.c" /* yacc.c:1646 */ +#line 4657 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1743 "./util/configparser.y" /* yacc.c:1646 */ + case 413: +#line 1793 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4572,11 +4666,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4576 "util/configparser.c" /* yacc.c:1646 */ +#line 4670 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1753 "./util/configparser.y" /* yacc.c:1646 */ + case 414: +#line 1803 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4585,11 +4679,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4589 "util/configparser.c" /* yacc.c:1646 */ +#line 4683 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1763 "./util/configparser.y" /* yacc.c:1646 */ + case 415: +#line 1813 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4599,11 +4693,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4603 "util/configparser.c" /* yacc.c:1646 */ +#line 4697 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1774 "./util/configparser.y" /* yacc.c:1646 */ + case 416: +#line 1824 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4611,11 +4705,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4615 "util/configparser.c" /* yacc.c:1646 */ +#line 4709 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1783 "./util/configparser.y" /* yacc.c:1646 */ + case 417: +#line 1833 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4623,11 +4717,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4627 "util/configparser.c" /* yacc.c:1646 */ +#line 4721 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1792 "./util/configparser.y" /* yacc.c:1646 */ + case 418: +#line 1842 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4635,11 +4729,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4639 "util/configparser.c" /* yacc.c:1646 */ +#line 4733 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 1801 "./util/configparser.y" /* yacc.c:1646 */ + case 419: +#line 1851 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4647,11 +4741,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4651 "util/configparser.c" /* yacc.c:1646 */ +#line 4745 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 1810 "./util/configparser.y" /* yacc.c:1646 */ + case 420: +#line 1860 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4659,11 +4753,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4663 "util/configparser.c" /* yacc.c:1646 */ +#line 4757 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 1819 "./util/configparser.y" /* yacc.c:1646 */ + case 421: +#line 1869 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4671,11 +4765,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4675 "util/configparser.c" /* yacc.c:1646 */ +#line 4769 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 1828 "./util/configparser.y" /* yacc.c:1646 */ + case 422: +#line 1878 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4687,11 +4781,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4691 "util/configparser.c" /* yacc.c:1646 */ +#line 4785 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 1841 "./util/configparser.y" /* yacc.c:1646 */ + case 423: +#line 1891 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4703,11 +4797,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4707 "util/configparser.c" /* yacc.c:1646 */ +#line 4801 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 1854 "./util/configparser.y" /* yacc.c:1646 */ + case 424: +#line 1904 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4715,21 +4809,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4719 "util/configparser.c" /* yacc.c:1646 */ +#line 4813 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 1863 "./util/configparser.y" /* yacc.c:1646 */ + case 425: +#line 1913 "./util/configparser.y" /* yacc.c:1646 */ { 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 4729 "util/configparser.c" /* yacc.c:1646 */ +#line 4823 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 1870 "./util/configparser.y" /* yacc.c:1646 */ + case 426: +#line 1920 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4737,11 +4831,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4741 "util/configparser.c" /* yacc.c:1646 */ +#line 4835 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 1879 "./util/configparser.y" /* yacc.c:1646 */ + case 427: +#line 1929 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4749,11 +4843,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4753 "util/configparser.c" /* yacc.c:1646 */ +#line 4847 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 1888 "./util/configparser.y" /* yacc.c:1646 */ + case 428: +#line 1938 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4761,11 +4855,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4765 "util/configparser.c" /* yacc.c:1646 */ +#line 4859 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 1897 "./util/configparser.y" /* yacc.c:1646 */ + case 429: +#line 1947 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4774,22 +4868,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" /* yacc.c:1646 */ +#line 4872 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 1906 "./util/configparser.y" /* yacc.c:1646 */ + case 430: +#line 1956 "./util/configparser.y" /* yacc.c:1646 */ { 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 4789 "util/configparser.c" /* yacc.c:1646 */ +#line 4883 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 1914 "./util/configparser.y" /* yacc.c:1646 */ + case 431: +#line 1964 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4801,22 +4895,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4805 "util/configparser.c" /* yacc.c:1646 */ +#line 4899 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 1927 "./util/configparser.y" /* yacc.c:1646 */ + case 432: +#line 1977 "./util/configparser.y" /* yacc.c:1646 */ { 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 4816 "util/configparser.c" /* yacc.c:1646 */ +#line 4910 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 1935 "./util/configparser.y" /* yacc.c:1646 */ + case 433: +#line 1985 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4856,21 +4950,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4860 "util/configparser.c" /* yacc.c:1646 */ +#line 4954 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 1976 "./util/configparser.y" /* yacc.c:1646 */ + case 434: +#line 2026 "./util/configparser.y" /* yacc.c:1646 */ { 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 4870 "util/configparser.c" /* yacc.c:1646 */ +#line 4964 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 1983 "./util/configparser.y" /* yacc.c:1646 */ + case 435: +#line 2033 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4884,11 +4978,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4888 "util/configparser.c" /* yacc.c:1646 */ +#line 4982 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 1998 "./util/configparser.y" /* yacc.c:1646 */ + case 436: +#line 2048 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4897,11 +4991,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4901 "util/configparser.c" /* yacc.c:1646 */ +#line 4995 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2008 "./util/configparser.y" /* yacc.c:1646 */ + case 437: +#line 2058 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4910,41 +5004,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4914 "util/configparser.c" /* yacc.c:1646 */ +#line 5008 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2018 "./util/configparser.y" /* yacc.c:1646 */ + case 438: +#line 2068 "./util/configparser.y" /* yacc.c:1646 */ { 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 4924 "util/configparser.c" /* yacc.c:1646 */ +#line 5018 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2025 "./util/configparser.y" /* yacc.c:1646 */ + case 439: +#line 2075 "./util/configparser.y" /* yacc.c:1646 */ { 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 4934 "util/configparser.c" /* yacc.c:1646 */ +#line 5028 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2032 "./util/configparser.y" /* yacc.c:1646 */ + case 440: +#line 2082 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4944 "util/configparser.c" /* yacc.c:1646 */ +#line 5038 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2039 "./util/configparser.y" /* yacc.c:1646 */ + case 441: +#line 2089 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4952,22 +5046,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4956 "util/configparser.c" /* yacc.c:1646 */ +#line 5050 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2048 "./util/configparser.y" /* yacc.c:1646 */ + case 442: +#line 2098 "./util/configparser.y" /* yacc.c:1646 */ { 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 4967 "util/configparser.c" /* yacc.c:1646 */ +#line 5061 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2056 "./util/configparser.y" /* yacc.c:1646 */ + case 443: +#line 2106 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4980,11 +5074,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4984 "util/configparser.c" /* yacc.c:1646 */ +#line 5078 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2070 "./util/configparser.y" /* yacc.c:1646 */ + case 444: +#line 2120 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5004,11 +5098,11 @@ yyreduce: } } } -#line 5008 "util/configparser.c" /* yacc.c:1646 */ +#line 5102 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2091 "./util/configparser.y" /* yacc.c:1646 */ + case 445: +#line 2141 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5028,11 +5122,11 @@ yyreduce: } } } -#line 5032 "util/configparser.c" /* yacc.c:1646 */ +#line 5126 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2112 "./util/configparser.y" /* yacc.c:1646 */ + case 446: +#line 2162 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5043,11 +5137,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5047 "util/configparser.c" /* yacc.c:1646 */ +#line 5141 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2124 "./util/configparser.y" /* yacc.c:1646 */ + case 447: +#line 2174 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5058,11 +5152,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5062 "util/configparser.c" /* yacc.c:1646 */ +#line 5156 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2136 "./util/configparser.y" /* yacc.c:1646 */ + case 448: +#line 2186 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5073,11 +5167,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5077 "util/configparser.c" /* yacc.c:1646 */ +#line 5171 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2148 "./util/configparser.y" /* yacc.c:1646 */ + case 449: +#line 2198 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5085,11 +5179,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5089 "util/configparser.c" /* yacc.c:1646 */ +#line 5183 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2157 "./util/configparser.y" /* yacc.c:1646 */ + case 450: +#line 2207 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5109,11 +5203,11 @@ yyreduce: } } } -#line 5113 "util/configparser.c" /* yacc.c:1646 */ +#line 5207 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2178 "./util/configparser.y" /* yacc.c:1646 */ + case 451: +#line 2228 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5121,11 +5215,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5125 "util/configparser.c" /* yacc.c:1646 */ +#line 5219 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2188 "./util/configparser.y" /* yacc.c:1646 */ + case 452: +#line 2238 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5133,33 +5227,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5137 "util/configparser.c" /* yacc.c:1646 */ +#line 5231 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2197 "./util/configparser.y" /* yacc.c:1646 */ + case 453: +#line 2247 "./util/configparser.y" /* yacc.c:1646 */ { 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 5148 "util/configparser.c" /* yacc.c:1646 */ +#line 5242 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2205 "./util/configparser.y" /* yacc.c:1646 */ + case 454: +#line 2255 "./util/configparser.y" /* yacc.c:1646 */ { 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 5159 "util/configparser.c" /* yacc.c:1646 */ +#line 5253 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2213 "./util/configparser.y" /* yacc.c:1646 */ + case 455: +#line 2263 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5171,11 +5265,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5175 "util/configparser.c" /* yacc.c:1646 */ +#line 5269 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2226 "./util/configparser.y" /* yacc.c:1646 */ + case 456: +#line 2276 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5187,11 +5281,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5191 "util/configparser.c" /* yacc.c:1646 */ +#line 5285 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2239 "./util/configparser.y" /* yacc.c:1646 */ + case 457: +#line 2289 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5205,11 +5299,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5209 "util/configparser.c" /* yacc.c:1646 */ +#line 5303 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2254 "./util/configparser.y" /* yacc.c:1646 */ + case 458: +#line 2304 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5223,11 +5317,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5227 "util/configparser.c" /* yacc.c:1646 */ +#line 5321 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2269 "./util/configparser.y" /* yacc.c:1646 */ + case 459: +#line 2319 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5235,11 +5329,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5239 "util/configparser.c" /* yacc.c:1646 */ +#line 5333 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2278 "./util/configparser.y" /* yacc.c:1646 */ + case 460: +#line 2328 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5247,20 +5341,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" /* yacc.c:1646 */ +#line 5345 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2287 "./util/configparser.y" /* yacc.c:1646 */ + case 461: +#line 2337 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5260 "util/configparser.c" /* yacc.c:1646 */ +#line 5354 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2293 "./util/configparser.y" /* yacc.c:1646 */ + case 462: +#line 2343 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5268,11 +5362,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5272 "util/configparser.c" /* yacc.c:1646 */ +#line 5366 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2302 "./util/configparser.y" /* yacc.c:1646 */ + case 463: +#line 2352 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5280,11 +5374,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5284 "util/configparser.c" /* yacc.c:1646 */ +#line 5378 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2311 "./util/configparser.y" /* yacc.c:1646 */ + case 464: +#line 2361 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5293,11 +5387,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5297 "util/configparser.c" /* yacc.c:1646 */ +#line 5391 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2321 "./util/configparser.y" /* yacc.c:1646 */ + case 465: +#line 2371 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5306,11 +5400,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5310 "util/configparser.c" /* yacc.c:1646 */ +#line 5404 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2331 "./util/configparser.y" /* yacc.c:1646 */ + case 466: +#line 2381 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5322,11 +5416,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5326 "util/configparser.c" /* yacc.c:1646 */ +#line 5420 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2344 "./util/configparser.y" /* yacc.c:1646 */ + case 467: +#line 2394 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5338,11 +5432,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5342 "util/configparser.c" /* yacc.c:1646 */ +#line 5436 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2357 "./util/configparser.y" /* yacc.c:1646 */ + case 468: +#line 2407 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5353,11 +5447,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5357 "util/configparser.c" /* yacc.c:1646 */ +#line 5451 "util/configparser.c" /* yacc.c:1646 */ break; - case 459: -#line 2369 "./util/configparser.y" /* yacc.c:1646 */ + case 469: +#line 2419 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5370,11 +5464,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5374 "util/configparser.c" /* yacc.c:1646 */ +#line 5468 "util/configparser.c" /* yacc.c:1646 */ break; - case 460: -#line 2383 "./util/configparser.y" /* yacc.c:1646 */ + case 470: +#line 2433 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5385,11 +5479,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5389 "util/configparser.c" /* yacc.c:1646 */ +#line 5483 "util/configparser.c" /* yacc.c:1646 */ break; - case 461: -#line 2395 "./util/configparser.y" /* yacc.c:1646 */ + case 471: +#line 2445 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5402,11 +5496,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5406 "util/configparser.c" /* yacc.c:1646 */ +#line 5500 "util/configparser.c" /* yacc.c:1646 */ break; - case 462: -#line 2409 "./util/configparser.y" /* yacc.c:1646 */ + case 472: +#line 2459 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5415,31 +5509,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5419 "util/configparser.c" /* yacc.c:1646 */ +#line 5513 "util/configparser.c" /* yacc.c:1646 */ break; - case 463: -#line 2419 "./util/configparser.y" /* yacc.c:1646 */ + case 473: +#line 2469 "./util/configparser.y" /* yacc.c:1646 */ { 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 5429 "util/configparser.c" /* yacc.c:1646 */ +#line 5523 "util/configparser.c" /* yacc.c:1646 */ break; - case 464: -#line 2426 "./util/configparser.y" /* yacc.c:1646 */ + case 474: +#line 2476 "./util/configparser.y" /* yacc.c:1646 */ { 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 5439 "util/configparser.c" /* yacc.c:1646 */ +#line 5533 "util/configparser.c" /* yacc.c:1646 */ break; - case 465: -#line 2433 "./util/configparser.y" /* yacc.c:1646 */ + case 475: +#line 2483 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5447,11 +5541,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5451 "util/configparser.c" /* yacc.c:1646 */ +#line 5545 "util/configparser.c" /* yacc.c:1646 */ break; - case 466: -#line 2442 "./util/configparser.y" /* yacc.c:1646 */ + case 476: +#line 2492 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5459,11 +5553,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5463 "util/configparser.c" /* yacc.c:1646 */ +#line 5557 "util/configparser.c" /* yacc.c:1646 */ break; - case 467: -#line 2451 "./util/configparser.y" /* yacc.c:1646 */ + case 477: +#line 2501 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5472,11 +5566,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5476 "util/configparser.c" /* yacc.c:1646 */ +#line 5570 "util/configparser.c" /* yacc.c:1646 */ break; - case 468: -#line 2461 "./util/configparser.y" /* yacc.c:1646 */ + case 478: +#line 2511 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5485,11 +5579,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5489 "util/configparser.c" /* yacc.c:1646 */ +#line 5583 "util/configparser.c" /* yacc.c:1646 */ break; - case 469: -#line 2471 "./util/configparser.y" /* yacc.c:1646 */ + case 479: +#line 2521 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5498,31 +5592,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5502 "util/configparser.c" /* yacc.c:1646 */ +#line 5596 "util/configparser.c" /* yacc.c:1646 */ break; - case 470: -#line 2481 "./util/configparser.y" /* yacc.c:1646 */ + case 480: +#line 2531 "./util/configparser.y" /* yacc.c:1646 */ { 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 5512 "util/configparser.c" /* yacc.c:1646 */ +#line 5606 "util/configparser.c" /* yacc.c:1646 */ break; - case 471: -#line 2488 "./util/configparser.y" /* yacc.c:1646 */ + case 481: +#line 2538 "./util/configparser.y" /* yacc.c:1646 */ { 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 5522 "util/configparser.c" /* yacc.c:1646 */ +#line 5616 "util/configparser.c" /* yacc.c:1646 */ break; - case 472: -#line 2495 "./util/configparser.y" /* yacc.c:1646 */ + case 482: +#line 2545 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5530,11 +5624,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5534 "util/configparser.c" /* yacc.c:1646 */ +#line 5628 "util/configparser.c" /* yacc.c:1646 */ break; - case 473: -#line 2504 "./util/configparser.y" /* yacc.c:1646 */ + case 483: +#line 2554 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5542,11 +5636,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5546 "util/configparser.c" /* yacc.c:1646 */ +#line 5640 "util/configparser.c" /* yacc.c:1646 */ break; - case 474: -#line 2513 "./util/configparser.y" /* yacc.c:1646 */ + case 484: +#line 2563 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5555,11 +5649,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5559 "util/configparser.c" /* yacc.c:1646 */ +#line 5653 "util/configparser.c" /* yacc.c:1646 */ break; - case 475: -#line 2523 "./util/configparser.y" /* yacc.c:1646 */ + case 485: +#line 2573 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5568,52 +5662,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5572 "util/configparser.c" /* yacc.c:1646 */ +#line 5666 "util/configparser.c" /* yacc.c:1646 */ break; - case 476: -#line 2533 "./util/configparser.y" /* yacc.c:1646 */ + case 486: +#line 2583 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5582 "util/configparser.c" /* yacc.c:1646 */ +#line 5676 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2540 "./util/configparser.y" /* yacc.c:1646 */ + case 487: +#line 2590 "./util/configparser.y" /* yacc.c:1646 */ { 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 5592 "util/configparser.c" /* yacc.c:1646 */ +#line 5686 "util/configparser.c" /* yacc.c:1646 */ break; - case 478: -#line 2547 "./util/configparser.y" /* yacc.c:1646 */ + case 488: +#line 2597 "./util/configparser.y" /* yacc.c:1646 */ { 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 5602 "util/configparser.c" /* yacc.c:1646 */ +#line 5696 "util/configparser.c" /* yacc.c:1646 */ break; - case 479: -#line 2554 "./util/configparser.y" /* yacc.c:1646 */ + case 489: +#line 2604 "./util/configparser.y" /* yacc.c:1646 */ { 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 5613 "util/configparser.c" /* yacc.c:1646 */ +#line 5707 "util/configparser.c" /* yacc.c:1646 */ break; - case 480: -#line 2562 "./util/configparser.y" /* yacc.c:1646 */ + case 490: +#line 2612 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5622,11 +5716,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" /* yacc.c:1646 */ +#line 5720 "util/configparser.c" /* yacc.c:1646 */ break; - case 481: -#line 2572 "./util/configparser.y" /* yacc.c:1646 */ + case 491: +#line 2622 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5635,11 +5729,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5639 "util/configparser.c" /* yacc.c:1646 */ +#line 5733 "util/configparser.c" /* yacc.c:1646 */ break; - case 482: -#line 2582 "./util/configparser.y" /* yacc.c:1646 */ + case 492: +#line 2632 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5648,11 +5742,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5652 "util/configparser.c" /* yacc.c:1646 */ +#line 5746 "util/configparser.c" /* yacc.c:1646 */ break; - case 483: -#line 2592 "./util/configparser.y" /* yacc.c:1646 */ + case 493: +#line 2642 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5661,11 +5755,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5665 "util/configparser.c" /* yacc.c:1646 */ +#line 5759 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2602 "./util/configparser.y" /* yacc.c:1646 */ + case 494: +#line 2652 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -5703,11 +5797,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5707 "util/configparser.c" /* yacc.c:1646 */ +#line 5801 "util/configparser.c" /* yacc.c:1646 */ break; - case 485: -#line 2641 "./util/configparser.y" /* yacc.c:1646 */ + case 495: +#line 2691 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5716,33 +5810,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5720 "util/configparser.c" /* yacc.c:1646 */ +#line 5814 "util/configparser.c" /* yacc.c:1646 */ break; - case 486: -#line 2651 "./util/configparser.y" /* yacc.c:1646 */ + case 496: +#line 2701 "./util/configparser.y" /* yacc.c:1646 */ { 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 5731 "util/configparser.c" /* yacc.c:1646 */ +#line 5825 "util/configparser.c" /* yacc.c:1646 */ break; - case 487: -#line 2659 "./util/configparser.y" /* yacc.c:1646 */ + case 497: +#line 2709 "./util/configparser.y" /* yacc.c:1646 */ { 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 5742 "util/configparser.c" /* yacc.c:1646 */ +#line 5836 "util/configparser.c" /* yacc.c:1646 */ break; - case 488: -#line 2667 "./util/configparser.y" /* yacc.c:1646 */ + case 498: +#line 2717 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5756,11 +5850,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5760 "util/configparser.c" /* yacc.c:1646 */ +#line 5854 "util/configparser.c" /* yacc.c:1646 */ break; - case 489: -#line 2682 "./util/configparser.y" /* yacc.c:1646 */ + case 499: +#line 2732 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5768,19 +5862,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5772 "util/configparser.c" /* yacc.c:1646 */ +#line 5866 "util/configparser.c" /* yacc.c:1646 */ break; - case 490: -#line 2691 "./util/configparser.y" /* yacc.c:1646 */ + case 500: +#line 2741 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5780 "util/configparser.c" /* yacc.c:1646 */ +#line 5874 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2702 "./util/configparser.y" /* yacc.c:1646 */ + case 511: +#line 2752 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5789,11 +5883,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" /* yacc.c:1646 */ +#line 5887 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2712 "./util/configparser.y" /* yacc.c:1646 */ + case 512: +#line 2762 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5801,79 +5895,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5805 "util/configparser.c" /* yacc.c:1646 */ +#line 5899 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2721 "./util/configparser.y" /* yacc.c:1646 */ + case 513: +#line 2771 "./util/configparser.y" /* yacc.c:1646 */ { 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 5815 "util/configparser.c" /* yacc.c:1646 */ +#line 5909 "util/configparser.c" /* yacc.c:1646 */ break; - case 504: -#line 2728 "./util/configparser.y" /* yacc.c:1646 */ + case 514: +#line 2778 "./util/configparser.y" /* yacc.c:1646 */ { 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 5825 "util/configparser.c" /* yacc.c:1646 */ +#line 5919 "util/configparser.c" /* yacc.c:1646 */ break; - case 505: -#line 2735 "./util/configparser.y" /* yacc.c:1646 */ + case 515: +#line 2785 "./util/configparser.y" /* yacc.c:1646 */ { 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 5835 "util/configparser.c" /* yacc.c:1646 */ +#line 5929 "util/configparser.c" /* yacc.c:1646 */ break; - case 506: -#line 2742 "./util/configparser.y" /* yacc.c:1646 */ + case 516: +#line 2792 "./util/configparser.y" /* yacc.c:1646 */ { 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 5845 "util/configparser.c" /* yacc.c:1646 */ +#line 5939 "util/configparser.c" /* yacc.c:1646 */ break; - case 507: -#line 2749 "./util/configparser.y" /* yacc.c:1646 */ + case 517: +#line 2799 "./util/configparser.y" /* yacc.c:1646 */ { 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 5855 "util/configparser.c" /* yacc.c:1646 */ +#line 5949 "util/configparser.c" /* yacc.c:1646 */ break; - case 508: -#line 2756 "./util/configparser.y" /* yacc.c:1646 */ + case 518: +#line 2806 "./util/configparser.y" /* yacc.c:1646 */ { 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 5865 "util/configparser.c" /* yacc.c:1646 */ +#line 5959 "util/configparser.c" /* yacc.c:1646 */ break; - case 509: -#line 2763 "./util/configparser.y" /* yacc.c:1646 */ + case 519: +#line 2813 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5873 "util/configparser.c" /* yacc.c:1646 */ +#line 5967 "util/configparser.c" /* yacc.c:1646 */ break; - case 530: -#line 2783 "./util/configparser.y" /* yacc.c:1646 */ + case 540: +#line 2833 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5881,31 +5975,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" /* yacc.c:1646 */ +#line 5979 "util/configparser.c" /* yacc.c:1646 */ break; - case 531: -#line 2792 "./util/configparser.y" /* yacc.c:1646 */ + case 541: +#line 2842 "./util/configparser.y" /* yacc.c:1646 */ { 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 5895 "util/configparser.c" /* yacc.c:1646 */ +#line 5989 "util/configparser.c" /* yacc.c:1646 */ break; - case 532: -#line 2799 "./util/configparser.y" /* yacc.c:1646 */ + case 542: +#line 2849 "./util/configparser.y" /* yacc.c:1646 */ { 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 5905 "util/configparser.c" /* yacc.c:1646 */ +#line 5999 "util/configparser.c" /* yacc.c:1646 */ break; - case 533: -#line 2806 "./util/configparser.y" /* yacc.c:1646 */ + case 543: +#line 2856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5913,51 +6007,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5917 "util/configparser.c" /* yacc.c:1646 */ +#line 6011 "util/configparser.c" /* yacc.c:1646 */ break; - case 534: -#line 2815 "./util/configparser.y" /* yacc.c:1646 */ + case 544: +#line 2865 "./util/configparser.y" /* yacc.c:1646 */ { 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 5927 "util/configparser.c" /* yacc.c:1646 */ +#line 6021 "util/configparser.c" /* yacc.c:1646 */ break; - case 535: -#line 2822 "./util/configparser.y" /* yacc.c:1646 */ + case 545: +#line 2872 "./util/configparser.y" /* yacc.c:1646 */ { 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 5937 "util/configparser.c" /* yacc.c:1646 */ +#line 6031 "util/configparser.c" /* yacc.c:1646 */ break; - case 536: -#line 2829 "./util/configparser.y" /* yacc.c:1646 */ + case 546: +#line 2879 "./util/configparser.y" /* yacc.c:1646 */ { 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 5947 "util/configparser.c" /* yacc.c:1646 */ +#line 6041 "util/configparser.c" /* yacc.c:1646 */ break; - case 537: -#line 2836 "./util/configparser.y" /* yacc.c:1646 */ + case 547: +#line 2886 "./util/configparser.y" /* yacc.c:1646 */ { 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 5957 "util/configparser.c" /* yacc.c:1646 */ +#line 6051 "util/configparser.c" /* yacc.c:1646 */ break; - case 538: -#line 2843 "./util/configparser.y" /* yacc.c:1646 */ + case 548: +#line 2893 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5965,11 +6059,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5969 "util/configparser.c" /* yacc.c:1646 */ +#line 6063 "util/configparser.c" /* yacc.c:1646 */ break; - case 539: -#line 2852 "./util/configparser.y" /* yacc.c:1646 */ + case 549: +#line 2902 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5977,31 +6071,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5981 "util/configparser.c" /* yacc.c:1646 */ +#line 6075 "util/configparser.c" /* yacc.c:1646 */ break; - case 540: -#line 2861 "./util/configparser.y" /* yacc.c:1646 */ + case 550: +#line 2911 "./util/configparser.y" /* yacc.c:1646 */ { 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 5991 "util/configparser.c" /* yacc.c:1646 */ +#line 6085 "util/configparser.c" /* yacc.c:1646 */ break; - case 541: -#line 2868 "./util/configparser.y" /* yacc.c:1646 */ + case 551: +#line 2918 "./util/configparser.y" /* yacc.c:1646 */ { 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 6001 "util/configparser.c" /* yacc.c:1646 */ +#line 6095 "util/configparser.c" /* yacc.c:1646 */ break; - case 542: -#line 2875 "./util/configparser.y" /* yacc.c:1646 */ + case 552: +#line 2925 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6010,11 +6104,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6014 "util/configparser.c" /* yacc.c:1646 */ +#line 6108 "util/configparser.c" /* yacc.c:1646 */ break; - case 543: -#line 2885 "./util/configparser.y" /* yacc.c:1646 */ + case 553: +#line 2935 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6023,11 +6117,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6027 "util/configparser.c" /* yacc.c:1646 */ +#line 6121 "util/configparser.c" /* yacc.c:1646 */ break; - case 544: -#line 2895 "./util/configparser.y" /* yacc.c:1646 */ + case 554: +#line 2945 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6036,11 +6130,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6040 "util/configparser.c" /* yacc.c:1646 */ +#line 6134 "util/configparser.c" /* yacc.c:1646 */ break; - case 545: -#line 2905 "./util/configparser.y" /* yacc.c:1646 */ + case 555: +#line 2955 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6049,11 +6143,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6053 "util/configparser.c" /* yacc.c:1646 */ +#line 6147 "util/configparser.c" /* yacc.c:1646 */ break; - case 546: -#line 2915 "./util/configparser.y" /* yacc.c:1646 */ + case 556: +#line 2965 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6062,11 +6156,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6066 "util/configparser.c" /* yacc.c:1646 */ +#line 6160 "util/configparser.c" /* yacc.c:1646 */ break; - case 547: -#line 2925 "./util/configparser.y" /* yacc.c:1646 */ + case 557: +#line 2975 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6075,29 +6169,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6079 "util/configparser.c" /* yacc.c:1646 */ +#line 6173 "util/configparser.c" /* yacc.c:1646 */ break; - case 548: -#line 2935 "./util/configparser.y" /* yacc.c:1646 */ + case 558: +#line 2985 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 6087 "util/configparser.c" /* yacc.c:1646 */ +#line 6181 "util/configparser.c" /* yacc.c:1646 */ break; - case 552: -#line 2944 "./util/configparser.y" /* yacc.c:1646 */ + case 562: +#line 2994 "./util/configparser.y" /* yacc.c:1646 */ { 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 6097 "util/configparser.c" /* yacc.c:1646 */ +#line 6191 "util/configparser.c" /* yacc.c:1646 */ break; - case 553: -#line 2950 "./util/configparser.y" /* yacc.c:1646 */ + case 563: +#line 3000 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6106,21 +6200,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6110 "util/configparser.c" /* yacc.c:1646 */ +#line 6204 "util/configparser.c" /* yacc.c:1646 */ break; - case 554: -#line 2960 "./util/configparser.y" /* yacc.c:1646 */ + case 564: +#line 3010 "./util/configparser.y" /* yacc.c:1646 */ { 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 6120 "util/configparser.c" /* yacc.c:1646 */ +#line 6214 "util/configparser.c" /* yacc.c:1646 */ break; - case 555: -#line 2967 "./util/configparser.y" /* yacc.c:1646 */ + case 565: +#line 3017 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6128,30 +6222,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6132 "util/configparser.c" /* yacc.c:1646 */ +#line 6226 "util/configparser.c" /* yacc.c:1646 */ break; - case 556: -#line 2976 "./util/configparser.y" /* yacc.c:1646 */ + case 566: +#line 3026 "./util/configparser.y" /* yacc.c:1646 */ { 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 6143 "util/configparser.c" /* yacc.c:1646 */ +#line 6237 "util/configparser.c" /* yacc.c:1646 */ break; - case 557: -#line 2984 "./util/configparser.y" /* yacc.c:1646 */ + case 567: +#line 3034 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6151 "util/configparser.c" /* yacc.c:1646 */ +#line 6245 "util/configparser.c" /* yacc.c:1646 */ break; - case 570: -#line 3000 "./util/configparser.y" /* yacc.c:1646 */ + case 580: +#line 3050 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6159,11 +6253,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6163 "util/configparser.c" /* yacc.c:1646 */ +#line 6257 "util/configparser.c" /* yacc.c:1646 */ break; - case 571: -#line 3010 "./util/configparser.y" /* yacc.c:1646 */ + case 581: +#line 3060 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6171,21 +6265,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6175 "util/configparser.c" /* yacc.c:1646 */ +#line 6269 "util/configparser.c" /* yacc.c:1646 */ break; - case 572: -#line 3019 "./util/configparser.y" /* yacc.c:1646 */ + case 582: +#line 3069 "./util/configparser.y" /* yacc.c:1646 */ { 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 6185 "util/configparser.c" /* yacc.c:1646 */ +#line 6279 "util/configparser.c" /* yacc.c:1646 */ break; - case 573: -#line 3026 "./util/configparser.y" /* yacc.c:1646 */ + case 583: +#line 3076 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6193,21 +6287,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 6197 "util/configparser.c" /* yacc.c:1646 */ +#line 6291 "util/configparser.c" /* yacc.c:1646 */ break; - case 574: -#line 3035 "./util/configparser.y" /* yacc.c:1646 */ + case 584: +#line 3085 "./util/configparser.y" /* yacc.c:1646 */ { 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 6207 "util/configparser.c" /* yacc.c:1646 */ +#line 6301 "util/configparser.c" /* yacc.c:1646 */ break; - case 575: -#line 3042 "./util/configparser.y" /* yacc.c:1646 */ + case 585: +#line 3092 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6215,22 +6309,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 6219 "util/configparser.c" /* yacc.c:1646 */ +#line 6313 "util/configparser.c" /* yacc.c:1646 */ break; - case 576: -#line 3051 "./util/configparser.y" /* yacc.c:1646 */ + case 586: +#line 3101 "./util/configparser.y" /* yacc.c:1646 */ { 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 6230 "util/configparser.c" /* yacc.c:1646 */ +#line 6324 "util/configparser.c" /* yacc.c:1646 */ break; - case 577: -#line 3059 "./util/configparser.y" /* yacc.c:1646 */ + case 587: +#line 3109 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6242,22 +6336,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" /* yacc.c:1646 */ +#line 6340 "util/configparser.c" /* yacc.c:1646 */ break; - case 578: -#line 3072 "./util/configparser.y" /* yacc.c:1646 */ + case 588: +#line 3122 "./util/configparser.y" /* yacc.c:1646 */ { 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 6257 "util/configparser.c" /* yacc.c:1646 */ +#line 6351 "util/configparser.c" /* yacc.c:1646 */ break; - case 579: -#line 3080 "./util/configparser.y" /* yacc.c:1646 */ + case 589: +#line 3130 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6269,19 +6363,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" /* yacc.c:1646 */ +#line 6367 "util/configparser.c" /* yacc.c:1646 */ break; - case 580: -#line 3093 "./util/configparser.y" /* yacc.c:1646 */ + case 590: +#line 3143 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 6281 "util/configparser.c" /* yacc.c:1646 */ +#line 6375 "util/configparser.c" /* yacc.c:1646 */ break; - case 589: -#line 3104 "./util/configparser.y" /* yacc.c:1646 */ + case 599: +#line 3154 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6292,11 +6386,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6296 "util/configparser.c" /* yacc.c:1646 */ +#line 6390 "util/configparser.c" /* yacc.c:1646 */ break; - case 590: -#line 3116 "./util/configparser.y" /* yacc.c:1646 */ + case 600: +#line 3166 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6307,11 +6401,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6311 "util/configparser.c" /* yacc.c:1646 */ +#line 6405 "util/configparser.c" /* yacc.c:1646 */ break; - case 591: -#line 3128 "./util/configparser.y" /* yacc.c:1646 */ + case 601: +#line 3178 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6322,11 +6416,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6326 "util/configparser.c" /* yacc.c:1646 */ +#line 6420 "util/configparser.c" /* yacc.c:1646 */ break; - case 592: -#line 3140 "./util/configparser.y" /* yacc.c:1646 */ + case 602: +#line 3190 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6340,11 +6434,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6344 "util/configparser.c" /* yacc.c:1646 */ +#line 6438 "util/configparser.c" /* yacc.c:1646 */ break; - case 593: -#line 3155 "./util/configparser.y" /* yacc.c:1646 */ + case 603: +#line 3205 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6356,11 +6450,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6360 "util/configparser.c" /* yacc.c:1646 */ +#line 6454 "util/configparser.c" /* yacc.c:1646 */ break; - case 594: -#line 3168 "./util/configparser.y" /* yacc.c:1646 */ + case 604: +#line 3218 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6372,11 +6466,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" /* yacc.c:1646 */ +#line 6470 "util/configparser.c" /* yacc.c:1646 */ break; - case 595: -#line 3181 "./util/configparser.y" /* yacc.c:1646 */ + case 605: +#line 3231 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6386,19 +6480,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6390 "util/configparser.c" /* yacc.c:1646 */ +#line 6484 "util/configparser.c" /* yacc.c:1646 */ break; - case 596: -#line 3192 "./util/configparser.y" /* yacc.c:1646 */ + case 606: +#line 3242 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6398 "util/configparser.c" /* yacc.c:1646 */ +#line 6492 "util/configparser.c" /* yacc.c:1646 */ break; - case 601: -#line 3201 "./util/configparser.y" /* yacc.c:1646 */ + case 611: +#line 3251 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6412,11 +6506,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6416 "util/configparser.c" /* yacc.c:1646 */ +#line 6510 "util/configparser.c" /* yacc.c:1646 */ break; - case 602: -#line 3216 "./util/configparser.y" /* yacc.c:1646 */ + case 612: +#line 3266 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6430,11 +6524,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6434 "util/configparser.c" /* yacc.c:1646 */ +#line 6528 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6438 "util/configparser.c" /* yacc.c:1646 */ +#line 6532 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6662,7 +6756,7 @@ yyreturn: #endif return yyresult; } -#line 3230 "./util/configparser.y" /* yacc.c:1906 */ +#line 3280 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 9b2d0f424..cbfd68ca5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -184,153 +184,158 @@ extern int yydebug; VAR_FORWARD_SSL_UPSTREAM = 394, VAR_TLS_CERT_BUNDLE = 395, VAR_HTTPS_PORT = 396, - VAR_STUB_FIRST = 397, - VAR_MINIMAL_RESPONSES = 398, - VAR_RRSET_ROUNDROBIN = 399, - VAR_MAX_UDP_SIZE = 400, - VAR_DELAY_CLOSE = 401, - VAR_UNBLOCK_LAN_ZONES = 402, - VAR_INSECURE_LAN_ZONES = 403, - VAR_INFRA_CACHE_MIN_RTT = 404, - VAR_DNS64_PREFIX = 405, - VAR_DNS64_SYNTHALL = 406, - VAR_DNS64_IGNORE_AAAA = 407, - VAR_DNSTAP = 408, - VAR_DNSTAP_ENABLE = 409, - VAR_DNSTAP_SOCKET_PATH = 410, - VAR_DNSTAP_IP = 411, - VAR_DNSTAP_TLS = 412, - VAR_DNSTAP_TLS_SERVER_NAME = 413, - VAR_DNSTAP_TLS_CERT_BUNDLE = 414, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, - VAR_DNSTAP_SEND_IDENTITY = 417, - VAR_DNSTAP_SEND_VERSION = 418, - VAR_DNSTAP_IDENTITY = 419, - VAR_DNSTAP_VERSION = 420, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, - VAR_RESPONSE_IP_TAG = 427, - VAR_RESPONSE_IP = 428, - VAR_RESPONSE_IP_DATA = 429, - VAR_HARDEN_ALGO_DOWNGRADE = 430, - VAR_IP_TRANSPARENT = 431, - VAR_IP_DSCP = 432, - VAR_DISABLE_DNSSEC_LAME_CHECK = 433, - VAR_IP_RATELIMIT = 434, - VAR_IP_RATELIMIT_SLABS = 435, - VAR_IP_RATELIMIT_SIZE = 436, - VAR_RATELIMIT = 437, - VAR_RATELIMIT_SLABS = 438, - VAR_RATELIMIT_SIZE = 439, - VAR_RATELIMIT_FOR_DOMAIN = 440, - VAR_RATELIMIT_BELOW_DOMAIN = 441, - VAR_IP_RATELIMIT_FACTOR = 442, - VAR_RATELIMIT_FACTOR = 443, - VAR_SEND_CLIENT_SUBNET = 444, - VAR_CLIENT_SUBNET_ZONE = 445, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, - VAR_CLIENT_SUBNET_OPCODE = 447, - VAR_MAX_CLIENT_SUBNET_IPV4 = 448, - VAR_MAX_CLIENT_SUBNET_IPV6 = 449, - VAR_MIN_CLIENT_SUBNET_IPV4 = 450, - VAR_MIN_CLIENT_SUBNET_IPV6 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, - VAR_CAPS_WHITELIST = 454, - VAR_CACHE_MAX_NEGATIVE_TTL = 455, - VAR_PERMIT_SMALL_HOLDDOWN = 456, - VAR_QNAME_MINIMISATION = 457, - VAR_QNAME_MINIMISATION_STRICT = 458, - VAR_IP_FREEBIND = 459, - VAR_DEFINE_TAG = 460, - VAR_LOCAL_ZONE_TAG = 461, - VAR_ACCESS_CONTROL_TAG = 462, - VAR_LOCAL_ZONE_OVERRIDE = 463, - VAR_ACCESS_CONTROL_TAG_ACTION = 464, - VAR_ACCESS_CONTROL_TAG_DATA = 465, - VAR_VIEW = 466, - VAR_ACCESS_CONTROL_VIEW = 467, - VAR_VIEW_FIRST = 468, - VAR_SERVE_EXPIRED = 469, - VAR_SERVE_EXPIRED_TTL = 470, - VAR_SERVE_EXPIRED_TTL_RESET = 471, - VAR_SERVE_EXPIRED_REPLY_TTL = 472, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, - VAR_FAKE_DSA = 474, - VAR_FAKE_SHA1 = 475, - VAR_LOG_IDENTITY = 476, - VAR_HIDE_TRUSTANCHOR = 477, - VAR_TRUST_ANCHOR_SIGNALING = 478, - VAR_AGGRESSIVE_NSEC = 479, - VAR_USE_SYSTEMD = 480, - VAR_SHM_ENABLE = 481, - VAR_SHM_KEY = 482, - VAR_ROOT_KEY_SENTINEL = 483, - VAR_DNSCRYPT = 484, - VAR_DNSCRYPT_ENABLE = 485, - VAR_DNSCRYPT_PORT = 486, - VAR_DNSCRYPT_PROVIDER = 487, - VAR_DNSCRYPT_SECRET_KEY = 488, - VAR_DNSCRYPT_PROVIDER_CERT = 489, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, - VAR_IPSECMOD_ENABLED = 495, - VAR_IPSECMOD_HOOK = 496, - VAR_IPSECMOD_IGNORE_BOGUS = 497, - VAR_IPSECMOD_MAX_TTL = 498, - VAR_IPSECMOD_WHITELIST = 499, - VAR_IPSECMOD_STRICT = 500, - VAR_CACHEDB = 501, - VAR_CACHEDB_BACKEND = 502, - VAR_CACHEDB_SECRETSEED = 503, - VAR_CACHEDB_REDISHOST = 504, - VAR_CACHEDB_REDISPORT = 505, - VAR_CACHEDB_REDISTIMEOUT = 506, - VAR_CACHEDB_REDISEXPIRERECORDS = 507, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, - VAR_FOR_UPSTREAM = 509, - VAR_AUTH_ZONE = 510, - VAR_ZONEFILE = 511, - VAR_MASTER = 512, - VAR_URL = 513, - VAR_FOR_DOWNSTREAM = 514, - VAR_FALLBACK_ENABLED = 515, - VAR_TLS_ADDITIONAL_PORT = 516, - VAR_LOW_RTT = 517, - VAR_LOW_RTT_PERMIL = 518, - VAR_FAST_SERVER_PERMIL = 519, - VAR_FAST_SERVER_NUM = 520, - VAR_ALLOW_NOTIFY = 521, - VAR_TLS_WIN_CERT = 522, - VAR_TCP_CONNECTION_LIMIT = 523, - VAR_FORWARD_NO_CACHE = 524, - VAR_STUB_NO_CACHE = 525, - VAR_LOG_SERVFAIL = 526, - VAR_DENY_ANY = 527, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, - VAR_LOG_TAG_QUERYREPLY = 529, - VAR_STREAM_WAIT_SIZE = 530, - VAR_TLS_CIPHERS = 531, - VAR_TLS_CIPHERSUITES = 532, - VAR_TLS_USE_SNI = 533, - VAR_IPSET = 534, - VAR_IPSET_NAME_V4 = 535, - VAR_IPSET_NAME_V6 = 536, - VAR_TLS_SESSION_TICKET_KEYS = 537, - VAR_RPZ = 538, - VAR_TAGS = 539, - VAR_RPZ_ACTION_OVERRIDE = 540, - VAR_RPZ_CNAME_OVERRIDE = 541, - VAR_RPZ_LOG = 542, - VAR_RPZ_LOG_NAME = 543 + VAR_HTTP_ENDPOINT = 397, + VAR_HTTP_MAX_STREAMS = 398, + VAR_HTTP_QUERY_BUFFER_SIZE = 399, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 400, + VAR_HTTP_NODELAY = 401, + VAR_STUB_FIRST = 402, + VAR_MINIMAL_RESPONSES = 403, + VAR_RRSET_ROUNDROBIN = 404, + VAR_MAX_UDP_SIZE = 405, + VAR_DELAY_CLOSE = 406, + VAR_UNBLOCK_LAN_ZONES = 407, + VAR_INSECURE_LAN_ZONES = 408, + VAR_INFRA_CACHE_MIN_RTT = 409, + VAR_DNS64_PREFIX = 410, + VAR_DNS64_SYNTHALL = 411, + VAR_DNS64_IGNORE_AAAA = 412, + VAR_DNSTAP = 413, + VAR_DNSTAP_ENABLE = 414, + VAR_DNSTAP_SOCKET_PATH = 415, + VAR_DNSTAP_IP = 416, + VAR_DNSTAP_TLS = 417, + VAR_DNSTAP_TLS_SERVER_NAME = 418, + VAR_DNSTAP_TLS_CERT_BUNDLE = 419, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 420, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 421, + VAR_DNSTAP_SEND_IDENTITY = 422, + VAR_DNSTAP_SEND_VERSION = 423, + VAR_DNSTAP_IDENTITY = 424, + VAR_DNSTAP_VERSION = 425, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 426, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 427, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 428, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 429, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 430, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 431, + VAR_RESPONSE_IP_TAG = 432, + VAR_RESPONSE_IP = 433, + VAR_RESPONSE_IP_DATA = 434, + VAR_HARDEN_ALGO_DOWNGRADE = 435, + VAR_IP_TRANSPARENT = 436, + VAR_IP_DSCP = 437, + VAR_DISABLE_DNSSEC_LAME_CHECK = 438, + VAR_IP_RATELIMIT = 439, + VAR_IP_RATELIMIT_SLABS = 440, + VAR_IP_RATELIMIT_SIZE = 441, + VAR_RATELIMIT = 442, + VAR_RATELIMIT_SLABS = 443, + VAR_RATELIMIT_SIZE = 444, + VAR_RATELIMIT_FOR_DOMAIN = 445, + VAR_RATELIMIT_BELOW_DOMAIN = 446, + VAR_IP_RATELIMIT_FACTOR = 447, + VAR_RATELIMIT_FACTOR = 448, + VAR_SEND_CLIENT_SUBNET = 449, + VAR_CLIENT_SUBNET_ZONE = 450, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 451, + VAR_CLIENT_SUBNET_OPCODE = 452, + VAR_MAX_CLIENT_SUBNET_IPV4 = 453, + VAR_MAX_CLIENT_SUBNET_IPV6 = 454, + VAR_MIN_CLIENT_SUBNET_IPV4 = 455, + VAR_MIN_CLIENT_SUBNET_IPV6 = 456, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 457, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 458, + VAR_CAPS_WHITELIST = 459, + VAR_CACHE_MAX_NEGATIVE_TTL = 460, + VAR_PERMIT_SMALL_HOLDDOWN = 461, + VAR_QNAME_MINIMISATION = 462, + VAR_QNAME_MINIMISATION_STRICT = 463, + VAR_IP_FREEBIND = 464, + VAR_DEFINE_TAG = 465, + VAR_LOCAL_ZONE_TAG = 466, + VAR_ACCESS_CONTROL_TAG = 467, + VAR_LOCAL_ZONE_OVERRIDE = 468, + VAR_ACCESS_CONTROL_TAG_ACTION = 469, + VAR_ACCESS_CONTROL_TAG_DATA = 470, + VAR_VIEW = 471, + VAR_ACCESS_CONTROL_VIEW = 472, + VAR_VIEW_FIRST = 473, + VAR_SERVE_EXPIRED = 474, + VAR_SERVE_EXPIRED_TTL = 475, + VAR_SERVE_EXPIRED_TTL_RESET = 476, + VAR_SERVE_EXPIRED_REPLY_TTL = 477, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 478, + VAR_FAKE_DSA = 479, + VAR_FAKE_SHA1 = 480, + VAR_LOG_IDENTITY = 481, + VAR_HIDE_TRUSTANCHOR = 482, + VAR_TRUST_ANCHOR_SIGNALING = 483, + VAR_AGGRESSIVE_NSEC = 484, + VAR_USE_SYSTEMD = 485, + VAR_SHM_ENABLE = 486, + VAR_SHM_KEY = 487, + VAR_ROOT_KEY_SENTINEL = 488, + VAR_DNSCRYPT = 489, + VAR_DNSCRYPT_ENABLE = 490, + VAR_DNSCRYPT_PORT = 491, + VAR_DNSCRYPT_PROVIDER = 492, + VAR_DNSCRYPT_SECRET_KEY = 493, + VAR_DNSCRYPT_PROVIDER_CERT = 494, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 495, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 496, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 497, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 498, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 499, + VAR_IPSECMOD_ENABLED = 500, + VAR_IPSECMOD_HOOK = 501, + VAR_IPSECMOD_IGNORE_BOGUS = 502, + VAR_IPSECMOD_MAX_TTL = 503, + VAR_IPSECMOD_WHITELIST = 504, + VAR_IPSECMOD_STRICT = 505, + VAR_CACHEDB = 506, + VAR_CACHEDB_BACKEND = 507, + VAR_CACHEDB_SECRETSEED = 508, + VAR_CACHEDB_REDISHOST = 509, + VAR_CACHEDB_REDISPORT = 510, + VAR_CACHEDB_REDISTIMEOUT = 511, + VAR_CACHEDB_REDISEXPIRERECORDS = 512, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 513, + VAR_FOR_UPSTREAM = 514, + VAR_AUTH_ZONE = 515, + VAR_ZONEFILE = 516, + VAR_MASTER = 517, + VAR_URL = 518, + VAR_FOR_DOWNSTREAM = 519, + VAR_FALLBACK_ENABLED = 520, + VAR_TLS_ADDITIONAL_PORT = 521, + VAR_LOW_RTT = 522, + VAR_LOW_RTT_PERMIL = 523, + VAR_FAST_SERVER_PERMIL = 524, + VAR_FAST_SERVER_NUM = 525, + VAR_ALLOW_NOTIFY = 526, + VAR_TLS_WIN_CERT = 527, + VAR_TCP_CONNECTION_LIMIT = 528, + VAR_FORWARD_NO_CACHE = 529, + VAR_STUB_NO_CACHE = 530, + VAR_LOG_SERVFAIL = 531, + VAR_DENY_ANY = 532, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 533, + VAR_LOG_TAG_QUERYREPLY = 534, + VAR_STREAM_WAIT_SIZE = 535, + VAR_TLS_CIPHERS = 536, + VAR_TLS_CIPHERSUITES = 537, + VAR_TLS_USE_SNI = 538, + VAR_IPSET = 539, + VAR_IPSET_NAME_V4 = 540, + VAR_IPSET_NAME_V6 = 541, + VAR_TLS_SESSION_TICKET_KEYS = 542, + VAR_RPZ = 543, + VAR_TAGS = 544, + VAR_RPZ_ACTION_OVERRIDE = 545, + VAR_RPZ_CNAME_OVERRIDE = 546, + VAR_RPZ_LOG = 547, + VAR_RPZ_LOG_NAME = 548 }; #endif /* Tokens. */ @@ -473,153 +478,158 @@ extern int yydebug; #define VAR_FORWARD_SSL_UPSTREAM 394 #define VAR_TLS_CERT_BUNDLE 395 #define VAR_HTTPS_PORT 396 -#define VAR_STUB_FIRST 397 -#define VAR_MINIMAL_RESPONSES 398 -#define VAR_RRSET_ROUNDROBIN 399 -#define VAR_MAX_UDP_SIZE 400 -#define VAR_DELAY_CLOSE 401 -#define VAR_UNBLOCK_LAN_ZONES 402 -#define VAR_INSECURE_LAN_ZONES 403 -#define VAR_INFRA_CACHE_MIN_RTT 404 -#define VAR_DNS64_PREFIX 405 -#define VAR_DNS64_SYNTHALL 406 -#define VAR_DNS64_IGNORE_AAAA 407 -#define VAR_DNSTAP 408 -#define VAR_DNSTAP_ENABLE 409 -#define VAR_DNSTAP_SOCKET_PATH 410 -#define VAR_DNSTAP_IP 411 -#define VAR_DNSTAP_TLS 412 -#define VAR_DNSTAP_TLS_SERVER_NAME 413 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 -#define VAR_DNSTAP_SEND_IDENTITY 417 -#define VAR_DNSTAP_SEND_VERSION 418 -#define VAR_DNSTAP_IDENTITY 419 -#define VAR_DNSTAP_VERSION 420 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 -#define VAR_RESPONSE_IP_TAG 427 -#define VAR_RESPONSE_IP 428 -#define VAR_RESPONSE_IP_DATA 429 -#define VAR_HARDEN_ALGO_DOWNGRADE 430 -#define VAR_IP_TRANSPARENT 431 -#define VAR_IP_DSCP 432 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 -#define VAR_IP_RATELIMIT 434 -#define VAR_IP_RATELIMIT_SLABS 435 -#define VAR_IP_RATELIMIT_SIZE 436 -#define VAR_RATELIMIT 437 -#define VAR_RATELIMIT_SLABS 438 -#define VAR_RATELIMIT_SIZE 439 -#define VAR_RATELIMIT_FOR_DOMAIN 440 -#define VAR_RATELIMIT_BELOW_DOMAIN 441 -#define VAR_IP_RATELIMIT_FACTOR 442 -#define VAR_RATELIMIT_FACTOR 443 -#define VAR_SEND_CLIENT_SUBNET 444 -#define VAR_CLIENT_SUBNET_ZONE 445 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 -#define VAR_CLIENT_SUBNET_OPCODE 447 -#define VAR_MAX_CLIENT_SUBNET_IPV4 448 -#define VAR_MAX_CLIENT_SUBNET_IPV6 449 -#define VAR_MIN_CLIENT_SUBNET_IPV4 450 -#define VAR_MIN_CLIENT_SUBNET_IPV6 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 -#define VAR_CAPS_WHITELIST 454 -#define VAR_CACHE_MAX_NEGATIVE_TTL 455 -#define VAR_PERMIT_SMALL_HOLDDOWN 456 -#define VAR_QNAME_MINIMISATION 457 -#define VAR_QNAME_MINIMISATION_STRICT 458 -#define VAR_IP_FREEBIND 459 -#define VAR_DEFINE_TAG 460 -#define VAR_LOCAL_ZONE_TAG 461 -#define VAR_ACCESS_CONTROL_TAG 462 -#define VAR_LOCAL_ZONE_OVERRIDE 463 -#define VAR_ACCESS_CONTROL_TAG_ACTION 464 -#define VAR_ACCESS_CONTROL_TAG_DATA 465 -#define VAR_VIEW 466 -#define VAR_ACCESS_CONTROL_VIEW 467 -#define VAR_VIEW_FIRST 468 -#define VAR_SERVE_EXPIRED 469 -#define VAR_SERVE_EXPIRED_TTL 470 -#define VAR_SERVE_EXPIRED_TTL_RESET 471 -#define VAR_SERVE_EXPIRED_REPLY_TTL 472 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 -#define VAR_FAKE_DSA 474 -#define VAR_FAKE_SHA1 475 -#define VAR_LOG_IDENTITY 476 -#define VAR_HIDE_TRUSTANCHOR 477 -#define VAR_TRUST_ANCHOR_SIGNALING 478 -#define VAR_AGGRESSIVE_NSEC 479 -#define VAR_USE_SYSTEMD 480 -#define VAR_SHM_ENABLE 481 -#define VAR_SHM_KEY 482 -#define VAR_ROOT_KEY_SENTINEL 483 -#define VAR_DNSCRYPT 484 -#define VAR_DNSCRYPT_ENABLE 485 -#define VAR_DNSCRYPT_PORT 486 -#define VAR_DNSCRYPT_PROVIDER 487 -#define VAR_DNSCRYPT_SECRET_KEY 488 -#define VAR_DNSCRYPT_PROVIDER_CERT 489 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 -#define VAR_IPSECMOD_ENABLED 495 -#define VAR_IPSECMOD_HOOK 496 -#define VAR_IPSECMOD_IGNORE_BOGUS 497 -#define VAR_IPSECMOD_MAX_TTL 498 -#define VAR_IPSECMOD_WHITELIST 499 -#define VAR_IPSECMOD_STRICT 500 -#define VAR_CACHEDB 501 -#define VAR_CACHEDB_BACKEND 502 -#define VAR_CACHEDB_SECRETSEED 503 -#define VAR_CACHEDB_REDISHOST 504 -#define VAR_CACHEDB_REDISPORT 505 -#define VAR_CACHEDB_REDISTIMEOUT 506 -#define VAR_CACHEDB_REDISEXPIRERECORDS 507 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 -#define VAR_FOR_UPSTREAM 509 -#define VAR_AUTH_ZONE 510 -#define VAR_ZONEFILE 511 -#define VAR_MASTER 512 -#define VAR_URL 513 -#define VAR_FOR_DOWNSTREAM 514 -#define VAR_FALLBACK_ENABLED 515 -#define VAR_TLS_ADDITIONAL_PORT 516 -#define VAR_LOW_RTT 517 -#define VAR_LOW_RTT_PERMIL 518 -#define VAR_FAST_SERVER_PERMIL 519 -#define VAR_FAST_SERVER_NUM 520 -#define VAR_ALLOW_NOTIFY 521 -#define VAR_TLS_WIN_CERT 522 -#define VAR_TCP_CONNECTION_LIMIT 523 -#define VAR_FORWARD_NO_CACHE 524 -#define VAR_STUB_NO_CACHE 525 -#define VAR_LOG_SERVFAIL 526 -#define VAR_DENY_ANY 527 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 -#define VAR_LOG_TAG_QUERYREPLY 529 -#define VAR_STREAM_WAIT_SIZE 530 -#define VAR_TLS_CIPHERS 531 -#define VAR_TLS_CIPHERSUITES 532 -#define VAR_TLS_USE_SNI 533 -#define VAR_IPSET 534 -#define VAR_IPSET_NAME_V4 535 -#define VAR_IPSET_NAME_V6 536 -#define VAR_TLS_SESSION_TICKET_KEYS 537 -#define VAR_RPZ 538 -#define VAR_TAGS 539 -#define VAR_RPZ_ACTION_OVERRIDE 540 -#define VAR_RPZ_CNAME_OVERRIDE 541 -#define VAR_RPZ_LOG 542 -#define VAR_RPZ_LOG_NAME 543 +#define VAR_HTTP_ENDPOINT 397 +#define VAR_HTTP_MAX_STREAMS 398 +#define VAR_HTTP_QUERY_BUFFER_SIZE 399 +#define VAR_HTTP_RESPONSE_BUFFER_SIZE 400 +#define VAR_HTTP_NODELAY 401 +#define VAR_STUB_FIRST 402 +#define VAR_MINIMAL_RESPONSES 403 +#define VAR_RRSET_ROUNDROBIN 404 +#define VAR_MAX_UDP_SIZE 405 +#define VAR_DELAY_CLOSE 406 +#define VAR_UNBLOCK_LAN_ZONES 407 +#define VAR_INSECURE_LAN_ZONES 408 +#define VAR_INFRA_CACHE_MIN_RTT 409 +#define VAR_DNS64_PREFIX 410 +#define VAR_DNS64_SYNTHALL 411 +#define VAR_DNS64_IGNORE_AAAA 412 +#define VAR_DNSTAP 413 +#define VAR_DNSTAP_ENABLE 414 +#define VAR_DNSTAP_SOCKET_PATH 415 +#define VAR_DNSTAP_IP 416 +#define VAR_DNSTAP_TLS 417 +#define VAR_DNSTAP_TLS_SERVER_NAME 418 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 419 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 420 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 421 +#define VAR_DNSTAP_SEND_IDENTITY 422 +#define VAR_DNSTAP_SEND_VERSION 423 +#define VAR_DNSTAP_IDENTITY 424 +#define VAR_DNSTAP_VERSION 425 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 426 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 427 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 428 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 429 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 430 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 431 +#define VAR_RESPONSE_IP_TAG 432 +#define VAR_RESPONSE_IP 433 +#define VAR_RESPONSE_IP_DATA 434 +#define VAR_HARDEN_ALGO_DOWNGRADE 435 +#define VAR_IP_TRANSPARENT 436 +#define VAR_IP_DSCP 437 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 438 +#define VAR_IP_RATELIMIT 439 +#define VAR_IP_RATELIMIT_SLABS 440 +#define VAR_IP_RATELIMIT_SIZE 441 +#define VAR_RATELIMIT 442 +#define VAR_RATELIMIT_SLABS 443 +#define VAR_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT_FOR_DOMAIN 445 +#define VAR_RATELIMIT_BELOW_DOMAIN 446 +#define VAR_IP_RATELIMIT_FACTOR 447 +#define VAR_RATELIMIT_FACTOR 448 +#define VAR_SEND_CLIENT_SUBNET 449 +#define VAR_CLIENT_SUBNET_ZONE 450 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 451 +#define VAR_CLIENT_SUBNET_OPCODE 452 +#define VAR_MAX_CLIENT_SUBNET_IPV4 453 +#define VAR_MAX_CLIENT_SUBNET_IPV6 454 +#define VAR_MIN_CLIENT_SUBNET_IPV4 455 +#define VAR_MIN_CLIENT_SUBNET_IPV6 456 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 457 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 458 +#define VAR_CAPS_WHITELIST 459 +#define VAR_CACHE_MAX_NEGATIVE_TTL 460 +#define VAR_PERMIT_SMALL_HOLDDOWN 461 +#define VAR_QNAME_MINIMISATION 462 +#define VAR_QNAME_MINIMISATION_STRICT 463 +#define VAR_IP_FREEBIND 464 +#define VAR_DEFINE_TAG 465 +#define VAR_LOCAL_ZONE_TAG 466 +#define VAR_ACCESS_CONTROL_TAG 467 +#define VAR_LOCAL_ZONE_OVERRIDE 468 +#define VAR_ACCESS_CONTROL_TAG_ACTION 469 +#define VAR_ACCESS_CONTROL_TAG_DATA 470 +#define VAR_VIEW 471 +#define VAR_ACCESS_CONTROL_VIEW 472 +#define VAR_VIEW_FIRST 473 +#define VAR_SERVE_EXPIRED 474 +#define VAR_SERVE_EXPIRED_TTL 475 +#define VAR_SERVE_EXPIRED_TTL_RESET 476 +#define VAR_SERVE_EXPIRED_REPLY_TTL 477 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 478 +#define VAR_FAKE_DSA 479 +#define VAR_FAKE_SHA1 480 +#define VAR_LOG_IDENTITY 481 +#define VAR_HIDE_TRUSTANCHOR 482 +#define VAR_TRUST_ANCHOR_SIGNALING 483 +#define VAR_AGGRESSIVE_NSEC 484 +#define VAR_USE_SYSTEMD 485 +#define VAR_SHM_ENABLE 486 +#define VAR_SHM_KEY 487 +#define VAR_ROOT_KEY_SENTINEL 488 +#define VAR_DNSCRYPT 489 +#define VAR_DNSCRYPT_ENABLE 490 +#define VAR_DNSCRYPT_PORT 491 +#define VAR_DNSCRYPT_PROVIDER 492 +#define VAR_DNSCRYPT_SECRET_KEY 493 +#define VAR_DNSCRYPT_PROVIDER_CERT 494 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 495 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 496 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 497 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 498 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 499 +#define VAR_IPSECMOD_ENABLED 500 +#define VAR_IPSECMOD_HOOK 501 +#define VAR_IPSECMOD_IGNORE_BOGUS 502 +#define VAR_IPSECMOD_MAX_TTL 503 +#define VAR_IPSECMOD_WHITELIST 504 +#define VAR_IPSECMOD_STRICT 505 +#define VAR_CACHEDB 506 +#define VAR_CACHEDB_BACKEND 507 +#define VAR_CACHEDB_SECRETSEED 508 +#define VAR_CACHEDB_REDISHOST 509 +#define VAR_CACHEDB_REDISPORT 510 +#define VAR_CACHEDB_REDISTIMEOUT 511 +#define VAR_CACHEDB_REDISEXPIRERECORDS 512 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 513 +#define VAR_FOR_UPSTREAM 514 +#define VAR_AUTH_ZONE 515 +#define VAR_ZONEFILE 516 +#define VAR_MASTER 517 +#define VAR_URL 518 +#define VAR_FOR_DOWNSTREAM 519 +#define VAR_FALLBACK_ENABLED 520 +#define VAR_TLS_ADDITIONAL_PORT 521 +#define VAR_LOW_RTT 522 +#define VAR_LOW_RTT_PERMIL 523 +#define VAR_FAST_SERVER_PERMIL 524 +#define VAR_FAST_SERVER_NUM 525 +#define VAR_ALLOW_NOTIFY 526 +#define VAR_TLS_WIN_CERT 527 +#define VAR_TCP_CONNECTION_LIMIT 528 +#define VAR_FORWARD_NO_CACHE 529 +#define VAR_STUB_NO_CACHE 530 +#define VAR_LOG_SERVFAIL 531 +#define VAR_DENY_ANY 532 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 533 +#define VAR_LOG_TAG_QUERYREPLY 534 +#define VAR_STREAM_WAIT_SIZE 535 +#define VAR_TLS_CIPHERS 536 +#define VAR_TLS_CIPHERSUITES 537 +#define VAR_TLS_USE_SNI 538 +#define VAR_IPSET 539 +#define VAR_IPSET_NAME_V4 540 +#define VAR_IPSET_NAME_V6 541 +#define VAR_TLS_SESSION_TICKET_KEYS 542 +#define VAR_RPZ 543 +#define VAR_TAGS 544 +#define VAR_RPZ_ACTION_OVERRIDE 545 +#define VAR_RPZ_CNAME_OVERRIDE 546 +#define VAR_RPZ_LOG 547 +#define VAR_RPZ_LOG_NAME 548 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -630,7 +640,7 @@ union YYSTYPE char* str; -#line 634 "util/configparser.h" /* yacc.c:1909 */ +#line 644 "util/configparser.h" /* yacc.c:1909 */ }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 67281d3d3..a00584dcd 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -111,7 +111,9 @@ extern struct config_parser_state* cfg_parser; %token VAR_TCP_UPSTREAM VAR_SSL_UPSTREAM %token VAR_SSL_SERVICE_KEY VAR_SSL_SERVICE_PEM VAR_SSL_PORT VAR_FORWARD_FIRST %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE -%token VAR_HTTPS_PORT +%token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS +%token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE +%token VAR_HTTP_NODELAY %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES @@ -238,7 +240,9 @@ content_server: server_num_threads | server_verbosity | server_port | server_log_queries | server_log_replies | server_tcp_upstream | server_ssl_upstream | server_log_local_actions | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | - server_https_port | + server_https_port | server_http_endpoint | server_http_max_streams | + server_http_query_buffer_size | server_http_response_buffer_size | + server_http_nodelay | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | server_so_reuseport | server_delay_close | server_unblock_lan_zones | server_insecure_lan_zones | @@ -955,13 +959,6 @@ server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG yyerror("out of memory"); } ; -server_https_port: VAR_HTTPS_PORT STRING_ARG - { - OUTYY(("P(server_https_port:%s)\n", $2)); - if(atoi($2) == 0) - yyerror("port number expected"); - else cfg_parser->cfg->https_port = atoi($2); - }; server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG { OUTYY(("P(server_tls_use_sni:%s)\n", $2)); @@ -971,6 +968,59 @@ server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG free($2); } ; +server_https_port: VAR_HTTPS_PORT STRING_ARG + { + OUTYY(("P(server_https_port:%s)\n", $2)); + if(atoi($2) == 0) + yyerror("port number expected"); + else cfg_parser->cfg->https_port = atoi($2); + }; +server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG + { + OUTYY(("P(server_http_endpoint:%s)\n", $2)); + free(cfg_parser->cfg->http_endpoint); + if($2 && $2[0] != '/') { + cfg_parser->cfg->http_endpoint = malloc(strlen($2)+2); + cfg_parser->cfg->http_endpoint[0] = '/'; + memcpy(cfg_parser->cfg->http_endpoint+1, $2, + strlen($2)+1); + free($2); + } else { + cfg_parser->cfg->http_endpoint = $2; + } + }; +server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG + { + OUTYY(("P(server_http_max_streams:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("number expected"); + else cfg_parser->cfg->http_max_streams = atoi($2); + free($2); + }; +server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG + { + OUTYY(("P(server_http_query_buffer_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, + &cfg_parser->cfg->http_query_buffer_size)) + yyerror("memory size expected"); + free($2); + }; +server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG + { + OUTYY(("P(server_http_response_buffer_size:%s)\n", $2)); + if(!cfg_parse_memsize($2, + &cfg_parser->cfg->http_response_buffer_size)) + yyerror("memory size expected"); + free($2); + }; +server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG + { + OUTYY(("P(server_http_nodelay:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0); + free($2); + }; server_use_systemd: VAR_USE_SYSTEMD STRING_ARG { OUTYY(("P(server_use_systemd:%s)\n", $2)); diff --git a/util/netevent.c b/util/netevent.c index 5bd74e172..749781934 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -929,7 +929,8 @@ static int http2_submit_settings(struct http2_session* h2_session) { int ret; nghttp2_settings_entry settings[1] = { - {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, 100}}; + {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, + h2_session->c->http2_max_streams}}; ret = nghttp2_submit_settings(h2_session->session, NGHTTP2_FLAG_NONE, settings, 1); @@ -965,27 +966,27 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); + if(c_hdl->type == comm_http) { #ifdef HAVE_NGHTTP2 - if(c_hdl->type == comm_http && c_hdl->h2_session) { - if(!http2_session_server_create(c_hdl->h2_session)) { + if(!c_hdl->h2_session || + !http2_session_server_create(c_hdl->h2_session)) { log_warn("failed to create nghttp2"); return; } - if(!http2_submit_settings(c_hdl->h2_session)) { + if(!c_hdl->h2_session || + !http2_submit_settings(c_hdl->h2_session)) { log_warn("failed to submit http2 settings"); return; } +#endif c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, comm_point_http_handle_callback, c_hdl); } else { -#endif c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, comm_point_tcp_handle_callback, c_hdl); -#ifdef HAVE_NGHTTP2 } -#endif if(!c_hdl->ev->ev) { log_warn("could not ub_event_new, dropped tcp"); return; @@ -2295,10 +2296,7 @@ void http2_stream_delete(struct http2_session* h2_session, mesh_state_remove_reply(h2_stream->mesh, h2_stream->mesh_state, h2_session->c); } - if(h2_stream->qbuffer) - sldns_buffer_free(h2_stream->qbuffer); - if(h2_stream->rbuffer) - sldns_buffer_free(h2_stream->rbuffer); + http2_req_stream_clear(h2_stream); free(h2_stream); } #endif @@ -3091,6 +3089,7 @@ comm_point_create_tcp_handler(struct comm_base *base, static struct comm_point* comm_point_create_http_handler(struct comm_base *base, struct comm_point* parent, size_t bufsize, int harden_large_queries, + uint32_t http_max_streams, char* http_endpoint, comm_point_callback_type* callback, void* callback_arg) { struct comm_point* c = (struct comm_point*)calloc(1, @@ -3147,9 +3146,11 @@ comm_point_create_http_handler(struct comm_base *base, c->cb_arg = callback_arg; c->http_min_version = http_version_2; - c->http2_max_qbuffer_size = bufsize; + c->http2_stream_max_qbuffer_size = bufsize; if(harden_large_queries && bufsize > 512) - c->http2_max_qbuffer_size = 512; + c->http2_stream_max_qbuffer_size = 512; + c->http2_max_streams = http_max_streams; + c->http_endpoint = strdup(http_endpoint); c->alpn_h2 = 0; #ifdef HAVE_NGHTTP2 if(!(c->h2_session = http2_session_create(c))) { @@ -3195,6 +3196,7 @@ comm_point_create_http_handler(struct comm_base *base, struct comm_point* comm_point_create_tcp(struct comm_base *base, int fd, int num, int idle_timeout, int harden_large_queries, + uint32_t http_max_streams, char* http_endpoint, struct tcl_list* tcp_conn_limit, size_t bufsize, struct sldns_buffer* spoolbuf, enum listen_type port_type, comm_point_callback_type* callback, void* callback_arg) @@ -3271,6 +3273,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, } else if(port_type == listen_type_http) { c->tcp_handlers[i] = comm_point_create_http_handler( base, c, bufsize, harden_large_queries, + http_max_streams, http_endpoint, callback, callback_arg); } else { @@ -3592,6 +3595,10 @@ comm_point_delete(struct comm_point* c) SSL_free(c->ssl); #endif } + if(c->type == comm_http && c->http_endpoint) { + free(c->http_endpoint); + c->http_endpoint = NULL; + } comm_point_close(c); if(c->tcp_handlers) { int i; diff --git a/util/netevent.h b/util/netevent.h index 8664a61b6..68f4c1297 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -219,6 +219,8 @@ struct comm_point { http_version_none = 0, http_version_2 = 2 } http_min_version; + /** http endpoint */ + char* http_endpoint; /* -------- HTTP/1.1 ------- */ /** Currently reading in http headers */ int http_in_headers; @@ -236,10 +238,13 @@ struct comm_point { struct http2_session* h2_session; /** set to 1 if h2 is negatiated using alpn */ int alpn_h2; - /** maximum allowed query buffer size */ - size_t http2_max_qbuffer_size; /** stream currently being handled */ struct http2_stream* h2_stream; + /** maximum allowed query buffer size, per stream */ + size_t http2_stream_max_qbuffer_size; + /** maximum number of HTTP/2 streams per connection. Send in HTTP/2 + * SETTINGS frame. */ + uint32_t http2_max_streams; /* -------- dnstap ------- */ /** the dnstap environment */ @@ -481,6 +486,8 @@ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, * many tcp handler commpoints. * @param idle_timeout: TCP idle timeout in ms. * @param harden_large_queries: whether query size should be limited. + * @param http_max_streams: maximum number of HTTP/2 streams per connection. + * @param http_endpoint: HTTP endpoint to service queries on * @param tcp_conn_limit: TCP connection limit info. * @param bufsize: size of buffer to create for handlers. * @param spoolbuf: shared spool buffer for tcp_req_info structures. @@ -496,6 +503,7 @@ struct comm_point* comm_point_create_udp_ancil(struct comm_base* base, */ struct comm_point* comm_point_create_tcp(struct comm_base* base, int fd, int num, int idle_timeout, int harden_large_queries, + uint32_t http_max_streams, char* http_endpoint, struct tcl_list* tcp_conn_limit, size_t bufsize, struct sldns_buffer* spoolbuf, enum listen_type port_type, From 4fc7b434d7a00e2d30fd21597a616e2b44ed46e4 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 13 May 2020 13:05:40 +0200 Subject: [PATCH 018/394] - Document new DoH configuration options. --- doc/example.conf.in | 16 ++++++++++++++++ doc/unbound.conf.5.in | 33 +++++++++++++++++++++++++++++---- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index f7c6364a0..a7c261723 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -773,6 +773,22 @@ server: # Also serve tls on these port numbers (eg. 443, ...), by listing # tls-additional-port: portno for each of the port numbers. + # HTTP endpoint to provide DNS-over-HTTPS service on. + # http-endpoint: "/dns-query" + + # HTTP/2 SETTINGS_MAX_CONCURRENT_STREAMS value to use. + # http-max-streams: 100 + + # Maximum number of bytes used for all HTTP/2 query buffers. + # http-query-buffer-size: 4m + + # Maximum number of bytes used for all HTTP/2 response buffers. + # http-response-buffer-size: 4m + + # Set TCP_NODELAY socket option on sockets used for DNS-over-HTTPS + # service. + # http-nodelay: yes + # DNS64 prefix. Must be specified when DNS64 is use. # Enable dns64 in module-config. Used to synthesize IPv6 from IPv4. # dns64-prefix: 64:ff9b::0/96 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 7ee52e7f5..55a0dbae9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -503,10 +503,6 @@ Alternate syntax for \fBtls\-service\-pem\fR. The port number on which to provide TCP TLS service, default 853, only interfaces configured with that port number as @number get the TLS service. .TP -.B https\-port: \fI -The port number on which to provide DNS-over-HTTPS service, default 443, only -interfaces configured with that port number as @number get the HTTPS service. -.TP .B ssl\-port: \fI Alternate syntax for \fBtls\-port\fR. .TP @@ -556,6 +552,35 @@ Enable or disable sending the SNI extension on TLS connections. Default is yes. Changing the value requires a reload. .TP +.B https\-port: \fI +The port number on which to provide DNS-over-HTTPS service, default 443, only +interfaces configured with that port number as @number get the HTTPS service. +.TP +.B http\-endpoint: \fI +The HTTP endpoint to provide DNS-over-HTTPS service on. Default "/dns-query". +.TP +.B http\-max\-streams: \fI +Number used in the SETTINGS_MAX_CONCURRENT_STREAMS parameter in the HTTP/2 +SETTINGS frame for DNS-over-HTTPS connections. Default 100. +.TP +.B http\-query\-buffer\-size: \fI +Maximum number of bytes used for all HTTP/2 query buffers combined. These +buffers contain (partial) DNS queries waiting for request stream completion. +An RST_STREAM frame will be send to streams exceeding this limit. Default is 4 +megabytes. A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, +megabytes or gigabytes (1024*1024 bytes in a megabyte). +.TP +.B http\-response\-buffer\-size: \fI +Maximum number of bytes used for all HTTP/2 response buffers combined. These +buffers contain DNS responses waiting to be written back to the clients. +An RST_STREAM frame will be send to streams exceeding this limit. Default is 4 +megabytes. A plain number is in bytes, append 'k', 'm' or 'g' for kilobytes, +megabytes or gigabytes (1024*1024 bytes in a megabyte). +.TP +.B http\-nodelay: \fI +Set TCP_NODELAY socket option on sockets used to provide DNS-over-HTTPS service. +Ignored if the option is not available. Default is yes. +.TP .B use\-systemd: \fI Enable or disable systemd socket activation. Default is no. From 605e6c9bdae999f9b5eacae1315ed14262cae71b Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 15 May 2020 09:52:15 +0200 Subject: [PATCH 019/394] add dohclient to makefile --- Makefile.in | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Makefile.in b/Makefile.in index f2b9ac76d..61d3b2366 100644 --- a/Makefile.in +++ b/Makefile.in @@ -224,6 +224,10 @@ STREAMTCP_SRC=testcode/streamtcp.c STREAMTCP_OBJ=streamtcp.lo STREAMTCP_OBJ_LINK=$(STREAMTCP_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ $(SLDNS_OBJ) +DOHCLIENT_SRC=testcode/dohclient.c +DOHCLIENT_OBJ=dohclient.lo +DOHCLIENT_OBJ_LINK=$(DOHCLIENT_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) \ +$(SLDNS_OBJ) PERF_SRC=testcode/perf.c PERF_OBJ=perf.lo PERF_OBJ_LINK=$(PERF_OBJ) worker_cb.lo $(COMMON_OBJ) $(COMPAT_OBJ) $(SLDNS_OBJ) @@ -265,7 +269,8 @@ ALL_SRC=$(COMMON_SRC) $(UNITTEST_SRC) $(DAEMON_SRC) \ $(ASYNCLOOK_SRC) $(STREAMTCP_SRC) $(PERF_SRC) $(DELAYER_SRC) \ $(CONTROL_SRC) $(UBANCHOR_SRC) $(PETAL_SRC) $(DNSTAP_SOCKET_SRC)\ $(PYTHONMOD_SRC) $(PYUNBOUND_SRC) $(WIN_DAEMON_THE_SRC) \ - $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) + $(SVCINST_SRC) $(SVCUNINST_SRC) $(ANCHORUPD_SRC) $(SLDNS_SRC) \ + $(DOHCLIENT_SRC) ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(TESTBOUND_OBJ) $(LOCKVERIFY_OBJ) $(PKTVIEW_OBJ) \ @@ -273,7 +278,8 @@ ALL_OBJ=$(COMMON_OBJ) $(UNITTEST_OBJ) $(DAEMON_OBJ) \ $(ASYNCLOOK_OBJ) $(STREAMTCP_OBJ) $(PERF_OBJ) $(DELAYER_OBJ) \ $(CONTROL_OBJ) $(UBANCHOR_OBJ) $(PETAL_OBJ) $(DNSTAP_SOCKET_OBJ)\ $(COMPAT_OBJ) $(PYUNBOUND_OBJ) \ - $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) + $(SVCINST_OBJ) $(SVCUNINST_OBJ) $(ANCHORUPD_OBJ) $(SLDNS_OBJ) \ + $(DOHCLIENT_OBJ) COMPILE=$(LIBTOOL) --tag=CC --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ LINK=$(LIBTOOL) --tag=CC --mode=link $(CC) $(staticexe) $(RUNTIME_PATH) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) @@ -310,7 +316,7 @@ rsrc_unbound_checkconf.o: $(srcdir)/winrc/rsrc_unbound_checkconf.rc config.h TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \ lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \ - unbound-dnstap-socket$(EXEEXT) \ + unbound-dnstap-socket$(EXEEXT) dohclient$(EXEEXT) \ testbound$(EXEEXT) unittest$(EXEEXT) tests: all $(TEST_BIN) @@ -380,6 +386,9 @@ asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) +dohclient$(EXEEXT): $(DOHCLIENT_OBJ_LINK) + $(LINK) -o $@ $(DOHCLIENT_OBJ_LINK) $(SSLLIB) $(LIBS) + perf$(EXEEXT): $(PERF_OBJ_LINK) $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) @@ -1515,6 +1524,10 @@ parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/p rrdef.lo rrdef.o: $(srcdir)/sldns/rrdef.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h str2wire.lo str2wire.o: $(srcdir)/sldns/str2wire.c config.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h +dohclient.lo dohclient.o: $(srcdir)/testcode/dohclient.c config.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/net_help.h ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h fake-rfc2553.lo fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c $(srcdir)/compat/fake-rfc2553.h config.h gmtime_r.lo gmtime_r.o: $(srcdir)/compat/gmtime_r.c config.h From 99fd6cf7118389128c8016d211f1f432abcab523 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 15 May 2020 13:13:49 +0200 Subject: [PATCH 020/394] - Cache ECS answers with longest scope of CNAME chain. --- doc/Changelog | 3 +++ edns-subnet/subnetmod.c | 29 ++++++++++++++++++++++------- edns-subnet/subnetmod.h | 7 +++++++ 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0b2a86aa9..4e0c07c42 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 May 2020: Ralph + - Cache ECS answers with longest scope of CNAME chain. + 22 April 2020: George - Explicitly use 'rrset-roundrobin: no' for test cases. diff --git a/edns-subnet/subnetmod.c b/edns-subnet/subnetmod.c index 37dc550cd..f1b401b90 100644 --- a/edns-subnet/subnetmod.c +++ b/edns-subnet/subnetmod.c @@ -386,8 +386,7 @@ update_cache(struct module_qstate *qstate, int id) rep->flags |= (BIT_RA | BIT_QR); /* fix flags to be sensible for */ rep->flags &= ~(BIT_AA | BIT_CD);/* a reply based on the cache */ addrtree_insert(tree, (addrkey_t*)edns->subnet_addr, - edns->subnet_source_mask, - sq->ecs_server_in.subnet_scope_mask, rep, + edns->subnet_source_mask, sq->max_scope, rep, rep->ttl, *qstate->env->now); lock_rw_unlock(&lru_entry->lock); @@ -543,7 +542,7 @@ eval_response(struct module_qstate *qstate, int id, struct subnet_qstate *sq) c_out->subnet_addr_fam = c_in->subnet_addr_fam; c_out->subnet_source_mask = c_in->subnet_source_mask; memcpy(&c_out->subnet_addr, &c_in->subnet_addr, INET6_SIZE); - c_out->subnet_scope_mask = s_in->subnet_scope_mask; + c_out->subnet_scope_mask = sq->max_scope; /* Limit scope returned to client to scope used for caching. */ if(c_out->subnet_addr_fam == EDNSSUBNET_ADDRFAM_IP4) { if(c_out->subnet_scope_mask > @@ -648,6 +647,19 @@ ecs_query_response(struct module_qstate* qstate, struct dns_msg* response, qstate->env->cfg->client_subnet_opcode); sq->subnet_sent = 0; memset(&sq->ecs_server_out, 0, sizeof(sq->ecs_server_out)); + } else if (!sq->track_max_scope && + FLAGS_GET_RCODE(response->rep->flags) == LDNS_RCODE_NOERROR && + response->rep->an_numrrsets > 0 + ) { + struct ub_packed_rrset_key* s = response->rep->rrsets[0]; + if(ntohs(s->rk.type) == LDNS_RR_TYPE_CNAME && + query_dname_compare(qstate->qinfo.qname, + s->rk.dname) == 0) { + /* CNAME response for QNAME. From now on keep track of + * longest received ECS prefix for all queries on this + * qstate. */ + sq->track_max_scope = 1; + } } return 1; } @@ -663,16 +675,19 @@ ecs_edns_back_parsed(struct module_qstate* qstate, int id, return 1; if((ecs_opt = edns_opt_list_find( qstate->edns_opts_back_in, - qstate->env->cfg->client_subnet_opcode))) { - if(parse_subnet_option(ecs_opt, &sq->ecs_server_in) && - sq->subnet_sent && - sq->ecs_server_in.subnet_validdata) + qstate->env->cfg->client_subnet_opcode)) && + parse_subnet_option(ecs_opt, &sq->ecs_server_in) && + sq->subnet_sent && sq->ecs_server_in.subnet_validdata) { /* Only skip global cache store if we sent an ECS option * and received one back. Answers from non-whitelisted * servers will end up in global cache. Answers for * queries with 0 source will not (unless nameserver * does not support ECS). */ qstate->no_cache_store = 1; + if(!sq->track_max_scope || (sq->track_max_scope && + sq->ecs_server_in.subnet_scope_mask > + sq->max_scope)) + sq->max_scope = sq->ecs_server_in.subnet_scope_mask; } return 1; diff --git a/edns-subnet/subnetmod.h b/edns-subnet/subnetmod.h index e408627b0..27ba2ee74 100644 --- a/edns-subnet/subnetmod.h +++ b/edns-subnet/subnetmod.h @@ -45,6 +45,7 @@ #include "util/alloc.h" #include "util/net_help.h" #include "util/storage/slabhash.h" +#include "util/data/dname.h" #include "edns-subnet/addrtree.h" #include "edns-subnet/edns-subnet.h" @@ -83,6 +84,12 @@ struct subnet_qstate { struct ecs_data ecs_server_out; int subnet_downstream; int subnet_sent; + /** keep track of longest received scope, set after receiving CNAME for + * incoming QNAME. */ + int track_max_scope; + /** longest received scope mask since track_max_scope is set. This value + * is used for caching and answereing to client. */ + uint8_t max_scope; /** has the subnet module been started with no_cache_store? */ int started_no_cache_store; }; From 2c8ebe6206135e7d660857c488cddb25f7f55a22 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 15 May 2020 14:55:36 +0200 Subject: [PATCH 021/394] - Fixed conflicts for PR #93 and make configure, yacc, lex. --- config.h.in | 6 +- doc/Changelog | 4 + util/configlexer.c | 4586 ++++++++++++++++++++++--------------------- util/configparser.c | 2825 +++++++++++++------------- util/configparser.h | 8 +- 5 files changed, 3742 insertions(+), 3687 deletions(-) diff --git a/config.h.in b/config.h.in index dcab05b6a..aa3e6665b 100644 --- a/config.h.in +++ b/config.h.in @@ -866,12 +866,12 @@ /* the version of the windows API enabled */ #undef WINVER +/* Define if you want dynlib module. */ +#undef WITH_DYNLIBMODULE + /* Define if you want Python module. */ #undef WITH_PYTHONMODULE -/* Define if you want dynamic library module. */ -#undef WITH_DYNLIBMODULE - /* Define if you want PyUnbound. */ #undef WITH_PYUNBOUND diff --git a/doc/Changelog b/doc/Changelog index 4e0c07c42..fbbe22641 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +15 May 2020: Wouter + - Merge PR #93: Add dynamic library support. + - Fixed conflicts for PR #93 and make configure, yacc, lex. + 15 May 2020: Ralph - Cache ECS answers with longest scope of CNAME chain. diff --git a/util/configlexer.c b/util/configlexer.c index 09fd4b003..a4ac74066 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 312 -#define YY_END_OF_BUFFER 313 +#define YY_NUM_RULES 314 +#define YY_END_OF_BUFFER 315 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,345 +363,347 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3071] = +static const flex_int16_t yy_accept[3083] = { 0, - 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 313, 310, 1, 292, 292, 311, 2, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 294, 295, 295, 296, 311, 298, 299, 299, - 300, 311, 305, 302, 303, 303, 304, 311, 306, 307, - 307, 308, 311, 309, 293, 2, 297, 311, 309, 310, - 0, 1, 2, 2, 2, 2, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, + 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, + 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, + 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, + 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 294, 0, 298, 0, 305, 0, 302, 306, 0, 309, - 0, 2, 2, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, + 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 115, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 123, 310, 310, 310, - 310, 310, 310, 310, 309, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 115, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 123, + 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 99, 310, 310, 310, 310, 310, 310, 8, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 116, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 128, 310, 309, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 99, 312, 312, 312, 312, 312, + 312, 8, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 116, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 287, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 128, 312, 311, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 57, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 225, 310, 14, 15, 310, - 19, 18, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 311, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 57, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 227, 312, 14, 15, 312, 19, 18, 312, 312, 211, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 122, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 209, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 3, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 122, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 209, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 309, 310, 310, 310, 310, 310, 310, 310, 281, 310, - 310, 280, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 301, 310, 310, - 310, 310, 310, 310, 310, 56, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, + 312, 312, 312, 312, 312, 283, 312, 312, 282, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 303, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 60, 310, 255, 310, 310, 310, 310, 310, - 310, 310, 310, 288, 289, 310, 310, 310, 310, 310, - 61, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 119, 310, 310, - 310, 310, 310, 310, 310, 310, 198, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 21, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 56, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 60, 312, 257, 312, 312, 312, 312, 312, 312, 312, + 312, 290, 291, 312, 312, 312, 312, 312, 61, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 119, 312, 312, 312, 312, + 312, 312, 312, 312, 198, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 21, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 147, 310, 310, 301, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 97, 310, 310, 310, 310, 310, 310, 310, 263, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 170, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 146, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 147, 312, 312, 303, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 97, 312, + 312, 312, 312, 312, 312, 312, 265, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 170, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 146, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 96, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 32, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 33, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 58, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 121, 310, 310, 310, 310, 310, 114, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 32, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 33, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 58, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 121, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 59, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 228, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 171, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 47, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 114, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 59, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 230, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 171, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 47, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 246, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 51, 310, 52, 310, 310, 310, 310, - 310, 100, 310, 101, 310, 310, 310, 310, 98, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 7, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 218, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 248, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 51, 312, 52, 312, 312, 312, 312, + 312, 100, 312, 101, 312, 312, 312, 312, 98, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 7, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 149, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 229, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 48, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 190, 310, 189, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 16, 17, 310, 310, + 312, 312, 312, 312, 312, 312, 220, 312, 312, 312, + 312, 149, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 231, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 48, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 190, 312, + 189, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 62, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 197, 310, 310, 310, 310, 310, 310, - 103, 310, 102, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 181, 310, 310, 310, 310, 310, - 310, 310, 310, 129, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 81, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 16, 17, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 62, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 197, 312, 312, 312, 312, 312, + 312, 103, 312, 102, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 181, 312, 312, 312, 312, + 312, 312, 312, 312, 129, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 81, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 85, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 55, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 184, 185, 310, - 310, 310, 257, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 6, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 261, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 210, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 85, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 184, + 185, 312, 312, 312, 259, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 6, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 282, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 42, 310, 310, 310, 310, - 44, 310, 310, 310, 310, 310, 310, 310, 310, 45, - 310, 310, 310, 310, 310, 310, 310, 310, 177, 310, - 310, 310, 124, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 202, 310, 178, 310, 310, 310, 215, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 46, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 126, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 263, + 312, 312, 312, 312, 312, 312, 284, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 42, 312, 312, + 312, 312, 44, 312, 312, 312, 312, 312, 312, 312, + 312, 45, 312, 312, 312, 312, 312, 312, 312, 312, + 177, 312, 312, 312, 124, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 202, 312, 178, 312, 312, + 312, 217, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 108, 310, 109, 310, 310, 310, 107, 310, 310, 310, - 310, 310, 310, 310, 310, 144, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 245, 310, 310, - 310, 310, 310, 310, 310, 310, 179, 310, 310, 310, - 310, 310, 182, 310, 188, 310, 310, 310, 310, 310, - 214, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 95, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 120, 310, 310, 310, 310, 310, - 310, 53, 310, 310, 310, 26, 310, 310, 310, 310, + 312, 46, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 126, 108, 312, 109, 312, 312, 312, 107, 312, + 312, 312, 312, 312, 312, 312, 312, 144, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 247, + 312, 312, 312, 312, 312, 312, 312, 312, 179, 312, + 312, 312, 312, 312, 182, 312, 188, 312, 312, 312, + 312, 312, 216, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 95, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, - 310, 310, 310, 310, 310, 20, 310, 310, 310, 310, - 310, 310, 27, 36, 310, 154, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 70, 72, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 265, 310, 310, 310, 226, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 110, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 143, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 53, 312, 312, 312, 26, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 20, 312, 312, + 312, 312, 312, 312, 27, 36, 312, 154, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 70, 72, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 267, 312, 312, 312, 228, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 110, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 143, 312, - 310, 310, 276, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 148, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 208, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 285, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 165, 310, 310, - 310, 310, 310, 310, 310, 310, 104, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 160, 310, 172, 310, - 310, 310, 310, 310, 132, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 278, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 148, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 208, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 287, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 165, + 312, 312, 312, 312, 312, 312, 312, 312, 104, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 160, 312, - 91, 310, 310, 310, 310, 200, 310, 310, 310, 310, - 310, 310, 216, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 237, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 125, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 164, - 310, 310, 310, 310, 310, 73, 74, 310, 310, 310, - 310, 310, 54, 310, 310, 310, 310, 310, 80, 173, - 310, 191, 310, 219, 310, 310, 183, 258, 310, 310, - 310, 310, 310, 66, 310, 175, 310, 310, 310, 310, - 310, 9, 310, 310, 310, 94, 310, 310, 310, 310, + 172, 312, 312, 312, 312, 312, 132, 312, 312, 312, + 312, 312, 91, 312, 312, 312, 312, 200, 312, 312, + 312, 312, 312, 312, 218, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 239, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 125, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 164, 312, 312, 312, 312, 312, 73, 74, 312, + 312, 312, 312, 312, 54, 312, 312, 312, 312, 312, + 80, 173, 312, 191, 312, 221, 312, 312, 183, 260, + 312, 312, 312, 312, 312, 66, 312, 175, 312, 312, - 250, 310, 310, 310, 310, 199, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 163, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 150, 310, 264, 310, - 310, 310, 310, 236, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 210, 310, 310, 310, 310, - 256, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 9, 312, 312, 312, 94, 312, 312, + 312, 312, 252, 312, 312, 312, 312, 199, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 163, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 150, 312, + 266, 312, 312, 312, 312, 238, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 212, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 279, 310, 174, 310, 310, - 310, 310, 310, 310, 310, 65, 67, 310, 310, 310, - 310, 310, 310, 310, 93, 310, 310, 310, 310, 248, - 310, 310, 310, 310, 260, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 204, 34, 28, 30, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 35, - 310, 29, 31, 310, 310, 310, 310, 310, 310, 310, - 310, 90, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 206, + 312, 312, 258, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 281, 312, 174, + 312, 312, 312, 312, 312, 312, 312, 65, 67, 312, + 312, 312, 312, 312, 312, 312, 93, 312, 312, 312, + 312, 250, 312, 312, 312, 312, 262, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 204, 34, + 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, + 312, 312, 312, 90, 312, 312, 312, 312, 312, 312, - 203, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 64, 310, - 310, 127, 310, 111, 310, 310, 310, 310, 310, 310, - 310, 310, 145, 13, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 274, 310, 277, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 12, 310, 310, 22, - 310, 310, 310, 254, 310, 310, 310, 310, 262, 310, - 310, 310, 68, 310, 212, 310, 310, 310, 310, 205, - 310, 310, 63, 310, 310, 310, 310, 23, 310, 43, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 206, 203, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 64, 312, 312, 127, 312, 111, 312, 312, 312, 312, + 312, 312, 312, 312, 145, 13, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 276, 312, 279, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, + 312, 22, 312, 312, 312, 256, 312, 312, 312, 312, + 264, 312, 312, 312, 68, 312, 214, 312, 312, 312, + 312, 205, 312, 312, 63, 312, 312, 312, 312, 23, - 310, 310, 159, 158, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 207, 201, 310, 217, 310, 310, 266, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 75, 310, 310, - 310, 249, 310, 310, 310, 310, 187, 310, 310, 310, - 310, 211, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 283, 284, 156, 310, 310, 69, 310, 310, 310, - 310, 166, 310, 310, 105, 106, 310, 310, 310, 310, - 151, 310, 153, 310, 192, 310, 310, 310, 310, 157, + 312, 43, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 159, 158, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 207, 201, 312, 219, 312, + 312, 268, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 75, + 312, 312, 312, 251, 312, 312, 312, 312, 187, 312, + 312, 312, 312, 213, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 285, 286, 156, 312, 312, 69, 312, + 312, 312, 312, 166, 312, 312, 105, 106, 312, 312, - 310, 310, 220, 310, 310, 310, 310, 310, 310, 310, - 134, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 227, 310, 310, 310, 310, 310, 310, 310, - 24, 310, 259, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 193, 310, 310, 247, 310, 278, - 310, 186, 310, 310, 310, 310, 49, 310, 310, 310, - 310, 4, 310, 310, 310, 310, 118, 133, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 223, 37, 38, 310, - 310, 310, 310, 310, 310, 310, 267, 310, 310, 310, + 312, 312, 151, 312, 153, 312, 192, 312, 312, 312, + 312, 157, 312, 312, 222, 312, 312, 312, 312, 312, + 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 229, 312, 312, 312, 312, 312, + 312, 312, 24, 312, 261, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 193, 312, 312, 249, + 312, 280, 312, 186, 312, 312, 312, 312, 49, 312, + 312, 312, 312, 4, 312, 312, 312, 312, 118, 133, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 225, 37, - 310, 310, 310, 235, 310, 310, 310, 310, 310, 310, - 310, 196, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 78, 310, 50, 253, 310, 224, 310, 310, 310, - 310, 11, 310, 310, 310, 310, 310, 310, 117, 310, - 310, 310, 310, 194, 82, 310, 40, 310, 310, 310, - 310, 310, 310, 310, 310, 162, 310, 310, 310, 310, - 310, 136, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 234, 310, 310, 310, 310, 130, 310, 310, 112, - 113, 310, 310, 310, 84, 88, 83, 310, 76, 310, - 310, 310, 310, 310, 10, 310, 310, 310, 251, 286, + 38, 312, 312, 312, 312, 312, 312, 312, 269, 312, + 312, 312, 312, 312, 312, 237, 312, 312, 312, 312, + 312, 312, 312, 196, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 78, 312, 50, 255, 312, 226, 312, + 312, 312, 312, 11, 312, 312, 312, 312, 312, 312, + 117, 312, 312, 312, 312, 194, 82, 312, 40, 312, + 312, 312, 312, 312, 312, 312, 312, 162, 312, 312, + 312, 312, 312, 136, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 236, 312, 312, 312, 312, 130, 312, + 312, 112, 113, 312, 312, 312, 84, 88, 83, 312, - 310, 310, 310, 310, 291, 39, 310, 310, 310, 310, - 310, 161, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 89, 87, 310, 77, 275, 310, - 310, 310, 310, 310, 310, 310, 180, 310, 310, 310, - 310, 310, 195, 310, 310, 310, 310, 310, 310, 310, - 310, 152, 71, 310, 310, 310, 310, 310, 268, 310, - 310, 310, 310, 310, 310, 310, 231, 310, 310, 230, - 131, 310, 86, 137, 138, 141, 142, 139, 140, 79, - 310, 252, 310, 310, 310, 310, 155, 310, 310, 310, + 76, 312, 312, 312, 312, 312, 10, 312, 312, 312, + 253, 288, 312, 312, 312, 312, 293, 39, 312, 312, + 312, 312, 312, 161, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 89, 87, 312, 77, + 277, 312, 312, 312, 312, 312, 312, 312, 180, 312, + 312, 312, 312, 312, 195, 312, 312, 312, 312, 312, + 312, 312, 312, 152, 71, 312, 312, 312, 312, 312, + 270, 312, 312, 312, 312, 312, 312, 312, 233, 312, + 312, 232, 131, 312, 86, 137, 138, 141, 142, 139, - 310, 310, 222, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 168, 167, 41, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 92, 310, 221, - 310, 244, 272, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 5, 310, 310, 213, 310, - 310, 273, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 232, 25, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 233, 310, 310, 310, 135, + 140, 79, 312, 254, 312, 312, 312, 312, 155, 312, + 312, 312, 312, 312, 224, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 168, 167, 41, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 92, + 312, 223, 312, 246, 274, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 5, 312, 312, + 215, 312, 312, 275, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 234, 25, 312, 312, 312, 312, 312, - 310, 310, 310, 310, 310, 310, 310, 310, 169, 310, - 176, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 269, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 290, 310, - 310, 240, 310, 310, 310, 310, 310, 270, 310, 310, - 310, 310, 310, 310, 271, 310, 310, 310, 238, 310, - 241, 242, 310, 310, 310, 310, 310, 239, 243, 0 + 312, 312, 312, 312, 312, 312, 312, 235, 312, 312, + 312, 135, 312, 312, 312, 312, 312, 312, 312, 312, + 169, 312, 176, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 271, 312, 312, 312, 312, 312, 312, 312, + 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 292, 312, 312, 242, 312, 312, 312, 312, 312, 272, + 312, 312, 312, 312, 312, 312, 273, 312, 312, 312, + 240, 312, 243, 244, 312, 312, 312, 312, 312, 241, + 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -744,693 +746,697 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3085] = +static const flex_int16_t yy_base[3097] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2197, 2057, 81, 5988, 5988, 5988, 96, 52, - 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1959, 5988, 5988, 5988, 107, 1846, 5988, 5988, - 5988, 165, 1569, 1315, 5988, 5988, 5988, 211, 1269, 5988, - 5988, 5988, 180, 948, 5988, 217, 5988, 221, 168, 767, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 90, 112, 1616, 1559, 81, 6016, 6016, 6016, 96, 52, + 106, 63, 107, 128, 70, 116, 123, 134, 57, 88, + 76, 145, 151, 114, 158, 97, 169, 181, 179, 188, + 194, 129, 1447, 6016, 6016, 6016, 135, 1315, 6016, 6016, + 6016, 146, 1142, 1110, 6016, 6016, 6016, 220, 1034, 6016, + 6016, 6016, 171, 903, 6016, 224, 6016, 228, 157, 818, + 232, 167, 0, 239, 0, 0, 165, 205, 85, 166, + 226, 190, 233, 234, 228, 240, 241, 242, 98, 130, + 250, 243, 245, 248, 258, 256, 262, 267, 273, 251, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 723, 379, 595, 381, 503, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 477, 464, - 465, 463, 486, 472, 488, 490, 487, 498, 499, 475, + 276, 272, 264, 281, 285, 275, 284, 289, 290, 287, + 302, 301, 303, 304, 307, 310, 312, 305, 315, 313, + 326, 319, 318, 324, 332, 327, 204, 329, 336, 331, + 342, 347, 348, 351, 353, 356, 360, 359, 352, 372, + 361, 721, 372, 711, 388, 597, 392, 432, 320, 383, + 235, 396, 400, 0, 392, 394, 402, 379, 398, 401, + 403, 404, 405, 406, 410, 407, 408, 425, 418, 423, + 429, 437, 435, 432, 439, 422, 442, 444, 445, 447, + 448, 457, 454, 460, 456, 462, 463, 464, 466, 467, + 483, 469, 473, 476, 485, 490, 494, 502, 486, 504, - 506, 504, 511, 516, 512, 489, 514, 501, 517, 491, - 518, 515, 522, 524, 525, 529, 530, 537, 534, 535, - 538, 532, 547, 543, 552, 544, 551, 555, 548, 558, - 566, 569, 549, 576, 559, 572, 573, 578, 581, 585, - 582, 580, 583, 590, 587, 589, 591, 593, 592, 600, - 610, 607, 608, 620, 609, 605, 616, 617, 618, 596, - 628, 627, 623, 632, 638, 629, 636, 639, 641, 643, - 642, 644, 646, 656, 649, 659, 652, 666, 661, 667, - 664, 676, 651, 662, 672, 673, 674, 678, 677, 679, - 684, 687, 688, 690, 691, 685, 698, 696, 700, 713, + 505, 495, 513, 510, 517, 518, 519, 508, 522, 509, + 524, 520, 523, 525, 527, 534, 533, 481, 535, 545, + 536, 540, 546, 537, 553, 549, 557, 552, 556, 175, + 554, 562, 566, 570, 563, 571, 574, 575, 576, 579, + 587, 590, 583, 580, 588, 592, 591, 598, 594, 595, + 596, 607, 615, 608, 611, 618, 617, 620, 621, 622, + 623, 599, 633, 625, 635, 629, 641, 626, 642, 645, + 640, 647, 648, 649, 650, 652, 660, 655, 663, 664, + 671, 668, 673, 670, 682, 658, 667, 677, 679, 680, + 683, 684, 687, 688, 690, 693, 695, 696, 697, 706, - 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, - 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5988, 760, 773, 771, 774, - 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5988, 815, 807, 849, - 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, - 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, - 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, - 893, 895, 902, 905, 904, 908, 916, 909, 915, 917, - 921, 922, 925, 927, 929, 923, 926, 933, 950, 931, + 701, 703, 717, 705, 710, 718, 719, 727, 712, 720, + 739, 744, 745, 733, 731, 747, 749, 752, 754, 760, + 755, 757, 763, 764, 765, 766, 773, 768, 6016, 772, + 774, 782, 784, 786, 790, 787, 796, 794, 777, 804, + 806, 802, 810, 832, 788, 800, 809, 811, 814, 6016, + 822, 816, 856, 827, 820, 840, 837, 836, 844, 845, + 838, 846, 867, 850, 849, 852, 879, 854, 862, 864, + 874, 880, 878, 887, 890, 886, 888, 894, 898, 895, + 896, 897, 907, 899, 901, 909, 910, 911, 914, 918, + 923, 928, 921, 915, 931, 926, 932, 936, 939, 933, - 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, - 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, - 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5988, 1007, 1009, 1011, 1012, 1013, 1010, 5988, 1014, 1015, - 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, - 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5988, 1071, 1077, 1080, - 1079, 1085, 1082, 1090, 1097, 1100, 1103, 1106, 1116, 1093, - 1117, 1111, 1113, 1072, 1118, 1123, 1125, 1126, 1127, 1128, - 1129, 1130, 1132, 1131, 1137, 1139, 5988, 1144, 1154, 1155, + 937, 943, 955, 950, 951, 959, 961, 960, 953, 966, + 962, 969, 972, 970, 978, 980, 981, 976, 982, 984, + 987, 993, 986, 988, 995, 997, 996, 1000, 1005, 1006, + 1010, 990, 1018, 1001, 6016, 1020, 1012, 1014, 1016, 1024, + 1026, 6016, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, + 1046, 1049, 1042, 1050, 1061, 1051, 1059, 1064, 1060, 1063, + 1066, 1069, 1072, 1070, 1077, 1073, 1067, 935, 1080, 1094, + 6016, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, + 1105, 1109, 1122, 1123, 1125, 1126, 1130, 1086, 1129, 1131, + 1133, 1134, 1136, 1137, 1135, 1138, 1144, 1140, 1145, 1141, - 1136, 1146, 1156, 1157, 1159, 1160, 1162, 1163, 1165, 1164, - 1169, 1179, 1170, 1183, 1180, 1181, 1185, 1186, 1188, 1187, - 1189, 1191, 1203, 1196, 1195, 1211, 1206, 1213, 1215, 1222, - 1204, 1217, 1218, 1219, 1221, 1224, 1226, 1228, 1230, 1232, - 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1246, - 1254, 1257, 1247, 1266, 1267, 1260, 1258, 5988, 1276, 1268, - 1278, 1279, 1280, 1284, 1286, 1282, 1288, 813, 1289, 1290, - 1292, 1294, 1299, 1296, 1297, 1300, 1304, 1307, 1311, 1318, - 1322, 1323, 1324, 1310, 1325, 1333, 1330, 1337, 1338, 1340, - 1348, 1336, 1343, 1346, 1350, 1334, 1352, 1354, 1355, 1357, + 6016, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, + 1171, 1172, 1174, 1173, 1178, 1192, 1182, 1193, 1189, 1195, + 1190, 1191, 1197, 1196, 1200, 1205, 1213, 1210, 1215, 1218, + 1226, 1225, 1228, 1235, 1237, 1211, 1230, 1203, 1222, 1234, + 1240, 1239, 1238, 1245, 1246, 1253, 1248, 1249, 1251, 1254, + 1263, 1255, 1258, 1265, 1262, 1269, 1266, 1259, 1271, 1278, + 1279, 1281, 6016, 1288, 1285, 1286, 1287, 1290, 1297, 1298, + 1292, 1299, 1302, 1301, 1305, 1304, 1307, 1311, 1312, 1316, + 1318, 1321, 1325, 1322, 1323, 1337, 1336, 1338, 1329, 1330, + 1346, 1345, 1348, 1349, 1351, 1359, 1341, 1355, 1357, 1366, - 1360, 1368, 1369, 1362, 1372, 1379, 1380, 1364, 1382, 1376, - 1383, 1314, 1370, 1387, 1390, 1391, 1398, 1393, 1394, 1399, - 1400, 1401, 1402, 1396, 1407, 1410, 1406, 1412, 1413, 1416, - 1423, 1418, 1417, 1425, 1426, 1428, 1429, 1437, 1430, 1438, - 1439, 1441, 1440, 1448, 1446, 1449, 1450, 1457, 1455, 1459, - 1456, 1465, 1467, 1469, 1471, 1472, 1473, 1475, 1474, 1478, - 1484, 1477, 1483, 1489, 1493, 1490, 1495, 1496, 1499, 1500, - 5988, 1501, 1508, 1503, 1506, 1512, 1513, 1514, 1521, 1517, - 1519, 1516, 1518, 1522, 1544, 5988, 1530, 5988, 5988, 1529, - 5988, 5988, 1527, 1531, 1535, 1548, 1539, 1554, 1547, 1541, + 1361, 1363, 1364, 1365, 1370, 1367, 1375, 1379, 1382, 1381, + 1389, 1390, 1384, 1395, 1387, 1396, 1392, 1399, 1400, 1401, + 1402, 1411, 1403, 1404, 1408, 1412, 1414, 1415, 1416, 1421, + 1425, 1424, 1429, 1426, 1430, 1431, 1433, 1437, 1439, 1440, + 1442, 1443, 1446, 1454, 1452, 1444, 1462, 1450, 1465, 1466, + 1467, 1468, 1469, 1472, 1471, 1474, 1475, 1483, 1484, 1485, + 1488, 1487, 1492, 1490, 1497, 1489, 1498, 1499, 1503, 1505, + 1506, 1510, 1513, 1516, 1511, 6016, 1507, 1523, 1521, 1524, + 1525, 1529, 1530, 1538, 1531, 1533, 1534, 1535, 1536, 1561, + 6016, 1542, 6016, 6016, 1545, 6016, 6016, 1544, 1543, 6016, - 1557, 1550, 1567, 1572, 1528, 1560, 1562, 1568, 1575, 1583, - 1585, 1586, 1588, 1594, 1596, 1597, 1599, 1606, 1607, 1565, - 1589, 1598, 1610, 1612, 1611, 1613, 1617, 1615, 1620, 1616, - 1623, 1618, 1628, 1633, 1625, 1642, 5988, 1639, 1643, 1651, - 1647, 1654, 1646, 1650, 1653, 1627, 1658, 1655, 1659, 1660, - 1662, 1664, 1667, 1670, 1668, 1678, 1671, 5988, 1673, 1675, - 1674, 1680, 1686, 1688, 1687, 1689, 1681, 1693, 1694, 1705, - 1696, 1700, 1701, 1708, 1709, 1710, 5988, 1712, 1719, 1711, - 1722, 1716, 1723, 1724, 1725, 1726, 1729, 1728, 1730, 1731, - 1735, 1742, 1739, 1740, 1741, 1745, 1750, 1753, 1757, 1764, + 1558, 1547, 1546, 1567, 1571, 1565, 1551, 1574, 1555, 1584, + 1589, 1577, 1579, 1585, 1586, 1592, 1598, 1587, 1604, 1599, + 1609, 1612, 1613, 1615, 1619, 1621, 1622, 1606, 1624, 1626, + 1629, 1627, 1630, 1632, 1636, 1637, 1633, 1640, 1639, 1649, + 1653, 1642, 1660, 6016, 1657, 1669, 1670, 1666, 1673, 1665, + 1672, 1674, 1645, 1656, 1675, 1676, 1679, 1680, 1677, 1686, + 1681, 1689, 1698, 1688, 6016, 1691, 1693, 1695, 1699, 1701, + 1703, 1708, 1709, 1705, 1711, 1712, 1722, 1714, 1717, 1718, + 1724, 1726, 1728, 6016, 1727, 1735, 1736, 1738, 1740, 1742, + 1744, 1741, 1745, 1746, 1747, 1748, 1749, 1753, 1760, 1759, - 1755, 1761, 1758, 1765, 1766, 1768, 1769, 1771, 1780, 1782, - 1779, 1783, 1772, 1787, 1795, 1794, 1784, 1785, 1796, 1799, - 1806, 1808, 1809, 1800, 1804, 1816, 1811, 1814, 1815, 1819, - 1822, 1823, 1825, 1826, 1828, 1832, 1830, 1834, 5988, 1836, - 1837, 5988, 1839, 1840, 1862, 1841, 1843, 1848, 1845, 1849, - 1854, 1855, 1866, 1864, 1868, 1885, 1872, 1877, 1875, 1887, - 1876, 1889, 1891, 1895, 1896, 1897, 1904, 1906, 1857, 1912, - 1914, 1899, 1901, 1909, 1928, 1911, 1913, 1917, 1925, 1932, - 1919, 1922, 1926, 1938, 1939, 1944, 1941, 5988, 1952, 1950, - 1949, 1951, 1961, 1960, 1956, 5988, 1962, 1963, 1966, 1973, + 1766, 1756, 1769, 1771, 1773, 1774, 1781, 1776, 1782, 1784, + 1785, 1786, 1788, 1789, 1792, 1800, 1801, 1797, 1805, 1798, + 1809, 1813, 1815, 1802, 1814, 1817, 1816, 1823, 1831, 1827, + 1820, 1828, 1835, 1832, 1840, 1833, 1842, 1844, 1845, 1846, + 1848, 1836, 1853, 1854, 1855, 6016, 1856, 1857, 6016, 1861, + 1862, 1884, 1863, 1865, 1867, 1876, 1866, 1868, 1870, 1878, + 1894, 1888, 1904, 1896, 1897, 1906, 1907, 1908, 1909, 1911, + 1915, 1916, 1877, 1917, 1924, 1932, 1928, 1934, 1937, 1919, + 1933, 1935, 1954, 1938, 1939, 1942, 1945, 1946, 1943, 1951, + 1949, 1958, 1964, 1966, 1967, 6016, 1975, 1976, 1970, 1972, - 1969, 1970, 1974, 1915, 1976, 1977, 1980, 1984, 1985, 1981, - 1983, 2001, 5988, 1986, 5988, 1991, 1988, 1996, 1998, 1999, - 2003, 2004, 2006, 5988, 5988, 2014, 2007, 2020, 2028, 2010, - 5988, 2013, 2031, 2032, 2024, 2026, 2034, 2035, 2037, 2039, - 2038, 2047, 2042, 2049, 2044, 2045, 2046, 5988, 2058, 2048, - 2063, 2065, 2056, 2066, 2073, 2064, 5988, 2074, 2067, 2075, - 2085, 2087, 2082, 2077, 2089, 2093, 2084, 2088, 2090, 2096, - 2098, 2103, 2106, 2104, 2108, 2112, 2120, 5988, 2101, 2105, - 2121, 2118, 2127, 2122, 2124, 2116, 2128, 2129, 2135, 2130, - 2136, 2137, 2139, 2146, 2148, 2144, 2145, 2152, 2143, 2153, + 1984, 1981, 1982, 6016, 1987, 1988, 1990, 1998, 1991, 1993, + 1994, 1995, 2002, 2003, 2005, 2004, 2009, 2008, 2007, 2025, + 6016, 2010, 6016, 2020, 2011, 2021, 2022, 2027, 2028, 2030, + 2032, 6016, 6016, 2033, 2039, 2041, 2050, 2046, 6016, 2047, + 2055, 2052, 2057, 2051, 2058, 2061, 2062, 2066, 2067, 2070, + 2068, 2075, 2071, 2076, 2073, 6016, 2089, 1940, 2085, 2091, + 2083, 2093, 2095, 2072, 6016, 2097, 2094, 2101, 2108, 2105, + 2106, 2109, 2111, 2112, 2116, 2117, 2118, 2119, 2120, 2129, + 2130, 2121, 2132, 2135, 2131, 6016, 2128, 2139, 2147, 2143, + 2145, 2142, 2149, 2150, 2152, 2153, 2154, 1879, 2155, 2160, - 2156, 2161, 2155, 2160, 2163, 2164, 5988, 2165, 2171, 124, - 2166, 2172, 2174, 2176, 2179, 2178, 2175, 2191, 2196, 2192, - 2198, 2194, 2193, 2201, 2203, 2202, 2204, 2205, 2206, 2209, - 5988, 2211, 2213, 2214, 2216, 2218, 2219, 2229, 5988, 2225, - 2230, 2237, 2233, 2238, 2241, 2242, 2246, 2247, 2249, 2250, - 2253, 2251, 2255, 5988, 2260, 2263, 2265, 2257, 2266, 2272, - 2273, 2275, 2278, 2267, 2279, 2280, 2281, 2284, 2283, 2285, - 2287, 2292, 2289, 2294, 2297, 2299, 5988, 2307, 2309, 2303, - 2300, 2310, 2312, 2319, 2316, 2322, 2321, 2325, 2337, 2327, - 2329, 2339, 2330, 2343, 2332, 2353, 2344, 2352, 2354, 2351, + 2161, 2169, 2170, 2162, 2174, 2166, 2167, 2175, 2176, 2182, + 2181, 2183, 2184, 2185, 6016, 2187, 2191, 147, 2193, 2194, + 2196, 2195, 2202, 2198, 2201, 2218, 2219, 2215, 2214, 2217, + 2223, 2224, 2225, 2226, 2227, 1751, 2228, 2229, 6016, 2205, + 2231, 2232, 2234, 2233, 2235, 2242, 6016, 2251, 2254, 2263, + 2253, 2257, 2264, 2265, 2268, 2266, 2269, 2270, 2273, 2272, + 2276, 2278, 6016, 2280, 2283, 2290, 2281, 2291, 2236, 2293, + 2292, 2294, 2298, 2299, 2300, 2303, 2304, 2305, 2306, 2308, + 2312, 2313, 2314, 2319, 2320, 6016, 2331, 2321, 2322, 2323, + 2332, 2333, 2342, 2338, 2340, 2346, 2347, 2360, 2349, 2344, - 2358, 2361, 2362, 2363, 2365, 2367, 2368, 2369, 2370, 2377, - 2384, 2375, 2385, 2386, 2390, 2396, 2392, 5988, 2397, 2398, - 2399, 2405, 2416, 2409, 2407, 2419, 2408, 2411, 2412, 2421, - 2423, 2432, 2427, 2425, 2430, 2434, 2435, 2436, 2438, 2441, - 2442, 2451, 2443, 2453, 2220, 5988, 2376, 2454, 2446, 2448, - 2461, 2455, 2463, 2467, 2464, 2470, 2471, 2473, 2474, 2476, - 2477, 2478, 2480, 2482, 2481, 5988, 2485, 2486, 2490, 2493, - 2498, 2496, 2500, 2506, 2508, 2510, 2502, 2512, 2514, 2513, - 5988, 2522, 2523, 2519, 2531, 2527, 2528, 2529, 2533, 2530, - 5988, 2534, 2535, 2543, 2544, 2539, 5988, 2548, 2541, 2546, + 2356, 2351, 2358, 2355, 2367, 2366, 2370, 2376, 2372, 2380, + 2382, 2374, 2378, 2386, 2384, 2392, 2388, 2389, 2405, 2406, + 2398, 2408, 2401, 2390, 2416, 2409, 6016, 2418, 2411, 2423, + 2424, 2431, 2427, 2428, 2429, 2432, 2435, 2437, 2438, 2439, + 2448, 2451, 2447, 2440, 2458, 2445, 2460, 2443, 2449, 2462, + 2465, 2466, 2471, 2473, 6016, 2476, 2472, 2468, 2480, 2483, + 2478, 2485, 2490, 2488, 2486, 2492, 2495, 2496, 2497, 2499, + 2501, 2502, 2503, 2504, 6016, 2509, 2508, 2510, 2514, 2520, + 2518, 2524, 2527, 2530, 2533, 2517, 2534, 2536, 2537, 6016, + 2545, 2547, 2544, 2548, 2546, 2551, 2552, 2554, 2556, 6016, - 2551, 2553, 2552, 2556, 2549, 2559, 2560, 2568, 2565, 2562, - 2571, 5988, 2572, 2580, 2575, 2577, 2581, 2582, 2583, 2587, - 2592, 2588, 2594, 5988, 2601, 2599, 2604, 2612, 2607, 2609, - 2610, 2613, 2614, 2616, 2617, 5988, 2619, 2620, 2622, 2623, - 2625, 2627, 2630, 2642, 2631, 2634, 2641, 2639, 2644, 2646, - 2647, 2650, 2651, 2648, 2658, 2660, 2662, 2663, 2664, 2668, - 2676, 2678, 2674, 2679, 5988, 2682, 2683, 2684, 2671, 2686, - 2688, 2690, 2691, 2694, 2696, 2701, 2695, 2698, 2708, 2711, - 2699, 2712, 2715, 2716, 2718, 2720, 2721, 2722, 2723, 2730, - 2726, 2728, 2738, 2729, 2733, 2743, 2736, 2744, 2745, 2746, + 2557, 2558, 2565, 2566, 2561, 6016, 2568, 2564, 2569, 2571, + 2572, 2573, 2574, 2579, 2580, 2582, 2585, 2588, 2592, 2593, + 6016, 2594, 2602, 2603, 2595, 2606, 2597, 2607, 2608, 2612, + 2616, 2610, 6016, 2625, 2627, 2628, 2635, 2630, 2632, 2633, + 2636, 2637, 2638, 2640, 2643, 6016, 2646, 2644, 2647, 2652, + 2650, 2648, 2655, 2667, 2657, 2659, 2668, 2664, 2670, 2671, + 2672, 2673, 2676, 2675, 2683, 2686, 2684, 2688, 2689, 2691, + 2701, 2703, 2704, 2706, 6016, 2709, 2698, 2711, 2700, 2712, + 2713, 2714, 2715, 2717, 2719, 2724, 2722, 2723, 2731, 2739, + 2732, 2734, 2740, 2741, 2744, 2743, 2745, 2746, 2747, 2755, - 2747, 2749, 2751, 2752, 2756, 2750, 2758, 2768, 2769, 2771, - 2760, 2772, 2776, 2777, 5988, 2780, 2782, 2778, 2784, 2785, - 2791, 2792, 2794, 2795, 2786, 2800, 2802, 2803, 2808, 2809, - 2811, 2818, 2814, 5988, 2815, 5988, 2816, 2817, 2819, 2829, - 2821, 5988, 2825, 5988, 2832, 2839, 2826, 2830, 5988, 2840, - 2834, 2836, 2847, 2844, 2849, 2850, 2851, 2852, 2857, 2853, - 2855, 2860, 2861, 2863, 2865, 2867, 2871, 2868, 2878, 2880, - 2872, 2881, 2874, 2887, 2889, 2888, 2890, 5988, 2900, 2891, - 2894, 2897, 2901, 2902, 2903, 2905, 2906, 2911, 2912, 2913, - 2914, 2920, 2919, 2929, 2925, 2936, 5988, 2928, 2933, 2935, + 2751, 2750, 2763, 2754, 2761, 2768, 2758, 2769, 2770, 2771, + 2772, 2774, 2778, 2779, 2781, 2775, 2783, 2792, 2794, 2796, + 2785, 2797, 2801, 2802, 6016, 2805, 2807, 2803, 2809, 2810, + 2816, 2817, 2819, 2820, 2811, 2825, 2827, 2828, 2833, 2834, + 2836, 2843, 2839, 6016, 2840, 6016, 2841, 2842, 2844, 2854, + 2846, 6016, 2850, 6016, 2857, 2864, 2851, 2855, 6016, 2865, + 2859, 2861, 2872, 2869, 2874, 2875, 2876, 2877, 2882, 2878, + 2880, 2885, 2886, 2888, 2890, 2892, 2896, 2893, 2903, 2905, + 2897, 2906, 2899, 2912, 2914, 2913, 2915, 6016, 2925, 2916, + 2919, 2922, 2926, 2927, 2928, 2930, 2931, 2936, 2937, 2938, - 2937, 5988, 2939, 2938, 2940, 2946, 2949, 2948, 2950, 2952, - 2956, 2958, 2951, 2961, 2959, 2968, 2969, 5988, 2974, 2975, - 2960, 2978, 2982, 2984, 2986, 2990, 2998, 2994, 2993, 2977, - 2996, 2997, 3000, 3007, 3008, 3004, 3011, 3010, 3013, 3020, - 3016, 3012, 3014, 3022, 3023, 3024, 3027, 3028, 3031, 3026, - 3029, 3036, 3032, 5988, 3044, 3035, 3040, 3047, 3051, 3054, - 3052, 3056, 3058, 3057, 3062, 3061, 3059, 5988, 3063, 5988, - 3060, 3077, 3065, 3082, 3079, 3071, 3084, 3093, 3086, 3088, - 3090, 3096, 3094, 3098, 3097, 3100, 3103, 3102, 3110, 3109, - 3105, 3116, 3117, 3118, 3120, 3121, 5988, 5988, 3122, 3123, + 2939, 2945, 2944, 2954, 2950, 2961, 6016, 2953, 2958, 2960, + 2962, 6016, 2964, 2963, 2965, 2971, 2974, 2973, 2975, 2977, + 2981, 2983, 2976, 2986, 2984, 2993, 2994, 6016, 2999, 3000, + 2985, 3003, 3002, 3015, 3007, 3016, 3018, 3020, 3021, 3011, + 3022, 3023, 3025, 3027, 3034, 3035, 3031, 3038, 3033, 3039, + 3047, 3043, 3037, 3041, 3049, 3050, 3051, 3054, 3057, 3058, + 3053, 3059, 3060, 3062, 6016, 3068, 3071, 3072, 3075, 3063, + 3080, 3081, 3082, 3084, 3086, 3085, 3087, 3088, 6016, 3095, + 6016, 3089, 3103, 3098, 3108, 3090, 3109, 3113, 3112, 3117, + 3118, 3119, 3120, 3121, 3122, 3123, 3126, 3134, 3133, 3135, - 3126, 3124, 3128, 3134, 3130, 3142, 3138, 3144, 3146, 3148, - 3156, 5988, 3149, 3153, 3152, 3159, 3171, 3157, 3161, 3176, - 3172, 3179, 3178, 5988, 3169, 3180, 3187, 3182, 3183, 3191, - 5988, 3188, 5988, 3190, 3193, 3197, 3198, 3200, 3201, 3202, - 3203, 3211, 3221, 3224, 3206, 3223, 3208, 3220, 3225, 3226, - 3233, 3229, 3230, 3231, 5988, 3235, 3236, 3237, 3199, 3240, - 3242, 3243, 3248, 5988, 3250, 3254, 3255, 3257, 3258, 3260, - 3261, 3263, 3264, 3266, 3262, 3267, 3279, 3268, 3272, 3282, - 3284, 3286, 3292, 5988, 3293, 3285, 3301, 3297, 3299, 3300, - 3303, 3304, 3305, 3307, 3308, 3309, 3310, 3316, 3315, 3312, + 3148, 3131, 3128, 3136, 3139, 3144, 3149, 6016, 6016, 3150, + 3152, 3155, 3157, 3158, 3159, 3162, 3169, 3166, 3165, 3168, + 3172, 3180, 6016, 3182, 3176, 3184, 3187, 3194, 3185, 3198, + 3199, 3195, 3207, 3202, 6016, 3204, 3205, 3215, 3210, 3211, + 3218, 6016, 3213, 6016, 3216, 3217, 3222, 3225, 3226, 3227, + 3228, 3229, 3232, 3244, 3247, 3233, 3249, 3237, 3245, 3250, + 3251, 3258, 3254, 3255, 3256, 6016, 3260, 3261, 3262, 3265, + 3267, 3268, 3275, 3277, 6016, 3278, 3280, 3282, 3283, 3285, + 3287, 3288, 3289, 3291, 3294, 3290, 3292, 3305, 3298, 3297, + 3307, 3317, 3308, 3319, 6016, 3320, 3314, 3327, 3329, 3322, - 3313, 3318, 3329, 3331, 3332, 3321, 3339, 3323, 3337, 3342, - 3340, 3343, 3348, 3349, 3352, 3354, 3346, 3368, 3369, 3355, - 3357, 3372, 3359, 3379, 3374, 5988, 3381, 3365, 3386, 3382, - 3384, 3389, 3390, 3398, 3396, 3385, 3393, 3400, 3397, 5988, - 3412, 3402, 3399, 3403, 3404, 3424, 3420, 3421, 3422, 3426, - 3423, 3427, 3430, 3431, 3432, 3435, 3436, 5988, 5988, 3438, - 3439, 3442, 5988, 3445, 3440, 3452, 3448, 3444, 3455, 3459, - 3458, 3457, 3462, 3460, 3468, 5988, 3469, 3477, 3472, 3473, - 3481, 3482, 3479, 3485, 3487, 3488, 3491, 3489, 3494, 3493, - 3495, 3498, 3506, 3509, 3502, 3504, 3512, 5988, 3505, 3507, + 3324, 3330, 3331, 3332, 3335, 3337, 3336, 3338, 3340, 3342, + 3339, 3349, 3343, 3356, 3345, 3359, 3365, 3366, 3346, 6016, + 3362, 3369, 3370, 3373, 3372, 3376, 3379, 3383, 3380, 3392, + 3393, 3384, 3387, 3396, 3397, 3404, 3399, 6016, 3409, 3389, + 3412, 3410, 3411, 3416, 3417, 3419, 3420, 3421, 3422, 3429, + 3424, 6016, 3431, 3426, 3436, 3437, 3428, 3451, 3446, 3427, + 3449, 3453, 3450, 3456, 3454, 3458, 3459, 3462, 3463, 6016, + 6016, 3465, 3466, 3468, 6016, 3469, 3467, 3479, 3472, 3475, + 3482, 3485, 3481, 3484, 3486, 3489, 3493, 6016, 3494, 3501, + 3498, 3500, 3508, 3511, 3504, 3512, 3513, 3506, 3514, 3516, - 3513, 3515, 3517, 3520, 5988, 3523, 3524, 3527, 3530, 3538, - 3540, 3534, 3547, 3531, 3541, 3543, 3548, 3549, 3551, 3560, - 3557, 3556, 3559, 3563, 3566, 5988, 3565, 3567, 3568, 3576, - 5988, 3580, 3587, 3590, 3591, 3573, 3577, 3589, 3598, 5988, - 3593, 3596, 3594, 3595, 3603, 3602, 3610, 3607, 5988, 3609, - 3608, 3611, 5988, 3612, 3613, 3618, 3623, 3625, 3632, 3628, - 3630, 3631, 3629, 5988, 3636, 5988, 3639, 3640, 3643, 5988, - 3646, 3647, 3648, 3650, 3651, 3656, 3657, 3655, 3663, 3664, - 3666, 3667, 3665, 3670, 3674, 3671, 3672, 3676, 3677, 5988, - 3678, 3680, 3687, 3692, 3688, 3695, 3682, 3699, 3700, 5988, + 3520, 3519, 3521, 3524, 3535, 3536, 3531, 3527, 3534, 6016, + 3532, 3539, 3540, 3544, 3541, 3548, 6016, 3546, 3549, 3550, + 3555, 3558, 3562, 3559, 3568, 3569, 3571, 3572, 3573, 3574, + 3576, 3583, 3580, 3579, 3582, 3586, 3588, 6016, 3589, 3593, + 3597, 3600, 6016, 3602, 3611, 3612, 3613, 3603, 3614, 3608, + 3621, 6016, 3616, 3618, 3623, 3624, 3631, 3626, 3633, 3630, + 6016, 3632, 3634, 3636, 6016, 3637, 3638, 3646, 3651, 3643, + 3658, 3654, 3656, 3659, 3655, 6016, 3657, 6016, 3666, 3667, + 3670, 6016, 3668, 3672, 3673, 3675, 3676, 3677, 3681, 3688, + 3683, 3689, 3690, 3691, 3692, 3694, 3701, 3693, 3697, 3700, - 5988, 3702, 5988, 3705, 3706, 3709, 5988, 3711, 3710, 3718, - 3714, 3715, 3717, 3721, 3727, 5988, 3723, 3728, 3732, 3729, - 3734, 3737, 3739, 3740, 3736, 3741, 3744, 5988, 3745, 3742, - 3747, 3743, 3753, 3757, 3759, 3758, 5988, 3766, 3767, 3768, - 3770, 3772, 5988, 3774, 5988, 3776, 3780, 3781, 3782, 3777, - 5988, 3785, 3788, 3791, 3792, 3795, 3797, 3798, 3801, 3804, - 3805, 3813, 3809, 3808, 3811, 5988, 3810, 3812, 3816, 3823, - 3817, 3820, 3833, 3830, 3834, 3828, 3831, 3838, 3841, 3842, - 3844, 3848, 3849, 3850, 5988, 3851, 3856, 3852, 3865, 3861, - 3855, 5988, 3862, 3866, 3872, 5988, 3869, 3875, 3876, 3879, + 3702, 6016, 3712, 3704, 3705, 3719, 3717, 3709, 3707, 3725, + 3723, 6016, 6016, 3732, 6016, 3734, 3727, 3729, 6016, 3733, + 3735, 3744, 3739, 3740, 3750, 3747, 3751, 6016, 3753, 3742, + 3754, 3757, 3758, 3761, 3763, 3764, 3765, 3767, 3768, 6016, + 3769, 3771, 3778, 3770, 3772, 3781, 3780, 3786, 6016, 3790, + 3794, 3793, 3797, 3798, 6016, 3799, 6016, 3800, 3801, 3803, + 3807, 3804, 6016, 3812, 3813, 3817, 3819, 3820, 3822, 3821, + 3828, 3829, 3830, 3837, 3834, 3835, 3832, 6016, 3836, 3838, + 3842, 3843, 3846, 3849, 3857, 3853, 3854, 3859, 3860, 3863, + 3866, 3864, 3870, 3872, 3874, 3867, 6016, 3875, 3880, 3873, - 3880, 3881, 3884, 3883, 3886, 5988, 3890, 3891, 3887, 3888, - 3889, 3896, 5988, 5988, 3904, 5988, 3906, 3892, 3909, 3908, - 3911, 3913, 3917, 3918, 3920, 3914, 3921, 3929, 3928, 3938, - 3945, 3946, 3944, 3935, 3930, 5988, 5988, 3949, 3951, 3953, - 3955, 3956, 3958, 3942, 3965, 3963, 3971, 3974, 3964, 3967, - 5988, 3975, 3976, 3978, 5988, 3980, 3981, 3983, 3984, 3985, - 3989, 3987, 3988, 3992, 3991, 3994, 3998, 3995, 4004, 4000, - 4011, 4001, 4012, 4014, 4015, 4019, 5988, 4016, 4021, 4022, - 4025, 4028, 4030, 4029, 4031, 4032, 5988, 4036, 4035, 4039, - 4044, 4045, 4047, 4037, 4055, 4062, 4056, 4063, 4064, 4058, + 3889, 3886, 3890, 6016, 3891, 3892, 3893, 6016, 3896, 3899, + 3901, 3905, 3900, 3906, 3907, 3908, 3911, 6016, 3913, 3915, + 3912, 3916, 3928, 3920, 6016, 6016, 3930, 6016, 3931, 3917, + 3935, 3934, 3914, 3938, 3942, 3944, 3946, 3943, 3951, 3954, + 3948, 3964, 3966, 3971, 3967, 3968, 3957, 6016, 6016, 3973, + 3974, 3969, 3980, 3981, 3983, 3984, 3991, 3987, 3993, 3997, + 3998, 4005, 6016, 3986, 3988, 4006, 6016, 4001, 4004, 4007, + 4012, 4011, 4013, 4017, 4014, 4015, 4018, 4022, 4019, 4024, + 4032, 4025, 4029, 4028, 4038, 4035, 4036, 4045, 6016, 4042, + 4046, 4049, 4052, 4053, 4055, 4057, 4058, 4059, 6016, 4056, - 4069, 4072, 5988, 4073, 4046, 4074, 4075, 4080, 4082, 4083, - 4085, 4086, 4089, 4090, 4091, 4093, 4098, 4095, 4099, 4100, - 4101, 5988, 4106, 4113, 4103, 4116, 4107, 4117, 4118, 4126, - 4129, 4119, 4124, 4130, 4132, 5988, 4133, 4134, 4135, 4136, - 4144, 4137, 4141, 4145, 4147, 5988, 4152, 4148, 4154, 4155, - 4158, 4159, 4163, 4164, 4166, 4170, 4178, 5988, 4167, 4180, - 4182, 4174, 4171, 4173, 4183, 4186, 5988, 4190, 4192, 4191, - 4207, 4193, 4208, 4200, 4204, 4203, 4210, 4213, 4211, 4215, - 4217, 4218, 4219, 4231, 4235, 4230, 5988, 4221, 5988, 4236, - 4237, 4246, 4242, 4232, 5988, 4239, 4244, 4248, 4249, 4250, + 4061, 4063, 4069, 4062, 4072, 4083, 4087, 4089, 4064, 4081, + 4090, 4092, 4096, 4093, 6016, 4097, 4099, 4100, 4103, 4106, + 4108, 4109, 4111, 4112, 4114, 4116, 4117, 4124, 4126, 4118, + 4127, 4121, 4129, 6016, 4133, 4140, 4134, 4142, 4137, 4067, + 4143, 4144, 4150, 4147, 4152, 4151, 4157, 6016, 4154, 4158, + 4161, 4159, 4165, 4168, 4172, 4169, 4171, 6016, 4179, 4162, + 4173, 4175, 4183, 4185, 4188, 4190, 4193, 4192, 4195, 6016, + 4196, 4199, 4200, 4197, 4206, 4207, 4211, 4209, 6016, 4212, + 4218, 4210, 4226, 4221, 4230, 4227, 4229, 4231, 4233, 4236, + 4238, 4240, 4241, 4243, 4237, 4254, 4259, 4257, 6016, 4244, - 5988, 4253, 4256, 4258, 4257, 5988, 4263, 4262, 4261, 4268, - 4271, 4274, 5988, 4277, 4279, 4278, 4290, 4291, 4287, 4288, - 4292, 4289, 4294, 4295, 4296, 4304, 4299, 4300, 5988, 4303, - 4306, 4311, 4312, 4315, 4316, 4318, 4320, 4321, 5988, 4323, - 4325, 4326, 4327, 4329, 4330, 4332, 4344, 4342, 4331, 5988, - 4335, 4347, 4359, 4354, 4355, 5988, 5988, 4356, 4339, 4358, - 4343, 4363, 5988, 4367, 4366, 4365, 4373, 4374, 5988, 5988, - 4376, 5988, 4368, 5988, 4378, 4379, 5988, 5988, 4380, 4381, - 4382, 4384, 4391, 5988, 4394, 5988, 4402, 4397, 4388, 4399, - 4400, 5988, 4401, 4403, 4409, 5988, 4410, 4412, 4411, 4413, + 6016, 4258, 4262, 4266, 4268, 4265, 6016, 4255, 4270, 4273, + 4274, 4275, 6016, 4276, 4278, 4280, 4279, 6016, 4290, 4292, + 4281, 4296, 4283, 4298, 6016, 4303, 4304, 4300, 4312, 4315, + 4311, 4313, 4316, 4314, 4318, 4319, 4320, 4328, 4323, 4324, + 6016, 4330, 4333, 4340, 4341, 4335, 4325, 4343, 4349, 4342, + 6016, 4351, 4350, 4352, 4353, 4354, 4357, 4359, 4366, 4362, + 4361, 6016, 4365, 4369, 4382, 4363, 4373, 6016, 6016, 4378, + 4383, 4385, 4380, 4386, 6016, 4389, 4396, 4391, 4395, 4398, + 6016, 6016, 4400, 6016, 4397, 6016, 4402, 4401, 6016, 6016, + 4404, 4405, 4408, 4414, 4411, 6016, 4421, 6016, 4418, 4422, - 5988, 4417, 4422, 4414, 4418, 5988, 4423, 4427, 4430, 4431, - 4432, 4434, 4438, 4437, 4442, 4443, 4445, 4444, 4447, 4454, - 4458, 4460, 4462, 4463, 4448, 4465, 4467, 4471, 4469, 4473, - 4474, 4476, 4478, 4479, 4483, 4487, 4480, 4484, 4488, 4489, - 4490, 4497, 4493, 4499, 4504, 4500, 4505, 4506, 4507, 4508, - 4511, 4514, 4512, 4518, 4522, 5988, 4516, 4517, 4523, 4524, - 4528, 4530, 4536, 4544, 4548, 4549, 5988, 4551, 5988, 4553, - 4538, 4529, 4545, 5988, 4555, 4558, 4557, 4560, 4559, 4561, - 4563, 4562, 4566, 4567, 4569, 5988, 4572, 4573, 4574, 4578, - 5988, 4587, 4589, 4586, 4590, 4591, 4592, 4593, 4594, 4597, + 4424, 4425, 4427, 6016, 4426, 4429, 4434, 6016, 4428, 4436, + 4435, 4439, 6016, 4443, 4446, 4438, 4444, 6016, 4450, 4456, + 4458, 4448, 4452, 4459, 4465, 4460, 4468, 4469, 4470, 4471, + 4472, 4479, 4484, 4486, 4488, 4480, 4476, 4490, 4496, 4498, + 4489, 4493, 4500, 4502, 4504, 4506, 4508, 4510, 4511, 4512, + 4514, 4515, 4513, 4523, 4516, 4517, 4530, 4526, 4519, 4531, + 4534, 4532, 4538, 4539, 4541, 4542, 4543, 6016, 4544, 4546, + 4548, 4560, 4553, 4549, 4559, 4566, 4570, 4572, 6016, 4574, + 6016, 4576, 4561, 4578, 4580, 6016, 4581, 4582, 4583, 4584, + 4585, 4586, 4588, 4587, 4591, 4592, 4595, 6016, 4598, 4593, - 4599, 4601, 4603, 4615, 4605, 4606, 4610, 4614, 4616, 4617, - 4620, 4622, 4627, 4628, 4632, 5988, 4633, 5988, 4634, 4635, - 4638, 4639, 4640, 4641, 4644, 5988, 5988, 4642, 4646, 4648, - 4651, 4653, 4656, 4660, 5988, 4657, 4665, 4668, 4670, 5988, - 4658, 4674, 4675, 4677, 5988, 4678, 4679, 4680, 4682, 4685, - 4687, 4691, 4689, 4692, 4693, 4700, 5988, 5988, 5988, 5988, - 4701, 4697, 4707, 4703, 4709, 4711, 4712, 4714, 4710, 5988, - 4718, 5988, 5988, 4723, 4724, 4726, 4727, 4730, 4715, 4733, - 4731, 5988, 4735, 4736, 4743, 4737, 4745, 4747, 4749, 4753, - 4751, 4754, 4761, 4757, 4759, 4763, 4765, 4767, 4774, 5988, + 4602, 4613, 6016, 4608, 4619, 4603, 4614, 4616, 4620, 4622, + 4624, 4625, 4626, 4628, 4630, 4637, 4633, 4634, 4636, 4638, + 4639, 4644, 4647, 4646, 4654, 4656, 4661, 6016, 4650, 6016, + 4657, 4662, 4663, 4665, 4667, 4668, 4670, 6016, 6016, 4671, + 4673, 4678, 4679, 4674, 4683, 4680, 6016, 4686, 4693, 4696, + 4687, 6016, 4690, 4698, 4699, 4703, 6016, 4704, 4706, 4707, + 4709, 4710, 4713, 4717, 4714, 4720, 4721, 4725, 6016, 6016, + 6016, 6016, 4726, 4728, 4731, 4732, 4734, 4735, 4737, 4739, + 4740, 6016, 4742, 6016, 6016, 4743, 4749, 4751, 4752, 4753, + 4756, 4758, 4760, 6016, 4759, 4764, 4766, 4762, 4773, 4779, - 5988, 4764, 4776, 4768, 4785, 4781, 4782, 4789, 4788, 4790, - 4791, 4793, 4794, 4780, 4803, 4804, 4805, 4799, 5988, 4807, - 4806, 5988, 4813, 5988, 4814, 4815, 4816, 4817, 4818, 4822, - 4823, 4826, 5988, 5988, 4821, 4828, 4832, 4837, 4833, 4829, - 4839, 4842, 4843, 5988, 4844, 5988, 4845, 4846, 4856, 4847, - 4863, 4864, 4866, 4868, 4853, 4869, 5988, 4870, 4871, 5988, - 4873, 4875, 4876, 5988, 4880, 4878, 4883, 4886, 5988, 4888, - 4890, 4892, 5988, 4899, 5988, 4893, 4895, 4902, 4907, 5988, - 4903, 4904, 5988, 4909, 4911, 4912, 4916, 5988, 4917, 5988, - 4918, 4920, 4921, 4925, 4926, 4928, 4930, 4931, 4932, 4939, + 4763, 4776, 4780, 4782, 4789, 4785, 4786, 4784, 4788, 4792, + 4795, 6016, 6016, 4796, 4802, 4803, 4811, 4807, 4808, 4820, + 4815, 4816, 4817, 4818, 4822, 4804, 4829, 4834, 4827, 4824, + 6016, 4835, 4838, 6016, 4831, 6016, 4837, 4839, 4845, 4846, + 4847, 4848, 4849, 4851, 6016, 6016, 4852, 4853, 4855, 4862, + 4858, 4866, 4854, 4865, 4867, 6016, 4868, 6016, 4870, 4872, + 4879, 4880, 4887, 4888, 4891, 4893, 4889, 4894, 6016, 4895, + 4896, 6016, 4898, 4900, 4901, 6016, 4906, 4903, 4911, 4913, + 6016, 4918, 4915, 4920, 6016, 4923, 6016, 4908, 4924, 4926, + 4933, 6016, 4930, 4934, 6016, 4937, 4940, 4941, 4942, 6016, - 4937, 4940, 5988, 5988, 4948, 4934, 4945, 4950, 4952, 4959, - 4951, 4956, 4955, 5988, 5988, 4961, 5988, 4963, 4964, 5988, - 4962, 4969, 4968, 4973, 4974, 4975, 4977, 4980, 4982, 4990, - 4983, 4981, 4994, 5004, 4988, 5006, 5008, 5010, 5012, 5014, - 5016, 4984, 4999, 5017, 5018, 5020, 5021, 5988, 5023, 5025, - 5024, 5988, 5030, 5026, 5035, 5031, 5988, 5038, 5039, 5044, - 5045, 5988, 5046, 5050, 5047, 5052, 5055, 5063, 5056, 5058, - 5068, 5988, 5988, 5988, 5060, 5074, 5988, 5076, 5066, 5059, - 5071, 5988, 5077, 5078, 5988, 5988, 5079, 5082, 5081, 5093, - 5988, 5083, 5988, 5085, 5988, 5092, 5094, 5102, 5096, 5988, + 4931, 6016, 4943, 4946, 4947, 4952, 4953, 4957, 4954, 4958, + 4959, 4966, 4962, 4965, 6016, 6016, 4978, 4964, 4970, 4971, + 4974, 4981, 4979, 4982, 4984, 6016, 6016, 4988, 6016, 4989, + 4992, 6016, 4985, 4996, 4994, 4998, 5000, 5001, 5002, 5006, + 5008, 5014, 5009, 5007, 5019, 5030, 5013, 5034, 5035, 5037, + 5039, 5041, 5015, 5043, 5044, 5020, 5045, 5047, 5049, 6016, + 5051, 5052, 5053, 6016, 5057, 5058, 5060, 5061, 6016, 5063, + 5068, 5070, 5072, 6016, 5073, 5075, 5076, 5078, 5082, 5089, + 5085, 5084, 5086, 6016, 6016, 6016, 5094, 5096, 6016, 5101, + 5092, 5102, 5103, 6016, 5104, 5105, 6016, 6016, 5107, 5109, - 5107, 5109, 5988, 5115, 5117, 5119, 5111, 5088, 5121, 5122, - 5988, 5129, 5125, 5126, 5133, 5124, 5128, 5134, 5135, 5143, - 5136, 5145, 5988, 5146, 5147, 5151, 5154, 5138, 5148, 5158, - 5988, 5160, 5988, 5162, 5164, 5165, 5167, 5166, 5168, 5171, - 5180, 5170, 5173, 5174, 5988, 5184, 5189, 5988, 5181, 5988, - 5191, 5988, 5192, 5194, 5195, 5198, 5988, 5200, 5186, 5197, - 5204, 5988, 5212, 5201, 5205, 5217, 5988, 5988, 5207, 5225, - 5209, 5218, 5222, 5229, 5226, 5231, 5232, 5233, 5234, 5241, - 5236, 5237, 5238, 5245, 5248, 5252, 5988, 5988, 5988, 5247, - 5256, 5263, 5261, 5262, 5270, 5266, 5988, 5267, 5268, 5269, + 5108, 5116, 6016, 5111, 6016, 5112, 6016, 5114, 5115, 5124, + 5122, 6016, 5129, 5135, 6016, 5138, 5141, 5143, 5144, 5126, + 5130, 5145, 6016, 5154, 5147, 5151, 5158, 5155, 5159, 5160, + 5161, 5168, 5163, 5167, 6016, 5170, 5164, 5171, 5177, 5172, + 5175, 5181, 6016, 5183, 6016, 5184, 5185, 5189, 5186, 5187, + 5192, 5194, 5199, 5196, 5206, 5200, 6016, 5208, 5210, 6016, + 5212, 6016, 5214, 6016, 5215, 5216, 5218, 5220, 6016, 5224, + 5217, 5221, 5226, 6016, 5227, 5229, 5230, 5236, 6016, 6016, + 5238, 5246, 5242, 5239, 5251, 5253, 5248, 5255, 5256, 5257, + 5259, 5269, 5241, 5264, 5262, 5271, 5272, 5277, 6016, 6016, - 5277, 5274, 5279, 5988, 5275, 5280, 5281, 5282, 5286, 5283, - 5290, 5988, 5294, 5297, 5300, 5289, 5304, 5308, 5311, 5313, - 5314, 5988, 5316, 5988, 5988, 5301, 5988, 5317, 5318, 5321, - 5322, 5988, 5325, 5327, 5326, 5328, 5330, 5332, 5988, 5342, - 5333, 5335, 5344, 5988, 5988, 5348, 5988, 5351, 5352, 5345, - 5361, 5356, 5358, 5363, 5360, 5988, 5364, 5367, 5369, 5370, - 5371, 5988, 5372, 5373, 5375, 5376, 5379, 5378, 5381, 5383, - 5385, 5988, 5386, 5388, 5406, 5402, 5988, 5389, 5401, 5988, - 5988, 5411, 5413, 5334, 5988, 5988, 5988, 5416, 5988, 5418, - 5422, 5426, 5430, 5421, 5988, 5432, 5429, 5434, 5988, 5988, + 6016, 5273, 5280, 5287, 5284, 5286, 5294, 5290, 6016, 5291, + 5292, 5293, 5301, 5298, 5303, 6016, 5299, 5304, 5305, 5306, + 5310, 5307, 5314, 6016, 5318, 5321, 5324, 5313, 5328, 5332, + 5335, 5337, 5338, 6016, 5340, 6016, 6016, 5325, 6016, 5341, + 5342, 5345, 5346, 6016, 5349, 5351, 5350, 5352, 5354, 5356, + 6016, 5366, 5357, 5359, 5368, 6016, 6016, 5372, 6016, 5375, + 5376, 5369, 5385, 5380, 5382, 5387, 5384, 6016, 5388, 5391, + 5393, 5394, 5395, 6016, 5396, 5397, 5399, 5400, 5403, 5402, + 5405, 5407, 5409, 6016, 5410, 5412, 5430, 5426, 6016, 5413, + 5425, 6016, 6016, 5435, 5437, 5358, 6016, 6016, 6016, 5440, - 5433, 5435, 5436, 5438, 5988, 5988, 5439, 5442, 5440, 5443, - 5445, 5988, 5450, 5454, 5456, 5459, 5462, 5451, 5465, 5467, - 5475, 5477, 5472, 5473, 5478, 5480, 5481, 5482, 5484, 5493, - 5489, 5491, 5503, 5500, 5988, 5988, 5507, 5988, 5988, 5509, - 5511, 5513, 5515, 5517, 5519, 5521, 5988, 5522, 5524, 5525, - 5393, 5526, 5988, 5528, 5530, 5527, 5532, 5492, 5535, 5533, - 5538, 5988, 5988, 5539, 5540, 5541, 5549, 5544, 5988, 5551, - 5558, 5555, 5556, 5553, 5559, 5560, 5988, 5564, 5565, 5988, - 5988, 5563, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, - 5568, 5988, 5566, 5581, 5583, 5585, 5988, 5573, 5586, 5494, + 6016, 5442, 5446, 5450, 5454, 5445, 6016, 5456, 5453, 5458, + 6016, 6016, 5457, 5459, 5460, 5462, 6016, 6016, 5463, 5466, + 5464, 5467, 5469, 6016, 5474, 5478, 5480, 5483, 5486, 5475, + 5489, 5491, 5499, 5501, 5496, 5497, 5502, 5504, 5505, 5506, + 5508, 5517, 5513, 5515, 5527, 5524, 6016, 6016, 5531, 6016, + 6016, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 6016, 5546, + 5548, 5549, 5417, 5550, 6016, 5552, 5554, 5551, 5556, 5516, + 5559, 5557, 5562, 6016, 6016, 5563, 5564, 5565, 5573, 5568, + 6016, 5575, 5582, 5579, 5580, 5577, 5583, 5584, 6016, 5588, + 5589, 6016, 6016, 5587, 6016, 6016, 6016, 6016, 6016, 6016, - 5587, 5575, 5988, 5588, 5590, 5592, 5098, 5591, 5593, 5599, - 5598, 5600, 5603, 5602, 5605, 5604, 5609, 5608, 5610, 5623, - 5988, 5988, 5988, 5622, 5614, 5616, 5624, 5626, 5631, 5638, - 5640, 5635, 5641, 5642, 5643, 5644, 5646, 5647, 5656, 5651, - 5652, 5653, 5655, 5660, 5657, 5663, 5667, 5988, 5668, 5988, - 5669, 5988, 5988, 5674, 5676, 5670, 5679, 5686, 5690, 5681, - 5688, 5685, 5689, 5692, 5697, 5988, 5693, 5699, 5988, 5702, - 5703, 5988, 5700, 5705, 5706, 5708, 5709, 5711, 5712, 5713, - 5724, 5988, 5988, 5715, 5726, 5727, 5729, 5731, 5738, 5733, - 5737, 5740, 5743, 5739, 5747, 5988, 5750, 5751, 5753, 5988, + 6016, 6016, 5592, 6016, 5590, 5605, 5607, 5609, 6016, 5597, + 5610, 5518, 5611, 5599, 6016, 5612, 5614, 5616, 5615, 5618, + 5622, 5624, 5626, 5628, 5627, 5629, 5632, 5630, 5636, 5634, + 5638, 5644, 6016, 6016, 6016, 5642, 5640, 5651, 5652, 5663, + 5664, 5667, 5669, 5653, 5657, 5670, 5671, 5674, 5659, 5675, + 5686, 5678, 5681, 5682, 5683, 5689, 5685, 5691, 5695, 6016, + 5696, 6016, 5697, 6016, 6016, 5699, 5701, 5704, 5705, 5713, + 5714, 5706, 5709, 5716, 5718, 5726, 5728, 6016, 5717, 5719, + 6016, 5729, 5730, 6016, 5721, 5731, 5732, 5733, 5737, 5740, + 5742, 5744, 5753, 6016, 6016, 5745, 5748, 5754, 5756, 5757, + + 5764, 5760, 5763, 5767, 5769, 5770, 5777, 6016, 5776, 5778, + 5780, 6016, 5781, 5782, 5784, 5786, 5787, 5794, 5790, 5795, + 6016, 5792, 6016, 5797, 5798, 5799, 5800, 5802, 5803, 5811, + 5813, 5814, 6016, 5815, 5822, 5817, 5824, 5828, 5826, 5830, + 5820, 5833, 5835, 5842, 5846, 5843, 5847, 5834, 5851, 5838, + 6016, 5849, 5852, 6016, 5855, 5858, 5859, 5861, 5864, 6016, + 5867, 5862, 5868, 5869, 5873, 5875, 6016, 5877, 5884, 5879, + 6016, 5885, 6016, 6016, 5888, 5889, 5891, 5895, 5897, 6016, + 6016, 6016, 5924, 5931, 5938, 5945, 5952, 88, 5959, 5966, + 5973, 5980, 5987, 5994, 6001, 6008 - 5755, 5754, 5757, 5760, 5761, 5768, 5763, 5765, 5988, 5766, - 5988, 5770, 5772, 5771, 5774, 5775, 5777, 5785, 5783, 5787, - 5988, 5789, 5791, 5795, 5796, 5798, 5801, 5802, 5803, 5805, - 5807, 5808, 5817, 5811, 5813, 5819, 5821, 5823, 5988, 5825, - 5827, 5988, 5828, 5829, 5830, 5831, 5835, 5988, 5840, 5832, - 5837, 5843, 5848, 5845, 5988, 5854, 5858, 5855, 5988, 5859, - 5988, 5988, 5860, 5861, 5863, 5867, 5869, 5988, 5988, 5988, - 5896, 5903, 5910, 5917, 5924, 88, 5931, 5938, 5945, 5952, - 5959, 5966, 5973, 5980 } ; -static const flex_int16_t yy_def[3085] = +static const flex_int16_t yy_def[3097] = { 0, - 3070, 1, 3071, 3071, 3072, 3072, 3073, 3073, 3074, 3074, - 3075, 3075, 3070, 3076, 3070, 3070, 3070, 3070, 3077, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3078, 3070, 3070, 3070, 3078, 3079, 3070, 3070, - 3070, 3079, 3080, 3070, 3070, 3070, 3070, 3080, 3081, 3070, - 3070, 3070, 3081, 3082, 3070, 3083, 3070, 3082, 3082, 3076, - 3076, 3070, 3084, 3077, 3084, 3077, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3082, 1, 3083, 3083, 3084, 3084, 3085, 3085, 3086, 3086, + 3087, 3087, 3082, 3088, 3082, 3082, 3082, 3082, 3089, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3090, 3082, 3082, 3082, 3090, 3091, 3082, 3082, + 3082, 3091, 3092, 3082, 3082, 3082, 3082, 3092, 3093, 3082, + 3082, 3082, 3093, 3094, 3082, 3095, 3082, 3094, 3094, 3088, + 3088, 3082, 3096, 3089, 3096, 3089, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3078, 3078, 3079, 3079, 3080, 3080, 3070, 3081, 3081, 3082, - 3082, 3083, 3083, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3090, 3090, 3091, 3091, 3092, 3092, 3082, 3093, 3093, + 3094, 3094, 3095, 3095, 3094, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3082, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3082, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3082, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3082, 3082, 3088, 3082, 3082, 3088, 3088, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3082, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3094, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3070, 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, - 3076, 3070, 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3082, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3082, 3082, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, + 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3070, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3082, 3088, 3088, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3088, 3088, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3088, + 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, + 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3076, 3076, 3070, 3070, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3070, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3082, 3082, 3088, 3082, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3082, 3082, 3088, 3088, 3088, 3082, 3082, 3082, 3088, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3082, 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, + 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3082, 3082, 3088, 3082, 3082, 3082, 3082, 3082, 3082, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, + 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, + 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, + 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, + 3082, 0, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082 - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070 } ; -static const flex_int16_t yy_nxt[6029] = +static const flex_int16_t yy_nxt[6057] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1440,664 +1446,667 @@ static const flex_int16_t yy_nxt[6029] = 51, 47, 51, 70, 47, 70, 70, 52, 70, 52, 54, 55, 56, 57, 70, 18, 54, 55, 56, 57, 71, 18, 58, 60, 61, 62, 71, 82, 58, 60, - 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, + 61, 62, 72, 71, 63, 103, 73, 93, 70, 71, 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, - 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, - 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 75, 71, 75, 68, 105, 158, 104, 94, 75, 76, + 71, 71, 69, 15, 16, 17, 65, 66, 67, 71, + 71, 83, 77, 78, 119, 68, 79, 71, 84, 71, + 95, 80, 85, 172, 69, 86, 71, 97, 142, 142, + 81, 71, 71, 71, 96, 98, 87, 71, 113, 144, + 88, 99, 144, 89, 100, 90, 91, 141, 71, 106, + 152, 101, 173, 102, 71, 110, 92, 107, 72, 111, + 152, 71, 73, 108, 149, 149, 114, 109, 71, 71, + 115, 156, 71, 120, 155, 112, 116, 121, 71, 117, + 340, 159, 71, 130, 71, 131, 118, 122, 123, 125, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 124, 71, 126, 71, 132, 134, 161, 71, 138, 127, + 133, 226, 139, 128, 129, 135, 140, 71, 71, 136, + 137, 146, 157, 146, 146, 75, 146, 75, 75, 151, + 75, 151, 151, 70, 151, 70, 70, 154, 70, 71, + 75, 71, 75, 75, 70, 75, 71, 71, 152, 162, + 165, 75, 76, 71, 71, 71, 71, 174, 71, 160, + 167, 71, 163, 71, 71, 164, 168, 166, 169, 71, + 176, 71, 177, 170, 171, 71, 175, 71, 186, 191, + 71, 178, 179, 180, 184, 71, 71, 182, 71, 71, + 181, 185, 187, 183, 71, 188, 193, 71, 71, 194, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 71, 196, 71, 71, 192, 197, 202, 199, 189, 190, + 203, 201, 200, 204, 71, 71, 71, 71, 71, 195, + 71, 198, 205, 71, 209, 71, 71, 206, 71, 214, + 211, 71, 71, 150, 212, 208, 207, 71, 213, 71, + 71, 210, 71, 216, 71, 71, 215, 219, 222, 71, + 228, 231, 217, 225, 227, 71, 221, 220, 218, 223, + 71, 71, 232, 224, 71, 71, 71, 229, 237, 71, + 230, 233, 71, 71, 71, 142, 142, 238, 241, 234, + 236, 240, 235, 243, 242, 71, 149, 149, 245, 239, + 244, 144, 71, 146, 144, 146, 146, 151, 146, 151, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 71, 71, 288, - 289, 285, 295, 284, 286, 71, 299, 280, 71, 287, - 71, 290, 297, 298, 291, 300, 292, 302, 296, 71, + 151, 75, 151, 75, 75, 152, 75, 71, 246, 248, + 250, 71, 247, 154, 71, 71, 71, 71, 71, 71, + 71, 71, 252, 71, 249, 255, 251, 254, 258, 253, + 260, 71, 261, 148, 257, 71, 71, 256, 71, 262, + 259, 264, 71, 265, 266, 71, 267, 276, 71, 270, + 71, 268, 71, 275, 271, 71, 263, 71, 71, 272, + 71, 71, 278, 279, 282, 273, 274, 71, 269, 71, + 71, 284, 280, 71, 277, 71, 71, 71, 285, 71, + 71, 281, 71, 286, 291, 292, 71, 298, 288, 71, + 287, 289, 301, 283, 71, 290, 71, 293, 71, 71, - 71, 71, 71, 71, 71, 304, 305, 301, 293, 307, - 294, 71, 71, 308, 71, 313, 146, 71, 310, 71, - 303, 306, 309, 311, 71, 71, 317, 71, 71, 71, - 71, 71, 312, 314, 315, 71, 316, 71, 71, 318, - 320, 319, 71, 71, 325, 71, 321, 71, 71, 326, - 71, 71, 327, 322, 331, 329, 71, 71, 323, 334, - 71, 71, 71, 324, 71, 71, 328, 330, 71, 336, - 337, 71, 71, 340, 332, 333, 341, 335, 339, 71, - 338, 342, 71, 343, 344, 71, 71, 346, 348, 71, - 347, 71, 350, 71, 71, 71, 71, 351, 71, 345, + 294, 303, 295, 71, 302, 300, 299, 71, 71, 305, + 326, 307, 308, 304, 296, 71, 297, 71, 71, 306, + 311, 71, 71, 71, 313, 314, 71, 309, 312, 310, + 71, 71, 71, 71, 316, 71, 71, 71, 71, 315, + 71, 317, 318, 319, 321, 323, 71, 71, 71, 71, + 71, 322, 328, 71, 330, 320, 324, 329, 71, 71, + 334, 325, 71, 332, 337, 71, 71, 71, 327, 71, + 71, 331, 333, 343, 339, 71, 71, 344, 346, 71, + 335, 336, 342, 71, 71, 338, 341, 71, 71, 71, + 349, 350, 71, 71, 351, 345, 71, 353, 354, 347, - 71, 354, 71, 151, 71, 71, 71, 361, 144, 71, - 357, 359, 349, 71, 352, 355, 353, 362, 71, 356, - 71, 71, 71, 71, 358, 363, 364, 365, 360, 71, - 71, 71, 367, 71, 371, 372, 71, 366, 374, 370, - 71, 71, 71, 373, 369, 71, 375, 368, 376, 71, - 378, 71, 71, 379, 71, 71, 71, 71, 382, 71, - 377, 383, 71, 385, 71, 71, 387, 388, 384, 71, - 380, 381, 71, 389, 71, 71, 386, 71, 390, 71, - 71, 392, 393, 394, 395, 71, 71, 71, 399, 71, - 71, 71, 71, 396, 400, 391, 402, 71, 71, 398, + 71, 71, 348, 71, 71, 152, 357, 71, 71, 71, + 147, 71, 71, 362, 364, 355, 356, 358, 352, 360, + 71, 71, 365, 359, 71, 368, 366, 361, 71, 367, + 71, 71, 363, 71, 71, 71, 71, 374, 71, 71, + 375, 376, 71, 378, 373, 369, 71, 370, 71, 372, + 377, 379, 371, 71, 71, 71, 381, 380, 71, 382, + 71, 71, 71, 71, 385, 71, 386, 389, 71, 383, + 391, 71, 387, 71, 388, 384, 71, 71, 393, 392, + 71, 71, 390, 71, 71, 394, 71, 396, 397, 398, + 71, 399, 71, 71, 403, 71, 71, 71, 400, 404, - 71, 71, 405, 71, 71, 410, 397, 407, 401, 71, - 409, 71, 411, 71, 71, 71, 403, 71, 404, 438, - 71, 406, 421, 419, 408, 412, 71, 71, 71, 71, - 422, 425, 423, 420, 430, 413, 142, 71, 414, 431, - 71, 71, 426, 415, 416, 417, 418, 71, 424, 427, - 71, 71, 428, 429, 432, 71, 71, 71, 433, 71, - 440, 434, 435, 71, 436, 437, 71, 71, 439, 71, - 71, 442, 441, 71, 71, 447, 71, 465, 453, 443, - 71, 71, 71, 448, 71, 449, 71, 71, 444, 446, - 445, 452, 454, 451, 450, 71, 71, 71, 71, 457, + 71, 71, 395, 71, 406, 402, 71, 409, 71, 71, + 71, 401, 411, 414, 71, 405, 71, 415, 71, 71, + 407, 408, 413, 71, 145, 71, 410, 423, 416, 412, + 71, 71, 71, 71, 143, 426, 425, 427, 430, 417, + 71, 424, 418, 429, 71, 431, 71, 419, 420, 421, + 422, 434, 71, 428, 432, 433, 435, 71, 71, 439, + 71, 436, 71, 437, 442, 71, 438, 71, 71, 440, + 71, 441, 443, 71, 444, 446, 71, 71, 71, 71, + 451, 71, 452, 445, 453, 71, 71, 71, 447, 457, + 71, 469, 456, 454, 450, 71, 448, 71, 449, 71, - 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, - 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, - 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 733, 486, 480, 71, 472, 71, 473, - 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, - 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, - 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, - 71, 71, 502, 71, 489, 503, 490, 491, 492, 505, - 508, 493, 507, 71, 71, 71, 71, 506, 513, 514, - 509, 511, 516, 510, 71, 517, 71, 71, 71, 71, + 71, 71, 458, 71, 459, 455, 461, 71, 462, 71, + 460, 470, 464, 71, 463, 71, 468, 71, 471, 71, + 472, 483, 71, 71, 71, 465, 473, 71, 466, 71, + 467, 71, 474, 71, 484, 71, 475, 485, 488, 486, + 71, 487, 499, 490, 476, 71, 477, 500, 478, 152, + 71, 71, 501, 71, 489, 498, 502, 71, 71, 71, + 506, 479, 71, 71, 480, 71, 481, 71, 482, 71, + 503, 491, 492, 505, 508, 71, 504, 71, 507, 511, + 71, 493, 510, 494, 495, 496, 512, 71, 497, 509, + 514, 71, 71, 71, 520, 515, 513, 516, 518, 71, - 515, 521, 71, 512, 71, 71, 71, 71, 71, 519, - 524, 525, 526, 520, 71, 71, 518, 71, 71, 531, - 523, 71, 71, 536, 528, 533, 527, 522, 71, 71, - 71, 529, 530, 534, 71, 71, 71, 532, 71, 71, - 71, 546, 71, 547, 71, 538, 71, 537, 535, 542, - 539, 545, 541, 540, 71, 548, 71, 549, 71, 553, - 543, 151, 544, 71, 551, 550, 71, 71, 71, 556, - 552, 71, 554, 71, 555, 558, 71, 71, 559, 71, - 561, 562, 71, 71, 557, 71, 563, 71, 71, 71, - 560, 71, 568, 566, 567, 71, 71, 71, 564, 71, + 71, 71, 517, 71, 521, 525, 519, 71, 71, 71, + 71, 71, 71, 523, 71, 528, 152, 529, 530, 522, + 71, 524, 71, 71, 71, 527, 535, 71, 71, 536, + 532, 71, 531, 526, 71, 538, 71, 534, 533, 71, + 539, 71, 541, 543, 71, 71, 71, 537, 71, 71, + 71, 551, 71, 542, 552, 540, 71, 545, 547, 546, + 544, 550, 554, 71, 71, 553, 71, 621, 71, 548, + 556, 549, 71, 71, 71, 71, 557, 558, 559, 71, + 561, 563, 71, 71, 555, 71, 560, 567, 562, 71, + 564, 71, 566, 71, 71, 71, 565, 71, 568, 71, - 569, 71, 71, 71, 574, 71, 565, 570, 578, 575, - 71, 573, 71, 577, 576, 572, 571, 71, 580, 71, - 71, 582, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 579, 584, 592, 585, 587, 594, 71, 593, 71, - 71, 581, 71, 583, 591, 588, 586, 589, 590, 71, - 71, 596, 71, 71, 595, 599, 71, 602, 597, 71, - 603, 598, 604, 71, 605, 71, 71, 600, 71, 71, - 71, 601, 71, 608, 71, 71, 611, 71, 71, 607, - 612, 71, 614, 71, 71, 71, 645, 610, 606, 613, - 71, 609, 71, 71, 615, 71, 617, 628, 71, 631, + 71, 71, 571, 71, 569, 572, 71, 573, 71, 71, + 71, 575, 579, 71, 71, 574, 570, 580, 71, 71, + 582, 576, 578, 71, 584, 71, 577, 71, 583, 71, + 581, 71, 585, 71, 587, 589, 586, 71, 590, 71, + 71, 71, 71, 597, 71, 71, 588, 150, 599, 71, + 600, 592, 71, 598, 71, 71, 596, 591, 593, 71, + 594, 595, 71, 71, 71, 604, 601, 602, 607, 605, + 603, 610, 71, 71, 71, 609, 71, 71, 606, 71, + 71, 613, 71, 71, 608, 71, 71, 612, 617, 616, + 71, 619, 71, 71, 71, 611, 620, 71, 71, 71, - 616, 71, 618, 71, 626, 627, 71, 619, 632, 620, - 71, 629, 633, 71, 630, 621, 71, 622, 635, 71, - 623, 624, 641, 639, 71, 634, 71, 625, 638, 71, - 71, 71, 636, 642, 640, 637, 71, 647, 71, 71, - 71, 71, 71, 71, 71, 71, 644, 643, 653, 71, - 71, 649, 71, 648, 654, 650, 646, 71, 657, 71, - 651, 661, 660, 655, 652, 656, 658, 151, 71, 71, - 71, 659, 71, 71, 662, 71, 71, 71, 71, 667, - 669, 671, 71, 71, 664, 670, 672, 665, 663, 668, - 674, 666, 71, 71, 71, 673, 71, 676, 71, 71, + 650, 614, 633, 615, 71, 618, 622, 71, 623, 632, + 71, 148, 631, 624, 636, 625, 634, 71, 71, 71, + 635, 626, 71, 627, 637, 71, 628, 629, 638, 644, + 640, 643, 639, 630, 641, 71, 71, 642, 71, 71, + 645, 647, 71, 71, 71, 652, 71, 71, 71, 71, + 71, 71, 646, 71, 71, 147, 658, 71, 71, 654, + 662, 653, 648, 649, 655, 71, 659, 651, 71, 656, + 657, 152, 660, 661, 663, 664, 665, 71, 71, 71, + 666, 71, 71, 71, 71, 71, 71, 71, 672, 674, + 676, 71, 667, 669, 675, 71, 670, 668, 673, 677, - 71, 71, 71, 680, 71, 675, 679, 688, 71, 71, - 685, 681, 677, 690, 678, 686, 71, 71, 682, 71, - 684, 683, 687, 689, 71, 691, 71, 692, 71, 693, - 71, 71, 71, 695, 71, 71, 696, 71, 694, 71, - 699, 71, 698, 71, 700, 71, 704, 71, 71, 703, - 71, 697, 71, 707, 705, 71, 71, 709, 71, 71, - 71, 710, 702, 71, 701, 706, 71, 71, 716, 712, - 71, 71, 711, 71, 713, 708, 718, 715, 714, 71, - 71, 71, 149, 723, 719, 720, 722, 721, 717, 71, - 724, 71, 71, 71, 725, 71, 726, 71, 728, 71, + 679, 671, 71, 71, 71, 71, 71, 678, 71, 71, + 71, 681, 685, 71, 680, 684, 71, 682, 71, 683, + 690, 703, 686, 71, 71, 691, 71, 693, 71, 687, + 694, 71, 688, 695, 689, 71, 692, 696, 71, 71, + 697, 71, 698, 71, 699, 701, 702, 71, 71, 700, + 71, 71, 71, 71, 704, 705, 706, 707, 71, 71, + 711, 71, 71, 710, 71, 712, 71, 71, 71, 714, + 716, 71, 71, 717, 708, 71, 71, 709, 71, 71, + 713, 719, 71, 723, 71, 718, 720, 715, 725, 726, + 721, 71, 71, 722, 71, 730, 727, 724, 71, 71, - 729, 71, 71, 71, 730, 71, 737, 71, 735, 71, - 71, 731, 71, 71, 743, 734, 147, 71, 727, 732, - 71, 738, 741, 71, 71, 736, 740, 71, 739, 742, - 744, 71, 746, 747, 745, 71, 71, 71, 71, 748, - 752, 750, 749, 71, 754, 783, 71, 71, 753, 71, - 71, 71, 751, 71, 755, 757, 71, 764, 756, 71, - 758, 71, 759, 71, 761, 71, 765, 71, 71, 760, - 71, 769, 767, 71, 766, 71, 773, 71, 762, 763, - 770, 71, 71, 71, 771, 71, 776, 774, 768, 71, - 775, 777, 71, 71, 778, 71, 71, 780, 782, 772, + 71, 71, 732, 71, 733, 71, 728, 731, 735, 729, + 71, 71, 71, 736, 71, 71, 737, 71, 71, 744, + 71, 738, 740, 742, 71, 71, 734, 741, 145, 71, + 739, 71, 750, 745, 71, 71, 71, 743, 71, 752, + 748, 751, 71, 71, 746, 747, 749, 753, 754, 71, + 71, 71, 755, 759, 71, 761, 756, 758, 71, 71, + 757, 71, 71, 760, 71, 762, 764, 766, 71, 763, + 71, 765, 71, 771, 71, 768, 71, 71, 71, 71, + 71, 767, 774, 71, 776, 773, 780, 777, 71, 769, + 770, 778, 71, 772, 71, 71, 783, 71, 775, 782, - 71, 784, 779, 71, 71, 788, 71, 71, 781, 71, - 789, 71, 71, 71, 71, 71, 790, 797, 785, 71, - 71, 795, 786, 71, 787, 71, 71, 791, 792, 71, - 71, 71, 793, 798, 794, 796, 71, 799, 71, 71, - 802, 71, 71, 71, 811, 800, 804, 809, 801, 803, - 71, 71, 71, 71, 71, 812, 805, 806, 807, 71, - 808, 71, 71, 71, 810, 814, 816, 815, 71, 71, - 71, 813, 71, 821, 823, 817, 819, 820, 71, 822, - 71, 818, 71, 824, 71, 71, 71, 151, 71, 826, - 71, 71, 831, 827, 832, 829, 71, 71, 825, 828, + 71, 784, 71, 71, 785, 71, 779, 781, 71, 71, + 787, 789, 71, 71, 71, 71, 71, 71, 795, 788, + 796, 71, 786, 790, 71, 71, 797, 71, 71, 71, + 791, 792, 804, 793, 71, 794, 798, 71, 71, 71, + 799, 802, 71, 71, 71, 800, 71, 801, 809, 803, + 71, 805, 71, 71, 806, 71, 71, 71, 807, 71, + 143, 816, 808, 71, 810, 71, 811, 71, 818, 819, + 812, 813, 814, 817, 815, 71, 820, 822, 71, 71, + 71, 71, 71, 823, 71, 71, 821, 71, 71, 827, + 828, 829, 830, 831, 826, 824, 71, 71, 71, 825, - 830, 833, 71, 71, 834, 835, 71, 839, 71, 71, - 840, 842, 71, 71, 71, 845, 71, 836, 841, 71, - 837, 71, 843, 847, 838, 71, 71, 71, 851, 71, - 71, 71, 71, 844, 71, 71, 846, 848, 852, 853, - 71, 71, 71, 71, 71, 850, 883, 854, 71, 865, - 866, 849, 71, 869, 71, 856, 855, 71, 863, 864, - 71, 71, 857, 71, 867, 868, 858, 71, 870, 859, - 71, 871, 872, 71, 875, 71, 860, 861, 71, 862, - 71, 71, 146, 874, 873, 71, 876, 877, 71, 878, - 898, 887, 879, 885, 884, 888, 71, 880, 71, 71, + 71, 71, 71, 152, 833, 71, 840, 834, 838, 836, + 71, 71, 71, 839, 832, 835, 71, 837, 71, 71, + 71, 842, 846, 71, 71, 841, 71, 847, 849, 71, + 852, 843, 844, 850, 71, 848, 71, 71, 71, 851, + 845, 854, 71, 71, 71, 858, 71, 71, 71, 71, + 855, 71, 859, 860, 853, 71, 71, 71, 71, 71, + 71, 857, 873, 876, 71, 861, 872, 856, 71, 863, + 870, 71, 71, 862, 71, 871, 875, 874, 71, 864, + 71, 877, 880, 865, 71, 878, 866, 71, 882, 879, + 71, 883, 71, 867, 868, 891, 869, 71, 71, 71, - 890, 71, 71, 881, 882, 889, 886, 71, 892, 71, - 71, 71, 71, 894, 893, 900, 891, 895, 896, 71, - 71, 899, 897, 71, 71, 71, 71, 904, 71, 71, - 71, 71, 903, 71, 907, 911, 71, 913, 71, 924, - 71, 71, 906, 901, 902, 905, 71, 908, 909, 914, - 917, 912, 71, 910, 915, 71, 71, 916, 918, 71, - 71, 920, 921, 71, 71, 919, 71, 71, 71, 922, - 925, 71, 71, 71, 923, 71, 926, 71, 928, 931, - 71, 71, 929, 71, 71, 934, 71, 71, 71, 933, - 927, 71, 932, 71, 71, 936, 930, 937, 939, 71, + 71, 881, 71, 884, 885, 71, 886, 897, 895, 887, + 896, 71, 71, 892, 888, 3082, 893, 71, 898, 71, + 889, 890, 71, 900, 894, 71, 71, 899, 71, 902, + 901, 904, 71, 903, 71, 71, 905, 71, 907, 71, + 71, 908, 71, 71, 912, 71, 71, 906, 911, 71, + 71, 915, 71, 71, 921, 71, 919, 932, 71, 909, + 913, 910, 71, 914, 916, 917, 71, 922, 933, 71, + 71, 920, 923, 71, 918, 924, 925, 926, 71, 71, + 928, 929, 71, 71, 927, 71, 71, 71, 71, 71, + 71, 930, 71, 71, 71, 931, 934, 936, 939, 71, - 71, 71, 71, 935, 941, 942, 71, 71, 940, 71, - 949, 938, 947, 71, 71, 945, 943, 948, 71, 944, - 946, 71, 71, 71, 71, 71, 954, 956, 950, 71, - 952, 957, 71, 951, 955, 71, 71, 71, 71, 71, - 959, 71, 71, 71, 71, 958, 953, 967, 71, 970, - 960, 965, 71, 71, 71, 71, 961, 962, 71, 964, - 963, 971, 968, 71, 966, 972, 71, 969, 71, 975, - 71, 71, 974, 973, 71, 977, 978, 71, 71, 71, - 976, 71, 71, 980, 71, 71, 982, 987, 979, 988, - 990, 981, 71, 71, 992, 71, 71, 71, 71, 983, + 937, 71, 71, 940, 71, 942, 71, 935, 71, 938, + 941, 71, 71, 944, 71, 945, 71, 947, 71, 949, + 943, 71, 71, 948, 71, 71, 950, 71, 957, 955, + 71, 71, 946, 953, 956, 71, 951, 71, 954, 71, + 71, 71, 964, 952, 962, 958, 960, 965, 71, 71, + 959, 71, 963, 71, 71, 71, 967, 71, 71, 71, + 71, 71, 71, 961, 71, 975, 71, 978, 973, 71, + 966, 1218, 71, 71, 968, 969, 971, 970, 972, 71, + 976, 979, 71, 974, 71, 977, 71, 71, 981, 71, + 983, 980, 985, 986, 71, 71, 982, 71, 71, 71, - 71, 985, 993, 984, 986, 991, 989, 71, 71, 71, - 996, 994, 71, 71, 998, 1001, 995, 71, 997, 71, - 1000, 71, 71, 1005, 71, 1002, 1007, 71, 71, 71, - 1004, 1003, 71, 999, 1010, 151, 71, 1009, 71, 71, - 1013, 71, 1012, 71, 1006, 71, 1008, 71, 1016, 71, - 71, 1011, 71, 71, 71, 1028, 71, 1031, 71, 144, - 1029, 71, 71, 1014, 1019, 1015, 1017, 71, 71, 1054, - 71, 1033, 1020, 1018, 1021, 71, 1030, 71, 1022, 71, - 1023, 71, 1036, 1034, 1024, 71, 1025, 1032, 71, 71, - 71, 1026, 1038, 1035, 1041, 1037, 1027, 1039, 71, 1040, + 984, 71, 71, 3082, 988, 71, 990, 995, 996, 987, + 71, 71, 998, 71, 71, 71, 1000, 989, 71, 991, + 1001, 993, 71, 992, 997, 994, 71, 71, 71, 71, + 71, 999, 1002, 71, 1003, 1006, 71, 1008, 1009, 1004, + 71, 71, 1013, 1010, 71, 71, 71, 1005, 71, 71, + 1007, 1011, 1015, 71, 1012, 71, 1018, 152, 71, 71, + 1017, 71, 1021, 1020, 1016, 1014, 71, 71, 71, 71, + 71, 1022, 1024, 1019, 71, 71, 71, 1036, 71, 71, + 71, 71, 1037, 71, 1027, 1041, 1023, 1025, 1039, 71, + 71, 71, 71, 1026, 1028, 1038, 1029, 71, 1042, 1059, - 71, 1046, 71, 1043, 71, 1044, 1042, 1047, 71, 71, - 71, 1052, 71, 1053, 71, 1045, 1051, 71, 1048, 71, - 1055, 1056, 71, 1050, 71, 71, 71, 71, 71, 1049, - 71, 1068, 71, 1058, 1057, 71, 1067, 1072, 71, 71, - 1059, 71, 1060, 1073, 1069, 71, 1071, 1061, 1093, 1062, - 1070, 71, 71, 1074, 71, 1063, 1077, 71, 1078, 1079, - 1064, 1065, 71, 71, 71, 71, 1080, 1066, 1083, 71, - 1075, 1076, 142, 71, 71, 71, 71, 1082, 1084, 71, - 1089, 1081, 71, 71, 1086, 1087, 71, 71, 1085, 71, - 71, 1090, 1092, 71, 71, 1088, 71, 71, 71, 71, + 1030, 71, 1031, 1182, 1040, 1043, 1032, 71, 1033, 71, + 71, 1046, 1044, 1034, 1049, 1045, 1047, 71, 1035, 71, + 71, 71, 71, 1048, 71, 1052, 1050, 1055, 71, 71, + 71, 1061, 71, 1054, 1051, 1053, 1060, 71, 1056, 1062, + 1063, 71, 1064, 1058, 1065, 71, 71, 71, 71, 1057, + 71, 71, 71, 71, 1066, 71, 71, 1077, 71, 71, + 1080, 1081, 71, 1076, 71, 1067, 1068, 71, 1069, 1078, + 1079, 71, 1082, 1070, 1144, 1071, 1083, 71, 1086, 71, + 71, 1072, 1088, 71, 1087, 71, 1073, 1074, 71, 71, + 1084, 1092, 1089, 1075, 71, 71, 1085, 71, 1091, 1093, - 1099, 71, 1091, 1094, 71, 1096, 1097, 1098, 1101, 71, - 1095, 71, 71, 1100, 71, 1102, 71, 71, 1103, 71, - 71, 1104, 1109, 71, 1110, 1106, 71, 71, 1105, 1112, - 1107, 1108, 1111, 71, 1113, 1114, 1115, 71, 1117, 71, - 1121, 71, 1116, 1118, 71, 71, 1119, 71, 71, 1120, - 71, 71, 71, 1122, 1128, 71, 1130, 71, 71, 71, - 71, 71, 71, 1132, 1124, 1126, 1127, 1123, 1125, 71, - 71, 71, 1131, 1133, 1134, 1129, 71, 71, 71, 71, - 71, 1136, 1135, 1137, 1139, 1138, 71, 71, 71, 1141, - 71, 1140, 1145, 1142, 1144, 71, 1143, 71, 71, 1146, + 71, 71, 1090, 71, 71, 1098, 71, 71, 71, 1095, + 1096, 71, 1101, 1099, 1094, 71, 71, 71, 71, 1097, + 71, 71, 71, 71, 71, 1100, 1106, 1108, 1102, 1103, + 1105, 1107, 1110, 71, 71, 71, 1104, 1109, 71, 1111, + 71, 71, 3082, 71, 1113, 71, 71, 1112, 1118, 1115, + 1119, 1120, 71, 1114, 71, 1122, 1117, 1123, 1116, 71, + 71, 1121, 1126, 71, 71, 71, 1128, 1127, 71, 1129, + 71, 71, 1124, 1130, 71, 71, 1125, 1137, 1131, 71, + 71, 71, 1139, 71, 71, 71, 71, 3082, 71, 71, + 1133, 1132, 1135, 1134, 1141, 1136, 71, 1150, 71, 1140, - 71, 71, 71, 71, 1147, 1149, 71, 1150, 1148, 71, - 1156, 71, 1154, 1157, 71, 1151, 71, 71, 71, 71, - 1152, 71, 1158, 1153, 1155, 71, 1159, 1161, 1164, 71, - 1160, 71, 1162, 71, 71, 71, 1165, 71, 1163, 1166, - 71, 71, 71, 71, 1167, 1171, 1168, 1169, 71, 71, - 71, 1172, 71, 1177, 1173, 1178, 71, 71, 71, 71, - 1170, 71, 1175, 1180, 1181, 71, 71, 1174, 71, 71, - 1185, 1176, 1179, 71, 71, 1182, 71, 71, 71, 71, - 1183, 1184, 1187, 1191, 71, 71, 1186, 71, 71, 71, - 1197, 71, 71, 1192, 1195, 1188, 3070, 1190, 1199, 1194, + 1142, 1138, 71, 1145, 71, 1143, 71, 71, 71, 1146, + 71, 1148, 1147, 1149, 71, 1154, 1151, 1155, 71, 71, + 1153, 71, 71, 1152, 71, 71, 1159, 1158, 1156, 71, + 71, 71, 71, 71, 71, 1163, 1165, 1166, 1170, 1167, + 1157, 71, 71, 71, 71, 71, 1164, 1160, 71, 1161, + 1168, 1162, 71, 1169, 1173, 71, 71, 1175, 71, 1171, + 71, 1174, 71, 71, 1176, 71, 71, 71, 71, 1180, + 1181, 1177, 1172, 71, 71, 71, 1186, 1187, 1190, 71, + 71, 1178, 71, 71, 1179, 1184, 1183, 71, 71, 71, + 1188, 1194, 1189, 1185, 71, 71, 71, 71, 71, 1191, - 1193, 1196, 1189, 1200, 71, 71, 71, 71, 1198, 71, - 1201, 71, 1203, 1202, 71, 71, 71, 71, 71, 71, - 1204, 1206, 71, 1212, 71, 1209, 71, 71, 1205, 71, - 1207, 71, 71, 71, 1210, 1337, 1208, 1216, 71, 1222, - 1213, 1211, 71, 71, 1215, 1214, 71, 1218, 1223, 1224, - 71, 71, 1217, 1225, 71, 71, 1219, 1227, 1220, 71, - 71, 1221, 71, 71, 71, 1226, 71, 1231, 71, 1230, - 71, 1233, 1236, 71, 1228, 1234, 71, 1229, 71, 71, - 71, 1237, 1232, 1238, 1240, 71, 71, 1235, 71, 1241, - 1239, 71, 71, 71, 71, 1242, 71, 71, 71, 1245, + 71, 1193, 1192, 1200, 71, 1196, 71, 71, 71, 71, + 1206, 71, 1195, 1204, 71, 71, 1197, 1221, 71, 1199, + 1201, 1203, 1202, 1198, 1205, 1208, 1209, 71, 71, 1211, + 71, 71, 71, 1210, 1207, 1212, 71, 71, 71, 71, + 71, 71, 71, 1215, 71, 71, 71, 71, 71, 71, + 1213, 1214, 1225, 1251, 1216, 71, 1219, 3082, 1222, 1217, + 1227, 1220, 1224, 1223, 71, 1231, 71, 71, 1226, 1228, + 71, 1229, 1232, 1234, 1230, 1233, 71, 71, 71, 71, + 1236, 71, 71, 71, 1235, 71, 71, 1240, 1239, 71, + 1243, 71, 1246, 71, 71, 3082, 71, 1237, 1242, 1238, - 71, 1248, 71, 1243, 1246, 71, 1244, 71, 1247, 1249, - 71, 1253, 71, 71, 1258, 1250, 71, 1254, 1252, 1251, - 71, 1257, 71, 71, 1260, 71, 1264, 1255, 1262, 71, - 1256, 1265, 71, 1261, 71, 71, 1259, 1263, 71, 1269, - 71, 3070, 71, 71, 1279, 71, 1278, 1268, 1266, 1267, - 71, 1277, 71, 1276, 1281, 1270, 71, 71, 1271, 1272, - 1282, 1280, 1283, 1273, 71, 71, 71, 71, 1285, 1274, - 1284, 71, 1287, 1275, 71, 71, 71, 1288, 71, 1289, - 71, 71, 71, 71, 1297, 1286, 1294, 1292, 71, 71, - 71, 1298, 1338, 1299, 1291, 1290, 1295, 71, 71, 71, + 1244, 1247, 1241, 71, 71, 71, 71, 71, 1248, 1250, + 1245, 71, 71, 71, 1249, 1252, 71, 71, 71, 71, + 1253, 71, 1254, 1258, 1256, 71, 71, 71, 1257, 1259, + 1255, 1263, 71, 71, 71, 71, 71, 1260, 1268, 1262, + 1261, 1264, 1267, 1270, 71, 71, 71, 1265, 1269, 1274, + 1272, 71, 1266, 71, 1275, 71, 1271, 71, 1273, 71, + 71, 1279, 71, 1288, 71, 1289, 1287, 1277, 71, 71, + 1276, 71, 1278, 71, 1292, 1286, 1290, 1291, 1280, 71, + 71, 1281, 1282, 71, 1293, 71, 1283, 71, 1294, 71, + 1295, 71, 1284, 71, 1297, 71, 1285, 71, 1298, 71, - 1293, 1296, 1300, 71, 1306, 71, 1307, 1308, 1301, 71, - 71, 71, 71, 1302, 1310, 1303, 1309, 1304, 71, 1305, - 71, 71, 71, 1314, 71, 71, 1311, 1313, 1315, 71, - 1312, 1316, 71, 1320, 71, 1319, 71, 1318, 71, 1324, - 71, 1325, 1317, 71, 1321, 71, 1326, 71, 71, 71, - 1323, 71, 1328, 1322, 71, 71, 71, 1327, 1330, 71, - 1333, 71, 1329, 1334, 71, 1336, 71, 71, 71, 1331, - 1341, 1335, 1339, 1342, 71, 1344, 71, 71, 1340, 1332, - 71, 1345, 1346, 71, 71, 1349, 71, 71, 1343, 71, - 71, 71, 1351, 71, 71, 71, 1353, 1355, 71, 71, + 1299, 71, 71, 71, 1316, 71, 1296, 1300, 1302, 1301, + 1304, 71, 1307, 1308, 71, 1305, 1309, 1303, 71, 71, + 1306, 71, 71, 1311, 71, 1310, 1317, 1318, 1312, 71, + 1313, 71, 1314, 1319, 1315, 1320, 71, 71, 1324, 1321, + 71, 71, 71, 1325, 71, 71, 1323, 1328, 71, 1326, + 71, 71, 71, 71, 1322, 1334, 71, 1330, 71, 1329, + 71, 71, 71, 1327, 71, 1335, 1333, 1337, 1336, 1331, + 1332, 71, 1339, 71, 1341, 71, 1338, 1344, 71, 71, + 1343, 71, 1340, 1346, 71, 71, 71, 1342, 1347, 71, + 1349, 71, 1348, 71, 1345, 1352, 71, 1354, 71, 71, - 3070, 1357, 1354, 71, 1347, 1348, 71, 1350, 1359, 71, - 1352, 71, 1356, 71, 1358, 71, 1361, 1362, 1363, 71, - 1360, 71, 1365, 71, 1364, 71, 71, 71, 1366, 1371, - 1372, 1368, 71, 1367, 1369, 71, 71, 1373, 1374, 1370, - 71, 71, 71, 71, 71, 1378, 71, 71, 71, 1375, - 1382, 1383, 71, 1377, 71, 1385, 71, 71, 1384, 71, - 1376, 71, 71, 1379, 71, 71, 71, 1380, 1386, 71, - 1392, 1381, 71, 71, 1387, 71, 1389, 1397, 71, 1388, - 1390, 71, 1393, 1391, 71, 71, 1396, 1401, 71, 1399, - 71, 1395, 1402, 71, 71, 71, 71, 1394, 1398, 1404, + 1350, 71, 1351, 71, 1355, 71, 1356, 1359, 71, 71, + 71, 1353, 71, 1361, 71, 71, 71, 71, 1365, 1363, + 1357, 71, 71, 71, 1364, 1367, 1358, 71, 1369, 1360, + 71, 71, 1362, 71, 3082, 1366, 1368, 71, 1371, 1372, + 71, 1370, 1373, 71, 1375, 1374, 71, 71, 1377, 71, + 71, 1376, 1381, 1378, 1382, 1384, 1379, 71, 71, 71, + 71, 71, 1383, 1380, 71, 71, 1388, 71, 1385, 71, + 71, 71, 1392, 1393, 71, 1395, 1387, 71, 71, 71, + 1394, 71, 71, 1386, 71, 71, 71, 71, 1402, 1389, + 1390, 1396, 71, 71, 1391, 71, 1399, 1397, 71, 1400, - 71, 71, 1405, 1412, 1400, 71, 1403, 71, 1414, 1406, - 1410, 1407, 71, 1411, 71, 1408, 1415, 71, 1409, 1417, - 71, 1413, 71, 71, 1418, 71, 71, 71, 1416, 71, - 71, 1422, 71, 71, 1424, 71, 71, 1429, 71, 1419, - 71, 1421, 1430, 71, 71, 1423, 1426, 71, 1420, 1433, - 1425, 1427, 71, 1428, 71, 71, 1434, 71, 1431, 71, - 71, 71, 1432, 71, 71, 1440, 1435, 1437, 1436, 1442, - 1441, 71, 1438, 71, 1445, 71, 71, 71, 1439, 1443, - 1444, 71, 1447, 1450, 71, 1451, 1449, 71, 1452, 71, - 1446, 71, 71, 1453, 1454, 71, 71, 71, 1448, 71, + 1407, 71, 1398, 1406, 1401, 71, 71, 71, 71, 1411, + 71, 1409, 1403, 1405, 1412, 71, 71, 1414, 1404, 71, + 71, 71, 3082, 71, 1416, 71, 1410, 1415, 1408, 71, + 1420, 1422, 1424, 1421, 1413, 1417, 1418, 1423, 71, 1419, + 71, 71, 1427, 71, 1425, 71, 71, 1428, 71, 71, + 71, 71, 1426, 71, 1432, 1433, 71, 71, 1435, 71, + 71, 71, 1429, 71, 1431, 71, 1440, 1441, 71, 1434, + 71, 1430, 71, 1437, 1444, 1438, 1436, 71, 1439, 1442, + 71, 71, 1445, 71, 71, 71, 71, 1443, 71, 71, + 1451, 1446, 1448, 1452, 1453, 1447, 71, 71, 1449, 71, - 1455, 71, 1457, 71, 71, 1461, 1456, 71, 71, 71, - 1460, 71, 71, 1458, 71, 1467, 1459, 1463, 1469, 1464, - 1468, 71, 1465, 1470, 71, 71, 1472, 1462, 71, 71, - 1466, 71, 1471, 71, 71, 71, 71, 1480, 1476, 71, - 1475, 71, 71, 71, 1481, 1483, 71, 1473, 1474, 71, - 1486, 71, 1485, 1477, 1479, 1478, 71, 71, 71, 71, - 71, 1484, 71, 71, 71, 71, 1494, 1482, 1487, 71, - 1497, 71, 1495, 71, 1491, 1496, 1488, 1489, 1490, 1493, - 1498, 71, 71, 1492, 71, 71, 1501, 1499, 1500, 71, - 71, 71, 1504, 71, 1502, 71, 1505, 71, 71, 71, + 1456, 71, 71, 1450, 71, 1455, 1454, 1458, 1461, 1460, + 1462, 71, 1457, 71, 71, 1466, 71, 71, 1463, 71, + 1464, 1465, 71, 1459, 71, 71, 71, 71, 71, 1472, + 71, 1468, 71, 1467, 1471, 71, 71, 71, 1478, 1469, + 1474, 1470, 1475, 1479, 71, 71, 1480, 71, 1483, 1476, + 1473, 1481, 71, 71, 71, 1477, 71, 71, 71, 71, + 71, 1487, 1491, 71, 71, 1482, 1486, 71, 71, 1492, + 1494, 71, 1484, 1485, 71, 1497, 71, 1488, 1490, 1489, + 1496, 71, 71, 71, 71, 71, 1495, 71, 71, 1493, + 1498, 71, 71, 1505, 71, 1508, 71, 1506, 71, 1502, - 1508, 1514, 1503, 1512, 71, 71, 1509, 71, 71, 1506, - 1513, 1507, 1516, 71, 1511, 71, 71, 1510, 1517, 1518, - 1519, 71, 71, 1515, 71, 1523, 1524, 71, 71, 71, - 71, 71, 71, 1528, 71, 1527, 1529, 1531, 71, 71, - 1521, 1520, 71, 71, 1522, 71, 1525, 71, 1532, 71, - 1526, 1533, 71, 71, 1530, 1534, 1536, 71, 1538, 1535, - 71, 1539, 71, 71, 71, 71, 71, 1537, 71, 1543, - 71, 1545, 1540, 71, 71, 1546, 71, 1550, 71, 1544, - 71, 71, 1542, 1541, 71, 71, 1547, 71, 1548, 1553, - 1555, 71, 1551, 71, 71, 1558, 1554, 1556, 1552, 1549, + 1507, 1499, 1500, 1501, 1509, 71, 1504, 71, 1503, 71, + 71, 1512, 1510, 1511, 71, 71, 71, 1515, 71, 1513, + 71, 1516, 71, 71, 71, 1519, 1525, 1514, 1523, 71, + 71, 1520, 71, 71, 1517, 1524, 1518, 1527, 71, 1522, + 71, 71, 1521, 1528, 1529, 1530, 71, 71, 1526, 71, + 1534, 1535, 71, 71, 71, 71, 71, 71, 1539, 71, + 1538, 1540, 1542, 71, 71, 1532, 1531, 71, 71, 1533, + 71, 1536, 71, 1543, 71, 1537, 1544, 71, 71, 1541, + 1545, 1547, 71, 1549, 1546, 71, 1550, 71, 71, 71, + 71, 71, 1548, 71, 1554, 71, 1556, 1551, 71, 71, - 71, 71, 71, 71, 71, 1557, 1561, 71, 1563, 1559, - 71, 1560, 1564, 71, 71, 71, 71, 1571, 71, 71, - 1562, 1566, 1565, 1572, 71, 71, 71, 71, 1569, 1567, - 1568, 1576, 71, 71, 1575, 1578, 1580, 1579, 71, 1573, - 1570, 71, 71, 1582, 1574, 1584, 71, 1577, 71, 71, - 71, 71, 71, 71, 1589, 1583, 1586, 1587, 1581, 71, - 1590, 71, 71, 71, 71, 71, 1601, 1585, 1594, 71, - 1595, 71, 71, 71, 71, 1588, 1591, 1598, 1593, 1592, - 1599, 71, 71, 1596, 1597, 1603, 1602, 71, 71, 1609, - 71, 71, 1600, 1606, 1608, 71, 1605, 71, 1607, 71, + 1557, 71, 1561, 71, 1555, 71, 71, 1553, 1552, 71, + 71, 1558, 71, 1559, 1564, 1566, 71, 1562, 71, 71, + 1569, 1565, 1567, 1563, 1560, 71, 71, 71, 71, 71, + 1568, 1572, 71, 1574, 1570, 71, 1571, 1575, 71, 71, + 71, 71, 1582, 71, 71, 1573, 1577, 1576, 1583, 71, + 71, 71, 71, 1580, 1578, 1579, 1587, 71, 71, 1586, + 1589, 1591, 1590, 71, 1584, 1581, 71, 71, 1593, 1585, + 1595, 71, 1588, 71, 71, 71, 71, 71, 71, 1600, + 1594, 1597, 1598, 1592, 71, 1601, 71, 71, 71, 71, + 71, 1612, 1596, 1605, 71, 1606, 71, 71, 71, 71, - 1611, 1604, 1610, 71, 1612, 1613, 71, 71, 1616, 71, - 71, 71, 1614, 71, 1620, 1621, 1619, 71, 1623, 1615, - 71, 71, 1622, 71, 71, 71, 71, 71, 1617, 71, - 1618, 1625, 1626, 71, 1627, 71, 71, 71, 1635, 71, - 71, 71, 71, 1628, 71, 71, 1624, 1629, 71, 71, - 1631, 1632, 1633, 71, 1634, 1630, 1640, 71, 1642, 1636, - 71, 1643, 1637, 1638, 71, 71, 1639, 71, 1641, 71, - 71, 71, 71, 71, 71, 71, 71, 1658, 71, 1644, - 1648, 1645, 1650, 1651, 71, 1649, 1652, 1647, 1653, 1646, - 71, 1654, 71, 1657, 1659, 71, 1655, 71, 1656, 71, + 1599, 1602, 1609, 1604, 1603, 1610, 71, 71, 1607, 1608, + 1614, 1613, 71, 71, 1620, 71, 71, 1611, 1617, 1619, + 71, 1616, 1621, 1618, 71, 1622, 1615, 1625, 71, 71, + 1623, 71, 1624, 71, 71, 71, 71, 1627, 71, 1626, + 71, 1632, 1633, 1631, 71, 1635, 71, 71, 71, 1634, + 71, 71, 71, 1628, 71, 1629, 71, 1637, 1630, 1638, + 71, 1639, 71, 71, 71, 1647, 71, 71, 1640, 1636, + 71, 71, 71, 71, 1641, 71, 71, 1643, 1644, 1645, + 1652, 71, 1642, 1646, 71, 71, 1648, 1650, 71, 1655, + 1654, 1656, 1649, 71, 71, 71, 1651, 71, 71, 71, - 1662, 71, 1661, 71, 1660, 1663, 71, 71, 1666, 71, - 71, 71, 1664, 71, 1667, 71, 71, 1675, 71, 1670, - 1665, 1676, 71, 71, 1674, 1672, 1668, 1669, 1673, 71, - 71, 71, 1671, 71, 71, 71, 71, 71, 1677, 71, - 1685, 71, 1678, 71, 1689, 1680, 1682, 71, 1679, 1681, - 1687, 71, 1688, 1686, 1684, 71, 1693, 71, 1690, 71, - 1683, 71, 71, 1697, 1691, 71, 71, 1692, 1698, 71, - 71, 3070, 71, 1705, 71, 1694, 1699, 1702, 1703, 1696, - 1695, 1700, 71, 1706, 71, 71, 1708, 1701, 1704, 71, - 1707, 71, 71, 71, 1712, 71, 71, 1709, 1716, 1714, + 71, 71, 71, 71, 1653, 1662, 1660, 1657, 71, 1663, + 1670, 71, 1664, 1659, 1661, 1672, 71, 1665, 1658, 1669, + 1671, 71, 71, 1666, 1675, 71, 71, 1668, 1667, 1674, + 71, 71, 71, 71, 71, 71, 71, 1678, 1679, 71, + 1673, 71, 1687, 1676, 71, 1682, 71, 71, 71, 71, + 1677, 1681, 71, 1680, 1690, 1686, 1684, 71, 1683, 1685, + 1688, 71, 71, 71, 1689, 71, 1692, 1691, 71, 1697, + 71, 71, 71, 1693, 1694, 71, 1701, 1700, 71, 71, + 1699, 71, 71, 1696, 1705, 71, 1698, 1709, 1695, 71, + 1702, 1703, 1710, 71, 1704, 71, 1706, 71, 71, 3082, - 71, 71, 1710, 71, 71, 1715, 71, 1711, 1713, 1717, - 71, 71, 71, 71, 71, 71, 71, 1743, 1720, 71, - 1721, 71, 1718, 1726, 71, 1719, 1722, 1723, 1728, 1724, - 1725, 1729, 1730, 71, 71, 1731, 71, 71, 71, 71, - 1736, 1732, 71, 71, 71, 1727, 71, 1740, 71, 71, - 71, 1733, 1735, 71, 1742, 71, 71, 1734, 1744, 1738, - 1745, 71, 1739, 71, 1737, 1746, 1749, 71, 71, 1741, - 71, 71, 1753, 71, 71, 71, 71, 71, 1748, 71, - 71, 71, 1751, 1755, 1747, 71, 1760, 1750, 1754, 1756, - 1752, 1757, 71, 1761, 1758, 71, 1764, 71, 71, 71, + 71, 1715, 1707, 1708, 1712, 1714, 1718, 71, 71, 1711, + 1717, 71, 71, 1719, 1720, 71, 1716, 71, 71, 1713, + 71, 1721, 1724, 71, 71, 1728, 71, 1726, 71, 71, + 71, 71, 1723, 1727, 1729, 71, 1725, 1722, 71, 71, + 71, 71, 71, 1732, 1738, 71, 71, 1733, 1730, 1731, + 71, 1740, 1734, 1735, 1741, 1736, 1737, 71, 71, 1742, + 71, 1743, 71, 71, 71, 1748, 1739, 71, 71, 71, + 1744, 71, 1752, 71, 71, 71, 1745, 1747, 71, 1754, + 71, 71, 1746, 1755, 1750, 1756, 1757, 1751, 71, 1749, + 71, 71, 1761, 71, 1753, 71, 71, 1758, 71, 1765, - 1759, 1763, 1765, 1762, 1766, 71, 71, 1768, 1769, 1770, - 71, 1767, 71, 71, 71, 1772, 71, 71, 71, 1773, - 71, 71, 71, 71, 1771, 71, 71, 1778, 71, 71, - 1782, 71, 1779, 1790, 71, 1783, 71, 1774, 1776, 1777, - 1775, 1780, 71, 1781, 71, 71, 1791, 1786, 1784, 1788, - 71, 1785, 71, 71, 1787, 71, 71, 1792, 1796, 71, - 1789, 71, 71, 1799, 1800, 71, 1801, 71, 71, 1793, - 71, 1794, 71, 1795, 3070, 1797, 1808, 1798, 71, 1802, - 1803, 71, 71, 1804, 1807, 71, 1809, 71, 1811, 1805, - 1810, 1806, 71, 1813, 71, 71, 1812, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 1760, 71, 1763, 1767, + 71, 71, 1772, 1759, 1762, 1766, 1768, 1764, 71, 1769, + 71, 71, 1770, 1773, 1777, 1771, 1775, 71, 1774, 1776, + 71, 1778, 71, 71, 1781, 71, 1780, 71, 1779, 1784, + 71, 1782, 71, 71, 71, 71, 1785, 1783, 71, 71, + 71, 71, 71, 71, 1790, 71, 71, 1794, 71, 71, + 1791, 3082, 71, 1800, 1786, 1792, 1788, 1787, 1789, 71, + 1793, 1795, 71, 1803, 1798, 71, 1797, 1802, 71, 71, + 1804, 1799, 71, 71, 1796, 71, 71, 1801, 1808, 71, + 1811, 1812, 71, 71, 1805, 1813, 71, 71, 1806, 1809, - 1815, 1816, 71, 71, 1817, 1818, 71, 1825, 3070, 71, - 71, 71, 71, 71, 1830, 71, 71, 71, 1823, 1827, - 1814, 1819, 1820, 1821, 1828, 71, 1824, 1831, 1822, 1829, - 1826, 1833, 1832, 71, 71, 71, 71, 71, 1837, 71, - 71, 1839, 1834, 71, 71, 71, 1842, 1843, 71, 71, - 1845, 71, 71, 71, 1835, 71, 1836, 71, 71, 1850, - 1851, 71, 1838, 1840, 1847, 71, 1841, 1848, 71, 1844, - 71, 71, 71, 71, 1849, 71, 1857, 1846, 1852, 1854, - 1855, 71, 71, 1853, 1861, 71, 71, 1860, 1864, 1865, - 71, 1866, 71, 1863, 71, 71, 1856, 1859, 71, 1858, + 71, 1810, 71, 1807, 1815, 71, 71, 1816, 1819, 71, + 71, 1821, 71, 1814, 1820, 1822, 1823, 71, 1817, 1825, + 1824, 1818, 71, 71, 71, 71, 1830, 1827, 1828, 71, + 71, 1829, 71, 71, 71, 71, 1837, 71, 1839, 71, + 71, 71, 71, 1840, 71, 1831, 1832, 1833, 1826, 71, + 71, 1842, 1834, 1841, 1835, 1836, 1844, 1838, 1845, 71, + 1847, 1843, 71, 71, 71, 1849, 71, 71, 1846, 71, + 1851, 71, 71, 1854, 1855, 71, 71, 1857, 71, 71, + 71, 71, 71, 1848, 1863, 71, 1862, 1852, 71, 1850, + 1859, 1860, 71, 1853, 71, 71, 1856, 71, 71, 71, - 71, 71, 71, 1867, 71, 1862, 71, 71, 71, 1868, - 1872, 71, 1875, 1876, 1871, 71, 1877, 71, 71, 71, - 71, 1869, 71, 1870, 1873, 71, 71, 1885, 71, 1880, - 71, 1884, 1879, 71, 1874, 1878, 71, 71, 1882, 3070, - 71, 1889, 1883, 71, 71, 1881, 1890, 71, 1887, 1886, - 1892, 71, 1891, 71, 71, 1888, 71, 1893, 1894, 1896, - 71, 71, 71, 1895, 71, 1897, 1900, 1903, 1898, 71, - 71, 1906, 71, 71, 1905, 1899, 71, 1907, 71, 71, - 71, 71, 1901, 1908, 1902, 1904, 71, 1909, 1913, 71, - 71, 1910, 1914, 71, 1915, 1920, 1911, 1917, 1918, 1916, + 1869, 1861, 71, 1867, 1858, 1866, 71, 71, 1873, 1864, + 1865, 71, 1872, 71, 71, 1876, 1878, 71, 1877, 71, + 1875, 71, 1871, 1868, 71, 71, 71, 71, 1870, 71, + 1879, 1874, 71, 71, 71, 1880, 1884, 71, 1887, 1881, + 71, 1883, 1888, 1889, 71, 71, 1882, 71, 71, 71, + 1885, 1892, 71, 71, 71, 1891, 1897, 71, 1896, 71, + 1886, 71, 71, 71, 1890, 1894, 1901, 1893, 71, 1902, + 1904, 71, 71, 1898, 1895, 71, 1899, 1903, 1900, 1905, + 1908, 71, 71, 1906, 71, 71, 71, 71, 1907, 71, + 1915, 1912, 71, 71, 1918, 71, 71, 1917, 1910, 71, - 71, 1912, 71, 71, 71, 1922, 71, 71, 71, 71, - 1927, 71, 1919, 1924, 1921, 71, 71, 1929, 1923, 1925, - 71, 71, 71, 71, 71, 71, 71, 1935, 1934, 1933, - 1936, 71, 1930, 1926, 1931, 1937, 71, 1928, 71, 1939, - 1932, 71, 71, 71, 71, 71, 3070, 1940, 1941, 71, - 1942, 1943, 71, 71, 1944, 1945, 71, 1947, 1938, 71, - 71, 71, 1951, 71, 71, 1946, 1950, 1955, 71, 71, - 71, 1948, 1949, 1952, 1953, 1954, 71, 71, 71, 71, - 71, 1962, 1960, 71, 71, 71, 1957, 71, 1961, 71, - 71, 71, 1967, 71, 1964, 71, 1956, 1958, 3070, 1959, + 1919, 71, 71, 1909, 1911, 1920, 71, 1913, 1916, 1914, + 71, 1921, 1925, 71, 1926, 71, 71, 1922, 1927, 1929, + 1930, 71, 1923, 1928, 71, 71, 71, 71, 1934, 71, + 1924, 71, 1932, 1933, 71, 1936, 71, 71, 1939, 71, + 1941, 1935, 1931, 71, 71, 71, 71, 71, 1937, 71, + 71, 71, 1947, 1946, 1945, 1942, 71, 1943, 1948, 71, + 3082, 1940, 1938, 1949, 71, 1951, 1944, 71, 71, 71, + 71, 71, 71, 1952, 1953, 1956, 1950, 1955, 1954, 71, + 71, 71, 1957, 71, 1959, 71, 71, 1963, 71, 71, + 71, 1962, 1958, 1960, 71, 1965, 71, 1961, 1964, 1966, - 71, 71, 1963, 1968, 1966, 71, 1971, 1965, 71, 1970, - 1972, 1969, 71, 71, 1977, 71, 1974, 1975, 71, 71, - 1973, 1978, 71, 71, 71, 1983, 1976, 71, 71, 1985, - 71, 71, 1986, 1987, 71, 1979, 71, 1982, 1980, 1981, - 71, 71, 71, 1989, 1984, 71, 1991, 71, 1988, 71, - 71, 1992, 71, 71, 71, 71, 71, 71, 71, 2003, - 71, 1990, 1994, 1999, 1995, 1996, 71, 2002, 1993, 1998, - 71, 71, 71, 2006, 2004, 1997, 2000, 2007, 2001, 71, - 71, 71, 2010, 71, 2009, 71, 2005, 71, 2012, 71, - 71, 2008, 2013, 71, 71, 71, 2014, 2018, 71, 2011, + 1967, 71, 71, 71, 71, 71, 71, 71, 1974, 1972, + 71, 1969, 1973, 71, 71, 71, 1968, 71, 71, 1976, + 71, 1970, 71, 1971, 1975, 71, 1979, 1982, 3082, 1978, + 71, 1977, 71, 1983, 1985, 1981, 71, 1980, 71, 1984, + 71, 1986, 71, 1987, 1989, 71, 71, 71, 71, 1988, + 1990, 1995, 71, 71, 1997, 71, 1991, 71, 1992, 1999, + 71, 1993, 1994, 71, 71, 1998, 71, 71, 2003, 1996, + 71, 71, 2000, 2001, 71, 2002, 71, 71, 71, 2004, + 71, 71, 71, 71, 71, 71, 2006, 2011, 2007, 2008, + 2015, 71, 2005, 71, 71, 2010, 2014, 2018, 2019, 71, - 2020, 71, 2016, 2022, 71, 71, 2017, 2015, 71, 2019, - 71, 71, 2025, 2024, 71, 2021, 2026, 71, 71, 2027, - 2030, 71, 71, 71, 71, 71, 71, 2031, 2036, 71, - 71, 2023, 2033, 71, 2032, 2028, 71, 2037, 2029, 2035, - 2040, 71, 2034, 71, 71, 2038, 71, 71, 2041, 2042, - 2046, 71, 2044, 2039, 71, 71, 2048, 71, 2049, 2043, - 2045, 71, 71, 71, 71, 71, 2047, 2051, 71, 71, - 2050, 2055, 2057, 2053, 71, 71, 2054, 2058, 71, 71, - 2060, 2052, 71, 2059, 2062, 71, 2056, 2061, 71, 71, - 2063, 2067, 71, 71, 71, 2064, 71, 71, 2066, 71, + 2012, 2016, 2013, 71, 2009, 2017, 71, 71, 2021, 2022, + 71, 71, 71, 71, 71, 2024, 71, 71, 2025, 2020, + 71, 2026, 2030, 2028, 2023, 71, 71, 2032, 2029, 2034, + 71, 2027, 71, 71, 71, 71, 2031, 2037, 2036, 2038, + 2033, 71, 71, 71, 2042, 71, 2039, 71, 71, 71, + 71, 71, 2043, 2045, 2048, 71, 71, 2049, 2035, 71, + 2040, 2044, 71, 2041, 2052, 2047, 71, 71, 2046, 2054, + 71, 2053, 71, 71, 2050, 2058, 71, 71, 2060, 71, + 71, 2056, 2051, 71, 2061, 71, 71, 71, 71, 2057, + 2055, 2059, 2063, 71, 2062, 2067, 2069, 2065, 2064, 71, - 71, 71, 71, 71, 71, 71, 2076, 2077, 2065, 71, - 2071, 2068, 2069, 2070, 2072, 2073, 2074, 71, 2078, 71, - 2075, 71, 71, 2079, 71, 2081, 71, 71, 2082, 2087, - 71, 71, 2089, 71, 71, 2086, 2080, 2083, 2091, 2084, - 2088, 71, 71, 71, 3070, 2094, 2090, 2092, 71, 2085, - 2095, 71, 2096, 2097, 2093, 71, 2099, 71, 71, 71, - 2098, 2101, 71, 2100, 71, 2102, 71, 2106, 71, 71, - 2107, 71, 2110, 2109, 2115, 2105, 71, 71, 71, 2103, - 71, 2111, 2114, 2108, 71, 2112, 2113, 71, 71, 71, - 2104, 71, 2116, 71, 71, 2118, 71, 71, 71, 2120, + 2066, 2070, 71, 71, 71, 71, 71, 2068, 2071, 71, + 2074, 2075, 71, 71, 71, 2072, 2073, 2079, 71, 71, + 71, 71, 2076, 2078, 71, 71, 71, 71, 71, 71, + 71, 2080, 2077, 71, 2088, 2083, 2082, 2081, 2085, 2084, + 2086, 71, 2090, 71, 71, 2087, 2089, 71, 71, 2091, + 2093, 71, 2097, 2094, 2099, 71, 71, 71, 2101, 71, + 2098, 71, 2092, 2095, 71, 2096, 2100, 71, 2103, 3082, + 71, 2106, 2104, 2108, 2105, 2102, 2107, 71, 2109, 71, + 71, 71, 71, 2110, 71, 2113, 71, 71, 2114, 2111, + 2112, 2117, 2118, 71, 71, 2119, 71, 71, 2122, 71, - 71, 71, 71, 2123, 71, 71, 2129, 71, 71, 2117, - 2127, 71, 2122, 71, 71, 2130, 2125, 71, 2119, 2121, - 2124, 2126, 2132, 2131, 71, 71, 2128, 71, 71, 71, - 2136, 2139, 71, 2135, 71, 71, 2134, 2140, 71, 2133, - 2137, 71, 71, 71, 71, 71, 2138, 2150, 71, 71, - 71, 2155, 71, 2141, 2142, 2151, 2147, 71, 71, 71, - 71, 2143, 2145, 2146, 2149, 2144, 2148, 2156, 71, 71, - 2152, 71, 2153, 2154, 2157, 71, 71, 71, 2160, 2166, - 2161, 2163, 71, 2162, 2158, 71, 71, 71, 71, 2159, - 2164, 2165, 2169, 71, 2170, 71, 71, 2172, 71, 71, + 71, 71, 2115, 2128, 71, 2123, 71, 2124, 2120, 2125, + 71, 71, 2127, 2116, 71, 2121, 2126, 71, 71, 71, + 71, 2129, 2132, 2130, 71, 71, 71, 71, 71, 2135, + 71, 71, 71, 2139, 2141, 71, 2142, 71, 71, 2131, + 2134, 71, 71, 2133, 2136, 71, 2137, 2138, 71, 71, + 2144, 71, 2143, 2140, 2146, 71, 2148, 2151, 71, 71, + 2147, 2149, 71, 2152, 2145, 71, 71, 2150, 71, 71, + 71, 71, 71, 2162, 71, 71, 71, 71, 2153, 2163, + 71, 2154, 71, 2159, 2161, 71, 2200, 2157, 2155, 2165, + 2156, 2158, 2170, 2160, 71, 2164, 71, 2167, 2166, 2168, - 2168, 2174, 71, 71, 71, 2177, 71, 2167, 71, 2176, - 2178, 71, 71, 71, 71, 2171, 71, 2173, 2175, 71, - 71, 2180, 2179, 3070, 2183, 2184, 71, 2181, 2186, 71, - 71, 71, 71, 2182, 2189, 2185, 2188, 71, 2187, 71, - 2190, 2192, 71, 71, 2196, 71, 71, 71, 71, 71, - 71, 2193, 2194, 2200, 71, 2191, 2201, 71, 71, 2203, - 71, 71, 2195, 2199, 2206, 71, 2197, 71, 71, 2202, - 2198, 71, 71, 2204, 2208, 2205, 71, 71, 2213, 71, - 71, 2207, 2209, 71, 71, 2215, 71, 71, 2214, 2210, - 2211, 71, 2219, 71, 2216, 71, 71, 2223, 2220, 71, + 71, 2169, 71, 71, 2172, 71, 71, 2171, 2175, 71, + 71, 2176, 71, 71, 2173, 2177, 71, 2174, 2181, 71, + 2182, 71, 71, 2184, 71, 71, 2186, 71, 2180, 71, + 71, 71, 2178, 2179, 71, 2188, 2189, 71, 2190, 71, + 71, 2183, 71, 2185, 2187, 2191, 71, 71, 2193, 2192, + 71, 2195, 2196, 71, 2198, 71, 71, 71, 2202, 2201, + 71, 2194, 2204, 71, 71, 71, 2197, 71, 2199, 2208, + 71, 71, 71, 2203, 71, 71, 2212, 2213, 71, 2205, + 2206, 71, 71, 2207, 71, 71, 71, 2209, 71, 2211, + 2215, 2218, 71, 2220, 2210, 2219, 71, 2216, 71, 2217, - 2221, 2225, 2212, 71, 71, 71, 71, 2224, 2227, 2217, - 2228, 2218, 2222, 71, 2230, 2232, 71, 71, 2233, 2229, - 71, 71, 2234, 71, 71, 2226, 71, 2231, 71, 2237, - 71, 71, 71, 2238, 71, 3070, 2236, 2239, 2243, 2240, - 2241, 2235, 2244, 71, 71, 71, 2242, 2245, 71, 71, - 71, 2248, 71, 2249, 2246, 71, 2250, 71, 2247, 71, - 2256, 71, 71, 71, 2251, 2252, 71, 2253, 2254, 71, - 71, 71, 2258, 2255, 71, 71, 71, 2257, 2259, 2263, - 2264, 71, 2262, 2267, 71, 2260, 2261, 71, 2268, 2269, - 71, 71, 71, 2266, 2265, 2270, 2271, 2272, 2273, 2274, + 2214, 71, 2221, 71, 2225, 71, 71, 2227, 71, 71, + 71, 2228, 71, 71, 2222, 2226, 2223, 2232, 2233, 71, + 71, 2231, 71, 71, 71, 71, 2229, 2224, 2230, 2237, + 2239, 71, 2235, 2242, 71, 2234, 2240, 2244, 2241, 71, + 71, 2236, 71, 71, 71, 2245, 71, 2246, 2238, 71, + 71, 71, 2249, 71, 71, 2243, 71, 71, 3082, 2248, + 2250, 2255, 2251, 2252, 2254, 2253, 2256, 71, 71, 2247, + 71, 71, 71, 2261, 2257, 71, 2260, 2258, 71, 71, + 2259, 71, 2262, 71, 2266, 2268, 71, 71, 71, 71, + 2263, 71, 71, 71, 71, 2279, 71, 2270, 2264, 2267, - 71, 71, 71, 71, 71, 71, 2276, 71, 71, 71, - 2280, 2281, 71, 71, 2277, 2275, 71, 71, 2283, 71, - 2284, 2278, 2285, 2286, 71, 71, 2282, 2279, 71, 71, - 2287, 71, 2291, 71, 71, 2290, 71, 2288, 71, 71, - 71, 2293, 71, 71, 71, 71, 2297, 2292, 71, 2289, - 2299, 2300, 71, 2309, 2296, 71, 71, 71, 2294, 2295, - 71, 2301, 2302, 2298, 2303, 2304, 2305, 71, 71, 71, - 2307, 71, 71, 2314, 2310, 2306, 71, 2312, 71, 71, - 71, 71, 2311, 2308, 2313, 2316, 71, 71, 2318, 71, - 2315, 71, 71, 71, 71, 71, 2317, 71, 2322, 2319, + 2265, 2271, 2269, 71, 2274, 71, 2275, 2272, 2273, 71, + 2276, 71, 2280, 71, 2277, 2281, 71, 71, 2283, 2284, + 2282, 2278, 2285, 2286, 71, 71, 71, 71, 71, 71, + 2288, 71, 71, 71, 2292, 2293, 71, 71, 71, 2289, + 2287, 71, 2295, 71, 3082, 2290, 71, 2296, 71, 2297, + 2294, 2291, 2298, 71, 71, 71, 71, 2300, 2301, 2299, + 2302, 2303, 71, 71, 71, 71, 71, 71, 2304, 2305, + 71, 2309, 71, 2312, 71, 71, 71, 2311, 71, 71, + 2308, 2313, 71, 2306, 2318, 2307, 71, 2316, 2319, 2317, + 2310, 71, 2314, 71, 2315, 71, 71, 2321, 71, 71, - 2324, 71, 2325, 2326, 71, 2320, 2327, 71, 2321, 2328, - 71, 2329, 71, 71, 71, 71, 71, 2330, 2332, 2337, - 2323, 2335, 71, 71, 71, 71, 71, 71, 2334, 2340, - 71, 71, 2336, 2333, 2331, 71, 71, 2344, 2341, 2345, - 71, 2339, 2338, 71, 71, 71, 2342, 71, 2346, 2343, - 71, 71, 2349, 2350, 2348, 71, 71, 71, 71, 3070, - 71, 71, 2347, 2354, 2351, 2356, 2357, 71, 2353, 2352, - 2358, 71, 2359, 71, 2360, 71, 71, 2355, 71, 2362, - 71, 2364, 71, 2363, 71, 2365, 71, 71, 2361, 71, - 2370, 71, 71, 71, 2366, 2372, 71, 71, 2367, 2373, + 2324, 2322, 71, 2326, 71, 2320, 2325, 2328, 71, 71, + 71, 71, 2330, 71, 71, 71, 2327, 71, 71, 2323, + 2329, 71, 2334, 2338, 71, 2340, 2336, 71, 2331, 2332, + 2333, 71, 2337, 2339, 71, 71, 2341, 71, 71, 71, + 71, 71, 71, 2349, 2335, 2344, 2347, 71, 71, 71, + 2348, 71, 71, 2342, 2346, 2352, 71, 71, 2345, 71, + 2343, 71, 2353, 71, 2356, 71, 2350, 2351, 2357, 71, + 2354, 71, 71, 71, 2360, 2355, 2358, 2361, 71, 2359, + 2362, 71, 71, 71, 71, 71, 3082, 2363, 2366, 71, + 2368, 2369, 71, 71, 2365, 2364, 2370, 71, 2371, 71, - 71, 71, 71, 71, 2374, 2369, 71, 2368, 2376, 2375, - 71, 2371, 71, 71, 2377, 2379, 2382, 71, 71, 71, - 71, 71, 2383, 2378, 71, 71, 2380, 71, 2389, 71, - 71, 71, 2381, 2386, 2390, 71, 71, 71, 2388, 2385, - 2396, 71, 71, 71, 2384, 2387, 2391, 2393, 2398, 71, - 2392, 71, 2394, 2406, 2399, 2397, 2400, 71, 71, 2395, - 2401, 71, 71, 2402, 71, 2403, 71, 2404, 71, 2405, - 71, 71, 71, 71, 71, 71, 71, 2407, 2414, 71, - 71, 2412, 71, 2418, 2419, 71, 71, 71, 2408, 2409, - 2422, 71, 2410, 2411, 2413, 2415, 2421, 2416, 2417, 71, + 2372, 71, 71, 71, 2367, 2373, 71, 2374, 2375, 71, + 2376, 71, 2377, 71, 2378, 71, 2382, 71, 2379, 71, + 2384, 71, 2385, 71, 71, 71, 71, 71, 71, 71, + 71, 2381, 71, 2380, 2388, 2386, 71, 2387, 2383, 71, + 2389, 2391, 2394, 71, 71, 71, 2390, 71, 2395, 2392, + 2393, 71, 71, 2401, 71, 71, 71, 71, 2396, 71, + 2398, 71, 71, 2402, 2397, 2400, 71, 2410, 3082, 2399, + 2403, 2404, 71, 71, 71, 2405, 2408, 2411, 2412, 71, + 2409, 2406, 2413, 71, 2407, 71, 2414, 71, 2415, 71, + 2416, 71, 2417, 71, 71, 71, 71, 71, 71, 71, - 71, 2424, 71, 71, 71, 71, 71, 71, 2420, 2423, - 71, 2427, 71, 2433, 71, 2434, 71, 2425, 71, 71, - 2428, 2426, 2435, 71, 2429, 2430, 2431, 71, 71, 71, - 71, 2432, 2439, 71, 2437, 71, 2436, 2443, 2442, 2444, - 71, 71, 2438, 2445, 2446, 71, 71, 71, 71, 2440, - 2441, 71, 71, 71, 71, 71, 2448, 71, 2452, 71, - 2457, 71, 2456, 2450, 71, 2447, 71, 2449, 2460, 71, - 71, 71, 2451, 71, 2453, 2455, 2454, 2461, 71, 2458, - 2464, 71, 2463, 71, 2459, 2462, 2466, 71, 71, 2469, - 71, 71, 71, 71, 2473, 71, 2465, 2472, 71, 2475, + 71, 71, 2418, 2426, 71, 71, 71, 2424, 71, 2430, + 2431, 71, 2419, 2421, 2420, 71, 71, 2423, 2422, 2425, + 2427, 71, 2428, 2429, 2433, 2434, 71, 71, 2432, 71, + 2435, 2436, 71, 71, 2437, 71, 2439, 71, 71, 71, + 2445, 71, 2446, 71, 2447, 2438, 71, 71, 2440, 71, + 71, 71, 71, 2441, 2443, 2442, 2451, 71, 2444, 71, + 71, 2455, 2449, 71, 2448, 2454, 2456, 71, 2450, 71, + 71, 2457, 2452, 2458, 71, 71, 71, 2453, 71, 2460, + 71, 71, 2459, 71, 71, 2464, 71, 71, 2462, 2468, + 2469, 71, 71, 71, 2461, 2472, 71, 2473, 2463, 71, - 71, 2471, 71, 2470, 71, 71, 71, 2467, 2468, 2476, - 71, 2477, 2480, 71, 71, 2481, 71, 2474, 2479, 2483, - 71, 2478, 71, 71, 71, 71, 2488, 71, 71, 2484, - 2490, 71, 2482, 2486, 2487, 2485, 71, 71, 2489, 71, - 71, 2491, 2492, 71, 71, 2494, 71, 2496, 71, 71, - 71, 2495, 2498, 2493, 2500, 2497, 71, 2503, 71, 2504, - 71, 2501, 71, 2499, 71, 2502, 71, 71, 2509, 2505, - 71, 2506, 71, 2511, 71, 2510, 71, 71, 71, 2514, - 71, 71, 2507, 2513, 2518, 2508, 2515, 71, 2517, 71, - 2516, 2512, 2519, 71, 71, 71, 2523, 2520, 71, 2521, + 71, 2465, 2466, 71, 2467, 2471, 71, 2470, 2476, 71, + 2475, 71, 71, 2477, 2474, 2481, 71, 71, 2478, 71, + 71, 2485, 71, 71, 2484, 2487, 71, 71, 2483, 2482, + 71, 2479, 2480, 71, 71, 2488, 2489, 2492, 71, 71, + 2493, 71, 2486, 2495, 71, 71, 2491, 71, 71, 2490, + 71, 2500, 71, 71, 2502, 71, 71, 2498, 2496, 2499, + 2497, 2503, 71, 2494, 71, 71, 71, 2504, 2501, 71, + 2506, 71, 71, 71, 2507, 71, 71, 71, 2505, 71, + 2509, 2510, 2512, 2517, 2513, 2515, 71, 2511, 2508, 71, + 2514, 2516, 71, 71, 2518, 71, 2521, 71, 71, 71, - 2522, 71, 71, 71, 71, 2524, 71, 71, 2525, 3070, - 2530, 2531, 71, 2526, 2529, 2528, 71, 71, 71, 71, - 71, 2527, 2535, 2532, 2533, 2534, 71, 71, 71, 71, - 71, 71, 2537, 2538, 71, 71, 71, 2543, 2536, 71, - 2541, 71, 71, 2540, 2542, 71, 71, 2539, 2544, 2548, - 71, 2550, 71, 2545, 2552, 71, 71, 71, 71, 71, - 71, 2546, 3070, 2556, 2547, 2549, 71, 2551, 2557, 71, - 2559, 2560, 2554, 2561, 2563, 2553, 71, 71, 2555, 71, - 2562, 71, 71, 71, 71, 2558, 71, 2564, 71, 71, - 2567, 71, 2565, 71, 2570, 2572, 71, 2566, 2573, 71, + 2523, 71, 71, 2522, 2526, 71, 2525, 2527, 71, 71, + 3082, 2519, 2524, 2520, 2529, 71, 71, 71, 2531, 2530, + 71, 71, 2528, 2532, 71, 2533, 2534, 2535, 71, 71, + 71, 71, 2536, 71, 2537, 71, 2542, 71, 2541, 2538, + 71, 2543, 71, 2540, 71, 2544, 2539, 71, 71, 2545, + 71, 71, 71, 2546, 2547, 2549, 2548, 2550, 71, 71, + 71, 71, 71, 2555, 71, 71, 71, 71, 71, 2553, + 2554, 71, 2552, 2556, 2560, 71, 2551, 2564, 71, 71, + 71, 71, 2563, 71, 2557, 71, 2558, 2559, 2562, 2568, + 2561, 2569, 71, 71, 2571, 2572, 2566, 3082, 2573, 2565, - 2574, 71, 2568, 71, 2569, 71, 71, 2575, 71, 2571, - 2576, 2577, 71, 2579, 2581, 71, 71, 71, 2584, 2582, - 71, 2585, 71, 2586, 71, 71, 2578, 2580, 2587, 71, - 71, 71, 2591, 71, 71, 2592, 2583, 2593, 71, 71, - 2595, 71, 2588, 71, 71, 71, 2599, 71, 2589, 2600, - 71, 2590, 71, 71, 2594, 2602, 2596, 2601, 71, 2598, - 2603, 71, 2597, 71, 71, 71, 2608, 2611, 71, 71, - 2604, 2607, 71, 2610, 71, 71, 71, 71, 2605, 2612, - 2614, 71, 71, 2606, 2613, 2616, 71, 71, 71, 2609, - 71, 2619, 2623, 71, 71, 71, 71, 71, 2617, 2618, + 71, 71, 71, 2567, 71, 2574, 71, 71, 71, 71, + 2575, 71, 2576, 71, 71, 2579, 71, 2577, 2570, 71, + 2582, 71, 2578, 2584, 71, 2585, 71, 2580, 71, 2581, + 2586, 71, 2587, 71, 2583, 2589, 71, 71, 2588, 71, + 2593, 2590, 2591, 71, 71, 2594, 71, 71, 2596, 2597, + 71, 2592, 2598, 71, 71, 71, 71, 2599, 2603, 71, + 71, 2604, 2601, 2595, 2605, 71, 71, 71, 2600, 2607, + 71, 71, 71, 2611, 2612, 71, 2602, 71, 71, 71, + 2608, 2606, 2613, 71, 71, 2614, 2610, 71, 2620, 2609, + 2615, 71, 71, 2619, 71, 71, 2623, 71, 71, 2622, - 2615, 71, 2639, 71, 2622, 2620, 2625, 71, 2621, 2624, - 2627, 2630, 71, 2628, 2626, 2629, 2631, 71, 2633, 71, - 2632, 71, 2634, 71, 2635, 71, 2636, 71, 2637, 71, - 71, 71, 2640, 71, 71, 2645, 71, 71, 71, 71, - 2642, 2646, 2648, 71, 71, 2638, 2649, 2650, 71, 2651, - 2652, 71, 71, 2643, 2644, 2647, 2641, 71, 71, 71, - 71, 2653, 2657, 71, 2658, 71, 2654, 2655, 71, 71, - 2661, 71, 71, 71, 2659, 2662, 71, 2656, 2666, 71, - 2664, 71, 2663, 2660, 71, 2665, 2667, 71, 2668, 71, - 71, 71, 71, 2669, 71, 71, 71, 2670, 71, 2672, + 2616, 71, 71, 2617, 2618, 71, 2624, 71, 2626, 71, + 2625, 71, 2628, 71, 71, 71, 2631, 2621, 2635, 71, + 71, 71, 71, 2627, 2629, 2630, 71, 71, 71, 2634, + 2637, 2632, 71, 71, 2633, 2636, 2639, 2642, 2638, 2640, + 2641, 3082, 2643, 71, 2650, 2644, 2645, 71, 71, 2646, + 71, 2647, 71, 2648, 71, 2649, 71, 71, 71, 2653, + 71, 2651, 71, 2657, 71, 71, 71, 2654, 2658, 2660, + 71, 71, 2662, 71, 71, 2664, 71, 2652, 2661, 2663, + 2655, 71, 2656, 71, 2659, 71, 71, 2669, 71, 71, + 2665, 71, 2666, 2670, 2667, 71, 2673, 71, 71, 71, - 2677, 71, 2671, 2673, 2675, 71, 71, 71, 2678, 71, - 2680, 71, 2681, 2932, 2676, 71, 2682, 2674, 2683, 2679, - 71, 2691, 71, 2685, 71, 2684, 2686, 2687, 71, 2688, - 71, 2689, 71, 2690, 71, 71, 2694, 71, 71, 71, - 2693, 71, 71, 2695, 2696, 2697, 71, 71, 71, 71, - 2702, 71, 2700, 2692, 3070, 2698, 71, 2704, 71, 71, - 71, 71, 2699, 2705, 71, 2706, 2701, 71, 2708, 2707, - 2709, 71, 2712, 71, 2703, 71, 2710, 71, 71, 71, - 71, 71, 2715, 71, 71, 2722, 71, 71, 2713, 2716, - 2714, 2711, 2719, 71, 71, 2717, 2724, 71, 2720, 71, + 2671, 2674, 71, 2677, 2668, 71, 2676, 71, 2679, 71, + 2672, 2675, 2678, 2680, 71, 71, 71, 71, 71, 2681, + 71, 71, 71, 2689, 71, 71, 2684, 71, 71, 71, + 2685, 2687, 2692, 2693, 2683, 71, 2690, 71, 2694, 71, + 2682, 2688, 71, 71, 2695, 2686, 2691, 2696, 71, 2697, + 2699, 71, 2698, 2700, 71, 2701, 71, 71, 71, 2703, + 71, 2706, 2704, 2705, 71, 2707, 2702, 71, 71, 2708, + 2709, 71, 71, 71, 71, 2714, 71, 71, 2712, 2716, + 71, 71, 2718, 71, 71, 71, 2710, 2717, 71, 2719, + 71, 2720, 2713, 2711, 71, 2724, 71, 71, 71, 71, - 2718, 2725, 71, 2727, 71, 71, 2723, 71, 71, 2721, - 71, 71, 2732, 71, 71, 2726, 2731, 71, 71, 2733, - 71, 2728, 71, 2729, 2730, 71, 2736, 2742, 2737, 2739, - 71, 71, 2741, 2734, 2744, 71, 2735, 2738, 71, 71, - 2740, 2745, 71, 2747, 71, 71, 71, 71, 2752, 71, - 71, 71, 3070, 2743, 71, 2750, 2749, 2756, 71, 2746, - 71, 71, 2754, 2748, 2757, 71, 2758, 2751, 2753, 71, - 2761, 2755, 2759, 2762, 71, 71, 71, 2764, 2763, 71, - 71, 71, 71, 71, 2769, 2766, 2767, 71, 71, 2760, - 71, 2772, 71, 71, 71, 71, 71, 2765, 2777, 71, + 71, 2715, 71, 2722, 2721, 71, 2727, 71, 2728, 71, + 2725, 2726, 71, 71, 2723, 2731, 2729, 2732, 2734, 71, + 2736, 71, 2737, 71, 2730, 71, 2739, 71, 71, 71, + 71, 71, 2735, 71, 71, 2733, 2744, 71, 2743, 71, + 71, 2748, 71, 71, 2740, 2741, 2738, 2742, 2751, 71, + 2745, 71, 71, 2753, 71, 71, 2749, 2746, 2747, 71, + 2754, 71, 2750, 2756, 71, 2757, 71, 2759, 71, 71, + 71, 2752, 71, 2765, 2755, 71, 2764, 71, 3082, 2762, + 2761, 2758, 71, 2768, 71, 71, 71, 2760, 2769, 2766, + 71, 2770, 2763, 71, 2773, 2767, 2774, 71, 2771, 71, - 2773, 2768, 71, 71, 2770, 2771, 2780, 71, 2776, 2781, - 71, 2774, 2779, 71, 71, 2778, 2783, 71, 2782, 2775, - 2785, 71, 2784, 2786, 71, 2787, 71, 71, 2789, 71, - 71, 71, 2788, 2790, 71, 71, 2794, 2795, 71, 71, - 71, 71, 2799, 71, 2800, 71, 71, 71, 71, 2801, - 2798, 2837, 2791, 2792, 2796, 71, 2793, 71, 71, 2797, - 2805, 71, 2804, 2806, 71, 71, 2802, 2803, 2809, 71, - 2807, 71, 2808, 71, 71, 2812, 71, 71, 2813, 2811, - 71, 2810, 71, 71, 71, 71, 71, 2816, 71, 71, - 2818, 71, 71, 2819, 71, 2817, 71, 2814, 71, 71, + 71, 2776, 2775, 71, 71, 71, 71, 71, 2781, 2778, + 2779, 71, 71, 2772, 71, 2784, 71, 71, 71, 71, + 71, 2777, 2789, 71, 2785, 2780, 71, 71, 2782, 2783, + 2792, 71, 2788, 2793, 71, 2786, 2791, 71, 71, 2790, + 2795, 71, 2794, 2787, 2797, 71, 2796, 2798, 71, 2799, + 71, 71, 2801, 71, 71, 71, 2800, 2802, 71, 71, + 2806, 2807, 71, 71, 71, 71, 2811, 71, 2812, 71, + 71, 71, 71, 2813, 2810, 2849, 2803, 2804, 2808, 71, + 2805, 71, 71, 2809, 2817, 71, 2816, 2818, 71, 71, + 2814, 2815, 2821, 71, 2819, 71, 2820, 71, 71, 2824, - 2815, 71, 71, 2828, 2829, 2820, 71, 2824, 2821, 2822, - 2823, 2825, 2826, 2831, 71, 71, 3070, 2827, 2894, 71, - 2832, 2830, 2833, 2835, 71, 2836, 71, 2834, 2838, 71, - 2839, 71, 2840, 2841, 71, 71, 2842, 2843, 2846, 71, - 2844, 2845, 71, 71, 2847, 71, 71, 71, 71, 71, - 2853, 71, 71, 71, 2852, 71, 71, 2856, 71, 3070, - 2848, 2849, 2855, 71, 71, 2857, 2850, 71, 2851, 71, - 2861, 2862, 71, 2858, 2863, 71, 2860, 2854, 71, 2864, - 71, 2859, 2868, 2865, 2870, 71, 71, 2869, 71, 2866, - 71, 71, 2867, 71, 71, 71, 2877, 71, 2874, 2875, + 71, 71, 2825, 2823, 71, 2822, 71, 71, 71, 71, + 71, 2828, 71, 71, 2830, 71, 71, 2831, 71, 2829, + 71, 2826, 71, 71, 2827, 71, 71, 2840, 2841, 2832, + 71, 2836, 2833, 2834, 2835, 2837, 2838, 2843, 71, 71, + 3082, 2839, 2906, 71, 2844, 2842, 2845, 2847, 71, 2848, + 71, 2846, 2850, 71, 2851, 71, 2852, 2853, 71, 71, + 2854, 2855, 2858, 71, 2856, 2857, 71, 71, 2859, 71, + 71, 71, 71, 71, 2865, 71, 71, 71, 2864, 71, + 71, 2868, 71, 3082, 2860, 2861, 2867, 71, 71, 2869, + 2862, 71, 2863, 71, 2873, 2874, 71, 2870, 2875, 71, - 2878, 2872, 71, 2880, 71, 71, 71, 71, 2879, 3070, - 2871, 2926, 2873, 71, 2876, 2881, 71, 2900, 2882, 2883, - 71, 2884, 71, 2885, 71, 2886, 71, 2887, 71, 2888, - 71, 2889, 71, 2890, 71, 71, 2892, 71, 71, 71, - 71, 71, 2897, 71, 2891, 71, 71, 2893, 71, 2901, - 2903, 71, 71, 71, 71, 2898, 2905, 71, 2899, 2895, - 2896, 2902, 71, 2907, 71, 2910, 71, 2909, 71, 71, - 2904, 71, 71, 71, 2912, 2908, 71, 71, 71, 71, - 2906, 71, 2911, 2916, 2919, 2913, 71, 2917, 71, 2915, - 2914, 2918, 2920, 2921, 71, 2922, 71, 2923, 71, 71, + 2872, 2866, 71, 2876, 71, 2871, 2880, 2877, 2882, 71, + 71, 2881, 71, 2878, 71, 71, 2879, 71, 71, 71, + 2889, 71, 2886, 2887, 2890, 2884, 71, 2892, 71, 71, + 71, 71, 2891, 3082, 2883, 2938, 2885, 71, 2888, 2893, + 71, 2912, 2894, 2895, 71, 2896, 71, 2897, 71, 2898, + 71, 2899, 71, 2900, 71, 2901, 71, 2902, 71, 71, + 2904, 71, 71, 71, 71, 71, 2909, 71, 2903, 71, + 71, 2905, 71, 2913, 2915, 71, 71, 71, 71, 2910, + 2917, 71, 2911, 2907, 2908, 2914, 71, 2919, 71, 2922, + 71, 2921, 71, 71, 2916, 71, 71, 71, 2924, 2920, - 71, 71, 2928, 71, 71, 71, 71, 2934, 2925, 2924, - 2931, 71, 71, 71, 2930, 71, 71, 71, 71, 2933, - 2927, 71, 71, 71, 2929, 2935, 2941, 71, 2948, 71, - 2936, 2937, 2938, 2940, 2942, 71, 71, 71, 2950, 71, - 2939, 2945, 2943, 2944, 71, 2951, 2949, 2947, 71, 2946, - 2952, 71, 2953, 71, 71, 71, 71, 71, 2956, 71, - 71, 2957, 2958, 2961, 71, 71, 71, 2954, 71, 71, - 71, 2964, 2966, 71, 2955, 2960, 71, 2963, 2962, 2969, - 71, 71, 71, 71, 2959, 2967, 2972, 71, 2965, 71, - 2973, 2974, 71, 2976, 71, 2968, 2970, 2977, 71, 71, + 71, 71, 71, 71, 2918, 71, 2923, 2928, 2931, 2925, + 71, 2929, 71, 2927, 2926, 2930, 2932, 2933, 71, 2934, + 71, 2935, 71, 71, 71, 71, 2940, 71, 71, 71, + 2944, 71, 2937, 2936, 2943, 71, 2946, 71, 2942, 71, + 71, 71, 71, 71, 2939, 71, 2945, 71, 2941, 71, + 2947, 71, 2953, 71, 3082, 71, 2950, 71, 2948, 2949, + 2952, 2954, 2957, 2960, 71, 71, 71, 2951, 2955, 2958, + 71, 2956, 71, 2959, 2961, 2962, 71, 71, 2963, 2964, + 71, 2965, 71, 71, 71, 2966, 2968, 71, 71, 2969, + 2967, 71, 2970, 2973, 71, 71, 71, 2971, 71, 71, - 2971, 71, 71, 71, 2982, 71, 71, 2981, 2978, 2983, - 71, 2975, 71, 71, 2979, 71, 71, 2980, 71, 71, - 2987, 71, 71, 2989, 71, 71, 71, 2984, 71, 2986, - 2994, 2995, 2985, 2988, 2991, 2992, 2996, 71, 2990, 71, - 71, 3000, 71, 2993, 71, 3002, 71, 3003, 2997, 3001, - 71, 71, 71, 71, 3008, 3004, 71, 2998, 3005, 2999, - 71, 3006, 3009, 71, 71, 3011, 71, 71, 71, 3010, - 71, 3007, 3012, 71, 71, 3017, 71, 3014, 71, 71, - 3020, 71, 3021, 71, 71, 71, 3013, 71, 71, 3024, - 71, 3019, 3015, 3016, 3022, 3018, 71, 3023, 71, 3028, + 2976, 2978, 71, 2972, 71, 2974, 2975, 2981, 71, 71, + 71, 2984, 71, 2979, 71, 2985, 2977, 71, 71, 71, + 2988, 2989, 71, 2980, 2982, 2986, 71, 71, 2983, 71, + 71, 71, 71, 2990, 71, 2991, 2993, 2987, 2994, 71, + 2995, 71, 71, 71, 71, 71, 71, 2999, 2992, 3001, + 71, 2996, 2997, 71, 3000, 71, 2998, 71, 71, 3003, + 3006, 71, 3007, 3004, 3002, 3008, 71, 71, 3012, 71, + 71, 3014, 3005, 71, 3015, 3013, 71, 71, 3009, 3010, + 71, 3016, 71, 71, 3020, 3017, 3011, 3018, 3021, 71, + 71, 71, 3023, 71, 71, 71, 3022, 71, 3024, 71, - 71, 3029, 71, 3027, 71, 3032, 3025, 3026, 71, 71, - 3034, 71, 3035, 3030, 71, 71, 71, 3039, 71, 3036, - 71, 71, 3037, 3041, 71, 3040, 71, 3033, 3031, 3042, - 71, 3043, 71, 3044, 71, 3038, 71, 3048, 71, 3046, - 71, 71, 71, 71, 71, 71, 3050, 3051, 71, 3054, - 71, 3045, 3055, 71, 3070, 3047, 71, 3058, 71, 3049, - 3059, 71, 3052, 3053, 3056, 3060, 3061, 71, 71, 3057, - 3062, 71, 71, 71, 71, 3063, 71, 3064, 3065, 3068, - 71, 3069, 71, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3066, 3070, 3067, 43, 43, 43, 43, + 71, 3029, 3019, 71, 3026, 71, 3032, 71, 71, 3033, + 71, 71, 71, 71, 3025, 71, 71, 3036, 3027, 3028, + 3034, 3031, 3030, 3035, 71, 3040, 71, 71, 71, 3039, + 71, 3041, 3037, 71, 3038, 71, 3044, 71, 3046, 71, + 3042, 71, 3047, 71, 3048, 3051, 71, 71, 71, 3045, + 3049, 71, 3050, 3052, 3043, 71, 71, 3053, 3054, 71, + 71, 3060, 71, 3055, 71, 71, 3057, 3056, 71, 3058, + 3059, 71, 71, 3062, 71, 71, 3063, 71, 3066, 3067, + 71, 71, 71, 3070, 3061, 3071, 71, 3082, 71, 3073, + 71, 3064, 71, 3065, 3068, 3072, 3074, 71, 71, 3075, - 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, - 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, - 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, - 64, 74, 74, 3070, 74, 74, 74, 74, 141, 141, - 3070, 3070, 3070, 141, 141, 143, 143, 3070, 3070, 143, - 3070, 143, 145, 3070, 3070, 3070, 3070, 3070, 145, 148, - 148, 3070, 3070, 3070, 148, 148, 150, 3070, 3070, 3070, - 3070, 3070, 150, 152, 152, 3070, 152, 152, 152, 152, - 75, 75, 3070, 75, 75, 75, 75, 13, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3069, 71, 71, 3076, 71, 3082, 3077, 3080, 71, 3081, + 71, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3078, 3082, 3079, 43, 43, 43, 43, 43, 43, + 43, 48, 48, 48, 48, 48, 48, 48, 53, 53, + 53, 53, 53, 53, 53, 59, 59, 59, 59, 59, + 59, 59, 64, 64, 64, 64, 64, 64, 64, 74, + 74, 3082, 74, 74, 74, 74, 142, 142, 3082, 3082, + 3082, 142, 142, 144, 144, 3082, 3082, 144, 3082, 144, + 146, 3082, 3082, 3082, 3082, 3082, 146, 149, 149, 3082, + 3082, 3082, 149, 149, 151, 3082, 3082, 3082, 3082, 3082, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 151, 153, 153, 3082, 153, 153, 153, 153, 75, 75, + 3082, 75, 75, 75, 75, 13, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082 } ; -static const flex_int16_t yy_chk[6029] = +static const flex_int16_t yy_chk[6057] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2107,661 +2116,664 @@ static const flex_int16_t yy_chk[6029] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3076, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3088, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, - 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1010, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 36, 89, 11, 12, 12, 12, 12, 12, 12, 21, + 23, 23, 21, 21, 36, 12, 21, 34, 23, 26, + 26, 21, 23, 89, 12, 23, 27, 27, 47, 47, + 21, 24, 42, 90, 26, 27, 24, 28, 34, 52, + 24, 28, 52, 24, 28, 24, 24, 42, 32, 32, + 1018, 28, 90, 28, 33, 33, 24, 32, 72, 33, + 69, 35, 72, 32, 63, 63, 35, 32, 77, 80, + 35, 77, 37, 37, 69, 33, 35, 37, 230, 35, + 230, 80, 39, 39, 38, 39, 35, 37, 37, 38, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 37, 40, 38, 82, 39, 40, 82, 41, 41, 38, + 39, 127, 41, 38, 38, 40, 41, 127, 78, 40, + 40, 58, 78, 58, 58, 66, 58, 66, 66, 68, + 66, 68, 68, 71, 68, 71, 71, 66, 71, 81, + 74, 85, 74, 74, 71, 74, 83, 84, 151, 83, + 85, 74, 74, 86, 87, 88, 92, 91, 93, 81, + 87, 94, 83, 91, 100, 84, 87, 86, 87, 96, + 92, 95, 93, 88, 88, 97, 91, 103, 100, 102, + 98, 94, 95, 95, 98, 102, 99, 96, 106, 101, + 95, 99, 101, 97, 104, 101, 103, 107, 105, 104, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 110, 105, 108, 109, 102, 105, 108, 106, 101, 101, + 109, 107, 106, 110, 112, 111, 113, 114, 118, 104, + 115, 105, 111, 116, 115, 117, 120, 112, 119, 119, + 117, 123, 122, 149, 117, 114, 113, 124, 118, 121, + 126, 116, 128, 121, 130, 125, 120, 122, 125, 129, + 129, 130, 121, 126, 128, 131, 124, 123, 121, 125, + 132, 133, 130, 125, 134, 139, 135, 129, 135, 136, + 129, 131, 138, 137, 141, 143, 143, 135, 137, 132, + 134, 136, 133, 139, 138, 140, 150, 150, 141, 135, + 140, 145, 158, 147, 145, 147, 147, 152, 147, 152, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 192, 190, 191, 187, - 188, 185, 190, 184, 185, 194, 194, 180, 200, 186, - 189, 189, 192, 193, 189, 195, 189, 196, 191, 193, + 152, 153, 152, 153, 153, 155, 153, 156, 155, 157, + 158, 159, 156, 153, 160, 157, 161, 162, 163, 164, + 166, 167, 160, 165, 157, 162, 159, 161, 165, 160, + 167, 169, 168, 148, 164, 176, 170, 163, 168, 168, + 166, 170, 171, 171, 172, 174, 173, 176, 173, 174, + 172, 173, 175, 175, 174, 177, 169, 178, 179, 174, + 180, 181, 178, 179, 182, 174, 174, 183, 173, 185, + 182, 183, 180, 184, 177, 186, 187, 188, 184, 189, + 190, 181, 192, 185, 189, 190, 193, 192, 187, 194, + 186, 187, 195, 182, 218, 188, 191, 191, 195, 199, - 197, 195, 206, 196, 210, 198, 199, 195, 189, 200, - 189, 198, 199, 201, 208, 206, 145, 202, 203, 201, - 197, 199, 202, 204, 203, 205, 210, 207, 212, 204, - 209, 211, 205, 207, 208, 213, 209, 214, 215, 211, - 213, 212, 216, 217, 218, 222, 214, 219, 220, 218, - 218, 221, 219, 215, 223, 221, 224, 226, 216, 225, - 223, 229, 233, 217, 227, 225, 220, 222, 228, 227, - 228, 230, 235, 231, 224, 224, 232, 226, 230, 231, - 229, 233, 232, 234, 235, 236, 237, 237, 239, 234, - 238, 238, 240, 242, 239, 241, 243, 241, 240, 236, + 191, 197, 191, 196, 196, 194, 193, 197, 202, 198, + 218, 200, 201, 197, 191, 198, 191, 200, 201, 199, + 203, 208, 210, 204, 205, 206, 203, 201, 204, 202, + 205, 206, 207, 212, 208, 209, 213, 211, 214, 207, + 215, 209, 210, 211, 213, 215, 217, 216, 219, 221, + 224, 214, 220, 222, 221, 212, 216, 220, 220, 223, + 225, 217, 226, 223, 227, 228, 225, 231, 219, 229, + 227, 222, 224, 233, 229, 232, 235, 234, 236, 233, + 226, 226, 232, 234, 236, 228, 231, 237, 238, 239, + 239, 240, 240, 244, 241, 235, 243, 242, 243, 237, - 245, 243, 246, 244, 247, 249, 248, 250, 143, 260, - 246, 248, 239, 250, 241, 244, 242, 251, 256, 245, - 252, 253, 255, 251, 247, 252, 253, 254, 249, 257, - 258, 259, 256, 254, 260, 261, 263, 255, 263, 259, - 262, 261, 266, 262, 258, 264, 264, 257, 265, 267, - 267, 265, 268, 268, 269, 271, 270, 272, 271, 273, - 266, 272, 275, 274, 283, 277, 276, 277, 273, 274, - 269, 270, 276, 278, 279, 284, 275, 281, 279, 278, - 280, 280, 281, 282, 283, 285, 286, 287, 287, 282, - 289, 288, 290, 284, 288, 279, 290, 291, 296, 286, + 241, 245, 238, 242, 247, 246, 245, 249, 250, 251, + 146, 248, 262, 250, 252, 243, 244, 246, 241, 248, + 252, 254, 253, 247, 255, 256, 254, 249, 253, 255, + 257, 256, 251, 258, 259, 260, 261, 262, 264, 268, + 263, 264, 266, 266, 261, 257, 263, 258, 265, 260, + 265, 267, 259, 271, 267, 269, 269, 268, 270, 270, + 272, 273, 274, 275, 273, 276, 274, 277, 278, 271, + 279, 286, 275, 277, 276, 272, 279, 280, 281, 280, + 287, 282, 278, 284, 281, 282, 283, 283, 284, 285, + 288, 286, 289, 290, 290, 285, 291, 292, 287, 291, - 292, 293, 293, 294, 295, 297, 285, 295, 289, 298, - 296, 297, 298, 299, 301, 302, 291, 303, 292, 315, - 315, 294, 303, 301, 295, 299, 300, 304, 305, 306, - 304, 305, 304, 302, 309, 300, 141, 307, 300, 309, - 309, 311, 306, 300, 300, 300, 300, 312, 304, 307, - 308, 310, 308, 308, 310, 313, 314, 318, 311, 317, - 317, 311, 312, 316, 313, 314, 319, 320, 316, 321, - 322, 319, 318, 327, 323, 324, 336, 336, 329, 320, - 70, 324, 325, 325, 329, 325, 328, 330, 321, 323, - 322, 328, 330, 327, 325, 331, 332, 333, 335, 332, + 293, 294, 282, 295, 293, 289, 296, 296, 297, 298, + 299, 288, 298, 300, 301, 292, 302, 301, 304, 300, + 294, 295, 299, 305, 144, 309, 297, 304, 302, 298, + 303, 306, 307, 310, 142, 307, 306, 307, 309, 303, + 308, 305, 303, 308, 315, 310, 314, 303, 303, 303, + 303, 312, 311, 307, 311, 311, 312, 312, 313, 315, + 316, 313, 317, 314, 318, 318, 314, 319, 321, 316, + 322, 317, 319, 320, 320, 322, 323, 324, 325, 326, + 327, 328, 328, 321, 328, 330, 327, 331, 323, 332, + 339, 339, 331, 328, 326, 332, 324, 333, 325, 334, - 331, 332, 334, 337, 342, 334, 331, 335, 346, 337, - 339, 333, 338, 338, 343, 339, 340, 344, 334, 340, - 349, 334, 346, 334, 342, 340, 568, 345, 348, 340, - 351, 348, 344, 568, 349, 343, 356, 340, 341, 341, - 352, 341, 345, 357, 354, 351, 353, 348, 355, 352, - 354, 353, 353, 361, 341, 356, 359, 341, 357, 341, - 360, 341, 350, 358, 350, 350, 360, 362, 363, 355, - 365, 366, 358, 368, 350, 359, 350, 350, 350, 361, - 364, 350, 363, 367, 369, 370, 364, 362, 368, 369, - 364, 366, 371, 365, 372, 372, 373, 374, 371, 375, + 336, 345, 333, 335, 334, 330, 335, 338, 335, 337, + 334, 340, 337, 346, 336, 342, 338, 340, 341, 341, + 342, 345, 347, 343, 348, 337, 343, 349, 337, 352, + 337, 70, 343, 355, 346, 351, 343, 347, 351, 348, + 354, 349, 355, 352, 343, 344, 344, 356, 344, 358, + 357, 361, 356, 356, 351, 354, 357, 359, 360, 362, + 361, 344, 365, 364, 344, 366, 344, 368, 344, 353, + 358, 353, 353, 360, 363, 369, 359, 370, 362, 366, + 363, 353, 365, 353, 353, 353, 367, 371, 353, 364, + 368, 373, 367, 372, 374, 369, 367, 370, 372, 376, - 370, 376, 377, 367, 378, 379, 381, 376, 382, 374, - 379, 380, 380, 375, 380, 383, 373, 385, 384, 385, - 378, 386, 388, 388, 382, 386, 381, 377, 389, 387, - 390, 383, 384, 387, 391, 392, 396, 385, 393, 397, - 394, 396, 395, 397, 400, 390, 398, 389, 387, 394, - 391, 395, 393, 392, 405, 398, 403, 399, 401, 403, - 394, 64, 394, 399, 401, 400, 402, 404, 406, 406, - 402, 407, 404, 409, 405, 408, 408, 410, 409, 411, - 411, 412, 413, 414, 407, 415, 413, 412, 416, 417, - 410, 418, 418, 416, 417, 419, 420, 421, 414, 422, + 374, 377, 371, 375, 375, 379, 373, 378, 380, 381, + 382, 379, 384, 377, 385, 382, 64, 383, 383, 376, + 383, 378, 386, 387, 388, 381, 388, 389, 394, 389, + 385, 390, 384, 380, 393, 390, 391, 387, 386, 396, + 391, 392, 392, 394, 395, 397, 400, 389, 468, 398, + 401, 400, 399, 393, 401, 391, 402, 396, 398, 397, + 395, 399, 403, 404, 405, 402, 409, 468, 403, 398, + 405, 398, 406, 408, 407, 411, 406, 407, 408, 410, + 410, 412, 412, 414, 404, 413, 409, 416, 411, 418, + 413, 415, 415, 416, 417, 419, 414, 420, 417, 423, - 418, 423, 425, 427, 423, 424, 415, 419, 427, 424, - 428, 422, 426, 426, 425, 421, 420, 429, 429, 430, - 432, 432, 433, 437, 434, 435, 436, 439, 440, 443, - 441, 428, 434, 442, 435, 437, 444, 446, 443, 442, - 452, 430, 444, 433, 441, 439, 436, 439, 440, 445, - 447, 446, 448, 449, 445, 448, 450, 451, 447, 453, - 452, 447, 453, 451, 454, 455, 458, 449, 456, 457, - 454, 450, 459, 456, 461, 460, 459, 462, 463, 455, - 460, 464, 462, 465, 468, 484, 484, 458, 454, 461, - 469, 457, 471, 470, 463, 473, 465, 470, 472, 473, + 421, 424, 420, 432, 418, 421, 422, 422, 425, 427, + 426, 423, 427, 428, 434, 422, 419, 428, 429, 430, + 430, 424, 426, 431, 432, 437, 425, 438, 431, 439, + 429, 433, 433, 436, 436, 438, 434, 440, 439, 441, + 443, 444, 445, 446, 447, 449, 437, 59, 448, 446, + 449, 441, 450, 447, 448, 453, 445, 440, 443, 451, + 443, 444, 452, 454, 456, 452, 450, 451, 455, 453, + 451, 458, 457, 459, 455, 457, 460, 458, 454, 461, + 467, 460, 462, 464, 456, 463, 466, 459, 464, 463, + 465, 466, 472, 469, 473, 458, 467, 475, 474, 488, - 464, 466, 466, 474, 468, 469, 480, 466, 474, 466, - 475, 471, 474, 476, 472, 466, 477, 466, 476, 478, - 466, 466, 480, 479, 482, 475, 483, 466, 478, 479, - 481, 485, 477, 481, 479, 477, 486, 486, 487, 488, - 489, 490, 491, 492, 494, 493, 483, 482, 492, 501, - 495, 488, 496, 487, 493, 489, 485, 498, 496, 502, - 490, 501, 500, 494, 491, 495, 498, 499, 500, 503, - 504, 499, 505, 506, 502, 507, 508, 510, 509, 507, - 509, 511, 511, 513, 504, 510, 512, 505, 503, 508, - 514, 506, 512, 515, 516, 513, 514, 516, 517, 518, + 488, 461, 474, 462, 476, 465, 469, 470, 470, 473, + 477, 54, 472, 470, 477, 470, 475, 479, 481, 478, + 476, 470, 482, 470, 478, 480, 470, 470, 478, 483, + 480, 482, 479, 470, 481, 483, 484, 481, 485, 486, + 483, 485, 489, 487, 490, 490, 491, 492, 495, 493, + 494, 496, 484, 498, 500, 53, 496, 497, 499, 492, + 500, 491, 486, 487, 493, 502, 497, 489, 505, 494, + 495, 503, 498, 499, 502, 503, 504, 506, 507, 508, + 505, 509, 504, 510, 511, 512, 514, 513, 511, 513, + 515, 515, 506, 508, 514, 517, 509, 507, 512, 516, - 520, 519, 521, 520, 522, 515, 519, 525, 525, 524, - 523, 521, 517, 527, 518, 523, 523, 531, 521, 527, - 522, 521, 524, 526, 526, 528, 528, 529, 529, 530, - 532, 533, 534, 532, 535, 530, 533, 536, 531, 537, - 536, 538, 535, 539, 537, 540, 541, 543, 544, 540, - 542, 534, 541, 544, 542, 545, 547, 546, 548, 550, - 553, 547, 539, 546, 538, 543, 549, 551, 551, 549, - 552, 557, 548, 556, 549, 545, 553, 550, 549, 554, - 555, 560, 59, 559, 554, 555, 557, 556, 552, 559, - 560, 561, 562, 563, 561, 566, 562, 564, 563, 565, + 518, 510, 519, 521, 522, 516, 518, 517, 520, 524, + 523, 520, 524, 525, 519, 523, 538, 521, 526, 522, + 527, 538, 525, 528, 536, 527, 527, 529, 529, 525, + 530, 530, 525, 531, 526, 539, 528, 532, 532, 531, + 533, 533, 534, 537, 535, 536, 537, 540, 534, 535, + 535, 543, 542, 541, 539, 540, 541, 542, 544, 545, + 546, 547, 548, 545, 549, 547, 546, 550, 552, 549, + 551, 553, 558, 552, 543, 555, 551, 544, 554, 557, + 548, 554, 556, 556, 559, 553, 554, 550, 558, 559, + 554, 560, 561, 555, 562, 564, 560, 557, 565, 566, - 564, 567, 569, 570, 565, 571, 572, 572, 570, 574, - 575, 566, 573, 576, 578, 569, 54, 577, 562, 567, - 578, 573, 576, 584, 579, 571, 575, 612, 574, 577, - 579, 580, 581, 581, 580, 581, 582, 583, 585, 582, - 586, 584, 583, 587, 588, 612, 586, 596, 587, 592, - 588, 589, 585, 590, 589, 591, 593, 595, 590, 594, - 591, 591, 592, 595, 594, 597, 596, 598, 599, 593, - 600, 600, 598, 601, 597, 604, 603, 608, 594, 594, - 601, 602, 603, 613, 602, 605, 606, 604, 599, 610, - 605, 606, 606, 607, 607, 609, 611, 609, 611, 602, + 567, 564, 566, 568, 567, 571, 561, 565, 568, 562, + 569, 570, 572, 569, 574, 573, 570, 576, 575, 577, + 577, 571, 573, 575, 578, 579, 567, 574, 48, 580, + 572, 581, 583, 578, 582, 584, 585, 576, 583, 585, + 581, 584, 589, 590, 579, 580, 582, 586, 586, 587, + 586, 588, 587, 591, 597, 593, 588, 590, 592, 591, + 589, 593, 594, 592, 595, 594, 596, 597, 598, 595, + 599, 596, 596, 600, 601, 599, 602, 603, 604, 600, + 606, 598, 603, 605, 605, 602, 608, 606, 607, 599, + 599, 607, 608, 601, 610, 609, 611, 613, 604, 610, - 614, 613, 608, 615, 616, 617, 618, 619, 610, 624, - 618, 617, 620, 621, 622, 623, 619, 626, 614, 627, - 625, 624, 615, 626, 616, 628, 629, 620, 621, 630, - 633, 632, 622, 627, 623, 625, 631, 628, 634, 635, - 631, 636, 637, 639, 639, 629, 633, 637, 630, 632, - 638, 640, 641, 643, 642, 640, 634, 635, 635, 645, - 636, 644, 646, 647, 638, 642, 644, 643, 649, 651, - 648, 641, 650, 649, 651, 645, 647, 648, 652, 650, - 653, 646, 654, 652, 655, 656, 657, 659, 658, 654, - 662, 660, 659, 655, 660, 657, 663, 661, 653, 656, + 615, 611, 611, 612, 612, 617, 607, 609, 614, 616, + 614, 616, 618, 619, 620, 621, 623, 624, 622, 615, + 623, 625, 613, 617, 622, 626, 624, 627, 628, 629, + 618, 619, 631, 620, 630, 621, 625, 632, 631, 634, + 626, 629, 633, 635, 636, 627, 637, 628, 636, 630, + 638, 632, 639, 640, 633, 641, 642, 646, 634, 643, + 43, 642, 635, 648, 637, 645, 638, 644, 644, 645, + 639, 640, 640, 643, 641, 647, 646, 648, 649, 650, + 651, 652, 653, 649, 655, 654, 647, 656, 657, 653, + 654, 655, 656, 657, 652, 650, 658, 659, 660, 651, - 658, 661, 664, 666, 662, 663, 665, 667, 667, 668, - 668, 669, 669, 670, 672, 673, 674, 664, 668, 675, - 665, 673, 670, 675, 666, 676, 677, 678, 679, 682, - 680, 683, 681, 672, 679, 684, 674, 676, 680, 681, - 693, 705, 690, 687, 694, 678, 705, 682, 695, 693, - 694, 677, 697, 697, 700, 684, 683, 685, 687, 690, - 699, 696, 685, 702, 695, 696, 685, 698, 698, 685, - 701, 699, 700, 706, 703, 707, 685, 685, 720, 685, - 703, 708, 53, 702, 701, 704, 704, 704, 709, 704, - 720, 709, 704, 707, 706, 710, 710, 704, 711, 712, + 662, 661, 666, 664, 659, 663, 666, 660, 664, 662, + 665, 667, 668, 665, 658, 661, 669, 663, 670, 671, + 677, 668, 672, 672, 675, 667, 673, 673, 674, 674, + 678, 669, 670, 675, 679, 673, 678, 680, 681, 677, + 671, 680, 682, 683, 685, 684, 686, 687, 688, 689, + 681, 684, 685, 686, 679, 692, 699, 698, 695, 703, + 702, 683, 699, 703, 707, 687, 698, 682, 709, 689, + 692, 701, 14, 688, 690, 695, 702, 701, 706, 690, + 704, 704, 707, 690, 705, 705, 690, 708, 709, 706, + 712, 710, 713, 690, 690, 712, 690, 710, 714, 715, - 712, 713, 721, 704, 704, 711, 708, 714, 714, 715, - 716, 722, 717, 716, 715, 722, 713, 717, 718, 718, - 719, 721, 719, 723, 725, 724, 726, 726, 728, 730, - 727, 732, 725, 729, 729, 733, 731, 735, 735, 746, - 746, 733, 728, 723, 724, 727, 734, 730, 731, 736, - 739, 734, 738, 732, 736, 736, 739, 738, 740, 743, - 741, 742, 743, 744, 740, 741, 745, 742, 748, 744, - 747, 747, 749, 750, 745, 751, 748, 752, 750, 753, - 753, 755, 751, 754, 757, 756, 759, 761, 760, 755, - 749, 756, 754, 762, 767, 759, 752, 760, 762, 763, + 718, 708, 711, 711, 711, 716, 711, 718, 716, 711, + 717, 717, 720, 713, 711, 13, 714, 719, 719, 728, + 711, 711, 721, 721, 715, 722, 723, 720, 724, 723, + 722, 725, 725, 724, 726, 727, 726, 729, 728, 730, + 732, 729, 731, 733, 733, 734, 737, 727, 732, 735, + 736, 736, 739, 738, 742, 742, 740, 753, 753, 730, + 734, 731, 740, 735, 737, 738, 741, 743, 754, 754, + 745, 741, 743, 743, 739, 745, 746, 747, 750, 748, + 749, 750, 746, 747, 748, 751, 749, 752, 755, 756, + 759, 751, 757, 758, 761, 752, 755, 757, 760, 760, - 765, 764, 766, 757, 764, 765, 768, 769, 763, 771, - 771, 761, 770, 772, 773, 768, 766, 770, 770, 767, - 769, 774, 775, 776, 780, 778, 776, 778, 772, 782, - 774, 779, 779, 773, 776, 781, 783, 784, 785, 786, - 781, 788, 787, 789, 790, 780, 775, 789, 791, 792, - 782, 787, 793, 794, 795, 792, 783, 784, 796, 786, - 785, 793, 790, 797, 788, 794, 798, 791, 801, 797, - 799, 803, 796, 795, 802, 799, 800, 800, 804, 805, - 798, 806, 807, 802, 808, 813, 804, 809, 801, 810, - 812, 803, 811, 809, 814, 810, 812, 817, 818, 805, + 758, 764, 762, 761, 766, 763, 767, 756, 768, 759, + 762, 763, 769, 766, 770, 767, 771, 769, 774, 771, + 764, 772, 773, 770, 775, 776, 772, 778, 778, 777, + 779, 780, 768, 775, 777, 777, 773, 781, 776, 782, + 785, 783, 785, 774, 783, 779, 781, 786, 786, 787, + 780, 788, 783, 789, 792, 790, 788, 791, 793, 794, + 795, 796, 797, 782, 1036, 796, 798, 799, 794, 802, + 787, 1036, 800, 799, 789, 790, 792, 791, 793, 801, + 797, 800, 803, 795, 804, 798, 805, 806, 802, 808, + 804, 801, 806, 807, 807, 809, 803, 810, 811, 812, - 814, 807, 815, 806, 808, 813, 811, 816, 815, 819, - 818, 816, 820, 824, 819, 822, 817, 825, 818, 821, - 821, 822, 823, 826, 827, 823, 828, 828, 829, 826, - 825, 824, 830, 820, 831, 831, 832, 830, 833, 834, - 834, 835, 833, 837, 827, 836, 829, 838, 837, 840, - 841, 832, 843, 844, 846, 846, 847, 849, 849, 48, - 847, 848, 850, 835, 841, 836, 838, 851, 852, 869, - 869, 851, 843, 840, 844, 845, 848, 854, 845, 853, - 845, 855, 854, 852, 845, 857, 845, 850, 859, 861, - 858, 845, 856, 853, 858, 855, 845, 856, 856, 857, + 805, 813, 814, 0, 809, 815, 811, 816, 817, 808, + 818, 820, 819, 816, 817, 824, 821, 810, 819, 812, + 822, 814, 821, 813, 818, 815, 822, 825, 823, 827, + 826, 820, 823, 831, 824, 826, 828, 828, 829, 825, + 830, 832, 833, 830, 829, 834, 836, 825, 833, 842, + 827, 831, 835, 835, 832, 837, 838, 838, 839, 840, + 837, 841, 841, 840, 836, 834, 843, 844, 845, 847, + 848, 842, 844, 839, 850, 851, 853, 853, 854, 857, + 855, 858, 854, 859, 848, 858, 843, 845, 856, 856, + 873, 860, 998, 847, 850, 855, 851, 852, 859, 873, - 860, 861, 862, 859, 863, 860, 858, 862, 864, 865, - 866, 867, 872, 868, 873, 860, 866, 867, 863, 868, - 870, 871, 874, 865, 876, 870, 877, 871, 904, 864, - 878, 877, 881, 873, 872, 882, 876, 881, 879, 883, - 874, 875, 875, 882, 878, 880, 880, 875, 904, 875, - 879, 884, 885, 883, 887, 875, 886, 886, 887, 889, - 875, 875, 891, 890, 892, 889, 890, 875, 893, 895, - 884, 885, 43, 894, 893, 897, 898, 892, 894, 899, - 900, 891, 901, 902, 897, 898, 900, 903, 895, 905, - 906, 901, 903, 907, 910, 899, 911, 908, 909, 914, + 852, 862, 852, 998, 857, 860, 852, 861, 852, 864, + 865, 863, 861, 852, 865, 862, 863, 863, 852, 866, + 867, 868, 869, 864, 870, 867, 865, 869, 871, 872, + 874, 875, 880, 868, 866, 867, 874, 875, 870, 876, + 877, 877, 878, 872, 879, 876, 881, 878, 882, 871, + 879, 884, 885, 958, 880, 886, 889, 885, 887, 888, + 888, 889, 891, 884, 890, 881, 882, 883, 883, 886, + 887, 892, 890, 883, 958, 883, 891, 893, 894, 894, + 895, 883, 897, 899, 895, 900, 883, 883, 897, 898, + 892, 901, 898, 883, 902, 903, 893, 901, 900, 902, - 910, 917, 902, 905, 916, 907, 908, 909, 912, 918, - 906, 919, 920, 911, 912, 914, 921, 922, 916, 923, - 927, 917, 922, 930, 923, 919, 932, 926, 918, 927, - 920, 921, 926, 928, 928, 929, 930, 935, 933, 936, - 935, 929, 932, 933, 933, 934, 934, 937, 938, 934, - 939, 941, 940, 936, 942, 943, 944, 945, 946, 947, - 942, 950, 944, 946, 938, 940, 941, 937, 939, 953, - 14, 949, 945, 947, 949, 943, 951, 956, 952, 954, - 959, 951, 950, 952, 954, 953, 955, 958, 960, 956, - 964, 955, 961, 958, 960, 963, 959, 967, 961, 962, + 905, 906, 899, 907, 909, 908, 910, 911, 912, 905, + 906, 908, 911, 909, 903, 913, 914, 916, 915, 907, + 919, 918, 917, 922, 925, 910, 916, 918, 912, 913, + 915, 917, 920, 924, 926, 927, 914, 919, 920, 922, + 928, 929, 0, 930, 925, 931, 934, 924, 930, 927, + 931, 934, 935, 926, 936, 936, 929, 937, 928, 938, + 940, 935, 941, 937, 944, 942, 942, 941, 941, 942, + 943, 945, 938, 943, 946, 947, 940, 950, 944, 948, + 949, 951, 952, 950, 953, 964, 955, 0, 952, 954, + 946, 945, 948, 947, 954, 949, 961, 964, 959, 953, - 962, 968, 965, 969, 963, 965, 966, 966, 964, 970, - 972, 971, 970, 973, 979, 967, 972, 974, 980, 973, - 968, 975, 974, 969, 971, 976, 975, 977, 981, 986, - 976, 982, 979, 977, 981, 984, 982, 985, 980, 983, - 983, 987, 988, 990, 984, 988, 985, 986, 989, 991, - 992, 989, 993, 994, 990, 995, 999, 996, 997, 994, - 987, 995, 992, 997, 998, 998, 1000, 991, 1003, 1001, - 1002, 993, 996, 1004, 1002, 999, 1005, 1006, 1008, 1011, - 1000, 1001, 1004, 1009, 1009, 1012, 1003, 1013, 1017, 1014, - 1016, 1016, 1015, 1011, 1014, 1005, 13, 1008, 1018, 1013, + 955, 951, 957, 959, 960, 957, 962, 967, 963, 960, + 966, 962, 961, 963, 968, 969, 966, 970, 970, 971, + 968, 969, 972, 967, 973, 974, 974, 973, 971, 975, + 976, 977, 978, 979, 982, 978, 980, 981, 985, 982, + 972, 987, 980, 981, 985, 983, 979, 975, 984, 976, + 983, 977, 988, 984, 989, 992, 990, 991, 991, 987, + 989, 990, 993, 994, 992, 995, 996, 997, 999, 996, + 997, 993, 988, 1000, 1001, 1004, 1002, 1003, 1006, 1006, + 1007, 994, 1002, 1003, 995, 1000, 999, 1005, 1008, 1009, + 1004, 1010, 1005, 1001, 1011, 1010, 1012, 1013, 1014, 1007, - 1012, 1015, 1006, 1019, 1018, 1020, 1023, 1022, 1017, 1019, - 1020, 1021, 1022, 1021, 1024, 1026, 1025, 1027, 1028, 1029, - 1023, 1025, 1030, 1032, 1032, 1028, 1033, 1034, 1024, 1035, - 1026, 1036, 1037, 1145, 1029, 1145, 1027, 1036, 1040, 1040, - 1033, 1030, 1038, 1041, 1035, 1034, 1043, 1038, 1041, 1042, - 1042, 1044, 1037, 1043, 1045, 1046, 1038, 1045, 1038, 1047, - 1048, 1038, 1049, 1050, 1052, 1044, 1051, 1049, 1053, 1048, - 1058, 1051, 1055, 1055, 1046, 1052, 1056, 1047, 1057, 1059, - 1064, 1056, 1050, 1057, 1059, 1060, 1061, 1053, 1062, 1060, - 1058, 1063, 1065, 1066, 1067, 1061, 1069, 1068, 1070, 1064, + 1016, 1009, 1008, 1017, 1017, 1012, 1019, 1020, 1022, 1021, + 1024, 1024, 1011, 1022, 1025, 1023, 1013, 1040, 1040, 1016, + 1019, 1021, 1020, 1014, 1023, 1026, 1027, 1029, 1028, 1029, + 1030, 1026, 1027, 1028, 1025, 1030, 1031, 1032, 1033, 1034, + 1035, 1037, 1038, 1033, 1041, 1042, 1044, 1043, 1045, 1069, + 1031, 1032, 1044, 1069, 1034, 1046, 1037, 0, 1041, 1035, + 1046, 1038, 1043, 1042, 1048, 1048, 1051, 1049, 1045, 1046, + 1052, 1046, 1049, 1051, 1046, 1050, 1050, 1053, 1054, 1056, + 1053, 1055, 1057, 1058, 1052, 1060, 1059, 1057, 1056, 1061, + 1060, 1062, 1064, 1064, 1067, 0, 1065, 1054, 1059, 1055, - 1071, 1067, 1073, 1062, 1065, 1072, 1063, 1074, 1066, 1068, - 1075, 1072, 1076, 1081, 1078, 1069, 1080, 1073, 1071, 1070, - 1078, 1076, 1079, 1082, 1080, 1083, 1084, 1074, 1082, 1085, - 1075, 1084, 1084, 1081, 1087, 1086, 1079, 1083, 1088, 1088, - 1090, 0, 1091, 1093, 1093, 1095, 1092, 1087, 1085, 1086, - 1089, 1091, 1092, 1090, 1095, 1089, 1094, 1097, 1089, 1089, - 1096, 1094, 1097, 1089, 1100, 1098, 1096, 1099, 1099, 1089, - 1098, 1101, 1101, 1089, 1102, 1103, 1104, 1102, 1105, 1102, - 1106, 1107, 1108, 1109, 1110, 1100, 1107, 1105, 1112, 1147, - 1110, 1111, 1147, 1112, 1104, 1103, 1108, 1111, 1113, 1114, + 1061, 1065, 1058, 1066, 1068, 1071, 1070, 1072, 1066, 1068, + 1062, 1073, 1074, 1075, 1067, 1070, 1076, 1077, 1078, 1079, + 1071, 1080, 1072, 1076, 1074, 1081, 1082, 1083, 1075, 1077, + 1073, 1081, 1084, 1085, 1088, 1089, 1090, 1078, 1087, 1080, + 1079, 1082, 1085, 1089, 1087, 1091, 1092, 1083, 1088, 1093, + 1091, 1094, 1084, 1095, 1093, 1093, 1090, 1100, 1092, 1096, + 1097, 1097, 1099, 1101, 1102, 1102, 1100, 1095, 1104, 1101, + 1094, 1103, 1096, 1098, 1105, 1099, 1103, 1104, 1098, 1106, + 1105, 1098, 1098, 1107, 1106, 1109, 1098, 1112, 1107, 1108, + 1108, 1113, 1098, 1110, 1110, 1111, 1098, 1115, 1111, 1114, - 1106, 1109, 1113, 1115, 1115, 1117, 1116, 1116, 1114, 1116, - 1119, 1120, 1121, 1114, 1119, 1114, 1117, 1114, 1122, 1114, - 1125, 1127, 1124, 1123, 1128, 1129, 1120, 1122, 1123, 1123, - 1121, 1124, 1126, 1128, 1130, 1127, 1131, 1126, 1134, 1132, - 1133, 1133, 1125, 1135, 1129, 1132, 1134, 1136, 1137, 1138, - 1131, 1139, 1136, 1130, 1140, 1141, 1143, 1135, 1138, 1149, - 1141, 1150, 1137, 1142, 1142, 1144, 1144, 1148, 1152, 1139, - 1150, 1143, 1148, 1151, 1151, 1153, 1153, 1155, 1149, 1140, - 1154, 1154, 1155, 1156, 1157, 1158, 1158, 1159, 1152, 1160, - 1161, 1162, 1160, 1163, 1165, 1164, 1162, 1164, 1167, 1168, + 1111, 1117, 1118, 1124, 1124, 1116, 1109, 1112, 1114, 1113, + 1116, 1121, 1119, 1120, 1123, 1117, 1121, 1115, 1119, 1120, + 1118, 1122, 1126, 1123, 1129, 1122, 1125, 1125, 1123, 1125, + 1123, 1128, 1123, 1126, 1123, 1128, 1130, 1131, 1132, 1129, + 1133, 1134, 1135, 1132, 1132, 1136, 1131, 1135, 1137, 1133, + 1138, 1139, 1140, 1144, 1130, 1141, 1148, 1137, 1146, 1136, + 1143, 1141, 1149, 1134, 1142, 1142, 1140, 1144, 1143, 1138, + 1139, 1145, 1146, 1147, 1148, 1150, 1145, 1151, 1151, 1152, + 1150, 1158, 1147, 1153, 1153, 1157, 1154, 1149, 1154, 1156, + 1157, 1161, 1156, 1159, 1152, 1160, 1160, 1162, 1162, 1165, - 0, 1167, 1163, 1169, 1156, 1157, 1170, 1159, 1169, 1172, - 1161, 1171, 1165, 1173, 1168, 1177, 1171, 1172, 1173, 1174, - 1170, 1175, 1175, 1176, 1174, 1178, 1180, 1179, 1176, 1182, - 1183, 1178, 1184, 1177, 1179, 1182, 1183, 1184, 1185, 1180, - 1186, 1187, 1188, 1190, 1185, 1189, 1189, 1192, 1193, 1186, - 1194, 1195, 1196, 1188, 1199, 1198, 1194, 1195, 1196, 1200, - 1187, 1198, 1205, 1190, 1201, 1203, 1202, 1192, 1199, 1204, - 1204, 1193, 1206, 1207, 1199, 1210, 1201, 1209, 1209, 1200, - 1202, 1208, 1205, 1203, 1211, 1213, 1208, 1214, 1215, 1211, - 1216, 1207, 1214, 1214, 1217, 1218, 1219, 1206, 1210, 1216, + 1158, 1164, 1159, 1163, 1163, 1166, 1164, 1167, 1167, 1168, + 1169, 1161, 1170, 1169, 1171, 1172, 1173, 1174, 1173, 1171, + 1165, 1177, 1176, 1178, 1172, 1176, 1166, 1179, 1178, 1168, + 1186, 1181, 1170, 1180, 0, 1174, 1177, 1182, 1180, 1181, + 1183, 1179, 1182, 1184, 1184, 1183, 1185, 1187, 1186, 1188, + 1189, 1185, 1191, 1187, 1192, 1194, 1188, 1193, 1191, 1195, + 1192, 1194, 1193, 1189, 1196, 1197, 1198, 1198, 1195, 1199, + 1201, 1202, 1203, 1204, 1205, 1207, 1197, 1208, 1203, 1204, + 1205, 1207, 1209, 1196, 1210, 1211, 1212, 1213, 1213, 1199, + 1201, 1208, 1214, 1215, 1202, 1216, 1210, 1208, 1217, 1211, - 1220, 1222, 1217, 1222, 1213, 1221, 1215, 1223, 1225, 1218, - 1221, 1219, 1226, 1221, 1225, 1220, 1226, 1227, 1220, 1228, - 1229, 1223, 1230, 1231, 1228, 1228, 1232, 1233, 1227, 1234, - 1235, 1232, 1237, 1238, 1234, 1239, 1240, 1240, 1241, 1229, - 1242, 1231, 1241, 1243, 1245, 1233, 1237, 1246, 1230, 1244, - 1235, 1238, 1248, 1239, 1247, 1244, 1245, 1249, 1242, 1250, - 1251, 1254, 1243, 1252, 1253, 1251, 1246, 1248, 1247, 1253, - 1252, 1255, 1249, 1256, 1256, 1257, 1258, 1259, 1250, 1254, - 1255, 1260, 1258, 1261, 1269, 1262, 1260, 1263, 1263, 1261, - 1257, 1262, 1264, 1264, 1266, 1266, 1267, 1268, 1259, 1270, + 1218, 1218, 1209, 1217, 1212, 1219, 1220, 1222, 1225, 1223, + 1227, 1220, 1214, 1216, 1223, 1223, 1224, 1225, 1215, 1226, + 1228, 1229, 0, 1232, 1227, 1230, 1222, 1226, 1219, 1231, + 1230, 1231, 1234, 1230, 1224, 1228, 1229, 1232, 1234, 1229, + 1235, 1236, 1237, 1238, 1235, 1239, 1240, 1237, 1237, 1241, + 1242, 1243, 1236, 1244, 1241, 1242, 1245, 1248, 1244, 1247, + 1249, 1252, 1238, 1251, 1240, 1250, 1250, 1251, 1253, 1243, + 1255, 1239, 1256, 1247, 1254, 1248, 1245, 1258, 1249, 1252, + 1254, 1257, 1255, 1259, 1260, 1261, 1262, 1253, 1264, 1263, + 1261, 1256, 1258, 1262, 1263, 1257, 1265, 1267, 1259, 1266, - 1267, 1271, 1269, 1272, 1273, 1273, 1268, 1274, 1277, 1275, - 1272, 1278, 1281, 1270, 1276, 1279, 1271, 1275, 1280, 1276, - 1279, 1279, 1277, 1280, 1280, 1282, 1282, 1274, 1283, 1284, - 1278, 1285, 1281, 1286, 1287, 1288, 1289, 1290, 1286, 1291, - 1285, 1292, 1294, 1290, 1291, 1293, 1295, 1283, 1284, 1297, - 1296, 1293, 1295, 1287, 1289, 1288, 1296, 1298, 1299, 1300, - 1301, 1294, 1302, 1306, 1303, 1304, 1304, 1292, 1297, 1305, - 1307, 1307, 1305, 1311, 1301, 1306, 1298, 1299, 1300, 1303, - 1308, 1308, 1309, 1302, 1310, 1312, 1311, 1309, 1310, 1313, - 1314, 1318, 1314, 1316, 1312, 1317, 1314, 1319, 1320, 1325, + 1266, 1268, 1269, 1260, 1270, 1265, 1264, 1268, 1271, 1270, + 1272, 1277, 1267, 1279, 1271, 1277, 1272, 1273, 1273, 1274, + 1274, 1276, 1276, 1269, 1278, 1280, 1281, 1282, 1283, 1283, + 1284, 1279, 1285, 1278, 1282, 1287, 1288, 1286, 1289, 1280, + 1285, 1281, 1286, 1289, 1289, 1291, 1290, 1292, 1292, 1287, + 1284, 1290, 1290, 1293, 1294, 1288, 1296, 1295, 1297, 1298, + 1299, 1296, 1300, 1302, 1301, 1291, 1295, 1304, 1300, 1301, + 1303, 1307, 1293, 1294, 1305, 1306, 1303, 1297, 1299, 1298, + 1305, 1306, 1308, 1309, 1310, 1311, 1304, 1312, 1316, 1302, + 1307, 1313, 1314, 1314, 1315, 1317, 1317, 1315, 1321, 1311, - 1317, 1323, 1313, 1321, 1321, 1322, 1318, 1323, 1324, 1314, - 1322, 1316, 1325, 1326, 1320, 1327, 1328, 1319, 1326, 1327, - 1328, 1329, 1330, 1324, 1331, 1332, 1333, 1333, 1335, 1337, - 1338, 1332, 1339, 1339, 1341, 1338, 1340, 1343, 1343, 1347, - 1330, 1329, 1340, 1348, 1331, 1345, 1335, 1351, 1345, 1352, - 1337, 1346, 1346, 1350, 1341, 1347, 1350, 1354, 1352, 1348, - 1353, 1353, 1355, 1356, 1357, 1358, 1360, 1351, 1361, 1357, - 1359, 1359, 1354, 1362, 1363, 1360, 1364, 1364, 1365, 1358, - 1366, 1368, 1356, 1355, 1367, 1371, 1361, 1373, 1362, 1367, - 1369, 1369, 1365, 1370, 1372, 1372, 1368, 1370, 1366, 1363, + 1316, 1308, 1309, 1310, 1318, 1318, 1313, 1319, 1312, 1320, + 1322, 1321, 1319, 1320, 1323, 1324, 1328, 1324, 1326, 1322, + 1327, 1324, 1329, 1330, 1335, 1327, 1333, 1323, 1331, 1331, + 1332, 1328, 1333, 1334, 1324, 1332, 1326, 1335, 1336, 1330, + 1337, 1338, 1329, 1336, 1337, 1338, 1339, 1340, 1334, 1341, + 1342, 1343, 1343, 1345, 1347, 1348, 1342, 1349, 1349, 1351, + 1348, 1350, 1353, 1353, 1357, 1340, 1339, 1350, 1358, 1341, + 1355, 1345, 1361, 1355, 1362, 1347, 1356, 1356, 1360, 1351, + 1357, 1360, 1364, 1362, 1358, 1363, 1363, 1365, 1366, 1367, + 1368, 1370, 1361, 1371, 1367, 1369, 1369, 1364, 1372, 1373, - 1374, 1376, 1375, 1377, 1380, 1371, 1375, 1381, 1377, 1373, - 1382, 1374, 1379, 1379, 1383, 1384, 1385, 1385, 1386, 1387, - 1376, 1381, 1380, 1386, 1388, 1389, 1390, 1391, 1383, 1382, - 1382, 1390, 1393, 1392, 1389, 1392, 1394, 1393, 1395, 1387, - 1384, 1398, 1394, 1396, 1388, 1399, 1399, 1391, 1400, 1396, - 1401, 1404, 1403, 1405, 1405, 1398, 1401, 1403, 1395, 1406, - 1406, 1408, 1407, 1409, 1413, 1410, 1415, 1400, 1410, 1411, - 1411, 1412, 1415, 1421, 1414, 1404, 1407, 1414, 1409, 1408, - 1414, 1416, 1417, 1412, 1413, 1417, 1416, 1419, 1420, 1423, - 1430, 1422, 1414, 1420, 1422, 1423, 1419, 1424, 1421, 1425, + 1370, 1374, 1374, 1375, 1368, 1376, 1378, 1366, 1365, 1377, + 1381, 1371, 1383, 1372, 1377, 1379, 1379, 1375, 1380, 1382, + 1382, 1378, 1380, 1376, 1373, 1384, 1386, 1385, 1387, 1390, + 1381, 1385, 1391, 1387, 1383, 1392, 1384, 1389, 1389, 1393, + 1394, 1395, 1395, 1396, 1397, 1386, 1391, 1390, 1396, 1398, + 1399, 1400, 1401, 1393, 1392, 1392, 1400, 1403, 1402, 1399, + 1402, 1404, 1403, 1405, 1397, 1394, 1408, 1404, 1406, 1398, + 1409, 1409, 1401, 1410, 1406, 1411, 1414, 1413, 1415, 1415, + 1408, 1411, 1413, 1405, 1416, 1416, 1418, 1417, 1419, 1423, + 1420, 1425, 1410, 1420, 1421, 1421, 1422, 1425, 1431, 1424, - 1425, 1417, 1424, 1426, 1426, 1427, 1429, 1428, 1430, 1431, - 1432, 1427, 1428, 1433, 1434, 1435, 1433, 1436, 1437, 1429, - 1434, 1435, 1436, 1438, 1437, 1442, 1439, 1443, 1431, 1441, - 1432, 1439, 1440, 1440, 1441, 1444, 1445, 1446, 1449, 1450, - 1447, 1448, 1451, 1442, 1449, 1453, 1438, 1443, 1456, 1452, - 1445, 1446, 1447, 1457, 1448, 1444, 1455, 1455, 1457, 1450, - 1458, 1458, 1451, 1452, 1459, 1461, 1453, 1460, 1456, 1462, - 1464, 1463, 1467, 1471, 1466, 1465, 1469, 1473, 1473, 1459, - 1463, 1460, 1465, 1466, 1476, 1464, 1466, 1462, 1467, 1461, - 1472, 1469, 1475, 1472, 1474, 1474, 1469, 1477, 1471, 1479, + 1414, 1417, 1424, 1419, 1418, 1424, 1426, 1427, 1422, 1423, + 1427, 1426, 1429, 1430, 1433, 1433, 1432, 1424, 1430, 1432, + 1435, 1429, 1434, 1431, 1440, 1435, 1427, 1438, 1434, 1436, + 1436, 1437, 1437, 1438, 1439, 1441, 1442, 1440, 1443, 1439, + 1444, 1445, 1446, 1444, 1447, 1448, 1449, 1445, 1446, 1447, + 1453, 1448, 1450, 1441, 1454, 1442, 1452, 1450, 1443, 1451, + 1451, 1452, 1455, 1456, 1457, 1460, 1461, 1458, 1453, 1449, + 1459, 1460, 1462, 1463, 1454, 1464, 1470, 1456, 1457, 1458, + 1466, 1466, 1455, 1459, 1467, 1468, 1461, 1463, 1469, 1469, + 1468, 1470, 1462, 1471, 1472, 1473, 1464, 1474, 1476, 1475, - 1477, 1480, 1476, 1481, 1475, 1478, 1478, 1483, 1481, 1482, - 1485, 1484, 1479, 1486, 1482, 1488, 1487, 1489, 1491, 1485, - 1480, 1490, 1490, 1489, 1488, 1487, 1483, 1484, 1487, 1492, - 1493, 1494, 1486, 1495, 1496, 1499, 1500, 1502, 1491, 1501, - 1501, 1503, 1492, 1505, 1505, 1494, 1496, 1504, 1493, 1495, - 1503, 1507, 1504, 1502, 1500, 1506, 1507, 1508, 1505, 1509, - 1499, 1510, 1513, 1511, 1506, 1515, 1514, 1506, 1511, 1511, - 1518, 0, 1516, 1519, 1519, 1508, 1513, 1516, 1517, 1510, - 1509, 1514, 1525, 1520, 1517, 1521, 1522, 1515, 1518, 1520, - 1521, 1523, 1522, 1526, 1527, 1528, 1529, 1523, 1530, 1529, + 1477, 1478, 1482, 1486, 1467, 1476, 1474, 1471, 1480, 1477, + 1484, 1484, 1477, 1473, 1475, 1486, 1483, 1478, 1472, 1483, + 1485, 1485, 1487, 1480, 1489, 1489, 1488, 1482, 1480, 1488, + 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1492, 1493, 1497, + 1487, 1503, 1500, 1490, 1502, 1496, 1499, 1498, 1500, 1504, + 1491, 1495, 1505, 1494, 1503, 1499, 1498, 1506, 1497, 1498, + 1501, 1501, 1507, 1510, 1502, 1511, 1505, 1504, 1512, 1512, + 1513, 1514, 1515, 1506, 1507, 1516, 1516, 1515, 1519, 1518, + 1514, 1520, 1517, 1511, 1518, 1521, 1513, 1522, 1510, 1525, + 1516, 1517, 1522, 1522, 1517, 1524, 1519, 1526, 1529, 0, - 1527, 1532, 1525, 1534, 1530, 1529, 1535, 1526, 1528, 1532, - 1536, 1537, 1559, 1538, 1539, 1540, 1541, 1559, 1536, 1545, - 1537, 1547, 1534, 1542, 1542, 1535, 1538, 1539, 1543, 1540, - 1541, 1544, 1545, 1548, 1543, 1546, 1546, 1544, 1549, 1550, - 1551, 1547, 1552, 1553, 1554, 1542, 1551, 1556, 1556, 1557, - 1558, 1548, 1550, 1560, 1558, 1561, 1562, 1549, 1560, 1553, - 1561, 1563, 1554, 1565, 1552, 1562, 1566, 1566, 1567, 1557, - 1568, 1569, 1570, 1570, 1571, 1575, 1572, 1573, 1565, 1574, - 1576, 1578, 1568, 1572, 1563, 1579, 1577, 1567, 1571, 1573, - 1569, 1574, 1577, 1578, 1575, 1580, 1581, 1581, 1586, 1582, + 1527, 1528, 1520, 1521, 1525, 1527, 1531, 1528, 1532, 1524, + 1530, 1530, 1531, 1532, 1533, 1534, 1529, 1536, 1537, 1526, + 1533, 1534, 1538, 1539, 1540, 1541, 1543, 1540, 1538, 1545, + 1546, 1541, 1537, 1540, 1543, 1547, 1539, 1536, 1548, 1549, + 1550, 1551, 1552, 1547, 1553, 1553, 1556, 1548, 1545, 1546, + 1558, 1554, 1549, 1550, 1555, 1551, 1552, 1554, 1559, 1556, + 1555, 1557, 1557, 1560, 1561, 1562, 1553, 1563, 1564, 1565, + 1558, 1562, 1567, 1567, 1568, 1569, 1559, 1561, 1570, 1569, + 1571, 1572, 1560, 1570, 1564, 1571, 1572, 1565, 1573, 1563, + 1574, 1576, 1577, 1577, 1568, 1578, 1579, 1573, 1580, 1581, - 1576, 1580, 1582, 1579, 1583, 1583, 1585, 1586, 1587, 1588, - 1588, 1585, 1589, 1590, 1587, 1590, 1591, 1592, 1593, 1591, - 1594, 1595, 1596, 1597, 1589, 1600, 1601, 1596, 1599, 1598, - 1600, 1602, 1597, 1606, 1606, 1601, 1608, 1592, 1594, 1595, - 1593, 1598, 1603, 1599, 1604, 1605, 1607, 1603, 1601, 1604, - 1609, 1602, 1607, 1611, 1603, 1610, 1612, 1608, 1612, 1617, - 1605, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1609, - 1621, 1610, 1623, 1611, 0, 1613, 1623, 1613, 1628, 1617, - 1618, 1618, 1619, 1619, 1622, 1622, 1624, 1625, 1627, 1620, - 1625, 1621, 1624, 1629, 1627, 1630, 1628, 1631, 1636, 1629, + 1581, 1582, 1583, 1586, 1584, 1587, 1576, 1585, 1579, 1583, + 1590, 1589, 1588, 1574, 1578, 1582, 1584, 1580, 1588, 1585, + 1591, 1593, 1586, 1589, 1593, 1587, 1591, 1597, 1590, 1592, + 1592, 1594, 1594, 1596, 1598, 1600, 1597, 1601, 1596, 1601, + 1598, 1599, 1599, 1602, 1603, 1604, 1602, 1600, 1605, 1607, + 1606, 1608, 1611, 1609, 1607, 1610, 1613, 1611, 1615, 1619, + 1608, 0, 1612, 1615, 1603, 1609, 1605, 1604, 1606, 1614, + 1610, 1612, 1616, 1618, 1614, 1621, 1613, 1617, 1617, 1618, + 1619, 1614, 1622, 1623, 1612, 1625, 1624, 1616, 1624, 1626, + 1626, 1627, 1627, 1629, 1621, 1628, 1628, 1632, 1622, 1625, - 1631, 1632, 1632, 1633, 1633, 1634, 1637, 1638, 0, 1635, - 1639, 1634, 1643, 1638, 1643, 1642, 1644, 1645, 1636, 1641, - 1630, 1635, 1635, 1635, 1641, 1641, 1637, 1644, 1635, 1642, - 1639, 1646, 1645, 1647, 1648, 1649, 1651, 1646, 1650, 1650, - 1652, 1652, 1647, 1653, 1654, 1655, 1655, 1656, 1656, 1657, - 1660, 1660, 1661, 1665, 1648, 1662, 1649, 1668, 1664, 1666, - 1667, 1667, 1651, 1653, 1662, 1666, 1654, 1664, 1669, 1657, - 1672, 1671, 1670, 1674, 1665, 1673, 1673, 1661, 1668, 1670, - 1671, 1675, 1677, 1669, 1678, 1679, 1680, 1677, 1681, 1682, - 1678, 1683, 1683, 1680, 1681, 1682, 1672, 1675, 1684, 1674, + 1633, 1625, 1640, 1623, 1630, 1630, 1631, 1631, 1634, 1634, + 1635, 1636, 1637, 1629, 1635, 1637, 1639, 1636, 1632, 1641, + 1640, 1633, 1639, 1642, 1643, 1641, 1646, 1643, 1644, 1644, + 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654, + 1660, 1657, 1650, 1653, 1653, 1647, 1647, 1647, 1642, 1655, + 1656, 1655, 1647, 1654, 1648, 1649, 1657, 1651, 1658, 1659, + 1660, 1656, 1661, 1663, 1658, 1662, 1662, 1665, 1659, 1664, + 1664, 1666, 1667, 1667, 1668, 1668, 1669, 1672, 1672, 1673, + 1677, 1674, 1676, 1661, 1679, 1679, 1678, 1665, 1680, 1663, + 1674, 1676, 1678, 1666, 1683, 1681, 1669, 1684, 1682, 1685, - 1685, 1686, 1688, 1684, 1687, 1679, 1690, 1689, 1691, 1685, - 1689, 1692, 1692, 1693, 1688, 1695, 1694, 1696, 1699, 1693, - 1700, 1686, 1694, 1687, 1690, 1697, 1701, 1702, 1702, 1697, - 1703, 1701, 1696, 1704, 1691, 1695, 1706, 1707, 1699, 0, - 1708, 1707, 1700, 1709, 1714, 1697, 1708, 1712, 1704, 1703, - 1710, 1710, 1709, 1711, 1715, 1706, 1716, 1711, 1712, 1713, - 1713, 1717, 1718, 1712, 1719, 1714, 1717, 1720, 1715, 1722, - 1721, 1723, 1723, 1720, 1722, 1716, 1724, 1724, 1727, 1725, - 1728, 1729, 1718, 1725, 1719, 1721, 1736, 1727, 1730, 1730, - 1737, 1728, 1732, 1732, 1733, 1737, 1728, 1734, 1735, 1733, + 1685, 1677, 1686, 1683, 1673, 1682, 1687, 1689, 1690, 1680, + 1681, 1691, 1689, 1692, 1690, 1693, 1695, 1695, 1694, 1698, + 1692, 1693, 1687, 1684, 1694, 1696, 1697, 1699, 1686, 1700, + 1696, 1691, 1702, 1701, 1703, 1697, 1701, 1704, 1704, 1698, + 1708, 1700, 1705, 1706, 1707, 1711, 1699, 1709, 1705, 1706, + 1702, 1709, 1712, 1713, 1715, 1708, 1714, 1714, 1713, 1718, + 1703, 1716, 1719, 1720, 1707, 1711, 1719, 1709, 1721, 1720, + 1722, 1722, 1724, 1715, 1712, 1723, 1716, 1721, 1718, 1723, + 1725, 1725, 1726, 1724, 1727, 1728, 1729, 1730, 1724, 1731, + 1732, 1729, 1734, 1733, 1735, 1735, 1732, 1734, 1727, 1736, - 1733, 1729, 1738, 1734, 1735, 1739, 1741, 1743, 1744, 1742, - 1745, 1739, 1736, 1742, 1738, 1746, 1745, 1747, 1741, 1743, - 1748, 1751, 1750, 1747, 1752, 1754, 1755, 1755, 1754, 1752, - 1756, 1756, 1748, 1744, 1750, 1757, 1757, 1746, 1758, 1759, - 1751, 1760, 1763, 1761, 1762, 1759, 0, 1760, 1761, 1765, - 1762, 1763, 1767, 1768, 1765, 1767, 1769, 1769, 1758, 1771, - 1772, 1773, 1774, 1774, 1775, 1768, 1773, 1778, 1778, 1776, - 1777, 1771, 1772, 1775, 1776, 1777, 1779, 1780, 1783, 1781, - 1782, 1785, 1783, 1784, 1786, 1787, 1780, 1785, 1784, 1788, - 1789, 1791, 1791, 1792, 1787, 1797, 1779, 1781, 0, 1782, + 1736, 1737, 1739, 1726, 1728, 1737, 1740, 1730, 1733, 1731, + 1741, 1739, 1742, 1742, 1744, 1744, 1748, 1740, 1745, 1746, + 1747, 1750, 1740, 1745, 1745, 1746, 1747, 1749, 1751, 1753, + 1741, 1754, 1749, 1750, 1751, 1754, 1755, 1756, 1757, 1758, + 1759, 1753, 1748, 1760, 1757, 1762, 1759, 1763, 1755, 1764, + 1766, 1767, 1767, 1766, 1764, 1760, 1770, 1762, 1768, 1768, + 0, 1758, 1756, 1769, 1769, 1771, 1763, 1772, 1775, 1773, + 1777, 1771, 1774, 1772, 1773, 1777, 1770, 1775, 1774, 1779, + 1780, 1783, 1779, 1781, 1781, 1784, 1785, 1786, 1786, 1787, + 1788, 1785, 1780, 1783, 1789, 1788, 1791, 1784, 1787, 1789, - 1793, 1795, 1786, 1791, 1789, 1794, 1794, 1788, 1796, 1793, - 1795, 1792, 1798, 1799, 1802, 1802, 1797, 1798, 1804, 1805, - 1796, 1804, 1806, 1809, 1808, 1810, 1799, 1811, 1812, 1812, - 1813, 1810, 1813, 1814, 1814, 1805, 1817, 1809, 1806, 1808, - 1815, 1818, 1820, 1817, 1811, 1819, 1819, 1821, 1815, 1825, - 1822, 1820, 1823, 1824, 1826, 1830, 1832, 1827, 1829, 1831, - 1831, 1818, 1822, 1827, 1823, 1824, 1833, 1830, 1821, 1826, - 1834, 1836, 1835, 1834, 1832, 1825, 1827, 1835, 1829, 1838, - 1839, 1840, 1839, 1841, 1838, 1842, 1833, 1844, 1841, 1846, - 1850, 1836, 1842, 1847, 1848, 1849, 1844, 1849, 1852, 1840, + 1790, 1790, 1792, 1793, 1794, 1795, 1798, 1796, 1797, 1795, + 1799, 1792, 1796, 1800, 1797, 1801, 1791, 1804, 1805, 1799, + 1809, 1793, 1808, 1794, 1798, 1803, 1803, 1805, 0, 1801, + 1807, 1800, 1806, 1806, 1808, 1804, 1811, 1803, 1810, 1807, + 1817, 1809, 1818, 1810, 1814, 1814, 1820, 1816, 1821, 1811, + 1816, 1822, 1823, 1824, 1824, 1830, 1817, 1822, 1818, 1826, + 1826, 1820, 1821, 1825, 1827, 1825, 1829, 1831, 1831, 1823, + 1832, 1833, 1827, 1829, 1834, 1830, 1835, 1836, 1837, 1832, + 1838, 1839, 1841, 1844, 1842, 1845, 1834, 1839, 1835, 1836, + 1843, 1843, 1833, 1847, 1846, 1838, 1842, 1846, 1847, 1848, - 1852, 1853, 1847, 1854, 1854, 1855, 1848, 1846, 1856, 1850, - 1857, 1858, 1857, 1856, 1859, 1853, 1858, 1860, 1861, 1859, - 1862, 1864, 1863, 1867, 1865, 1868, 1862, 1863, 1869, 1869, - 1871, 1855, 1865, 1872, 1864, 1860, 1870, 1870, 1861, 1868, - 1873, 1876, 1867, 1874, 1877, 1871, 1873, 1875, 1874, 1875, - 1878, 1878, 1877, 1872, 1879, 1880, 1880, 1881, 1881, 1876, - 1877, 1882, 1883, 1884, 1886, 1888, 1879, 1883, 1891, 1887, - 1882, 1887, 1889, 1886, 1890, 1893, 1886, 1889, 1889, 1894, - 1891, 1884, 1897, 1890, 1894, 1895, 1888, 1893, 1898, 1899, - 1895, 1900, 1900, 1901, 1902, 1897, 1904, 1903, 1899, 1905, + 1839, 1844, 1841, 1850, 1837, 1845, 1852, 1851, 1850, 1851, + 1853, 1854, 1856, 1858, 1859, 1853, 1860, 1862, 1854, 1848, + 1861, 1856, 1861, 1859, 1852, 1864, 1865, 1864, 1860, 1866, + 1866, 1858, 1867, 1868, 1870, 1869, 1862, 1869, 1868, 1870, + 1865, 1871, 1872, 1873, 1874, 1877, 1871, 1875, 1876, 1879, + 1874, 1880, 1875, 1877, 1881, 1881, 1882, 1882, 1867, 1883, + 1872, 1876, 1884, 1873, 1885, 1880, 1886, 1887, 1879, 1887, + 1885, 1886, 1888, 1889, 1883, 1890, 1890, 1892, 1892, 1891, + 1896, 1889, 1884, 1893, 1893, 1894, 1900, 1895, 1898, 1889, + 1888, 1891, 1895, 1899, 1894, 1899, 1901, 1898, 1896, 1902, - 1909, 1910, 1911, 1907, 1908, 1918, 1910, 1911, 1898, 1912, - 1904, 1901, 1902, 1903, 1905, 1907, 1908, 1915, 1912, 1917, - 1909, 1920, 1919, 1915, 1921, 1917, 1922, 1926, 1918, 1923, - 1923, 1924, 1925, 1925, 1927, 1922, 1915, 1919, 1927, 1920, - 1924, 1929, 1928, 1935, 0, 1930, 1926, 1928, 1934, 1921, - 1930, 1930, 1931, 1932, 1929, 1944, 1934, 1933, 1931, 1932, - 1933, 1938, 1938, 1935, 1939, 1939, 1940, 1941, 1941, 1942, - 1942, 1943, 1945, 1944, 1950, 1940, 1946, 1949, 1945, 1939, - 1950, 1946, 1949, 1943, 1947, 1947, 1948, 1948, 1952, 1953, - 1939, 1954, 1952, 1956, 1957, 1954, 1958, 1959, 1960, 1957, + 1898, 1901, 1901, 1903, 1905, 1906, 1907, 1900, 1902, 1909, + 1906, 1907, 1910, 1913, 1911, 1903, 1905, 1912, 1912, 1914, + 1915, 1916, 1909, 1911, 1917, 1921, 1919, 1933, 1920, 1922, + 1930, 1913, 1910, 1924, 1922, 1916, 1915, 1914, 1919, 1917, + 1920, 1923, 1924, 1927, 1929, 1921, 1923, 1932, 1931, 1927, + 1929, 1934, 1933, 1930, 1935, 1935, 1938, 1936, 1937, 1937, + 1934, 1941, 1927, 1931, 1939, 1932, 1936, 1940, 1939, 0, + 1947, 1942, 1940, 1943, 1941, 1938, 1942, 1942, 1944, 1943, + 1945, 1946, 1952, 1945, 1944, 1950, 1950, 1951, 1951, 1946, + 1947, 1952, 1953, 1953, 1954, 1954, 1955, 1956, 1957, 1964, - 1962, 1963, 1961, 1960, 1965, 1964, 1966, 1966, 1968, 1953, - 1964, 1967, 1959, 1970, 1972, 1967, 1962, 1969, 1956, 1958, - 1961, 1963, 1969, 1968, 1971, 1973, 1965, 1974, 1975, 1978, - 1973, 1976, 1976, 1972, 1979, 1980, 1971, 1978, 1981, 1970, - 1974, 1982, 1984, 1983, 1985, 1986, 1975, 1989, 1989, 1988, - 1994, 1994, 1990, 1979, 1980, 1990, 1985, 1991, 1992, 2005, - 1993, 1981, 1983, 1984, 1988, 1982, 1986, 1995, 1995, 1997, - 1991, 2000, 1992, 1993, 1996, 1996, 1998, 1999, 1999, 2005, - 2000, 2001, 2001, 2000, 1997, 2002, 2004, 2006, 2007, 1998, - 2002, 2004, 2008, 2008, 2009, 2009, 2010, 2011, 2011, 2012, + 1958, 1965, 1951, 1964, 1957, 1958, 1959, 1959, 1955, 1960, + 1960, 1961, 1962, 1951, 1968, 1956, 1961, 1969, 1962, 1966, + 1970, 1965, 1969, 1966, 1972, 1971, 1973, 1975, 1976, 1972, + 1974, 1977, 1979, 1976, 1978, 1978, 1979, 1980, 1982, 1968, + 1971, 1984, 1983, 1970, 1973, 1981, 1974, 1975, 1986, 1987, + 1981, 1985, 1980, 1977, 1983, 1990, 1985, 1988, 1988, 1991, + 1984, 1986, 1992, 1990, 1982, 1993, 1994, 1987, 1995, 2000, + 1996, 1997, 1998, 2001, 2001, 2004, 2002, 2009, 1991, 2002, + 2040, 1992, 2003, 1997, 2000, 2005, 2040, 1995, 1993, 2004, + 1994, 1996, 2009, 1998, 2010, 2003, 2006, 2006, 2005, 2007, - 2007, 2013, 2013, 2014, 2015, 2016, 2016, 2006, 2018, 2015, - 2017, 2017, 2019, 2020, 2021, 2010, 2025, 2012, 2014, 2023, - 2027, 2019, 2018, 0, 2023, 2024, 2024, 2020, 2026, 2026, - 2028, 2029, 2032, 2021, 2029, 2025, 2028, 2033, 2027, 2030, - 2030, 2031, 2031, 2034, 2035, 2035, 2037, 2038, 2039, 2040, - 2042, 2032, 2033, 2040, 2043, 2030, 2041, 2041, 2044, 2043, - 2045, 2048, 2034, 2039, 2047, 2047, 2037, 2049, 2050, 2042, - 2038, 2051, 2052, 2044, 2049, 2045, 2053, 2054, 2054, 2055, - 2059, 2048, 2050, 2056, 2063, 2056, 2064, 2062, 2055, 2051, - 2052, 2057, 2059, 2060, 2057, 2061, 2065, 2063, 2060, 2066, + 2007, 2008, 2008, 2011, 2011, 2012, 2014, 2010, 2013, 2013, + 2016, 2014, 2017, 2018, 2012, 2016, 2019, 2012, 2020, 2020, + 2021, 2021, 2022, 2023, 2023, 2024, 2025, 2025, 2019, 2026, + 2027, 2030, 2017, 2018, 2032, 2027, 2028, 2028, 2029, 2029, + 2031, 2022, 2033, 2024, 2026, 2030, 2035, 2037, 2032, 2031, + 2039, 2035, 2036, 2036, 2038, 2038, 2041, 2042, 2042, 2041, + 2044, 2033, 2043, 2043, 2046, 2045, 2037, 2049, 2039, 2047, + 2047, 2050, 2052, 2042, 2051, 2060, 2052, 2053, 2053, 2044, + 2045, 2054, 2056, 2046, 2057, 2055, 2061, 2049, 2062, 2051, + 2055, 2059, 2059, 2061, 2050, 2060, 2063, 2056, 2064, 2057, - 2061, 2065, 2053, 2068, 2070, 2069, 2072, 2064, 2068, 2057, - 2069, 2057, 2062, 2074, 2071, 2073, 2076, 2075, 2074, 2070, - 2071, 2073, 2075, 2077, 2079, 2066, 2078, 2072, 2080, 2078, - 2081, 2082, 2083, 2079, 2088, 0, 2077, 2080, 2084, 2081, - 2082, 2076, 2085, 2086, 2084, 2094, 2083, 2086, 2085, 2090, - 2091, 2091, 2096, 2092, 2088, 2093, 2093, 2097, 2090, 2092, - 2098, 2098, 2099, 2100, 2093, 2094, 2102, 2094, 2096, 2103, - 2105, 2104, 2100, 2097, 2109, 2108, 2107, 2099, 2102, 2107, - 2108, 2110, 2105, 2111, 2111, 2103, 2104, 2112, 2112, 2114, - 2114, 2116, 2115, 2110, 2109, 2115, 2116, 2117, 2118, 2119, + 2054, 2065, 2062, 2066, 2066, 2068, 2067, 2068, 2069, 2071, + 2074, 2069, 2072, 2073, 2063, 2067, 2064, 2072, 2073, 2075, + 2076, 2071, 2078, 2082, 2077, 2080, 2069, 2065, 2069, 2077, + 2080, 2081, 2075, 2083, 2084, 2074, 2081, 2085, 2082, 2083, + 2086, 2076, 2087, 2085, 2088, 2086, 2089, 2087, 2078, 2090, + 2095, 2091, 2090, 2092, 2093, 2084, 2094, 2100, 0, 2089, + 2091, 2096, 2092, 2093, 2095, 2094, 2097, 2096, 2108, 2088, + 2098, 2102, 2097, 2104, 2098, 2103, 2103, 2100, 2106, 2104, + 2102, 2105, 2105, 2109, 2108, 2110, 2110, 2111, 2112, 2114, + 2105, 2115, 2117, 2116, 2121, 2123, 2123, 2112, 2106, 2109, - 2119, 2120, 2122, 2117, 2118, 2121, 2121, 2123, 2124, 2125, - 2125, 2126, 2127, 2128, 2122, 2120, 2130, 2126, 2128, 2131, - 2130, 2123, 2131, 2132, 2132, 2133, 2127, 2124, 2134, 2135, - 2133, 2136, 2137, 2137, 2138, 2136, 2140, 2134, 2141, 2142, - 2143, 2140, 2144, 2145, 2149, 2146, 2144, 2138, 2151, 2135, - 2146, 2147, 2159, 2159, 2143, 2148, 2161, 2147, 2141, 2142, - 2152, 2148, 2149, 2145, 2151, 2152, 2153, 2154, 2155, 2158, - 2155, 2160, 2153, 2165, 2160, 2154, 2162, 2162, 2166, 2165, - 2164, 2173, 2161, 2158, 2164, 2167, 2167, 2168, 2171, 2171, - 2166, 2175, 2176, 2179, 2180, 2181, 2168, 2182, 2179, 2173, + 2106, 2114, 2111, 2119, 2117, 2120, 2119, 2115, 2116, 2122, + 2120, 2124, 2124, 2128, 2121, 2126, 2126, 2127, 2128, 2129, + 2127, 2122, 2130, 2131, 2131, 2129, 2132, 2134, 2130, 2133, + 2133, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2147, 2134, + 2132, 2138, 2140, 2142, 0, 2135, 2143, 2142, 2146, 2143, + 2139, 2136, 2144, 2144, 2145, 2150, 2148, 2146, 2147, 2145, + 2148, 2149, 2149, 2153, 2152, 2154, 2155, 2156, 2150, 2152, + 2157, 2156, 2158, 2159, 2161, 2160, 2166, 2158, 2163, 2159, + 2155, 2160, 2164, 2153, 2166, 2154, 2167, 2164, 2167, 2165, + 2157, 2170, 2161, 2173, 2163, 2165, 2171, 2171, 2172, 2174, - 2181, 2189, 2182, 2183, 2183, 2175, 2185, 2185, 2176, 2187, - 2188, 2188, 2190, 2191, 2193, 2187, 2194, 2189, 2191, 2198, - 2180, 2195, 2195, 2197, 2199, 2198, 2200, 2204, 2194, 2202, - 2202, 2205, 2197, 2193, 2190, 2203, 2207, 2207, 2203, 2208, - 2208, 2200, 2199, 2209, 2210, 2211, 2204, 2212, 2209, 2205, - 2214, 2213, 2212, 2213, 2211, 2215, 2216, 2218, 2217, 0, - 2219, 2225, 2210, 2217, 2214, 2219, 2220, 2220, 2216, 2215, - 2221, 2221, 2222, 2222, 2223, 2223, 2224, 2218, 2226, 2225, - 2227, 2227, 2229, 2226, 2228, 2228, 2230, 2231, 2224, 2232, - 2233, 2233, 2234, 2237, 2229, 2235, 2235, 2238, 2230, 2236, + 2174, 2172, 2176, 2177, 2178, 2170, 2176, 2179, 2179, 2177, + 2185, 2180, 2183, 2183, 2188, 2187, 2178, 2191, 2192, 2173, + 2180, 2193, 2191, 2195, 2195, 2199, 2193, 2194, 2185, 2187, + 2188, 2199, 2194, 2197, 2197, 2200, 2200, 2201, 2202, 2205, + 2203, 2209, 2206, 2210, 2192, 2203, 2207, 2207, 2211, 2210, + 2209, 2216, 2212, 2201, 2206, 2214, 2214, 2217, 2205, 2215, + 2202, 2222, 2215, 2219, 2219, 2223, 2211, 2212, 2220, 2220, + 2216, 2221, 2224, 2226, 2223, 2217, 2221, 2224, 2225, 2222, + 2225, 2227, 2228, 2229, 2230, 2231, 0, 2226, 2229, 2237, + 2231, 2232, 2232, 2236, 2228, 2227, 2233, 2233, 2234, 2234, - 2236, 2239, 2240, 2241, 2237, 2232, 2243, 2231, 2239, 2238, - 2242, 2234, 2244, 2246, 2240, 2242, 2245, 2245, 2247, 2248, - 2249, 2250, 2246, 2241, 2251, 2253, 2243, 2252, 2252, 2257, - 2258, 2254, 2244, 2249, 2253, 2255, 2259, 2260, 2251, 2248, - 2260, 2261, 2272, 2262, 2247, 2250, 2254, 2257, 2262, 2263, - 2255, 2271, 2258, 2272, 2263, 2261, 2264, 2264, 2273, 2259, - 2265, 2265, 2266, 2266, 2268, 2268, 2270, 2270, 2275, 2271, - 2277, 2276, 2279, 2278, 2280, 2282, 2281, 2273, 2281, 2283, - 2284, 2279, 2285, 2285, 2287, 2287, 2288, 2289, 2275, 2276, - 2290, 2290, 2277, 2278, 2280, 2282, 2289, 2283, 2284, 2294, + 2235, 2235, 2241, 2238, 2230, 2236, 2242, 2237, 2238, 2239, + 2239, 2240, 2240, 2243, 2241, 2244, 2245, 2245, 2242, 2246, + 2247, 2247, 2248, 2248, 2249, 2250, 2253, 2251, 2252, 2255, + 2256, 2244, 2259, 2243, 2251, 2249, 2254, 2250, 2246, 2258, + 2252, 2254, 2257, 2257, 2260, 2262, 2253, 2261, 2258, 2255, + 2256, 2263, 2264, 2264, 2265, 2266, 2267, 2269, 2259, 2270, + 2261, 2271, 2274, 2265, 2260, 2263, 2273, 2274, 0, 2262, + 2266, 2267, 2275, 2272, 2283, 2269, 2272, 2275, 2276, 2276, + 2273, 2270, 2277, 2277, 2271, 2278, 2278, 2280, 2280, 2282, + 2282, 2284, 2283, 2285, 2287, 2288, 2289, 2290, 2291, 2292, - 2292, 2293, 2293, 2295, 2296, 2297, 2298, 2299, 2288, 2292, - 2300, 2296, 2301, 2302, 2302, 2303, 2303, 2294, 2305, 2306, - 2297, 2295, 2304, 2307, 2298, 2299, 2300, 2308, 2304, 2309, - 2310, 2301, 2308, 2311, 2306, 2312, 2305, 2312, 2311, 2313, - 2313, 2314, 2307, 2314, 2315, 2315, 2317, 2319, 2320, 2309, - 2310, 2321, 2322, 2323, 2324, 2328, 2319, 2325, 2323, 2329, - 2330, 2330, 2329, 2321, 2331, 2317, 2332, 2320, 2333, 2333, - 2336, 2341, 2322, 2334, 2324, 2328, 2325, 2334, 2337, 2331, - 2338, 2338, 2337, 2339, 2332, 2336, 2341, 2342, 2343, 2344, - 2344, 2346, 2347, 2348, 2349, 2349, 2339, 2348, 2350, 2351, + 2294, 2293, 2284, 2293, 2295, 2296, 2300, 2291, 2297, 2297, + 2299, 2299, 2285, 2288, 2287, 2301, 2306, 2290, 2289, 2292, + 2294, 2304, 2295, 2296, 2301, 2302, 2302, 2307, 2300, 2308, + 2304, 2305, 2305, 2309, 2306, 2310, 2308, 2311, 2312, 2313, + 2314, 2314, 2315, 2315, 2316, 2307, 2317, 2318, 2309, 2319, + 2316, 2320, 2321, 2310, 2312, 2311, 2320, 2322, 2313, 2324, + 2323, 2324, 2318, 2329, 2317, 2323, 2325, 2325, 2319, 2326, + 2331, 2326, 2321, 2327, 2327, 2332, 2333, 2322, 2334, 2331, + 2335, 2336, 2329, 2337, 2340, 2335, 2341, 2344, 2333, 2341, + 2342, 2342, 2343, 2346, 2332, 2345, 2345, 2346, 2334, 2348, - 2351, 2347, 2353, 2346, 2352, 2354, 2355, 2342, 2343, 2352, - 2362, 2353, 2356, 2356, 2361, 2361, 2364, 2350, 2355, 2363, - 2363, 2354, 2365, 2369, 2366, 2367, 2368, 2368, 2379, 2364, - 2371, 2371, 2362, 2366, 2367, 2365, 2374, 2375, 2369, 2376, - 2377, 2374, 2375, 2378, 2381, 2377, 2380, 2379, 2383, 2384, - 2386, 2378, 2381, 2376, 2384, 2380, 2385, 2387, 2387, 2388, - 2388, 2385, 2389, 2383, 2391, 2386, 2390, 2392, 2393, 2389, - 2394, 2390, 2395, 2395, 2393, 2394, 2396, 2402, 2397, 2398, - 2398, 2404, 2391, 2397, 2404, 2392, 2399, 2399, 2403, 2403, - 2402, 2396, 2405, 2414, 2406, 2407, 2408, 2405, 2405, 2406, + 2351, 2336, 2337, 2353, 2340, 2344, 2349, 2343, 2350, 2350, + 2349, 2354, 2355, 2351, 2348, 2356, 2356, 2358, 2353, 2359, + 2360, 2361, 2361, 2362, 2360, 2363, 2363, 2365, 2359, 2358, + 2364, 2354, 2355, 2366, 2367, 2364, 2365, 2368, 2368, 2373, + 2373, 2374, 2362, 2375, 2375, 2376, 2367, 2377, 2378, 2366, + 2379, 2380, 2380, 2381, 2383, 2383, 2386, 2378, 2376, 2379, + 2377, 2386, 2387, 2374, 2388, 2389, 2390, 2387, 2381, 2391, + 2389, 2392, 2395, 2393, 2390, 2398, 2401, 2396, 2388, 2397, + 2392, 2393, 2396, 2401, 2397, 2399, 2399, 2395, 2391, 2402, + 2398, 2400, 2400, 2403, 2402, 2404, 2405, 2408, 2406, 2407, - 2407, 2409, 2408, 2410, 2411, 2409, 2412, 2413, 2410, 0, - 2415, 2416, 2418, 2411, 2414, 2413, 2415, 2416, 2417, 2421, - 2420, 2412, 2421, 2417, 2418, 2420, 2423, 2425, 2426, 2427, - 2428, 2429, 2425, 2426, 2435, 2430, 2431, 2431, 2423, 2432, - 2429, 2436, 2440, 2428, 2430, 2437, 2439, 2427, 2432, 2438, - 2438, 2440, 2441, 2435, 2442, 2442, 2443, 2445, 2447, 2448, - 2450, 2436, 0, 2448, 2437, 2439, 2455, 2441, 2449, 2449, - 2451, 2452, 2445, 2453, 2455, 2443, 2451, 2452, 2447, 2453, - 2454, 2454, 2456, 2458, 2459, 2450, 2461, 2456, 2462, 2463, - 2461, 2466, 2458, 2465, 2465, 2467, 2467, 2459, 2468, 2468, + 2407, 2409, 2405, 2406, 2410, 2410, 2409, 2411, 2411, 2414, + 0, 2403, 2408, 2404, 2415, 2415, 2416, 2426, 2417, 2416, + 2418, 2419, 2414, 2417, 2417, 2418, 2419, 2420, 2421, 2422, + 2423, 2424, 2421, 2420, 2422, 2425, 2427, 2430, 2426, 2423, + 2429, 2428, 2427, 2425, 2435, 2429, 2424, 2428, 2432, 2430, + 2437, 2433, 2438, 2432, 2433, 2437, 2435, 2438, 2439, 2440, + 2441, 2442, 2443, 2443, 2444, 2447, 2448, 2453, 2449, 2441, + 2442, 2451, 2440, 2444, 2450, 2450, 2439, 2454, 2454, 2452, + 2455, 2457, 2453, 2459, 2447, 2460, 2448, 2449, 2452, 2460, + 2451, 2461, 2461, 2462, 2463, 2464, 2457, 0, 2465, 2455, - 2470, 2470, 2462, 2471, 2463, 2472, 2476, 2471, 2477, 2466, - 2472, 2474, 2474, 2477, 2479, 2478, 2481, 2482, 2482, 2479, - 2479, 2484, 2484, 2485, 2485, 2486, 2476, 2478, 2486, 2487, - 2489, 2491, 2492, 2492, 2493, 2493, 2481, 2494, 2494, 2495, - 2496, 2496, 2487, 2497, 2498, 2499, 2500, 2506, 2489, 2501, - 2501, 2491, 2500, 2502, 2495, 2505, 2497, 2502, 2507, 2499, - 2505, 2505, 2498, 2508, 2511, 2509, 2510, 2513, 2513, 2512, - 2506, 2509, 2510, 2512, 2516, 2521, 2518, 2519, 2507, 2516, - 2519, 2523, 2522, 2508, 2518, 2522, 2524, 2525, 2526, 2511, - 2527, 2524, 2528, 2528, 2532, 2529, 2531, 2542, 2523, 2523, + 2463, 2464, 2467, 2459, 2465, 2466, 2466, 2468, 2470, 2471, + 2467, 2473, 2468, 2474, 2475, 2473, 2478, 2470, 2462, 2477, + 2477, 2488, 2471, 2479, 2479, 2480, 2480, 2474, 2483, 2475, + 2482, 2482, 2483, 2484, 2478, 2486, 2486, 2489, 2484, 2490, + 2491, 2488, 2489, 2493, 2501, 2491, 2491, 2494, 2494, 2496, + 2496, 2490, 2497, 2497, 2498, 2499, 2503, 2498, 2504, 2504, + 2505, 2505, 2501, 2493, 2506, 2506, 2507, 2509, 2499, 2508, + 2508, 2510, 2511, 2512, 2513, 2513, 2503, 2518, 2514, 2512, + 2509, 2507, 2514, 2519, 2520, 2517, 2511, 2521, 2522, 2510, + 2517, 2517, 2523, 2521, 2522, 2524, 2525, 2525, 2533, 2524, - 2521, 2535, 2542, 2530, 2527, 2525, 2530, 2533, 2526, 2529, - 2531, 2534, 2543, 2532, 2530, 2533, 2534, 2534, 2536, 2536, - 2535, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, 2541, - 2544, 2545, 2543, 2546, 2547, 2549, 2549, 2551, 2550, 2554, - 2545, 2550, 2553, 2553, 2556, 2541, 2554, 2555, 2555, 2556, - 2558, 2558, 2559, 2546, 2547, 2551, 2544, 2560, 2561, 2563, - 2565, 2559, 2564, 2564, 2565, 2566, 2560, 2561, 2567, 2569, - 2568, 2570, 2580, 2575, 2566, 2568, 2568, 2563, 2575, 2579, - 2570, 2571, 2569, 2567, 2581, 2571, 2576, 2576, 2578, 2578, - 2583, 2584, 2587, 2579, 2589, 2588, 2592, 2580, 2594, 2583, + 2518, 2528, 2530, 2519, 2520, 2531, 2528, 2535, 2531, 2534, + 2530, 2536, 2534, 2537, 2538, 2539, 2536, 2523, 2540, 2540, + 2544, 2541, 2543, 2533, 2535, 2535, 2547, 2542, 2553, 2539, + 2542, 2537, 2545, 2556, 2538, 2541, 2543, 2546, 2542, 2544, + 2545, 0, 2546, 2546, 2553, 2547, 2548, 2548, 2549, 2549, + 2550, 2550, 2551, 2551, 2552, 2552, 2554, 2555, 2557, 2556, + 2558, 2554, 2559, 2561, 2561, 2562, 2563, 2557, 2562, 2565, + 2565, 2566, 2567, 2567, 2568, 2570, 2570, 2555, 2566, 2568, + 2558, 2571, 2559, 2572, 2563, 2573, 2575, 2576, 2576, 2577, + 2571, 2578, 2572, 2577, 2573, 2579, 2580, 2582, 2581, 2583, - 2590, 2608, 2581, 2584, 2588, 2596, 2590, 2597, 2592, 2599, - 2596, 2907, 2597, 2907, 2589, 2598, 2598, 2587, 2599, 2594, - 2601, 2608, 2602, 2602, 2607, 2601, 2602, 2604, 2604, 2605, - 2605, 2606, 2606, 2607, 2609, 2610, 2612, 2616, 2613, 2614, - 2610, 2617, 2612, 2613, 2614, 2615, 2615, 2618, 2619, 2621, - 2620, 2628, 2618, 2609, 0, 2616, 2620, 2622, 2622, 2624, - 2625, 2629, 2617, 2624, 2626, 2625, 2619, 2627, 2627, 2626, - 2628, 2630, 2632, 2632, 2621, 2634, 2629, 2635, 2636, 2638, - 2637, 2639, 2636, 2642, 2640, 2643, 2643, 2644, 2634, 2637, - 2635, 2630, 2640, 2641, 2649, 2638, 2646, 2646, 2641, 2659, + 2578, 2580, 2580, 2583, 2575, 2591, 2582, 2587, 2588, 2588, + 2579, 2581, 2587, 2590, 2590, 2592, 2593, 2595, 2596, 2591, + 2599, 2601, 2600, 2602, 2604, 2606, 2595, 2608, 2609, 2602, + 2596, 2600, 2608, 2609, 2593, 2611, 2604, 2610, 2610, 2620, + 2592, 2601, 2613, 2621, 2611, 2599, 2606, 2613, 2614, 2614, + 2616, 2616, 2614, 2617, 2617, 2618, 2618, 2619, 2622, 2620, + 2625, 2624, 2621, 2622, 2626, 2625, 2619, 2624, 2628, 2626, + 2627, 2627, 2629, 2630, 2631, 2632, 2633, 2637, 2630, 2634, + 2634, 2632, 2637, 2636, 2638, 2640, 2628, 2636, 2641, 2638, + 2639, 2639, 2631, 2629, 2642, 2644, 2644, 2646, 2647, 2649, - 2639, 2647, 2647, 2651, 2651, 2653, 2644, 2654, 2655, 2642, - 2660, 2656, 2658, 2658, 2664, 2649, 2656, 2661, 2665, 2659, - 2669, 2653, 2671, 2654, 2655, 2663, 2663, 2671, 2664, 2666, - 2666, 2672, 2670, 2660, 2673, 2673, 2661, 2665, 2670, 2675, - 2669, 2674, 2674, 2676, 2676, 2677, 2678, 2679, 2680, 2681, - 2682, 2683, 0, 2672, 2680, 2678, 2677, 2684, 2684, 2675, - 2690, 2685, 2682, 2676, 2685, 2686, 2686, 2679, 2681, 2691, - 2692, 2683, 2690, 2693, 2693, 2694, 2692, 2695, 2694, 2696, - 2698, 2699, 2700, 2695, 2701, 2698, 2699, 2702, 2705, 2691, - 2701, 2703, 2703, 2706, 2707, 2708, 2710, 2696, 2709, 2709, + 2650, 2633, 2648, 2641, 2640, 2651, 2648, 2652, 2649, 2654, + 2646, 2647, 2653, 2656, 2642, 2652, 2650, 2653, 2655, 2655, + 2658, 2658, 2659, 2659, 2651, 2661, 2663, 2663, 2665, 2666, + 2671, 2667, 2656, 2668, 2672, 2654, 2670, 2670, 2668, 2673, + 2675, 2675, 2676, 2677, 2665, 2666, 2661, 2667, 2678, 2678, + 2671, 2681, 2684, 2682, 2693, 2683, 2676, 2672, 2673, 2682, + 2683, 2687, 2677, 2685, 2685, 2686, 2686, 2688, 2688, 2689, + 2690, 2681, 2691, 2693, 2684, 2695, 2692, 2694, 0, 2690, + 2689, 2687, 2692, 2696, 2696, 2697, 2702, 2688, 2697, 2694, + 2698, 2698, 2691, 2703, 2704, 2695, 2705, 2705, 2702, 2706, - 2705, 2700, 2716, 2711, 2702, 2702, 2713, 2713, 2708, 2714, - 2714, 2706, 2711, 2715, 2726, 2710, 2716, 2717, 2715, 2707, - 2718, 2718, 2717, 2719, 2719, 2720, 2720, 2721, 2723, 2723, - 2728, 2729, 2721, 2726, 2730, 2731, 2731, 2733, 2733, 2735, - 2734, 2736, 2737, 2737, 2738, 2738, 2741, 2784, 2742, 2740, - 2736, 2784, 2728, 2729, 2734, 2740, 2730, 2743, 2750, 2735, - 2746, 2746, 2743, 2748, 2748, 2749, 2741, 2742, 2751, 2752, - 2749, 2753, 2750, 2755, 2751, 2754, 2754, 2757, 2755, 2753, - 2758, 2752, 2759, 2760, 2761, 2763, 2764, 2759, 2765, 2766, - 2761, 2768, 2767, 2763, 2769, 2760, 2770, 2757, 2771, 2773, + 2704, 2707, 2706, 2708, 2710, 2711, 2712, 2707, 2713, 2710, + 2711, 2714, 2717, 2703, 2713, 2715, 2715, 2718, 2719, 2720, + 2722, 2708, 2721, 2721, 2717, 2712, 2728, 2723, 2714, 2714, + 2725, 2725, 2720, 2726, 2726, 2718, 2723, 2727, 2738, 2722, + 2728, 2729, 2727, 2719, 2730, 2730, 2729, 2731, 2731, 2732, + 2732, 2733, 2735, 2735, 2740, 2741, 2733, 2738, 2742, 2743, + 2743, 2745, 2745, 2747, 2746, 2748, 2749, 2749, 2750, 2750, + 2753, 2796, 2754, 2752, 2748, 2796, 2740, 2741, 2746, 2752, + 2742, 2755, 2762, 2747, 2758, 2758, 2755, 2760, 2760, 2761, + 2753, 2754, 2763, 2764, 2761, 2765, 2762, 2767, 2763, 2766, - 2758, 2774, 2778, 2771, 2773, 2764, 2851, 2768, 2765, 2766, - 2767, 2769, 2769, 2775, 2779, 2776, 0, 2770, 2851, 2775, - 2776, 2774, 2778, 2782, 2782, 2783, 2783, 2779, 2788, 2788, - 2790, 2790, 2791, 2791, 2794, 2791, 2792, 2792, 2794, 2792, - 2793, 2793, 2797, 2793, 2796, 2796, 2801, 2798, 2802, 2803, - 2804, 2804, 2807, 2809, 2803, 2808, 2810, 2809, 2811, 0, - 2797, 2798, 2808, 2813, 2818, 2810, 2801, 2814, 2802, 2815, - 2815, 2816, 2816, 2811, 2817, 2817, 2814, 2807, 2819, 2818, - 2820, 2813, 2821, 2819, 2822, 2823, 2824, 2821, 2821, 2820, - 2822, 2825, 2820, 2826, 2827, 2828, 2829, 2829, 2826, 2827, + 2766, 2769, 2767, 2765, 2770, 2764, 2771, 2772, 2773, 2775, + 2776, 2771, 2777, 2778, 2773, 2780, 2779, 2775, 2781, 2772, + 2782, 2769, 2783, 2785, 2770, 2786, 2790, 2783, 2785, 2776, + 2863, 2780, 2777, 2778, 2779, 2781, 2781, 2787, 2791, 2788, + 0, 2782, 2863, 2787, 2788, 2786, 2790, 2794, 2794, 2795, + 2795, 2791, 2800, 2800, 2802, 2802, 2803, 2803, 2806, 2803, + 2804, 2804, 2806, 2804, 2805, 2805, 2809, 2805, 2808, 2808, + 2813, 2810, 2814, 2815, 2816, 2816, 2819, 2821, 2815, 2820, + 2822, 2821, 2823, 0, 2809, 2810, 2820, 2825, 2830, 2822, + 2813, 2826, 2814, 2827, 2827, 2828, 2828, 2823, 2829, 2829, - 2830, 2824, 2831, 2832, 2832, 2858, 2830, 2900, 2831, 0, - 2823, 2900, 2825, 2834, 2828, 2833, 2833, 2858, 2834, 2837, - 2837, 2840, 2840, 2841, 2841, 2842, 2842, 2843, 2843, 2844, - 2844, 2845, 2845, 2846, 2846, 2848, 2849, 2849, 2850, 2852, - 2856, 2854, 2855, 2855, 2848, 2857, 2860, 2850, 2859, 2859, - 2861, 2861, 2864, 2865, 2866, 2856, 2865, 2868, 2857, 2852, - 2854, 2860, 2867, 2867, 2870, 2871, 2874, 2870, 2872, 2873, - 2864, 2871, 2875, 2876, 2873, 2868, 2882, 2878, 2879, 2893, - 2866, 2891, 2872, 2878, 2891, 2874, 2898, 2879, 2902, 2876, - 2875, 2882, 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2899, + 2826, 2819, 2831, 2830, 2832, 2825, 2833, 2831, 2834, 2835, + 2836, 2833, 2833, 2832, 2834, 2837, 2832, 2838, 2839, 2840, + 2841, 2841, 2838, 2839, 2842, 2836, 2843, 2844, 2844, 2870, + 2842, 2912, 2843, 0, 2835, 2912, 2837, 2846, 2840, 2845, + 2845, 2870, 2846, 2849, 2849, 2852, 2852, 2853, 2853, 2854, + 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2860, + 2861, 2861, 2862, 2864, 2868, 2866, 2867, 2867, 2860, 2869, + 2872, 2862, 2871, 2871, 2873, 2873, 2876, 2877, 2878, 2868, + 2877, 2880, 2869, 2864, 2866, 2872, 2879, 2879, 2882, 2883, + 2886, 2882, 2884, 2885, 2876, 2883, 2887, 2888, 2885, 2880, - 2901, 2904, 2902, 2905, 2908, 2906, 2909, 2909, 2899, 2898, - 2906, 2911, 2910, 2912, 2905, 2914, 2913, 2916, 2915, 2908, - 2901, 2918, 2917, 2919, 2904, 2910, 2916, 2925, 2926, 2926, - 2911, 2912, 2913, 2915, 2917, 2924, 2920, 2927, 2928, 2928, - 2914, 2920, 2918, 2919, 2929, 2929, 2927, 2925, 2932, 2924, - 2930, 2930, 2931, 2931, 2933, 2934, 2935, 2936, 2934, 2937, - 2938, 2935, 2936, 2939, 2940, 2941, 2942, 2932, 2943, 2939, - 2945, 2942, 2944, 2944, 2933, 2938, 2946, 2941, 2940, 2947, - 2947, 2949, 2951, 2956, 2937, 2945, 2954, 2954, 2943, 2955, - 2955, 2956, 2957, 2958, 2960, 2946, 2949, 2959, 2962, 2958, + 2894, 2890, 2891, 2905, 2878, 2903, 2884, 2890, 2903, 2886, + 2910, 2891, 2914, 2888, 2887, 2894, 2905, 2906, 2906, 2907, + 2907, 2908, 2908, 2911, 2913, 2916, 2914, 2917, 2919, 2918, + 2919, 2920, 2911, 2910, 2918, 2921, 2921, 2922, 2917, 2923, + 2925, 2924, 2926, 2928, 2913, 2927, 2920, 2930, 2916, 2929, + 2922, 2931, 2928, 2937, 0, 2936, 2925, 2932, 2923, 2924, + 2927, 2929, 2932, 2938, 2938, 2939, 2944, 2926, 2930, 2936, + 2945, 2931, 2949, 2937, 2939, 2940, 2940, 2941, 2941, 2942, + 2942, 2943, 2943, 2946, 2947, 2944, 2946, 2948, 2950, 2947, + 2945, 2952, 2948, 2951, 2953, 2954, 2955, 2949, 2957, 2951, - 2951, 2961, 2963, 2959, 2964, 2964, 2967, 2963, 2960, 2965, - 2965, 2957, 2968, 2973, 2961, 2970, 2971, 2962, 2974, 2975, - 2971, 2976, 2977, 2974, 2978, 2979, 2980, 2967, 2984, 2970, - 2979, 2980, 2968, 2973, 2976, 2977, 2981, 2981, 2975, 2985, - 2986, 2987, 2987, 2978, 2988, 2989, 2990, 2990, 2984, 2988, - 2991, 2989, 2994, 2992, 2995, 2991, 2993, 2985, 2992, 2986, - 2995, 2993, 2997, 2997, 2998, 2999, 2999, 3002, 3001, 2998, - 3003, 2994, 3001, 3004, 3005, 3006, 3007, 3003, 3008, 3010, - 3010, 3006, 3012, 3012, 3014, 3013, 3002, 3015, 3016, 3014, - 3017, 3008, 3004, 3005, 3013, 3007, 3019, 3013, 3018, 3018, + 2954, 2956, 2956, 2950, 2958, 2952, 2953, 2959, 2959, 2961, + 2963, 2966, 2966, 2957, 2967, 2967, 2955, 2968, 2969, 2972, + 2970, 2971, 2973, 2958, 2961, 2968, 2970, 2971, 2963, 2974, + 2979, 2975, 2980, 2972, 2985, 2973, 2975, 2969, 2976, 2976, + 2977, 2977, 2982, 2983, 2986, 2987, 2988, 2983, 2974, 2986, + 2989, 2979, 2980, 2990, 2985, 2991, 2982, 2992, 2996, 2988, + 2991, 2997, 2992, 2989, 2987, 2993, 2993, 2998, 2999, 2999, + 3000, 3001, 2990, 3002, 3002, 3000, 3003, 3001, 2996, 2997, + 3004, 3003, 3005, 3006, 3007, 3004, 2998, 3005, 3009, 3009, + 3007, 3010, 3011, 3011, 3013, 3014, 3010, 3015, 3013, 3016, - 3020, 3019, 3022, 3017, 3023, 3023, 3015, 3016, 3024, 3025, - 3025, 3026, 3026, 3020, 3027, 3028, 3029, 3030, 3030, 3027, - 3031, 3032, 3028, 3032, 3034, 3031, 3035, 3024, 3022, 3033, - 3033, 3034, 3036, 3035, 3037, 3029, 3038, 3040, 3040, 3037, - 3041, 3043, 3044, 3045, 3046, 3050, 3043, 3044, 3047, 3047, - 3051, 3036, 3049, 3049, 0, 3038, 3052, 3052, 3054, 3041, - 3053, 3053, 3045, 3046, 3050, 3054, 3056, 3056, 3058, 3051, - 3057, 3057, 3060, 3063, 3064, 3058, 3065, 3060, 3063, 3066, - 3066, 3067, 3067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3064, 0, 3065, 3071, 3071, 3071, 3071, + 3017, 3018, 3006, 3019, 3015, 3022, 3022, 3018, 3020, 3024, + 3024, 3025, 3026, 3027, 3014, 3028, 3029, 3026, 3016, 3017, + 3025, 3020, 3019, 3025, 3030, 3030, 3031, 3032, 3034, 3029, + 3036, 3031, 3027, 3041, 3028, 3035, 3035, 3037, 3037, 3039, + 3032, 3038, 3038, 3040, 3039, 3042, 3042, 3048, 3043, 3036, + 3040, 3050, 3041, 3043, 3034, 3044, 3046, 3044, 3045, 3045, + 3047, 3052, 3052, 3046, 3049, 3053, 3048, 3047, 3055, 3049, + 3050, 3056, 3057, 3055, 3058, 3062, 3056, 3059, 3059, 3061, + 3061, 3063, 3064, 3064, 3053, 3065, 3065, 0, 3066, 3068, + 3068, 3057, 3070, 3058, 3062, 3066, 3069, 3069, 3072, 3070, - 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, - 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3077, 3077, 0, 3077, 3077, 3077, 3077, 3078, 3078, - 0, 0, 0, 3078, 3078, 3079, 3079, 0, 0, 3079, - 0, 3079, 3080, 0, 0, 0, 0, 0, 3080, 3081, - 3081, 0, 0, 0, 3081, 3081, 3082, 0, 0, 0, - 0, 0, 3082, 3083, 3083, 0, 3083, 3083, 3083, 3083, - 3084, 3084, 0, 3084, 3084, 3084, 3084, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3063, 3075, 3076, 3072, 3077, 0, 3075, 3078, 3078, 3079, + 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3076, 0, 3077, 3083, 3083, 3083, 3083, 3083, 3083, + 3083, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, + 3085, 3085, 3085, 3085, 3085, 3086, 3086, 3086, 3086, 3086, + 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3089, + 3089, 0, 3089, 3089, 3089, 3089, 3090, 3090, 0, 0, + 0, 3090, 3090, 3091, 3091, 0, 0, 3091, 0, 3091, + 3092, 0, 0, 0, 0, 0, 3092, 3093, 3093, 0, + 0, 0, 3093, 3093, 3094, 0, 0, 0, 0, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 3094, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3096, 3096, + 0, 3096, 3096, 3096, 3096, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, + 3082, 3082, 3082, 3082, 3082, 3082 } ; static yy_state_type yy_last_accepting_state; @@ -2960,7 +2972,7 @@ static void config_end_include(void) } #endif -#line 2961 "" +#line 2973 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2969,9 +2981,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2970 "" +#line 2982 "" -#line 2972 "" +#line 2984 "" #define INITIAL 0 #define quotedstring 1 @@ -3193,7 +3205,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3194 "" +#line 3206 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3226,13 +3238,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 >= 3071 ) + if ( yy_current_state >= 3083 ) 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] != 5988 ); + while ( yy_base[yy_current_state] != 6016 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4308,255 +4320,255 @@ YY_RULE_SETUP case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 233: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 441 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 234: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 442 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 235: YY_RULE_SETUP -#line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 444 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 236: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 239: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 449 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 240: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 450 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 452 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 456 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 458 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 460 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 259: YY_RULE_SETUP @@ -4566,200 +4578,210 @@ YY_RULE_SETUP case 260: YY_RULE_SETUP #line 476 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 261: YY_RULE_SETUP #line 477 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 487 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 272: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 488 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 273: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 490 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 274: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 292: -/* rule 292 can match eol */ YY_RULE_SETUP #line 510 "./util/configlexer.lex" +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } + YY_BREAK +case 293: +YY_RULE_SETUP +#line 511 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 294: +/* rule 294 can match eol */ +YY_RULE_SETUP +#line 512 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 293: +case 295: YY_RULE_SETUP -#line 513 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 514 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 294: +case 296: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 295: -/* rule 295 can match eol */ +case 297: +/* rule 297 can match eol */ YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 522 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 296: +case 298: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4772,34 +4794,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 297: +case 299: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 535 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 298: +case 300: YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 299: -/* rule 299 can match eol */ +case 301: +/* rule 301 can match eol */ YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 300: +case 302: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4812,38 +4834,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 301: +case 303: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 557 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 302: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 303: -/* rule 303 can match eol */ -YY_RULE_SETUP -#line 562 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK case 304: YY_RULE_SETUP #line 563 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 305: +/* rule 305 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 306: +YY_RULE_SETUP +#line 565 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 307: +YY_RULE_SETUP +#line 566 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4851,27 +4873,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 569 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 306: +case 308: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 307: -/* rule 307 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 308: +case 310: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4881,7 +4903,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 582 "./util/configlexer.lex" +#line 584 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4893,33 +4915,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 309: +case 311: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 310: +case 312: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 599 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 311: +case 313: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 312: +case 314: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4920 "" +#line 4942 "" case YY_END_OF_BUFFER: { @@ -5214,7 +5236,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 >= 3071 ) + if ( yy_current_state >= 3083 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5242,11 +5264,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 >= 3071 ) + if ( yy_current_state >= 3083 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3070); + yy_is_jam = (yy_current_state == 3082); return yy_is_jam ? 0 : yy_current_state; } @@ -5885,6 +5907,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 605 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" diff --git a/util/configparser.c b/util/configparser.c index 66f34071a..2c9b0a5c4 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -418,7 +418,9 @@ extern int yydebug; VAR_RPZ_ACTION_OVERRIDE = 539, VAR_RPZ_CNAME_OVERRIDE = 540, VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_RPZ_LOG_NAME = 542, + VAR_DYNLIB = 543, + VAR_DYNLIB_FILE = 544 }; #endif /* Tokens. */ @@ -707,6 +709,8 @@ extern int yydebug; #define VAR_RPZ_CNAME_OVERRIDE 540 #define VAR_RPZ_LOG 541 #define VAR_RPZ_LOG_NAME 542 +#define VAR_DYNLIB 543 +#define VAR_DYNLIB_FILE 544 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -716,7 +720,7 @@ union YYSTYPE char* str; -#line 720 "util/configparser.c" +#line 724 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -966,19 +970,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 615 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 290 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 311 +#define YYNNTS 315 /* YYNRULES -- Number of rules. */ -#define YYNRULES 600 +#define YYNRULES 606 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 893 +#define YYNSTATES 900 #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 544 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1043,74 +1047,74 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 + 285, 286, 287, 288, 289 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 179, 179, 179, 180, 180, 181, 181, 182, 182, - 182, 183, 183, 184, 184, 185, 189, 194, 195, 196, - 196, 196, 197, 197, 198, 198, 198, 199, 199, 200, - 200, 200, 201, 201, 202, 202, 202, 203, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 208, 208, - 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, - 213, 213, 214, 214, 214, 215, 215, 216, 216, 217, - 217, 218, 218, 219, 219, 219, 220, 220, 221, 221, - 222, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, - 231, 231, 232, 232, 232, 233, 233, 234, 234, 234, - 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, - 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, - 242, 243, 243, 243, 244, 244, 245, 245, 245, 246, - 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, - 252, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, - 267, 267, 267, 268, 268, 268, 269, 269, 270, 271, - 271, 272, 272, 273, 273, 274, 274, 275, 275, 275, - 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, - 280, 280, 281, 283, 295, 296, 297, 297, 297, 297, - 297, 298, 298, 300, 312, 313, 314, 314, 314, 314, - 315, 315, 317, 331, 332, 333, 333, 333, 333, 334, - 334, 334, 336, 353, 354, 355, 355, 355, 355, 356, - 356, 356, 357, 360, 379, 396, 404, 414, 422, 439, - 440, 441, 441, 441, 441, 441, 442, 442, 442, 443, - 443, 445, 454, 463, 474, 483, 492, 501, 512, 521, - 533, 547, 562, 573, 590, 607, 624, 641, 656, 671, - 684, 699, 708, 717, 726, 735, 744, 753, 762, 771, - 780, 789, 798, 807, 816, 825, 838, 847, 860, 869, - 878, 887, 894, 901, 910, 917, 926, 934, 941, 948, - 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, 1042, - 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, 1135, - 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, 1221, - 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, 1320, - 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, 1418, - 1426, 1435, 1443, 1456, 1465, 1472, 1482, 1492, 1502, 1512, - 1522, 1532, 1542, 1552, 1559, 1566, 1573, 1582, 1591, 1600, - 1609, 1616, 1626, 1646, 1653, 1671, 1684, 1697, 1706, 1715, - 1724, 1733, 1743, 1753, 1764, 1773, 1782, 1791, 1800, 1809, - 1818, 1831, 1844, 1853, 1860, 1869, 1878, 1887, 1896, 1904, - 1917, 1925, 1966, 1973, 1988, 1998, 2008, 2015, 2022, 2029, - 2038, 2046, 2060, 2081, 2102, 2114, 2126, 2138, 2147, 2168, - 2178, 2187, 2195, 2203, 2216, 2229, 2244, 2259, 2268, 2277, - 2283, 2292, 2301, 2311, 2321, 2334, 2347, 2359, 2373, 2385, - 2399, 2409, 2416, 2423, 2432, 2441, 2451, 2461, 2471, 2478, - 2485, 2494, 2503, 2513, 2523, 2530, 2537, 2544, 2552, 2562, - 2572, 2582, 2592, 2631, 2641, 2649, 2657, 2672, 2681, 2686, - 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2690, 2690, 2692, - 2702, 2711, 2718, 2725, 2732, 2739, 2746, 2753, 2758, 2759, - 2760, 2760, 2761, 2761, 2761, 2762, 2763, 2763, 2764, 2764, - 2765, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2773, 2782, - 2789, 2796, 2805, 2812, 2819, 2826, 2833, 2842, 2851, 2858, - 2865, 2875, 2885, 2895, 2905, 2915, 2925, 2930, 2931, 2932, - 2934, 2940, 2950, 2957, 2966, 2974, 2979, 2980, 2982, 2982, - 2982, 2983, 2983, 2984, 2985, 2986, 2987, 2988, 2990, 3000, - 3009, 3016, 3025, 3032, 3041, 3049, 3062, 3070, 3083, 3088, - 3089, 3090, 3090, 3091, 3091, 3091, 3092, 3094, 3106, 3118, - 3130, 3145, 3158, 3171, 3182, 3187, 3188, 3189, 3189, 3191, - 3206 + 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, + 183, 184, 184, 185, 185, 186, 186, 190, 195, 196, + 197, 197, 197, 198, 198, 199, 199, 199, 200, 200, + 201, 201, 201, 202, 202, 203, 203, 203, 204, 204, + 204, 205, 205, 206, 206, 207, 207, 208, 208, 209, + 209, 210, 210, 211, 211, 212, 212, 213, 213, 213, + 214, 214, 214, 215, 215, 215, 216, 216, 217, 217, + 218, 218, 219, 219, 220, 220, 220, 221, 221, 222, + 222, 223, 223, 223, 224, 224, 225, 225, 226, 226, + 227, 227, 227, 228, 228, 229, 229, 230, 230, 231, + 231, 232, 232, 233, 233, 233, 234, 234, 235, 235, + 235, 236, 236, 236, 237, 237, 237, 238, 238, 238, + 238, 239, 240, 240, 240, 241, 241, 241, 242, 242, + 243, 243, 244, 244, 244, 245, 245, 246, 246, 246, + 247, 248, 248, 249, 249, 250, 251, 251, 252, 252, + 253, 253, 254, 255, 255, 256, 256, 257, 257, 258, + 258, 259, 259, 260, 260, 260, 261, 261, 262, 262, + 263, 263, 264, 264, 265, 265, 266, 266, 267, 267, + 267, 268, 268, 268, 269, 269, 269, 270, 270, 271, + 272, 272, 273, 273, 274, 274, 275, 275, 276, 276, + 276, 277, 277, 277, 278, 278, 278, 279, 279, 280, + 280, 281, 281, 282, 284, 296, 297, 298, 298, 298, + 298, 298, 299, 299, 301, 313, 314, 315, 315, 315, + 315, 316, 316, 318, 332, 333, 334, 334, 334, 334, + 335, 335, 335, 337, 354, 355, 356, 356, 356, 356, + 357, 357, 357, 358, 361, 380, 397, 405, 415, 423, + 440, 441, 442, 442, 442, 442, 442, 443, 443, 443, + 444, 444, 446, 455, 464, 475, 484, 493, 502, 513, + 522, 534, 548, 563, 574, 591, 608, 625, 642, 657, + 672, 685, 700, 709, 718, 727, 736, 745, 754, 763, + 772, 781, 790, 799, 808, 817, 826, 839, 848, 861, + 870, 879, 888, 895, 902, 911, 918, 927, 935, 942, + 949, 957, 966, 975, 984, 998, 1007, 1016, 1025, 1034, + 1043, 1052, 1059, 1066, 1092, 1100, 1107, 1114, 1121, 1128, + 1136, 1144, 1152, 1159, 1170, 1181, 1188, 1197, 1206, 1215, + 1222, 1229, 1237, 1245, 1255, 1265, 1275, 1289, 1297, 1310, + 1321, 1329, 1342, 1351, 1360, 1369, 1379, 1389, 1397, 1410, + 1419, 1427, 1436, 1444, 1457, 1466, 1473, 1483, 1493, 1503, + 1513, 1523, 1533, 1543, 1553, 1560, 1567, 1574, 1583, 1592, + 1601, 1610, 1617, 1627, 1647, 1654, 1672, 1685, 1698, 1707, + 1716, 1725, 1734, 1744, 1754, 1765, 1774, 1783, 1792, 1801, + 1810, 1819, 1832, 1845, 1854, 1861, 1870, 1879, 1888, 1897, + 1905, 1918, 1926, 1967, 1974, 1989, 1999, 2009, 2016, 2023, + 2030, 2039, 2047, 2061, 2082, 2103, 2115, 2127, 2139, 2148, + 2169, 2179, 2188, 2196, 2204, 2217, 2230, 2245, 2260, 2269, + 2278, 2284, 2293, 2302, 2312, 2322, 2335, 2348, 2360, 2374, + 2386, 2400, 2410, 2417, 2424, 2433, 2442, 2452, 2462, 2472, + 2479, 2486, 2495, 2504, 2514, 2524, 2531, 2538, 2545, 2553, + 2563, 2573, 2583, 2593, 2632, 2642, 2650, 2658, 2673, 2682, + 2687, 2688, 2689, 2689, 2689, 2690, 2690, 2690, 2691, 2691, + 2693, 2703, 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2759, + 2760, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, 2765, + 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2774, + 2783, 2790, 2797, 2806, 2813, 2820, 2827, 2834, 2843, 2852, + 2859, 2866, 2876, 2886, 2896, 2906, 2916, 2926, 2931, 2932, + 2933, 2935, 2941, 2946, 2947, 2948, 2950, 2956, 2966, 2973, + 2982, 2990, 2995, 2996, 2998, 2998, 2998, 2999, 2999, 3000, + 3001, 3002, 3003, 3004, 3006, 3016, 3025, 3032, 3041, 3048, + 3057, 3065, 3078, 3086, 3099, 3104, 3105, 3106, 3106, 3107, + 3107, 3107, 3108, 3110, 3122, 3134, 3146, 3161, 3174, 3187, + 3198, 3203, 3204, 3205, 3205, 3207, 3222 }; #endif @@ -1224,14 +1228,15 @@ static const char *const yytname[] = "VAR_TLS_CIPHERSUITES", "VAR_TLS_USE_SNI", "VAR_IPSET", "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", - "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "$accept", - "toplevelvars", "toplevelvar", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", + "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "$accept", "toplevelvars", + "toplevelvar", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", + "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", + "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", + "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", "server_send_client_subnet", "server_client_subnet_zone", @@ -1336,10 +1341,10 @@ static const char *const yytname[] = "dt_dnstap_log_client_response_messages", "dt_dnstap_log_forwarder_query_messages", "dt_dnstap_log_forwarder_response_messages", "pythonstart", - "contents_py", "content_py", "py_script", - "server_disable_dnssec_lame_check", "server_log_identity", - "server_response_ip", "server_response_ip_data", "dnscstart", - "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", + "contents_py", "content_py", "py_script", "dynlibstart", "contents_dl", + "content_dl", "dl_file", "server_disable_dnssec_lame_check", + "server_log_identity", "server_response_ip", "server_response_ip_data", + "dnscstart", "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable", "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider", "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_provider_cert_rotated", "dnsc_dnscrypt_secret_key", "dnsc_dnscrypt_shared_secret_cache_size", @@ -1386,14 +1391,14 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544 }; # endif -#define YYPACT_NINF -272 +#define YYPACT_NINF -280 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-272))) + (!!((Yystate) == (-280))) #define YYTABLE_NINF -1 @@ -1404,96 +1409,96 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 271, -42, - -37, -41, -7, -43, -30, -136, -106, -177, -172, -271, - 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, - 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 87, 88, 91, 93, 94, 95, 96, 97, - 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 201, 205, 206, - 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 237, - 243, 245, 246, 247, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 269, 270, 305, 306, 307, 308, 312, - 313, 314, 356, 357, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 358, - 359, 360, 361, 362, 363, 364, -272, -272, -272, -272, - -272, -272, -272, -272, 368, 372, 373, 398, 399, 400, - -272, -272, -272, -272, -272, -272, -272, 402, 413, 414, - 415, 416, 417, 418, -272, -272, -272, -272, -272, -272, - -272, -272, 419, 420, 421, 422, 423, 424, 425, 426, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 427, - 428, 429, 430, 431, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 471, 473, 489, 490, 491, - 492, 493, 494, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 495, 496, 497, 498, 499, 506, 507, 508, - 509, 510, 511, 512, 514, 515, 516, 517, 518, 519, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 520, - -272, -272, 523, 526, 529, 530, 539, 540, 541, 543, - 544, 545, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 546, 547, 548, 549, 550, 551, -272, - -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 556, 557, - 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 559, 560, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 568, - -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 571, 572, 573, -272, -272, -272, -272, -272, - -272, -272, -272 + -280, 0, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + 277, -42, -37, -41, -7, -43, -30, -136, -106, -279, + -177, -172, -271, 2, 3, 4, 25, 26, 28, 31, + 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, + 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 201, 205, 206, 207, 208, 209, 210, 211, 213, 214, + 215, 216, 219, 220, 222, 223, 224, 225, 226, 227, + 228, 229, 237, 243, 245, 246, 247, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 269, 270, 271, 273, + 274, 275, 276, 311, 312, 313, 314, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, 318, 319, 320, 362, 363, 364, 365, -280, + -280, -280, -280, -280, -280, -280, -280, 366, 367, 368, + 369, 370, 374, -280, -280, -280, -280, -280, -280, -280, + 378, 379, 404, 405, 406, 408, 419, -280, -280, -280, + -280, -280, -280, -280, -280, 420, 421, 422, 423, 424, + 425, 426, 427, -280, -280, -280, -280, -280, -280, -280, + -280, -280, 428, 429, 430, 431, 432, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, 433, 434, + 435, 436, 437, 477, 479, 495, -280, -280, -280, -280, + -280, -280, -280, -280, -280, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 512, 513, 514, 515, 516, + 517, 518, 520, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, 521, -280, -280, 522, -280, -280, 523, 524, + 525, 526, 529, 532, 535, 536, 545, 546, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, 547, + 549, 550, 551, 552, 553, -280, -280, -280, -280, -280, + -280, -280, 554, 555, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, 556, 557, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, 558, 559, 560, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, 561, 562, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, 563, 564, + 565, 566, 567, 568, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, 569, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, 570, -280, -280, 571, 572, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, 573, + 574, 575, -280, -280, -280, -280, -280, -280, -280, -280 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1501,10 +1506,11 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 213, 223, 488, 546, 507, 232, - 555, 578, 242, 594, 258, 3, 18, 215, 225, 234, - 244, 260, 490, 509, 548, 557, 580, 596, 4, 5, - 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, + 2, 0, 1, 17, 214, 224, 489, 547, 508, 233, + 561, 584, 243, 600, 259, 552, 3, 19, 216, 226, + 235, 245, 261, 491, 510, 549, 554, 563, 586, 602, + 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1523,148 +1529,147 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 20, 21, + 84, 87, 96, 184, 185, 22, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 35, 75, 23, 88, + 89, 46, 68, 83, 24, 25, 28, 29, 26, 27, + 30, 31, 32, 33, 34, 119, 196, 120, 122, 123, + 124, 198, 203, 199, 210, 211, 212, 213, 180, 85, + 74, 100, 117, 118, 208, 205, 121, 36, 37, 38, + 39, 40, 76, 90, 91, 106, 62, 72, 63, 188, + 189, 101, 56, 57, 187, 58, 59, 110, 114, 128, + 137, 163, 140, 209, 111, 69, 41, 42, 43, 98, + 129, 130, 131, 44, 45, 47, 48, 50, 51, 49, + 135, 52, 53, 54, 60, 79, 115, 93, 136, 86, + 159, 94, 95, 112, 113, 206, 99, 55, 77, 80, + 61, 64, 102, 103, 78, 160, 104, 65, 66, 67, + 197, 116, 173, 174, 175, 176, 177, 178, 186, 105, + 73, 107, 108, 109, 161, 70, 71, 92, 81, 82, + 97, 125, 126, 207, 127, 132, 133, 134, 164, 165, + 167, 169, 170, 168, 171, 181, 138, 139, 143, 144, + 141, 142, 145, 146, 148, 147, 200, 202, 201, 162, + 172, 190, 192, 191, 193, 194, 195, 166, 179, 182, + 183, 204, 0, 0, 0, 0, 0, 0, 0, 215, + 217, 218, 219, 221, 222, 223, 220, 0, 0, 0, + 0, 0, 0, 225, 227, 228, 229, 230, 231, 232, + 0, 0, 0, 0, 0, 0, 0, 234, 236, 237, + 240, 241, 238, 242, 239, 0, 0, 0, 0, 0, + 0, 0, 0, 244, 246, 247, 248, 249, 253, 250, + 251, 252, 0, 0, 0, 0, 0, 264, 268, 269, + 270, 271, 260, 262, 263, 265, 266, 267, 0, 0, + 0, 0, 0, 0, 0, 0, 490, 492, 494, 493, + 499, 495, 496, 497, 498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 19, 20, 83, 86, 95, - 183, 184, 21, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 34, 74, 22, 87, 88, 45, 67, - 82, 23, 24, 27, 28, 25, 26, 29, 30, 31, - 32, 33, 118, 195, 119, 121, 122, 123, 197, 202, - 198, 209, 210, 211, 212, 179, 84, 73, 99, 116, - 117, 207, 204, 120, 35, 36, 37, 38, 39, 75, - 89, 90, 105, 61, 71, 62, 187, 188, 100, 55, - 56, 186, 57, 58, 109, 113, 127, 136, 162, 139, - 208, 110, 68, 40, 41, 42, 97, 128, 129, 130, - 43, 44, 46, 47, 49, 50, 48, 134, 51, 52, - 53, 59, 78, 114, 92, 135, 85, 158, 93, 94, - 111, 112, 205, 98, 54, 76, 79, 60, 63, 101, - 102, 77, 159, 103, 64, 65, 66, 196, 115, 172, - 173, 174, 175, 176, 177, 185, 104, 72, 106, 107, - 108, 160, 69, 70, 91, 80, 81, 96, 124, 125, - 206, 126, 131, 132, 133, 163, 164, 166, 168, 169, - 167, 170, 180, 137, 138, 142, 143, 140, 141, 144, - 145, 147, 146, 199, 201, 200, 161, 171, 189, 191, - 190, 192, 193, 194, 165, 178, 181, 182, 203, 0, - 0, 0, 0, 0, 0, 0, 214, 216, 217, 218, - 220, 221, 222, 219, 0, 0, 0, 0, 0, 0, - 224, 226, 227, 228, 229, 230, 231, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 239, 240, 237, - 241, 238, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 245, 246, 247, 248, 252, 249, 250, 251, 0, - 0, 0, 0, 0, 263, 267, 268, 269, 270, 259, - 261, 262, 264, 265, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 489, 491, 493, 492, 498, 494, 495, - 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 0, - 547, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 556, 558, 559, 560, 562, 563, 561, 564, - 565, 566, 567, 0, 0, 0, 0, 0, 0, 579, - 581, 582, 583, 584, 585, 586, 0, 0, 595, 597, - 598, 272, 271, 278, 291, 289, 301, 297, 298, 302, - 299, 300, 303, 304, 305, 306, 307, 330, 331, 332, - 333, 334, 359, 360, 361, 366, 367, 294, 368, 369, - 372, 370, 371, 374, 375, 376, 390, 345, 346, 348, - 349, 377, 393, 339, 341, 394, 400, 401, 402, 295, - 358, 418, 419, 340, 413, 323, 290, 335, 391, 397, - 378, 0, 0, 422, 296, 273, 322, 382, 274, 292, - 293, 336, 337, 420, 380, 384, 385, 275, 423, 362, - 389, 324, 344, 395, 396, 399, 412, 338, 416, 414, - 415, 350, 357, 386, 387, 351, 352, 379, 404, 325, - 326, 329, 308, 310, 311, 312, 313, 314, 424, 425, - 427, 363, 364, 365, 373, 428, 429, 430, 0, 0, - 0, 381, 353, 355, 551, 439, 443, 441, 440, 444, - 442, 0, 0, 447, 448, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 383, 398, 417, 452, 453, - 354, 431, 0, 0, 0, 0, 0, 0, 405, 406, - 407, 408, 409, 410, 411, 552, 347, 342, 403, 321, - 276, 277, 343, 454, 456, 455, 457, 458, 459, 309, - 316, 449, 451, 450, 315, 0, 328, 388, 426, 327, - 356, 317, 318, 320, 319, 460, 461, 462, 466, 465, - 463, 464, 467, 468, 469, 470, 472, 471, 481, 0, - 485, 486, 0, 0, 487, 473, 479, 474, 475, 476, - 478, 480, 477, 253, 254, 255, 256, 257, 499, 501, - 500, 503, 504, 505, 506, 502, 528, 529, 530, 531, - 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 550, 568, 569, 570, 573, 571, - 572, 574, 575, 576, 577, 587, 588, 589, 590, 591, - 592, 599, 600, 392, 421, 438, 553, 554, 445, 446, - 432, 433, 0, 0, 0, 437, 593, 482, 483, 484, - 436, 434, 435 + 0, 0, 0, 509, 511, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 0, 548, 550, 0, 553, 555, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 562, 564, + 565, 566, 568, 569, 567, 570, 571, 572, 573, 0, + 0, 0, 0, 0, 0, 585, 587, 588, 589, 590, + 591, 592, 0, 0, 601, 603, 604, 273, 272, 279, + 292, 290, 302, 298, 299, 303, 300, 301, 304, 305, + 306, 307, 308, 331, 332, 333, 334, 335, 360, 361, + 362, 367, 368, 295, 369, 370, 373, 371, 372, 375, + 376, 377, 391, 346, 347, 349, 350, 378, 394, 340, + 342, 395, 401, 402, 403, 296, 359, 419, 420, 341, + 414, 324, 291, 336, 392, 398, 379, 0, 0, 423, + 297, 274, 323, 383, 275, 293, 294, 337, 338, 421, + 381, 385, 386, 276, 424, 363, 390, 325, 345, 396, + 397, 400, 413, 339, 417, 415, 416, 351, 358, 387, + 388, 352, 353, 380, 405, 326, 327, 330, 309, 311, + 312, 313, 314, 315, 425, 426, 428, 364, 365, 366, + 374, 429, 430, 431, 0, 0, 0, 382, 354, 356, + 557, 440, 444, 442, 441, 445, 443, 0, 0, 448, + 449, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 384, 399, 418, 453, 454, 355, 432, 0, 0, + 0, 0, 0, 0, 406, 407, 408, 409, 410, 411, + 412, 558, 348, 343, 404, 322, 277, 278, 344, 455, + 457, 456, 458, 459, 460, 310, 317, 450, 452, 451, + 316, 0, 329, 389, 427, 328, 357, 318, 319, 321, + 320, 461, 462, 463, 467, 466, 464, 465, 468, 469, + 470, 471, 473, 472, 482, 0, 486, 487, 0, 0, + 488, 474, 480, 475, 476, 477, 479, 481, 478, 254, + 255, 256, 257, 258, 500, 502, 501, 504, 505, 506, + 507, 503, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 551, 556, 574, 575, 576, 579, 577, 578, 580, 581, + 582, 583, 593, 594, 595, 596, 597, 598, 605, 606, + 393, 422, 439, 559, 560, 446, 447, 433, 434, 0, + 0, 0, 438, 599, 483, 484, 485, 437, 435, 436 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -23, 248, - 574, 575, 576, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272 + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, 576, 577, + 578, 579, 580, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, + -280, -280, -280, -280, -280 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 234, 17, 29, 436, 18, - 30, 450, 19, 31, 464, 20, 32, 480, 494, 495, - 496, 497, 498, 21, 33, 499, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 437, 438, 439, 440, 441, - 442, 443, 451, 452, 453, 454, 455, 456, 481, 482, - 483, 484, 485, 486, 487, 488, 465, 466, 467, 468, - 469, 470, 471, 22, 34, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 23, 35, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 24, 36, 560, 561, 424, - 425, 426, 427, 25, 37, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 26, 38, 589, 590, - 591, 592, 593, 594, 595, 428, 27, 39, 598, 599, - 600 + -1, 1, 16, 17, 30, 237, 18, 31, 439, 19, + 32, 453, 20, 33, 467, 21, 34, 483, 497, 498, + 499, 500, 501, 22, 35, 502, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 440, 441, 442, 443, 444, + 445, 446, 454, 455, 456, 457, 458, 459, 484, 485, + 486, 487, 488, 489, 490, 491, 468, 469, 470, 471, + 472, 473, 474, 23, 36, 516, 517, 518, 519, 520, + 521, 522, 523, 524, 24, 37, 543, 544, 545, 546, + 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, + 557, 558, 559, 560, 561, 25, 38, 563, 564, 26, + 39, 566, 567, 427, 428, 429, 430, 27, 40, 578, + 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, + 28, 41, 595, 596, 597, 598, 599, 600, 601, 431, + 29, 42, 604, 605, 606 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1672,73 +1677,74 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 472, 429, 457, 430, 431, 559, 444, 596, 597, - 500, 3, 601, 602, 603, 445, 446, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 604, 605, 472, 606, 458, - 459, 607, 608, 609, 610, 4, 611, 612, 613, 614, - 615, 5, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 616, 617, 460, 432, 505, 506, 507, 508, - 509, 510, 511, 512, 583, 584, 585, 586, 587, 588, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 6, 433, 633, 634, 434, - 447, 635, 448, 636, 637, 638, 639, 640, 641, 642, - 643, 7, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 461, 462, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 8, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 463, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 9, 738, 474, 475, 476, 739, 740, 741, 742, 743, - 744, 745, 479, 746, 747, 748, 749, 435, 10, 750, - 751, 449, 752, 753, 754, 755, 756, 757, 758, 759, - 489, 490, 491, 492, 493, 11, 473, 760, 474, 475, - 476, 477, 478, 761, 12, 762, 763, 764, 479, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 13, 784, - 785, 501, 14, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 786, 787, 788, 789, 72, - 73, 74, 790, 791, 792, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 116, 117, 118, 802, 119, - 120, 121, 803, 804, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 805, 806, - 807, 146, 808, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 828, 196, 829, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 212, 213, 214, 215, 216, 217, 841, 842, 843, 844, - 845, 846, 847, 218, 848, 849, 850, 851, 852, 853, - 854, 219, 220, 855, 221, 222, 856, 223, 224, 857, - 858, 225, 226, 227, 228, 229, 230, 231, 232, 859, - 860, 861, 233, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 0, 0, 0, 0, 0, 0, + 2, 475, 432, 460, 433, 434, 562, 447, 602, 603, + 565, 3, 607, 608, 609, 448, 449, 525, 526, 527, + 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, + 538, 539, 540, 541, 542, 610, 611, 475, 612, 461, + 462, 613, 614, 615, 616, 4, 617, 618, 619, 620, + 621, 5, 568, 569, 570, 571, 572, 573, 574, 575, + 576, 577, 622, 623, 463, 435, 508, 509, 510, 511, + 512, 513, 514, 515, 589, 590, 591, 592, 593, 594, + 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, + 634, 635, 636, 637, 638, 6, 436, 639, 640, 437, + 450, 641, 451, 642, 643, 644, 645, 646, 647, 648, + 649, 7, 650, 651, 652, 653, 654, 655, 656, 657, + 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, + 668, 464, 465, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, + 686, 687, 8, 688, 689, 690, 691, 692, 693, 694, + 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, + 705, 466, 706, 707, 708, 709, 710, 711, 712, 713, + 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, + 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 9, 744, 477, 478, 479, 745, 746, 747, 748, 749, + 750, 751, 482, 752, 753, 754, 755, 438, 10, 756, + 757, 452, 758, 759, 760, 761, 762, 763, 764, 765, + 492, 493, 494, 495, 496, 11, 476, 766, 477, 478, + 479, 480, 481, 767, 12, 768, 769, 770, 482, 771, + 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, + 782, 783, 784, 785, 786, 787, 788, 789, 13, 790, + 791, 792, 14, 793, 794, 795, 796, 0, 15, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 797, 798, 799, 800, 75, 76, 77, 801, 802, + 803, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 804, 805, 806, 807, 808, 809, 810, 811, + 812, 119, 120, 121, 813, 122, 123, 124, 814, 815, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 816, 817, 818, 149, 819, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 820, + 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, + 831, 832, 833, 834, 835, 836, 837, 838, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 839, 199, 840, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 841, 842, 843, 844, 845, + 846, 847, 848, 849, 850, 851, 215, 216, 217, 218, + 219, 220, 852, 853, 854, 855, 856, 857, 858, 221, + 859, 860, 861, 862, 863, 864, 865, 222, 223, 866, + 224, 225, 867, 226, 227, 868, 869, 228, 229, 230, + 231, 232, 233, 234, 235, 870, 871, 872, 236, 873, + 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, + 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, + 894, 895, 896, 897, 898, 899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 504 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 503, 504, 505, 506, 507 }; static const yytype_int16 yycheck[] = { 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 33, 11, 10, 10, 10, 52, 53, 153, 154, 155, + 289, 11, 10, 10, 10, 52, 53, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, @@ -1765,106 +1771,107 @@ static const yytype_int16 yycheck[] = 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 33, 282, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 10, 10, 10, 10, 48, - 49, 50, 10, 10, 10, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 104, 105, 106, 10, 108, - 109, 110, 10, 10, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 10, 10, - 10, 140, 10, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 282, 10, 10, 10, 10, -1, 288, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, + 10, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 10, 10, 10, 140, 10, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 10, 211, 10, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 239, 240, 241, 242, 243, 244, 10, 10, 10, 10, - 10, 10, 10, 252, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 10, 263, 264, 10, 266, 267, 10, - 10, 270, 271, 272, 273, 274, 275, 276, 277, 10, - 10, 10, 281, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 10, 211, 10, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 239, 240, 241, 242, + 243, 244, 10, 10, 10, 10, 10, 10, 10, 252, + 10, 10, 10, 10, 10, 10, 10, 260, 261, 10, + 263, 264, 10, 266, 267, 10, 10, 270, 271, 272, + 273, 274, 275, 276, 277, 10, 10, 10, 281, 10, 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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 33, 33 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 35, 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 289, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 290, 291, 294, 297, 300, - 303, 311, 531, 542, 563, 571, 584, 594, 292, 295, - 298, 301, 304, 312, 532, 543, 564, 572, 585, 595, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 48, 49, 50, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, - 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 252, 260, - 261, 263, 264, 266, 267, 270, 271, 272, 273, 274, - 275, 276, 277, 281, 293, 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, 567, 568, 569, 570, 593, 44, - 46, 47, 107, 138, 141, 269, 296, 503, 504, 505, - 506, 507, 508, 509, 44, 52, 53, 137, 139, 268, - 299, 510, 511, 512, 513, 514, 515, 44, 80, 81, - 105, 172, 173, 212, 302, 524, 525, 526, 527, 528, - 529, 530, 44, 253, 255, 256, 257, 258, 259, 265, - 305, 516, 517, 518, 519, 520, 521, 522, 523, 283, - 284, 285, 286, 287, 306, 307, 308, 309, 310, 313, - 516, 517, 518, 519, 520, 96, 97, 98, 99, 100, - 101, 102, 103, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 112, - 565, 566, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 246, 247, 248, 249, 250, 251, 586, - 587, 588, 589, 590, 591, 592, 279, 280, 596, 597, - 598, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 0, 291, 0, 11, 45, 51, 95, 111, 152, 210, + 228, 245, 254, 278, 282, 288, 292, 293, 296, 299, + 302, 305, 313, 533, 544, 565, 569, 577, 590, 600, + 294, 297, 300, 303, 306, 314, 534, 545, 566, 570, + 578, 591, 601, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 48, 49, 50, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 104, + 105, 106, 108, 109, 110, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 140, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 239, 240, 241, 242, 243, + 244, 252, 260, 261, 263, 264, 266, 267, 270, 271, + 272, 273, 274, 275, 276, 277, 281, 295, 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, 573, 574, 575, + 576, 599, 44, 46, 47, 107, 138, 141, 269, 298, + 505, 506, 507, 508, 509, 510, 511, 44, 52, 53, + 137, 139, 268, 301, 512, 513, 514, 515, 516, 517, + 44, 80, 81, 105, 172, 173, 212, 304, 526, 527, + 528, 529, 530, 531, 532, 44, 253, 255, 256, 257, + 258, 259, 265, 307, 518, 519, 520, 521, 522, 523, + 524, 525, 283, 284, 285, 286, 287, 308, 309, 310, + 311, 312, 315, 518, 519, 520, 521, 522, 96, 97, + 98, 99, 100, 101, 102, 103, 535, 536, 537, 538, + 539, 540, 541, 542, 543, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 546, 547, 548, 549, 550, 551, 552, + 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, + 563, 564, 112, 567, 568, 289, 571, 572, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 246, + 247, 248, 249, 250, 251, 592, 593, 594, 595, 596, + 597, 598, 279, 280, 602, 603, 604, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1893,80 +1900,80 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 289, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 292, 292, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 294, 295, 295, 296, 296, 296, 296, - 296, 296, 296, 297, 298, 298, 299, 299, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 303, 304, 304, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 308, 309, 310, 311, 312, - 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 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, - 532, 533, 533, 533, 533, 533, 533, 533, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 585, 586, 586, 586, 586, 586, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 595, 596, 596, 597, - 598 + 0, 290, 291, 291, 292, 292, 292, 292, 292, 292, + 292, 292, 292, 292, 292, 292, 292, 293, 294, 294, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 296, 297, 297, 298, 298, 298, + 298, 298, 298, 298, 299, 300, 300, 301, 301, 301, + 301, 301, 301, 302, 303, 303, 304, 304, 304, 304, + 304, 304, 304, 305, 306, 306, 307, 307, 307, 307, + 307, 307, 307, 307, 308, 309, 310, 311, 312, 313, + 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, + 315, 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, 534, 535, 535, 535, 535, 535, 535, 535, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 545, 546, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 564, 565, 566, 566, + 567, 568, 569, 570, 570, 571, 572, 573, 574, 575, + 576, 577, 578, 578, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 591, 592, 592, 592, + 592, 592, 592, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 601, 602, 602, 603, 604 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -1986,13 +1993,13 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2004,28 +2011,28 @@ static const yytype_uint8 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, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, + 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, + 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, + 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, + 1, 2, 0, 1, 1, 2, 2 }; @@ -2709,16 +2716,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 16: -#line 190 "./util/configparser.y" + case 17: +#line 191 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2718 "util/configparser.c" +#line 2725 "util/configparser.c" break; - case 213: -#line 284 "./util/configparser.y" + case 214: +#line 285 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2729,11 +2736,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2733 "util/configparser.c" +#line 2740 "util/configparser.c" break; - case 223: -#line 301 "./util/configparser.y" + case 224: +#line 302 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2744,11 +2751,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 2755 "util/configparser.c" break; - case 232: -#line 318 "./util/configparser.y" + case 233: +#line 319 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2761,11 +2768,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 2772 "util/configparser.c" break; - case 242: -#line 337 "./util/configparser.y" + case 243: +#line 338 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2781,11 +2788,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2785 "util/configparser.c" +#line 2792 "util/configparser.c" break; - case 253: -#line 361 "./util/configparser.y" + case 254: +#line 362 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2802,11 +2809,11 @@ yyreduce: } } -#line 2806 "util/configparser.c" +#line 2813 "util/configparser.c" break; - case 254: -#line 380 "./util/configparser.y" + case 255: +#line 381 "./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 && @@ -2821,21 +2828,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2825 "util/configparser.c" +#line 2832 "util/configparser.c" break; - case 255: -#line 397 "./util/configparser.y" + case 256: +#line 398 "./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 2835 "util/configparser.c" +#line 2842 "util/configparser.c" break; - case 256: -#line 405 "./util/configparser.y" + case 257: +#line 406 "./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) @@ -2843,21 +2850,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2847 "util/configparser.c" +#line 2854 "util/configparser.c" break; - case 257: -#line 415 "./util/configparser.y" + case 258: +#line 416 "./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 2857 "util/configparser.c" +#line 2864 "util/configparser.c" break; - case 258: -#line 423 "./util/configparser.y" + case 259: +#line 424 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2873,11 +2880,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2877 "util/configparser.c" +#line 2884 "util/configparser.c" break; - case 271: -#line 446 "./util/configparser.y" + case 272: +#line 447 "./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) @@ -2885,11 +2892,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2889 "util/configparser.c" +#line 2896 "util/configparser.c" break; - case 272: -#line 455 "./util/configparser.y" + case 273: +#line 456 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2897,11 +2904,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2901 "util/configparser.c" +#line 2908 "util/configparser.c" break; - case 273: -#line 464 "./util/configparser.y" + case 274: +#line 465 "./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) @@ -2911,11 +2918,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2915 "util/configparser.c" +#line 2922 "util/configparser.c" break; - case 274: -#line 475 "./util/configparser.y" + case 275: +#line 476 "./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) @@ -2923,11 +2930,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2934 "util/configparser.c" break; - case 275: -#line 484 "./util/configparser.y" + case 276: +#line 485 "./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) @@ -2935,11 +2942,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2939 "util/configparser.c" +#line 2946 "util/configparser.c" break; - case 276: -#line 493 "./util/configparser.y" + case 277: +#line 494 "./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) @@ -2947,11 +2954,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2951 "util/configparser.c" +#line 2958 "util/configparser.c" break; - case 277: -#line 502 "./util/configparser.y" + case 278: +#line 503 "./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) @@ -2961,11 +2968,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2965 "util/configparser.c" +#line 2972 "util/configparser.c" break; - case 278: -#line 513 "./util/configparser.y" + case 279: +#line 514 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2973,11 +2980,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2984 "util/configparser.c" break; - case 279: -#line 522 "./util/configparser.y" + case 280: +#line 523 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2988,11 +2995,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 280: -#line 534 "./util/configparser.y" + case 281: +#line 535 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3004,11 +3011,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3015 "util/configparser.c" break; - case 281: -#line 548 "./util/configparser.y" + case 282: +#line 549 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3022,11 +3029,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" +#line 3033 "util/configparser.c" break; - case 282: -#line 563 "./util/configparser.y" + case 283: +#line 564 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3036,11 +3043,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" +#line 3047 "util/configparser.c" break; - case 283: -#line 574 "./util/configparser.y" + case 284: +#line 575 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3056,11 +3063,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3067 "util/configparser.c" break; - case 284: -#line 591 "./util/configparser.y" + case 285: +#line 592 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3076,11 +3083,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3087 "util/configparser.c" break; - case 285: -#line 608 "./util/configparser.y" + case 286: +#line 609 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3096,11 +3103,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3107 "util/configparser.c" break; - case 286: -#line 625 "./util/configparser.y" + case 287: +#line 626 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3116,11 +3123,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3127 "util/configparser.c" break; - case 287: -#line 642 "./util/configparser.y" + case 288: +#line 643 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3134,11 +3141,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3138 "util/configparser.c" +#line 3145 "util/configparser.c" break; - case 288: -#line 657 "./util/configparser.y" + case 289: +#line 658 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3152,11 +3159,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3163 "util/configparser.c" break; - case 289: -#line 672 "./util/configparser.y" + case 290: +#line 673 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3168,11 +3175,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3172 "util/configparser.c" +#line 3179 "util/configparser.c" break; - case 290: -#line 685 "./util/configparser.y" + case 291: +#line 686 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3186,11 +3193,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3190 "util/configparser.c" +#line 3197 "util/configparser.c" break; - case 291: -#line 700 "./util/configparser.y" + case 292: +#line 701 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3198,11 +3205,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3209 "util/configparser.c" break; - case 292: -#line 709 "./util/configparser.y" + case 293: +#line 710 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3210,11 +3217,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3221 "util/configparser.c" break; - case 293: -#line 718 "./util/configparser.y" + case 294: +#line 719 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3222,11 +3229,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" +#line 3233 "util/configparser.c" break; - case 294: -#line 727 "./util/configparser.y" + case 295: +#line 728 "./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) @@ -3234,11 +3241,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3238 "util/configparser.c" +#line 3245 "util/configparser.c" break; - case 295: -#line 736 "./util/configparser.y" + case 296: +#line 737 "./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) @@ -3246,11 +3253,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3250 "util/configparser.c" +#line 3257 "util/configparser.c" break; - case 296: -#line 745 "./util/configparser.y" + case 297: +#line 746 "./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) @@ -3258,11 +3265,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3269 "util/configparser.c" break; - case 297: -#line 754 "./util/configparser.y" + case 298: +#line 755 "./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) @@ -3270,11 +3277,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3281 "util/configparser.c" break; - case 298: -#line 763 "./util/configparser.y" + case 299: +#line 764 "./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) @@ -3282,11 +3289,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3286 "util/configparser.c" +#line 3293 "util/configparser.c" break; - case 299: -#line 772 "./util/configparser.y" + case 300: +#line 773 "./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) @@ -3294,11 +3301,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3305 "util/configparser.c" break; - case 300: -#line 781 "./util/configparser.y" + case 301: +#line 782 "./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) @@ -3306,11 +3313,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3317 "util/configparser.c" break; - case 301: -#line 790 "./util/configparser.y" + case 302: +#line 791 "./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) @@ -3318,11 +3325,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3322 "util/configparser.c" +#line 3329 "util/configparser.c" break; - case 302: -#line 799 "./util/configparser.y" + case 303: +#line 800 "./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) @@ -3330,11 +3337,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3334 "util/configparser.c" +#line 3341 "util/configparser.c" break; - case 303: -#line 808 "./util/configparser.y" + case 304: +#line 809 "./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) @@ -3342,11 +3349,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3346 "util/configparser.c" +#line 3353 "util/configparser.c" break; - case 304: -#line 817 "./util/configparser.y" + case 305: +#line 818 "./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) @@ -3354,11 +3361,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3365 "util/configparser.c" break; - case 305: -#line 826 "./util/configparser.y" + case 306: +#line 827 "./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) @@ -3370,11 +3377,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3381 "util/configparser.c" break; - case 306: -#line 839 "./util/configparser.y" + case 307: +#line 840 "./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) @@ -3382,11 +3389,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3393 "util/configparser.c" break; - case 307: -#line 848 "./util/configparser.y" + case 308: +#line 849 "./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) @@ -3398,11 +3405,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3409 "util/configparser.c" break; - case 308: -#line 861 "./util/configparser.y" + case 309: +#line 862 "./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) @@ -3410,11 +3417,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3421 "util/configparser.c" break; - case 309: -#line 870 "./util/configparser.y" + case 310: +#line 871 "./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) @@ -3422,11 +3429,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3433 "util/configparser.c" break; - case 310: -#line 879 "./util/configparser.y" + case 311: +#line 880 "./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) @@ -3434,31 +3441,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3445 "util/configparser.c" break; - case 311: -#line 888 "./util/configparser.y" + case 312: +#line 889 "./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 3448 "util/configparser.c" +#line 3455 "util/configparser.c" break; - case 312: -#line 895 "./util/configparser.y" + case 313: +#line 896 "./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 3458 "util/configparser.c" +#line 3465 "util/configparser.c" break; - case 313: -#line 902 "./util/configparser.y" + case 314: +#line 903 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3466,21 +3473,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3477 "util/configparser.c" break; - case 314: -#line 911 "./util/configparser.y" + case 315: +#line 912 "./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 3480 "util/configparser.c" +#line 3487 "util/configparser.c" break; - case 315: -#line 918 "./util/configparser.y" + case 316: +#line 919 "./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) @@ -3488,53 +3495,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 316: -#line 927 "./util/configparser.y" + case 317: +#line 928 "./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 3503 "util/configparser.c" +#line 3510 "util/configparser.c" break; - case 317: -#line 935 "./util/configparser.y" + case 318: +#line 936 "./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 3513 "util/configparser.c" +#line 3520 "util/configparser.c" break; - case 318: -#line 942 "./util/configparser.y" + case 319: +#line 943 "./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 3523 "util/configparser.c" +#line 3530 "util/configparser.c" break; - case 319: -#line 949 "./util/configparser.y" + case 320: +#line 950 "./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 3534 "util/configparser.c" +#line 3541 "util/configparser.c" break; - case 320: -#line 957 "./util/configparser.y" + case 321: +#line 958 "./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) @@ -3542,11 +3549,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 3553 "util/configparser.c" break; - case 321: -#line 966 "./util/configparser.y" + case 322: +#line 967 "./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) @@ -3554,11 +3561,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" +#line 3565 "util/configparser.c" break; - case 322: -#line 975 "./util/configparser.y" + case 323: +#line 976 "./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) @@ -3566,11 +3573,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" +#line 3577 "util/configparser.c" break; - case 323: -#line 984 "./util/configparser.y" + case 324: +#line 985 "./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) @@ -3583,11 +3590,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3587 "util/configparser.c" +#line 3594 "util/configparser.c" break; - case 324: -#line 998 "./util/configparser.y" + case 325: +#line 999 "./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) @@ -3595,11 +3602,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3599 "util/configparser.c" +#line 3606 "util/configparser.c" break; - case 325: -#line 1007 "./util/configparser.y" + case 326: +#line 1008 "./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) @@ -3607,11 +3614,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3618 "util/configparser.c" break; - case 326: -#line 1016 "./util/configparser.y" + case 327: +#line 1017 "./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) @@ -3619,11 +3626,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3623 "util/configparser.c" +#line 3630 "util/configparser.c" break; - case 327: -#line 1025 "./util/configparser.y" + case 328: +#line 1026 "./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) @@ -3631,11 +3638,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 3642 "util/configparser.c" break; - case 328: -#line 1034 "./util/configparser.y" + case 329: +#line 1035 "./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) @@ -3643,11 +3650,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 3654 "util/configparser.c" break; - case 329: -#line 1043 "./util/configparser.y" + case 330: +#line 1044 "./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) @@ -3655,31 +3662,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3659 "util/configparser.c" +#line 3666 "util/configparser.c" break; - case 330: -#line 1052 "./util/configparser.y" + case 331: +#line 1053 "./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 3669 "util/configparser.c" +#line 3676 "util/configparser.c" break; - case 331: -#line 1059 "./util/configparser.y" + case 332: +#line 1060 "./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 3679 "util/configparser.c" +#line 3686 "util/configparser.c" break; - case 332: -#line 1066 "./util/configparser.y" + case 333: +#line 1067 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3704,105 +3711,105 @@ yyreduce: } } } -#line 3708 "util/configparser.c" +#line 3715 "util/configparser.c" break; - case 333: -#line 1092 "./util/configparser.y" + case 334: +#line 1093 "./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 3719 "util/configparser.c" +#line 3726 "util/configparser.c" break; - case 334: -#line 1100 "./util/configparser.y" + case 335: +#line 1101 "./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 3729 "util/configparser.c" +#line 3736 "util/configparser.c" break; - case 335: -#line 1107 "./util/configparser.y" + case 336: +#line 1108 "./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 3739 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 336: -#line 1114 "./util/configparser.y" + case 337: +#line 1115 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3749 "util/configparser.c" +#line 3756 "util/configparser.c" break; - case 337: -#line 1121 "./util/configparser.y" + case 338: +#line 1122 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3759 "util/configparser.c" +#line 3766 "util/configparser.c" break; - case 338: -#line 1128 "./util/configparser.y" + case 339: +#line 1129 "./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 3770 "util/configparser.c" +#line 3777 "util/configparser.c" break; - case 339: -#line 1136 "./util/configparser.y" + case 340: +#line 1137 "./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 3781 "util/configparser.c" +#line 3788 "util/configparser.c" break; - case 340: -#line 1144 "./util/configparser.y" + case 341: +#line 1145 "./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 3792 "util/configparser.c" +#line 3799 "util/configparser.c" break; - case 341: -#line 1152 "./util/configparser.y" + case 342: +#line 1153 "./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 3802 "util/configparser.c" +#line 3809 "util/configparser.c" break; - case 342: -#line 1159 "./util/configparser.y" + case 343: +#line 1160 "./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) @@ -3812,11 +3819,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3823 "util/configparser.c" break; - case 343: -#line 1170 "./util/configparser.y" + case 344: +#line 1171 "./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) @@ -3826,21 +3833,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3837 "util/configparser.c" break; - case 344: -#line 1181 "./util/configparser.y" + case 345: +#line 1182 "./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 3840 "util/configparser.c" +#line 3847 "util/configparser.c" break; - case 345: -#line 1188 "./util/configparser.y" + case 346: +#line 1189 "./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) @@ -3848,11 +3855,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3859 "util/configparser.c" break; - case 346: -#line 1197 "./util/configparser.y" + case 347: +#line 1198 "./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) @@ -3860,11 +3867,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3871 "util/configparser.c" break; - case 347: -#line 1206 "./util/configparser.y" + case 348: +#line 1207 "./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) @@ -3872,53 +3879,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3883 "util/configparser.c" break; - case 348: -#line 1215 "./util/configparser.y" + case 349: +#line 1216 "./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 3886 "util/configparser.c" +#line 3893 "util/configparser.c" break; - case 349: -#line 1222 "./util/configparser.y" + case 350: +#line 1223 "./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 3896 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 350: -#line 1229 "./util/configparser.y" + case 351: +#line 1230 "./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 3907 "util/configparser.c" +#line 3914 "util/configparser.c" break; - case 351: -#line 1237 "./util/configparser.y" + case 352: +#line 1238 "./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 3918 "util/configparser.c" +#line 3925 "util/configparser.c" break; - case 352: -#line 1245 "./util/configparser.y" + case 353: +#line 1246 "./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) @@ -3927,11 +3934,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 353: -#line 1255 "./util/configparser.y" + case 354: +#line 1256 "./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) @@ -3940,11 +3947,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3951 "util/configparser.c" break; - case 354: -#line 1265 "./util/configparser.y" + case 355: +#line 1266 "./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) @@ -3953,11 +3960,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3964 "util/configparser.c" break; - case 355: -#line 1275 "./util/configparser.y" + case 356: +#line 1276 "./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) @@ -3970,22 +3977,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3981 "util/configparser.c" break; - case 356: -#line 1289 "./util/configparser.y" + case 357: +#line 1290 "./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 3985 "util/configparser.c" +#line 3992 "util/configparser.c" break; - case 357: -#line 1297 "./util/configparser.y" + case 358: +#line 1298 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3997,11 +4004,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 358: -#line 1310 "./util/configparser.y" + case 359: +#line 1311 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4011,22 +4018,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" +#line 4022 "util/configparser.c" break; - case 359: -#line 1321 "./util/configparser.y" + case 360: +#line 1322 "./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 4026 "util/configparser.c" +#line 4033 "util/configparser.c" break; - case 360: -#line 1329 "./util/configparser.y" + case 361: +#line 1330 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4038,11 +4045,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4049 "util/configparser.c" break; - case 361: -#line 1342 "./util/configparser.y" + case 362: +#line 1343 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4050,11 +4057,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4061 "util/configparser.c" break; - case 362: -#line 1351 "./util/configparser.y" + case 363: +#line 1352 "./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) @@ -4062,11 +4069,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4073 "util/configparser.c" break; - case 363: -#line 1360 "./util/configparser.y" + case 364: +#line 1361 "./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) @@ -4074,11 +4081,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4085 "util/configparser.c" break; - case 364: -#line 1369 "./util/configparser.y" + case 365: +#line 1370 "./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) @@ -4087,11 +4094,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4098 "util/configparser.c" break; - case 365: -#line 1379 "./util/configparser.y" + case 366: +#line 1380 "./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) @@ -4100,22 +4107,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4111 "util/configparser.c" break; - case 366: -#line 1389 "./util/configparser.y" + case 367: +#line 1390 "./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 4115 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 367: -#line 1397 "./util/configparser.y" + case 368: +#line 1398 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4127,11 +4134,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4138 "util/configparser.c" break; - case 368: -#line 1410 "./util/configparser.y" + case 369: +#line 1411 "./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) @@ -4139,22 +4146,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4150 "util/configparser.c" break; - case 369: -#line 1419 "./util/configparser.y" + case 370: +#line 1420 "./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 4154 "util/configparser.c" +#line 4161 "util/configparser.c" break; - case 370: -#line 1427 "./util/configparser.y" + case 371: +#line 1428 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4162,22 +4169,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4173 "util/configparser.c" break; - case 371: -#line 1436 "./util/configparser.y" + case 372: +#line 1437 "./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 4177 "util/configparser.c" +#line 4184 "util/configparser.c" break; - case 372: -#line 1444 "./util/configparser.y" + case 373: +#line 1445 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4189,11 +4196,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4200 "util/configparser.c" break; - case 373: -#line 1457 "./util/configparser.y" + case 374: +#line 1458 "./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) @@ -4201,21 +4208,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4205 "util/configparser.c" +#line 4212 "util/configparser.c" break; - case 374: -#line 1466 "./util/configparser.y" + case 375: +#line 1467 "./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 4215 "util/configparser.c" +#line 4222 "util/configparser.c" break; - case 375: -#line 1473 "./util/configparser.y" + case 376: +#line 1474 "./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) @@ -4224,11 +4231,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4235 "util/configparser.c" break; - case 376: -#line 1483 "./util/configparser.y" + case 377: +#line 1484 "./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) @@ -4237,11 +4244,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4248 "util/configparser.c" break; - case 377: -#line 1493 "./util/configparser.y" + case 378: +#line 1494 "./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) @@ -4250,11 +4257,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4261 "util/configparser.c" break; - case 378: -#line 1503 "./util/configparser.y" + case 379: +#line 1504 "./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) @@ -4263,11 +4270,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4274 "util/configparser.c" break; - case 379: -#line 1513 "./util/configparser.y" + case 380: +#line 1514 "./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) @@ -4276,11 +4283,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4287 "util/configparser.c" break; - case 380: -#line 1523 "./util/configparser.y" + case 381: +#line 1524 "./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) @@ -4289,11 +4296,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4300 "util/configparser.c" break; - case 381: -#line 1533 "./util/configparser.y" + case 382: +#line 1534 "./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) @@ -4302,11 +4309,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4313 "util/configparser.c" break; - case 382: -#line 1543 "./util/configparser.y" + case 383: +#line 1544 "./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) @@ -4315,41 +4322,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4326 "util/configparser.c" break; - case 383: -#line 1553 "./util/configparser.y" + case 384: +#line 1554 "./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 4329 "util/configparser.c" +#line 4336 "util/configparser.c" break; - case 384: -#line 1560 "./util/configparser.y" + case 385: +#line 1561 "./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 4339 "util/configparser.c" +#line 4346 "util/configparser.c" break; - case 385: -#line 1567 "./util/configparser.y" + case 386: +#line 1568 "./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 4349 "util/configparser.c" +#line 4356 "util/configparser.c" break; - case 386: -#line 1574 "./util/configparser.y" + case 387: +#line 1575 "./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) @@ -4357,11 +4364,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4368 "util/configparser.c" break; - case 387: -#line 1583 "./util/configparser.y" + case 388: +#line 1584 "./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) @@ -4369,11 +4376,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4380 "util/configparser.c" break; - case 388: -#line 1592 "./util/configparser.y" + case 389: +#line 1593 "./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) @@ -4381,11 +4388,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4392 "util/configparser.c" break; - case 389: -#line 1601 "./util/configparser.y" + case 390: +#line 1602 "./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) @@ -4393,21 +4400,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4404 "util/configparser.c" break; - case 390: -#line 1610 "./util/configparser.y" + case 391: +#line 1611 "./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 4407 "util/configparser.c" +#line 4414 "util/configparser.c" break; - case 391: -#line 1617 "./util/configparser.y" + case 392: +#line 1618 "./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) @@ -4416,11 +4423,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4420 "util/configparser.c" +#line 4427 "util/configparser.c" break; - case 392: -#line 1627 "./util/configparser.y" + case 393: +#line 1628 "./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 && @@ -4439,21 +4446,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4443 "util/configparser.c" +#line 4450 "util/configparser.c" break; - case 393: -#line 1647 "./util/configparser.y" + case 394: +#line 1648 "./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 4453 "util/configparser.c" +#line 4460 "util/configparser.c" break; - case 394: -#line 1654 "./util/configparser.y" + case 395: +#line 1655 "./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) { @@ -4470,11 +4477,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4481 "util/configparser.c" break; - case 395: -#line 1672 "./util/configparser.y" + case 396: +#line 1673 "./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) { @@ -4486,11 +4493,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4497 "util/configparser.c" break; - case 396: -#line 1685 "./util/configparser.y" + case 397: +#line 1686 "./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) { @@ -4502,11 +4509,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4513 "util/configparser.c" break; - case 397: -#line 1698 "./util/configparser.y" + case 398: +#line 1699 "./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) @@ -4514,11 +4521,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" +#line 4525 "util/configparser.c" break; - case 398: -#line 1707 "./util/configparser.y" + case 399: +#line 1708 "./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) @@ -4526,11 +4533,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" +#line 4537 "util/configparser.c" break; - case 399: -#line 1716 "./util/configparser.y" + case 400: +#line 1717 "./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) @@ -4538,11 +4545,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4549 "util/configparser.c" break; - case 400: -#line 1725 "./util/configparser.y" + case 401: +#line 1726 "./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) @@ -4550,11 +4557,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4561 "util/configparser.c" break; - case 401: -#line 1734 "./util/configparser.y" + case 402: +#line 1735 "./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) @@ -4563,11 +4570,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4574 "util/configparser.c" break; - case 402: -#line 1744 "./util/configparser.y" + case 403: +#line 1745 "./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) @@ -4576,11 +4583,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4587 "util/configparser.c" break; - case 403: -#line 1754 "./util/configparser.y" + case 404: +#line 1755 "./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) @@ -4590,11 +4597,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4601 "util/configparser.c" break; - case 404: -#line 1765 "./util/configparser.y" + case 405: +#line 1766 "./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) @@ -4602,11 +4609,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4613 "util/configparser.c" break; - case 405: -#line 1774 "./util/configparser.y" + case 406: +#line 1775 "./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) @@ -4614,11 +4621,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4625 "util/configparser.c" break; - case 406: -#line 1783 "./util/configparser.y" + case 407: +#line 1784 "./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) @@ -4626,11 +4633,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4637 "util/configparser.c" break; - case 407: -#line 1792 "./util/configparser.y" + case 408: +#line 1793 "./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) @@ -4638,11 +4645,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4649 "util/configparser.c" break; - case 408: -#line 1801 "./util/configparser.y" + case 409: +#line 1802 "./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) @@ -4650,11 +4657,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4661 "util/configparser.c" break; - case 409: -#line 1810 "./util/configparser.y" + case 410: +#line 1811 "./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) @@ -4662,11 +4669,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 4673 "util/configparser.c" break; - case 410: -#line 1819 "./util/configparser.y" + case 411: +#line 1820 "./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) @@ -4678,11 +4685,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4689 "util/configparser.c" break; - case 411: -#line 1832 "./util/configparser.y" + case 412: +#line 1833 "./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) @@ -4694,11 +4701,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 4705 "util/configparser.c" break; - case 412: -#line 1845 "./util/configparser.y" + case 413: +#line 1846 "./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) @@ -4706,21 +4713,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4717 "util/configparser.c" break; - case 413: -#line 1854 "./util/configparser.y" + case 414: +#line 1855 "./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 4720 "util/configparser.c" +#line 4727 "util/configparser.c" break; - case 414: -#line 1861 "./util/configparser.y" + case 415: +#line 1862 "./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) @@ -4728,11 +4735,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4739 "util/configparser.c" break; - case 415: -#line 1870 "./util/configparser.y" + case 416: +#line 1871 "./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) @@ -4740,11 +4747,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4751 "util/configparser.c" break; - case 416: -#line 1879 "./util/configparser.y" + case 417: +#line 1880 "./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) @@ -4752,11 +4759,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4763 "util/configparser.c" break; - case 417: -#line 1888 "./util/configparser.y" + case 418: +#line 1889 "./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) @@ -4765,22 +4772,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4776 "util/configparser.c" break; - case 418: -#line 1897 "./util/configparser.y" + case 419: +#line 1898 "./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 4780 "util/configparser.c" +#line 4787 "util/configparser.c" break; - case 419: -#line 1905 "./util/configparser.y" + case 420: +#line 1906 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4799,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4803 "util/configparser.c" break; - case 420: -#line 1918 "./util/configparser.y" + case 421: +#line 1919 "./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 4807 "util/configparser.c" +#line 4814 "util/configparser.c" break; - case 421: -#line 1926 "./util/configparser.y" + case 422: +#line 1927 "./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 && @@ -4847,21 +4854,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4851 "util/configparser.c" +#line 4858 "util/configparser.c" break; - case 422: -#line 1967 "./util/configparser.y" + case 423: +#line 1968 "./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 4861 "util/configparser.c" +#line 4868 "util/configparser.c" break; - case 423: -#line 1974 "./util/configparser.y" + case 424: +#line 1975 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4875,11 +4882,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4879 "util/configparser.c" +#line 4886 "util/configparser.c" break; - case 424: -#line 1989 "./util/configparser.y" + case 425: +#line 1990 "./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) @@ -4888,11 +4895,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4899 "util/configparser.c" break; - case 425: -#line 1999 "./util/configparser.y" + case 426: +#line 2000 "./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) @@ -4901,41 +4908,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 4912 "util/configparser.c" break; - case 426: -#line 2009 "./util/configparser.y" + case 427: +#line 2010 "./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 4915 "util/configparser.c" +#line 4922 "util/configparser.c" break; - case 427: -#line 2016 "./util/configparser.y" + case 428: +#line 2017 "./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 4925 "util/configparser.c" +#line 4932 "util/configparser.c" break; - case 428: -#line 2023 "./util/configparser.y" + case 429: +#line 2024 "./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 4935 "util/configparser.c" +#line 4942 "util/configparser.c" break; - case 429: -#line 2030 "./util/configparser.y" + case 430: +#line 2031 "./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) @@ -4943,22 +4950,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 4954 "util/configparser.c" break; - case 430: -#line 2039 "./util/configparser.y" + case 431: +#line 2040 "./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 4958 "util/configparser.c" +#line 4965 "util/configparser.c" break; - case 431: -#line 2047 "./util/configparser.y" + case 432: +#line 2048 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4971,11 +4978,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4982 "util/configparser.c" break; - case 432: -#line 2061 "./util/configparser.y" + case 433: +#line 2062 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4995,11 +5002,11 @@ yyreduce: } } } -#line 4999 "util/configparser.c" +#line 5006 "util/configparser.c" break; - case 433: -#line 2082 "./util/configparser.y" + case 434: +#line 2083 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5019,11 +5026,11 @@ yyreduce: } } } -#line 5023 "util/configparser.c" +#line 5030 "util/configparser.c" break; - case 434: -#line 2103 "./util/configparser.y" + case 435: +#line 2104 "./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, @@ -5034,11 +5041,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5038 "util/configparser.c" +#line 5045 "util/configparser.c" break; - case 435: -#line 2115 "./util/configparser.y" + case 436: +#line 2116 "./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, @@ -5049,11 +5056,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5053 "util/configparser.c" +#line 5060 "util/configparser.c" break; - case 436: -#line 2127 "./util/configparser.y" + case 437: +#line 2128 "./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, @@ -5064,11 +5071,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5068 "util/configparser.c" +#line 5075 "util/configparser.c" break; - case 437: -#line 2139 "./util/configparser.y" + case 438: +#line 2140 "./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, @@ -5076,11 +5083,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5080 "util/configparser.c" +#line 5087 "util/configparser.c" break; - case 438: -#line 2148 "./util/configparser.y" + case 439: +#line 2149 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5100,11 +5107,11 @@ yyreduce: } } } -#line 5104 "util/configparser.c" +#line 5111 "util/configparser.c" break; - case 439: -#line 2169 "./util/configparser.y" + case 440: +#line 2170 "./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) @@ -5112,11 +5119,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5123 "util/configparser.c" break; - case 440: -#line 2179 "./util/configparser.y" + case 441: +#line 2180 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5124,33 +5131,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5135 "util/configparser.c" break; - case 441: -#line 2188 "./util/configparser.y" + case 442: +#line 2189 "./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 5139 "util/configparser.c" +#line 5146 "util/configparser.c" break; - case 442: -#line 2196 "./util/configparser.y" + case 443: +#line 2197 "./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 5150 "util/configparser.c" +#line 5157 "util/configparser.c" break; - case 443: -#line 2204 "./util/configparser.y" + case 444: +#line 2205 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5162,11 +5169,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5173 "util/configparser.c" break; - case 444: -#line 2217 "./util/configparser.y" + case 445: +#line 2218 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5178,11 +5185,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5182 "util/configparser.c" +#line 5189 "util/configparser.c" break; - case 445: -#line 2230 "./util/configparser.y" + case 446: +#line 2231 "./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) { @@ -5196,11 +5203,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5200 "util/configparser.c" +#line 5207 "util/configparser.c" break; - case 446: -#line 2245 "./util/configparser.y" + case 447: +#line 2246 "./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) { @@ -5214,11 +5221,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5218 "util/configparser.c" +#line 5225 "util/configparser.c" break; - case 447: -#line 2260 "./util/configparser.y" + case 448: +#line 2261 "./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) @@ -5226,11 +5233,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5237 "util/configparser.c" break; - case 448: -#line 2269 "./util/configparser.y" + case 449: +#line 2270 "./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) @@ -5238,20 +5245,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5249 "util/configparser.c" break; - case 449: -#line 2278 "./util/configparser.y" + case 450: +#line 2279 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5258 "util/configparser.c" break; - case 450: -#line 2284 "./util/configparser.y" + case 451: +#line 2285 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5259,11 +5266,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5270 "util/configparser.c" break; - case 451: -#line 2293 "./util/configparser.y" + case 452: +#line 2294 "./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) @@ -5271,11 +5278,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5282 "util/configparser.c" break; - case 452: -#line 2302 "./util/configparser.y" + case 453: +#line 2303 "./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) @@ -5284,11 +5291,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5295 "util/configparser.c" break; - case 453: -#line 2312 "./util/configparser.y" + case 454: +#line 2313 "./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) @@ -5297,11 +5304,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5308 "util/configparser.c" break; - case 454: -#line 2322 "./util/configparser.y" + case 455: +#line 2323 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5313,11 +5320,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5324 "util/configparser.c" break; - case 455: -#line 2335 "./util/configparser.y" + case 456: +#line 2336 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5329,11 +5336,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 456: -#line 2348 "./util/configparser.y" + case 457: +#line 2349 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5344,11 +5351,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5348 "util/configparser.c" +#line 5355 "util/configparser.c" break; - case 457: -#line 2360 "./util/configparser.y" + case 458: +#line 2361 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5361,11 +5368,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5365 "util/configparser.c" +#line 5372 "util/configparser.c" break; - case 458: -#line 2374 "./util/configparser.y" + case 459: +#line 2375 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5376,11 +5383,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5380 "util/configparser.c" +#line 5387 "util/configparser.c" break; - case 459: -#line 2386 "./util/configparser.y" + case 460: +#line 2387 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5393,11 +5400,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5397 "util/configparser.c" +#line 5404 "util/configparser.c" break; - case 460: -#line 2400 "./util/configparser.y" + case 461: +#line 2401 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5406,31 +5413,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5410 "util/configparser.c" +#line 5417 "util/configparser.c" break; - case 461: -#line 2410 "./util/configparser.y" + case 462: +#line 2411 "./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 5420 "util/configparser.c" +#line 5427 "util/configparser.c" break; - case 462: -#line 2417 "./util/configparser.y" + case 463: +#line 2418 "./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 5430 "util/configparser.c" +#line 5437 "util/configparser.c" break; - case 463: -#line 2424 "./util/configparser.y" + case 464: +#line 2425 "./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) @@ -5438,11 +5445,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5442 "util/configparser.c" +#line 5449 "util/configparser.c" break; - case 464: -#line 2433 "./util/configparser.y" + case 465: +#line 2434 "./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) @@ -5450,11 +5457,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5461 "util/configparser.c" break; - case 465: -#line 2442 "./util/configparser.y" + case 466: +#line 2443 "./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) @@ -5463,11 +5470,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5474 "util/configparser.c" break; - case 466: -#line 2452 "./util/configparser.y" + case 467: +#line 2453 "./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) @@ -5476,11 +5483,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 467: -#line 2462 "./util/configparser.y" + case 468: +#line 2463 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5489,31 +5496,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5493 "util/configparser.c" +#line 5500 "util/configparser.c" break; - case 468: -#line 2472 "./util/configparser.y" + case 469: +#line 2473 "./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 5503 "util/configparser.c" +#line 5510 "util/configparser.c" break; - case 469: -#line 2479 "./util/configparser.y" + case 470: +#line 2480 "./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 5513 "util/configparser.c" +#line 5520 "util/configparser.c" break; - case 470: -#line 2486 "./util/configparser.y" + case 471: +#line 2487 "./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) @@ -5521,11 +5528,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5525 "util/configparser.c" +#line 5532 "util/configparser.c" break; - case 471: -#line 2495 "./util/configparser.y" + case 472: +#line 2496 "./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) @@ -5533,11 +5540,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5544 "util/configparser.c" break; - case 472: -#line 2504 "./util/configparser.y" + case 473: +#line 2505 "./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) @@ -5546,11 +5553,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5557 "util/configparser.c" break; - case 473: -#line 2514 "./util/configparser.y" + case 474: +#line 2515 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5559,52 +5566,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5563 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 474: -#line 2524 "./util/configparser.y" + case 475: +#line 2525 "./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 5573 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 475: -#line 2531 "./util/configparser.y" + case 476: +#line 2532 "./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 5583 "util/configparser.c" +#line 5590 "util/configparser.c" break; - case 476: -#line 2538 "./util/configparser.y" + case 477: +#line 2539 "./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 5593 "util/configparser.c" +#line 5600 "util/configparser.c" break; - case 477: -#line 2545 "./util/configparser.y" + case 478: +#line 2546 "./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 5604 "util/configparser.c" +#line 5611 "util/configparser.c" break; - case 478: -#line 2553 "./util/configparser.y" + case 479: +#line 2554 "./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) @@ -5613,11 +5620,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5624 "util/configparser.c" break; - case 479: -#line 2563 "./util/configparser.y" + case 480: +#line 2564 "./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) @@ -5626,11 +5633,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5637 "util/configparser.c" break; - case 480: -#line 2573 "./util/configparser.y" + case 481: +#line 2574 "./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) @@ -5639,11 +5646,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5650 "util/configparser.c" break; - case 481: -#line 2583 "./util/configparser.y" + case 482: +#line 2584 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5652,11 +5659,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5656 "util/configparser.c" +#line 5663 "util/configparser.c" break; - case 482: -#line 2593 "./util/configparser.y" + case 483: +#line 2594 "./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 && @@ -5694,11 +5701,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5698 "util/configparser.c" +#line 5705 "util/configparser.c" break; - case 483: -#line 2632 "./util/configparser.y" + case 484: +#line 2633 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5707,33 +5714,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5711 "util/configparser.c" +#line 5718 "util/configparser.c" break; - case 484: -#line 2642 "./util/configparser.y" + case 485: +#line 2643 "./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 5722 "util/configparser.c" +#line 5729 "util/configparser.c" break; - case 485: -#line 2650 "./util/configparser.y" + case 486: +#line 2651 "./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 5733 "util/configparser.c" +#line 5740 "util/configparser.c" break; - case 486: -#line 2658 "./util/configparser.y" + case 487: +#line 2659 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5747,11 +5754,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5751 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 487: -#line 2673 "./util/configparser.y" + case 488: +#line 2674 "./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) @@ -5759,19 +5766,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 488: -#line 2682 "./util/configparser.y" + case 489: +#line 2683 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5771 "util/configparser.c" +#line 5778 "util/configparser.c" break; - case 499: -#line 2693 "./util/configparser.y" + case 500: +#line 2694 "./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) @@ -5780,11 +5787,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5791 "util/configparser.c" break; - case 500: -#line 2703 "./util/configparser.y" + case 501: +#line 2704 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5792,79 +5799,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5803 "util/configparser.c" break; - case 501: -#line 2712 "./util/configparser.y" + case 502: +#line 2713 "./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 5806 "util/configparser.c" +#line 5813 "util/configparser.c" break; - case 502: -#line 2719 "./util/configparser.y" + case 503: +#line 2720 "./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 5816 "util/configparser.c" +#line 5823 "util/configparser.c" break; - case 503: -#line 2726 "./util/configparser.y" + case 504: +#line 2727 "./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 5826 "util/configparser.c" +#line 5833 "util/configparser.c" break; - case 504: -#line 2733 "./util/configparser.y" + case 505: +#line 2734 "./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 5836 "util/configparser.c" +#line 5843 "util/configparser.c" break; - case 505: -#line 2740 "./util/configparser.y" + case 506: +#line 2741 "./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 5846 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 506: -#line 2747 "./util/configparser.y" + case 507: +#line 2748 "./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 5856 "util/configparser.c" +#line 5863 "util/configparser.c" break; - case 507: -#line 2754 "./util/configparser.y" + case 508: +#line 2755 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5864 "util/configparser.c" +#line 5871 "util/configparser.c" break; - case 528: -#line 2774 "./util/configparser.y" + case 529: +#line 2775 "./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) @@ -5872,31 +5879,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5883 "util/configparser.c" break; - case 529: -#line 2783 "./util/configparser.y" + case 530: +#line 2784 "./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 5886 "util/configparser.c" +#line 5893 "util/configparser.c" break; - case 530: -#line 2790 "./util/configparser.y" + case 531: +#line 2791 "./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 5896 "util/configparser.c" +#line 5903 "util/configparser.c" break; - case 531: -#line 2797 "./util/configparser.y" + case 532: +#line 2798 "./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) @@ -5904,51 +5911,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5915 "util/configparser.c" break; - case 532: -#line 2806 "./util/configparser.y" + case 533: +#line 2807 "./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 5918 "util/configparser.c" +#line 5925 "util/configparser.c" break; - case 533: -#line 2813 "./util/configparser.y" + case 534: +#line 2814 "./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 5928 "util/configparser.c" +#line 5935 "util/configparser.c" break; - case 534: -#line 2820 "./util/configparser.y" + case 535: +#line 2821 "./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 5938 "util/configparser.c" +#line 5945 "util/configparser.c" break; - case 535: -#line 2827 "./util/configparser.y" + case 536: +#line 2828 "./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 5948 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 536: -#line 2834 "./util/configparser.y" + case 537: +#line 2835 "./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) @@ -5956,11 +5963,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5967 "util/configparser.c" break; - case 537: -#line 2843 "./util/configparser.y" + case 538: +#line 2844 "./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) @@ -5968,31 +5975,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 538: -#line 2852 "./util/configparser.y" + case 539: +#line 2853 "./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 5982 "util/configparser.c" +#line 5989 "util/configparser.c" break; - case 539: -#line 2859 "./util/configparser.y" + case 540: +#line 2860 "./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 5992 "util/configparser.c" +#line 5999 "util/configparser.c" break; - case 540: -#line 2866 "./util/configparser.y" + case 541: +#line 2867 "./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) @@ -6001,11 +6008,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6005 "util/configparser.c" +#line 6012 "util/configparser.c" break; - case 541: -#line 2876 "./util/configparser.y" + case 542: +#line 2877 "./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) @@ -6014,11 +6021,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6025 "util/configparser.c" break; - case 542: -#line 2886 "./util/configparser.y" + case 543: +#line 2887 "./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) @@ -6027,11 +6034,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6038 "util/configparser.c" break; - case 543: -#line 2896 "./util/configparser.y" + case 544: +#line 2897 "./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) @@ -6040,11 +6047,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 544: -#line 2906 "./util/configparser.y" + case 545: +#line 2907 "./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) @@ -6053,11 +6060,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6064 "util/configparser.c" break; - case 545: -#line 2916 "./util/configparser.y" + case 546: +#line 2917 "./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) @@ -6066,29 +6073,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6077 "util/configparser.c" break; - case 546: -#line 2926 "./util/configparser.y" + case 547: +#line 2927 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6078 "util/configparser.c" +#line 6085 "util/configparser.c" break; - case 550: -#line 2935 "./util/configparser.y" + case 551: +#line 2936 "./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 6088 "util/configparser.c" +#line 6095 "util/configparser.c" break; - case 551: -#line 2941 "./util/configparser.y" + case 552: +#line 2942 "./util/configparser.y" + { + OUTYY(("\nP(dynlib:)\n")); + } +#line 6103 "util/configparser.c" + break; + + case 556: +#line 2951 "./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 6113 "util/configparser.c" + break; + + case 557: +#line 2957 "./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) @@ -6097,21 +6122,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6126 "util/configparser.c" break; - case 552: -#line 2951 "./util/configparser.y" + case 558: +#line 2967 "./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 6111 "util/configparser.c" +#line 6136 "util/configparser.c" break; - case 553: -#line 2958 "./util/configparser.y" + case 559: +#line 2974 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6119,30 +6144,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6123 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 554: -#line 2967 "./util/configparser.y" + case 560: +#line 2983 "./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 6134 "util/configparser.c" +#line 6159 "util/configparser.c" break; - case 555: -#line 2975 "./util/configparser.y" + case 561: +#line 2991 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6142 "util/configparser.c" +#line 6167 "util/configparser.c" break; - case 568: -#line 2991 "./util/configparser.y" + case 574: +#line 3007 "./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) @@ -6150,11 +6175,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6179 "util/configparser.c" break; - case 569: -#line 3001 "./util/configparser.y" + case 575: +#line 3017 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6162,21 +6187,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6166 "util/configparser.c" +#line 6191 "util/configparser.c" break; - case 570: -#line 3010 "./util/configparser.y" + case 576: +#line 3026 "./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 6176 "util/configparser.c" +#line 6201 "util/configparser.c" break; - case 571: -#line 3017 "./util/configparser.y" + case 577: +#line 3033 "./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))) @@ -6184,21 +6209,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 6188 "util/configparser.c" +#line 6213 "util/configparser.c" break; - case 572: -#line 3026 "./util/configparser.y" + case 578: +#line 3042 "./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 6198 "util/configparser.c" +#line 6223 "util/configparser.c" break; - case 573: -#line 3033 "./util/configparser.y" + case 579: +#line 3049 "./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))) @@ -6206,22 +6231,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 6210 "util/configparser.c" +#line 6235 "util/configparser.c" break; - case 574: -#line 3042 "./util/configparser.y" + case 580: +#line 3058 "./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 6221 "util/configparser.c" +#line 6246 "util/configparser.c" break; - case 575: -#line 3050 "./util/configparser.y" + case 581: +#line 3066 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6233,22 +6258,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 6262 "util/configparser.c" break; - case 576: -#line 3063 "./util/configparser.y" + case 582: +#line 3079 "./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 6248 "util/configparser.c" +#line 6273 "util/configparser.c" break; - case 577: -#line 3071 "./util/configparser.y" + case 583: +#line 3087 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6260,19 +6285,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6289 "util/configparser.c" break; - case 578: -#line 3084 "./util/configparser.y" + case 584: +#line 3100 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6272 "util/configparser.c" +#line 6297 "util/configparser.c" break; - case 587: -#line 3095 "./util/configparser.y" + case 593: +#line 3111 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6283,11 +6308,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6287 "util/configparser.c" +#line 6312 "util/configparser.c" break; - case 588: -#line 3107 "./util/configparser.y" + case 594: +#line 3123 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6298,11 +6323,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6302 "util/configparser.c" +#line 6327 "util/configparser.c" break; - case 589: -#line 3119 "./util/configparser.y" + case 595: +#line 3135 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6313,11 +6338,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6317 "util/configparser.c" +#line 6342 "util/configparser.c" break; - case 590: -#line 3131 "./util/configparser.y" + case 596: +#line 3147 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6331,11 +6356,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6335 "util/configparser.c" +#line 6360 "util/configparser.c" break; - case 591: -#line 3146 "./util/configparser.y" + case 597: +#line 3162 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6347,11 +6372,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6376 "util/configparser.c" break; - case 592: -#line 3159 "./util/configparser.y" + case 598: +#line 3175 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6363,11 +6388,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 6392 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 599: +#line 3188 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6377,19 +6402,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6381 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 594: -#line 3183 "./util/configparser.y" + case 600: +#line 3199 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6389 "util/configparser.c" +#line 6414 "util/configparser.c" break; - case 599: -#line 3192 "./util/configparser.y" + case 605: +#line 3208 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6403,11 +6428,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6407 "util/configparser.c" +#line 6432 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 606: +#line 3223 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6446,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6425 "util/configparser.c" +#line 6450 "util/configparser.c" break; -#line 6429 "util/configparser.c" +#line 6454 "util/configparser.c" default: break; } @@ -6657,7 +6682,7 @@ yyreturn: #endif return yyresult; } -#line 3221 "./util/configparser.y" +#line 3237 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 184810a2a..66662409e 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -333,7 +333,9 @@ extern int yydebug; VAR_RPZ_ACTION_OVERRIDE = 539, VAR_RPZ_CNAME_OVERRIDE = 540, VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_RPZ_LOG_NAME = 542, + VAR_DYNLIB = 543, + VAR_DYNLIB_FILE = 544 }; #endif /* Tokens. */ @@ -622,6 +624,8 @@ extern int yydebug; #define VAR_RPZ_CNAME_OVERRIDE 540 #define VAR_RPZ_LOG 541 #define VAR_RPZ_LOG_NAME 542 +#define VAR_DYNLIB 543 +#define VAR_DYNLIB_FILE 544 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -631,7 +635,7 @@ union YYSTYPE char* str; -#line 635 "util/configparser.h" +#line 639 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; From 510e79a053d1eee94bf0548deff23b107236d82b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 15 May 2020 16:42:45 +0200 Subject: [PATCH 022/394] - For PR #93: Fix warnings for dynlibmodule. --- doc/Changelog | 1 + dynlibmod/dynlibmod.c | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index fbbe22641..86246ad6e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 15 May 2020: Wouter - Merge PR #93: Add dynamic library support. - Fixed conflicts for PR #93 and make configure, yacc, lex. + - For PR #93: Fix warnings for dynlibmodule. 15 May 2020: Ralph - Cache ECS answers with longest scope of CNAME chain. diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 5a93a7ce5..4e022a82f 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -81,7 +81,13 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - __DYNSYM initializer = __LOADSYM(dynamic_library,"init"); + __DYNSYM initializer; + __DYNSYM deinitializer; + __DYNSYM operate; + __DYNSYM inform; + __DYNSYM clear; + __DYNSYM get_mem; + initializer = __LOADSYM(dynamic_library,"init"); if (initializer == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load init procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -89,7 +95,7 @@ int dynlibmod_init(struct module_env* env, int id) { } else { de->func_init = (func_init_t) initializer; } - __DYNSYM deinitializer = __LOADSYM(dynamic_library,"deinit"); + deinitializer = __LOADSYM(dynamic_library,"deinit"); if (deinitializer == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load deinit procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -97,7 +103,7 @@ int dynlibmod_init(struct module_env* env, int id) { } else { de->func_deinit = (func_deinit_t) deinitializer; } - __DYNSYM operate = __LOADSYM(dynamic_library,"operate"); + operate = __LOADSYM(dynamic_library,"operate"); if (operate == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load operate procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -105,7 +111,7 @@ int dynlibmod_init(struct module_env* env, int id) { } else { de->func_operate = (func_operate_t) operate; } - __DYNSYM inform = __LOADSYM(dynamic_library,"inform_super"); + inform = __LOADSYM(dynamic_library,"inform_super"); if (inform == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load inform_super procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -113,7 +119,7 @@ int dynlibmod_init(struct module_env* env, int id) { } else { de->func_inform = (func_inform_t) inform; } - __DYNSYM clear = __LOADSYM(dynamic_library,"clear"); + clear = __LOADSYM(dynamic_library,"clear"); if (clear == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load clear procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -121,7 +127,7 @@ int dynlibmod_init(struct module_env* env, int id) { } else { de->func_clear = (func_clear_t) clear; } - __DYNSYM get_mem = __LOADSYM(dynamic_library,"get_mem"); + get_mem = __LOADSYM(dynamic_library,"get_mem"); if (get_mem == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load get_mem procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -171,11 +177,12 @@ void dynlibmod_clear(struct module_qstate* qstate, int id) { /** dynlib module alloc size routine */ size_t dynlibmod_get_mem(struct module_env* env, int id) { struct dynlibmod_env* de = (struct dynlibmod_env*)env->modinfo[id]; + size_t size; verbose(VERB_ALGO, "dynlibmod: get_mem, id: %d, de:%p", id, de); if(!de) return 0; - size_t size = de->func_get_mem(env, id); + size = de->func_get_mem(env, id); return size + sizeof(*de); } @@ -185,7 +192,7 @@ int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, struct comm_reply* repinfo, struct regional* region, int id, void* callback) { struct cb_pair* cb_pair = (struct cb_pair*) callback; - ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, id, cb_pair->cb_arg); + return ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, id, cb_pair->cb_arg); } int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, @@ -193,19 +200,19 @@ int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct regional* region, int id, void* callback) { struct cb_pair* cb_pair = (struct cb_pair*) callback; - ((inplace_cb_query_func_type*) cb_pair->cb)(qinfo, flags, qstate, addr, addrlen, zone, zonelen, region, id, cb_pair->cb_arg); + return ((inplace_cb_query_func_type*) cb_pair->cb)(qinfo, flags, qstate, addr, addrlen, zone, zonelen, region, id, cb_pair->cb_arg); } int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate, int id, void* cb_args) { struct cb_pair* cb_pair = (struct cb_pair*) cb_args; - ((inplace_cb_edns_back_parsed_func_type*) cb_pair->cb)(qstate, id, cb_pair->cb_arg); + return ((inplace_cb_edns_back_parsed_func_type*) cb_pair->cb)(qstate, id, cb_pair->cb_arg); } int dynlib_inplace_cb_query_response(struct module_qstate* qstate, struct dns_msg* response, int id, void* cb_args) { struct cb_pair* cb_pair = (struct cb_pair*) cb_args; - ((inplace_cb_query_response_func_type*) cb_pair->cb)(qstate, response, id, cb_pair->cb_arg); + return ((inplace_cb_query_response_func_type*) cb_pair->cb)(qstate, response, id, cb_pair->cb_arg); } int From 01db6c365c1845f9f6370ce5a7ad066f40b00c52 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 May 2020 10:11:16 +0200 Subject: [PATCH 023/394] - For PR #93: dynlibmod can handle reloads and deinit and inits again, with dlclose and dlopen of the library again. Also for multiple modules. Fix memory leak by not closing dlopened content. Fix to allow one dynlibmod instance by unbound-checkconf. --- doc/Changelog | 6 +++++ dynlibmod/dynlibmod.c | 19 +++++++++++++- dynlibmod/dynlibmod.h | 2 ++ smallapp/unbound-checkconf.c | 48 ++++++++++++++++++++++++++++++++++++ 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 86246ad6e..637b31368 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +18 May 2020: Wouter + - For PR #93: dynlibmod can handle reloads and deinit and inits again, + with dlclose and dlopen of the library again. Also for multiple + modules. Fix memory leak by not closing dlopened content. Fix + to allow one dynlibmod instance by unbound-checkconf. + 15 May 2020: Wouter - Merge PR #93: Add dynamic library support. - Fixed conflicts for PR #93 and make configure, yacc, lex. diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 4e022a82f..6ae23e86c 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -34,6 +34,11 @@ void log_dlerror() { HMODULE open_library(const char* fname) { return LoadLibrary(fname); } + +void close_library(const char* fname, __DYNMOD handle) { + (void)fname; + (void)handle; +} #else #include #define __DYNMOD void* @@ -46,11 +51,20 @@ void log_dlerror() { void* open_library(const char* fname) { return dlopen(fname, RTLD_LAZY | RTLD_GLOBAL); } + +void close_library(const char* fname, __DYNMOD handle) { + if(!handle) return; + if(dlclose(handle) != 0) { + log_err("dlclose %s: %s", fname, strerror(errno)); + } +} #endif +/** module counter for multiple dynlib modules */ +static int dynlib_mod_count = 0; + /** dynlib module init */ int dynlibmod_init(struct module_env* env, int id) { - static int dynlib_mod_count; int dynlib_mod_idx = dynlib_mod_count++; struct config_strlist* cfg_item = env->cfg->dynlib_file; struct dynlibmod_env* de = (struct dynlibmod_env*)calloc(1, sizeof(struct dynlibmod_env)); @@ -76,6 +90,7 @@ int dynlibmod_init(struct module_env* env, int id) { } verbose(VERB_ALGO, "dynlibmod[%d]: Trying to load library %s", dynlib_mod_idx, de->fname); dynamic_library = open_library(de->fname); + de->dynamic_library = (void*)dynamic_library; if (dynamic_library == NULL) { log_dlerror(); log_err("dynlibmod[%d]: unable to load dynamic library \"%s\".", dynlib_mod_idx, de->fname); @@ -147,6 +162,8 @@ void dynlibmod_deinit(struct module_env* env, int id) { if(de == NULL) return; de->func_deinit(env, id); + close_library(de->fname, (__DYNMOD)de->dynamic_library); + dynlib_mod_count--; de->fname = NULL; free(de); } diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index 1097db1e7..c34cf0e88 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -114,6 +114,8 @@ typedef int (*inplace_cb_register_wrapped_t)(void*, enum inplace_cb_list_type, v struct dynlibmod_env { /** Dynamic library filename. */ const char* fname; + /** dynamic library handle */ + void* dynamic_library; /** Module init function */ func_init_t func_init; /** Module deinit function */ diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 3fc638cae..77c558981 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -569,6 +569,54 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "python dns64 iterator") != 0 && strcmp(cfg->module_conf, "python dns64 validator iterator") != 0 #endif +#ifdef WITH_DYNLIBMODULE + && strcmp(cfg->module_conf, "dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip iterator") != 0 + && strcmp(cfg->module_conf, "dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip validator iterator") != 0 + && strcmp(cfg->module_conf, "validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dns64 validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dns64 validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dns64 dynlib validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip validator cachedb iterator") != 0 + && strcmp(cfg->module_conf, "cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "validator cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip validator cachedb dynlib iterator") != 0 + && strcmp(cfg->module_conf, "validator dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "respip validator dynlib cachedb iterator") != 0 + && strcmp(cfg->module_conf, "dynlib subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip subnetcache iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib respip subnetcache validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "subnetcache validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "respip subnetcache validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod respip iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib respip iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod respip validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib ipsecmod respip validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod dynlib respip validator iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod validator dynlib iterator") != 0 + && strcmp(cfg->module_conf, "ipsecmod respip validator dynlib iterator") != 0 +#endif #ifdef USE_CACHEDB && strcmp(cfg->module_conf, "validator cachedb iterator") != 0 && strcmp(cfg->module_conf, "respip validator cachedb iterator") != 0 From 84e95d6c6825191ea920485f53d3611d2c279e82 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 May 2020 10:16:40 +0200 Subject: [PATCH 024/394] - For PR #93: checkconf allow multiple dynlib in module-config, for a couple cases. --- doc/Changelog | 2 ++ smallapp/unbound-checkconf.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 637b31368..f16e6d63d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ with dlclose and dlopen of the library again. Also for multiple modules. Fix memory leak by not closing dlopened content. Fix to allow one dynlibmod instance by unbound-checkconf. + - For PR #93: checkconf allow multiple dynlib in module-config, for + a couple cases. 15 May 2020: Wouter - Merge PR #93: Add dynamic library support. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 77c558981..97cacc012 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -571,8 +571,12 @@ morechecks(struct config_file* cfg) #endif #ifdef WITH_DYNLIBMODULE && strcmp(cfg->module_conf, "dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib dynlib iterator") != 0 && strcmp(cfg->module_conf, "dynlib respip iterator") != 0 && strcmp(cfg->module_conf, "dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "dynlib dynlib dynlib validator iterator") != 0 && strcmp(cfg->module_conf, "dynlib respip validator iterator") != 0 && strcmp(cfg->module_conf, "validator dynlib iterator") != 0 && strcmp(cfg->module_conf, "dns64 dynlib iterator") != 0 From a77ebed5504a8815795bed406d8a68adf8d99a57 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 May 2020 10:18:28 +0200 Subject: [PATCH 025/394] - For PR #93: checkconf allows python dynlib in module-config, for a couple cases. --- doc/Changelog | 4 +++- smallapp/unbound-checkconf.c | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index f16e6d63d..5413eb7fa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,7 +3,9 @@ with dlclose and dlopen of the library again. Also for multiple modules. Fix memory leak by not closing dlopened content. Fix to allow one dynlibmod instance by unbound-checkconf. - - For PR #93: checkconf allow multiple dynlib in module-config, for + - For PR #93: checkconf allows multiple dynlib in module-config, for + a couple cases. + - For PR #93: checkconf allows python dynlib in module-config, for a couple cases. 15 May 2020: Wouter diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 97cacc012..54a0ab78c 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -573,10 +573,16 @@ morechecks(struct config_file* cfg) && strcmp(cfg->module_conf, "dynlib iterator") != 0 && strcmp(cfg->module_conf, "dynlib dynlib iterator") != 0 && strcmp(cfg->module_conf, "dynlib dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib dynlib iterator") != 0 && strcmp(cfg->module_conf, "dynlib respip iterator") != 0 && strcmp(cfg->module_conf, "dynlib validator iterator") != 0 && strcmp(cfg->module_conf, "dynlib dynlib validator iterator") != 0 && strcmp(cfg->module_conf, "dynlib dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib validator iterator") != 0 + && strcmp(cfg->module_conf, "python dynlib dynlib dynlib validator iterator") != 0 && strcmp(cfg->module_conf, "dynlib respip validator iterator") != 0 && strcmp(cfg->module_conf, "validator dynlib iterator") != 0 && strcmp(cfg->module_conf, "dns64 dynlib iterator") != 0 From a238f35d7d87cb88906077733e04cbfe094cba76 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 May 2020 10:22:00 +0200 Subject: [PATCH 026/394] - For PR #93: man page spelling reference fix. --- doc/Changelog | 1 + doc/unbound.conf.5.in | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 5413eb7fa..31ce01dea 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ a couple cases. - For PR #93: checkconf allows python dynlib in module-config, for a couple cases. + - For PR #93: man page spelling reference fix. 15 May 2020: Wouter - Merge PR #93: Add dynamic library support. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 03305ddd4..2f2733773 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1836,7 +1836,7 @@ added to the \fBmodule\-config:\fR option. .LP The .B dynlib: -clause gives the settings for the \fIdynlib\fR(1) module. This module is only +clause gives the settings for the \fIdynlib\fR module. This module is only a very small wrapper that allows dynamic modules to be loaded on runtime instead of being compiled into the application. To enable the dynlib module it has to be compiled into the daemon, and the word "dynlib" has to be put in the From 4ccac696caf8826995c9db78af6074a5a1381f00 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 May 2020 17:26:01 +0200 Subject: [PATCH 027/394] - For PR #93: fix link of other executables for dynlibmod dependency. --- Makefile.in | 22 +++++++++++----------- doc/Changelog | 1 + 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Makefile.in b/Makefile.in index 029b4d3b3..bac212df2 100644 --- a/Makefile.in +++ b/Makefile.in @@ -343,10 +343,10 @@ unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) @@ -364,34 +364,34 @@ anchor-update$(EXEEXT): $(ANCHORUPD_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) unittest$(EXEEXT): $(UNITTEST_OBJ_LINK) - $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) testbound$(EXEEXT): $(TESTBOUND_OBJ_LINK) - $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) lock-verify$(EXEEXT): $(LOCKVERIFY_OBJ_LINK) - $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) petal$(EXEEXT): $(PETAL_OBJ_LINK) $(LINK) -o $@ $(PETAL_OBJ_LINK) $(SSLLIB) $(LIBS) pktview$(EXEEXT): $(PKTVIEW_OBJ_LINK) - $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) - $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) - $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) perf$(EXEEXT): $(PERF_OBJ_LINK) - $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) - $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) signit$(EXEEXT): testcode/signit.c $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) @@ -414,7 +414,7 @@ dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h: $(srcdir)/dnstap/dnstap.proto $(PROTOC_C) --c_out=. --proto_path=$(srcdir) $(srcdir)/dnstap/dnstap.proto unbound-dnstap-socket$(EXEEXT): $(DNSTAP_SOCKET_OBJ_LINK) - $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h diff --git a/doc/Changelog b/doc/Changelog index 31ce01dea..91e69e3f4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ - For PR #93: checkconf allows python dynlib in module-config, for a couple cases. - For PR #93: man page spelling reference fix. + - For PR #93: fix link of other executables for dynlibmod dependency. 15 May 2020: Wouter - Merge PR #93: Add dynamic library support. From ba0f382eee814e56900a535778d13206b86b6d49 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 19 May 2020 10:27:27 +0200 Subject: [PATCH 028/394] - CVE-2020-12662 Unbound can be tricked into amplifying an incoming query into a large number of queries directed to a target. - CVE-2020-12663 Malformed answers from upstream name servers can be used to make Unbound unresponsive. --- doc/Changelog | 6 ++ iterator/iter_delegpt.c | 51 ++++++++------ iterator/iter_delegpt.h | 28 ++++++-- iterator/iter_scrub.c | 24 +++++-- iterator/iter_utils.c | 4 +- iterator/iterator.c | 153 ++++++++++++++++++++++++++++++++-------- iterator/iterator.h | 12 +++- services/cache/dns.c | 10 +-- util/data/dname.c | 30 ++++++++ util/data/msgparse.c | 6 +- 10 files changed, 252 insertions(+), 72 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 91e69e3f4..223b13b90 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +19 May 2020: Wouter + - CVE-2020-12662 Unbound can be tricked into amplifying an incoming + query into a large number of queries directed to a target. + - CVE-2020-12663 Malformed answers from upstream name servers can be + used to make Unbound unresponsive. + 18 May 2020: Wouter - For PR #93: dynlibmod can handle reloads and deinit and inits again, with dlclose and dlopen of the library again. Also for multiple diff --git a/iterator/iter_delegpt.c b/iterator/iter_delegpt.c index f88b3e115..9a672b0af 100644 --- a/iterator/iter_delegpt.c +++ b/iterator/iter_delegpt.c @@ -84,7 +84,7 @@ struct delegpt* delegpt_copy(struct delegpt* dp, struct regional* region) } for(a = dp->target_list; a; a = a->next_target) { if(!delegpt_add_addr(copy, region, &a->addr, a->addrlen, - a->bogus, a->lame, a->tls_auth_name)) + a->bogus, a->lame, a->tls_auth_name, NULL)) return NULL; } return copy; @@ -161,7 +161,7 @@ delegpt_find_addr(struct delegpt* dp, struct sockaddr_storage* addr, int delegpt_add_target(struct delegpt* dp, struct regional* region, uint8_t* name, size_t namelen, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame) + socklen_t addrlen, uint8_t bogus, uint8_t lame, int* additions) { struct delegpt_ns* ns = delegpt_find_ns(dp, name, namelen); log_assert(!dp->dp_type_mlc); @@ -176,13 +176,14 @@ delegpt_add_target(struct delegpt* dp, struct regional* region, if(ns->got4 && ns->got6) ns->resolved = 1; } - return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL); + return delegpt_add_addr(dp, region, addr, addrlen, bogus, lame, NULL, + additions); } int delegpt_add_addr(struct delegpt* dp, struct regional* region, struct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus, - uint8_t lame, char* tls_auth_name) + uint8_t lame, char* tls_auth_name, int* additions) { struct delegpt_addr* a; log_assert(!dp->dp_type_mlc); @@ -194,6 +195,8 @@ delegpt_add_addr(struct delegpt* dp, struct regional* region, a->lame = 0; return 1; } + if(additions) + *additions = 1; a = (struct delegpt_addr*)regional_alloc(region, sizeof(struct delegpt_addr)); @@ -382,10 +385,10 @@ delegpt_from_message(struct dns_msg* msg, struct regional* region) continue; if(ntohs(s->rk.type) == LDNS_RR_TYPE_A) { - if(!delegpt_add_rrset_A(dp, region, s, 0)) + if(!delegpt_add_rrset_A(dp, region, s, 0, NULL)) return NULL; } else if(ntohs(s->rk.type) == LDNS_RR_TYPE_AAAA) { - if(!delegpt_add_rrset_AAAA(dp, region, s, 0)) + if(!delegpt_add_rrset_AAAA(dp, region, s, 0, NULL)) return NULL; } } @@ -416,7 +419,7 @@ delegpt_rrset_add_ns(struct delegpt* dp, struct regional* region, int delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* ak, uint8_t lame) + struct ub_packed_rrset_key* ak, uint8_t lame, int* additions) { struct packed_rrset_data* d=(struct packed_rrset_data*)ak->entry.data; size_t i; @@ -432,7 +435,7 @@ delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, memmove(&sa.sin_addr, d->rr_data[i]+2, INET_SIZE); if(!delegpt_add_target(dp, region, ak->rk.dname, ak->rk.dname_len, (struct sockaddr_storage*)&sa, - len, (d->security==sec_status_bogus), lame)) + len, (d->security==sec_status_bogus), lame, additions)) return 0; } return 1; @@ -440,7 +443,7 @@ delegpt_add_rrset_A(struct delegpt* dp, struct regional* region, int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* ak, uint8_t lame) + struct ub_packed_rrset_key* ak, uint8_t lame, int* additions) { struct packed_rrset_data* d=(struct packed_rrset_data*)ak->entry.data; size_t i; @@ -456,7 +459,7 @@ delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, memmove(&sa.sin6_addr, d->rr_data[i]+2, INET6_SIZE); if(!delegpt_add_target(dp, region, ak->rk.dname, ak->rk.dname_len, (struct sockaddr_storage*)&sa, - len, (d->security==sec_status_bogus), lame)) + len, (d->security==sec_status_bogus), lame, additions)) return 0; } return 1; @@ -464,20 +467,33 @@ delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region, int delegpt_add_rrset(struct delegpt* dp, struct regional* region, - struct ub_packed_rrset_key* rrset, uint8_t lame) + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions) { if(!rrset) return 1; if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_NS) return delegpt_rrset_add_ns(dp, region, rrset, lame); else if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_A) - return delegpt_add_rrset_A(dp, region, rrset, lame); + return delegpt_add_rrset_A(dp, region, rrset, lame, additions); else if(ntohs(rrset->rk.type) == LDNS_RR_TYPE_AAAA) - return delegpt_add_rrset_AAAA(dp, region, rrset, lame); + return delegpt_add_rrset_AAAA(dp, region, rrset, lame, + additions); log_warn("Unknown rrset type added to delegpt"); return 1; } +void delegpt_mark_neg(struct delegpt_ns* ns, uint16_t qtype) +{ + if(ns) { + if(qtype == LDNS_RR_TYPE_A) + ns->got4 = 2; + else if(qtype == LDNS_RR_TYPE_AAAA) + ns->got6 = 2; + if(ns->got4 && ns->got6) + ns->resolved = 1; + } +} + void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry* msg) { struct reply_info* rep = (struct reply_info*)msg->entry.data; @@ -487,14 +503,7 @@ void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry* msg) if(FLAGS_GET_RCODE(rep->flags) != 0 || rep->an_numrrsets == 0) { struct delegpt_ns* ns = delegpt_find_ns(dp, msg->key.qname, msg->key.qname_len); - if(ns) { - if(msg->key.qtype == LDNS_RR_TYPE_A) - ns->got4 = 1; - else if(msg->key.qtype == LDNS_RR_TYPE_AAAA) - ns->got6 = 1; - if(ns->got4 && ns->got6) - ns->resolved = 1; - } + delegpt_mark_neg(ns, msg->key.qtype); } } diff --git a/iterator/iter_delegpt.h b/iterator/iter_delegpt.h index 6c0882645..138eb6e1b 100644 --- a/iterator/iter_delegpt.h +++ b/iterator/iter_delegpt.h @@ -106,9 +106,10 @@ struct delegpt_ns { * and marked true if got4 and got6 are both true. */ int resolved; - /** if the ipv4 address is in the delegpt */ + /** if the ipv4 address is in the delegpt, 0=not, 1=yes 2=negative, + * negative means it was done, but no content. */ uint8_t got4; - /** if the ipv6 address is in the delegpt */ + /** if the ipv6 address is in the delegpt, 0=not, 1=yes 2=negative */ uint8_t got6; /** * If the name is parent-side only and thus dispreferred. @@ -215,11 +216,12 @@ int delegpt_rrset_add_ns(struct delegpt* dp, struct regional* regional, * @param addrlen: the length of addr. * @param bogus: security status for the address, pass true if bogus. * @param lame: address is lame. + * @param additions: will be set to 1 if a new address is added * @return false on error. */ int delegpt_add_target(struct delegpt* dp, struct regional* regional, uint8_t* name, size_t namelen, struct sockaddr_storage* addr, - socklen_t addrlen, uint8_t bogus, uint8_t lame); + socklen_t addrlen, uint8_t bogus, uint8_t lame, int* additions); /** * Add A RRset to delegpt. @@ -227,10 +229,11 @@ int delegpt_add_target(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset A to add. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset_A(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add AAAA RRset to delegpt. @@ -238,10 +241,11 @@ int delegpt_add_rrset_A(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset AAAA to add. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add any RRset to delegpt. @@ -250,10 +254,11 @@ int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* regional, * @param regional: where to allocate the info. * @param rrset: RRset to add, NS, A, AAAA. * @param lame: rrset is lame, disprefer it. + * @param additions: will be set to 1 if a new address is added * @return 0 on alloc error. */ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, - struct ub_packed_rrset_key* rrset, uint8_t lame); + struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions); /** * Add address to the delegation point. No servername is associated or checked. @@ -264,11 +269,12 @@ int delegpt_add_rrset(struct delegpt* dp, struct regional* regional, * @param bogus: if address is bogus. * @param lame: if address is lame. * @param tls_auth_name: TLS authentication name (or NULL). + * @param additions: will be set to 1 if a new address is added * @return false on error. */ int delegpt_add_addr(struct delegpt* dp, struct regional* regional, struct sockaddr_storage* addr, socklen_t addrlen, - uint8_t bogus, uint8_t lame, char* tls_auth_name); + uint8_t bogus, uint8_t lame, char* tls_auth_name, int* additions); /** * Find NS record in name list of delegation point. @@ -341,6 +347,14 @@ size_t delegpt_count_targets(struct delegpt* dp); struct delegpt* delegpt_from_message(struct dns_msg* msg, struct regional* regional); +/** + * Mark negative return in delegation point for specific nameserver. + * sets the got4 or got6 to negative, updates the ns->resolved. + * @param ns: the nameserver in the delegpt. + * @param qtype: A or AAAA (host order). + */ +void delegpt_mark_neg(struct delegpt_ns* ns, uint16_t qtype); + /** * Add negative message to delegation point. * @param dp: delegation point. diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c index cceec3d56..aae934dd4 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c @@ -185,8 +185,9 @@ mark_additional_rrset(sldns_buffer* pkt, struct msg_parse* msg, /** Get target name of a CNAME */ static int parse_get_cname_target(struct rrset_parse* rrset, uint8_t** sname, - size_t* snamelen) + size_t* snamelen, sldns_buffer* pkt) { + size_t oldpos, dlen; if(rrset->rr_count != 1) { struct rr_parse* sig; verbose(VERB_ALGO, "Found CNAME rrset with " @@ -204,6 +205,19 @@ parse_get_cname_target(struct rrset_parse* rrset, uint8_t** sname, *sname = rrset->rr_first->ttl_data + sizeof(uint32_t) + sizeof(uint16_t); /* skip ttl, rdatalen */ *snamelen = rrset->rr_first->size - sizeof(uint16_t); + + if(rrset->rr_first->outside_packet) { + if(!dname_valid(*sname, *snamelen)) + return 0; + return 1; + } + oldpos = sldns_buffer_position(pkt); + sldns_buffer_set_position(pkt, (size_t)(*sname - sldns_buffer_begin(pkt))); + dlen = pkt_dname_len(pkt); + sldns_buffer_set_position(pkt, oldpos); + if(dlen == 0) + return 0; /* parse fail on the rdata name */ + *snamelen = dlen; return 1; } @@ -215,7 +229,7 @@ synth_cname(uint8_t* qname, size_t qnamelen, struct rrset_parse* dname_rrset, /* we already know that sname is a strict subdomain of DNAME owner */ uint8_t* dtarg = NULL; size_t dtarglen; - if(!parse_get_cname_target(dname_rrset, &dtarg, &dtarglen)) + if(!parse_get_cname_target(dname_rrset, &dtarg, &dtarglen, pkt)) return 0; if(qnamelen <= dname_rrset->dname_len) return 0; @@ -388,7 +402,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, /* check next cname */ uint8_t* t = NULL; size_t tlen = 0; - if(!parse_get_cname_target(nx, &t, &tlen)) + if(!parse_get_cname_target(nx, &t, &tlen, pkt)) return 0; if(dname_pkt_compare(pkt, alias, t) == 0) { /* it's OK and better capitalized */ @@ -439,7 +453,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, size_t tlen = 0; if(synth_cname(sname, snamelen, nx, alias, &aliaslen, pkt) && - parse_get_cname_target(rrset, &t, &tlen) && + parse_get_cname_target(rrset, &t, &tlen, pkt) && dname_pkt_compare(pkt, alias, t) == 0) { /* the synthesized CNAME equals the * current CNAME. This CNAME is the @@ -460,7 +474,7 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, } /* move to next name in CNAME chain */ - if(!parse_get_cname_target(rrset, &sname, &snamelen)) + if(!parse_get_cname_target(rrset, &sname, &snamelen, pkt)) return 0; prev = rrset; rrset = rrset->rrset_all_next; diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index c726ba6b3..7bc67da69 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -1199,7 +1199,7 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, log_rrset_key(VERB_ALGO, "found parent-side", akey); ns->done_pside4 = 1; /* a negative-cache-element has no addresses it adds */ - if(!delegpt_add_rrset_A(dp, region, akey, 1)) + if(!delegpt_add_rrset_A(dp, region, akey, 1, NULL)) log_err("malloc failure in lookup_parent_glue"); lock_rw_unlock(&akey->entry.lock); } @@ -1211,7 +1211,7 @@ int iter_lookup_parent_glue_from_cache(struct module_env* env, log_rrset_key(VERB_ALGO, "found parent-side", akey); ns->done_pside6 = 1; /* a negative-cache-element has no addresses it adds */ - if(!delegpt_add_rrset_AAAA(dp, region, akey, 1)) + if(!delegpt_add_rrset_AAAA(dp, region, akey, 1, NULL)) log_err("malloc failure in lookup_parent_glue"); lock_rw_unlock(&akey->entry.lock); } diff --git a/iterator/iterator.c b/iterator/iterator.c index eea2f2fb2..23b07ea90 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -72,6 +72,8 @@ /* in msec */ int UNKNOWN_SERVER_NICENESS = 376; +static void target_count_increase_nx(struct iter_qstate* iq, int num); + int iter_init(struct module_env* env, int id) { @@ -150,6 +152,7 @@ iter_new(struct module_qstate* qstate, int id) iq->sent_count = 0; iq->ratelimit_ok = 0; iq->target_count = NULL; + iq->dp_target_count = 0; iq->wait_priming_stub = 0; iq->refetch_glue = 0; iq->dnssec_expected = 0; @@ -221,6 +224,7 @@ final_state(struct iter_qstate* iq) static void error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) { + struct iter_env* ie = (struct iter_env*)qstate->env->modinfo[id]; struct iter_qstate* super_iq = (struct iter_qstate*)super->minfo[id]; if(qstate->qinfo.qtype == LDNS_RR_TYPE_A || @@ -246,7 +250,11 @@ error_supers(struct module_qstate* qstate, int id, struct module_qstate* super) super->region, super_iq->dp)) log_err("out of memory adding missing"); } + delegpt_mark_neg(dpns, qstate->qinfo.qtype); dpns->resolved = 1; /* mark as failed */ + if((dpns->got4 == 2 || !ie->supports_ipv4) && + (dpns->got6 == 2 || !ie->supports_ipv6)) + target_count_increase_nx(super_iq, 1); } if(qstate->qinfo.qtype == LDNS_RR_TYPE_NS) { /* prime failed to get delegation */ @@ -621,7 +629,7 @@ static void target_count_create(struct iter_qstate* iq) { if(!iq->target_count) { - iq->target_count = (int*)calloc(2, sizeof(int)); + iq->target_count = (int*)calloc(3, sizeof(int)); /* if calloc fails we simply do not track this number */ if(iq->target_count) iq->target_count[0] = 1; @@ -634,6 +642,15 @@ target_count_increase(struct iter_qstate* iq, int num) target_count_create(iq); if(iq->target_count) iq->target_count[1] += num; + iq->dp_target_count++; +} + +static void +target_count_increase_nx(struct iter_qstate* iq, int num) +{ + target_count_create(iq); + if(iq->target_count) + iq->target_count[2] += num; } /** @@ -656,13 +673,15 @@ target_count_increase(struct iter_qstate* iq, int num) * @param subq_ret: if newly allocated, the subquerystate, or NULL if it does * not need initialisation. * @param v: if true, validation is done on the subquery. + * @param detached: true if this qstate should not attach to the subquery * @return false on error (malloc). */ static int generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, uint16_t qclass, struct module_qstate* qstate, int id, struct iter_qstate* iq, enum iter_state initial_state, - enum iter_state finalstate, struct module_qstate** subq_ret, int v) + enum iter_state finalstate, struct module_qstate** subq_ret, int v, + int detached) { struct module_qstate* subq = NULL; struct iter_qstate* subiq = NULL; @@ -689,11 +708,23 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, valrec = 1; } - /* attach subquery, lookup existing or make a new one */ - fptr_ok(fptr_whitelist_modenv_attach_sub(qstate->env->attach_sub)); - if(!(*qstate->env->attach_sub)(qstate, &qinf, qflags, prime, valrec, - &subq)) { - return 0; + if(detached) { + struct mesh_state* sub = NULL; + fptr_ok(fptr_whitelist_modenv_add_sub( + qstate->env->add_sub)); + if(!(*qstate->env->add_sub)(qstate, &qinf, + qflags, prime, valrec, &subq, &sub)){ + return 0; + } + } + else { + /* attach subquery, lookup existing or make a new one */ + fptr_ok(fptr_whitelist_modenv_attach_sub( + qstate->env->attach_sub)); + if(!(*qstate->env->attach_sub)(qstate, &qinf, qflags, prime, + valrec, &subq)) { + return 0; + } } *subq_ret = subq; if(subq) { @@ -716,6 +747,7 @@ generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t qtype, subiq->target_count = iq->target_count; if(iq->target_count) iq->target_count[0] ++; /* extra reference */ + subiq->dp_target_count = 0; subiq->num_current_queries = 0; subiq->depth = iq->depth+1; outbound_list_init(&subiq->outlist); @@ -759,7 +791,7 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id, * the normal INIT state logic (which would cause an infloop). */ if(!generate_sub_request((uint8_t*)"\000", 1, LDNS_RR_TYPE_NS, qclass, qstate, id, iq, QUERYTARGETS_STATE, PRIME_RESP_STATE, - &subq, 0)) { + &subq, 0, 0)) { verbose(VERB_ALGO, "could not prime root"); return 0; } @@ -850,7 +882,7 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id, * redundant INIT state processing. */ if(!generate_sub_request(stub_dp->name, stub_dp->namelen, LDNS_RR_TYPE_NS, qclass, qstate, id, iq, - QUERYTARGETS_STATE, PRIME_RESP_STATE, &subq, 0)) { + QUERYTARGETS_STATE, PRIME_RESP_STATE, &subq, 0, 0)) { verbose(VERB_ALGO, "could not prime stub"); errinf(qstate, "could not generate lookup for stub prime"); (void)error_response(qstate, id, LDNS_RCODE_SERVFAIL); @@ -1025,7 +1057,7 @@ generate_a_aaaa_check(struct module_qstate* qstate, struct iter_qstate* iq, if(!generate_sub_request(s->rk.dname, s->rk.dname_len, ntohs(s->rk.type), ntohs(s->rk.rrset_class), qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate addr check"); return; } @@ -1069,7 +1101,7 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id) iq->dp->name, LDNS_RR_TYPE_NS, iq->qchase.qclass); if(!generate_sub_request(iq->dp->name, iq->dp->namelen, LDNS_RR_TYPE_NS, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate ns check"); return; } @@ -1126,7 +1158,7 @@ generate_dnskey_prefetch(struct module_qstate* qstate, iq->dp->name, LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass); if(!generate_sub_request(iq->dp->name, iq->dp->namelen, LDNS_RR_TYPE_DNSKEY, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) { /* we'll be slower, but it'll work */ verbose(VERB_ALGO, "could not generate dnskey prefetch"); return; @@ -1315,6 +1347,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, iq->refetch_glue = 0; iq->query_restart_count++; iq->sent_count = 0; + iq->dp_target_count = 0; sock_list_insert(&qstate->reply_origin, NULL, 0, qstate->region); if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; @@ -1693,7 +1726,7 @@ generate_parentside_target_query(struct module_qstate* qstate, { struct module_qstate* subq; if(!generate_sub_request(name, namelen, qtype, qclass, qstate, - id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) + id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) return 0; if(subq) { struct iter_qstate* subiq = @@ -1744,7 +1777,7 @@ generate_target_query(struct module_qstate* qstate, struct iter_qstate* iq, { struct module_qstate* subq; if(!generate_sub_request(name, namelen, qtype, qclass, qstate, - id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) + id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) return 0; log_nametypeclass(VERB_QUERY, "new target", name, qtype, qclass); return 1; @@ -1783,6 +1816,14 @@ query_for_targets(struct module_qstate* qstate, struct iter_qstate* iq, "number of glue fetches %d", s, iq->target_count[1]); return 0; } + if(iq->dp_target_count > MAX_DP_TARGET_COUNT) { + char s[LDNS_MAX_DOMAINLEN+1]; + dname_str(qstate->qinfo.qname, s); + verbose(VERB_QUERY, "request %s has exceeded the maximum " + "number of glue fetches %d to a single delegation point", + s, iq->dp_target_count); + return 0; + } iter_mark_cycle_targets(qstate, iq->dp); missing = (int)delegpt_count_missing_targets(iq->dp); @@ -1896,7 +1937,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, for(a = p->target_list; a; a=a->next_target) { (void)delegpt_add_addr(iq->dp, qstate->region, &a->addr, a->addrlen, a->bogus, - a->lame, a->tls_auth_name); + a->lame, a->tls_auth_name, NULL); } } iq->dp->has_parent_side_NS = 1; @@ -1913,6 +1954,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq, iq->refetch_glue = 1; iq->query_restart_count++; iq->sent_count = 0; + iq->dp_target_count = 0; if(qstate->env->cfg->qname_minimisation) iq->minimisation_state = INIT_MINIMISE_STATE; return next_state(iq, INIT_REQUEST_STATE); @@ -2078,7 +2120,7 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) iq->dsns_point, LDNS_RR_TYPE_NS, iq->qchase.qclass); if(!generate_sub_request(iq->dsns_point, iq->dsns_point_len, LDNS_RR_TYPE_NS, iq->qchase.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 0, 0)) { errinf_dname(qstate, "for DS query parent-child nameserver search, could not generate NS lookup for", iq->dsns_point); return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -2136,6 +2178,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, errinf(qstate, "exceeded the maximum number of sends"); return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } + if(iq->target_count && iq->target_count[2] > MAX_TARGET_NX) { + verbose(VERB_QUERY, "request has exceeded the maximum " + " number of nxdomain nameserver lookups with %d", + iq->target_count[2]); + errinf(qstate, "exceeded the maximum nameserver nxdomains"); + return error_response(qstate, id, LDNS_RCODE_SERVFAIL); + } /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ @@ -2240,12 +2289,41 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->qinfo_out.qtype, iq->qinfo_out.qclass, qstate->query_flags, qstate->region, qstate->env->scratch, 0); - if(msg && msg->rep->an_numrrsets == 0 - && FLAGS_GET_RCODE(msg->rep->flags) == + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_NOERROR) /* no need to send query if it is already - * cached as NOERROR/NODATA */ + * cached as NOERROR */ return 1; + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NXDOMAIN && + qstate->env->need_to_validate && + qstate->env->cfg->harden_below_nxdomain) { + if(msg->rep->security == sec_status_secure) { + iq->response = msg; + return final_state(iq); + } + if(msg->rep->security == sec_status_unchecked) { + struct module_qstate* subq = NULL; + if(!generate_sub_request( + iq->qinfo_out.qname, + iq->qinfo_out.qname_len, + iq->qinfo_out.qtype, + iq->qinfo_out.qclass, + qstate, id, iq, + INIT_REQUEST_STATE, + FINISHED_STATE, &subq, 1, 1)) + verbose(VERB_ALGO, + "could not validate NXDOMAIN " + "response"); + } + } + if(msg && FLAGS_GET_RCODE(msg->rep->flags) == + LDNS_RCODE_NXDOMAIN) { + /* return and add a label in the next + * minimisation iteration. + */ + return 1; + } } } if(iq->minimisation_state == SKIP_MINIMISE_STATE) { @@ -2321,6 +2399,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, * generated query will immediately be discarded due to depth and * that servfail is cached, which is not good as opportunism goes. */ if(iq->depth < ie->max_dependency_depth + && iq->num_target_queries == 0 + && (!iq->target_count || iq->target_count[2]==0) && iq->sent_count < TARGET_FETCH_STOP) { tf_policy = ie->target_fetch_policy[iq->depth]; } @@ -2366,6 +2446,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; + iq->dp_target_count = 0; iq->state = QUERY_RESP_STATE; return 1; } @@ -2453,6 +2534,7 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, iq->num_current_queries++; /* RespState decrements it*/ iq->referral_count++; /* make sure we don't loop */ iq->sent_count = 0; + iq->dp_target_count = 0; iq->state = QUERY_RESP_STATE; return 1; } @@ -2748,7 +2830,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* Make subrequest to validate intermediate * NXDOMAIN if harden-below-nxdomain is * enabled. */ - if(qstate->env->cfg->harden_below_nxdomain) { + if(qstate->env->cfg->harden_below_nxdomain && + qstate->env->need_to_validate) { struct module_qstate* subq = NULL; log_query_info(VERB_QUERY, "schedule NXDOMAIN validation:", @@ -2760,16 +2843,10 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->response->qinfo.qclass, qstate, id, iq, INIT_REQUEST_STATE, - FINISHED_STATE, &subq, 1)) + FINISHED_STATE, &subq, 1, 1)) verbose(VERB_ALGO, "could not validate NXDOMAIN " "response"); - outbound_list_clear(&iq->outlist); - iq->num_current_queries = 0; - fptr_ok(fptr_whitelist_modenv_detach_subs( - qstate->env->detach_subs)); - (*qstate->env->detach_subs)(qstate); - iq->num_target_queries = 0; } } return next_state(iq, QUERYTARGETS_STATE); @@ -2853,6 +2930,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, /* Count this as a referral. */ iq->referral_count++; iq->sent_count = 0; + iq->dp_target_count = 0; /* see if the next dp is a trust anchor, or a DS was sent * along, indicating dnssec is expected for next zone */ iq->dnssec_expected = iter_indicates_dnssec(qstate->env, @@ -2929,6 +3007,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, iq->dsns_point = NULL; iq->auth_zone_response = 0; iq->sent_count = 0; + iq->dp_target_count = 0; if(iq->minimisation_state != MINIMISE_STATE) /* Only count as query restart when it is not an extra * query as result of qname minimisation. */ @@ -3121,7 +3200,7 @@ processPrimeResponse(struct module_qstate* qstate, int id) if(!generate_sub_request(qstate->qinfo.qname, qstate->qinfo.qname_len, qstate->qinfo.qtype, qstate->qinfo.qclass, qstate, id, iq, - INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { + INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { verbose(VERB_ALGO, "could not generate prime check"); } generate_a_aaaa_check(qstate, iq, id); @@ -3149,6 +3228,7 @@ static void processTargetResponse(struct module_qstate* qstate, int id, struct module_qstate* forq) { + struct iter_env* ie = (struct iter_env*)qstate->env->modinfo[id]; struct iter_qstate* iq = (struct iter_qstate*)qstate->minfo[id]; struct iter_qstate* foriq = (struct iter_qstate*)forq->minfo[id]; struct ub_packed_rrset_key* rrset; @@ -3186,7 +3266,7 @@ processTargetResponse(struct module_qstate* qstate, int id, log_rrset_key(VERB_ALGO, "add parentside glue to dp", iq->pside_glue); if(!delegpt_add_rrset(foriq->dp, forq->region, - iq->pside_glue, 1)) + iq->pside_glue, 1, NULL)) log_err("out of memory adding pside glue"); } @@ -3197,6 +3277,7 @@ processTargetResponse(struct module_qstate* qstate, int id, * response type was ANSWER. */ rrset = reply_find_answer_rrset(&iq->qchase, qstate->return_msg->rep); if(rrset) { + int additions = 0; /* if CNAMEs have been followed - add new NS to delegpt. */ /* BTW. RFC 1918 says NS should not have got CNAMEs. Robust. */ if(!delegpt_find_ns(foriq->dp, rrset->rk.dname, @@ -3208,13 +3289,23 @@ processTargetResponse(struct module_qstate* qstate, int id, } /* if dpns->lame then set the address(es) lame too */ if(!delegpt_add_rrset(foriq->dp, forq->region, rrset, - dpns->lame)) + dpns->lame, &additions)) log_err("out of memory adding targets"); + if(!additions) { + /* no new addresses, increase the nxns counter, like + * this could be a list of wildcards with no new + * addresses */ + target_count_increase_nx(foriq, 1); + } verbose(VERB_ALGO, "added target response"); delegpt_log(VERB_ALGO, foriq->dp); } else { verbose(VERB_ALGO, "iterator TargetResponse failed"); + delegpt_mark_neg(dpns, qstate->qinfo.qtype); dpns->resolved = 1; /* fail the target */ + if((dpns->got4 == 2 || !ie->supports_ipv4) && + (dpns->got6 == 2 || !ie->supports_ipv6)) + target_count_increase_nx(foriq, 1); } } @@ -3388,7 +3479,7 @@ processCollectClass(struct module_qstate* qstate, int id) qstate->qinfo.qname_len, qstate->qinfo.qtype, c, qstate, id, iq, INIT_REQUEST_STATE, FINISHED_STATE, &subq, - (int)!(qstate->query_flags&BIT_CD))) { + (int)!(qstate->query_flags&BIT_CD), 0)) { errinf(qstate, "could not generate class ANY" " lookup query"); return error_response(qstate, id, diff --git a/iterator/iterator.h b/iterator/iterator.h index 26ff39559..342ac207e 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h @@ -55,6 +55,11 @@ struct rbtree_type; /** max number of targets spawned for a query and its subqueries */ #define MAX_TARGET_COUNT 64 +/** max number of target lookups per qstate, per delegation point */ +#define MAX_DP_TARGET_COUNT 16 +/** max number of nxdomains allowed for target lookups for a query and + * its subqueries */ +#define MAX_TARGET_NX 5 /** max number of query restarts. Determines max number of CNAME chain. */ #define MAX_RESTART_COUNT 8 /** max number of referrals. Makes sure resolver does not run away */ @@ -305,9 +310,14 @@ struct iter_qstate { int sent_count; /** number of target queries spawned in [1], for this query and its - * subqueries, the malloced-array is shared, [0] refcount. */ + * subqueries, the malloced-array is shared, [0] refcount. + * in [2] the number of nxdomains is counted. */ int* target_count; + /** number of target lookups per delegation point. Reset to 0 after + * receiving referral answer. Not shared with subqueries. */ + int dp_target_count; + /** if true, already tested for ratelimiting and passed the test */ int ratelimit_ok; diff --git a/services/cache/dns.c b/services/cache/dns.c index 2a5bca4ac..7b6e142c9 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -273,7 +273,7 @@ find_add_addrs(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_A, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_A(dp, region, akey, 0)) { + if(!delegpt_add_rrset_A(dp, region, akey, 0, NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -293,7 +293,7 @@ find_add_addrs(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_AAAA(dp, region, akey, 0)) { + if(!delegpt_add_rrset_AAAA(dp, region, akey, 0, NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -327,7 +327,8 @@ cache_fill_missing(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_A, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_A(dp, region, akey, ns->lame)) { + if(!delegpt_add_rrset_A(dp, region, akey, ns->lame, + NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } @@ -347,7 +348,8 @@ cache_fill_missing(struct module_env* env, uint16_t qclass, akey = rrset_cache_lookup(env->rrset_cache, ns->name, ns->namelen, LDNS_RR_TYPE_AAAA, qclass, 0, now, 0); if(akey) { - if(!delegpt_add_rrset_AAAA(dp, region, akey, ns->lame)) { + if(!delegpt_add_rrset_AAAA(dp, region, akey, ns->lame, + NULL)) { lock_rw_unlock(&akey->entry.lock); return 0; } diff --git a/util/data/dname.c b/util/data/dname.c index c8f09ddbc..76b2ec7d6 100644 --- a/util/data/dname.c +++ b/util/data/dname.c @@ -233,17 +233,28 @@ int dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2) { uint8_t len1, len2; + int count1 = 0, count2 = 0; log_assert(pkt && d1 && d2); len1 = *d1++; len2 = *d2++; while( len1 != 0 || len2 != 0 ) { /* resolve ptrs */ if(LABEL_IS_PTR(len1)) { + if((size_t)PTR_OFFSET(len1, *d1) + >= sldns_buffer_limit(pkt)) + return -1; + if(count1++ > MAX_COMPRESS_PTRS) + return -1; d1 = sldns_buffer_at(pkt, PTR_OFFSET(len1, *d1)); len1 = *d1++; continue; } if(LABEL_IS_PTR(len2)) { + if((size_t)PTR_OFFSET(len2, *d2) + >= sldns_buffer_limit(pkt)) + return 1; + if(count2++ > MAX_COMPRESS_PTRS) + return 1; d2 = sldns_buffer_at(pkt, PTR_OFFSET(len2, *d2)); len2 = *d2++; continue; @@ -302,12 +313,18 @@ dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_type h) uint8_t labuf[LDNS_MAX_LABELLEN+1]; uint8_t lablen; int i; + int count = 0; /* preserve case of query, make hash label by label */ lablen = *dname++; while(lablen) { if(LABEL_IS_PTR(lablen)) { /* follow pointer */ + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) + return h; + if(count++ > MAX_COMPRESS_PTRS) + return h; dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; @@ -341,6 +358,9 @@ void dname_pkt_copy(sldns_buffer* pkt, uint8_t* to, uint8_t* dname) return; } /* follow pointer */ + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) + return; dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; @@ -369,6 +389,7 @@ void dname_pkt_copy(sldns_buffer* pkt, uint8_t* to, uint8_t* dname) void dname_print(FILE* out, struct sldns_buffer* pkt, uint8_t* dname) { uint8_t lablen; + int count = 0; if(!out) out = stdout; if(!dname) return; @@ -382,6 +403,15 @@ void dname_print(FILE* out, struct sldns_buffer* pkt, uint8_t* dname) fputs("??compressionptr??", out); return; } + if((size_t)PTR_OFFSET(lablen, *dname) + >= sldns_buffer_limit(pkt)) { + fputs("??compressionptr??", out); + return; + } + if(count++ > MAX_COMPRESS_PTRS) { + fputs("??compressionptr??", out); + return; + } dname = sldns_buffer_at(pkt, PTR_OFFSET(lablen, *dname)); lablen = *dname++; continue; diff --git a/util/data/msgparse.c b/util/data/msgparse.c index fb3123703..7c32618a3 100644 --- a/util/data/msgparse.c +++ b/util/data/msgparse.c @@ -55,7 +55,11 @@ smart_compare(sldns_buffer* pkt, uint8_t* dnow, { if(LABEL_IS_PTR(*dnow)) { /* ptr points to a previous dname */ - uint8_t* p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1])); + uint8_t* p; + if((size_t)PTR_OFFSET(dnow[0], dnow[1]) + >= sldns_buffer_limit(pkt)) + return -1; + p = sldns_buffer_at(pkt, PTR_OFFSET(dnow[0], dnow[1])); if( p == dprfirst || p == dprlast ) return 0; /* prev dname is also a ptr, both ptrs are the same. */ From a1d4e151eec2f6b47ffa3500b88b5dc0bf7e2821 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 19 May 2020 10:29:37 +0200 Subject: [PATCH 029/394] - Release 1.10.1 is 1.10.0 with fixes, code repository continues, including those fixes, towards the next release. Configure has version 1.10.2 version number in it. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 3 +++ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/configure b/configure index 2d6aa6a05..6c3e695fa 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.10.1. +# Generated by GNU Autoconf 2.69 for unbound 1.10.2. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.10.1' -PACKAGE_STRING='unbound 1.10.1' +PACKAGE_VERSION='1.10.2' +PACKAGE_STRING='unbound 1.10.2' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1458,7 +1458,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.10.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.10.2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.10.1:";; + short | recursive ) echo "Configuration of unbound 1.10.2:";; esac cat <<\_ACEOF @@ -1750,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.10.1 +unbound configure 1.10.2 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2459,7 +2459,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.10.1, which was +It was created by unbound $as_me 1.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2811,11 +2811,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=10 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=2 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=8 +LIBUNBOUND_REVISION=9 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2891,6 +2891,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 +# 1.10.2 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21618,7 +21619,7 @@ _ACEOF -version=1.10.1 +version=1.10.2 date=`date +'%b %e, %Y'` @@ -22137,7 +22138,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.10.1, which was +This file was extended by unbound $as_me 1.10.2, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22203,7 +22204,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.10.1 +unbound config.status 1.10.2 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 113c4ec18..d1f7998e2 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[10]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MICRO],[2]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=8 +LIBUNBOUND_REVISION=9 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -94,6 +94,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 +# 1.10.2 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 223b13b90..8b1c535ba 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ query into a large number of queries directed to a target. - CVE-2020-12663 Malformed answers from upstream name servers can be used to make Unbound unresponsive. + - Release 1.10.1 is 1.10.0 with fixes, code repository continues, + including those fixes, towards the next release. Configure has + version 1.10.2 version number in it. 18 May 2020: Wouter - For PR #93: dynlibmod can handle reloads and deinit and inits again, From 711c0548f0bcb6593ce029b1b7aee86c4c923310 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 19 May 2020 14:36:57 +0200 Subject: [PATCH 030/394] - For PR #93: windows compile warnings removal - windows compile warnings removal for ip dscp option code. --- doc/Changelog | 2 ++ dynlibmod/dynlibmod.c | 16 ++++++++-------- services/listen_dnsport.c | 4 ++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8b1c535ba..780622a7f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ - Release 1.10.1 is 1.10.0 with fixes, code repository continues, including those fixes, towards the next release. Configure has version 1.10.2 version number in it. + - For PR #93: windows compile warnings removal + - windows compile warnings removal for ip dscp option code. 18 May 2020: Wouter - For PR #93: dynlibmod can handle reloads and deinit and inits again, diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 6ae23e86c..09b6cd40f 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -15,7 +15,7 @@ void log_dlerror() { DWORD dwFormatFlags = FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM ; - if(dwBufferLength = FormatMessageA( + if((dwBufferLength = FormatMessageA( dwFormatFlags, NULL, // module to get message from (NULL == system) dwLastError, @@ -23,7 +23,7 @@ void log_dlerror() { (LPSTR) &MessageBuffer, 0, NULL - )) + ))) { log_err("dynlibmod: %s (%ld)", MessageBuffer, dwLastError); LocalFree(MessageBuffer); @@ -108,7 +108,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load init procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_init = (func_init_t) initializer; + de->func_init = (func_init_t)(void*)initializer; } deinitializer = __LOADSYM(dynamic_library,"deinit"); if (deinitializer == NULL) { @@ -116,7 +116,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load deinit procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_deinit = (func_deinit_t) deinitializer; + de->func_deinit = (func_deinit_t)(void*)deinitializer; } operate = __LOADSYM(dynamic_library,"operate"); if (operate == NULL) { @@ -124,7 +124,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load operate procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_operate = (func_operate_t) operate; + de->func_operate = (func_operate_t)(void*)operate; } inform = __LOADSYM(dynamic_library,"inform_super"); if (inform == NULL) { @@ -132,7 +132,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load inform_super procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_inform = (func_inform_t) inform; + de->func_inform = (func_inform_t)(void*)inform; } clear = __LOADSYM(dynamic_library,"clear"); if (clear == NULL) { @@ -140,7 +140,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load clear procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_clear = (func_clear_t) clear; + de->func_clear = (func_clear_t)(void*)clear; } get_mem = __LOADSYM(dynamic_library,"get_mem"); if (get_mem == NULL) { @@ -148,7 +148,7 @@ int dynlibmod_init(struct module_env* env, int id) { log_err("dynlibmod[%d]: unable to load get_mem procedure from dynamic library \"%s\".", dynlib_mod_idx, de->fname); return 0; } else { - de->func_get_mem = (func_get_mem_t) get_mem; + de->func_get_mem = (func_get_mem_t)(void*)get_mem; } } de->inplace_cb_delete_wrapped = &inplace_cb_delete_wrapped; diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 51d5a3fdb..cc56d3fd3 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -884,11 +884,11 @@ set_ip_dscp(int socket, int addrfamily, int dscp) ds = dscp << 2; switch(addrfamily) { case AF_INET6: - if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, &ds, sizeof(ds)) < 0) + if(setsockopt(socket, IPPROTO_IPV6, IPV6_TCLASS, (void*)&ds, sizeof(ds)) < 0) return sock_strerror(errno); break; default: - if(setsockopt(socket, IPPROTO_IP, IP_TOS, &ds, sizeof(ds)) < 0) + if(setsockopt(socket, IPPROTO_IP, IP_TOS, (void*)&ds, sizeof(ds)) < 0) return sock_strerror(errno); break; } From f37242566b3187c1d715af6d0e4e0c5b75ccafeb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 19 May 2020 15:49:08 +0200 Subject: [PATCH 031/394] - For PR #93: unit test for dynlib module. --- doc/Changelog | 1 + testdata/dynlibmod.tdir/dynlibmod.conf | 32 +++++++++ testdata/dynlibmod.tdir/dynlibmod.dsc | 16 +++++ testdata/dynlibmod.tdir/dynlibmod.post | 15 +++++ testdata/dynlibmod.tdir/dynlibmod.pre | 35 ++++++++++ testdata/dynlibmod.tdir/dynlibmod.test | 74 +++++++++++++++++++++ testdata/dynlibmod.tdir/dynlibmod.testns | 22 ++++++ testdata/dynlibmod.tdir/unbound_control.key | 15 +++++ testdata/dynlibmod.tdir/unbound_control.pem | 11 +++ testdata/dynlibmod.tdir/unbound_server.key | 15 +++++ testdata/dynlibmod.tdir/unbound_server.pem | 11 +++ 11 files changed, 247 insertions(+) create mode 100644 testdata/dynlibmod.tdir/dynlibmod.conf create mode 100644 testdata/dynlibmod.tdir/dynlibmod.dsc create mode 100644 testdata/dynlibmod.tdir/dynlibmod.post create mode 100644 testdata/dynlibmod.tdir/dynlibmod.pre create mode 100644 testdata/dynlibmod.tdir/dynlibmod.test create mode 100644 testdata/dynlibmod.tdir/dynlibmod.testns create mode 100644 testdata/dynlibmod.tdir/unbound_control.key create mode 100644 testdata/dynlibmod.tdir/unbound_control.pem create mode 100644 testdata/dynlibmod.tdir/unbound_server.key create mode 100644 testdata/dynlibmod.tdir/unbound_server.pem diff --git a/doc/Changelog b/doc/Changelog index 780622a7f..ec84296f8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ version 1.10.2 version number in it. - For PR #93: windows compile warnings removal - windows compile warnings removal for ip dscp option code. + - For PR #93: unit test for dynlib module. 18 May 2020: Wouter - For PR #93: dynlibmod can handle reloads and deinit and inits again, diff --git a/testdata/dynlibmod.tdir/dynlibmod.conf b/testdata/dynlibmod.tdir/dynlibmod.conf new file mode 100644 index 000000000..d59444344 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.conf @@ -0,0 +1,32 @@ +server: + verbosity: 2 + num-threads: 3 + outgoing-range: 16 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + local-zone: "example.net." redirect + local-data: "example.net. IN A 10.20.30.41" + module-config: "dynlib iterator" + +dynlib: + dynlib-file: "@DLL_FILE@" + +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/dynlibmod.tdir/dynlibmod.dsc b/testdata/dynlibmod.tdir/dynlibmod.dsc new file mode 100644 index 000000000..b1a83910d --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.dsc @@ -0,0 +1,16 @@ +BaseName: dynlibmod +Version: 1.0 +Description: test dynlibmod module +CreationDate: Tue May 19 15:00:38 CET 2020 +Maintainer: dr. W.C.A. Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: dynlibmod.pre +Post: dynlibmod.post +Test: dynlibmod.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/dynlibmod.tdir/dynlibmod.post b/testdata/dynlibmod.tdir/dynlibmod.post new file mode 100644 index 000000000..caa0da4f5 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.post @@ -0,0 +1,15 @@ +# #-- dynlibmod.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +kill_pid $FWD_PID +kill $UNBOUND_PID +kill $UNBOUND_PID >/dev/null 2>&1 +cat unbound.log +exit 0 diff --git a/testdata/dynlibmod.tdir/dynlibmod.pre b/testdata/dynlibmod.tdir/dynlibmod.pre new file mode 100644 index 000000000..94adaa723 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.pre @@ -0,0 +1,35 @@ +# #-- dynlibmod.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh + +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +CONTROL_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT dynlibmod.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +if grep "define USE_WINSOCK 1" $PRE/config.h; then + DLL_FILE="helloworld.dll" +else + DLL_FILE="helloworld.so" +fi +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' -e 's/@DLL_FILE\@/'$DLL_FILE'/' < dynlibmod.conf > ub.conf + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log diff --git a/testdata/dynlibmod.tdir/dynlibmod.test b/testdata/dynlibmod.tdir/dynlibmod.test new file mode 100644 index 000000000..f99f6fbc4 --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.test @@ -0,0 +1,74 @@ +# #-- dynlibmod.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +PRE="../.." +if grep "define WITH_DYNLIBMODULE 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +# compile the dynamic library module +if grep "define USE_WINSOCK 1" $PRE/config.h; then + echo "compile dynamic library dll for mingw" + echo "x86_64-w64-mingw32-gcc -m64 -I$PRE -shared -Wall -fpic -o helloworld.dll $PRE/dynlibmod/examples/helloworld.c -L../.. -l:libunbound.a" + x86_64-w64-mingw32-gcc -m64 -I$PRE -shared -Wall -fpic -o helloworld.dll $PRE/dynlibmod/examples/helloworld.c -L../.. -l:libunbound.a + if test $? != 0; then + echo "compile failure" + exit 1; + fi +else + echo "compile dynamic library" + echo "gcc -I$PRE -shared -Wall -fpic -o helloworld.so $PRE/dynlibmod/examples/helloworld.c" + gcc -I$PRE -shared -Wall -fpic -o helloworld.so $PRE/dynlibmod/examples/helloworld.c + if test $? != 0; then + echo "compile failure" + exit 1; + fi +fi + +# start unbound in the background +LD_LIBRARY_PATH="." $PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +wait_unbound_up unbound.log + +# test if the server is up. +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> check log for dynlibmod info" +# wait for a moment for filesystem to catch up. +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 1; fi +if grep "hello world from operate" unbound.log >/dev/null; then :; else sleep 10; fi +if grep "hello world from operate" unbound.log; then echo "yes it is in unbound.log"; +else + echo "information not in unbound.log" + echo "failed" + echo "> cat logfiles" + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> cat logfiles" +cat fwd.log +cat unbound.log +echo "> OK" +exit 0 diff --git a/testdata/dynlibmod.tdir/dynlibmod.testns b/testdata/dynlibmod.tdir/dynlibmod.testns new file mode 100644 index 000000000..0c911ca5b --- /dev/null +++ b/testdata/dynlibmod.tdir/dynlibmod.testns @@ -0,0 +1,22 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA SERVFAIL +ADJUST copy_id +SECTION QUESTION +www.example.net. IN A +ENTRY_END + diff --git a/testdata/dynlibmod.tdir/unbound_control.key b/testdata/dynlibmod.tdir/unbound_control.key new file mode 100644 index 000000000..d7c43a06b --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_control.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa +rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH +ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB +AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z +WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG +DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr +4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m +Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr +p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg +P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ +aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe +YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 +DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +-----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_control.pem b/testdata/dynlibmod.tdir/unbound_control.pem new file mode 100644 index 000000000..8f1ba87f1 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_control.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE +AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD +6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 +qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US +J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB +BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B +9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC +iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +-----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_server.key b/testdata/dynlibmod.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_server.pem b/testdata/dynlibmod.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/dynlibmod.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- From 8af3d73b9bc98a78f1d1758cb23b5ac4b504e611 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 21 May 2020 22:48:57 +0200 Subject: [PATCH 032/394] - Fix for integer overflow when printing RDF_TYPE_TIME. --- doc/Changelog | 3 +++ sldns/parseutil.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index ec84296f8..75b3822d3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 May 2020: George + - Fix for integer overflow when printing RDF_TYPE_TIME. + 19 May 2020: Wouter - CVE-2020-12662 Unbound can be tricked into amplifying an incoming query into a large number of queries directed to a target. diff --git a/sldns/parseutil.c b/sldns/parseutil.c index 82dbc0fe1..3515d64c5 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -167,7 +167,7 @@ sldns_gmtime64_r(int64_t clock, struct tm *result) static int64_t sldns_serial_arithmetics_time(int32_t time, time_t now) { - int32_t offset = time - (int32_t) now; + int32_t offset = (int32_t)((uint32_t) time - (uint32_t) now); return (int64_t) now + offset; } From 21cd836e82dd3dd03079096eea338901b637164b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 25 May 2020 11:47:51 +0200 Subject: [PATCH 033/394] - Update contrib/aaaa-filter-iterator.patch for the recent generate_sub_request() change and to apply cleanly. --- contrib/aaaa-filter-iterator.patch | 14 +++++++------- doc/Changelog | 4 ++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index b5c526822..9881bde89 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -13,9 +13,9 @@ Index: trunk/doc/unbound.conf.5.in +This also causes an additional A query to be sent for each AAAA query. +This breaks DNSSEC! +.TP - .B private\-address: \fI - Give IPv4 of IPv6 addresses or classless subnets. These are addresses - on your private network, and are not allowed to be returned for + .B aggressive\-nsec: \fI + Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN + and other denials, using information from previous NXDOMAINs answers. Index: trunk/iterator/iter_scrub.c =================================================================== --- trunk/iterator/iter_scrub.c (revision 4357) @@ -125,7 +125,7 @@ Index: trunk/iterator/iterator.c + * ASN: This event state was added as an intermediary step between + * QUERYTARGETS_STATE and the next step, in order to cast a subquery for the + * purpose of caching A records for the queried name. -+ * ++ * + * @param qstate: query state. + * @param iq: iterator query state. + * @param ie: iterator shared global environment. @@ -147,9 +147,9 @@ Index: trunk/iterator/iterator.c + + /* re-throw same query, but with a different type */ + if(!generate_sub_request(iq->qchase.qname, -+ iq->qchase.qname_len, LDNS_RR_TYPE_A, ++ iq->qchase.qname_len, LDNS_RR_TYPE_A, + iq->qchase.qclass, qstate, id, iq, -+ INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1)) { ++ INIT_REQUEST_STATE, FINISHED_STATE, &subq, 1, 0)) { + log_nametypeclass(VERB_ALGO, "ASN-AAAA-filter: failed " + "preloading of A record for", + iq->qchase.qname, LDNS_RR_TYPE_A, @@ -188,7 +188,7 @@ Index: trunk/iterator/iterator.c return 0; } -+/** ++/** + * ASN: Do final processing on responses to A queries originated from AAAA + * queries. Events reach this state after the iterative resolution algorithm + * terminates. diff --git a/doc/Changelog b/doc/Changelog index 75b3822d3..0fa850ed0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +25 May 2020: George + - Update contrib/aaaa-filter-iterator.patch for the recent + generate_sub_request() change and to apply cleanly. + 21 May 2020: George - Fix for integer overflow when printing RDF_TYPE_TIME. From c93b4b3158ce451b3dbc4658e3cdf1568f79fc4b Mon Sep 17 00:00:00 2001 From: Robert Edmonds Date: Mon, 25 May 2020 17:58:37 -0400 Subject: [PATCH 034/394] contrib/libunbound.pc.in: Do not use "Requires:" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit updates contrib/libunbound.pc.in to remove the "Requires:" directive and move its contents to "Requires.private:". The pkg-config manpage documents the Requires/Libs fields as follows: Requires: This is a comma-separated list of packages that are required by your package. Flags from dependent packages will be merged in to the flags reported for your package. Optionally, you can specify the version of the required package (using the operators =, <, >, >=, <=); specifying a version allows pkg-config to perform extra sanity checks. You may only mention the same package one time on the Requires: line. If the version of a package is un‐ specified, any version will be used with no checking. Requires.private: A list of packages required by this package. The difference from Requires is that the packages listed under Requires.private are not taken into account when a flag list is computed for dynami‐ cally linked executable (i.e., when --static was not specified). In the situation where each .pc file corresponds to a library, Requires.private shall be used exclusively to specify the depen‐ dencies between the libraries. Libs: This line should give the link flags specific to your package. Don't add any flags for required packages; pkg-config will add those automatically. Libs.private: This line should list any private libraries in use. Private li‐ braries are libraries which are not exposed through your li‐ brary, but are needed in the case of static linking. This dif‐ fers from Requires.private in that it references libraries that do not have package files installed. In other words: 1) "Requires:" should specify the name of .pc packages that are required to be installed to compile and dynamically link against libunbound. This corresponds to needing the -dev (or -devel) package containing the .pc file to be installed on the system. Since libunbound's header files actually do not have any includes on any other library's headers, the "Requires:" directive should be empty. 2) "Requires.private:" specifies the name of .pc packages that correspond to libraries that are required to be installed to statically link against libunbound. E.g., if libunbound.a has undefined symbols event_* that are in libevent.a, statically linking against libunbound.a requires statically linking libevent.a, and because libevent has a .pc file, this means "libevent" should appear in libunbound.pc's "Requires.private:" directive. 3) "Libs:" specifies the link flags needed to link against libunbound, only, not including any dependencies. 4) "Libs.private:" specifies the link flags needed to statically link against libraries that libunbound depends on that do not have .pc files. I think it's possible for unbound's build system to actually declare link flags under "Libs.private:" for some libraries that do have .pc files (e.g. libcrypto/-lcrypto, libssl/-lssl, for OpenSSL) but in practice this appears to be harmless. Given #1 above that libunbound does not have any header dependencies against any other packages it does not appear that "Requires:" is needed at all. See https://bugs.debian.org/958331 for an example of a bug report that this causes. We should not need to install the nettle-dev package only for building binaries that compile against the libunbound headers and link against the libunbound library. --- contrib/libunbound.pc.in | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contrib/libunbound.pc.in b/contrib/libunbound.pc.in index 1442ed523..453bf7d4f 100644 --- a/contrib/libunbound.pc.in +++ b/contrib/libunbound.pc.in @@ -7,8 +7,7 @@ Name: unbound Description: Library with validating, recursive, and caching DNS resolver URL: http://www.unbound.net Version: @PACKAGE_VERSION@ -Requires: @PC_CRYPTO_DEPENDENCY@ @PC_LIBEVENT_DEPENDENCY@ -Requires.private: @PC_PY_DEPENDENCY@ @PC_LIBBSD_DEPENDENCY@ +Requires.private: @PC_PY_DEPENDENCY@ @PC_LIBBSD_DEPENDENCY@ @PC_CRYPTO_DEPENDENCY@ @PC_LIBEVENT_DEPENDENCY@ Libs: -L${libdir} -lunbound Libs.private: @SSLLIB@ @LIBS@ Cflags: -I${includedir} From 1a6cc6e5dc12069c0a9b06a8c59f366535b2f654 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 26 May 2020 08:46:36 +0200 Subject: [PATCH 035/394] fixup lru list presence boolean. --- services/outside_network.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/outside_network.h b/services/outside_network.h index 9290864a6..0230829a8 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -244,6 +244,8 @@ struct reuse_tcp { * TODO */ struct reuse_tcp* next, *prev; + /** true if the reuse_tcp item is on the lru list with empty items */ + int item_on_lru_list; /** the connection to reuse, the fd is non-1 and is open. * the addr and port determine where the connection is going, * and is key to the rbtree. The SSL ptr determines if it is From aad363ddd1e9e3b75faa0ad1aac5c4b25d4b8ec7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 26 May 2020 13:41:07 +0200 Subject: [PATCH 036/394] rename next,prev to lru_next,lru_prev for clarity. --- services/outside_network.c | 45 ++++++++++++++++++-------------------- services/outside_network.h | 15 +++++-------- 2 files changed, 27 insertions(+), 33 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index c3350517d..9b3458922 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -484,25 +484,23 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, } /* delete from reuse list */ if(reuse->pending) { - if(reuse->prev) { + if(reuse->lru_prev) { /* assert that members of the lru list are waiting * and thus have a pending pointer to the struct */ - log_assert(reuse->prev->pending); - reuse->prev->next = reuse->next; + log_assert(reuse->lru_prev->pending); + reuse->lru_prev->lru_next = reuse->lru_next; } else { - log_assert(!reuse->next || reuse->next->pending); - outnet->tcp_reuse_first = - (reuse->next?reuse->next->pending:NULL); + log_assert(!reuse->lru_next || reuse->lru_next->pending); + outnet->tcp_reuse_first = reuse->lru_next; } - if(reuse->next) { + if(reuse->lru_next) { /* assert that members of the lru list are waiting * and thus have a pending pointer to the struct */ - log_assert(reuse->next->pending); - reuse->next->prev = reuse->prev; + log_assert(reuse->lru_next->pending); + reuse->lru_next->lru_prev = reuse->lru_prev; } else { - log_assert(!reuse->prev || reuse->prev->pending); - outnet->tcp_reuse_last = - (reuse->prev?reuse->prev->pending:NULL); + log_assert(!reuse->lru_prev || reuse->lru_prev->pending); + outnet->tcp_reuse_last = reuse->lru_prev; } reuse->pending = NULL; } @@ -544,15 +542,15 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) return 0; } /* insert into LRU, first is newest */ - pend_tcp->reuse.prev = NULL; + pend_tcp->reuse.lru_prev = NULL; if(outnet->tcp_reuse_first) { - pend_tcp->reuse.next = &outnet->tcp_reuse_first->reuse; - outnet->tcp_reuse_first->reuse.prev = &pend_tcp->reuse; + pend_tcp->reuse.lru_next = outnet->tcp_reuse_first; + outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse; } else { - pend_tcp->reuse.next = NULL; - outnet->tcp_reuse_last = pend_tcp; + pend_tcp->reuse.lru_next = NULL; + outnet->tcp_reuse_last = &pend_tcp->reuse; } - outnet->tcp_reuse_first = pend_tcp; + outnet->tcp_reuse_first = &pend_tcp->reuse; return 1; } @@ -1452,14 +1450,13 @@ reuse_tcp_close_oldest(struct outside_network* outnet) { struct pending_tcp* pend; if(!outnet->tcp_reuse_last) return; - pend = outnet->tcp_reuse_last; + pend = outnet->tcp_reuse_last->pending; /* snip off of LRU */ - log_assert(pend->reuse.next == NULL); - if(pend->reuse.prev) { - log_assert(pend->reuse.prev->pending); - outnet->tcp_reuse_last = pend->reuse.prev->pending; - pend->reuse.prev->next = NULL; + log_assert(pend->reuse.lru_next == NULL); + if(pend->reuse.lru_prev) { + outnet->tcp_reuse_last = pend->reuse.lru_prev; + pend->reuse.lru_prev->lru_next = NULL; } else { outnet->tcp_reuse_last = NULL; outnet->tcp_reuse_first = NULL; diff --git a/services/outside_network.h b/services/outside_network.h index 0230829a8..f8f62238d 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -169,7 +169,7 @@ struct outside_network { * the oldest can be closed to get a new free pending_tcp if needed * The list contains empty connections, that wait for timeout or * a new query that can use the existing connection. */ - struct pending_tcp* tcp_reuse_first, *tcp_reuse_last; + struct reuse_tcp* tcp_reuse_first, *tcp_reuse_last; /** list of tcp comm points that are free for use */ struct pending_tcp* tcp_free; /** list of tcp queries waiting for a buffer */ @@ -240,10 +240,8 @@ struct reuse_tcp { * the ones with active queries are not on the list because they * do not need to be closed to make space for others. They already * service a query so the close for another query does not help - * service a larger number of queries. - * TODO - */ - struct reuse_tcp* next, *prev; + * service a larger number of queries. */ + struct reuse_tcp* lru_next, *lru_prev; /** true if the reuse_tcp item is on the lru list with empty items */ int item_on_lru_list; /** the connection to reuse, the fd is non-1 and is open. @@ -251,18 +249,17 @@ struct reuse_tcp { * and is key to the rbtree. The SSL ptr determines if it is * a TLS connection or a plain TCP connection there. And TLS * or not is also part of the key to the rbtree. - * There is a timeout and read event on the fd, to close it. - */ + * There is a timeout and read event on the fd, to close it. */ struct pending_tcp* pending; /** rbtree with other queries waiting on the connection, by ID number, * of type struct waiting_tcp. It is for looking up received * answers to the structure for callback. And also to see if ID - * numbers are unused and can be used for a new query. TODO */ + * numbers are unused and can be used for a new query. */ rbtree_type tree_by_id; /** list of queries waiting to be written on the channel, * if NULL no queries are waiting to be written and the pending->query * is the query currently serviced. The first is the next in line. - * Once written, a query moves to the tree_by_id. TODO */ + * Once written, a query moves to the tree_by_id. */ struct waiting_tcp* write_wait_first, *write_wait_last; }; From d1904bd50905c4278ace5d616a4e693466b8c710 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 26 May 2020 16:27:45 +0200 Subject: [PATCH 037/394] tree key addr --- services/outside_network.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/services/outside_network.h b/services/outside_network.h index f8f62238d..12c72c990 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -232,8 +232,15 @@ struct port_comm { */ struct reuse_tcp { /** rbtree node with links in tcp_reuse tree. key is NULL when not - * in tree. Both active and empty connections are in the tree. */ + * in tree. Both active and empty connections are in the tree. + * key is this structure, the sockaddr and then ptr value for + * several times same address in tree */ rbnode_type node; + /** the key for the tcp_reuse tree. address of peer, ip4 or ip6, + * and port number of peer */ + struct sockaddr_storage addr; + /** length of addr */ + socklen_t addrlen; /** lru chain, so that the oldest can be removed to get a new * connection when all are in (re)use. oldest is last in list. * The lru only contains empty connections waiting for reuse, From 062f7b7ba2f32b6edb59f11ef24afd8cb113c75b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 27 May 2020 18:25:29 +0200 Subject: [PATCH 038/394] - Changelog entry for PR #241. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 0fa850ed0..ef0c7e18f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 May 2020: George + - Merge PR #241 by Robert Edmonds: contrib/libunbound.pc.in: Do not use + "Requires:". + 25 May 2020: George - Update contrib/aaaa-filter-iterator.patch for the recent generate_sub_request() change and to apply cleanly. From d9afcae34645b14815f5cd8befc4604769a1fc10 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 09:38:02 +0200 Subject: [PATCH 039/394] add debug printout --- services/outside_network.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index 9b3458922..951d8bce5 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -477,6 +477,7 @@ static void reuse_tcp_remove_tree_list(struct outside_network* outnet, struct reuse_tcp* reuse) { + verbose(5, "reuse_tcp_remove_tree_list"); if(reuse->node.key) { /* delete it from reuse tree */ (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node); @@ -511,6 +512,7 @@ static void decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { + verbose(5, "decommision_pending_tcp"); if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -533,10 +535,12 @@ decommission_pending_tcp(struct outside_network* outnet, static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { + verbose(5, "reuse_tcp_insert"); pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { /* this is a duplicate connection, close this one */ + verbose(5, "reuse_tcp_insert: duplicate connection"); pend_tcp->reuse.node.key = NULL; pend_tcp->reuse.pending = NULL; return 0; @@ -1406,6 +1410,7 @@ outnet_tcptimer(void* arg) struct waiting_tcp* w = (struct waiting_tcp*)arg; struct outside_network* outnet = w->outnet; int do_callback = 1; + verbose(5, "outnet_tcptimer"); if(w->pkt) { /* it is on the waiting list */ waiting_list_remove(outnet, w); @@ -1449,6 +1454,7 @@ static void reuse_tcp_close_oldest(struct outside_network* outnet) { struct pending_tcp* pend; + verbose(5, "reuse_tcp_close_oldest"); if(!outnet->tcp_reuse_last) return; pend = outnet->tcp_reuse_last->pending; @@ -1476,6 +1482,7 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) struct waiting_tcp key_w; struct pending_tcp key_p; struct comm_point c; + verbose(5, "reuse_tcp_find"); memset(&key_w, 0, sizeof(key_w)); memset(&key_p, 0, sizeof(key_p)); memset(&c, 0, sizeof(c)); @@ -1504,10 +1511,12 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct timeval tv; uint16_t id; + verbose(5, "pending_tcp_query"); /* find out if a reused stream to the target exists */ /* if so, take it into use */ reuse = reuse_tcp_find(sq->outnet, sq); if(reuse) { + verbose(5, "pending_tcp_query: found reuse"); log_assert(reuse->pending); pend = reuse->pending; } @@ -1552,6 +1561,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(pend) { /* we have a buffer available right now */ if(reuse) { + verbose(5, "pending_tcp_query: reuse, store"); /* if cannot write now, store query and put it * in the waiting list for this stream TODO */ /* and also delete it from waitlst if query gone, @@ -1563,6 +1573,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, sldns_buffer_begin(packet), sldns_buffer_limit(packet)); } else { + verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to * write query */ if(!outnet_tcp_take_into_use(w, @@ -1581,6 +1592,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, #endif } else { /* queue up */ + verbose(5, "pending_tcp_query: queue to wait"); w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp); w->pkt_len = sldns_buffer_limit(packet); memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len); @@ -1729,13 +1741,16 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, struct serviced_query* sq) { struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting; + verbose(5, "reuse_tcp_remove_serviced_keep"); /* see if can be entered in reuse tree * for that the FD has to be non-1 */ if(pend_tcp->c->fd == -1) { + verbose(5, "reuse_tcp_remove_serviced_keep: -1 fd"); return 0; } /* if in tree and used by other queries */ if(pend_tcp->reuse.node.key) { + verbose(5, "reuse_tcp_remove_serviced_keep: in use by other queries"); /* note less use of stream */ /* remove id value used by this svcd. */ /* do not reset the keepalive timer, for that @@ -1747,6 +1762,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, /* if still open and want to keep it open */ if(pend_tcp->c->fd != -1 && sq->outnet->tcp_reuse.count < sq->outnet->tcp_reuse_max) { + verbose(5, "reuse_tcp_remove_serviced_keep: keep open"); /* note less use of stream */ /* remove id value used by this svcd. */ /* set a keepalive timer on it */ @@ -1762,6 +1778,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, static void serviced_delete(struct serviced_query* sq) { + verbose(5, "serviced_delete"); if(sq->pending) { /* clear up the pending query */ if(sq->status == serviced_query_UDP_EDNS || @@ -1769,6 +1786,7 @@ serviced_delete(struct serviced_query* sq) sq->status == serviced_query_UDP_EDNS_FRAG || sq->status == serviced_query_UDP_EDNS_fallback) { struct pending* p = (struct pending*)sq->pending; + verbose(5, "serviced_delete: UDP"); if(p->pc) portcomm_loweruse(sq->outnet, p->pc); pending_delete(sq->outnet, p); @@ -1778,15 +1796,18 @@ serviced_delete(struct serviced_query* sq) } else { struct waiting_tcp* p = (struct waiting_tcp*) sq->pending; + verbose(5, "serviced_delete: TCP"); /* TODO: if on stream-write-waiting list then * remove from waiting list and waiting_tcp_delete */ if(p->pkt == NULL) { + verbose(5, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(p, sq)) { decommission_pending_tcp(sq->outnet, (struct pending_tcp*)p->next_waiting); use_free_buffer(sq->outnet); } } else { + verbose(5, "serviced_delete: tcpwait"); waiting_list_remove(sq->outnet, p); waiting_tcp_delete(p); } From 7b4606702986cc06d65887f65dc12664c58ef27d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 10:01:51 +0200 Subject: [PATCH 040/394] add test for tcp reuse --- testdata/tcp_reuse.tdir/tcp_reuse.conf | 17 +++++++ testdata/tcp_reuse.tdir/tcp_reuse.conf2 | 29 +++++++++++ testdata/tcp_reuse.tdir/tcp_reuse.dsc | 16 ++++++ testdata/tcp_reuse.tdir/tcp_reuse.post | 18 +++++++ testdata/tcp_reuse.tdir/tcp_reuse.pre | 34 +++++++++++++ testdata/tcp_reuse.tdir/tcp_reuse.test | 65 +++++++++++++++++++++++++ 6 files changed, 179 insertions(+) create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.conf create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.conf2 create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.dsc create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.post create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.pre create mode 100644 testdata/tcp_reuse.tdir/tcp_reuse.test diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.conf b/testdata/tcp_reuse.tdir/tcp_reuse.conf new file mode 100644 index 000000000..e8de8d3f8 --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.conf @@ -0,0 +1,17 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + tcp-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 new file mode 100644 index 000000000..308107094 --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 @@ -0,0 +1,29 @@ +# this is the upstream server that has pipelining and responds to queries. +server: + verbosity: 1 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound2.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + log-queries: yes + log-replies: yes + log-identity: "upstream" + + local-zone: "." refuse + local-zone: "example.com" static + local-data: "www.example.com A 10.20.30.40" + local-data: "www1.example.com A 10.20.30.41" + local-data: "www2.example.com A 10.20.30.42" + local-data: "www3.example.com A 10.20.30.43" + local-data: "www4.example.com A 10.20.30.44" + +# if queries escape, send them to localhost +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.dsc b/testdata/tcp_reuse.tdir/tcp_reuse.dsc new file mode 100644 index 000000000..8a780480d --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.dsc @@ -0,0 +1,16 @@ +BaseName: tcp_reuse +Version: 1.0 +Description: Test tcp stream reuse. +CreationDate: Wed Jun 03 09:37:00 CET 2020 +Maintainer: Wouter Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: tcp_reuse.pre +Post: tcp_reuse.post +Test: tcp_reuse.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.post b/testdata/tcp_reuse.tdir/tcp_reuse.post new file mode 100644 index 000000000..7399d3603 --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.post @@ -0,0 +1,18 @@ +# #-- tcp_reuse.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $UPSTREAM_PID +kill_pid $UNBOUND_PID +if test -f unbound2.log; then + echo ">>> upstream log" + cat unbound2.log +fi +if test -f unbound.log; then + echo ">>> unbound log" + cat unbound.log +fi diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.pre b/testdata/tcp_reuse.tdir/tcp_reuse.pre new file mode 100644 index 000000000..511dbc6f7 --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.pre @@ -0,0 +1,34 @@ +# #-- tcp_reuse.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +UPSTREAM_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf > ub.conf +# start unbound in the background +#$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +wait_unbound_up unbound.log + +# make upstream config file +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf2 > ub2.conf +# start upstream unbound in the background +#$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & +$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +UPSTREAM_PID=$! +echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test +wait_unbound_up unbound2.log + +cat .tpkg.var.test + diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test new file mode 100644 index 000000000..4b006afc4 --- /dev/null +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -0,0 +1,65 @@ +# #-- tcp_reuse.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +get_make +(cd $PRE; $MAKE streamtcp) + +echo "> query www1.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.com" outfile | grep "10.20.30.41"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" +echo "" + +# this should be reused on the same tcp stream: +echo "> query www2.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www2.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +echo "OK" +exit 0 From 0f3c638193e0ac58413dde42052c88aef6e92a88 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 12:10:31 +0200 Subject: [PATCH 041/394] find reuse find tcp loop code for multiple connections to the same destination find spare id value in reused connection. --- services/outside_network.c | 186 ++++++++++++++++++++++++++++++++++--- services/outside_network.h | 14 ++- 2 files changed, 181 insertions(+), 19 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 951d8bce5..b30666945 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -131,20 +131,14 @@ serviced_cmp(const void* key1, const void* key2) return sockaddr_cmp(&q1->addr, q1->addrlen, &q2->addr, q2->addrlen); } -int -reuse_cmp(const void* key1, const void* key2) +/** compare if the reuse element has the same address, port and same ssl-is + * used-for-it characteristic */ +static int +reuse_cmp_addrportssl(const void* key1, const void* key2) { struct reuse_tcp* r1 = (struct reuse_tcp*)key1; struct reuse_tcp* r2 = (struct reuse_tcp*)key2; int r; - /* make sure the entries are in use (have a waiting_tcp entry) */ - if(!r1->pending->query && !r2->pending->query) - return 0; - if(r1->pending->query && !r2->pending->query) - return 1; - if(!r1->pending->query && r2->pending->query) - return -1; - /* compare address and port */ r = sockaddr_cmp(&r1->pending->query->addr, r1->pending->query->addrlen, &r2->pending->query->addr, r2->pending->query->addrlen); @@ -159,6 +153,22 @@ reuse_cmp(const void* key1, const void* key2) return 0; } +int +reuse_cmp(const void* key1, const void* key2) +{ + struct reuse_tcp* r1 = (struct reuse_tcp*)key1; + struct reuse_tcp* r2 = (struct reuse_tcp*)key2; + int r; + r = reuse_cmp_addrportssl(key1, key2); + if(r != 0) + return r; + + /* compare ptr value */ + if(r1 < r2) return -1; + if(r1 > r2) return 1; + return 0; +} + /** delete waiting_tcp entry. Does not unlink from waiting list. * @param w: to delete. */ @@ -531,11 +541,24 @@ decommission_pending_tcp(struct outside_network* outnet, pend->query = NULL; } +/** log reuse item addr and ptr with message */ +static void +log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) +{ + uint16_t port; + char addrbuf[128]; + if(verbosity < v) return; + addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); + port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); + verbose(v, "%s %s %u %lx", msg, addrbuf, (unsigned)port, + (unsigned long)reuse); +} + /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { - verbose(5, "reuse_tcp_insert"); + log_reuse_tcp(5, "reuse_tcp_insert", &pend_tcp->reuse); pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { @@ -1482,6 +1505,7 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) struct waiting_tcp key_w; struct pending_tcp key_p; struct comm_point c; + rbnode_type* result = NULL, *prev; verbose(5, "reuse_tcp_find"); memset(&key_w, 0, sizeof(key_w)); memset(&key_p, 0, sizeof(key_p)); @@ -1497,8 +1521,135 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) memmove(&key_w.addr, &sq->addr, sq->addrlen); key_w.addrlen = sq->addrlen; - return (struct reuse_tcp*)rbtree_search(&outnet->tcp_reuse, - &key_p.reuse.node); + if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, + &result)) { + /* exact match */ + /* but the key is on stack, and ptr is compared, impossible */ + log_assert(&key_p.reuse != (struct reuse_tcp*)result); + log_assert(&key_p != ((struct reuse_tcp*)result)->pending); + } + /* not found, return null */ + if(!result || result == RBTREE_NULL) + return NULL; + /* inexact match, find one of possibly several connections to the + * same destination address, with the correct port, ssl, and + * also less than max number of open queries, or else, fail to open + * a new one */ + /* rewind to start of sequence of same address,port,ssl */ + prev = rbtree_previous(result); + while(prev && prev != RBTREE_NULL && + reuse_cmp_addrportssl(prev->key, &key_p.reuse) == 0) { + result = prev; + prev = rbtree_previous(result); + } + + /* loop to find first one that has correct characteristics */ + while(result && result != RBTREE_NULL && + reuse_cmp_addrportssl(result->key, &key_p.reuse) == 0) { + if(((struct reuse_tcp*)result)->tree_by_id.count < + MAX_REUSE_TCP_QUERIES) { + /* same address, port, ssl-yes-or-no, and has + * space for another query */ + return (struct reuse_tcp*)result; + } + result = rbtree_next(result); + } + return NULL; +} + +/** find element in tree by id */ +static struct waiting_tcp* +reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) +{ + struct waiting_tcp key_w; + struct pending_tcp key_p; + memset(&key_w, 0, sizeof(key_w)); + memset(&key_p, 0, sizeof(key_p)); + key_w.next_waiting = (void*)&key_p; + key_w.id_node.key = &key_w; + key_p.id = id; + return (struct waiting_tcp*)rbtree_search(&reuse->tree_by_id, &key_w); +} + +/** return ID value of rbnode in tree_by_id */ +static uint16_t +tree_by_id_get_id(rbnode_type* node) +{ + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + return ((struct pending_tcp*)w->next_waiting)->id; +} + +/** find spare ID value for reuse tcp stream. That is random and also does + * not collide with an existing query ID that is in use or waiting */ +static uint16_t +reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) +{ + uint16_t id = 0; + const int try_random = 2000; + int i; + rbnode_type* pos, *node; + for(i = 0; irnd)>>8) & 0xffff; + if(!reuse_tcp_by_id_find(reuse, id)) { + return id; + } + } + /** cannot probe a random element from the list, we pick one from + * the list that is unused */ + pos = (rbnode_type*)reuse_tcp_by_id_find(reuse, id); + if(!pos) + return id; + /* search for first available id number after the random position */ + /* pick a random position, find the first unused range and pick + * a random number from that range */ + node = pos; + while(node && node != RBTREE_NULL) { + rbnode_type* next = rbtree_next(node); + if(next && next != RBTREE_NULL) { + /* next value, is there a value in between? */ + uint16_t curid = tree_by_id_get_id(node); + uint16_t nextid = tree_by_id_get_id(next); + if(curid != 0xffff && curid + 1 < nextid) { + if(curid + 2 == nextid) + return curid + 1; + /* pick random value between this and next */ + return curid + 1 + ub_random_max(outnet->rnd, + nextid - curid - 1); + } + } else { + /* no next, but are there larger ID numbers? */ + uint16_t curid = tree_by_id_get_id(node); + if(curid < 0xffff) { + if(curid + 1 == 0xffff) + return 0xffff; + return curid + 1 + ub_random_max(outnet->rnd, + 0xffff - curid - 1); + } + + } + node = next; + } + /* search before pos */ + node = rbtree_first(&reuse->tree_by_id); + while(node != pos && node && node != RBTREE_NULL) { + rbnode_type* next = rbtree_next(node); + if(next && next != RBTREE_NULL) { + /* next value, is there a value in between? */ + uint16_t curid = tree_by_id_get_id(node); + uint16_t nextid = tree_by_id_get_id(next); + if(curid != 0xffff && curid + 1 < nextid) { + if(curid + 2 == nextid) + return curid + 1; + /* pick random value between this and next */ + return curid + 1 + ub_random_max(outnet->rnd, + nextid - curid - 1); + } + } + node = next; + } + /* not possible, we have less than max elements */ + log_assert(reuse->tree_by_id.count < 0xffff); + return 0; } struct waiting_tcp* @@ -1516,7 +1667,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* if so, take it into use */ reuse = reuse_tcp_find(sq->outnet, sq); if(reuse) { - verbose(5, "pending_tcp_query: found reuse"); + log_reuse_tcp(5, "pending_tcp_query: found reuse", reuse); log_assert(reuse->pending); pend = reuse->pending; } @@ -1544,7 +1695,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, } w->pkt = NULL; w->pkt_len = 0; - id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; + if(reuse) + id = reuse_tcp_select_id(reuse, sq->outnet); + else id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; LDNS_ID_SET(sldns_buffer_begin(packet), id); memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; @@ -1564,6 +1717,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, verbose(5, "pending_tcp_query: reuse, store"); /* if cannot write now, store query and put it * in the waiting list for this stream TODO */ + /* and insert in tree_by_id */ /* and also delete it from waitlst if query gone, * eg. sq is deleted TODO */ /* and also servfail all waiting queries if @@ -1576,6 +1730,8 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to * write query */ + memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); + pend->reuse.addrlen = sq->addrlen; if(!outnet_tcp_take_into_use(w, sldns_buffer_begin(packet), sldns_buffer_limit(packet))) { diff --git a/services/outside_network.h b/services/outside_network.h index 12c72c990..7328283c6 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -233,8 +233,8 @@ struct port_comm { struct reuse_tcp { /** rbtree node with links in tcp_reuse tree. key is NULL when not * in tree. Both active and empty connections are in the tree. - * key is this structure, the sockaddr and then ptr value for - * several times same address in tree */ + * key is this structure, the sockaddr and and then is-ssl bool, + * and then ptr value for several times same address in tree */ rbnode_type node; /** the key for the tcp_reuse tree. address of peer, ip4 or ip6, * and port number of peer */ @@ -261,15 +261,21 @@ struct reuse_tcp { /** rbtree with other queries waiting on the connection, by ID number, * of type struct waiting_tcp. It is for looking up received * answers to the structure for callback. And also to see if ID - * numbers are unused and can be used for a new query. */ + * numbers are unused and can be used for a new query. + * The write_wait elements are also in the tree, so that ID numbers + * can be looked up also for them. They are bool write_wait_queued. */ rbtree_type tree_by_id; /** list of queries waiting to be written on the channel, * if NULL no queries are waiting to be written and the pending->query * is the query currently serviced. The first is the next in line. - * Once written, a query moves to the tree_by_id. */ + * They are also in the tree_by_id. Once written, the are removed + * from this list, but stay in the tree. */ struct waiting_tcp* write_wait_first, *write_wait_last; }; +/** max number of queries on a reuse connection */ +#define MAX_REUSE_TCP_QUERIES 65000 + /** * A query that has an answer pending for it. */ From 150e1b0491cebb678a171d0a62ce2409619e43b1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 14:03:34 +0200 Subject: [PATCH 042/394] spare id random selection better. --- services/outside_network.c | 97 ++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 51 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index b30666945..cfc467af1 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1584,72 +1584,67 @@ tree_by_id_get_id(rbnode_type* node) static uint16_t reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) { - uint16_t id = 0; + uint16_t id = 0, curid, nextid; const int try_random = 2000; int i; - rbnode_type* pos, *node; + unsigned select, count, space; + rbnode_type* node; for(i = 0; irnd)>>8) & 0xffff; if(!reuse_tcp_by_id_find(reuse, id)) { return id; } } - /** cannot probe a random element from the list, we pick one from - * the list that is unused */ - pos = (rbnode_type*)reuse_tcp_by_id_find(reuse, id); - if(!pos) + + /* make really sure the tree is not empty */ + if(reuse->tree_by_id.count == 0) { + id = ((unsigned)ub_random(outnet->rnd)>>8) & 0xffff; return id; - /* search for first available id number after the random position */ - /* pick a random position, find the first unused range and pick - * a random number from that range */ - node = pos; + } + + /* equally pick a random unused element from the tree that is + * not in use. Pick a the n-th index of an ununused number, + * then loop over the empty spaces in the tree and find it */ + log_assert(reuse->tree_by_id.count < 0xffff); + select = ub_random_max(outnet->rnd, 0xffff - reuse->tree_by_id.count); + /* select value now in 0 .. num free - 1 */ + + count = 0; /* number of free spaces passed by */ + node = rbtree_first(&reuse->tree_by_id); + log_assert(node && node != RBTREE_NULL); /* tree not empty */ + /* see if select is before first node */ + if(select < tree_by_id_get_id(node)) + return select; + count += tree_by_id_get_id(node); + /* perhaps select is between nodes */ while(node && node != RBTREE_NULL) { rbnode_type* next = rbtree_next(node); if(next && next != RBTREE_NULL) { - /* next value, is there a value in between? */ - uint16_t curid = tree_by_id_get_id(node); - uint16_t nextid = tree_by_id_get_id(next); + curid = tree_by_id_get_id(node); + nextid = tree_by_id_get_id(next); if(curid != 0xffff && curid + 1 < nextid) { - if(curid + 2 == nextid) - return curid + 1; - /* pick random value between this and next */ - return curid + 1 + ub_random_max(outnet->rnd, - nextid - curid - 1); - } - } else { - /* no next, but are there larger ID numbers? */ - uint16_t curid = tree_by_id_get_id(node); - if(curid < 0xffff) { - if(curid + 1 == 0xffff) - return 0xffff; - return curid + 1 + ub_random_max(outnet->rnd, - 0xffff - curid - 1); + /* space between nodes */ + space = nextid - curid - 1; + if(select < count + space) { + /* here it is */ + return curid + 1 + ub_random_max( + outnet->rnd, space); + } + count += space; } + } + node = next; + } - } - node = next; - } - /* search before pos */ - node = rbtree_first(&reuse->tree_by_id); - while(node != pos && node && node != RBTREE_NULL) { - rbnode_type* next = rbtree_next(node); - if(next && next != RBTREE_NULL) { - /* next value, is there a value in between? */ - uint16_t curid = tree_by_id_get_id(node); - uint16_t nextid = tree_by_id_get_id(next); - if(curid != 0xffff && curid + 1 < nextid) { - if(curid + 2 == nextid) - return curid + 1; - /* pick random value between this and next */ - return curid + 1 + ub_random_max(outnet->rnd, - nextid - curid - 1); - } - } - node = next; - } - /* not possible, we have less than max elements */ - log_assert(reuse->tree_by_id.count < 0xffff); - return 0; + /* select is after the last node */ + /* count is the number of free positions before the nodes in the + * tree */ + node = rbtree_last(&reuse->tree_by_id); + log_assert(node && node != RBTREE_NULL); /* tree not empty */ + curid = tree_by_id_get_id(node); + space = 0xffff - curid; + log_assert(select < count + space); + return curid + 1 + ub_random_max(outnet->rnd, space); } struct waiting_tcp* From 7cc6a89e21124362987a137f50fcba81ac55e197 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 14:23:06 +0200 Subject: [PATCH 043/394] fix spare id random selection. --- services/outside_network.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index cfc467af1..8710c637a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1589,12 +1589,6 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) int i; unsigned select, count, space; rbnode_type* node; - for(i = 0; irnd)>>8) & 0xffff; - if(!reuse_tcp_by_id_find(reuse, id)) { - return id; - } - } /* make really sure the tree is not empty */ if(reuse->tree_by_id.count == 0) { @@ -1602,6 +1596,14 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) return id; } + /* try to find random empty spots by picking them */ + for(i = 0; irnd)>>8) & 0xffff; + if(!reuse_tcp_by_id_find(reuse, id)) { + return id; + } + } + /* equally pick a random unused element from the tree that is * not in use. Pick a the n-th index of an ununused number, * then loop over the empty spaces in the tree and find it */ @@ -1627,8 +1629,7 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) space = nextid - curid - 1; if(select < count + space) { /* here it is */ - return curid + 1 + ub_random_max( - outnet->rnd, space); + return curid + 1 + (select - count); } count += space; } @@ -1642,9 +1643,7 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) node = rbtree_last(&reuse->tree_by_id); log_assert(node && node != RBTREE_NULL); /* tree not empty */ curid = tree_by_id_get_id(node); - space = 0xffff - curid; - log_assert(select < count + space); - return curid + 1 + ub_random_max(outnet->rnd, space); + return curid + 1 + (select - count); } struct waiting_tcp* From fd723aed277f9f5ee491cb94b2c872fb2456f818 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 3 Jun 2020 17:24:26 +0200 Subject: [PATCH 044/394] tcp connection is stored and picked up for reuse fix that comm_point_start_listening does not close the same fd that is started. --- services/outside_network.c | 34 +++++++++++++++++--------- testdata/tcp_reuse.tdir/tcp_reuse.post | 3 ++- testdata/tcp_reuse.tdir/tcp_reuse.pre | 2 +- util/netevent.c | 4 ++- 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 8710c637a..bb0792c06 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -494,7 +494,7 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, reuse->node.key = NULL; } /* delete from reuse list */ - if(reuse->pending) { + if(reuse->item_on_lru_list) { if(reuse->lru_prev) { /* assert that members of the lru list are waiting * and thus have a pending pointer to the struct */ @@ -513,7 +513,7 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, log_assert(!reuse->lru_prev || reuse->lru_prev->pending); outnet->tcp_reuse_last = reuse->lru_prev; } - reuse->pending = NULL; + reuse->item_on_lru_list = 0; } } @@ -559,13 +559,14 @@ static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { log_reuse_tcp(5, "reuse_tcp_insert", &pend_tcp->reuse); + if(pend_tcp->reuse.item_on_lru_list) + return 1; pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { /* this is a duplicate connection, close this one */ verbose(5, "reuse_tcp_insert: duplicate connection"); pend_tcp->reuse.node.key = NULL; - pend_tcp->reuse.pending = NULL; return 0; } /* insert into LRU, first is newest */ @@ -578,6 +579,7 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) outnet->tcp_reuse_last = &pend_tcp->reuse; } outnet->tcp_reuse_first = &pend_tcp->reuse; + pend_tcp->reuse.item_on_lru_list = 1; return 1; } @@ -605,15 +607,21 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, /* add to reuse tree so it can be reused, if not a failure. * This is possible if the state machine wants to make a tcp * query again to the same destination. */ - (void)reuse_tcp_insert(outnet, pend); + if(outnet->tcp_reuse.count < outnet->tcp_reuse_max) { + (void)reuse_tcp_insert(outnet, pend); + } } fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); - /* if reused, it should not be decommissioned, TODO */ - /* or if another query wants to write, write that and read for more - * or more outstanding queries on the stream. TODO */ - /* TODO also write multiple queries over the stream, even if no - * replies have returned yet */ + verbose(5, "outnet_tcp_cb reuse after cb"); + if(pend->reuse.node.key) { + verbose(5, "outnet_tcp_cb reuse after cb: keep it"); + /* it is in the reuse_tcp tree, with other queries, or + * on the empty list. do not decommission it */ + return 0; + } + verbose(5, "outnet_tcp_cb reuse after cb: decommission it"); + /* no queries on it, no space to keep it. Close it */ decommission_pending_tcp(outnet, pend); use_free_buffer(outnet); return 0; @@ -1491,9 +1499,6 @@ reuse_tcp_close_oldest(struct outside_network* outnet) outnet->tcp_reuse_first = NULL; } - /* TODO should only close unused in tree, not ones that are in use, - * for which we need also a tree to find in-use streams for multiple - * queries on them */ /* free up */ decommission_pending_tcp(outnet, pend); } @@ -1521,6 +1526,8 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) memmove(&key_w.addr, &sq->addr, sq->addrlen); key_w.addrlen = sq->addrlen; + verbose(5, "reuse_tcp_find: num reuse streams %u", + (unsigned)outnet->tcp_reuse.count); if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, &result)) { /* exact match */ @@ -1531,6 +1538,7 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) /* not found, return null */ if(!result || result == RBTREE_NULL) return NULL; + verbose(5, "reuse_tcp_find check inexact match"); /* inexact match, find one of possibly several connections to the * same destination address, with the correct port, ssl, and * also less than max number of open queries, or else, fail to open @@ -1717,6 +1725,8 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* and also servfail all waiting queries if * stream closes TODO */ /* reuse existing fd, write query and continue */ + w->next_waiting = (void*)pend; + pend->query = w; outnet_tcp_take_query_setup(pend->c->fd, pend, sldns_buffer_begin(packet), sldns_buffer_limit(packet)); diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.post b/testdata/tcp_reuse.tdir/tcp_reuse.post index 7399d3603..a1cdef9ab 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.post +++ b/testdata/tcp_reuse.tdir/tcp_reuse.post @@ -7,11 +7,12 @@ # do your teardown here . ../common.sh kill_pid $UPSTREAM_PID -kill_pid $UNBOUND_PID if test -f unbound2.log; then echo ">>> upstream log" cat unbound2.log fi +#kill_pid $UNBOUND_PID +kill_pid `cat unbound.pid` if test -f unbound.log; then echo ">>> unbound log" cat unbound.log diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.pre b/testdata/tcp_reuse.tdir/tcp_reuse.pre index 511dbc6f7..30dbdc96f 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.pre +++ b/testdata/tcp_reuse.tdir/tcp_reuse.pre @@ -16,7 +16,7 @@ echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf > ub.conf # start unbound in the background #$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & -$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +valgrind $PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test wait_unbound_up unbound.log diff --git a/util/netevent.c b/util/netevent.c index f7bb9b897..5dd746633 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3066,6 +3066,7 @@ comm_point_close(struct comm_point* c) if(!c) return; if(c->fd != -1) { + verbose(5, "comm_point_close of %d: event_del", c->fd); if(ub_event_del(c->ev->ev) != 0) { log_err("could not event_del on close"); } @@ -3225,7 +3226,8 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) else ub_event_add_bits(c->ev->ev, UB_EV_WRITE); } if(newfd != -1) { - if(c->fd != -1) { + if(c->fd != -1 && c->fd != newfd) { + verbose(5, "cpsl close of fd %d for %d", c->fd, newfd); #ifndef USE_WINSOCK close(c->fd); #else From c053513cbddb31340a578d4f9a39763c0ce465b0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 8 Jun 2020 08:35:10 +0200 Subject: [PATCH 045/394] - Mention tls name possible when tls is enabled for stub-addr in the man page. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 3 +++ 2 files changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ef0c7e18f..4f847da48 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 June 2020: Wouter + - Mention tls name possible when tls is enabled for stub-addr in the + man page. + 27 May 2020: George - Merge PR #241 by Robert Edmonds: contrib/libunbound.pc.in: Do not use "Requires:". diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 2f2733773..6bb7ca09f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1614,6 +1614,9 @@ Name of stub zone nameserver. Is itself resolved before it is used. .B stub\-addr: \fI IP address of stub zone nameserver. Can be IP 4 or IP 6. To use a nondefault port for DNS communication append '@' with the port number. +If tls is enabled, then you can append a '#' and a name, then it'll check +the tls authentication certificates with that name. If you combine +the '@' and '#', the '@' comes first. .TP .B stub\-prime: \fI This option is by default no. If enabled it performs NS set priming, From d8b7b5ee27c002682228a69a07c7ed7a152422d5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 9 Jun 2020 09:14:01 +0200 Subject: [PATCH 046/394] fix to set pending pointer in reuse tcp structure fix debug output of reuse tcp and test leak of process --- services/outside_network.c | 6 ++++-- testdata/tcp_reuse.tdir/tcp_reuse.post | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index bb0792c06..f11999d7c 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -457,6 +457,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) pend->query = w; pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); + pend->reuse.pending = pend; outnet_tcp_take_query_setup(s, pend, pkt, pkt_len); return 1; } @@ -550,8 +551,8 @@ log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) if(verbosity < v) return; addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); - verbose(v, "%s %s %u %lx", msg, addrbuf, (unsigned)port, - (unsigned long)reuse); + verbose(v, "%s %s#%u 0x%llx fd %d", msg, addrbuf, (unsigned)port, + (unsigned long long)reuse, reuse->pending->c->fd); } /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ @@ -1734,6 +1735,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to * write query */ + pend->reuse.pending = pend; memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); pend->reuse.addrlen = sq->addrlen; if(!outnet_tcp_take_into_use(w, diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.post b/testdata/tcp_reuse.tdir/tcp_reuse.post index a1cdef9ab..ca7535471 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.post +++ b/testdata/tcp_reuse.tdir/tcp_reuse.post @@ -6,7 +6,7 @@ # # do your teardown here . ../common.sh -kill_pid $UPSTREAM_PID +kill_pid `cat unbound2.pid` if test -f unbound2.log; then echo ">>> upstream log" cat unbound2.log From a695ba447c6d57f982a5133533067bd822886323 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 9 Jun 2020 16:15:03 +0200 Subject: [PATCH 047/394] set timeout to wait for reuse add comm_point indicator for write events for reuse stream writes. --- services/outside_network.c | 17 +++++++++++++++-- services/outside_network.h | 2 ++ util/netevent.h | 7 +++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index f11999d7c..b885c3a1a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -341,8 +341,8 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, uint8_t* pkt, sldns_buffer_clear(pend->c->buffer); sldns_buffer_write(pend->c->buffer, pkt, pkt_len); sldns_buffer_flip(pend->c->buffer); - pend->c->tcp_is_reading = 0; - pend->c->tcp_byte_count = 0; + pend->c->tcp_write_and_read = 1; + pend->c->tcp_write_byte_count = 0; comm_point_start_listening(pend->c, s, -1); } @@ -584,6 +584,17 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) return 1; } +/** set timeout on tcp fd and setup read event to catch incoming dns msgs */ +static void +reuse_tcp_setup_readtimeout(struct pending_tcp* pend_tcp) +{ + log_reuse_tcp(5, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse); + sldns_buffer_clear(pend_tcp->c->buffer); + pend_tcp->c->tcp_is_reading = 1; + pend_tcp->c->tcp_byte_count = 0; + comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); +} + int outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct comm_reply *reply_info) @@ -610,6 +621,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * query again to the same destination. */ if(outnet->tcp_reuse.count < outnet->tcp_reuse_max) { (void)reuse_tcp_insert(outnet, pend); + reuse_tcp_setup_readtimeout(pend); } } fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); @@ -1931,6 +1943,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, if(!reuse_tcp_insert(sq->outnet, pend_tcp)) { return 0; } + reuse_tcp_setup_readtimeout(pend_tcp); return 1; } return 0; diff --git a/services/outside_network.h b/services/outside_network.h index 7328283c6..40501da18 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -275,6 +275,8 @@ struct reuse_tcp { /** max number of queries on a reuse connection */ #define MAX_REUSE_TCP_QUERIES 65000 +/** timeout for REUSE entries in milliseconds. */ +#define REUSE_TIMEOUT 30000 /** * A query that has an answer pending for it. diff --git a/util/netevent.h b/util/netevent.h index bb2cd1e53..019855468 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -247,6 +247,13 @@ struct comm_point { and after read/write completes. No callback is done. */ int tcp_do_close; + /** flag that indicates the stream is both written and read from. */ + int tcp_write_and_read; + + /** byte count for written length over write channel, for when + * tcp_write_and_read is enabled */ + size_t tcp_write_byte_count; + /** if set, read/write completes: read/write state of tcp is toggled. buffer reset/bytecount reset. From 6e0756e819779d9cc2a14741b501cadffe446c93 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 17 Jun 2020 08:20:52 +0200 Subject: [PATCH 048/394] - Fix default explanation in man page for qname-minimisation-strict. --- doc/Changelog | 3 +++ doc/unbound.conf.5.in | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 4f847da48..17bbc3bad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +17 June 2020: Wouter + - Fix default explanation in man page for qname-minimisation-strict. + 8 June 2020: Wouter - Mention tls name possible when tls is enabled for stub-addr in the man page. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 6bb7ca09f..de5a333bd 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -864,7 +864,7 @@ NXDOMAIN from a DNSSEC signed zone. Default is yes. QNAME minimisation in strict mode. Do not fall-back to sending full QNAME to potentially broken nameservers. A lot of domains will not be resolvable when this option in enabled. Only use if you know what you are doing. -This option only has effect when qname-minimisation is enabled. Default is off. +This option only has effect when qname-minimisation is enabled. Default is no. .TP .B aggressive\-nsec: \fI Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN From 5203954068285d2260a65a6997fd60928b80a581 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 17 Jun 2020 14:32:57 +0200 Subject: [PATCH 049/394] - Fix display of event loop method with libev. --- doc/Changelog | 1 + util/ub_event.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 17bbc3bad..00d2ecfcf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 17 June 2020: Wouter - Fix default explanation in man page for qname-minimisation-strict. + - Fix display of event loop method with libev. 8 June 2020: Wouter - Mention tls name possible when tls is enabled for stub-addr in the diff --git a/util/ub_event.c b/util/ub_event.c index 9af476ad4..68f633bb0 100644 --- a/util/ub_event.c +++ b/util/ub_event.c @@ -148,7 +148,7 @@ const char* ub_event_get_version(void) return event_get_version(); } -#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EVBACKEND_SELECT) +#if (defined(HAVE_EV_LOOP) || defined(HAVE_EV_DEFAULT_LOOP)) && defined(EV_FEATURE_BACKENDS) static const char* ub_ev_backend2str(int b) { switch(b) { @@ -184,7 +184,7 @@ ub_get_event_sys(struct ub_event_base* base, const char** n, const char** s, *n = "libev"; if (!b) b = (struct event_base*)ev_default_loop(EVFLAG_AUTO); -# ifdef EVBACKEND_SELECT +# ifdef EV_FEATURE_BACKENDS *m = ub_ev_backend2str(ev_backend((struct ev_loop*)b)); # else *m = "not obtainable"; From a1babfff1efceda6e1c1ea931ad16eb649c23a7b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Jun 2020 17:31:36 +0200 Subject: [PATCH 050/394] add bool if on tcp waiting list, so that pkt can be stored. remove pkt args from outnet_tcp_take_into_use, use w.pkt. --- services/outside_network.c | 38 +++++++++++++++++--------------------- services/outside_network.h | 6 +++++- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index b885c3a1a..a4d3b332d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -348,12 +348,13 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, uint8_t* pkt, /** use next free buffer to service a tcp query */ static int -outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) +outnet_tcp_take_into_use(struct waiting_tcp* w) { struct pending_tcp* pend = w->outnet->tcp_free; int s; log_assert(pend); - log_assert(pkt); + log_assert(w->pkt); + log_assert(w->pkt_len > 0); log_assert(w->addrlen > 0); /* open socket */ s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss, w->outnet->ip_dscp); @@ -449,7 +450,6 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) return 0; } } - w->pkt = NULL; w->next_waiting = (void*)pend; w->outnet->num_tcp_outgoing++; w->outnet->tcp_free = pend->next_free; @@ -458,7 +458,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w, uint8_t* pkt, size_t pkt_len) pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; - outnet_tcp_take_query_setup(s, pend, pkt, pkt_len); + outnet_tcp_take_query_setup(s, pend, w->pkt, w->pkt_len); return 1; } @@ -473,7 +473,8 @@ use_free_buffer(struct outside_network* outnet) outnet->tcp_wait_first = w->next_waiting; if(outnet->tcp_wait_last == w) outnet->tcp_wait_last = NULL; - if(!outnet_tcp_take_into_use(w, w->pkt, w->pkt_len)) { + w->on_tcp_waiting_list = 0; + if(!outnet_tcp_take_into_use(w)) { comm_point_callback_type* cb = w->cb; void* cb_arg = w->cb_arg; waiting_tcp_delete(w); @@ -1455,7 +1456,7 @@ outnet_tcptimer(void* arg) struct outside_network* outnet = w->outnet; int do_callback = 1; verbose(5, "outnet_tcptimer"); - if(w->pkt) { + if(w->on_tcp_waiting_list) { /* it is on the waiting list */ waiting_list_remove(outnet, w); } else { @@ -1696,11 +1697,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, pend = sq->outnet->tcp_free; } - /* if no buffer is free allocate space to store query */ - /* TODO: if reuse cannot write right now, store query even though - * pend is nonNULL */ + /* allocate space to store query */ w = (struct waiting_tcp*)malloc(sizeof(struct waiting_tcp) - + (pend?0:sldns_buffer_limit(packet))); + + sldns_buffer_limit(packet)); if(!w) { return NULL; } @@ -1708,8 +1707,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, free(w); return NULL; } - w->pkt = NULL; - w->pkt_len = 0; + w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp); + w->pkt_len = sldns_buffer_limit(packet); + memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len); if(reuse) id = reuse_tcp_select_id(reuse, sq->outnet); else id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; @@ -1741,8 +1741,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->next_waiting = (void*)pend; pend->query = w; outnet_tcp_take_query_setup(pend->c->fd, pend, - sldns_buffer_begin(packet), - sldns_buffer_limit(packet)); + w->pkt, w->pkt_len); } else { verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to @@ -1750,9 +1749,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, pend->reuse.pending = pend; memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); pend->reuse.addrlen = sq->addrlen; - if(!outnet_tcp_take_into_use(w, - sldns_buffer_begin(packet), - sldns_buffer_limit(packet))) { + if(!outnet_tcp_take_into_use(w)) { waiting_tcp_delete(w); return NULL; } @@ -1767,14 +1764,12 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, } else { /* queue up */ verbose(5, "pending_tcp_query: queue to wait"); - w->pkt = (uint8_t*)w + sizeof(struct waiting_tcp); - w->pkt_len = sldns_buffer_limit(packet); - memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len); w->next_waiting = NULL; if(sq->outnet->tcp_wait_last) sq->outnet->tcp_wait_last->next_waiting = w; else sq->outnet->tcp_wait_first = w; sq->outnet->tcp_wait_last = w; + w->on_tcp_waiting_list = 1; } return w; } @@ -1893,6 +1888,7 @@ static void waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w) { struct waiting_tcp* p = outnet->tcp_wait_first, *prev = NULL; + w->on_tcp_waiting_list = 0; while(p) { if(p == w) { /* remove w */ @@ -1974,7 +1970,7 @@ serviced_delete(struct serviced_query* sq) verbose(5, "serviced_delete: TCP"); /* TODO: if on stream-write-waiting list then * remove from waiting list and waiting_tcp_delete */ - if(p->pkt == NULL) { + if(!p->on_tcp_waiting_list) { verbose(5, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(p, sq)) { decommission_pending_tcp(sq->outnet, diff --git a/services/outside_network.h b/services/outside_network.h index 40501da18..8e6347ed4 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -274,7 +274,7 @@ struct reuse_tcp { }; /** max number of queries on a reuse connection */ -#define MAX_REUSE_TCP_QUERIES 65000 +#define MAX_REUSE_TCP_QUERIES 200 /** timeout for REUSE entries in milliseconds. */ #define REUSE_TIMEOUT 30000 @@ -344,6 +344,10 @@ struct waiting_tcp { * if pkt==0, this points to the pending_tcp structure. */ struct waiting_tcp* next_waiting; + /** if true the item is on the tcp waiting list and next_waiting + * is used for that. If false, the next_waiting points to the + * pending_tcp */ + int on_tcp_waiting_list; /** next and prev in query waiting list for stream connection */ struct waiting_tcp* write_wait_prev, *write_wait_next; /** true if the waiting_tcp structure is on the write_wait queue */ From 4b6e41e3deafd8a54e881390f65bf19c2e6cd09c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Jun 2020 17:37:23 +0200 Subject: [PATCH 051/394] fix documentation for waiting_tcp pkt NULL setting. --- services/outside_network.h | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/services/outside_network.h b/services/outside_network.h index 8e6347ed4..341bd5223 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -341,7 +341,7 @@ struct pending_tcp { struct waiting_tcp { /** * next in waiting list. - * if pkt==0, this points to the pending_tcp structure. + * if on_tcp_waiting_list==0, this points to the pending_tcp structure. */ struct waiting_tcp* next_waiting; /** if true the item is on the tcp waiting list and next_waiting @@ -367,8 +367,6 @@ struct waiting_tcp { /** * The query itself, the query packet to send. * allocated after the waiting_tcp structure. - * set to NULL when the query is serviced and it part of pending_tcp. - * if this is NULL, the next_waiting points to the pending_tcp. */ uint8_t* pkt; /** length of query packet. */ From 0e0c57734aaedf0f4ea734adf6571ab19f729a31 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Jun 2020 17:40:45 +0200 Subject: [PATCH 052/394] fix uninit after malloc for on_tcp_waiting_list. --- services/outside_network.c | 1 + 1 file changed, 1 insertion(+) diff --git a/services/outside_network.c b/services/outside_network.c index a4d3b332d..0b155616f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1717,6 +1717,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; w->outnet = sq->outnet; + w->on_tcp_waiting_list = 0; w->cb = callback; w->cb_arg = callback_arg; w->ssl_upstream = sq->ssl_upstream; From d96e718f802baa1fed344c76cc22770c0a521c3f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 19 Jun 2020 18:04:12 +0200 Subject: [PATCH 053/394] fix crash on cleanup. --- services/outside_network.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 0b155616f..99b969026 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1488,7 +1488,8 @@ outnet_tcptimer(void* arg) fptr_ok(fptr_whitelist_pending_tcp(cb)); (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); } else { - waiting_tcp_delete(w); + /* waiting_tcp_delete(w); -- should be deleted if entire + * stream with reuse elements is gone. TODO remove this? */ } use_free_buffer(outnet); } @@ -1718,6 +1719,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->addrlen = sq->addrlen; w->outnet = sq->outnet; w->on_tcp_waiting_list = 0; + w->next_waiting = NULL; w->cb = callback; w->cb_arg = callback_arg; w->ssl_upstream = sq->ssl_upstream; From c809bb9ece278a3a685fa4982a4f71aa5d279ef8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 23 Jun 2020 15:29:40 +0200 Subject: [PATCH 054/394] tcp reuse timeout event cleanup and callbacks. --- services/outside_network.c | 97 ++++++++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 14 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 99b969026..7e58b1c99 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1449,26 +1449,95 @@ pending_udp_query(struct serviced_query* sq, struct sldns_buffer* packet, return pend; } +/** perform failure callbacks for waiting queries in reuse write list */ +static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) +{ + struct waiting_tcp* w; + w = pend->reuse.write_wait_first; + while(w) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + w = w->write_wait_next; + } +} + +/** perform failure callbacks for waiting queries in reuse read rbtree */ +static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) +{ + rbnode_type* node; + node = rbtree_first(&pend->reuse.tree_by_id); + while(node && node != RBTREE_NULL) { + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + node = rbtree_next(node); + } +} + +/** perform failure callbacks for current written query in reuse struct */ +static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) +{ + struct waiting_tcp* w = pend->query; + if(w) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + } +} + +/** helper function that deletes and element from the tree of readwait + * elements in tcp reuse structure */ +static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) +{ + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + waiting_tcp_delete(w); +} + +/** delete readwait waiting_tcp elements, deletes the elements in the list */ +static void reuse_del_readwait(struct pending_tcp* pend) +{ + traverse_postorder(&pend->reuse.tree_by_id, &reuse_del_readwait_elem, + NULL); +} + +/** delete writewait waiting_tcp elements, deletes the elements in the list */ +static void reuse_del_writewait(struct pending_tcp* pend) +{ + struct waiting_tcp* w, *n; + w = pend->reuse.write_wait_first; + while(w) { + n = w->write_wait_next; + waiting_tcp_delete(w); + w = n; + } +} + void outnet_tcptimer(void* arg) { struct waiting_tcp* w = (struct waiting_tcp*)arg; struct outside_network* outnet = w->outnet; - int do_callback = 1; verbose(5, "outnet_tcptimer"); if(w->on_tcp_waiting_list) { /* it is on the waiting list */ + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; waiting_list_remove(outnet, w); + waiting_tcp_delete(w); + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); } else { /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; /* see if it needs unlink from reuse tree */ if(pend->reuse.pending) { reuse_tcp_remove_tree_list(outnet, &pend->reuse); - do_callback = 0; } - /* do failure callbacks for all the queries in the - * wait for write list and in the id-tree TODO */ if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -1477,20 +1546,20 @@ outnet_tcptimer(void* arg) #endif } comm_point_close(pend->c); + /* do failure callbacks for all the queries in the + * wait for write list and in the id-tree */ + /* callback for 'w' arg already in list of curquery, + * readwait list, writewait list */ + reuse_cb_curquery_for_failure(pend, NETEVENT_TIMEOUT); + reuse_cb_readwait_for_failure(pend, NETEVENT_TIMEOUT); + reuse_cb_writewait_for_failure(pend, NETEVENT_TIMEOUT); + waiting_tcp_delete(pend->query); /* del curquery */ + reuse_del_readwait(pend); + reuse_del_writewait(pend); pend->query = NULL; pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; } - if(do_callback) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - waiting_tcp_delete(w); - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); - } else { - /* waiting_tcp_delete(w); -- should be deleted if entire - * stream with reuse elements is gone. TODO remove this? */ - } use_free_buffer(outnet); } From 6f9310173db5bb34ddd4634cb4fa4a6940510a08 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 23 Jun 2020 17:32:33 +0200 Subject: [PATCH 055/394] Fix grammar. --- services/outside_network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 7e58b1c99..6c2cfd543 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1490,7 +1490,7 @@ static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) } } -/** helper function that deletes and element from the tree of readwait +/** helper function that deletes an element from the tree of readwait * elements in tcp reuse structure */ static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) { From 8ca34be36a4a18ce69b8dcdd303af19c5c301de5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 10:09:49 +0200 Subject: [PATCH 056/394] fix reuse tcp crash, use addr in reuse struct, free leaked tcp entries. --- services/outside_network.c | 29 +++++++++++++++++++++-------- services/outside_network.h | 2 ++ 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 6c2cfd543..bf71856ca 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -140,8 +140,7 @@ reuse_cmp_addrportssl(const void* key1, const void* key2) struct reuse_tcp* r2 = (struct reuse_tcp*)key2; int r; /* compare address and port */ - r = sockaddr_cmp(&r1->pending->query->addr, r1->pending->query->addrlen, - &r2->pending->query->addr, r2->pending->query->addrlen); + r = sockaddr_cmp(&r1->addr, r1->addrlen, &r2->addr, r2->addrlen); if(r != 0) return r; @@ -455,6 +454,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) w->outnet->tcp_free = pend->next_free; pend->next_free = NULL; pend->query = w; + pend->reuse.outnet = w->outnet; pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; @@ -535,7 +535,7 @@ decommission_pending_tcp(struct outside_network* outnet, comm_point_close(pend->c); pend->next_free = outnet->tcp_free; outnet->tcp_free = pend; - if(pend->reuse.pending) { + if(pend->reuse.node.key) { /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); } @@ -601,7 +601,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct comm_reply *reply_info) { struct pending_tcp* pend = (struct pending_tcp*)arg; - struct outside_network* outnet = pend->query->outnet; + struct outside_network* outnet = pend->reuse.outnet; verbose(VERB_ALGO, "outnettcp cb"); if(error != NETEVENT_NOERROR) { verbose(VERB_QUERY, "outnettcp got tcp error %d", error); @@ -612,7 +612,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, LDNS_ID_WIRE(sldns_buffer_begin(c->buffer))!=pend->id) { log_addr(VERB_QUERY, "outnettcp: bad ID in reply, from:", - &pend->query->addr, pend->query->addrlen); + &pend->reuse.addr, pend->reuse.addrlen); error = NETEVENT_CLOSED; } } @@ -625,8 +625,12 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, reuse_tcp_setup_readtimeout(pend); } } - fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); - (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); + if(pend->query) { + fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); + (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); + waiting_tcp_delete(pend->query); + pend->query = NULL; + } verbose(5, "outnet_tcp_cb reuse after cb"); if(pend->reuse.node.key) { verbose(5, "outnet_tcp_cb reuse after cb: keep it"); @@ -1467,6 +1471,9 @@ static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) { rbnode_type* node; + if(pend->reuse.tree_by_id.root == NULL || + pend->reuse.tree_by_id.root == RBTREE_NULL) + return; node = rbtree_first(&pend->reuse.tree_by_id); while(node && node != RBTREE_NULL) { struct waiting_tcp* w = (struct waiting_tcp*)node->key; @@ -1501,6 +1508,9 @@ static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) /** delete readwait waiting_tcp elements, deletes the elements in the list */ static void reuse_del_readwait(struct pending_tcp* pend) { + if(pend->reuse.tree_by_id.root == NULL || + pend->reuse.tree_by_id.root == RBTREE_NULL) + return; traverse_postorder(&pend->reuse.tree_by_id, &reuse_del_readwait_elem, NULL); } @@ -1535,7 +1545,7 @@ outnet_tcptimer(void* arg) /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; /* see if it needs unlink from reuse tree */ - if(pend->reuse.pending) { + if(pend->reuse.node.key) { reuse_tcp_remove_tree_list(outnet, &pend->reuse); } if(pend->c->ssl) { @@ -1612,6 +1622,9 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) verbose(5, "reuse_tcp_find: num reuse streams %u", (unsigned)outnet->tcp_reuse.count); + if(outnet->tcp_reuse.root == NULL || + outnet->tcp_reuse.root == RBTREE_NULL) + return NULL; if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, &result)) { /* exact match */ diff --git a/services/outside_network.h b/services/outside_network.h index 341bd5223..dfac321ce 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -271,6 +271,8 @@ struct reuse_tcp { * They are also in the tree_by_id. Once written, the are removed * from this list, but stay in the tree. */ struct waiting_tcp* write_wait_first, *write_wait_last; + /** the outside network it is part of */ + struct outside_network* outnet; }; /** max number of queries on a reuse connection */ From 04d805b0eb8a32968ee951847d7203868eab4382 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 12:57:15 +0200 Subject: [PATCH 057/394] reuse tcp lookup with correct address as key. --- services/outside_network.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index bf71856ca..bec24e571 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1615,10 +1615,10 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) key_p.reuse.node.key = &key_p.reuse; if(sq->ssl_upstream) /* something nonNULL for comparisons in tree */ key_p.c->ssl = (void*)1; - if(sq->addrlen > sizeof(key_w.addr)) + if(sq->addrlen > sizeof(key_p.reuse.addr)) return NULL; - memmove(&key_w.addr, &sq->addr, sq->addrlen); - key_w.addrlen = sq->addrlen; + memmove(&key_p.reuse.addr, &sq->addr, sq->addrlen); + key_p.reuse.addrlen = sq->addrlen; verbose(5, "reuse_tcp_find: num reuse streams %u", (unsigned)outnet->tcp_reuse.count); From be1182c3db4347ba4314ebd199a75da9bab64d46 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 13:33:47 +0200 Subject: [PATCH 058/394] - iana portlist updated. --- doc/Changelog | 3 +++ util/iana_ports.inc | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 00d2ecfcf..9b54f491a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +24 June 2020: Wouter + - iana portlist updated. + 17 June 2020: Wouter - Fix default explanation in man page for qname-minimisation-strict. - Fix display of event loop method with libev. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index b26677efb..79488f49a 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -3771,6 +3771,7 @@ 4188, 4191, 4192, +4195, 4197, 4199, 4300, @@ -5230,6 +5231,7 @@ 18241, 18262, 18463, +18516, 18634, 18635, 18668, From 2a90e8fa1e22aa75d1cf67a1f71ebbf3f920366b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 13:37:43 +0200 Subject: [PATCH 059/394] - doxygen file comments for dynlibmodule. --- doc/Changelog | 1 + dynlibmod/dynlibmod.c | 6 ++++++ dynlibmod/examples/helloworld.c | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9b54f491a..ff3810b9d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 24 June 2020: Wouter - iana portlist updated. + - doxygen file comments for dynlibmodule. 17 June 2020: Wouter - Fix default explanation in man page for qname-minimisation-strict. diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 09b6cd40f..f9751d8c6 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -1,3 +1,9 @@ +/** + * \file + * This file contains the dynamic library module for Unbound. + * This loads a dynamic library (.dll, .so) and calls that for the + * module actions. + */ #include "config.h" #include "util/module.h" #include "util/config_file.h" diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 2ec50223e..acb6b5d9b 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -1,4 +1,6 @@ -/* +/** + * \file + * * This is an example to show how dynamic libraries can be made to work with * unbound. To build a .so file simply run: * gcc -I../.. -shared -Wall -Werror -fpic -o helloworld.so helloworld.c From 0fbfce4c9916630a0abcbcb87e51a326fd63c2d9 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 24 Jun 2020 14:04:34 +0200 Subject: [PATCH 060/394] - Add DoH tests --- services/mesh.c | 4 + sldns/parseutil.c | 49 ++- sldns/parseutil.h | 2 + .../doh_downstream.tdir/doh_downstream.conf | 27 ++ .../doh_downstream.tdir/doh_downstream.dsc | 16 + .../doh_downstream.tdir/doh_downstream.post | 11 + .../doh_downstream.tdir/doh_downstream.pre | 31 ++ .../doh_downstream.tdir/doh_downstream.test | 343 ++++++++++++++++++ .../doh_downstream.tdir/doh_downstream.testns | 74 ++++ .../doh_downstream.tdir/unbound_server.key | 15 + .../doh_downstream.tdir/unbound_server.pem | 11 + .../doh_downstream_post.conf | 27 ++ .../doh_downstream_post.dsc | 16 + .../doh_downstream_post.post | 11 + .../doh_downstream_post.pre | 30 ++ .../doh_downstream_post.test | 343 ++++++++++++++++++ .../doh_downstream_post.testns | 74 ++++ .../unbound_server.key | 15 + .../unbound_server.pem | 11 + util/netevent.c | 6 +- 20 files changed, 1103 insertions(+), 13 deletions(-) create mode 100644 testdata/doh_downstream.tdir/doh_downstream.conf create mode 100644 testdata/doh_downstream.tdir/doh_downstream.dsc create mode 100644 testdata/doh_downstream.tdir/doh_downstream.post create mode 100644 testdata/doh_downstream.tdir/doh_downstream.pre create mode 100644 testdata/doh_downstream.tdir/doh_downstream.test create mode 100644 testdata/doh_downstream.tdir/doh_downstream.testns create mode 100644 testdata/doh_downstream.tdir/unbound_server.key create mode 100644 testdata/doh_downstream.tdir/unbound_server.pem create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.conf create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.dsc create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.post create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.pre create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.test create mode 100644 testdata/doh_downstream_post.tdir/doh_downstream_post.testns create mode 100644 testdata/doh_downstream_post.tdir/unbound_server.key create mode 100644 testdata/doh_downstream_post.tdir/unbound_server.pem diff --git a/services/mesh.c b/services/mesh.c index 225449fb9..c2afdbf82 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1212,6 +1212,10 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, rcode = LDNS_RCODE_SERVFAIL; if(r->query_reply.c->alpn_h2) { r->query_reply.c->h2_stream = r->h2_stream; + /* Mesh reply won't exist for long anymore. Make it impossible + * for HTTP/2 stream to refer to mesh state, in case + * connection gets cleanup before HTTP/2 stream close. */ + r->h2_stream->mesh_state = NULL; } /* send the reply */ /* We don't reuse the encoded answer if either the previous or current diff --git a/sldns/parseutil.c b/sldns/parseutil.c index b51a0709d..dc8354b62 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -619,13 +619,18 @@ size_t sldns_b64_ntop_calculate_size(size_t srcsize) * * This routine does not insert spaces or linebreaks after 76 characters. */ -int sldns_b64_ntop(uint8_t const *src, size_t srclength, - char *target, size_t targsize) +static int sldns_b64_ntop_base(uint8_t const *src, size_t srclength, + char *target, size_t targsize, int base64url, int padding) { - const char* b64 = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + char* b64; const char pad64 = '='; size_t i = 0, o = 0; + if(base64url) + b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123" + "456789-_"; + else + b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123" + "456789+/"; if(targsize < sldns_b64_ntop_calculate_size(srclength)) return -1; /* whole chunks: xxxxxxyy yyyyzzzz zzwwwwww */ @@ -645,18 +650,26 @@ int sldns_b64_ntop(uint8_t const *src, size_t srclength, target[o] = b64[src[i] >> 2]; target[o+1] = b64[ ((src[i]&0x03)<<4) | (src[i+1]>>4) ]; target[o+2] = b64[ ((src[i+1]&0x0f)<<2) ]; - target[o+3] = pad64; - /* i += 2; */ - o += 4; + if(padding) { + target[o+3] = pad64; + /* i += 2; */ + o += 4; + } else { + o += 3; + } break; case 1: /* one at end, converted into A B = = */ target[o] = b64[src[i] >> 2]; target[o+1] = b64[ ((src[i]&0x03)<<4) ]; - target[o+2] = pad64; - target[o+3] = pad64; - /* i += 1; */ - o += 4; + if(padding) { + target[o+2] = pad64; + target[o+3] = pad64; + /* i += 1; */ + o += 4; + } else { + o += 2; + } break; case 0: default: @@ -669,6 +682,20 @@ int sldns_b64_ntop(uint8_t const *src, size_t srclength, return (int)o; } +int sldns_b64_ntop(uint8_t const *src, size_t srclength, char *target, + size_t targsize) +{ + return sldns_b64_ntop_base(src, srclength, target, targsize, + 0 /* no base64url */, 1 /* padding */); +} + +int sldns_b64url_ntop(uint8_t const *src, size_t srclength, char *target, + size_t targsize) +{ + return sldns_b64_ntop_base(src, srclength, target, targsize, + 1 /* base64url */, 0 /* no padding */); +} + size_t sldns_b64_pton_calculate_size(size_t srcsize) { return (((((srcsize + 3) / 4) * 3)) + 1); diff --git a/sldns/parseutil.h b/sldns/parseutil.h index 852ad3fb5..7eb23317f 100644 --- a/sldns/parseutil.h +++ b/sldns/parseutil.h @@ -92,6 +92,8 @@ size_t sldns_b64_ntop_calculate_size(size_t srcsize); int sldns_b64_ntop(uint8_t const *src, size_t srclength, char *target, size_t targsize); +int sldns_b64url_ntop(uint8_t const *src, size_t srclength, char *target, + size_t targsize); /** * calculates the size needed to store the result of sldns_b64_pton diff --git a/testdata/doh_downstream.tdir/doh_downstream.conf b/testdata/doh_downstream.tdir/doh_downstream.conf new file mode 100644 index 000000000..f0857bb58 --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.conf @@ -0,0 +1,27 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-query-buffer-size: 1G + http-response-buffer-size: 1G + http-max-streams: 200 + + local-zone: "example.net" static + local-data: "www1.example.net. IN A 1.2.3.1" + local-data: "www2.example.net. IN A 1.2.3.2" + local-data: "www3.example.net. IN A 1.2.3.3" + local-zone: "drop.net" deny + tcp-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/doh_downstream.tdir/doh_downstream.dsc b/testdata/doh_downstream.tdir/doh_downstream.dsc new file mode 100644 index 000000000..66b84284e --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream +Version: 1.0 +Description: Test DNS-over-HTTPS query processing +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream.pre +Post: doh_downstream.post +Test: doh_downstream.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream.tdir/doh_downstream.post b/testdata/doh_downstream.tdir/doh_downstream.post new file mode 100644 index 000000000..432e0eedd --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.post @@ -0,0 +1,11 @@ +# #-- doh_downstream.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream.tdir/doh_downstream.pre b/testdata/doh_downstream.tdir/doh_downstream.pre new file mode 100644 index 000000000..84734d76e --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.pre @@ -0,0 +1,31 @@ +# #-- doh_downstream.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT doh_downstream.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/testdata/doh_downstream.tdir/doh_downstream.test b/testdata/doh_downstream.tdir/doh_downstream.test new file mode 100644 index 000000000..98a54af26 --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.test @@ -0,0 +1,343 @@ +# #-- doh_downstream.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE dohclient) + + +# this test query should just work (server is up) +echo "> query www1.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +# multiple requests (from localdata) +echo "> query www1.example.net. www2.example.net. www3.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www2.example.com. www3.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www.example.com. www3.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www3.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www3.example.com. www2.example.net. www3.example.com. www3.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.com" outfile | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +echo "" +echo "> query www4.example.com. www3.example.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www4.example.com" outfile | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + + +echo "" +echo "> query a1.example.com. - a90.example.com." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +grep "a.example.com. IN A" outfile + +echo "" +echo "> query www5.example.net. www3.example.net. www.drop.net." +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "OK" +exit 0 diff --git a/testdata/doh_downstream.tdir/doh_downstream.testns b/testdata/doh_downstream.tdir/doh_downstream.testns new file mode 100644 index 000000000..c53941b67 --- /dev/null +++ b/testdata/doh_downstream.tdir/doh_downstream.testns @@ -0,0 +1,74 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.45 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.46 +ENTRY_END + +; lots of noerror/nodata answers for other queries (a.. queries) +ENTRY_BEGIN +MATCH opcode qtype subdomain +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +a.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns hostmaster 2019 28800 7200 604800 3600 +ENTRY_END diff --git a/testdata/doh_downstream.tdir/unbound_server.key b/testdata/doh_downstream.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream.tdir/unbound_server.pem b/testdata/doh_downstream.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.conf b/testdata/doh_downstream_post.tdir/doh_downstream_post.conf new file mode 100644 index 000000000..f0857bb58 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.conf @@ -0,0 +1,27 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-query-buffer-size: 1G + http-response-buffer-size: 1G + http-max-streams: 200 + + local-zone: "example.net" static + local-data: "www1.example.net. IN A 1.2.3.1" + local-data: "www2.example.net. IN A 1.2.3.2" + local-data: "www3.example.net. IN A 1.2.3.3" + local-zone: "drop.net" deny + tcp-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.dsc b/testdata/doh_downstream_post.tdir/doh_downstream_post.dsc new file mode 100644 index 000000000..70de7502f --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream_post +Version: 1.0 +Description: Test DNS-over-HTTPS query processing, using POST method +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream_post.pre +Post: doh_downstream_post.post +Test: doh_downstream_post.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.post b/testdata/doh_downstream_post.tdir/doh_downstream_post.post new file mode 100644 index 000000000..f66183b70 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.post @@ -0,0 +1,11 @@ +# #-- doh_downstream_post.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.pre b/testdata/doh_downstream_post.tdir/doh_downstream_post.pre new file mode 100644 index 000000000..e32f187c5 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.pre @@ -0,0 +1,30 @@ +# #-- doh_downstream_post.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT doh_downstream_post.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_post.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.test b/testdata/doh_downstream_post.tdir/doh_downstream_post.test new file mode 100644 index 000000000..4a49c8b51 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.test @@ -0,0 +1,343 @@ +# #-- doh_downstream_post.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE dohclient) + + +# this test query should just work (server is up) +echo "> query www1.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +# multiple requests (from localdata) +echo "> query www1.example.net. www2.example.net. www3.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www2.example.com. www3.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www.example.com. www3.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www3.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www3.example.com. www2.example.net. www3.example.com. www3.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.com" outfile | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +echo "" +echo "> query www4.example.com. www3.example.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www4.example.com" outfile | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + + +echo "" +echo "> query a1.example.com. - a90.example.com." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +grep "a.example.com. IN A" outfile + +echo "" +echo "> query www5.example.net. www3.example.net. www.drop.net." +$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "OK" +exit 0 diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.testns b/testdata/doh_downstream_post.tdir/doh_downstream_post.testns new file mode 100644 index 000000000..c53941b67 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.testns @@ -0,0 +1,74 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.45 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.46 +ENTRY_END + +; lots of noerror/nodata answers for other queries (a.. queries) +ENTRY_BEGIN +MATCH opcode qtype subdomain +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +a.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns hostmaster 2019 28800 7200 604800 3600 +ENTRY_END diff --git a/testdata/doh_downstream_post.tdir/unbound_server.key b/testdata/doh_downstream_post.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream_post.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream_post.tdir/unbound_server.pem b/testdata/doh_downstream_post.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream_post.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/util/netevent.c b/util/netevent.c index 749781934..49ad08a4d 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2289,12 +2289,13 @@ struct http2_stream* http2_stream_create(int32_t stream_id) } /** Delete http2 stream. After session delete or stream close callback */ -void http2_stream_delete(struct http2_session* h2_session, +static void http2_stream_delete(struct http2_session* h2_session, struct http2_stream* h2_stream) { if(h2_stream->mesh_state) { mesh_state_remove_reply(h2_stream->mesh, h2_stream->mesh_state, h2_session->c); + h2_stream->mesh_state = NULL; } http2_req_stream_clear(h2_stream); free(h2_stream); @@ -2426,7 +2427,8 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) /* reading until recv cb returns NGHTTP2_ERR_WOULDBLOCK */ ret = nghttp2_session_recv(c->h2_session->session); if(ret) { - if(ret != NGHTTP2_ERR_EOF) { + if(ret != NGHTTP2_ERR_EOF && + ret != NGHTTP2_ERR_CALLBACK_FAILURE) { verbose(VERB_QUERY, "http2: session_recv failed, " "error: %s", nghttp2_strerror(ret)); } From 2e66809c6587ff806e7b2af29cdc2078868b20b7 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 24 Jun 2020 14:59:56 +0200 Subject: [PATCH 061/394] - Add dohclient, for use in tests --- testcode/dohclient.c | 577 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 577 insertions(+) create mode 100644 testcode/dohclient.c diff --git a/testcode/dohclient.c b/testcode/dohclient.c new file mode 100644 index 000000000..10f365898 --- /dev/null +++ b/testcode/dohclient.c @@ -0,0 +1,577 @@ +/* + * testcode/dohclient.c - debug program. Perform multiple DNS queries using DoH. + * + * Copyright (c) 2020, NLnet Labs. All rights reserved. + * + * This software is open source. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * Neither the name of the NLNET LABS nor the names of its contributors may + * be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/** + * \file + * + * Simple DNS-over-HTTPS client. For testing and debugging purposes. + * No authentication of TLS cert. + */ + +#include "config.h" +#ifdef HAVE_GETOPT_H +#include +#endif +#include "sldns/wire2str.h" +#include "sldns/sbuffer.h" +#include "sldns/str2wire.h" +#include "sldns/parseutil.h" +#include "util/data/msgencode.h" +#include "util/data/msgreply.h" +#include "util/data/msgparse.h" +#include "util/net_help.h" +#include +#include +#ifdef HAVE_NGHTTP2 +#include + +struct http2_session { + nghttp2_session* session; + SSL* ssl; + int fd; + int query_count; + /* Use POST :method if 1 */ + int post; + int block_select; + const char* authority; + const char* endpoint; + const char* content_type; +}; + +struct http2_stream { + int32_t stream_id; + int res_status; + struct sldns_buffer* buf; + char* path; +}; + +static void usage(char* argv[]) +{ + printf("usage: %s [options] name type class ...\n", argv[0]); + printf(" sends the name-type-class queries over " + "DNS-over-HTTPS.\n"); + printf("-s server IP address to send the queries to, " + "default: 127.0.0.1\n"); + printf("-p Port to connect to, default: %d\n", + UNBOUND_DNS_OVER_HTTPS_PORT); + printf("-P Use POST method instead of default GET\n"); + printf("-e HTTP endpoint, default: /dns-query\n"); + printf("-c Content-type in request, default: " + "application/dns-message\n"); + printf("-h This help text\n"); + exit(1); +} + +/** open TCP socket to svr */ +static int +open_svr(const char* svr, int port) +{ + struct sockaddr_storage addr; + socklen_t addrlen; + int fd = -1; + int r; + if(!ipstrtoaddr(svr, port, &addr, &addrlen)) { + printf("fatal: bad server specs '%s'\n", svr); + exit(1); + } + + fd = socket(addr_is_ip6(&addr, addrlen)?PF_INET6:PF_INET, + SOCK_STREAM, 0); + if(fd == -1) { + perror("socket() error"); + exit(1); + } + r = connect(fd, (struct sockaddr*)&addr, addrlen); + if(r < 0 && r != EINPROGRESS) { + perror("connect() error"); + exit(1); + } + return fd; +} + +static ssize_t http2_submit_request_read_cb( + nghttp2_session* ATTR_UNUSED(session), + int32_t ATTR_UNUSED(stream_id), uint8_t* buf, size_t length, + uint32_t* data_flags, nghttp2_data_source* source, + void* ATTR_UNUSED(cb_arg)) +{ + if(length > sldns_buffer_remaining(source->ptr)) + length = sldns_buffer_remaining(source->ptr); + + memcpy(buf, sldns_buffer_current(source->ptr), length); + sldns_buffer_skip(source->ptr, length); + + if(sldns_buffer_remaining(source->ptr) == 0) { + *data_flags |= NGHTTP2_DATA_FLAG_EOF; + } + + return length; +} + +static void +submit_query(struct http2_session* h2_session, struct sldns_buffer* buf) +{ + int32_t stream_id; + struct http2_stream* h2_stream; + nghttp2_nv headers[5]; + char* qb64; + size_t qb64_size; + size_t qb64_expected_size; + size_t i; + nghttp2_data_provider data_prd; + + h2_stream = calloc(1, sizeof(*h2_stream)); + if(!h2_stream) + fatal_exit("could not malloc http2 stream"); + h2_stream->buf = buf; + + if(h2_session->post) { + data_prd.source.ptr = buf; + data_prd.read_callback = http2_submit_request_read_cb; + h2_stream->path = (char*)h2_session->endpoint; + } else { + qb64_expected_size = sldns_b64_ntop_calculate_size( + sldns_buffer_remaining(buf)); + qb64 = malloc(qb64_expected_size); + if(!qb64) fatal_exit("out of memory"); + qb64_size = sldns_b64url_ntop(sldns_buffer_begin(buf), + sldns_buffer_remaining(buf), qb64, qb64_expected_size); + h2_stream->path = malloc(strlen( + h2_session->endpoint)+strlen("?dns=")+qb64_size+1); + if(!h2_stream->path) fatal_exit("out of memory"); + sprintf(h2_stream->path, "%s?dns=%s", h2_session->endpoint, + qb64); + free(qb64); + } + + headers[0].name = (uint8_t*)":method"; + if(h2_session->post) + headers[0].value = (uint8_t*)"POST"; + else + headers[0].value = (uint8_t*)"GET"; + headers[1].name = (uint8_t*)":path"; + headers[1].value = (uint8_t*)h2_stream->path; + headers[2].name = (uint8_t*)":scheme"; + headers[2].value = (uint8_t*)"https"; + headers[3].name = (uint8_t*)":authority"; + headers[3].value = (uint8_t*)h2_session->authority; + headers[4].name = (uint8_t*)"content-type"; + headers[4].value = (uint8_t*)h2_session->content_type; + + printf("Request headers\n"); + for(i=0; isession, NULL, headers, + sizeof(headers)/sizeof(headers[0]), + (h2_session->post) ? &data_prd : NULL, h2_stream); + if(stream_id < 0) { + printf("Failed to submit nghttp2 request"); + exit(1); + } + h2_session->query_count++; + h2_stream->stream_id = stream_id; +} + +static sldns_buffer* +make_query(char* qname, char* qtype, char* qclass) +{ + struct query_info qinfo; + struct edns_data edns; + sldns_buffer* buf = sldns_buffer_new(65553); + if(!buf) fatal_exit("out of memory"); + qinfo.qname = sldns_str2wire_dname(qname, &qinfo.qname_len); + if(!qinfo.qname) { + printf("cannot parse query name: '%s'\n", qname); + exit(1); + } + + qinfo.qtype = sldns_get_rr_type_by_name(qtype); + qinfo.qclass = sldns_get_rr_class_by_name(qclass); + qinfo.local_alias = NULL; + + qinfo_query_encode(buf, &qinfo); /* flips buffer */ + sldns_buffer_write_u16_at(buf, 0, 0x0000); + sldns_buffer_write_u16_at(buf, 2, BIT_RD); + memset(&edns, 0, sizeof(edns)); + edns.edns_present = 1; + edns.bits = EDNS_DO; + edns.udp_size = 4096; + if(sldns_buffer_capacity(buf) >= + sldns_buffer_limit(buf)+calc_edns_field_size(&edns)) + attach_edns_record(buf, &edns); + return buf; +} + +static ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), + uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + int r; + struct timeval tv, *waittv; + fd_set rfd; + ERR_clear_error(); + + memset(&tv, 0, sizeof(tv)); + + if(h2_session->block_select && h2_session->query_count <= 0) { + return NGHTTP2_ERR_WOULDBLOCK; + } + if(h2_session->block_select) + waittv = NULL; + else + waittv = &tv; + memset(&rfd, 0, sizeof(rfd)); + FD_ZERO(&rfd); + FD_SET(h2_session->fd, &rfd); + r = select(h2_session->fd+1, &rfd, NULL, NULL, waittv); + if(r <= 0) { + return NGHTTP2_ERR_WOULDBLOCK; + } + + r = SSL_read(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } + log_crypto_err("could not SSL_read"); + return NGHTTP2_ERR_EOF; + } + return r; +} + +static ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), + const uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + + int r; + ERR_clear_error(); + r = SSL_write(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + return r; +} + +static int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), + int32_t ATTR_UNUSED(stream_id), + nghttp2_error_code ATTR_UNUSED(error_code), void *cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + struct http2_stream* h2_stream; + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + return 0; + } + h2_session->query_count--; + sldns_buffer_free(h2_stream->buf); + if(!h2_session->post) + free(h2_stream->path); + free(h2_stream); + h2_stream = NULL; + return 0; +} + +static int http2_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), + uint8_t ATTR_UNUSED(flags), int32_t stream_id, const uint8_t* data, + size_t len, void* cb_arg) +{ + struct http2_session* h2_session = (struct http2_session*)cb_arg; + struct http2_stream* h2_stream; + + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, stream_id))) { + return 0; + } + + sldns_buffer_write(h2_stream->buf, data, len); + + return 0; +} + +static int http2_frame_recv_cb(nghttp2_session *session, + const nghttp2_frame *frame, void* ATTR_UNUSED(cb_arg)) +{ + struct http2_stream* h2_stream; + + if(!(h2_stream = nghttp2_session_get_stream_user_data( + session, frame->hd.stream_id))) + return 0; + if(frame->hd.type == NGHTTP2_HEADERS && + frame->headers.cat == NGHTTP2_HCAT_RESPONSE) { + sldns_buffer_clear(h2_stream->buf); + } + if(((frame->hd.type != NGHTTP2_DATA && + frame->hd.type != NGHTTP2_HEADERS) || + frame->hd.flags & NGHTTP2_FLAG_END_STREAM) && + h2_stream->res_status == 200) { + char* pktstr; + sldns_buffer_flip(h2_stream->buf); + pktstr = sldns_wire2str_pkt( + sldns_buffer_begin(h2_stream->buf), + sldns_buffer_limit(h2_stream->buf)); + printf("%s\n", pktstr); + free(pktstr); + return 0; + } + return 0; +} +static int http2_header_cb(nghttp2_session* ATTR_UNUSED(session), + const nghttp2_frame* frame, const uint8_t* name, size_t namelen, + const uint8_t* value, size_t ATTR_UNUSED(valuelen), + uint8_t ATTR_UNUSED(flags), void* cb_arg) +{ + struct http2_stream* h2_stream; + struct http2_session* h2_session = (struct http2_session*)cb_arg; + printf("%s %s\n", name, value); + if(namelen == 7 && memcmp(":status", name, namelen) == 0) { + if(!(h2_stream = nghttp2_session_get_stream_user_data( + h2_session->session, frame->hd.stream_id))) { + return 0; + } + h2_stream->res_status = atoi((char*)value); + } + return 0; +} + +static struct http2_session* +http2_session_create() +{ + struct http2_session* h2_session = calloc(1, + sizeof(struct http2_session)); + nghttp2_session_callbacks* callbacks; + if(!h2_session) + fatal_exit("out of memory"); + + if(nghttp2_session_callbacks_new(&callbacks) == NGHTTP2_ERR_NOMEM) { + log_err("failed to initialize nghttp2 callback"); + return NULL; + } + nghttp2_session_callbacks_set_recv_callback(callbacks, http2_recv_cb); + nghttp2_session_callbacks_set_send_callback(callbacks, http2_send_cb); + nghttp2_session_callbacks_set_on_stream_close_callback(callbacks, + http2_stream_close_cb); + nghttp2_session_callbacks_set_on_data_chunk_recv_callback(callbacks, + http2_data_chunk_recv_cb); + nghttp2_session_callbacks_set_on_frame_recv_callback(callbacks, + http2_frame_recv_cb); + nghttp2_session_callbacks_set_on_header_callback(callbacks, + http2_header_cb); + nghttp2_session_client_new(&h2_session->session, callbacks, h2_session); + return h2_session; +} + +static void +http2_session_delete(struct http2_session* h2_session) +{ + nghttp2_session_del(h2_session->session); + free(h2_session); +} + +static void +http2_submit_setting(struct http2_session* h2_session) +{ + int ret; + nghttp2_settings_entry settings[1] = { + {NGHTTP2_SETTINGS_MAX_CONCURRENT_STREAMS, + 100}}; + + ret = nghttp2_submit_settings(h2_session->session, NGHTTP2_FLAG_NONE, + settings, 1); + if(ret) { + printf("http2: submit_settings failed, " + "error: %s\n", nghttp2_strerror(ret)); + exit(1); + } +} + +static void +http2_write(struct http2_session* h2_session) +{ + if(nghttp2_session_want_write(h2_session->session)) { + if(nghttp2_session_send(h2_session->session)) { + printf("nghttp2 session send failed\n"); + exit(1); + } + } +} + +static void +http2_read(struct http2_session* h2_session) +{ + if(nghttp2_session_want_read(h2_session->session)) { + if(nghttp2_session_recv(h2_session->session)) { + printf("nghttp2 session mem_recv failed\n"); + exit(1); + } + } +} + +static void +run(struct http2_session* h2_session, int port, int count, char** q) +{ + int i; + SSL_CTX* ctx = NULL; + SSL* ssl = NULL; + int fd; + struct sldns_buffer* buf = NULL; + + fd = open_svr(h2_session->authority, port); + h2_session->fd = fd; + + ctx = connect_sslctx_create(NULL, NULL, NULL, 0); + if(!ctx) fatal_exit("cannot create ssl ctx"); + SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); + ssl = outgoing_ssl_fd(ctx, fd); + if(!ssl) { + printf("cannot create ssl\n"); + exit(1); + } + h2_session->ssl = ssl; + while(1) { + int r; + ERR_clear_error(); + if( (r=SSL_do_handshake(ssl)) == 1) + break; + r = SSL_get_error(ssl, r); + if(r != SSL_ERROR_WANT_READ && + r != SSL_ERROR_WANT_WRITE) { + log_crypto_err("could not ssl_handshake"); + exit(1); + } + } + + http2_submit_setting(h2_session); + http2_write(h2_session); + http2_read(h2_session); /* Read setting from remote peer */ + + h2_session->block_select = 1; + + /* hande query */ + for(i=0; iquery_count) { + http2_read(h2_session); + http2_write(h2_session); + } + + /* shutdown */ + http2_session_delete(h2_session); + SSL_shutdown(ssl); + SSL_free(ssl); + SSL_CTX_free(ctx); + close(fd); +} + +/** getopt global, in case header files fail to declare it. */ +extern int optind; +/** getopt global, in case header files fail to declare it. */ +extern char* optarg; +int main(int argc, char** argv) +{ + int c; + int port = UNBOUND_DNS_OVER_HTTPS_PORT; + struct http2_session* h2_session = http2_session_create(); + if(!h2_session) fatal_exit("out of memory"); + + if(argc == 1) { + usage(argv); + } + + h2_session->authority = "127.0.0.1"; + h2_session->post = 0; + h2_session->endpoint = "/dns-query"; + h2_session->content_type = "application/dns-message"; + + while((c=getopt(argc, argv, "c:e:hs:p:P")) != -1) { + switch(c) { + case 'c': + h2_session->content_type = optarg; + break; + case 'e': + h2_session->endpoint = optarg; + break; + case 'p': + if(atoi(optarg)==0 && strcmp(optarg,"0")!=0) { + printf("error parsing port, " + "number expected: %s\n", optarg); + return 1; + } + port = atoi(optarg); + break; + case 'P': + h2_session->post = 1; + break; + case 's': + h2_session->authority = optarg; + break; + case 'h': + case '?': + default: + usage(argv); + } + } + argc -= optind; + argv += optind; + if(argc%3!=0) { + printf("Invalid input. Specify qname, qtype, and qclass.\n"); + return 1; + } + + + run(h2_session, port, argc, argv); + + return 0; +} +#else +int main(int ATTR_UNUSED(argc), char** ATTR_UNUSED(argv)) +{ + printf("Compiled without nghttp2, cannot run test.\n"); +} +#endif /* HAVE_NGHTTP2 */ From 941559c2b7409b3e01bf89c73cf0c8fcfb3fb50b Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 24 Jun 2020 15:09:05 +0200 Subject: [PATCH 062/394] dohclient memory leak fix --- testcode/dohclient.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 10f365898..060d71ee4 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -227,6 +227,7 @@ make_query(char* qname, char* qtype, char* qclass) qinfo.local_alias = NULL; qinfo_query_encode(buf, &qinfo); /* flips buffer */ + free(qinfo.qname); sldns_buffer_write_u16_at(buf, 0, 0x0000); sldns_buffer_write_u16_at(buf, 2, BIT_RD); memset(&edns, 0, sizeof(edns)); @@ -401,6 +402,7 @@ http2_session_create() nghttp2_session_callbacks_set_on_header_callback(callbacks, http2_header_cb); nghttp2_session_client_new(&h2_session->session, callbacks, h2_session); + nghttp2_session_callbacks_del(callbacks); return h2_session; } From d9cdb924ad132190353e3373ed01f592afec5d5d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 24 Jun 2020 15:34:50 +0200 Subject: [PATCH 063/394] Add DoH endpoint configuration test --- .../doh_downstream_endpoint.conf | 17 +++++ .../doh_downstream_endpoint.dsc | 16 +++++ .../doh_downstream_endpoint.post | 10 +++ .../doh_downstream_endpoint.pre | 22 +++++++ .../doh_downstream_endpoint.test | 62 +++++++++++++++++++ .../unbound_server.key | 15 +++++ .../unbound_server.pem | 11 ++++ 7 files changed, 153 insertions(+) create mode 100644 testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.conf create mode 100644 testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.dsc create mode 100644 testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post create mode 100644 testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre create mode 100644 testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test create mode 100644 testdata/doh_downstream_endpoint.tdir/unbound_server.key create mode 100644 testdata/doh_downstream_endpoint.tdir/unbound_server.pem diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.conf b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.conf new file mode 100644 index 000000000..3ec5ed4a1 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.conf @@ -0,0 +1,17 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-endpoint: "/abc" + + local-zone: "example.net" static + local-data: "www.example.net. IN A 1.2.3.1" diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.dsc b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.dsc new file mode 100644 index 000000000..ef36a1968 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream +Version: 1.0 +Description: Test DNS-over-HTTPS query processing, endpoint setting +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream_endpoint.pre +Post: doh_downstream_endpoint.post +Test: doh_downstream_endpoint.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post new file mode 100644 index 000000000..ffad089e4 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post @@ -0,0 +1,10 @@ +# #-- doh_downstream.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre new file mode 100644 index 000000000..4f10a9a18 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre @@ -0,0 +1,22 @@ +# #-- doh_downstream.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 1 +UNBOUND_PORT=$RND_PORT +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_endpoint.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test new file mode 100644 index 000000000..6ae176dd9 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test @@ -0,0 +1,62 @@ +# #-- doh_downstream.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE dohclient) + + +echo "> query www.example.net. endpoint /dns-query" +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "status 404" outfile; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +echo "> query www.example.net. endpoint /dns-query" +$PRE/dohclient -e /abc -s 127.0.0.1 -p $UNBOUND_PORT www.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep ":status 200" outfile; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" +exit 0 diff --git a/testdata/doh_downstream_endpoint.tdir/unbound_server.key b/testdata/doh_downstream_endpoint.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream_endpoint.tdir/unbound_server.pem b/testdata/doh_downstream_endpoint.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream_endpoint.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- From 75da272afe1f02480eb9984533b239eae895e546 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 16:28:42 +0200 Subject: [PATCH 064/394] reuse tcp id_cmp function. clear list and tree after delete. clear when decommisioned. callbacks when closed for lru space, and when closed because not kept open. --- services/outside_network.c | 91 +++++++++++++++++++++++++------------- services/outside_network.h | 5 ++- util/fptr_wlist.c | 1 + 3 files changed, 66 insertions(+), 31 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index bec24e571..14532b1f4 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -168,6 +168,19 @@ reuse_cmp(const void* key1, const void* key2) return 0; } +int reuse_id_cmp(const void* key1, const void* key2) +{ + struct waiting_tcp* w1 = (struct waiting_tcp*)key1; + struct waiting_tcp* w2 = (struct waiting_tcp*)key2; + struct pending_tcp* p1 = (struct pending_tcp*)w1->next_waiting; + struct pending_tcp* p2 = (struct pending_tcp*)w2->next_waiting; + if(p1->id < p2->id) + return -1; + if(p1->id > p2->id) + return 1; + return 0; +} + /** delete waiting_tcp entry. Does not unlink from waiting list. * @param w: to delete. */ @@ -519,6 +532,39 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, } } +/** helper function that deletes an element from the tree of readwait + * elements in tcp reuse structure */ +static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) +{ + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + waiting_tcp_delete(w); +} + +/** delete readwait waiting_tcp elements, deletes the elements in the list */ +static void reuse_del_readwait(struct pending_tcp* pend) +{ + if(pend->reuse.tree_by_id.root == NULL || + pend->reuse.tree_by_id.root == RBTREE_NULL) + return; + traverse_postorder(&pend->reuse.tree_by_id, &reuse_del_readwait_elem, + NULL); + rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); +} + +/** delete writewait waiting_tcp elements, deletes the elements in the list */ +static void reuse_del_writewait(struct pending_tcp* pend) +{ + struct waiting_tcp* w, *n; + w = pend->reuse.write_wait_first; + while(w) { + n = w->write_wait_next; + waiting_tcp_delete(w); + w = n; + } + pend->reuse.write_wait_first = NULL; + pend->reuse.write_wait_last = NULL; +} + /** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */ static void decommission_pending_tcp(struct outside_network* outnet, @@ -541,6 +587,8 @@ decommission_pending_tcp(struct outside_network* outnet, } waiting_tcp_delete(pend->query); pend->query = NULL; + reuse_del_readwait(pend); + reuse_del_writewait(pend); } /** log reuse item addr and ptr with message */ @@ -1497,36 +1545,6 @@ static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) } } -/** helper function that deletes an element from the tree of readwait - * elements in tcp reuse structure */ -static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) -{ - struct waiting_tcp* w = (struct waiting_tcp*)node->key; - waiting_tcp_delete(w); -} - -/** delete readwait waiting_tcp elements, deletes the elements in the list */ -static void reuse_del_readwait(struct pending_tcp* pend) -{ - if(pend->reuse.tree_by_id.root == NULL || - pend->reuse.tree_by_id.root == RBTREE_NULL) - return; - traverse_postorder(&pend->reuse.tree_by_id, &reuse_del_readwait_elem, - NULL); -} - -/** delete writewait waiting_tcp elements, deletes the elements in the list */ -static void reuse_del_writewait(struct pending_tcp* pend) -{ - struct waiting_tcp* w, *n; - w = pend->reuse.write_wait_first; - while(w) { - n = w->write_wait_next; - waiting_tcp_delete(w); - w = n; - } -} - void outnet_tcptimer(void* arg) { @@ -1594,6 +1612,9 @@ reuse_tcp_close_oldest(struct outside_network* outnet) } /* free up */ + reuse_cb_curquery_for_failure(pend, NETEVENT_CLOSED); + reuse_cb_readwait_for_failure(pend, NETEVENT_CLOSED); + reuse_cb_writewait_for_failure(pend, NETEVENT_CLOSED); decommission_pending_tcp(outnet, pend); } @@ -1831,6 +1852,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to * write query */ + rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.pending = pend; memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); pend->reuse.addrlen = sq->addrlen; @@ -2058,6 +2080,15 @@ serviced_delete(struct serviced_query* sq) if(!p->on_tcp_waiting_list) { verbose(5, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(p, sq)) { + reuse_cb_curquery_for_failure( + (struct pending_tcp*)p-> + next_waiting, NETEVENT_CLOSED); + reuse_cb_readwait_for_failure( + (struct pending_tcp*)p-> + next_waiting, NETEVENT_CLOSED); + reuse_cb_writewait_for_failure( + (struct pending_tcp*)p-> + next_waiting, NETEVENT_CLOSED); decommission_pending_tcp(sq->outnet, (struct pending_tcp*)p->next_waiting); use_free_buffer(sq->outnet); diff --git a/services/outside_network.h b/services/outside_network.h index dfac321ce..cefee3b08 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -726,7 +726,10 @@ int pending_cmp(const void* key1, const void* key2); /** compare function of serviced query rbtree */ int serviced_cmp(const void* key1, const void* key2); -/** compare function of reuse_tcp rbtree */ +/** compare function of reuse_tcp rbtree in outside_network struct */ int reuse_cmp(const void* key1, const void* key2); +/** compare function of reuse_tcp tree_by_id rbtree */ +int reuse_id_cmp(const void* key1, const void* key2); + #endif /* OUTSIDE_NETWORK_H */ diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index ea9928606..e3baec8c2 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -227,6 +227,7 @@ fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void *)) else if(fptr == &pending_cmp) return 1; else if(fptr == &serviced_cmp) return 1; else if(fptr == &reuse_cmp) return 1; + else if(fptr == &reuse_id_cmp) return 1; else if(fptr == &name_tree_compare) return 1; else if(fptr == &order_lock_cmp) return 1; else if(fptr == &codeline_cmp) return 1; From 4aaccef8f2cc883ecde4bcb114bdaa1105bdfce4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 24 Jun 2020 16:31:10 +0200 Subject: [PATCH 065/394] fix testcode for added function whitelist item. --- testcode/fake_event.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 1159278fd..acfd0ce7a 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1496,6 +1496,12 @@ int reuse_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) return 0; } +int reuse_id_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b)) +{ + log_assert(0); + return 0; +} + /* timers in testbound for autotrust. statistics tested in tdir. */ struct comm_timer* comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg) From 70b270925df89f4382c379ba099a149ed7415007 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 24 Jun 2020 16:31:51 +0200 Subject: [PATCH 066/394] - Add http-response-buffer-size test --- .../doh_downstream_buffer_size.conf | 17 +++++++++ .../doh_downstream_buffer_size.dsc | 16 ++++++++ .../doh_downstream_buffer_size.post | 10 +++++ .../doh_downstream_buffer_size.pre | 22 +++++++++++ .../doh_downstream_buffer_size.test | 38 +++++++++++++++++++ .../unbound_server.key | 15 ++++++++ .../unbound_server.pem | 11 ++++++ .../doh_downstream_endpoint.test | 4 -- 8 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.conf create mode 100644 testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.dsc create mode 100644 testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post create mode 100644 testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre create mode 100644 testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test create mode 100644 testdata/doh_downstream_buffer_size.tdir/unbound_server.key create mode 100644 testdata/doh_downstream_buffer_size.tdir/unbound_server.pem diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.conf b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.conf new file mode 100644 index 000000000..30d8e2a4f --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.conf @@ -0,0 +1,17 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-response-buffer-size: 500 + + local-zone: "example.net" redirect + local-data: "example.net. IN A 1.2.3.1" diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.dsc b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.dsc new file mode 100644 index 000000000..c271fcdc1 --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream_buffer_size +Version: 1.0 +Description: Test DNS-over-HTTPS http-response-buffer-size +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream_buffer_size.pre +Post: doh_downstream_buffer_size.post +Test: doh_downstream_buffer_size.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post new file mode 100644 index 000000000..ffad089e4 --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post @@ -0,0 +1,10 @@ +# #-- doh_downstream.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre new file mode 100644 index 000000000..19795398c --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre @@ -0,0 +1,22 @@ +# #-- doh_downstream.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 1 +UNBOUND_PORT=$RND_PORT +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_buffer_size.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_unbound_up unbound.log + diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test new file mode 100644 index 000000000..bbeb9eb2b --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test @@ -0,0 +1,38 @@ +# #-- doh_downstream.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_make +(cd $PRE; $MAKE dohclient) + + +echo "> query www.example.net. endpoint /dns-query" +$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT 1.example.net. A IN 2.example.net. A IN 3.example.net. A IN 4.example.net. A IN 5.example.net. A IN 6.example.net. A IN 7.example.net. A IN 8.example.net. A IN 9.example.net. A IN 10.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "Not OK" + exit 1 +fi +num=$(grep "ANSWER SEC" outfile | wc -l) +# 58 byte answers, 500 byte max response buffer -> 8 answers +if [ $num -eq 8 ]; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +exit 0 diff --git a/testdata/doh_downstream_buffer_size.tdir/unbound_server.key b/testdata/doh_downstream_buffer_size.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream_buffer_size.tdir/unbound_server.pem b/testdata/doh_downstream_buffer_size.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream_buffer_size.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test index 6ae176dd9..0e25a47f6 100644 --- a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test @@ -17,7 +17,6 @@ if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile - cat fwd.log cat unbound.log echo "Not OK" exit 1 @@ -28,7 +27,6 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile - cat fwd.log cat unbound.log echo "result contents not OK" exit 1 @@ -42,7 +40,6 @@ if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile - cat fwd.log cat unbound.log echo "Not OK" exit 1 @@ -53,7 +50,6 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile - cat fwd.log cat unbound.log echo "result contents not OK" exit 1 From 5f5cdd3be1468ab608c4bf51db0577500742e48f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 13:06:21 +0200 Subject: [PATCH 067/394] comm point write and read structure members. --- util/netevent.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/util/netevent.h b/util/netevent.h index 019855468..c044f8938 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -87,6 +87,9 @@ typedef int comm_point_callback_type(struct comm_point*, void*, int, #define NETEVENT_CAPSFAIL -3 /** to pass done transfer to callback function; http file is complete */ #define NETEVENT_DONE -4 +/** to pass write of the write packet is done to callback function + * used when tcp_write_and_read is enabled */ +#define NETEVENT_PKT_WRITTEN -5 /** timeout to slow accept calls when not possible, in msec. */ #define NETEVENT_SLOW_ACCEPT_TIME 2000 @@ -254,6 +257,12 @@ struct comm_point { * tcp_write_and_read is enabled */ size_t tcp_write_byte_count; + /** packet to write currently over the write channel. for when + * tcp_write_and_read is enabled */ + uint8_t* tcp_write_pkt; + /** length of tcp_write_pkt in bytes */ + size_t tcp_write_pkt_len; + /** if set, read/write completes: read/write state of tcp is toggled. buffer reset/bytecount reset. From 39a50f30a33cd8d4a50ecf483bc13bff7eeca38e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 14:26:29 +0200 Subject: [PATCH 068/394] tcp callback handle timeout event for read and reuse keepalive. --- services/outside_network.c | 213 ++++++++++++++++++++++++++----------- services/outside_network.h | 2 + util/netevent.c | 4 +- 3 files changed, 155 insertions(+), 64 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 14532b1f4..b65bf19f9 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -346,16 +346,27 @@ outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen) /** use the buffer to setup writing the query */ static void -outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, uint8_t* pkt, - size_t pkt_len) +outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, + struct waiting_tcp* w) { - pend->id = LDNS_ID_WIRE(pkt); - sldns_buffer_clear(pend->c->buffer); - sldns_buffer_write(pend->c->buffer, pkt, pkt_len); - sldns_buffer_flip(pend->c->buffer); + struct timeval tv; + pend->id = LDNS_ID_WIRE(w->pkt); + pend->c->tcp_write_pkt = w->pkt; + pend->c->tcp_write_pkt_len = w->pkt_len; pend->c->tcp_write_and_read = 1; pend->c->tcp_write_byte_count = 0; comm_point_start_listening(pend->c, s, -1); + /* set timer on the waiting_tcp entry, this is the write timeout + * for the written packet. The timer on pend->c is the timer + * for when there is no written packet and we have readtimeouts */ +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + /* if the waiting_tcp was previously waiting for a buffer in the + * outside_network.tcpwaitlist, then the timer is reset now that + * we start writing it */ + comm_timer_set(w->timer, &tv); } /** use next free buffer to service a tcp query */ @@ -471,7 +482,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; - outnet_tcp_take_query_setup(s, pend, w->pkt, w->pkt_len); + outnet_tcp_take_query_setup(s, pend, w); return 1; } @@ -570,7 +581,7 @@ static void decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { - verbose(5, "decommision_pending_tcp"); + verbose(5, "decommission_pending_tcp"); if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -633,6 +644,75 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) return 1; } +/** perform failure callbacks for waiting queries in reuse write list */ +static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) +{ + struct waiting_tcp* w; + w = pend->reuse.write_wait_first; + while(w) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + w = w->write_wait_next; + } +} + +/** perform failure callbacks for waiting queries in reuse read rbtree */ +static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) +{ + rbnode_type* node; + if(pend->reuse.tree_by_id.root == NULL || + pend->reuse.tree_by_id.root == RBTREE_NULL) + return; + node = rbtree_first(&pend->reuse.tree_by_id); + while(node && node != RBTREE_NULL) { + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + node = rbtree_next(node); + } +} + +/** perform failure callbacks for current written query in reuse struct */ +static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) +{ + struct waiting_tcp* w = pend->query; + if(w) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, err, NULL); + } +} + +/** delete element from tree by id */ +static void +reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) +{ + log_assert(w->id_node.key != NULL); + rbtree_delete(&reuse->tree_by_id, w); + w->id_node.key = NULL; +} + +/** pop the first element from the writewait list */ +static struct waiting_tcp* reuse_write_wait_pop(struct pending_tcp* pend) +{ + struct waiting_tcp* w = pend->reuse.write_wait_first; + if(!w) + return NULL; + if(w->write_wait_prev) + w->write_wait_prev->write_wait_next = w->write_wait_next; + else pend->reuse.write_wait_first = w->write_wait_next; + if(w->write_wait_next) + w->write_wait_next->write_wait_prev = w->write_wait_prev; + else pend->reuse.write_wait_last = w->write_wait_prev; + w->write_wait_queued = 0; + return w; +} + /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void reuse_tcp_setup_readtimeout(struct pending_tcp* pend_tcp) @@ -651,7 +731,38 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct pending_tcp* pend = (struct pending_tcp*)arg; struct outside_network* outnet = pend->reuse.outnet; verbose(VERB_ALGO, "outnettcp cb"); - if(error != NETEVENT_NOERROR) { + if(error == NETEVENT_TIMEOUT) { + if(pend->c->tcp_write_and_read) + verbose(VERB_QUERY, "outnettcp got tcp timeout " + "for read, ignored because write underway"); + else verbose(VERB_QUERY, "outnettcp got tcp timeout %s", + (pend->reuse.tree_by_id.count?"for reading pkt": + "for keepalive for reuse")); + /* if we are writing, ignore readtimer, wait for write timer + * or write is done */ + if(pend->c->tcp_write_and_read) + return 0; + /* must be timeout for reading or keepalive reuse, + * close it. */ + reuse_tcp_remove_tree_list(outnet, &pend->reuse); + } else if(error == NETEVENT_PKT_WRITTEN) { + /* the packet we want to write has been written. */ + log_assert(c == pend->c); + log_assert(pend->query->pkt == pend->c->tcp_write_pkt); + log_assert(pend->query->pkt_len == pend->c->tcp_write_pkt_len); + pend->c->tcp_write_pkt = NULL; + pend->c->tcp_write_pkt_len = 0; + /* the pend.query is already in tree_by_id */ + pend->query = NULL; + /* setup to write next packet or setup read timeout */ + if(pend->reuse.write_wait_first) { + pend->query = reuse_write_wait_pop(pend); + outnet_tcp_take_query_setup(pend->c->fd, pend, + pend->query); + } else { + reuse_tcp_setup_readtimeout(pend); + } + } else if(error != NETEVENT_NOERROR) { verbose(VERB_QUERY, "outnettcp got tcp error %d", error); /* pass error below and exit */ } else { @@ -674,6 +785,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } } if(pend->query) { + reuse_tree_by_id_delete(&pend->reuse, pend->query); fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); waiting_tcp_delete(pend->query); @@ -687,7 +799,12 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, return 0; } verbose(5, "outnet_tcp_cb reuse after cb: decommission it"); - /* no queries on it, no space to keep it. Close it */ + /* no queries on it, no space to keep it. or timeout or closed due + * to error. Close it */ + reuse_cb_readwait_for_failure(pend, (error==NETEVENT_TIMEOUT? + NETEVENT_TIMEOUT:NETEVENT_CLOSED)); + reuse_cb_writewait_for_failure(pend, (error==NETEVENT_TIMEOUT? + NETEVENT_TIMEOUT:NETEVENT_CLOSED)); decommission_pending_tcp(outnet, pend); use_free_buffer(outnet); return 0; @@ -1501,50 +1618,6 @@ pending_udp_query(struct serviced_query* sq, struct sldns_buffer* packet, return pend; } -/** perform failure callbacks for waiting queries in reuse write list */ -static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) -{ - struct waiting_tcp* w; - w = pend->reuse.write_wait_first; - while(w) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); - w = w->write_wait_next; - } -} - -/** perform failure callbacks for waiting queries in reuse read rbtree */ -static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) -{ - rbnode_type* node; - if(pend->reuse.tree_by_id.root == NULL || - pend->reuse.tree_by_id.root == RBTREE_NULL) - return; - node = rbtree_first(&pend->reuse.tree_by_id); - while(node && node != RBTREE_NULL) { - struct waiting_tcp* w = (struct waiting_tcp*)node->key; - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); - node = rbtree_next(node); - } -} - -/** perform failure callbacks for current written query in reuse struct */ -static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) -{ - struct waiting_tcp* w = pend->query; - if(w) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); - } -} - void outnet_tcptimer(void* arg) { @@ -1683,6 +1756,15 @@ reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) return NULL; } +/** insert element in tree by id */ +static void +reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) +{ + log_assert(w->id_node.key == NULL); + w->id_node.key = w; + rbtree_insert(&reuse->tree_by_id, &w->id_node); +} + /** find element in tree by id */ static struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) @@ -1779,7 +1861,6 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct pending_tcp* pend = sq->outnet->tcp_free; struct reuse_tcp* reuse = NULL; struct waiting_tcp* w; - struct timeval tv; uint16_t id; verbose(5, "pending_tcp_query"); @@ -1827,11 +1908,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->cb_arg = callback_arg; w->ssl_upstream = sq->ssl_upstream; w->tls_auth_name = sq->tls_auth_name; -#ifndef S_SPLINT_S - tv.tv_sec = timeout/1000; - tv.tv_usec = (timeout%1000)*1000; -#endif - comm_timer_set(w->timer, &tv); + w->timeout = timeout; if(pend) { /* we have a buffer available right now */ if(reuse) { @@ -1839,15 +1916,19 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* if cannot write now, store query and put it * in the waiting list for this stream TODO */ /* and insert in tree_by_id */ + reuse_tree_by_id_insert(&pend->reuse, w); /* and also delete it from waitlst if query gone, * eg. sq is deleted TODO */ /* and also servfail all waiting queries if * stream closes TODO */ /* reuse existing fd, write query and continue */ w->next_waiting = (void*)pend; - pend->query = w; - outnet_tcp_take_query_setup(pend->c->fd, pend, - w->pkt, w->pkt_len); + if(pend->query == NULL) { + /* write straight away */ + pend->query = w; + outnet_tcp_take_query_setup(pend->c->fd, pend, + w); + } } else { verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to @@ -1869,6 +1950,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, comm_tcp, sq->zone, sq->zonelen, packet); #endif } else { + struct timeval tv; /* queue up */ verbose(5, "pending_tcp_query: queue to wait"); w->next_waiting = NULL; @@ -1877,6 +1959,11 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, else sq->outnet->tcp_wait_first = w; sq->outnet->tcp_wait_last = w; w->on_tcp_waiting_list = 1; +#ifndef S_SPLINT_S + tv.tv_sec = timeout/1000; + tv.tv_usec = (timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); } return w; } diff --git a/services/outside_network.h b/services/outside_network.h index cefee3b08..7c061938a 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -360,6 +360,8 @@ struct waiting_tcp { /** timeout event; timer keeps running whether the query is * waiting for a buffer or the tcp reply is pending */ struct comm_timer* timer; + /** timeout in msec */ + int timeout; /** the outside network it is part of */ struct outside_network* outnet; /** remote address. */ diff --git a/util/netevent.c b/util/netevent.c index 5dd746633..2ca92b92d 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3221,7 +3221,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) } if(c->type == comm_tcp || c->type == comm_http) { ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); - if(c->tcp_is_reading) + if(c->tcp_write_and_read) + ub_event_add_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); + else if(c->tcp_is_reading) ub_event_add_bits(c->ev->ev, UB_EV_READ); else ub_event_add_bits(c->ev->ev, UB_EV_WRITE); } From 34c063701e19f2736da4d1d855dac88860e1a011 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 16:05:25 +0200 Subject: [PATCH 069/394] in outside_network.c: also log messages that end up on the waiting list. with dnstap. for tcp use_free_buffer reuse existing entry if second wait entry on the same addr as the other waiting. --- services/outside_network.c | 290 +++++++++++++++++++++---------------- 1 file changed, 164 insertions(+), 126 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index b65bf19f9..f76b0ed3a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -344,6 +344,127 @@ outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t addrlen) return 1; } +/** log reuse item addr and ptr with message */ +static void +log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) +{ + uint16_t port; + char addrbuf[128]; + if(verbosity < v) return; + addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); + port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); + verbose(v, "%s %s#%u 0x%llx fd %d", msg, addrbuf, (unsigned)port, + (unsigned long long)reuse, reuse->pending->c->fd); +} + +/** pop the first element from the writewait list */ +static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) +{ + struct waiting_tcp* w = reuse->write_wait_first; + if(!w) + return NULL; + log_assert(w->write_wait_queued); + if(w->write_wait_prev) + w->write_wait_prev->write_wait_next = w->write_wait_next; + else reuse->write_wait_first = w->write_wait_next; + if(w->write_wait_next) + w->write_wait_next->write_wait_prev = w->write_wait_prev; + else reuse->write_wait_last = w->write_wait_prev; + w->write_wait_queued = 0; + return w; +} + +/** push the element after the last on the writewait list */ +static void reuse_write_wait_push_back(struct reuse_tcp* reuse, + struct waiting_tcp* w) +{ + if(!w) return; + log_assert(!w->write_wait_queued); + if(reuse->write_wait_last) { + reuse->write_wait_last->write_wait_next = w; + w->write_wait_prev = reuse->write_wait_last; + } else { + reuse->write_wait_first = w; + } + reuse->write_wait_last = w; + w->write_wait_queued = 1; +} + +/** insert element in tree by id */ +static void +reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) +{ + log_assert(w->id_node.key == NULL); + w->id_node.key = w; + rbtree_insert(&reuse->tree_by_id, &w->id_node); +} + +/** find reuse tcp stream to destination for query, or NULL if none */ +static struct reuse_tcp* +reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, + socklen_t addrlen, int use_ssl) +{ + struct waiting_tcp key_w; + struct pending_tcp key_p; + struct comm_point c; + rbnode_type* result = NULL, *prev; + verbose(5, "reuse_tcp_find"); + memset(&key_w, 0, sizeof(key_w)); + memset(&key_p, 0, sizeof(key_p)); + memset(&c, 0, sizeof(c)); + key_p.query = &key_w; + key_p.c = &c; + key_p.reuse.pending = &key_p; + key_p.reuse.node.key = &key_p.reuse; + if(use_ssl) /* something nonNULL for comparisons in tree */ + key_p.c->ssl = (void*)1; + if(addrlen > sizeof(key_p.reuse.addr)) + return NULL; + memmove(&key_p.reuse.addr, addr, addrlen); + key_p.reuse.addrlen = addrlen; + + verbose(5, "reuse_tcp_find: num reuse streams %u", + (unsigned)outnet->tcp_reuse.count); + if(outnet->tcp_reuse.root == NULL || + outnet->tcp_reuse.root == RBTREE_NULL) + return NULL; + if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, + &result)) { + /* exact match */ + /* but the key is on stack, and ptr is compared, impossible */ + log_assert(&key_p.reuse != (struct reuse_tcp*)result); + log_assert(&key_p != ((struct reuse_tcp*)result)->pending); + } + /* not found, return null */ + if(!result || result == RBTREE_NULL) + return NULL; + verbose(5, "reuse_tcp_find check inexact match"); + /* inexact match, find one of possibly several connections to the + * same destination address, with the correct port, ssl, and + * also less than max number of open queries, or else, fail to open + * a new one */ + /* rewind to start of sequence of same address,port,ssl */ + prev = rbtree_previous(result); + while(prev && prev != RBTREE_NULL && + reuse_cmp_addrportssl(prev->key, &key_p.reuse) == 0) { + result = prev; + prev = rbtree_previous(result); + } + + /* loop to find first one that has correct characteristics */ + while(result && result != RBTREE_NULL && + reuse_cmp_addrportssl(result->key, &key_p.reuse) == 0) { + if(((struct reuse_tcp*)result)->tree_by_id.count < + MAX_REUSE_TCP_QUERIES) { + /* same address, port, ssl-yes-or-no, and has + * space for another query */ + return (struct reuse_tcp*)result; + } + result = rbtree_next(result); + } + return NULL; +} + /** use the buffer to setup writing the query */ static void outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, @@ -482,6 +603,7 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; + reuse_tree_by_id_insert(&pend->reuse, w); outnet_tcp_take_query_setup(s, pend, w); return 1; } @@ -493,17 +615,32 @@ use_free_buffer(struct outside_network* outnet) struct waiting_tcp* w; while(outnet->tcp_free && outnet->tcp_wait_first && !outnet->want_to_quit) { + struct reuse_tcp* reuse = NULL; w = outnet->tcp_wait_first; outnet->tcp_wait_first = w->next_waiting; if(outnet->tcp_wait_last == w) outnet->tcp_wait_last = NULL; w->on_tcp_waiting_list = 0; - if(!outnet_tcp_take_into_use(w)) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - waiting_tcp_delete(w); - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, NETEVENT_CLOSED, NULL); + reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen, + w->ssl_upstream); + if(reuse) { + log_reuse_tcp(5, "use free buffer for waiting tcp: " + "found reuse", reuse); + if(reuse->pending->query) { + /* on the write wait list */ + comm_timer_disable(w->timer); + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); + reuse_write_wait_push_back(reuse, w); + } + } else { + if(!outnet_tcp_take_into_use(w)) { + comm_point_callback_type* cb = w->cb; + void* cb_arg = w->cb_arg; + waiting_tcp_delete(w); + fptr_ok(fptr_whitelist_pending_tcp(cb)); + (void)(*cb)(NULL, cb_arg, NETEVENT_CLOSED, NULL); + } } } } @@ -602,19 +739,6 @@ decommission_pending_tcp(struct outside_network* outnet, reuse_del_writewait(pend); } -/** log reuse item addr and ptr with message */ -static void -log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) -{ - uint16_t port; - char addrbuf[128]; - if(verbosity < v) return; - addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); - port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); - verbose(v, "%s %s#%u 0x%llx fd %d", msg, addrbuf, (unsigned)port, - (unsigned long long)reuse, reuse->pending->c->fd); -} - /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) @@ -697,22 +821,6 @@ reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) w->id_node.key = NULL; } -/** pop the first element from the writewait list */ -static struct waiting_tcp* reuse_write_wait_pop(struct pending_tcp* pend) -{ - struct waiting_tcp* w = pend->reuse.write_wait_first; - if(!w) - return NULL; - if(w->write_wait_prev) - w->write_wait_prev->write_wait_next = w->write_wait_next; - else pend->reuse.write_wait_first = w->write_wait_next; - if(w->write_wait_next) - w->write_wait_next->write_wait_prev = w->write_wait_prev; - else pend->reuse.write_wait_last = w->write_wait_prev; - w->write_wait_queued = 0; - return w; -} - /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void reuse_tcp_setup_readtimeout(struct pending_tcp* pend_tcp) @@ -756,7 +864,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, pend->query = NULL; /* setup to write next packet or setup read timeout */ if(pend->reuse.write_wait_first) { - pend->query = reuse_write_wait_pop(pend); + pend->query = reuse_write_wait_pop(&pend->reuse); outnet_tcp_take_query_setup(pend->c->fd, pend, pend->query); } else { @@ -1691,80 +1799,6 @@ reuse_tcp_close_oldest(struct outside_network* outnet) decommission_pending_tcp(outnet, pend); } -/** find reuse tcp stream to destination for query, or NULL if none */ -static struct reuse_tcp* -reuse_tcp_find(struct outside_network* outnet, struct serviced_query* sq) -{ - struct waiting_tcp key_w; - struct pending_tcp key_p; - struct comm_point c; - rbnode_type* result = NULL, *prev; - verbose(5, "reuse_tcp_find"); - memset(&key_w, 0, sizeof(key_w)); - memset(&key_p, 0, sizeof(key_p)); - memset(&c, 0, sizeof(c)); - key_p.query = &key_w; - key_p.c = &c; - key_p.reuse.pending = &key_p; - key_p.reuse.node.key = &key_p.reuse; - if(sq->ssl_upstream) /* something nonNULL for comparisons in tree */ - key_p.c->ssl = (void*)1; - if(sq->addrlen > sizeof(key_p.reuse.addr)) - return NULL; - memmove(&key_p.reuse.addr, &sq->addr, sq->addrlen); - key_p.reuse.addrlen = sq->addrlen; - - verbose(5, "reuse_tcp_find: num reuse streams %u", - (unsigned)outnet->tcp_reuse.count); - if(outnet->tcp_reuse.root == NULL || - outnet->tcp_reuse.root == RBTREE_NULL) - return NULL; - if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, - &result)) { - /* exact match */ - /* but the key is on stack, and ptr is compared, impossible */ - log_assert(&key_p.reuse != (struct reuse_tcp*)result); - log_assert(&key_p != ((struct reuse_tcp*)result)->pending); - } - /* not found, return null */ - if(!result || result == RBTREE_NULL) - return NULL; - verbose(5, "reuse_tcp_find check inexact match"); - /* inexact match, find one of possibly several connections to the - * same destination address, with the correct port, ssl, and - * also less than max number of open queries, or else, fail to open - * a new one */ - /* rewind to start of sequence of same address,port,ssl */ - prev = rbtree_previous(result); - while(prev && prev != RBTREE_NULL && - reuse_cmp_addrportssl(prev->key, &key_p.reuse) == 0) { - result = prev; - prev = rbtree_previous(result); - } - - /* loop to find first one that has correct characteristics */ - while(result && result != RBTREE_NULL && - reuse_cmp_addrportssl(result->key, &key_p.reuse) == 0) { - if(((struct reuse_tcp*)result)->tree_by_id.count < - MAX_REUSE_TCP_QUERIES) { - /* same address, port, ssl-yes-or-no, and has - * space for another query */ - return (struct reuse_tcp*)result; - } - result = rbtree_next(result); - } - return NULL; -} - -/** insert element in tree by id */ -static void -reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) -{ - log_assert(w->id_node.key == NULL); - w->id_node.key = w; - rbtree_insert(&reuse->tree_by_id, &w->id_node); -} - /** find element in tree by id */ static struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) @@ -1866,7 +1900,8 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, verbose(5, "pending_tcp_query"); /* find out if a reused stream to the target exists */ /* if so, take it into use */ - reuse = reuse_tcp_find(sq->outnet, sq); + reuse = reuse_tcp_find(sq->outnet, &sq->addr, sq->addrlen, + sq->ssl_upstream); if(reuse) { log_reuse_tcp(5, "pending_tcp_query: found reuse", reuse); log_assert(reuse->pending); @@ -1909,25 +1944,28 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->ssl_upstream = sq->ssl_upstream; w->tls_auth_name = sq->tls_auth_name; w->timeout = timeout; + w->id_node.key = NULL; + w->write_wait_prev = NULL; + w->write_wait_next = NULL; + w->write_wait_queued = 0; if(pend) { /* we have a buffer available right now */ if(reuse) { verbose(5, "pending_tcp_query: reuse, store"); - /* if cannot write now, store query and put it - * in the waiting list for this stream TODO */ - /* and insert in tree_by_id */ - reuse_tree_by_id_insert(&pend->reuse, w); - /* and also delete it from waitlst if query gone, - * eg. sq is deleted TODO */ - /* and also servfail all waiting queries if - * stream closes TODO */ /* reuse existing fd, write query and continue */ + /* store query in tree by id */ w->next_waiting = (void*)pend; + reuse_tree_by_id_insert(&pend->reuse, w); + /* can we write right now? */ if(pend->query == NULL) { /* write straight away */ pend->query = w; outnet_tcp_take_query_setup(pend->c->fd, pend, w); + } else { + /* put it in the waiting list for + * this stream */ + reuse_write_wait_push_back(&pend->reuse, w); } } else { verbose(5, "pending_tcp_query: new fd, connect"); @@ -1942,13 +1980,6 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, return NULL; } } -#ifdef USE_DNSTAP - if(sq->outnet->dtenv && - (sq->outnet->dtenv->log_resolver_query_messages || - sq->outnet->dtenv->log_forwarder_query_messages)) - dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr, - comm_tcp, sq->zone, sq->zonelen, packet); -#endif } else { struct timeval tv; /* queue up */ @@ -1965,6 +1996,13 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, #endif comm_timer_set(w->timer, &tv); } +#ifdef USE_DNSTAP + if(sq->outnet->dtenv && + (sq->outnet->dtenv->log_resolver_query_messages || + sq->outnet->dtenv->log_forwarder_query_messages)) + dt_msg_send_outside_query(sq->outnet->dtenv, &sq->addr, + comm_tcp, sq->zone, sq->zonelen, packet); +#endif return w; } From c32c43f9f2784526c4b54b1bf10b2ee6a1b4b814 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 16:11:46 +0200 Subject: [PATCH 070/394] for tcp use_free_buffer write straight away on reuse connection, if possible --- services/outside_network.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index f76b0ed3a..a010e3323 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -626,12 +626,18 @@ use_free_buffer(struct outside_network* outnet) if(reuse) { log_reuse_tcp(5, "use free buffer for waiting tcp: " "found reuse", reuse); + comm_timer_disable(w->timer); + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); if(reuse->pending->query) { /* on the write wait list */ - comm_timer_disable(w->timer); - w->next_waiting = (void*)reuse->pending; - reuse_tree_by_id_insert(reuse, w); reuse_write_wait_push_back(reuse, w); + } else { + /* write straight away */ + reuse->pending->query = w; + outnet_tcp_take_query_setup( + reuse->pending->c->fd, reuse->pending, + w); } } else { if(!outnet_tcp_take_into_use(w)) { From cbcbd5fa07f79abb9039d492020d03f1b8d12137 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 16:22:43 +0200 Subject: [PATCH 071/394] pending_tcp_query: cleaner comments. --- services/outside_network.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index a010e3323..dad448b52 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1957,9 +1957,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(pend) { /* we have a buffer available right now */ if(reuse) { - verbose(5, "pending_tcp_query: reuse, store"); /* reuse existing fd, write query and continue */ /* store query in tree by id */ + verbose(5, "pending_tcp_query: reuse, store"); w->next_waiting = (void*)pend; reuse_tree_by_id_insert(&pend->reuse, w); /* can we write right now? */ @@ -1974,9 +1974,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, reuse_write_wait_push_back(&pend->reuse, w); } } else { - verbose(5, "pending_tcp_query: new fd, connect"); /* create new fd and connect to addr, setup to * write query */ + verbose(5, "pending_tcp_query: new fd, connect"); rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.pending = pend; memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); @@ -1987,8 +1987,10 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, } } } else { - struct timeval tv; /* queue up */ + /* waiting for a buffer on the outside network buffer wait + * list */ + struct timeval tv; verbose(5, "pending_tcp_query: queue to wait"); w->next_waiting = NULL; if(sq->outnet->tcp_wait_last) From dfb6d32189c98810b2ded91a644868deb78739f2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 16:29:37 +0200 Subject: [PATCH 072/394] outnet_tcp_cb: add assertion and return when write packets done is handled. --- services/outside_network.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index dad448b52..71a7adebd 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -867,6 +867,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, pend->c->tcp_write_pkt = NULL; pend->c->tcp_write_pkt_len = 0; /* the pend.query is already in tree_by_id */ + log_assert(pend->query->id_node.key); pend->query = NULL; /* setup to write next packet or setup read timeout */ if(pend->reuse.write_wait_first) { @@ -876,6 +877,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } else { reuse_tcp_setup_readtimeout(pend); } + return 0; } else if(error != NETEVENT_NOERROR) { verbose(VERB_QUERY, "outnettcp got tcp error %d", error); /* pass error below and exit */ From d033ce6c23afb2f5c3fb0eaf463d1e230c22f3eb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 25 Jun 2020 17:23:46 +0200 Subject: [PATCH 073/394] tcp callback function refactor, split read and timeout event setup, leave unused queries that are already sent to track their reply on the query pipeline, when serviced query is deleted deal with the write wait list, --- services/outside_network.c | 118 +++++++++++++++++++++++-------------- services/outside_network.h | 5 +- 2 files changed, 77 insertions(+), 46 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 71a7adebd..ee8275c7f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -364,6 +364,23 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) if(!w) return NULL; log_assert(w->write_wait_queued); + log_assert(!w->write_wait_prev); + reuse->write_wait_first = w->write_wait_next; + if(w->write_wait_next) + w->write_wait_next->write_wait_prev = NULL; + else reuse->write_wait_last = NULL; + w->write_wait_queued = 0; + return w; +} + +/** remove the element from the writewait list */ +static void reuse_write_wait_remove(struct reuse_tcp* reuse, + struct waiting_tcp* w) +{ + if(!w) + return; + if(!w->write_wait_queued) + return; if(w->write_wait_prev) w->write_wait_prev->write_wait_next = w->write_wait_next; else reuse->write_wait_first = w->write_wait_next; @@ -371,7 +388,6 @@ static struct waiting_tcp* reuse_write_wait_pop(struct reuse_tcp* reuse) w->write_wait_next->write_wait_prev = w->write_wait_prev; else reuse->write_wait_last = w->write_wait_prev; w->write_wait_queued = 0; - return w; } /** push the element after the last on the writewait list */ @@ -608,6 +624,17 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) return 1; } +/** call callback on waiting_tcp, if not NULL */ +static void +waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, + struct comm_reply* reply_info) +{ + if(w->cb) { + fptr_ok(fptr_whitelist_pending_tcp(w->cb)); + (void)(*w->cb)(c, w->cb_arg, error, reply_info); + } +} + /** see if buffers can be used to service TCP queries */ static void use_free_buffer(struct outside_network* outnet) @@ -641,11 +668,9 @@ use_free_buffer(struct outside_network* outnet) } } else { if(!outnet_tcp_take_into_use(w)) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; + waiting_tcp_callback(w, NULL, NETEVENT_CLOSED, + NULL); waiting_tcp_delete(w); - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, NETEVENT_CLOSED, NULL); } } } @@ -780,10 +805,7 @@ static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) struct waiting_tcp* w; w = pend->reuse.write_wait_first; while(w) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); + waiting_tcp_callback(w, NULL, err, NULL); w = w->write_wait_next; } } @@ -798,10 +820,7 @@ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) node = rbtree_first(&pend->reuse.tree_by_id); while(node && node != RBTREE_NULL) { struct waiting_tcp* w = (struct waiting_tcp*)node->key; - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); + waiting_tcp_callback(w, NULL, err, NULL); node = rbtree_next(node); } } @@ -811,10 +830,7 @@ static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) { struct waiting_tcp* w = pend->query; if(w) { - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, err, NULL); + waiting_tcp_callback(w, NULL, err, NULL); } } @@ -829,7 +845,15 @@ reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void -reuse_tcp_setup_readtimeout(struct pending_tcp* pend_tcp) +reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp) +{ + log_reuse_tcp(5, "reuse_tcp_setup_timeout", &pend_tcp->reuse); + comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); +} + +/** set timeout on tcp fd and setup read event to catch incoming dns msgs */ +static void +reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp) { log_reuse_tcp(5, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse); sldns_buffer_clear(pend_tcp->c->buffer); @@ -875,7 +899,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, outnet_tcp_take_query_setup(pend->c->fd, pend, pend->query); } else { - reuse_tcp_setup_readtimeout(pend); + reuse_tcp_setup_timeout(pend); } return 0; } else if(error != NETEVENT_NOERROR) { @@ -897,13 +921,11 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * query again to the same destination. */ if(outnet->tcp_reuse.count < outnet->tcp_reuse_max) { (void)reuse_tcp_insert(outnet, pend); - reuse_tcp_setup_readtimeout(pend); } } if(pend->query) { reuse_tree_by_id_delete(&pend->reuse, pend->query); - fptr_ok(fptr_whitelist_pending_tcp(pend->query->cb)); - (void)(*pend->query->cb)(c, pend->query->cb_arg, error, reply_info); + waiting_tcp_callback(pend->query, c, error, reply_info); waiting_tcp_delete(pend->query); pend->query = NULL; } @@ -912,6 +934,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, verbose(5, "outnet_tcp_cb reuse after cb: keep it"); /* it is in the reuse_tcp tree, with other queries, or * on the empty list. do not decommission it */ + reuse_tcp_setup_read_and_timeout(pend); return 0; } verbose(5, "outnet_tcp_cb reuse after cb: decommission it"); @@ -1742,12 +1765,9 @@ outnet_tcptimer(void* arg) verbose(5, "outnet_tcptimer"); if(w->on_tcp_waiting_list) { /* it is on the waiting list */ - comm_point_callback_type* cb = w->cb; - void* cb_arg = w->cb_arg; waiting_list_remove(outnet, w); + waiting_tcp_callback(w, NULL, NETEVENT_TIMEOUT, NULL); waiting_tcp_delete(w); - fptr_ok(fptr_whitelist_pending_tcp(cb)); - (void)(*cb)(NULL, cb_arg, NETEVENT_TIMEOUT, NULL); } else { /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; @@ -2154,6 +2174,11 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, { struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting; verbose(5, "reuse_tcp_remove_serviced_keep"); + /* remove the callback. let query continue to write to not cancel + * the stream itself. also keep it as an entry in the tree_by_id, + * in case the answer returns (that we no longer want), but we cannot + * pick the same ID number meanwhile */ + pend_tcp->query->cb = NULL; /* see if can be entered in reuse tree * for that the FD has to be non-1 */ if(pend_tcp->c->fd == -1) { @@ -2163,10 +2188,8 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, /* if in tree and used by other queries */ if(pend_tcp->reuse.node.key) { verbose(5, "reuse_tcp_remove_serviced_keep: in use by other queries"); - /* note less use of stream */ - /* remove id value used by this svcd. */ /* do not reset the keepalive timer, for that - * we'd need traffic, and this is where the servicedq is + * we'd need traffic, and this is where the serviced is * removed due to state machine internal reasons, * eg. iterator no longer interested in this query */ return 1; @@ -2175,13 +2198,11 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, if(pend_tcp->c->fd != -1 && sq->outnet->tcp_reuse.count < sq->outnet->tcp_reuse_max) { verbose(5, "reuse_tcp_remove_serviced_keep: keep open"); - /* note less use of stream */ - /* remove id value used by this svcd. */ /* set a keepalive timer on it */ if(!reuse_tcp_insert(sq->outnet, pend_tcp)) { return 0; } - reuse_tcp_setup_readtimeout(pend_tcp); + reuse_tcp_setup_timeout(pend_tcp); return 1; } return 0; @@ -2207,31 +2228,38 @@ serviced_delete(struct serviced_query* sq) * mesh */ outnet_send_wait_udp(sq->outnet); } else { - struct waiting_tcp* p = (struct waiting_tcp*) + struct waiting_tcp* w = (struct waiting_tcp*) sq->pending; verbose(5, "serviced_delete: TCP"); - /* TODO: if on stream-write-waiting list then + /* if on stream-write-waiting list then * remove from waiting list and waiting_tcp_delete */ - if(!p->on_tcp_waiting_list) { + if(w->write_wait_queued) { + struct pending_tcp* pend = + (struct pending_tcp*)w->next_waiting; + verbose(5, "serviced_delete: writewait"); + reuse_tree_by_id_delete(&pend->reuse, w); + reuse_write_wait_remove(&pend->reuse, w); + waiting_tcp_delete(w); + } else if(!w->on_tcp_waiting_list) { + struct pending_tcp* pend = + (struct pending_tcp*)w->next_waiting; verbose(5, "serviced_delete: tcpreusekeep"); - if(!reuse_tcp_remove_serviced_keep(p, sq)) { + if(!reuse_tcp_remove_serviced_keep(w, sq)) { reuse_cb_curquery_for_failure( - (struct pending_tcp*)p-> - next_waiting, NETEVENT_CLOSED); + pend, NETEVENT_CLOSED); reuse_cb_readwait_for_failure( - (struct pending_tcp*)p-> - next_waiting, NETEVENT_CLOSED); + pend, NETEVENT_CLOSED); reuse_cb_writewait_for_failure( - (struct pending_tcp*)p-> - next_waiting, NETEVENT_CLOSED); + pend, NETEVENT_CLOSED); decommission_pending_tcp(sq->outnet, - (struct pending_tcp*)p->next_waiting); + pend); use_free_buffer(sq->outnet); } + sq->pending = NULL; } else { verbose(5, "serviced_delete: tcpwait"); - waiting_list_remove(sq->outnet, p); - waiting_tcp_delete(p); + waiting_list_remove(sq->outnet, w); + waiting_tcp_delete(w); } } } diff --git a/services/outside_network.h b/services/outside_network.h index 7c061938a..0dcf1b2e1 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -375,7 +375,10 @@ struct waiting_tcp { uint8_t* pkt; /** length of query packet. */ size_t pkt_len; - /** callback for the timeout, error or reply to the message */ + /** callback for the timeout, error or reply to the message, + * or NULL if no user is waiting. the entry uses an ID number. + * a query that was written is no longer needed, but the ID number + * and a reply will come back and can be ignored if NULL */ comm_point_callback_type* cb; /** callback user argument */ void* cb_arg; From 64c8d18814d09a66f47dcae79e2ade94f198166c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 26 Jun 2020 10:54:13 +0200 Subject: [PATCH 074/394] in tcp write callback routine dont reset read byte count if write and read. in tcp write callback and write and read and write is done perform callback. tcp connection is selected to not toggle readwrite and give closed callback. --- services/outside_network.c | 2 ++ util/netevent.c | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index ee8275c7f..8da5eeb64 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -516,6 +516,8 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) log_assert(w->pkt); log_assert(w->pkt_len > 0); log_assert(w->addrlen > 0); + pend->c->tcp_do_toggle_rw = 0; + pend->c->tcp_do_close = 0; /* open socket */ s = outnet_get_tcp_fd(&w->addr, w->addrlen, w->outnet->tcp_mss, w->outnet->ip_dscp); diff --git a/util/netevent.c b/util/netevent.c index 2ca92b92d..bcff7a590 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -995,13 +995,23 @@ tcp_callback_writer(struct comm_point* c) sldns_buffer_clear(c->buffer); if(c->tcp_do_toggle_rw) c->tcp_is_reading = 1; - c->tcp_byte_count = 0; + if(!c->tcp_write_and_read) + c->tcp_byte_count = 0; /* switch from listening(write) to listening(read) */ if(c->tcp_req_info) { tcp_req_info_handle_writedone(c->tcp_req_info); } else { comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + if(c->tcp_write_and_read) { + fptr_ok(fptr_whitelist_comm_point(c->callback)); + if( (*c->callback)(c, c->cb_arg, NETEVENT_PKT_WRITTEN, + &c->repinfo) ) { + comm_point_start_listening(c, -1, + c->tcp_timeout_msec); + } + } else { + comm_point_start_listening(c, -1, c->tcp_timeout_msec); + } } } From cfe009a31c7b092e236da3e02517b1eb17c954ca Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 26 Jun 2020 16:05:15 +0200 Subject: [PATCH 075/394] tcp read and write handling of write events in netevent for tcp and ssl. --- util/netevent.c | 172 ++++++++++++++++++++++++++++++++++-------------- util/netevent.h | 9 ++- 2 files changed, 131 insertions(+), 50 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index bcff7a590..6289df823 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -992,11 +992,12 @@ static void tcp_callback_writer(struct comm_point* c) { log_assert(c->type == comm_tcp); - sldns_buffer_clear(c->buffer); + if(!c->tcp_write_and_read) { + sldns_buffer_clear(c->buffer); + c->tcp_byte_count = 0; + } if(c->tcp_do_toggle_rw) c->tcp_is_reading = 1; - if(!c->tcp_write_and_read) - c->tcp_byte_count = 0; /* switch from listening(write) to listening(read) */ if(c->tcp_req_info) { tcp_req_info_handle_writedone(c->tcp_req_info); @@ -1302,10 +1303,28 @@ ssl_handle_write(struct comm_point* c) } /* ignore return, if fails we may simply block */ (void)SSL_set_mode(c->ssl, (long)SSL_MODE_ENABLE_PARTIAL_WRITE); - if(c->tcp_byte_count < sizeof(uint16_t)) { - uint16_t len = htons(sldns_buffer_limit(c->buffer)); + if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) { + uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(c->buffer)); ERR_clear_error(); - if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) < + if(c->tcp_write_and_read) { + if(c->tcp_write_pkt_len + 2 < LDNS_RR_BUF_SIZE) { + /* combine the tcp length and the query for + * write, this emulates writev */ + uint8_t buf[LDNS_RR_BUF_SIZE]; + memmove(buf, &len, sizeof(uint16_t)); + memmove(buf+sizeof(uint16_t), + c->tcp_write_pkt, + c->tcp_write_pkt_len); + r = SSL_write(c->ssl, + (void*)(buf+c->tcp_write_byte_count), + c->tcp_write_pkt_len + 2 - + c->tcp_write_byte_count); + } else { + r = SSL_write(c->ssl, + (void*)(((uint8_t*)&len)+c->tcp_write_byte_count), + (int)(sizeof(uint16_t)-c->tcp_write_byte_count)); + } + } else if(sizeof(uint16_t)+sldns_buffer_remaining(c->buffer) < LDNS_RR_BUF_SIZE) { /* combine the tcp length and the query for write, * this emulates writev */ @@ -1347,20 +1366,32 @@ ssl_handle_write(struct comm_point* c) log_crypto_err("could not SSL_write"); return 0; } - c->tcp_byte_count += r; - if(c->tcp_byte_count < sizeof(uint16_t)) - return 1; - sldns_buffer_set_position(c->buffer, c->tcp_byte_count - - sizeof(uint16_t)); - if(sldns_buffer_remaining(c->buffer) == 0) { + if(c->tcp_write_and_read) { + c->tcp_write_byte_count += r; + if(c->tcp_write_byte_count < sizeof(uint16_t)) + return 1; + } else { + c->tcp_byte_count += r; + if(c->tcp_byte_count < sizeof(uint16_t)) + return 1; + sldns_buffer_set_position(c->buffer, c->tcp_byte_count - + sizeof(uint16_t)); + } + if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); return 1; } } - log_assert(sldns_buffer_remaining(c->buffer) > 0); + log_assert(c->tcp_write_and_read || sldns_buffer_remaining(c->buffer) > 0); + log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); ERR_clear_error(); - r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer), - (int)sldns_buffer_remaining(c->buffer)); + if(c->tcp_write_and_read) { + r = SSL_write(c->ssl, (void*)(c->tcp_write_pkt + c->tcp_write_byte_count - 2), + (int)(c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count)); + } else { + r = SSL_write(c->ssl, (void*)sldns_buffer_current(c->buffer), + (int)sldns_buffer_remaining(c->buffer)); + } if(r <= 0) { int want = SSL_get_error(c->ssl, r); if(want == SSL_ERROR_ZERO_RETURN) { @@ -1385,9 +1416,13 @@ ssl_handle_write(struct comm_point* c) log_crypto_err("could not SSL_write"); return 0; } - sldns_buffer_skip(c->buffer, (ssize_t)r); + if(c->tcp_write_and_read) { + c->tcp_write_byte_count += r; + } else { + sldns_buffer_skip(c->buffer, (ssize_t)r); + } - if(sldns_buffer_remaining(c->buffer) == 0) { + if((!c->tcp_write_and_read && sldns_buffer_remaining(c->buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); } return 1; @@ -1531,7 +1566,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(c->tcp_is_reading && !c->ssl) return 0; log_assert(fd != -1); - if(c->tcp_byte_count == 0 && c->tcp_check_nb_connect) { + if(((!c->tcp_write_and_read && c->tcp_byte_count == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == 0)) && c->tcp_check_nb_connect) { /* check for pending error from nonblocking connect */ /* from Stevens, unix network programming, vol1, 3rd ed, p450*/ int error = 0; @@ -1581,15 +1616,22 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(c->tcp_do_fastopen == 1) { /* this form of sendmsg() does both a connect() and send() so need to look for various flavours of error*/ - uint16_t len = htons(sldns_buffer_limit(buffer)); + uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer)); struct msghdr msg; struct iovec iov[2]; c->tcp_do_fastopen = 0; memset(&msg, 0, sizeof(msg)); - iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; - iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; - iov[1].iov_base = sldns_buffer_begin(buffer); - iov[1].iov_len = sldns_buffer_limit(buffer); + if(c->tcp_write_and_read) { + iov[0].iov_base = (uint8_t*)&len + c->tcp_write_byte_count; + iov[0].iov_len = sizeof(uint16_t) - c->tcp_write_byte_count; + iov[1].iov_base = c->tcp_write_pkt; + iov[1].iov_len = c->tcp_write_pkt_len; + } else { + iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; + iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; + iov[1].iov_base = sldns_buffer_begin(buffer); + iov[1].iov_len = sldns_buffer_limit(buffer); + } log_assert(iov[0].iov_len > 0); msg.msg_name = &c->repinfo.addr; msg.msg_namelen = c->repinfo.addrlen; @@ -1635,12 +1677,18 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } } else { - c->tcp_byte_count += r; - if(c->tcp_byte_count < sizeof(uint16_t)) - return 1; - sldns_buffer_set_position(buffer, c->tcp_byte_count - - sizeof(uint16_t)); - if(sldns_buffer_remaining(buffer) == 0) { + if(c->tcp_write_and_read) { + c->tcp_write_byte_count += r; + if(c->tcp_write_byte_count < sizeof(uint16_t)) + return 1; + } else { + c->tcp_byte_count += r; + if(c->tcp_byte_count < sizeof(uint16_t)) + return 1; + sldns_buffer_set_position(buffer, c->tcp_byte_count - + sizeof(uint16_t)); + } + if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); return 1; } @@ -1648,19 +1696,31 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } #endif /* USE_MSG_FASTOPEN */ - if(c->tcp_byte_count < sizeof(uint16_t)) { - uint16_t len = htons(sldns_buffer_limit(buffer)); + if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) { + uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer)); #ifdef HAVE_WRITEV struct iovec iov[2]; - iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; - iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; - iov[1].iov_base = sldns_buffer_begin(buffer); - iov[1].iov_len = sldns_buffer_limit(buffer); + if(c->tcp_write_and_read) { + iov[0].iov_base = (uint8_t*)&len + c->tcp_write_byte_count; + iov[0].iov_len = sizeof(uint16_t) - c->tcp_write_byte_count; + iov[1].iov_base = c->tcp_write_pkt; + iov[1].iov_len = c->tcp_write_pkt_len; + } else { + iov[0].iov_base = (uint8_t*)&len + c->tcp_byte_count; + iov[0].iov_len = sizeof(uint16_t) - c->tcp_byte_count; + iov[1].iov_base = sldns_buffer_begin(buffer); + iov[1].iov_len = sldns_buffer_limit(buffer); + } log_assert(iov[0].iov_len > 0); r = writev(fd, iov, 2); #else /* HAVE_WRITEV */ - r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_byte_count), - sizeof(uint16_t)-c->tcp_byte_count, 0); + if(c->tcp_write_and_read) { + r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_write_byte_count), + sizeof(uint16_t)-c->tcp_write_byte_count, 0); + } else { + r = send(fd, (void*)(((uint8_t*)&len)+c->tcp_byte_count), + sizeof(uint16_t)-c->tcp_byte_count, 0); + } #endif /* HAVE_WRITEV */ if(r == -1) { #ifndef USE_WINSOCK @@ -1699,19 +1759,31 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #endif return 0; } - c->tcp_byte_count += r; - if(c->tcp_byte_count < sizeof(uint16_t)) - return 1; - sldns_buffer_set_position(buffer, c->tcp_byte_count - - sizeof(uint16_t)); - if(sldns_buffer_remaining(buffer) == 0) { + if(c->tcp_write_and_read) { + c->tcp_write_byte_count += r; + if(c->tcp_write_byte_count < sizeof(uint16_t)) + return 1; + } else { + c->tcp_byte_count += r; + if(c->tcp_byte_count < sizeof(uint16_t)) + return 1; + sldns_buffer_set_position(buffer, c->tcp_byte_count - + sizeof(uint16_t)); + } + if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); return 1; } } - log_assert(sldns_buffer_remaining(buffer) > 0); - r = send(fd, (void*)sldns_buffer_current(buffer), - sldns_buffer_remaining(buffer), 0); + log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0); + log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); + if(c->tcp_write_and_read) { + r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2, + c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0); + } else { + r = send(fd, (void*)sldns_buffer_current(buffer), + sldns_buffer_remaining(buffer), 0); + } if(r == -1) { #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) @@ -1736,9 +1808,13 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #endif return 0; } - sldns_buffer_skip(buffer, r); + if(c->tcp_write_and_read) { + c->tcp_write_byte_count += r; + } else { + sldns_buffer_skip(buffer, r); + } - if(sldns_buffer_remaining(buffer) == 0) { + if((!c->tcp_write_and_read && sldns_buffer_remaining(buffer) == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == c->tcp_write_pkt_len + 2)) { tcp_callback_writer(c); } diff --git a/util/netevent.h b/util/netevent.h index c044f8938..300592e5b 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -254,11 +254,16 @@ struct comm_point { int tcp_write_and_read; /** byte count for written length over write channel, for when - * tcp_write_and_read is enabled */ + * tcp_write_and_read is enabled. When tcp_write_and_read is enabled, + * this is the counter for writing, the one for reading is in the + * commpoint.buffer sldns buffer. The counter counts from 0 to + * 2+tcp_write_pkt_len, and includes the tcp length bytes. */ size_t tcp_write_byte_count; /** packet to write currently over the write channel. for when - * tcp_write_and_read is enabled */ + * tcp_write_and_read is enabled. When tcp_write_and_read is enabled, + * this is the buffer for the written packet, the commpoint.buffer + * sldns buffer is the buffer for the received packet. */ uint8_t* tcp_write_pkt; /** length of tcp_write_pkt in bytes */ size_t tcp_write_pkt_len; From 8ac054733ba9e9ac59ba5c4f66e6ebcea5bfdeeb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 13:41:26 +0200 Subject: [PATCH 076/394] - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. --- doc/Changelog | 4 ++++ services/mesh.c | 16 ++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ff3810b9d..197e4b29b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 June 2020: Wouter + - Move reply list clean for serve expired mesh callback to after + the reply is sent, so that script callbacks have reply_info. + 24 June 2020: Wouter - iana portlist updated. - doxygen file comments for dynlibmodule. diff --git a/services/mesh.c b/services/mesh.c index 4bc4341c4..223414415 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1959,14 +1959,6 @@ mesh_serve_expired_callback(void* arg) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); r = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { - log_assert(mesh->num_reply_states > 0); - mesh->num_reply_states--; - if(mstate->super_set.count == 0) { - mesh->num_detached_states++; - } - } for(; r; r = r->next) { /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ @@ -2000,6 +1992,14 @@ mesh_serve_expired_callback(void* arg) mesh->ans_expired++; } + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list && r) { + log_assert(mesh->num_reply_states > 0); + mesh->num_reply_states--; + if(mstate->super_set.count == 0) { + mesh->num_detached_states++; + } + } while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be * changed, eg. by adds from the callback routine */ From 6f0c2956ac8834a1854fb1e811983d23d3ef0f92 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 15:48:11 +0200 Subject: [PATCH 077/394] - Also move reply list clean for mesh callbacks to the scrip callback can see the reply_info. - Fix for mesh accounting if the reply list already empty to begin with. --- doc/Changelog | 4 ++++ services/mesh.c | 46 ++++++++++++++++++++-------------------------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 197e4b29b..64e1f50aa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,10 @@ 29 June 2020: Wouter - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. + - Also move reply list clean for mesh callbacks to the scrip callback + can see the reply_info. + - Fix for mesh accounting if the reply list already empty to begin + with. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 223414415..b5d4aeeab 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1320,26 +1320,7 @@ void mesh_query_done(struct mesh_state* mstate) free(err); } } - if(mstate->reply_list) { - /* set the reply_list to NULL during the mesh_query_done - * processing, so that calls back into the mesh from - * tcp_req_info (deciding to drop the reply and thus - * unregister the mesh_reply from the mstate) are stopped - * because the list is empty. - * The mstate is then likely not a reply_state, and maybe - * also a detached_state. - */ - reply_list = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list) { - /* was a reply state, not anymore */ - log_assert(mstate->s.env->mesh->num_reply_states > 0); - mstate->s.env->mesh->num_reply_states--; - } - if(!mstate->reply_list && !mstate->cb_list && - mstate->super_set.count == 0) - mstate->s.env->mesh->num_detached_states++; - } + reply_list = mstate->reply_list; for(r = reply_list; r; r = r->next) { /* if a response-ip address block has been stored the * information should be logged for each client. */ @@ -1381,6 +1362,17 @@ void mesh_query_done(struct mesh_state* mstate) prev_buffer = r_buffer; } } + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list) { + /* was a reply state, not anymore */ + log_assert(mstate->s.env->mesh->num_reply_states > 0); + mstate->s.env->mesh->num_reply_states--; + } + if(!mstate->reply_list && !mstate->cb_list && + mstate->super_set.count == 0) + mstate->s.env->mesh->num_detached_states++; + } mstate->replies_sent = 1; while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be @@ -1992,12 +1984,14 @@ mesh_serve_expired_callback(void* arg) mesh->ans_expired++; } - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { - log_assert(mesh->num_reply_states > 0); - mesh->num_reply_states--; - if(mstate->super_set.count == 0) { - mesh->num_detached_states++; + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list && r) { + log_assert(mesh->num_reply_states > 0); + mesh->num_reply_states--; + if(mstate->super_set.count == 0) { + mesh->num_detached_states++; + } } } while((c = mstate->cb_list) != NULL) { From 84b020795676bf08730ff53c2b0bd594309e6c1b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 16:20:09 +0200 Subject: [PATCH 078/394] - Fix for mesh accounting when rpz decides to drop a reply with a tcp stream waiting for it. --- doc/Changelog | 2 ++ services/mesh.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 64e1f50aa..878ea3aa7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ can see the reply_info. - Fix for mesh accounting if the reply list already empty to begin with. + - Fix for mesh accounting when rpz decides to drop a reply with a + tcp stream waiting for it. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index b5d4aeeab..12f861c7b 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1296,7 +1296,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, void mesh_query_done(struct mesh_state* mstate) { - struct mesh_reply* r, *reply_list = NULL; + struct mesh_reply* r; struct mesh_reply* prev = NULL; struct sldns_buffer* prev_buffer = NULL; struct mesh_cb* c; @@ -1320,8 +1320,7 @@ void mesh_query_done(struct mesh_state* mstate) free(err); } } - reply_list = mstate->reply_list; - for(r = reply_list; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* if a response-ip address block has been stored the * information should be logged for each client. */ if(mstate->s.respip_action_info && @@ -1345,7 +1344,15 @@ void mesh_query_done(struct mesh_state* mstate) /* if this query is determined to be dropped during the * mesh processing, this is the point to take that action. */ if(mstate->s.is_drop) { + /* briefly set the reply_list to NULL, so that the + * tcp req info cleanup routine that calls the mesh + * to deregister the meshstate for it is not done + * because the list is NULL and also accounting is not + * done there, but instead we do that here. */ + struct mesh_reply* reply_list = mstate->reply_list; + mstate->reply_list = NULL; comm_point_drop_reply(&r->query_reply); + mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) { @@ -1950,8 +1957,7 @@ mesh_serve_expired_callback(void* arg) if(verbosity >= VERB_ALGO) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); - r = mstate->reply_list; - for(; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ if(actinfo.addrinfo) { From 52774b6b20a6d79f5500386976dc59cbe38a31f0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 16:35:48 +0200 Subject: [PATCH 079/394] - Review fix for number of detached states due to use of variable after end of loop. --- doc/Changelog | 2 ++ services/mesh.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 878ea3aa7..a9c23bcab 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,8 @@ with. - Fix for mesh accounting when rpz decides to drop a reply with a tcp stream waiting for it. + - Review fix for number of detached states due to use of variable + after end of loop. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 12f861c7b..922e6b32e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1992,7 +1992,7 @@ mesh_serve_expired_callback(void* arg) } if(mstate->reply_list) { mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { + if(!mstate->reply_list && !mstate->cb_list) { log_assert(mesh->num_reply_states > 0); mesh->num_reply_states--; if(mstate->super_set.count == 0) { From 06d33f61c1f90aa551b644d12d9c70594f5377f7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 17:22:43 +0200 Subject: [PATCH 080/394] - Fix tcp req info drop due to size call into mesh accounting removal of mesh state during mesh send reply. --- doc/Changelog | 2 ++ services/mesh.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a9c23bcab..f5aca5af6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,8 @@ tcp stream waiting for it. - Review fix for number of detached states due to use of variable after end of loop. + - Fix tcp req info drop due to size call into mesh accounting + removal of mesh state during mesh send reply. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 922e6b32e..4b0c5db41 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1355,12 +1355,20 @@ void mesh_query_done(struct mesh_state* mstate) mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; + struct mesh_reply* rlist = mstate->reply_list; if(r->query_reply.c->tcp_req_info) { r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; prev_buffer = NULL; } + /* briefly set the replylist to null in case the + * meshsendreply calls tcpreqinfo sendreply that + * comm_point_drops because of size, and then the + * null stops the mesh state remove and thus + * reply_list modification and accounting */ + mstate->reply_list = NULL; mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) { tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); r_buffer = NULL; @@ -1874,7 +1882,7 @@ mesh_serve_expired_callback(void* arg) { struct mesh_state* mstate = (struct mesh_state*) arg; struct module_qstate* qstate = &mstate->s; - struct mesh_reply* r; + struct mesh_reply* r, *rlist; struct mesh_area* mesh = qstate->env->mesh; struct dns_msg* msg; struct mesh_cb* c; @@ -1979,8 +1987,15 @@ mesh_serve_expired_callback(void* arg) r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; + /* briefly set the replylist to null in case the meshsendreply + * calls tcpreqinfo sendreply that comm_point_drops because + * of size, and then the null stops the mesh state remove and + * thus reply_list modification and accounting */ + rlist = mstate->reply_list; + mstate->reply_list = NULL; mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; From 233c14a47699b16792c05507c496eadab5679634 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 6 Jul 2020 11:33:07 +0200 Subject: [PATCH 081/394] - run_vm cleanup better and removes trailing slash on single argument. --- doc/Changelog | 3 +++ testcode/run_vm.sh | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f5aca5af6..58f0493bd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +6 July 2020: Wouter + - run_vm cleanup better and removes trailing slash on single argument. + 29 June 2020: Wouter - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. diff --git a/testcode/run_vm.sh b/testcode/run_vm.sh index d14c63742..5f599e144 100644 --- a/testcode/run_vm.sh +++ b/testcode/run_vm.sh @@ -26,12 +26,17 @@ cd testdata TPKG=../testcode/mini_tdir.sh #RUNLIST=`(ls -1d *.tdir|grep -v '^0[016]')` RUNLIST=`(ls -1d *.tdir)` -if test "$#" = "1"; then RUNLIST="$1"; fi +if test "$#" = "1"; then + RUNLIST="$1"; + if echo "$RUNLIST" | grep '/$' >/dev/null; then + RUNLIST=`echo "$RUNLIST" | sed -e 's?/$??'` + fi +fi # fix up tdir that was edited on keyboard interrupt. cleanup() { echo cleanup - if test -f "$t.bak"; then mv "$t.bak" "$t"; fi + if test -f "$t.bak"; then rm -fr "${t}"; mv "$t.bak" "$t"; fi exit 0 } trap cleanup INT From 4d009e19fc80b2642c2ce0fd04b819ca70102ca4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 7 Jul 2020 09:00:04 +0200 Subject: [PATCH 082/394] - Fix #259: Fix unbound-checkconf does not check view existence. unbound-checkconf checks access-control-view, access-control-tags, access-control-tag-actions and access-control-tag-datas. - Fix offset of error printout for access-control-tag-datas. --- daemon/acl_list.c | 2 +- doc/Changelog | 6 +++ smallapp/unbound-checkconf.c | 90 ++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/daemon/acl_list.c b/daemon/acl_list.c index c16a920d9..84324575e 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -273,7 +273,7 @@ check_data(const char* data, const struct config_strlist* head) if(res == 0) return 1; log_err("rr data [char %d] parse error %s", - (int)LDNS_WIREPARSE_OFFSET(res)-13, + (int)LDNS_WIREPARSE_OFFSET(res)-2, sldns_get_errorstr_parse(res)); return 0; } diff --git a/doc/Changelog b/doc/Changelog index 58f0493bd..93d69d945 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +7 July 2020: Wouter + - Fix #259: Fix unbound-checkconf does not check view existence. + unbound-checkconf checks access-control-view, access-control-tags, + access-control-tag-actions and access-control-tag-datas. + - Fix offset of error printout for access-control-tag-datas. + 6 July 2020: Wouter - run_vm cleanup better and removes trailing slash on single argument. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 54a0ab78c..409d29fea 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -58,6 +58,7 @@ #include "services/authzone.h" #include "respip/respip.h" #include "sldns/sbuffer.h" +#include "sldns/str2wire.h" #ifdef HAVE_GETOPT_H #include #endif @@ -194,6 +195,94 @@ localzonechecks(struct config_file* cfg) local_zones_delete(zs); } +/** checks for acl and views */ +static void +acl_view_checks(struct config_file* cfg, struct views* views) +{ + int d; + struct sockaddr_storage a; + socklen_t alen; + struct config_str2list* acl; + struct config_str3list* s3; + struct config_strbytelist* sb; + struct view* v; + + /* acl_view */ + for(acl=cfg->acl_view; acl; acl = acl->next) { + if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-view " + "address %s %s", acl->str, acl->str2); + } + v = views_find_view(views, acl->str2, 0); + if(!v) { + fatal_exit("cannot find view for " + "access-control-view: %s %s", + acl->str, acl->str2); + } + lock_rw_unlock(&v->lock); + } + + /* acl_tags */ + for(sb=cfg->acl_tags; sb; sb = sb->next) { + if(!netblockstrtoaddr(sb->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tags " + "address %s", sb->str); + } + } + + /* acl_tag_actions */ + for(s3=cfg->acl_tag_actions; s3; s3 = s3->next) { + enum localzone_type t; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-actions " + "address %s %s %s", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-actions: %s %s %s", + s3->str2, s3->str, s3->str2, s3->str3); + } + if(!local_zone_str2type(s3->str3, &t)) { + fatal_exit("cannot parse access control action type %s" + " for access-control-tag-actions: %s %s %s", + s3->str3, s3->str, s3->str2, s3->str3); + } + } + + /* acl_tag_datas */ + for(s3=cfg->acl_tag_datas; s3; s3 = s3->next) { + char buf[65536]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr); + int res; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-datas address %s %s '%s'", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-datas: %s %s '%s'", + s3->str2, s3->str, s3->str2, s3->str3); + } + /* '.' is sufficient for validation, and it makes the call to + * sldns_wirerr_get_type() simpler below. */ + snprintf(buf, sizeof(buf), "%s %s", ".", s3->str3); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, NULL, + 0, NULL, 0); + if(res != 0) { + fatal_exit("cannot parse rr data [char %d] parse error %s, for access-control-tag-datas: %s %s '%s'", + (int)LDNS_WIREPARSE_OFFSET(res)-2, + sldns_get_errorstr_parse(res), + s3->str, s3->str2, s3->str3); + } + } +} + /** check view and response-ip configuration */ static void view_and_respipchecks(struct config_file* cfg) @@ -211,6 +300,7 @@ view_and_respipchecks(struct config_file* cfg) fatal_exit("Could not setup respip set"); if(!respip_views_apply_cfg(views, cfg, &ignored)) fatal_exit("Could not setup per-view respip sets"); + acl_view_checks(cfg, views); views_delete(views); respip_set_delete(respip); } From d84529cc0ec73564a761c732e709702c72a44d32 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 7 Jul 2020 10:18:56 +0200 Subject: [PATCH 083/394] - Review fixes for checkconf #259 change. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 93d69d945..ff1f36bbe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ unbound-checkconf checks access-control-view, access-control-tags, access-control-tag-actions and access-control-tag-datas. - Fix offset of error printout for access-control-tag-datas. + - Review fixes for checkconf #259 change. 6 July 2020: Wouter - run_vm cleanup better and removes trailing slash on single argument. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 409d29fea..0cf348add 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -197,7 +197,7 @@ localzonechecks(struct config_file* cfg) /** checks for acl and views */ static void -acl_view_checks(struct config_file* cfg, struct views* views) +acl_view_tag_checks(struct config_file* cfg, struct views* views) { int d; struct sockaddr_storage a; @@ -205,10 +205,10 @@ acl_view_checks(struct config_file* cfg, struct views* views) struct config_str2list* acl; struct config_str3list* s3; struct config_strbytelist* sb; - struct view* v; /* acl_view */ for(acl=cfg->acl_view; acl; acl = acl->next) { + struct view* v; if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, &d)) { fatal_exit("cannot parse access-control-view " @@ -300,7 +300,7 @@ view_and_respipchecks(struct config_file* cfg) fatal_exit("Could not setup respip set"); if(!respip_views_apply_cfg(views, cfg, &ignored)) fatal_exit("Could not setup per-view respip sets"); - acl_view_checks(cfg, views); + acl_view_tag_checks(cfg, views); views_delete(views); respip_set_delete(respip); } From ff50993f3614c11c5c367b83e4e259f8b3e673fb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Jul 2020 11:43:50 +0200 Subject: [PATCH 084/394] - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. --- doc/Changelog | 4 ++++ validator/val_secalgo.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ff1f36bbe..5c257c7dc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 July 2020: Wouter + - Fix add missing DSA header, for compilation without deprecated + OpenSSL APIs. + 7 July 2020: Wouter - Fix #259: Fix unbound-checkconf does not check view existence. unbound-checkconf checks access-control-view, access-control-tags, diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 3dbbe9ac9..65bca8b69 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -77,6 +77,10 @@ int fake_sha1 = 0; #include #endif +#if defined(HAVE_OPENSSL_DSA_H) && defined(USE_DSA) +#include +#endif + /** * Output a libcrypto openssl error to the logfile. * @param str: string to add to it. From e99b5046ebaca64d48b5fa26b323a14f8bb1b6ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Jul 2020 16:22:39 +0200 Subject: [PATCH 085/394] - Fix to use SSL_CTX_set_tlsext_ticket_key_evp_cb in OpenSSL 3.0.0-alpha4. - Longer keys for the test set, this avoids weak crypto errors. --- config.h.in | 8 ++- configure | 6 +- configure.ac | 6 +- doc/Changelog | 3 + .../09-unbound-control.tdir/bad_control.key | 50 ++++++++++---- .../09-unbound-control.tdir/bad_control.pem | 29 +++++--- .../09-unbound-control.tdir/bad_server.key | 50 ++++++++++---- .../09-unbound-control.tdir/bad_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../10-unbound-anchor.tdir/keys/test_cert.pem | 26 +++---- .../keys/unbound-control-setup | 2 +- .../keys/unbound_control.key | 56 ++++++++++------ .../keys/unbound_control.pem | 29 ++++---- .../keys/unbound_server.key | 56 ++++++++++------ .../keys/unbound_server.pem | 32 +++++---- testdata/ctrl_itr.tdir/unbound_control.key | 50 ++++++++++---- testdata/ctrl_itr.tdir/unbound_control.pem | 29 +++++--- testdata/ctrl_itr.tdir/unbound_server.key | 50 ++++++++++---- testdata/ctrl_itr.tdir/unbound_server.pem | 29 +++++--- testdata/ctrl_pipe.tdir/unbound_control.key | 50 ++++++++++---- testdata/ctrl_pipe.tdir/unbound_control.pem | 29 +++++--- testdata/ctrl_pipe.tdir/unbound_server.key | 50 ++++++++++---- testdata/ctrl_pipe.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap.tdir/unbound_server.pem | 29 +++++--- .../dnstap_reconnect.tdir/unbound_control.key | 50 ++++++++++---- .../dnstap_reconnect.tdir/unbound_control.pem | 29 +++++--- .../dnstap_reconnect.tdir/unbound_server.key | 50 ++++++++++---- .../dnstap_reconnect.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap_tcp.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap_tcp.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap_tcp.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap_tcp.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap_tls.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap_tls.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap_tls.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap_tls.tdir/unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- testdata/dynlibmod.tdir/unbound_control.key | 50 ++++++++++---- testdata/dynlibmod.tdir/unbound_control.pem | 29 +++++--- testdata/dynlibmod.tdir/unbound_server.key | 50 ++++++++++---- testdata/dynlibmod.tdir/unbound_server.pem | 29 +++++--- testdata/fwd_bogus.tdir/unbound_control.key | 50 ++++++++++---- testdata/fwd_bogus.tdir/unbound_control.pem | 29 +++++--- testdata/fwd_bogus.tdir/unbound_server.key | 50 ++++++++++---- testdata/fwd_bogus.tdir/unbound_server.pem | 29 +++++--- .../remote-threaded.tdir/unbound_control.key | 50 ++++++++++---- .../remote-threaded.tdir/unbound_control.pem | 29 +++++--- .../remote-threaded.tdir/unbound_server.key | 50 ++++++++++---- .../remote-threaded.tdir/unbound_server.pem | 29 +++++--- .../ssl_req_order.tdir/unbound_server.key | 50 ++++++++++---- .../ssl_req_order.tdir/unbound_server.pem | 29 +++++--- .../ssl_req_timeout.tdir/unbound_server.key | 50 ++++++++++---- .../ssl_req_timeout.tdir/unbound_server.pem | 29 +++++--- testdata/stream_ssl.tdir/unbound_control.key | 50 ++++++++++---- testdata/stream_ssl.tdir/unbound_control.pem | 29 +++++--- testdata/stream_ssl.tdir/unbound_server.key | 50 ++++++++++---- testdata/stream_ssl.tdir/unbound_server.pem | 29 +++++--- util/net_help.c | 67 ++++++++++++++++++- util/net_help.h | 14 ---- 80 files changed, 2142 insertions(+), 849 deletions(-) diff --git a/config.h.in b/config.h.in index aa3e6665b..f7a4095ed 100644 --- a/config.h.in +++ b/config.h.in @@ -386,6 +386,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_CONF_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_CORE_NAMES_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_DH_H @@ -500,8 +503,9 @@ /* Define to 1 if you have the `SSL_CTX_set_security_level' function. */ #undef HAVE_SSL_CTX_SET_SECURITY_LEVEL -/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_cb' function. */ -#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_CB +/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_evp_cb' + function. */ +#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 6c3e695fa..ae72d891e 100755 --- a/configure +++ b/configure @@ -18326,7 +18326,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h +for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -18340,7 +18340,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -18356,7 +18356,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index d1f7998e2..5c373d9d8 100644 --- a/configure.ac +++ b/configure.ac @@ -850,13 +850,13 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) +AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/doc/Changelog b/doc/Changelog index 5c257c7dc..f4304bddf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 8 July 2020: Wouter - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. + - Fix to use SSL_CTX_set_tlsext_ticket_key_evp_cb in OpenSSL + 3.0.0-alpha4. + - Longer keys for the test set, this avoids weak crypto errors. 7 July 2020: Wouter - Fix #259: Fix unbound-checkconf does not check view existence. diff --git a/testdata/09-unbound-control.tdir/bad_control.key b/testdata/09-unbound-control.tdir/bad_control.key index d29cdbc91..84d3883ed 100644 --- a/testdata/09-unbound-control.tdir/bad_control.key +++ b/testdata/09-unbound-control.tdir/bad_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDti51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4G -SLOE02/hKDkdkOvaUG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtO -DWc3tXPT1IlSEN0xnAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQAB -AoGAG3w/DatfMCu/nS5OdQx9BSqPgNbnUSqux9xA0fhgPTlN0T3oRtPcqa7JUDUW -PryI/a62ry+zGkw98N2AxolCZg3N7Z3vuRx2FMcKKNwpTzDmcZW7TmMk5FPof6gE -PnYl/ff0w+kxqA+L2EexH3Xi6ApLSZcjyzKWj+dL2AuT9gkCQQD3dPitwITxgCAD -IaHw23e3FRkM/hw1Gp8bt6nbuxitVxxpO96q1EQ+fCy/mf0bMEJDp3xzMEIfP3r4 -GmNbaxa1AkEA9b8LeBLbQ2cm2+UMeUgygBsRirdUQ786auqH38Jbvi/j6S9sDl2x -q1vRtikEBZJWfkhsOzrzwFDKe1bI/EEn9wJAAzOwRA9JqRZPU7sLrWIpmmTbfh+L -neRKSsGFoSI6n4ORCouLxgoZF/XjXldPvxpQwS9ZnOPy9xSLMsqknno0QQJAeDtA -IT8Yh6GwIWWu9KeeDY8wxe1sDLlCm4yjbZZpzGMh3rSU6XJtuqjxsW3fydoO9zn3 -ugLdvvnIFxAexUwbgQJBANyM13xcObfUJOj9rjlGCh0CDh/04ONl8SH8HBnM8guA -RJI5S6vBHweVRopEZcF1sQm6wMf3ej/sGkyyNvJxRkY= +MIIG5AIBAAKCAYEAt/3PPZGM7eSdCnEQ04f6Y+Xnmp105gtxqoHxHfyGFG8ljNSd +T1hKBjrg1BRVszTg+Td5V+Y4vAHW25Etvuvg0DQBNDKtrMTTbTZKQbT6A7Xgyp42 +Oj8EyXFWs8BNx/joI1sAMUiCjPKpKAI5bIHV18It4n28MXWTVX5mfwcj82XPTQlO +6OhTXtA45idPLFKkCp4H879EIfIo1sfk+OTLjoSNLXFN3BoI9CIT6WZKrY0pAieL +jdotSlirx/UpwpojAp6IVxzjZ2PHnJZbBwHxVPYnysMogcKQ9CyL1jBT2phWVe2J +YJFwwGgziJH5CJEGVgWkctEtguKubzSCIf9RuX6j/n32ZRtAechm2Oi2WwxGr9tF +uzLXgYsu/MQ+AhzcFP1MEGlyCkyL2fxgDry34Rq7RVQQL9PolhBYk2orYTlsjCVR +kGzXvpFIF8OPDEEsXz2TTM2nkiCla1GqsGXL3xuPFjGD+CEMI5jB7U+j1uL2+xb/ +gVUMAxvpNHADcW1/AgMBAAECggGAFEXF8N25rniTCRR+KyB/aURqqXGR8MrwAj6B +B7HMQDIi7Ap9LsHmnhscrKF08+Luqub+2r2GIMj/GIA9jxzET4x7WXoAAtpJBW6G +7gh3x7LhitG13eMVrvBrAjE9ILx/L24Wblez8r3F/5+HHjqMClLd5We/NZ/j1Pax +amup/WaJWc6dwDHhBcBhlJJeOd79LiJNdADuC+N3tnqd8wKanyBhwdELKCZCOEwM +75mSvt6f1xnuWXnhpaBxhP2xVTzQUNz1jxA2j/ybDbnBdhjLn9QlBY604t8nwRz8 +dwCV6NRFbj85C1Fkw3FSzLSKzkzLGxYBvLpq6vjXiUHuY17bVDskCrgHOx/q0SXb +ivPdmJWhThfPUMRgSTQXXvWpQfEdBP9FDXLFPN6yI9Xocxa4oaalNaK+xIJyXt9w +ZkLb+ZB8+m4JqvgdrQiO0yEXM498aCdRfVnZV/e+GdbB90FW9SFf4/guca/I4SPD +sFpA96LOyxkX4h5AQxyeoDDriKopAoHBAOEQXDMIXxp9gmkZNRo/mW7RvnmUyDic +eCwCbcsLGjay/hKpyOTelXSF7bxdi6GuO5N9UWBQX2FK+//T/uT1kHjmUYTeLa47 +iSDJG73TT6ZSwI0D8Ak+4GEneS3xjldpPW1oFZt/kwuji6yfUFw6orsPa/l5Uf7/ +MCOzoFObtvDZKgd0BkBrQhlIG+u6jicrGfrVkCDX/ONqoQXr3a21b4nl52/r+ezj +N2kKSQOTll5pUQ00+M0SPDwytFJbhbkTpQKBwQDRSCzHPTGVW5R+8BPQY2mRRyjp +Pr1BmJXG05f2wjXeGhafWJ91RCwP7mOBbJDA15w3KoY9N64Rk6Mv5q0Ywwna7+Ea +pTXCfzeuoC+sLL6llCA4kbpJsvrLAeCYyvMuiPjgXfDo2S8qMqAnZ+ZKD16OjBzE +W6H2OI7Zmwjy7+C683Ac2kX+lIvbBeOu9oVtaSw/5nudScUi4njDz89Ha3g3j1AI +98crCLQdjTO94d5k4Mx4FFVdbxPwSa5iZcHWo1MCgcAnHI25PKIyW09Xbk8BIb5L +ON3uCQIGfIKRu1ZTK7nBebeXjLPhuiCk4EVhL6x9S2cFCYkjwLPil4JVggTQyy/x +Iq1V9rpfhe8dqHVOtrMnx0e4+c8z/B5II/D2H/1JiXtoUOc4X6IxKpmyRPlVHcd7 +1IFCGGg8dSJrgeLBxNS05DhelTYk6b7R3+siOwhLHD1mjsh+PKqw5q3W9pdOgbJB +d5eRpqOHHDFb6rKnkXVXMNwp/GOkV5/qIjGeAlOpxxUCgcEAlXLFB0Jbthy/3iXz +AEz9hhEa1fVHkSA1VNalHkFx1jkrDn9q34LfNEE4LaQpeox9sadcVTr9wu97CSnh +Ul11HDNQvIZd7ZaLXNhnMryBKByvJbZrIVX+YhnlGTdUkVae4xoyfxUY6TldxMYd +XaW8EG9d25rT/dBFsn9T1KgYA2j0FqaIdVP+y1lZTggdIBSK1NbyT0/uxwqS0sID +cyz7nDFrJfxK7iA4/yFmYaJ5/e/KE7Xxf9dilaUIMpwX3/6hAoHBAIYjfpbPfK21 +AwHgZiopxOODsjbMuO/f4VCaMhkt8bm7LRmbsNl/Sk9paTNKf20fttKLi2cSUIn8 +sP8iuwdrUNNhVd4cfsh+ncF4GitRs3WrZXEz8AB7m8frpzNr2pYcqVTPL8yl9i8t +ix0XEoVwMWgFroWaN/G+ujEoPZUgXI9z5DuArkNOiLgbpcqVJ8e/+SWTeKILIkWT +ZrFABevmFIaXSZLjI9Avk7cTqEKOVeZy9gag9lmbtVAzFFitdR4aWA== -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_control.pem b/testdata/09-unbound-control.tdir/bad_control.pem index e06b84720..0785acaeb 100644 --- a/testdata/09-unbound-control.tdir/bad_control.pem +++ b/testdata/09-unbound-control.tdir/bad_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt -i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva -UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x -nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK -4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH -5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +MIIDszCCAhsCFEm6EpzKglG+V66IyIlx6Q2y3y8nMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQC3/c89kYzt5J0KcRDTh/pj5eeanXTmC3GqgfEd/IYUbyWM +1J1PWEoGOuDUFFWzNOD5N3lX5ji8AdbbkS2+6+DQNAE0Mq2sxNNtNkpBtPoDteDK +njY6PwTJcVazwE3H+OgjWwAxSIKM8qkoAjlsgdXXwi3ifbwxdZNVfmZ/ByPzZc9N +CU7o6FNe0DjmJ08sUqQKngfzv0Qh8ijWx+T45MuOhI0tcU3cGgj0IhPpZkqtjSkC +J4uN2i1KWKvH9SnCmiMCnohXHONnY8ecllsHAfFU9ifKwyiBwpD0LIvWMFPamFZV +7YlgkXDAaDOIkfkIkQZWBaRy0S2C4q5vNIIh/1G5fqP+ffZlG0B5yGbY6LZbDEav +20W7MteBiy78xD4CHNwU/UwQaXIKTIvZ/GAOvLfhGrtFVBAv0+iWEFiTaithOWyM +JVGQbNe+kUgXw48MQSxfPZNMzaeSIKVrUaqwZcvfG48WMYP4IQwjmMHtT6PW4vb7 +Fv+BVQwDG+k0cANxbX8CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEATI+xHWEiq3SK +9Dw2FBiD7GPaaPAh/u5h+QxaLS9G5a6Djh6F9RT3To+gRVeiaAaIPg53asGM5TGR +ojv9nI8cIvi3dL6VKhHSdomldFjfQYmF/uSKEYsHaggceGE/GsG8J8g79HXGRp2y +m5hkACKFh5ZcSHeJBplv7agDbBZ6w5qQaY6QsnYLrAK7B3Jo1Xx+JEKzmgnp4TwV +Ni4wezgLiG+buJ5lXEYr2Rm7HR/cxLRN7CFrpUoavFUvqLKNpXO8MJFx+BkO5/JT +pgv0O/ll9aT+kuegUpf9kcUzhpsw1N4W/JzZOyJAdxrrQ88aNZm+7d433wDBt/WF +BCV4d5wEASxfQALEQa+/1FebIsDfQyBAOHdTAVkupZ00oeNerKe+mHFmNjj04vn8 +LwGgVuADCBJVCDhEqHLEXUqiGeSHJhAJO9pjma7r7H81OtAs/xVC8j8hqe8wLBKg +XNjWQ9QmNXt9VVQCMomro9lmoDozr9k1vsGtUsT3yQEAABQYwIjp -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/bad_server.key b/testdata/09-unbound-control.tdir/bad_server.key index 0dbb134b5..d64d05bf5 100644 --- a/testdata/09-unbound-control.tdir/bad_server.key +++ b/testdata/09-unbound-control.tdir/bad_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC9hurNHBtB7QFEuPJOnCylUWUF2/US3v9yQQQXnstuXMQXRaq1 -1uviLmwaGurV9tngX59HITsBT74NQrtFKfEDLViLrm2arAM9Ozsn4tnv30HXPRDj -UOc1M05Q7UzjaSrOv+TkPEqyhtUyaP1DYo0bcmbxtSkYc2ZEWCwhPklUwQIDAQAB -AoGATjzZxN4ramWaNnJapJTX4U7eczK/0pB3xwSL2exVcjOdRzYdKH+WVIJxYb1m -3/jNLFCNAeH356yxeevoPr73nG75YJ9I1ZWQWTnS3SDK6JD1+3pmAD0bQWFoitpf -FoSH9H4X5gFB5vCZ99YVoYH1UXWPcgvUHwxz0voImt6lCKECQQD4YQ4A3M0+Ki8v -Hl+5FKULnS0UtBkweCvkF/X1zZRjjYr6hLnqldFkkgTBKWe17pUXX0nwRMbP1YZX -i+vDq5JNAkEAw1eYsmC0nVAMawo57N6LYavGv/n5u1cvpTpKDtn4cXH0Uqq13Kyu -2FUTzan2NhCEK78UzbWaeewBJmxYda1+RQJAdShKk6uTAEyjnwUjv8h2JWlJN2fQ -LeWxRlDrCruiz+aW9J4gl/99GoQpy/c83TshhjnDRZsbcDNWv/rXBZ/rTQJAFQva -CtX6f7yBKgM3DHtJvyM3zbVMH9Ab9QxbsE/xwZ9KeKGl6Hm+eNZpxM3cFiUfaGs0 -/ZjkZOB1m0MvILaplQJAXC3PJ/E+87banGZRJl5qtS6/HoX5lH9TPkL8Essy7ANO -2BT2OTQawD1A+VKIrQHXs085Of8tQUfrfHHt7s3Kqg== +MIIG4wIBAAKCAYEAr7FId+AlZUWP6MK9xfV0hJ9ooJdcL0sm9yZsWY4UYOlqcTGE +Rah/XvQmsOaKcMg8Wof24LAvo2vmariBYZoS61AAi6MeHHrPh8M2ZDMZQgW4nZC8 +A0biro93nMLU1VxgycSVmj29p18IdNzsYWxC7t+/6AWQSlwD+9YFOYrVWQYxEcSZ +7gZqoh08mDsNRjnVs7nagPAbk/B9jj9zhvgp+0d5h25Ms7Td22t7DfsGlL8Ei3ew +FwaqjThhhVHEVwARBLYGb2ZsZS5EMJv2W/V0k6yQZ+rV07+i0oZQ0cGxOuUy9TNO +7HfiI4ri2x26Wm0YH1qgK5miUIAkbL2E/iWVxMfQOdEAZuOmUpUFOFpm/XHL1/pC +yiqOb98jjLE93UoNPZdsjrbjfQ/WPkap+vtigVZJJPet6F9x4S5XvrhXkV2JWIYM +vhnrs9NpveCOe1lcxNVSsIAtMxsZKi2dIq+mRhfm9/UGoOmj8UxIQUepJJv1IHcd +ASWkTAMmUSyF7z7DAgMBAAECggGAKwY+GeURI1C6oiR2drDaPNQQuir2zzoXK7UE +GZY6lVTz1Q5sNubBck5V30JFqsLOTNk48uMSd3Gn9oCCZpVlhqyLxaZHbHACvFto +yXbd+5YNFMDp2d+VCWxmvUPU/P7nUOHMRP5ToFYcawni9SSe64Jtq3MZV6xa6WQK +2YGPJ4Llp1U+4NQ/br28JgdoA8eL9rxPrv2ds0fUZ25Qa0AAf+GL+Edhjyx+nAoh +E1Zi0TBJ+6FuxOTEBVtGPnC8pRWFrYDfiMX4y8qkbbanAQCNgLn0PC0JdKpFAtk/ +hnpGsZ4/oh0D3ogi6o5Xnn9Gl5+1uqqaEs/n6A4kojcJ/Z0uO7zJultSUDeggbA9 +VoTQucFY1Cqj68d56Rf3kS5FGgAOx7Q6LVCIH7C9+bfs7N6z/2zl6sF72ey88kpK +ZxsPjGUw2OHnwdrkfZHVMjiNUgrEH+KYe8EVmoBxoafGvxcs9mppqeczP3zbf5WX +8LBLQcIqNaSWAsuKQbJTNsbKEIT5AoHBANcs1QPluTGTY3BXvGMwjl3dDyf1h10u +iaGi1tDB60YtF++RnwOl40Zi1Gu8GqmmzY9j32EG5moRO6IhuZ2U+lZcK/AiwY00 ++4hnzc0hBInFlq3lLRa6zVj4rEeQJxuKXykJGLQyKtSqtppcAo7hWE08ZZ6DlnvP +4o4R9ii6gCZcajhr5Bh9FxZOHv+5gMRzOVWmMF0JSjnVToCi0UUY6b3roRdH/U+M +3EOVCOUT1WE7cGuZffkcQ3jQEsC9zRHFFwKBwQDRBsKIfm0FMjP2Z0aQDpHO5wR6 +Vcjw2kmVukTPqlYPcDGaYbUVuQJIR7+ffd8xk0YbIeOfO/bXGngLAjKSGz20JIIW +E/B5RkVycwjD/WeD5NMvKc3NaiT3aiXmnwz1YUzxDHByAtskAKsoXE/GIsyVCbV2 +vDaBn3MCywTvcC9RR4KYeTepKMvd4N8KLgP9n/+hKd1ElsBVnPJUyYabmaOC1tpx +DUyWu3dbhKBKcfEcyt1+YT1bPrfRnG9oxyRStzUCgcA8R9sFVH4lXV0mQ+4K+7dm +pF9yml5pxHfaSHxVz33SEx/5hZo+s2KQfW91HyV5EbnUye3yiLRUUq+aJEiT1QCs +4PWOOK5wmL8+35XQOcfDsQ8deG7BR2Pv4PqiscfC92jhXiMFmGhXW9v8Mnqk/Ix4 +VstBNSwbU4nssyt7DYSJOqqnU9J66dBl90zH53gjkQQm8n/qEIgy24c6kmJ+MRSK +mFBw7UIR3yx14nKzenL04moEOuQHvdtJJUGbrZCdwdECgcBCra9cr0fDwpIE5kkC +J0OoBtXM2JSzEE8s7jCJNkMhxZ5tKwIDHfN2bzzXeeW7AMn6WcMsxoolcBIfIOJU +7U+vqX294Tpy1VHOApgnPSzKTDJ59xHplxSXwEq62L3fgNx0gI1WMUcKoxP2Wgww +nmU4ndI/QCb7Dow3td+rKdROT0t/rBtvYM43x0YfDzLCs0luddZZzOUp6lj7ZxYD +iO06DaO9MIrgAok+rn4bgWFy19v0NrzF4KnuucJoYC5cHIkCgcEAzG+0oppa1L+e +Tw+511VtO070XJ0Kx4DNKjP2F5nFSqTkDAyEEiLoIArO5dYGG5nHy3lXSoj+wvOe +1+3KTZPeFA7ZByceehFXrULT4GbHwbsimzLWBXAF2Dgzb2OZYMnKuFR/tjlW0+vP +OP86cEkQXNJm4SsxxeFjJAcxxif305OzgL8oqndOsohopB+XCbKUP231HBMGJ4MR +EljQHXm63wWWiBUmrX0ZYzWkX5KiAbDlfhvde80fKsDOUrzZfoBw -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_server.pem b/testdata/09-unbound-control.tdir/bad_server.pem index 983247ac7..b81fb19f2 100644 --- a/testdata/09-unbound-control.tdir/bad_server.pem +++ b/testdata/09-unbound-control.tdir/bad_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B -RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ -DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV -Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy -zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm -O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu -oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +MIIDqzCCAhMCFFzmVNbhjiApmjK3VeO/j9TBp8yOMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAr7FId+AlZUWP6MK9xfV0hJ9ooJdcL0sm9yZsWY4UYOlqcTGERah/XvQm +sOaKcMg8Wof24LAvo2vmariBYZoS61AAi6MeHHrPh8M2ZDMZQgW4nZC8A0biro93 +nMLU1VxgycSVmj29p18IdNzsYWxC7t+/6AWQSlwD+9YFOYrVWQYxEcSZ7gZqoh08 +mDsNRjnVs7nagPAbk/B9jj9zhvgp+0d5h25Ms7Td22t7DfsGlL8Ei3ewFwaqjThh +hVHEVwARBLYGb2ZsZS5EMJv2W/V0k6yQZ+rV07+i0oZQ0cGxOuUy9TNO7HfiI4ri +2x26Wm0YH1qgK5miUIAkbL2E/iWVxMfQOdEAZuOmUpUFOFpm/XHL1/pCyiqOb98j +jLE93UoNPZdsjrbjfQ/WPkap+vtigVZJJPet6F9x4S5XvrhXkV2JWIYMvhnrs9Np +veCOe1lcxNVSsIAtMxsZKi2dIq+mRhfm9/UGoOmj8UxIQUepJJv1IHcdASWkTAMm +USyF7z7DAgMBAAEwDQYJKoZIhvcNAQELBQADggGBAG+IhOsdEiaVCOB8PBRGJQ8F +/kyeQOtE7pPPkH57qYwAW9cxdSoiIxrvase30IGLWmOzjiAc/igf1qz/bVpwFXQr +XohzyeQJ2znlGzUbo67c8rocvWxHzvZwFuQEysJp/E9ft5kiWwoU/xVpoK5p9sxW +zRTTdpA24x6rqvk1ZFzwWGSg0yhjOYfwvwg3kGCbwe3GzAk1J65E+uJPFoLySbNL +p3eUDA2rUKDjVobJOEhtV8k/l+hB0kKwiz/A2sbMT/OoByWMNFKSkmDbNi5m5gJH +FHsZsucbL6ppLy7fmOiPlx6xejbiTR3uAn0aQImdHA5kyfAXLKhTkyYdjWHiHqdQ +XMxi0Ci7/HO9mRupbcjRZEPs//ozMxjOAg4VNasDLdnDI4EKrClqYPjsfoXXXiZf +YTPH9QypxJFGmGEH865BNacEjDBeag8ck1ZTiK/GlrAJMqfV5/60GWBGRQVV/Tvd +WXWY2x0gVp2fxtxF8JCvHKAcfUg2+LrUS7fbMx2Niw== -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.key b/testdata/09-unbound-control.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.key +++ b/testdata/09-unbound-control.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.pem b/testdata/09-unbound-control.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.pem +++ b/testdata/09-unbound-control.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.key b/testdata/09-unbound-control.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.key +++ b/testdata/09-unbound-control.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.pem b/testdata/09-unbound-control.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.pem +++ b/testdata/09-unbound-control.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem index 6e588a4ab..1db9680cb 100644 --- a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem +++ b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICWTCCAYKgAwIBAgIJAN5YIkuCvJf5MA0GCSqGSIb3DQEBBQUAMCYxDjAMBgNV -BAMTBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0xMzAxMTcxMTUyNDVa -Fw0zMjEwMDQxMTUyNDVaMCYxDjAMBgNVBAMTBXBldGFsMRQwEgYJKoZIhvcNAQkB -FgVwZXRhbDCB3zANBgkqhkiG9w0BAQEFAAOBzQAwgckCgcEAuPBoYZiFOuk2SnN0 -IsheC+W7JvAJcv8tksyz/hgAnqStDnDrQ4trF607aCQ7xjj2fSAqpiMvLv0P3Ctu -rcTRHmRXApS3GBf1PjWqoxMK8JBxCIHN4PKpyq4czOtSPH6AFlU+3KsRRwymLgpT -SE15NYv/2M6Z3/cL1SkOdVvVDrZv1gO4OCAxwrgI6HMsjQtwe16mGsBQzrHTCOGV -u4QtISEUDrwZL272PFsZrEpHXd9LtSpqCEoOMujr54pKxBEJAgMBAAGjDzANMAsG -A1UdDwQEAwIChDANBgkqhkiG9w0BAQUFAAOBwQCaA3ys5hDPMNV1oXIxH6u2KfAX -C9tYJId/SR0x8whsZuNaSEZAgImdM5dnyWdjey8Pio772E9/F2aUBGFkdadZx4My -d7hBfEi/NECEKs86k9g0ijbin41NKtnajb6GwyNQ9vDx7Z5FS8BZ3CD0BZIdCQUE -gKuDSWBROQU3tqrjdk2QTwGQkj2mgzT871Jn1MwZw0mczPjS1y469Ejym8wi3uCd -EboDOoGBCpmUQbxBv6JI75cUCdmNNEwjQjZ0XQw= +MIICZDCCAY2gAwIBAgIURC8vM7SbxPTMmosTyBzLlqxgsUAwDQYJKoZIhvcNAQEF +BQAwJjEOMAwGA1UEAwwFcGV0YWwxFDASBgkqhkiG9w0BCQEWBXBldGFsMB4XDTIw +MDcwODE0MDk0MloXDTQwMDMyNTE0MDk0MlowJjEOMAwGA1UEAwwFcGV0YWwxFDAS +BgkqhkiG9w0BCQEWBXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC4 +8GhhmIU66TZKc3QiyF4L5bsm8Aly/y2SzLP+GACepK0OcOtDi2sXrTtoJDvGOPZ9 +ICqmIy8u/Q/cK26txNEeZFcClLcYF/U+NaqjEwrwkHEIgc3g8qnKrhzM61I8foAW +VT7cqxFHDKYuClNITXk1i//Yzpnf9wvVKQ51W9UOtm/WA7g4IDHCuAjocyyNC3B7 +XqYawFDOsdMI4ZW7hC0hIRQOvBkvbvY8WxmsSkdd30u1KmoISg4y6OvnikrEEQkC +AwEAAaMPMA0wCwYDVR0PBAQDAgKEMA0GCSqGSIb3DQEBBQUAA4HBAHX0rIirg2Rt ++rp7BnR3riq81b0cWm4Y/UUdGmLtbPTJLuZogfLZhb9hf+185ub/8ZbuwuUFaiUY +zEcAjaOlPjBeRbNku1xnAVhlgtCIsCOyI37Ey+65OuJxL+0Rpwsyfh0WuR8SdBE5 +OdJ2DuH2yRkTd2JEsNi+DZVIEeaKwXtLGUvsqYWu0GrnXORwGsezfiLM4uAJW+tp +VA95CKpfS98l1MJIHtlcpffAjfRVZAJnGcXv+P/DtefC8aNukoiqvA== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup index 3e5931199..2492f47b4 100755 --- a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup +++ b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup @@ -46,7 +46,7 @@ CLIENTNAME=unbound-anchor DAYS=7200 # size of keys in bits -BITS=1536 +BITS=3072 # hash algorithm HASH=sha1 diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key index 47d15dd37..68b514f83 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIDfAIBAAKBwQC2p0MTVVEfvOpaWlI6rLKGxaHfw/4JUxXCwDHRkkyB0hkISRMx -8imB+io0aY2Uck9zl0BTgPaKtFeA0+lukZk75keOuATPFZwbCGs+6Tx5AoN4+NzI -aVay5AuO8E1u6AVdmcAqByP+R92yz5f3T93/cSsYzqPZ6Y1wO9sabtrkGTYwnfMg -nSttyvlBIhRDWbEO+rWL2CCi0JtrnpiK8sa2ysQCq9Y6ZiGjT9PEWIZwkxQ6y5TI -WVtyitoknpDheZcCAwEAAQKBwAgeXSPh2e5ANmZ3t0n2XSUSacSJcKQ3djMm2dAH -4bCvhv9QSDMjIWcumGul+W4Muq1XnrtXcx3tMCqAwNJyVE5OSQX19fjCbCLjd+je -8xop23AoF6As1nazHjRnR/nTBD7QNx2xbaW8RNbaGpTe2G2lpdbg9myRpyqiB8Pk -73x/AQcPqm4SHBJS+kU/Q9k9yZRHGQ/PhYlvAmY0SCndew28Pcs+IdCI32k7e/aP -SCEQvVqKeIiSJ0Zj8RSk8Pz1cQJhANtNsvcEa2V8NxI9yL2zwvBXwoBuU+d9Pszt -Ooqc/kmvU0FV06HgiIPtTSoHLI7Zh9h5Xn4DFGmtS8WeGhwSVCN1iwcW9F2ldgAw -LXcoXjEK21KXYFNAYeo07vul/Ly/yQJhANU3lM8hAqq7FB4R5zgUCcp08FOVA8tl -kEK1JoAdfp6Wv4M2xGJ6tmKcf92r0F8zBDV6oZX/dtPwFzWhBZUi+zaA8PcEqbwt -CJtmM5ycoX6kkkIfXtAVNZiTIYHn01beXwJgQBFA+V03KtzREeku3gzIJILe9bpF -lNlIIYIkmh4nQ8uOnQW/4AjCmRgYdPDHmav/PcSnUFUB/6V6/26i3hSUtA9A4H9a -QIl4IbHxdmA6tEUhsc07fNbQRCXWs3nYjiPRAmEAjDe4MhsYYOUUzs2hTFzJL46F -ucHGtA0/uM7e2eQLsAmdOpJaxhTDOsiGwmXKa8DmJLFX8IgHQkujR850GGbf5DEZ -xqkXYrwO6/tjN7w97EYYNUniFV/NVmBz6bVmY7trAmAvvg7MoBlb/o6nwoCQqnUM -QyjIy9A0t8+KHNMFSQwUldG+HIwiU4/7y2zCqBYJg8NOjrdj/3+73A24rP8wRp15 -zqQCS7mLLWmYx7pWE1ZHN8eY3xGoHmr7LzlB+dzYG+w= +MIIG4gIBAAKCAYEAzDESJ2lpIno7KpSrYBeBshT8H5dbtNF9rVBONsCmwSSqclLR +ixZ62OKrUKMVCEpZ0zj4yZOu3DGTfL9V9pEk3dCD8mFmylidYeLh5GHGMcDVWOzD +VPsnQ9y43KWYeURpGy4QSCxYDb5rrPysleSZwuN5D4lbs/AKdpubAHj6z37Zbrs2 +GjofHp6TaD6ck7jyRXDtqShrnsVXq9U1CadYDOPiE4aZ1TvusRzhhjmDm8GQXalr +tIBJ5j5EcmRamFhONGLshfj5ECZrKo9L17kOd8PyRMaXNfvl2tpx1qtMxmp7FDpb +oGGIzP7F7hyaWMI/zAzkTMAtjGkAJWqHgTbSfvlVul23RLvovM3fD/ZiugBuTWY/ +CRpmN7CQFFV6iFyLGjRp8vV7BojUIQX7is8QTxSqW12SsElMXOuUmcCnuIaoGF4n +AoG6vNLFECtSdLTjQ0uXawIp7dOww4zS8j1/dZzXsVF4G4V7GjeWD8eX7n+HNWoc +3ojjuYzbWfWvLIQbAgMBAAECggGANUTD8KYuOEFc+BHK14mqWxPgZjltQjG4sKMX +lG8T0aVIFgUHB1r492XCvYmd7gi/gDwHo0a0wlromA2uVmGtFXTVR0EjuLv/as7u +kU70jnw47DbwClZu+uQ1EdLdgR1Ysi+FLd7rpcI8gudz+rKlblM7fNMfqkR/5ktX +13q4K7Ny89FBHvx0q99Ao1xaKquAAJ+iUJPr54KiCYDYkkkmzk4Q53kg3qEA9xGK +wCJ29AY+LEELiQ5CuR8baiBGBiJa5QegeThbQox0jBlezNWAMOg1seCchpbZ4tHm +zuM+IRjZ9GRgkxNctQu8nx3Z6QcClpNFW2WfdThI4nzjqvE9C2nQBR+i/a+v0D90 +bX3LbCcPBE5Hr6sdI+pSQ0C3eFOuGZaCdfRxVs6ymWti3STdlMtTgaEOsCswmU0e +DasWVYbezyPHImb34r0/q1ux4BZkxon1AqjLLYOCF5LQ91v868jdwOIITGL3gviN +/TYW0ObbJ3Szav860B9vlGUtG86JAoHBAPNcY2LLCVMWkzrsmkyLL8+MmF1dChsF +/rVt8QIiiStZkV2q3f3F522kVVvH3dYwh6MyzBNPFBAAXHmaY2IjczL3gKWEz0OA +YlKv5+KoEBlRtonJIHSs6GCjdnl6EJ9NyF8NHq/tgpab326Dpb7RyXzMv2EZV5uY +kp3WVqJZONa1xEHYud9SOA7TA3X/7td7bC49b07n0SidH2N93ZZMd+oApjsHx97q +9J1BxCbaJdPX7mK15pPPWD7vPZqsxyeSjQKBwQDWy+hH1jrr26UUAdIq6SgQxPXh +Y2+epVbHGD0UK51Io0rAg0m3Nlaxr28EPc/MLfjwzwPs6cHdM1j1FMqwGCYiO8mw +CV+XqPVDc6Xqzklf+awMqhn71j+M4Y4Dr6K71fXQ9ek5X+9I47I6iuVLOOegLm29 +qSlg/x1fOkQUKnJNQw6aEJmPj7mi6q693E+oa6hzVO160AGe4tAJoidaR7ifwKU1 +ySOhXtugs2I2P7lc07UtkIwftiYS69d1CRE2G0cCgcA41hj4F8dDuoAEQQIAYnl2 +FbX4CCS2Dv5fzR9+iiZTE4YZxDA4dqIIP1sYJmOvBIKJIPH8iHl9CziNxfr0Dqd2 +/crz3UKy1ycffKnBi9LGtwjUwT5tQXy8JTEkSdfb/MSRPnUuTWA0YI8cNm7dVA2k +sgT4XnzRgB6t8kMlg4T80FLXthAjEga5n5qtUmqrtM2dNwfp+8YjoB6Wk+zOj2lq +I2CvZK/PZjxfBd8T29r90O6B603As6o+eI2AtF2G5nkCgcAuhHBkhleyVpoUkCRk +2KOtpgod6rv0npgBfBVWNe/VGFALCyO+wszZpEWlpIFJFbew5xRRjXpHnmQoh30x +z7kKdupB7nW+UX/0QKpxBIXNfDOvdnM0H/0ZVIu97p6OkVKwE2GT5Fvc7DrgBM6N +kOBQx11K0sS8VeOViPfPajXg16Hk6a1n8tdgGfUH9xtlPRN5Dq5zh3KiZzpoq65c +FeY86qqc0FegDfwAfHjLiNdq7ApzuLcv8vGh7WN23CTXE+cCgcAhhnUawfKcOvwh +3+Tt+vX6dBU7x+JVUiaI27zirE4dbKAsNN8MY7hT5pEwYYArtS9szWqmce3VT8dN +t5kJdn0ZLh4tnZcWd8z+xTXjgxgKeSqoUqPjOd9V8f4ceiPeLGnDV/6xPiVdCrHi +/R/fLidzApQKg7kGDyB1IX0gW+9mT24/zD+M52TjRdmYL6E7/1nZlNlr2JWfIdb+ +RLg/+EujuZo36hR59XQVEnvuhZFQ+MQeHC82yP4gjG0ADpLQ3cY= -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem index ec7cd7e78..e7fe79bc3 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem @@ -1,14 +1,19 @@ -----BEGIN CERTIFICATE----- -MIICNjCCAV8CCQCbt2WrJa/ewzANBgkqhkiG9w0BAQUFADAmMQ4wDAYDVQQDEwVw -ZXRhbDEUMBIGCSqGSIb3DQEJARYFcGV0YWwwHhcNMTMwMTE3MTE1MjQ1WhcNMzIx -MDA0MTE1MjQ1WjAZMRcwFQYDVQQDEw51bmJvdW5kLWFuY2hvcjCB3zANBgkqhkiG -9w0BAQEFAAOBzQAwgckCgcEAtqdDE1VRH7zqWlpSOqyyhsWh38P+CVMVwsAx0ZJM -gdIZCEkTMfIpgfoqNGmNlHJPc5dAU4D2irRXgNPpbpGZO+ZHjrgEzxWcGwhrPuk8 -eQKDePjcyGlWsuQLjvBNbugFXZnAKgcj/kfdss+X90/d/3ErGM6j2emNcDvbGm7a -5Bk2MJ3zIJ0rbcr5QSIUQ1mxDvq1i9ggotCba56YivLGtsrEAqvWOmYho0/TxFiG -cJMUOsuUyFlbcoraJJ6Q4XmXAgMBAAEwDQYJKoZIhvcNAQEFBQADgcEAhc3wYcbD -Uu9Osbu3bhbxLCkhedq/3weEO8RDU3AyB8diioAikagIOb99UeVE3WIds+JIPD6J -mK5UvS+lPR8SEOMRd0H91bEEp1Zn+gHAS/Z7k/x9t38Xk1N0jOnElc6n4vl42KLO -z2laJWcte7YXjzFjaNxP9fsGgEx1vRxcjtpXQWSY+oj+RVm5kRs5WKX5MCyD/p+y -Xitg7/a0ITKbW1GpVwaX6nPaeoze68m3qmy64l080XCna3igbhi3h2ay +MIIDBTCCAi4CFG36qDt2k02biKtMYGtLy9khnP+eMA0GCSqGSIb3DQEBBQUAMCYx +DjAMBgNVBAMMBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0yMDA3MDgx +NDA5NDJaFw00MDAzMjUxNDA5NDJaMBkxFzAVBgNVBAMMDnVuYm91bmQtYW5jaG9y +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzDESJ2lpIno7KpSrYBeB +shT8H5dbtNF9rVBONsCmwSSqclLRixZ62OKrUKMVCEpZ0zj4yZOu3DGTfL9V9pEk +3dCD8mFmylidYeLh5GHGMcDVWOzDVPsnQ9y43KWYeURpGy4QSCxYDb5rrPysleSZ +wuN5D4lbs/AKdpubAHj6z37Zbrs2GjofHp6TaD6ck7jyRXDtqShrnsVXq9U1CadY +DOPiE4aZ1TvusRzhhjmDm8GQXalrtIBJ5j5EcmRamFhONGLshfj5ECZrKo9L17kO +d8PyRMaXNfvl2tpx1qtMxmp7FDpboGGIzP7F7hyaWMI/zAzkTMAtjGkAJWqHgTbS +fvlVul23RLvovM3fD/ZiugBuTWY/CRpmN7CQFFV6iFyLGjRp8vV7BojUIQX7is8Q +TxSqW12SsElMXOuUmcCnuIaoGF4nAoG6vNLFECtSdLTjQ0uXawIp7dOww4zS8j1/ +dZzXsVF4G4V7GjeWD8eX7n+HNWoc3ojjuYzbWfWvLIQbAgMBAAEwDQYJKoZIhvcN +AQEFBQADgcEAPz9Iw956A8piiC5y3hJXAEJ0JYdNrpsgdj7n6iAXRU2EY+juzcKU +D+zcNEcebQJJxayr4eEMfUOUO1wH5uPkWBhKOC/qm6T6i/+/xNsksOeHm12G4/vH +VYPXTxMS+K+mz5HLmLcR0kuQMnCK22FFQj86fhr2vHBGHqINR6MxwvLCES37FWvr +qVZSseK6/6IwRgsjN101JUpaSnM88cMDpuUcqQrAbSSBRKDvjYMkcYcYuvchab26 +G0jEU4KgxaOs -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key index 6614e498f..370a7bbb2 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIIDfQIBAAKBwQC1xQ/Kca6zszZbcCtdOTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJ -RuN+Rm304SonpwghfP2/ULZNnuDgpG03/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1 -QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ867K029ypjOQtAJ85qdO3mERy7TGtdUcu -O6hLeVet419YeQ2F8cfNxn63d7bOzNGLPW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeU -J/i4YDWexFYSL+ECAwEAAQKBwCLXXQl+9O+5AEhSnd1Go1Jh0pSA7eBJOuXQcebG -Rb7ykp+6C4G2NtDziwwPRNdI6wQQQ0sym18RfyVQHydGr78/nbiIbB3HCn5e92Mh -mefzW6ow9Kvm2txLzGKA1lvoyRbNm81jnG/eygi3u7Nqd5PNv+4dHj2RkTlmxOeh -qnDMVP5md8uZPv6lYNnrnIzvLCR5vnPNdVwn89AqzI85IcDZdy0R9ZX4NBbsDgAU -6ig6uXuRXvSGiyJ/OUXSrnogaQJhAOjvkHUhVZQkPOxO90TNH4j0GdKKtbSWxIdz -lKfuJeBAEqs0TL+C6vbS81Xw3W1alyDdUBk3rJMOBqW6Ryq5HNL+j5H+Jfsh7fvc -Yle+5wHGci0P9zCFZCrY8It7n9XFIwJhAMfEi6oJa2G8waPJ1bQhxka82Tf9pnKM -XCn/1BBOFjVIx5F842cpA+zp5a62GENTGYPQTTRBB/2/ZwnW5aIkrlg54AtmbqBZ -Oh+2kJdJQD/tfoVmc5soUE2ScTHadK5RKwJhAN4w9kjkXS+MSZjX0kIMsBIBVkhh -C+aREjJqa9ir7/Ey7RvmLXdYuCxtGLRXp7/R8+rjcK49Tx6O+IRJZe042mfhbq3C -EhS1Tr86f4xXix9EXlDhs9bSxrOgcAN9Dv/opQJhAK7eBcPaav0rVfYh/8emqQHS -3fJ9Pu6WnzbEksWTFS2ff9KDGCx9YspIFJ5TF/oXDAaumGZdZrlgirm6O1kr8tGY -F97i04PZl1+bWAaWQH+1TUNI43m2WFUPE7coG2tb8QJgcddDg9VlXliZqgcETZfJ -kJmYETxrcSn3ao6v116N8yxhEgUgjkmsCTiFgx36iDVnXwK6PIt+sIu8MC7eYNa3 -berrv/M21K0LRn20IWRxvUobG070weHCAgkko7fTWgr2 +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem index 19c8b895b..986807310 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem @@ -1,14 +1,22 @@ -----BEGIN CERTIFICATE----- -MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw -ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT -BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd -OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 -/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 -67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL -PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG -9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD -ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO -mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV -bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd -q7miNnkO8vd0maw= +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.key b/testdata/ctrl_itr.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.key +++ b/testdata/ctrl_itr.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.pem b/testdata/ctrl_itr.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.pem +++ b/testdata/ctrl_itr.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.key b/testdata/ctrl_itr.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.key +++ b/testdata/ctrl_itr.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.pem b/testdata/ctrl_itr.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.pem +++ b/testdata/ctrl_itr.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.key b/testdata/ctrl_pipe.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.key +++ b/testdata/ctrl_pipe.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.pem b/testdata/ctrl_pipe.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.pem +++ b/testdata/ctrl_pipe.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.key b/testdata/ctrl_pipe.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.key +++ b/testdata/ctrl_pipe.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.pem b/testdata/ctrl_pipe.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.pem +++ b/testdata/ctrl_pipe.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_control.key b/testdata/dnstap.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap.tdir/unbound_control.key +++ b/testdata/dnstap.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_control.pem b/testdata/dnstap.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap.tdir/unbound_control.pem +++ b/testdata/dnstap.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_server.key b/testdata/dnstap.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap.tdir/unbound_server.key +++ b/testdata/dnstap.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_server.pem b/testdata/dnstap.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap.tdir/unbound_server.pem +++ b/testdata/dnstap.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.key b/testdata/dnstap_reconnect.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.key +++ b/testdata/dnstap_reconnect.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.pem b/testdata/dnstap_reconnect.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.key b/testdata/dnstap_reconnect.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.key +++ b/testdata/dnstap_reconnect.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.pem b/testdata/dnstap_reconnect.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.key b/testdata/dnstap_tcp.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.key +++ b/testdata/dnstap_tcp.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.pem b/testdata/dnstap_tcp.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.pem +++ b/testdata/dnstap_tcp.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.key b/testdata/dnstap_tcp.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.key +++ b/testdata/dnstap_tcp.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.pem b/testdata/dnstap_tcp.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.pem +++ b/testdata/dnstap_tcp.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.key b/testdata/dnstap_tls.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.key +++ b/testdata/dnstap_tls.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.pem b/testdata/dnstap_tls.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.pem +++ b/testdata/dnstap_tls.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.key b/testdata/dnstap_tls.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.key +++ b/testdata/dnstap_tls.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.pem b/testdata/dnstap_tls.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.pem +++ b/testdata/dnstap_tls.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.key b/testdata/dnstap_tls_badcert.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.key b/testdata/dnstap_tls_badcert.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.key b/testdata/dnstap_tls_badname.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.pem b/testdata/dnstap_tls_badname.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.key b/testdata/dnstap_tls_badname.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.pem b/testdata/dnstap_tls_badname.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.key b/testdata/dnstap_tls_peername.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.pem b/testdata/dnstap_tls_peername.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.key b/testdata/dnstap_tls_peername.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.pem b/testdata/dnstap_tls_peername.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_control.key b/testdata/dynlibmod.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dynlibmod.tdir/unbound_control.key +++ b/testdata/dynlibmod.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_control.pem b/testdata/dynlibmod.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dynlibmod.tdir/unbound_control.pem +++ b/testdata/dynlibmod.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_server.key b/testdata/dynlibmod.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dynlibmod.tdir/unbound_server.key +++ b/testdata/dynlibmod.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_server.pem b/testdata/dynlibmod.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dynlibmod.tdir/unbound_server.pem +++ b/testdata/dynlibmod.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.key b/testdata/fwd_bogus.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.key +++ b/testdata/fwd_bogus.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.pem b/testdata/fwd_bogus.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.pem +++ b/testdata/fwd_bogus.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.key b/testdata/fwd_bogus.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.key +++ b/testdata/fwd_bogus.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.pem b/testdata/fwd_bogus.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.pem +++ b/testdata/fwd_bogus.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_control.key b/testdata/remote-threaded.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/remote-threaded.tdir/unbound_control.key +++ b/testdata/remote-threaded.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_control.pem b/testdata/remote-threaded.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/remote-threaded.tdir/unbound_control.pem +++ b/testdata/remote-threaded.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_server.key b/testdata/remote-threaded.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/remote-threaded.tdir/unbound_server.key +++ b/testdata/remote-threaded.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_server.pem b/testdata/remote-threaded.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/remote-threaded.tdir/unbound_server.pem +++ b/testdata/remote-threaded.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.key b/testdata/ssl_req_order.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.key +++ b/testdata/ssl_req_order.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.pem b/testdata/ssl_req_order.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.pem +++ b/testdata/ssl_req_order.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.key b/testdata/ssl_req_timeout.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.key +++ b/testdata/ssl_req_timeout.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.pem b/testdata/ssl_req_timeout.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.pem +++ b/testdata/ssl_req_timeout.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_control.key b/testdata/stream_ssl.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/stream_ssl.tdir/unbound_control.key +++ b/testdata/stream_ssl.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQDD6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBa -rzPA0vlyuNtUsEN3qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvH -ST6JwUdIg0Lzg/USJ81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQAB -AoGAFT3e35MIgI4uDJJ8X0RfHp2NCO2LUg4TKbWical/C0W9vlR1/x80G1pE1d2Z -WotqJVWTrOq6eBox19RCgtLg2wPGk9uD62+9SDT37heWFlUCElWq50pQG6k9ThiG -DDypkZyZ/52+DdWybiaQJkuK6O5qQXuNAtVJMpghu4GnHAECQQDsupnZUQDpapzr -4FC4MSkL2+A1PRt6g4VhwoqOpJXaHfVnH6F7AwUuOLNwGdR5Cvv70pfJ7Jqg8L2m -Kxyl5bORAkEA09rn34YQ0pHJdHidbl2kInIuYTz09+TO3LWwan17nISH9aaYvVDr -p9x1B4Qzw9qyxT9oll7ze/5Rw/7C3AQj4QJAT2B2a+b8bkgAXBs4FbruL3rHoDJg -P2FQXSpVOWU4lg2LlsuFYvDtUMVUbZdLplanjZXcral3Y9W1Ub2M+ped8QJAYQN+ -aRpge7ys7vwIw7B36Bo3aOncF+ScYe+FkM5Tm7II/JHEofT7ZQwMP1vnxIlSkgbe -YvWqNB6a3NC99LikoQJBAM4UhDdRg63Tr6Idky6CQaH///zAN7nArJfffKGWFdw9 -DKrWpNqvYZtX/cfEJucKcRCm5YL8CKFYbQy4VoCxUcE= +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_control.pem b/testdata/stream_ssl.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/stream_ssl.tdir/unbound_control.pem +++ b/testdata/stream_ssl.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_server.key b/testdata/stream_ssl.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/stream_ssl.tdir/unbound_server.key +++ b/testdata/stream_ssl.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_server.pem b/testdata/stream_ssl.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/stream_ssl.tdir/unbound_server.pem +++ b/testdata/stream_ssl.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/util/net_help.c b/util/net_help.c index e287f90aa..a00fe2e2f 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -55,6 +55,9 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif +#ifdef HAVE_OPENSSL_CORE_NAMES_H +#include +#endif #ifdef USE_WINSOCK #include #endif @@ -79,6 +82,30 @@ static struct tls_session_ticket_key { unsigned char *hmac_key; } *ticket_keys; +/** + * callback TLS session ticket encrypt and decrypt + * For use with SSL_CTX_set_tlsext_ticket_key_cb or + * SSL_CTX_set_tlsext_ticket_key_evp_cb + * @param s: the SSL_CTX to use (from connect_sslctx_create()) + * @param key_name: secret name, 16 bytes + * @param iv: up to EVP_MAX_IV_LENGTH. + * @param evp_ctx: the evp cipher context, function sets this. + * @param hmac_ctx: the hmac context, function sets this. + * with ..key_cb it is of type HMAC_CTX* + * with ..key_evp_cb it is of type EVP_MAC_CTX* + * @param enc: 1 is encrypt, 0 is decrypt + * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket + * (the ticket is decrypt only). and <0 for failures. + */ +int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc); + /* returns true is string addr is an ip6 specced address */ int str_is_ip6(const char* str) @@ -1387,10 +1414,17 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } /* terminate array with NULL key name entry */ keys->key_name = NULL; +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + if(SSL_CTX_set_tlsext_ticket_key_evp_cb(sslctx, tls_session_ticket_key_cb) == 0) { + log_err("no support for TLS session ticket"); + return 0; + } +# else if(SSL_CTX_set_tlsext_ticket_key_cb(sslctx, tls_session_ticket_key_cb) == 0) { log_err("no support for TLS session ticket"); return 0; } +# endif return 1; #else (void)sslctx; @@ -1400,13 +1434,26 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } -int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name, unsigned char* iv, void *evp_sctx, void *hmac_ctx, int enc) +int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_sctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc) { #ifdef HAVE_SSL +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + OSSL_PARAM params[3]; +# else const EVP_MD *digest; +# endif const EVP_CIPHER *cipher; int evp_cipher_length; +# ifndef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB digest = EVP_sha256(); +# endif cipher = EVP_aes_256_cbc(); evp_cipher_length = EVP_CIPHER_iv_length(cipher); if( enc == 1 ) { @@ -1421,7 +1468,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name verbose(VERB_CLIENT, "EVP_EncryptInit_ex failed"); return -1; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_KEY, + ticket_keys->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; @@ -1445,7 +1499,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name return 0; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, + key->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; diff --git a/util/net_help.h b/util/net_help.h index c1bb13923..29943ada0 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -478,20 +478,6 @@ void ub_openssl_lock_delete(void); int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_session_ticket_keys); -/** - * callback TLS session ticket encrypt and decrypt - * For use with SSL_CTX_set_tlsext_ticket_key_cb - * @param s: the SSL_CTX to use (from connect_sslctx_create()) - * @param key_name: secret name, 16 bytes - * @param iv: up to EVP_MAX_IV_LENGTH. - * @param evp_ctx: the evp cipher context, function sets this. - * @param hmac_ctx: the hmax context, function sets this. - * @param enc: 1 is encrypt, 0 is decrypt - * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket - * (the ticket is decrypt only). and <0 for failures. - */ -int tls_session_ticket_key_cb(void *s, unsigned char* key_name,unsigned char* iv, void *evp_ctx, void *hmac_ctx, int enc); - /** Free memory used for TLS session ticket keys */ void listen_sslctx_delete_ticket_keys(void); From d89a45d1e129a86e0fbeee0db618c57e47da09b7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 10:28:47 +0200 Subject: [PATCH 086/394] in outnet_tcptimer: pick up callbacks and clean the struct pending for use again in tcp_free list; then perform the callbacks in a cleaner state for reentry into the outside network code. Delete callbacks afterwards. --- services/outside_network.c | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 8da5eeb64..9c3c6ff8a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1773,6 +1773,7 @@ outnet_tcptimer(void* arg) } else { /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; + struct pending_tcp pickup; /* see if it needs unlink from reuse tree */ if(pend->reuse.node.key) { reuse_tcp_remove_tree_list(outnet, &pend->reuse); @@ -1785,19 +1786,33 @@ outnet_tcptimer(void* arg) #endif } comm_point_close(pend->c); + /* pickup the callback items and call them after we have + * removed the current pending. so that the callbacks + * to the state machine happen after the query has timeouted + * and been deleted and it works from that clean state, + * because it may call the outside network routines to make + * new queries. */ + pickup = *pend; + /* unlink them from pend, delete from pickup calls later */ + pend->query = NULL; + rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); + pend->reuse.write_wait_first = NULL; + pend->reuse.write_wait_last = NULL; + /* pend is clear for reuse in the tcp_free list */ + pend->next_free = outnet->tcp_free; + outnet->tcp_free = pend; + /* do failure callbacks for all the queries in the * wait for write list and in the id-tree */ /* callback for 'w' arg already in list of curquery, * readwait list, writewait list */ - reuse_cb_curquery_for_failure(pend, NETEVENT_TIMEOUT); - reuse_cb_readwait_for_failure(pend, NETEVENT_TIMEOUT); - reuse_cb_writewait_for_failure(pend, NETEVENT_TIMEOUT); - waiting_tcp_delete(pend->query); /* del curquery */ - reuse_del_readwait(pend); - reuse_del_writewait(pend); - pend->query = NULL; - pend->next_free = outnet->tcp_free; - outnet->tcp_free = pend; + reuse_cb_curquery_for_failure(&pickup, NETEVENT_TIMEOUT); + reuse_cb_readwait_for_failure(&pickup, NETEVENT_TIMEOUT); + reuse_cb_writewait_for_failure(&pickup, NETEVENT_TIMEOUT); + /* delete the stored callback structures */ + waiting_tcp_delete(pickup.query); + reuse_del_readwait(&pickup); + reuse_del_writewait(&pickup); } use_free_buffer(outnet); } From ccc9e0749c120739b44c95e735b1949cac20e825 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 13:41:03 +0200 Subject: [PATCH 087/394] stream reuse toggle write and read to only read mode when write is done. tcp callback from stream read without entry linked. --- services/outside_network.c | 13 ++++++++++--- util/netevent.c | 11 ++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 9c3c6ff8a..95ffff935 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -887,6 +887,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, reuse_tcp_remove_tree_list(outnet, &pend->reuse); } else if(error == NETEVENT_PKT_WRITTEN) { /* the packet we want to write has been written. */ + verbose(VERB_ALGO, "outnet tcp pkt was written event"); log_assert(c == pend->c); log_assert(pend->query->pkt == pend->c->tcp_write_pkt); log_assert(pend->query->pkt_len == pend->c->tcp_write_pkt_len); @@ -897,10 +898,14 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, pend->query = NULL; /* setup to write next packet or setup read timeout */ if(pend->reuse.write_wait_first) { + verbose(VERB_ALGO, "outnet tcp setup next pkt"); pend->query = reuse_write_wait_pop(&pend->reuse); outnet_tcp_take_query_setup(pend->c->fd, pend, pend->query); } else { + verbose(VERB_ALGO, "outnet tcp writes done, wait"); + pend->c->tcp_write_and_read = 0; + pend->c->tcp_is_reading = 1; reuse_tcp_setup_timeout(pend); } return 0; @@ -926,10 +931,12 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } } if(pend->query) { - reuse_tree_by_id_delete(&pend->reuse, pend->query); - waiting_tcp_callback(pend->query, c, error, reply_info); - waiting_tcp_delete(pend->query); + struct waiting_tcp* w = pend->query; pend->query = NULL; + reuse_tree_by_id_delete(&pend->reuse, w); + verbose(5, "outnet tcp callback query err %d buflen %d", error, (int)sldns_buffer_limit(c->buffer)); + waiting_tcp_callback(w, c, error, reply_info); + waiting_tcp_delete(w); } verbose(5, "outnet_tcp_cb reuse after cb"); if(pend->reuse.node.key) { diff --git a/util/netevent.c b/util/netevent.c index 6289df823..e749e1b68 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3307,11 +3307,16 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) } if(c->type == comm_tcp || c->type == comm_http) { ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); - if(c->tcp_write_and_read) + if(c->tcp_write_and_read) { + log_info("startlistening %d mode rw", (newfd==-1?c->fd:newfd)); ub_event_add_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); - else if(c->tcp_is_reading) + } else if(c->tcp_is_reading) { + log_info("startlistening %d mode r", (newfd==-1?c->fd:newfd)); ub_event_add_bits(c->ev->ev, UB_EV_READ); - else ub_event_add_bits(c->ev->ev, UB_EV_WRITE); + } else { + log_info("startlistening %d mode w", (newfd==-1?c->fd:newfd)); + ub_event_add_bits(c->ev->ev, UB_EV_WRITE); + } } if(newfd != -1) { if(c->fd != -1 && c->fd != newfd) { From e95edd3d362c7dec854ae05f264c14413e9a56eb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 13:41:50 +0200 Subject: [PATCH 088/394] debug prints in verbose output. --- util/netevent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index e749e1b68..3237907d1 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3308,13 +3308,13 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) if(c->type == comm_tcp || c->type == comm_http) { ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); if(c->tcp_write_and_read) { - log_info("startlistening %d mode rw", (newfd==-1?c->fd:newfd)); + verbose(5, "startlistening %d mode rw", (newfd==-1?c->fd:newfd)); ub_event_add_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); } else if(c->tcp_is_reading) { - log_info("startlistening %d mode r", (newfd==-1?c->fd:newfd)); + verbose(5, "startlistening %d mode r", (newfd==-1?c->fd:newfd)); ub_event_add_bits(c->ev->ev, UB_EV_READ); } else { - log_info("startlistening %d mode w", (newfd==-1?c->fd:newfd)); + verbose(5, "startlistening %d mode w", (newfd==-1?c->fd:newfd)); ub_event_add_bits(c->ev->ev, UB_EV_WRITE); } } From 734a248284341603ff2885f6e17cfd639cb2c558 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 13:49:36 +0200 Subject: [PATCH 089/394] stream reuse, check incoming messages from rbtree in outnet_tcp_cb when read a reply, and call that callback and remove that entry. --- services/outside_network.c | 68 ++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 95ffff935..5082f5f03 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -415,6 +415,28 @@ reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) rbtree_insert(&reuse->tree_by_id, &w->id_node); } +/** find element in tree by id */ +static struct waiting_tcp* +reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) +{ + struct waiting_tcp key_w; + struct pending_tcp key_p; + memset(&key_w, 0, sizeof(key_w)); + memset(&key_p, 0, sizeof(key_p)); + key_w.next_waiting = (void*)&key_p; + key_w.id_node.key = &key_w; + key_p.id = id; + return (struct waiting_tcp*)rbtree_search(&reuse->tree_by_id, &key_w); +} + +/** return ID value of rbnode in tree_by_id */ +static uint16_t +tree_by_id_get_id(rbnode_type* node) +{ + struct waiting_tcp* w = (struct waiting_tcp*)node->key; + return ((struct pending_tcp*)w->next_waiting)->id; +} + /** find reuse tcp stream to destination for query, or NULL if none */ static struct reuse_tcp* reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, @@ -870,6 +892,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, { struct pending_tcp* pend = (struct pending_tcp*)arg; struct outside_network* outnet = pend->reuse.outnet; + struct waiting_tcp* w = NULL; verbose(VERB_ALGO, "outnettcp cb"); if(error == NETEVENT_TIMEOUT) { if(pend->c->tcp_write_and_read) @@ -914,14 +937,24 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, /* pass error below and exit */ } else { /* check ID */ - if(sldns_buffer_limit(c->buffer) < sizeof(uint16_t) || - LDNS_ID_WIRE(sldns_buffer_begin(c->buffer))!=pend->id) { + if(sldns_buffer_limit(c->buffer) < sizeof(uint16_t)) { log_addr(VERB_QUERY, - "outnettcp: bad ID in reply, from:", + "outnettcp: bad ID in reply, too short, from:", &pend->reuse.addr, pend->reuse.addrlen); error = NETEVENT_CLOSED; + } else { + uint16_t id = LDNS_ID_WIRE(sldns_buffer_begin( + c->buffer)); + /* find the query the reply is for */ + w = reuse_tcp_by_id_find(&pend->reuse, id); } } + if(!w) { + /* no struct waiting found in tree, no reply to call */ + log_addr(VERB_QUERY, "outnettcp: bad ID in reply, from:", + &pend->reuse.addr, pend->reuse.addrlen); + error = NETEVENT_CLOSED; + } if(error == NETEVENT_NOERROR) { /* add to reuse tree so it can be reused, if not a failure. * This is possible if the state machine wants to make a tcp @@ -930,11 +963,10 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, (void)reuse_tcp_insert(outnet, pend); } } - if(pend->query) { - struct waiting_tcp* w = pend->query; - pend->query = NULL; + if(w) { reuse_tree_by_id_delete(&pend->reuse, w); - verbose(5, "outnet tcp callback query err %d buflen %d", error, (int)sldns_buffer_limit(c->buffer)); + verbose(5, "outnet tcp callback query err %d buflen %d", + error, (int)sldns_buffer_limit(c->buffer)); waiting_tcp_callback(w, c, error, reply_info); waiting_tcp_delete(w); } @@ -1851,28 +1883,6 @@ reuse_tcp_close_oldest(struct outside_network* outnet) decommission_pending_tcp(outnet, pend); } -/** find element in tree by id */ -static struct waiting_tcp* -reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) -{ - struct waiting_tcp key_w; - struct pending_tcp key_p; - memset(&key_w, 0, sizeof(key_w)); - memset(&key_p, 0, sizeof(key_p)); - key_w.next_waiting = (void*)&key_p; - key_w.id_node.key = &key_w; - key_p.id = id; - return (struct waiting_tcp*)rbtree_search(&reuse->tree_by_id, &key_w); -} - -/** return ID value of rbnode in tree_by_id */ -static uint16_t -tree_by_id_get_id(rbnode_type* node) -{ - struct waiting_tcp* w = (struct waiting_tcp*)node->key; - return ((struct pending_tcp*)w->next_waiting)->id; -} - /** find spare ID value for reuse tcp stream. That is random and also does * not collide with an existing query ID that is in use or waiting */ static uint16_t From 9b583d2331e00c88017e683c1cd2598135c03a15 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 13:58:44 +0200 Subject: [PATCH 090/394] stream reuse, the id for pending stored in waiting_tcp structure, because there can be multiple messages waiting for reply. --- services/outside_network.c | 15 +++++---------- services/outside_network.h | 6 +++--- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 5082f5f03..07454d324 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -172,11 +172,9 @@ int reuse_id_cmp(const void* key1, const void* key2) { struct waiting_tcp* w1 = (struct waiting_tcp*)key1; struct waiting_tcp* w2 = (struct waiting_tcp*)key2; - struct pending_tcp* p1 = (struct pending_tcp*)w1->next_waiting; - struct pending_tcp* p2 = (struct pending_tcp*)w2->next_waiting; - if(p1->id < p2->id) + if(w1->id < w2->id) return -1; - if(p1->id > p2->id) + if(w1->id > w2->id) return 1; return 0; } @@ -420,12 +418,9 @@ static struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) { struct waiting_tcp key_w; - struct pending_tcp key_p; memset(&key_w, 0, sizeof(key_w)); - memset(&key_p, 0, sizeof(key_p)); - key_w.next_waiting = (void*)&key_p; key_w.id_node.key = &key_w; - key_p.id = id; + key_w.id = id; return (struct waiting_tcp*)rbtree_search(&reuse->tree_by_id, &key_w); } @@ -434,7 +429,7 @@ static uint16_t tree_by_id_get_id(rbnode_type* node) { struct waiting_tcp* w = (struct waiting_tcp*)node->key; - return ((struct pending_tcp*)w->next_waiting)->id; + return w->id; } /** find reuse tcp stream to destination for query, or NULL if none */ @@ -509,7 +504,7 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, struct waiting_tcp* w) { struct timeval tv; - pend->id = LDNS_ID_WIRE(w->pkt); + w->id = LDNS_ID_WIRE(w->pkt); pend->c->tcp_write_pkt = w->pkt; pend->c->tcp_write_pkt_len = w->pkt_len; pend->c->tcp_write_and_read = 1; diff --git a/services/outside_network.h b/services/outside_network.h index 0dcf1b2e1..9ebbabe9c 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -324,8 +324,6 @@ struct pending { struct pending_tcp { /** next in list of free tcp comm points, or NULL. */ struct pending_tcp* next_free; - /** the ID for the query; checked in reply */ - uint16_t id; /** tcp comm point it was sent on (and reply must come back on). */ struct comm_point* c; /** the query being serviced, NULL if the pending_tcp is unused. */ @@ -355,8 +353,10 @@ struct waiting_tcp { /** true if the waiting_tcp structure is on the write_wait queue */ int write_wait_queued; /** entry in reuse.tree_by_id, if key is NULL, not in tree, otherwise, - * this struct is key and sorted by ID from pending_tcp->id. */ + * this struct is key and sorted by ID (from waiting_tcp.id). */ rbnode_type id_node; + /** the ID for the query; checked in reply */ + uint16_t id; /** timeout event; timer keeps running whether the query is * waiting for a buffer or the tcp reply is pending */ struct comm_timer* timer; From 4e44e8663d609c1b35f1f1cdf582b42d250f9414 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 14:06:21 +0200 Subject: [PATCH 091/394] stream reuse, fix to return key pointer from reuse_tcp_by_id_find. --- services/outside_network.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 07454d324..acfcb0853 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -418,10 +418,13 @@ static struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) { struct waiting_tcp key_w; + rbnode_type* n; memset(&key_w, 0, sizeof(key_w)); key_w.id_node.key = &key_w; key_w.id = id; - return (struct waiting_tcp*)rbtree_search(&reuse->tree_by_id, &key_w); + n = rbtree_search(&reuse->tree_by_id, &key_w); + if(!n) return NULL; + return (struct waiting_tcp*)n->key; } /** return ID value of rbnode in tree_by_id */ From b1ea8273f039b26fd481d8349893a156f07e7d0d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 14:29:56 +0200 Subject: [PATCH 092/394] stream reuse, fix to not keep stream when it is in error and closed. stream reuse, fix to stop listening on the fd before rw mode change. stream reuse, fix waiting tcp id value stored before tree insert. stream reuse, fix to not double delete pend.query. --- services/outside_network.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index acfcb0853..548ce682e 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -507,7 +507,6 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, struct waiting_tcp* w) { struct timeval tv; - w->id = LDNS_ID_WIRE(w->pkt); pend->c->tcp_write_pkt = w->pkt; pend->c->tcp_write_pkt_len = w->pkt_len; pend->c->tcp_write_and_read = 1; @@ -683,6 +682,8 @@ use_free_buffer(struct outside_network* outnet) reuse_write_wait_push_back(reuse, w); } else { /* write straight away */ + /* stop the timer on read of the fd */ + comm_point_stop_listening(reuse->pending->c); reuse->pending->query = w; outnet_tcp_take_query_setup( reuse->pending->c->fd, reuse->pending, @@ -786,7 +787,8 @@ decommission_pending_tcp(struct outside_network* outnet, /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); } - waiting_tcp_delete(pend->query); + if(pend->query && !rbtree_search(&pend->reuse.tree_by_id, pend->query)) + waiting_tcp_delete(pend->query); pend->query = NULL; reuse_del_readwait(pend); reuse_del_writewait(pend); @@ -881,6 +883,7 @@ reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp) sldns_buffer_clear(pend_tcp->c->buffer); pend_tcp->c->tcp_is_reading = 1; pend_tcp->c->tcp_byte_count = 0; + comm_point_stop_listening(pend_tcp->c); comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); } @@ -969,7 +972,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, waiting_tcp_delete(w); } verbose(5, "outnet_tcp_cb reuse after cb"); - if(pend->reuse.node.key) { + if(error == NETEVENT_NOERROR && pend->reuse.node.key) { verbose(5, "outnet_tcp_cb reuse after cb: keep it"); /* it is in the reuse_tcp tree, with other queries, or * on the empty list. do not decommission it */ @@ -1847,7 +1850,9 @@ outnet_tcptimer(void* arg) reuse_cb_readwait_for_failure(&pickup, NETEVENT_TIMEOUT); reuse_cb_writewait_for_failure(&pickup, NETEVENT_TIMEOUT); /* delete the stored callback structures */ - waiting_tcp_delete(pickup.query); + if(pickup.query && + !rbtree_search(&pickup.reuse.tree_by_id, pickup.query)) + waiting_tcp_delete(pickup.query); reuse_del_readwait(&pickup); reuse_del_writewait(&pickup); } @@ -1955,7 +1960,6 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct pending_tcp* pend = sq->outnet->tcp_free; struct reuse_tcp* reuse = NULL; struct waiting_tcp* w; - uint16_t id; verbose(5, "pending_tcp_query"); /* find out if a reused stream to the target exists */ @@ -1991,9 +1995,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->pkt_len = sldns_buffer_limit(packet); memmove(w->pkt, sldns_buffer_begin(packet), w->pkt_len); if(reuse) - id = reuse_tcp_select_id(reuse, sq->outnet); - else id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; - LDNS_ID_SET(sldns_buffer_begin(packet), id); + w->id = reuse_tcp_select_id(reuse, sq->outnet); + else w->id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; + LDNS_ID_SET(sldns_buffer_begin(packet), w->id); memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; w->outnet = sq->outnet; @@ -2019,6 +2023,8 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* can we write right now? */ if(pend->query == NULL) { /* write straight away */ + /* stop the timer on read of the fd */ + comm_point_stop_listening(pend->c); pend->query = w; outnet_tcp_take_query_setup(pend->c->fd, pend, w); From 8201d1422b26e68d546f630659fece41ec025032 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 15:35:32 +0200 Subject: [PATCH 093/394] stream reuse, fix to put id number in waiting tcp packet. --- services/outside_network.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 548ce682e..78e6bef4f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1962,6 +1962,11 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct waiting_tcp* w; verbose(5, "pending_tcp_query"); + if(sldns_buffer_limit(packet) < sizeof(uint16_t)) { + verbose(4, "pending tcp query with too short buffer < 2"); + return NULL; + } + /* find out if a reused stream to the target exists */ /* if so, take it into use */ reuse = reuse_tcp_find(sq->outnet, &sq->addr, sq->addrlen, @@ -1997,7 +2002,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(reuse) w->id = reuse_tcp_select_id(reuse, sq->outnet); else w->id = ((unsigned)ub_random(sq->outnet->rnd)>>8) & 0xffff; - LDNS_ID_SET(sldns_buffer_begin(packet), w->id); + LDNS_ID_SET(w->pkt, w->id); memcpy(&w->addr, &sq->addr, sq->addrlen); w->addrlen = sq->addrlen; w->outnet = sq->outnet; From 79f315f480e07ef859c96882f8d5a3dd12b20c1b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 15:47:24 +0200 Subject: [PATCH 094/394] stream reuse, fix double callback and double delete, items are in the tree. --- services/outside_network.c | 59 ++++---------------------------------- 1 file changed, 5 insertions(+), 54 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 78e6bef4f..c9573bcde 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -753,20 +753,6 @@ static void reuse_del_readwait(struct pending_tcp* pend) rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); } -/** delete writewait waiting_tcp elements, deletes the elements in the list */ -static void reuse_del_writewait(struct pending_tcp* pend) -{ - struct waiting_tcp* w, *n; - w = pend->reuse.write_wait_first; - while(w) { - n = w->write_wait_next; - waiting_tcp_delete(w); - w = n; - } - pend->reuse.write_wait_first = NULL; - pend->reuse.write_wait_last = NULL; -} - /** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */ static void decommission_pending_tcp(struct outside_network* outnet, @@ -787,11 +773,12 @@ decommission_pending_tcp(struct outside_network* outnet, /* needs unlink from the reuse tree to get deleted */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); } - if(pend->query && !rbtree_search(&pend->reuse.tree_by_id, pend->query)) - waiting_tcp_delete(pend->query); + /* unlink the query and writewait list, it is part of the tree + * nodes and is deleted */ pend->query = NULL; + pend->reuse.write_wait_first = NULL; + pend->reuse.write_wait_last = NULL; reuse_del_readwait(pend); - reuse_del_writewait(pend); } /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ @@ -823,17 +810,6 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) return 1; } -/** perform failure callbacks for waiting queries in reuse write list */ -static void reuse_cb_writewait_for_failure(struct pending_tcp* pend, int err) -{ - struct waiting_tcp* w; - w = pend->reuse.write_wait_first; - while(w) { - waiting_tcp_callback(w, NULL, err, NULL); - w = w->write_wait_next; - } -} - /** perform failure callbacks for waiting queries in reuse read rbtree */ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) { @@ -849,15 +825,6 @@ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) } } -/** perform failure callbacks for current written query in reuse struct */ -static void reuse_cb_curquery_for_failure(struct pending_tcp* pend, int err) -{ - struct waiting_tcp* w = pend->query; - if(w) { - waiting_tcp_callback(w, NULL, err, NULL); - } -} - /** delete element from tree by id */ static void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) @@ -984,8 +951,6 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * to error. Close it */ reuse_cb_readwait_for_failure(pend, (error==NETEVENT_TIMEOUT? NETEVENT_TIMEOUT:NETEVENT_CLOSED)); - reuse_cb_writewait_for_failure(pend, (error==NETEVENT_TIMEOUT? - NETEVENT_TIMEOUT:NETEVENT_CLOSED)); decommission_pending_tcp(outnet, pend); use_free_buffer(outnet); return 0; @@ -1843,18 +1808,10 @@ outnet_tcptimer(void* arg) outnet->tcp_free = pend; /* do failure callbacks for all the queries in the - * wait for write list and in the id-tree */ - /* callback for 'w' arg already in list of curquery, - * readwait list, writewait list */ - reuse_cb_curquery_for_failure(&pickup, NETEVENT_TIMEOUT); + * id-tree, that includes the pend.query and write list */ reuse_cb_readwait_for_failure(&pickup, NETEVENT_TIMEOUT); - reuse_cb_writewait_for_failure(&pickup, NETEVENT_TIMEOUT); /* delete the stored callback structures */ - if(pickup.query && - !rbtree_search(&pickup.reuse.tree_by_id, pickup.query)) - waiting_tcp_delete(pickup.query); reuse_del_readwait(&pickup); - reuse_del_writewait(&pickup); } use_free_buffer(outnet); } @@ -1880,9 +1837,7 @@ reuse_tcp_close_oldest(struct outside_network* outnet) } /* free up */ - reuse_cb_curquery_for_failure(pend, NETEVENT_CLOSED); reuse_cb_readwait_for_failure(pend, NETEVENT_CLOSED); - reuse_cb_writewait_for_failure(pend, NETEVENT_CLOSED); decommission_pending_tcp(outnet, pend); } @@ -2288,12 +2243,8 @@ serviced_delete(struct serviced_query* sq) (struct pending_tcp*)w->next_waiting; verbose(5, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(w, sq)) { - reuse_cb_curquery_for_failure( - pend, NETEVENT_CLOSED); reuse_cb_readwait_for_failure( pend, NETEVENT_CLOSED); - reuse_cb_writewait_for_failure( - pend, NETEVENT_CLOSED); decommission_pending_tcp(sq->outnet, pend); use_free_buffer(sq->outnet); From d87774c3c69bfabc7bd0a58c241ba9eec8236a4e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 16:34:48 +0200 Subject: [PATCH 095/394] stream reuse, fix decommission to first remove from tree and then do the callbacks and then delete the element. --- services/outside_network.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index c9573bcde..f899bfd43 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -825,6 +825,23 @@ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) } } +/** perform callbacks for failure and also decommission pending tcp. + * the callbacks remove references in sq->pending to the waiting_tcp + * members of the tree_by_id in the pending tcp. */ +static void reuse_cb_and_decommission(struct outside_network* outnet, + struct pending_tcp* pend, int error) +{ + struct pending_tcp store; + store = *pend; + pend->query = NULL; + rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); + pend->reuse.write_wait_first = NULL; + pend->reuse.write_wait_last = NULL; + decommission_pending_tcp(outnet, pend); + reuse_cb_readwait_for_failure(&store, error); + reuse_del_readwait(&store); +} + /** delete element from tree by id */ static void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) @@ -949,9 +966,8 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, verbose(5, "outnet_tcp_cb reuse after cb: decommission it"); /* no queries on it, no space to keep it. or timeout or closed due * to error. Close it */ - reuse_cb_readwait_for_failure(pend, (error==NETEVENT_TIMEOUT? + reuse_cb_and_decommission(outnet, pend, (error==NETEVENT_TIMEOUT? NETEVENT_TIMEOUT:NETEVENT_CLOSED)); - decommission_pending_tcp(outnet, pend); use_free_buffer(outnet); return 0; } @@ -1837,8 +1853,7 @@ reuse_tcp_close_oldest(struct outside_network* outnet) } /* free up */ - reuse_cb_readwait_for_failure(pend, NETEVENT_CLOSED); - decommission_pending_tcp(outnet, pend); + reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); } /** find spare ID value for reuse tcp stream. That is random and also does @@ -2243,10 +2258,8 @@ serviced_delete(struct serviced_query* sq) (struct pending_tcp*)w->next_waiting; verbose(5, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(w, sq)) { - reuse_cb_readwait_for_failure( + reuse_cb_and_decommission(sq->outnet, pend, NETEVENT_CLOSED); - decommission_pending_tcp(sq->outnet, - pend); use_free_buffer(sq->outnet); } sq->pending = NULL; From ad6fa1eb4531a97a785fd198f0b4993600926096 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 16:37:40 +0200 Subject: [PATCH 096/394] stream reuse, comment improved --- services/outside_network.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index f899bfd43..a33507dd0 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -827,7 +827,9 @@ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) /** perform callbacks for failure and also decommission pending tcp. * the callbacks remove references in sq->pending to the waiting_tcp - * members of the tree_by_id in the pending tcp. */ + * members of the tree_by_id in the pending tcp. The pending_tcp is + * removed before the callbacks, so that the callbacks do not modify + * the pending_tcp due to its reference in the outside_network reuse tree */ static void reuse_cb_and_decommission(struct outside_network* outnet, struct pending_tcp* pend, int error) { From 46a364be8ea241c859625b22b30babba44837069 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 9 Jul 2020 16:50:57 +0200 Subject: [PATCH 097/394] stream reuse, neater code for tree by id and use callback routine for timer. --- services/outside_network.c | 60 +++++++++----------------------------- 1 file changed, 13 insertions(+), 47 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index a33507dd0..0060d7359 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -743,14 +743,13 @@ static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) } /** delete readwait waiting_tcp elements, deletes the elements in the list */ -static void reuse_del_readwait(struct pending_tcp* pend) +static void reuse_del_readwait(rbtree_type* tree_by_id) { - if(pend->reuse.tree_by_id.root == NULL || - pend->reuse.tree_by_id.root == RBTREE_NULL) + if(tree_by_id->root == NULL || + tree_by_id->root == RBTREE_NULL) return; - traverse_postorder(&pend->reuse.tree_by_id, &reuse_del_readwait_elem, - NULL); - rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); + traverse_postorder(tree_by_id, &reuse_del_readwait_elem, NULL); + rbtree_init(tree_by_id, reuse_id_cmp); } /** decommission a tcp buffer, closes commpoint and frees waiting_tcp entry */ @@ -778,7 +777,7 @@ decommission_pending_tcp(struct outside_network* outnet, pend->query = NULL; pend->reuse.write_wait_first = NULL; pend->reuse.write_wait_last = NULL; - reuse_del_readwait(pend); + reuse_del_readwait(&pend->reuse.tree_by_id); } /** insert into reuse tcp tree and LRU, false on failure (duplicate) */ @@ -811,13 +810,13 @@ reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) } /** perform failure callbacks for waiting queries in reuse read rbtree */ -static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) +static void reuse_cb_readwait_for_failure(rbtree_type* tree_by_id, int err) { rbnode_type* node; - if(pend->reuse.tree_by_id.root == NULL || - pend->reuse.tree_by_id.root == RBTREE_NULL) + if(tree_by_id->root == NULL || + tree_by_id->root == RBTREE_NULL) return; - node = rbtree_first(&pend->reuse.tree_by_id); + node = rbtree_first(tree_by_id); while(node && node != RBTREE_NULL) { struct waiting_tcp* w = (struct waiting_tcp*)node->key; waiting_tcp_callback(w, NULL, err, NULL); @@ -833,8 +832,8 @@ static void reuse_cb_readwait_for_failure(struct pending_tcp* pend, int err) static void reuse_cb_and_decommission(struct outside_network* outnet, struct pending_tcp* pend, int error) { - struct pending_tcp store; - store = *pend; + rbtree_type store; + store = pend->reuse.tree_by_id; pend->query = NULL; rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.write_wait_first = NULL; @@ -1796,40 +1795,7 @@ outnet_tcptimer(void* arg) } else { /* it was in use */ struct pending_tcp* pend=(struct pending_tcp*)w->next_waiting; - struct pending_tcp pickup; - /* see if it needs unlink from reuse tree */ - if(pend->reuse.node.key) { - reuse_tcp_remove_tree_list(outnet, &pend->reuse); - } - if(pend->c->ssl) { -#ifdef HAVE_SSL - SSL_shutdown(pend->c->ssl); - SSL_free(pend->c->ssl); - pend->c->ssl = NULL; -#endif - } - comm_point_close(pend->c); - /* pickup the callback items and call them after we have - * removed the current pending. so that the callbacks - * to the state machine happen after the query has timeouted - * and been deleted and it works from that clean state, - * because it may call the outside network routines to make - * new queries. */ - pickup = *pend; - /* unlink them from pend, delete from pickup calls later */ - pend->query = NULL; - rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); - pend->reuse.write_wait_first = NULL; - pend->reuse.write_wait_last = NULL; - /* pend is clear for reuse in the tcp_free list */ - pend->next_free = outnet->tcp_free; - outnet->tcp_free = pend; - - /* do failure callbacks for all the queries in the - * id-tree, that includes the pend.query and write list */ - reuse_cb_readwait_for_failure(&pickup, NETEVENT_TIMEOUT); - /* delete the stored callback structures */ - reuse_del_readwait(&pickup); + reuse_cb_and_decommission(outnet, pend, NETEVENT_TIMEOUT); } use_free_buffer(outnet); } From e4316764571647369ec1c6abc3b2e3b6cdbc1ec7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Jul 2020 15:13:16 +0200 Subject: [PATCH 098/394] stream reuse, fix bad id in reply errors. --- services/outside_network.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 0060d7359..af69860b5 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -935,7 +935,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, w = reuse_tcp_by_id_find(&pend->reuse, id); } } - if(!w) { + if(error == NETEVENT_NOERROR && !w) { /* no struct waiting found in tree, no reply to call */ log_addr(VERB_QUERY, "outnettcp: bad ID in reply, from:", &pend->reuse.addr, pend->reuse.addrlen); From 7a69ff41826d7835065b0a72789c5957170c6aec Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Jul 2020 15:37:30 +0200 Subject: [PATCH 099/394] fix that ssl_handle_it() uses tcp_is_reading in tcp_write_and_read mode. fix that netevent tcp_write_and_read mode does not close due to error from assert that not both write and read happen at the same time. --- services/outside_network.c | 3 +++ util/netevent.c | 29 +++++++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index af69860b5..d7db120fe 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -507,6 +507,9 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, struct waiting_tcp* w) { struct timeval tv; + verbose(5, "outnet_tcp_take_query_setup: setup packet to write " + "len %d timeout %d msec", + (int)w->pkt_len, w->timeout); pend->c->tcp_write_pkt = w->pkt; pend->c->tcp_write_pkt_len = w->pkt_len; pend->c->tcp_write_and_read = 1; diff --git a/util/netevent.c b/util/netevent.c index 3237907d1..63150afb7 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1434,9 +1434,17 @@ ssl_handle_write(struct comm_point* c) /** handle ssl tcp connection with dns contents */ static int -ssl_handle_it(struct comm_point* c) +ssl_handle_it(struct comm_point* c, int is_write) { - if(c->tcp_is_reading) + /* handle case where renegotiation wants read during write call + * or write during read calls */ + if(is_write && c->ssl_shake_state == comm_ssl_shake_hs_write) + return ssl_handle_read(c); + else if(!is_write && c->ssl_shake_state == comm_ssl_shake_hs_read) + return ssl_handle_write(c); + /* handle read events for read operation and write events for a + * write operation */ + else if(!is_write) return ssl_handle_read(c); return ssl_handle_write(c); } @@ -1452,9 +1460,10 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) { ssize_t r; log_assert(c->type == comm_tcp || c->type == comm_local); + verbose(5, "comm point tcp handle read fd %d", fd); if(c->ssl) - return ssl_handle_it(c); - if(!c->tcp_is_reading) + return ssl_handle_it(c, 0); + if(!c->tcp_is_reading && !c->tcp_write_and_read) return 0; log_assert(fd != -1); @@ -1563,8 +1572,10 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #else buffer = c->buffer; #endif - if(c->tcp_is_reading && !c->ssl) + verbose(5, "comm point tcp handle write fd %d", fd); + if(c->tcp_is_reading && !c->ssl && !c->tcp_write_and_read) return 0; + verbose(5, "comm point tcp handle write fd %d, part2", fd); log_assert(fd != -1); if(((!c->tcp_write_and_read && c->tcp_byte_count == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == 0)) && c->tcp_check_nb_connect) { /* check for pending error from nonblocking connect */ @@ -1606,8 +1617,10 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) return 0; } } + verbose(5, "comm point tcp handle write fd %d, part3", fd); if(c->ssl) - return ssl_handle_it(c); + return ssl_handle_it(c, 1); + verbose(5, "comm point tcp handle write fd %d, part4", fd); #ifdef USE_MSG_FASTOPEN /* Only try this on first use of a connection that uses tfo, @@ -1696,6 +1709,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } #endif /* USE_MSG_FASTOPEN */ + verbose(5, "comm point tcp handle write fd %d: before write", fd); if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) { uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer)); #ifdef HAVE_WRITEV @@ -1722,6 +1736,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) sizeof(uint16_t)-c->tcp_byte_count, 0); } #endif /* HAVE_WRITEV */ + verbose(5, "comm point tcp handle write fd %d: write res %d", fd, (int)r); if(r == -1) { #ifndef USE_WINSOCK # ifdef EPIPE @@ -1777,6 +1792,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0); log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); + verbose(5, "comm point tcp handle write fd %d: before write remain", fd); if(c->tcp_write_and_read) { r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2, c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0); @@ -1784,6 +1800,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) r = send(fd, (void*)sldns_buffer_current(buffer), sldns_buffer_remaining(buffer), 0); } + verbose(5, "comm point tcp handle write fd %d: write remain res %d", fd, (int)r); if(r == -1) { #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) From 9914b7216b361d9362f60bec68eb99f0aac6309c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 10 Jul 2020 16:06:17 +0200 Subject: [PATCH 100/394] stream reuse, remove debug output --- util/netevent.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index 63150afb7..4098dfb03 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1460,7 +1460,6 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) { ssize_t r; log_assert(c->type == comm_tcp || c->type == comm_local); - verbose(5, "comm point tcp handle read fd %d", fd); if(c->ssl) return ssl_handle_it(c, 0); if(!c->tcp_is_reading && !c->tcp_write_and_read) @@ -1572,10 +1571,8 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) #else buffer = c->buffer; #endif - verbose(5, "comm point tcp handle write fd %d", fd); if(c->tcp_is_reading && !c->ssl && !c->tcp_write_and_read) return 0; - verbose(5, "comm point tcp handle write fd %d, part2", fd); log_assert(fd != -1); if(((!c->tcp_write_and_read && c->tcp_byte_count == 0) || (c->tcp_write_and_read && c->tcp_write_byte_count == 0)) && c->tcp_check_nb_connect) { /* check for pending error from nonblocking connect */ @@ -1617,10 +1614,8 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) return 0; } } - verbose(5, "comm point tcp handle write fd %d, part3", fd); if(c->ssl) return ssl_handle_it(c, 1); - verbose(5, "comm point tcp handle write fd %d, part4", fd); #ifdef USE_MSG_FASTOPEN /* Only try this on first use of a connection that uses tfo, @@ -1709,7 +1704,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } #endif /* USE_MSG_FASTOPEN */ - verbose(5, "comm point tcp handle write fd %d: before write", fd); if((c->tcp_write_and_read?c->tcp_write_byte_count:c->tcp_byte_count) < sizeof(uint16_t)) { uint16_t len = htons(c->tcp_write_and_read?c->tcp_write_pkt_len:sldns_buffer_limit(buffer)); #ifdef HAVE_WRITEV @@ -1736,7 +1730,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) sizeof(uint16_t)-c->tcp_byte_count, 0); } #endif /* HAVE_WRITEV */ - verbose(5, "comm point tcp handle write fd %d: write res %d", fd, (int)r); if(r == -1) { #ifndef USE_WINSOCK # ifdef EPIPE @@ -1792,7 +1785,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0); log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); - verbose(5, "comm point tcp handle write fd %d: before write remain", fd); if(c->tcp_write_and_read) { r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2, c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0); @@ -1800,7 +1792,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) r = send(fd, (void*)sldns_buffer_current(buffer), sldns_buffer_remaining(buffer), 0); } - verbose(5, "comm point tcp handle write fd %d: write remain res %d", fd, (int)r); if(r == -1) { #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) From 19a35fb83922bd89d678e241a531d9625a25ea05 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 13 Jul 2020 15:16:59 +0200 Subject: [PATCH 101/394] stream reuse, write and read again if more data can go over the channel, this amortizes the event loop mechanism for busy channels, for performance. --- services/outside_network.c | 13 ++++++++++ util/netevent.c | 52 ++++++++++++++++++++++++++++++++++++++ util/netevent.h | 10 ++++++++ 3 files changed, 75 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index d7db120fe..b1e420da5 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -911,12 +911,19 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, /* setup to write next packet or setup read timeout */ if(pend->reuse.write_wait_first) { verbose(VERB_ALGO, "outnet tcp setup next pkt"); + /* we can write it straight away perhaps, set flag + * because this callback called after a tcp write + * succeeded and likely more buffer space is available + * and we can write some more. */ + pend->c->tcp_more_write_again = 1; pend->query = reuse_write_wait_pop(&pend->reuse); outnet_tcp_take_query_setup(pend->c->fd, pend, pend->query); } else { verbose(VERB_ALGO, "outnet tcp writes done, wait"); pend->c->tcp_write_and_read = 0; + pend->c->tcp_more_read_again = 0; + pend->c->tcp_more_write_again = 0; pend->c->tcp_is_reading = 1; reuse_tcp_setup_timeout(pend); } @@ -964,6 +971,12 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, verbose(5, "outnet_tcp_cb reuse after cb: keep it"); /* it is in the reuse_tcp tree, with other queries, or * on the empty list. do not decommission it */ + /* if there are more outstanding queries, we could try to + * read again, to see if it is on the input, + * because this callback called after a successful read + * and there could be more bytes to read on the input */ + if(pend->reuse.tree_by_id.count != 0) + pend->c->tcp_more_read_again = 1; reuse_tcp_setup_read_and_timeout(pend); return 0; } diff --git a/util/netevent.c b/util/netevent.c index 4098dfb03..889f9a1f3 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -985,6 +985,8 @@ reclaim_tcp_handler(struct comm_point* c) comm_point_start_listening(c->tcp_parent, -1, -1); } } + c->tcp_more_read_again = 0; + c->tcp_more_write_again = 0; } /** do the callback when writing is done */ @@ -1852,6 +1854,52 @@ tcp_req_info_read_again(int fd, struct comm_point* c) } } +/** read again to drain buffers when there could be more to read */ +static void +tcp_more_read_again(int fd, struct comm_point* c) +{ + /* if the packet is done, but another one could be waiting on + * the connection, the callback signals this, and we try again */ + /* this continues until the read routines get EAGAIN or so, + * and thus does not call the callback, and the bool is 0 */ + while(c->tcp_more_read_again) { + c->tcp_more_read_again = 0; + if(!comm_point_tcp_handle_read(fd, c, 0)) { + reclaim_tcp_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } + return; + } + } +} + +/** write again to fill up when there could be more to write */ +static void +tcp_more_write_again(int fd, struct comm_point* c) +{ + /* if the packet is done, but another is waiting to be written, + * the callback signals it and we try again. */ + /* this continues until the write routines get EAGAIN or so, + * and thus does not call the callback, and the bool is 0 */ + while(c->tcp_more_write_again) { + c->tcp_more_write_again = 0; + if(!comm_point_tcp_handle_write(fd, c)) { + reclaim_tcp_handler(c); + if(!c->tcp_do_close) { + fptr_ok(fptr_whitelist_comm_point( + c->callback)); + (void)(*c->callback)(c, c->cb_arg, + NETEVENT_CLOSED, NULL); + } + return; + } + } +} + void comm_point_tcp_handle_callback(int fd, short event, void* arg) { @@ -1903,6 +1951,8 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); + if(c->tcp_more_read_again) + tcp_more_read_again(fd, c); return; } if(event&UB_EV_WRITE) { @@ -1918,6 +1968,8 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); + if(c->tcp_more_write_again) + tcp_more_write_again(fd, c); return; } log_err("Ignored event %d for tcphdl.", event); diff --git a/util/netevent.h b/util/netevent.h index 300592e5b..ad24541f6 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -268,6 +268,16 @@ struct comm_point { /** length of tcp_write_pkt in bytes */ size_t tcp_write_pkt_len; + /** if set try to read another packet again (over connection with + * multiple packets), once set, tries once, then zero again, + * so set it in the packet complete section. */ + int tcp_more_read_again; + + /** if set try to write another packet (over connection with + * multiple packets), once set, tries once, then zero again, + * so set it in the packet complete section. */ + int tcp_more_write_again; + /** if set, read/write completes: read/write state of tcp is toggled. buffer reset/bytecount reset. From 766005a356212846a8b53faff957c7b4eae10569 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 13 Jul 2020 15:45:16 +0200 Subject: [PATCH 102/394] stream reuse, in callbacks, removed whitespace. --- util/netevent.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index 889f9a1f3..8d5be2c0a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1869,7 +1869,7 @@ tcp_more_read_again(int fd, struct comm_point* c) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } return; @@ -1892,7 +1892,7 @@ tcp_more_write_again(int fd, struct comm_point* c) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } return; @@ -1920,7 +1920,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } return; @@ -1945,7 +1945,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } } @@ -1962,7 +1962,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } } @@ -2600,7 +2600,7 @@ comm_point_http_handle_callback(int fd, short event, void* arg) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } } @@ -2612,7 +2612,7 @@ comm_point_http_handle_callback(int fd, short event, void* arg) if(!c->tcp_do_close) { fptr_ok(fptr_whitelist_comm_point( c->callback)); - (void)(*c->callback)(c, c->cb_arg, + (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } } From b71695e8bb2be573162a8656cd0ab428b59454c0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 13 Jul 2020 15:59:23 +0200 Subject: [PATCH 103/394] stream reuse, update lru when reuse elements are used with lru touch routine. --- services/outside_network.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index b1e420da5..5acf00b6a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -648,6 +648,31 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) return 1; } +/** Touch the lru of a reuse_tcp element, it is in use. + * This moves it to the front of the list, where it is not likely to + * be closed. Items at the back of the list are closed to make space. */ +static void +reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) +{ + if(!reuse->item_on_lru_list) + return; /* not on the list, no lru to modify */ + if(!reuse->lru_prev) + return; /* already first in the list */ + /* remove at current position */ + /* since it is not first, there is a previous element */ + reuse->lru_prev->lru_next = reuse->lru_next; + if(reuse->lru_next) + reuse->lru_next->lru_prev = reuse->lru_prev; + else outnet->tcp_reuse_last = reuse->lru_prev; + /* insert at the front */ + reuse->lru_prev = NULL; + reuse->lru_next = outnet->tcp_reuse_first; + /* since it is not first, it is not the only element and + * lru_next is thus not NULL and thus reuse is now not the last in + * the list, so outnet->tcp_reuse_last does not need to be modified */ + outnet->tcp_reuse_first = reuse; +} + /** call callback on waiting_tcp, if not NULL */ static void waiting_tcp_callback(struct waiting_tcp* w, struct comm_point* c, int error, @@ -677,6 +702,7 @@ use_free_buffer(struct outside_network* outnet) if(reuse) { log_reuse_tcp(5, "use free buffer for waiting tcp: " "found reuse", reuse); + reuse_tcp_lru_touch(outnet, reuse); comm_timer_disable(w->timer); w->next_waiting = (void*)reuse->pending; reuse_tree_by_id_insert(reuse, w); @@ -1929,6 +1955,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, log_reuse_tcp(5, "pending_tcp_query: found reuse", reuse); log_assert(reuse->pending); pend = reuse->pending; + reuse_tcp_lru_touch(sq->outnet, reuse); } /* if !pend but we have reuse streams, close a reuse stream From a7776a15e54e3a342e775831ac74c0c6f936a1d8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 13 Jul 2020 16:11:52 +0200 Subject: [PATCH 104/394] stream reuse, make reuse possible straight away after first query to address. --- services/outside_network.c | 60 ++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 5acf00b6a..425c0839a 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -435,6 +435,35 @@ tree_by_id_get_id(rbnode_type* node) return w->id; } +/** insert into reuse tcp tree and LRU, false on failure (duplicate) */ +static int +reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) +{ + log_reuse_tcp(5, "reuse_tcp_insert", &pend_tcp->reuse); + if(pend_tcp->reuse.item_on_lru_list) + return 1; + pend_tcp->reuse.node.key = &pend_tcp->reuse; + pend_tcp->reuse.pending = pend_tcp; + if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { + /* this is a duplicate connection, close this one */ + verbose(5, "reuse_tcp_insert: duplicate connection"); + pend_tcp->reuse.node.key = NULL; + return 0; + } + /* insert into LRU, first is newest */ + pend_tcp->reuse.lru_prev = NULL; + if(outnet->tcp_reuse_first) { + pend_tcp->reuse.lru_next = outnet->tcp_reuse_first; + outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse; + } else { + pend_tcp->reuse.lru_next = NULL; + outnet->tcp_reuse_last = &pend_tcp->reuse; + } + outnet->tcp_reuse_first = &pend_tcp->reuse; + pend_tcp->reuse.item_on_lru_list = 1; + return 1; +} + /** find reuse tcp stream to destination for query, or NULL if none */ static struct reuse_tcp* reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, @@ -643,6 +672,8 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; + /* insert in reuse by address tree if not already inserted there */ + (void)reuse_tcp_insert(w->outnet, pend); reuse_tree_by_id_insert(&pend->reuse, w); outnet_tcp_take_query_setup(s, pend, w); return 1; @@ -809,35 +840,6 @@ decommission_pending_tcp(struct outside_network* outnet, reuse_del_readwait(&pend->reuse.tree_by_id); } -/** insert into reuse tcp tree and LRU, false on failure (duplicate) */ -static int -reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) -{ - log_reuse_tcp(5, "reuse_tcp_insert", &pend_tcp->reuse); - if(pend_tcp->reuse.item_on_lru_list) - return 1; - pend_tcp->reuse.node.key = &pend_tcp->reuse; - pend_tcp->reuse.pending = pend_tcp; - if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { - /* this is a duplicate connection, close this one */ - verbose(5, "reuse_tcp_insert: duplicate connection"); - pend_tcp->reuse.node.key = NULL; - return 0; - } - /* insert into LRU, first is newest */ - pend_tcp->reuse.lru_prev = NULL; - if(outnet->tcp_reuse_first) { - pend_tcp->reuse.lru_next = outnet->tcp_reuse_first; - outnet->tcp_reuse_first->lru_prev = &pend_tcp->reuse; - } else { - pend_tcp->reuse.lru_next = NULL; - outnet->tcp_reuse_last = &pend_tcp->reuse; - } - outnet->tcp_reuse_first = &pend_tcp->reuse; - pend_tcp->reuse.item_on_lru_list = 1; - return 1; -} - /** perform failure callbacks for waiting queries in reuse read rbtree */ static void reuse_cb_readwait_for_failure(rbtree_type* tree_by_id, int err) { From 9cebc131500081dc2a0f6a079ed4e2192e54151f Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 13 Jul 2020 17:28:50 +0200 Subject: [PATCH 105/394] - Add option to send DNSTAP messages over bidirectional frame streams --- dnstap/dnstap_fstrm.c | 28 + dnstap/dnstap_fstrm.h | 15 + dnstap/dtstream.c | 314 ++- dnstap/dtstream.h | 31 + dnstap/unbound-dnstap-socket.c | 34 +- doc/example.conf.in | 2 + doc/unbound.conf.5.in | 4 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 3857 ++++++++++++++++---------------- util/configlexer.lex | 1 + util/configparser.c | 2979 ++++++++++++------------ util/configparser.h | 516 ++--- util/configparser.y | 14 +- 14 files changed, 4136 insertions(+), 3664 deletions(-) diff --git a/dnstap/dnstap_fstrm.c b/dnstap/dnstap_fstrm.c index cce16e2e4..289e78bdf 100644 --- a/dnstap/dnstap_fstrm.c +++ b/dnstap/dnstap_fstrm.c @@ -92,6 +92,34 @@ void* fstrm_create_control_frame_stop(size_t* len) return control; } +void* fstrm_create_control_frame_ready(char* contenttype, size_t* len) +{ + uint32_t* control; + size_t n; + /* start bidirectional stream: + * 4 bytes 0 escape + * 4 bytes bigendian length of frame + * 4 bytes bigendian type READY + * 4 bytes bigendian frame option content type + * 4 bytes bigendian length of string + * string of content type. + */ + /* len includes the escape and framelength */ + n = 4+4+4+4+4+strlen(contenttype); + control = malloc(n); + if(!control) { + return NULL; + } + control[0] = 0; + control[1] = htonl(4+4+4+strlen(contenttype)); + control[2] = htonl(FSTRM_CONTROL_FRAME_READY); + control[3] = htonl(FSTRM_CONTROL_FIELD_TYPE_CONTENT_TYPE); + control[4] = htonl(strlen(contenttype)); + memmove(&control[5], contenttype, strlen(contenttype)); + *len = n; + return control; +} + void* fstrm_create_control_frame_accept(char* contenttype, size_t* len) { uint32_t* control; diff --git a/dnstap/dnstap_fstrm.h b/dnstap/dnstap_fstrm.h index f0cf93628..8b37d5f9e 100644 --- a/dnstap/dnstap_fstrm.h +++ b/dnstap/dnstap_fstrm.h @@ -127,6 +127,21 @@ */ void* fstrm_create_control_frame_start(char* contenttype, size_t* len); +/** + * This creates an FSTRM control frame of type READY. + * @param contenttype: a zero delimited string with the content type. + * eg. use the constant DNSTAP_CONTENT_TYPE, which is defined as + * "protobuf:dnstap.Dnstap", for a dnstap frame stream. + * @param len: if a buffer is returned this is the length of that buffer. + * @return NULL on malloc failure. Returns a malloced buffer with the + * protocol message. The buffer starts with the 4 bytes of 0 that indicate + * a control frame. The buffer should be sent without preceding it with + * the 'len' variable (like data frames are), but straight the content of the + * buffer, because the lengths are included in the buffer. This is so that + * the zero control indicator can be included before the control frame length. + */ +void* fstrm_create_control_frame_ready(char* contenttype, size_t* len); + /** * This creates an FSTRM control frame of type STOP. * @param len: if a buffer is returned this is the length of that buffer. diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 4081a6372..f5fae08dc 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -48,6 +48,7 @@ #include "util/ub_event.h" #include "util/net_help.h" #include "services/outside_network.h" +#include "sldns/sbuffer.h" #ifdef HAVE_SYS_UN_H #include #endif @@ -85,6 +86,8 @@ static int dtio_add_output_event_write(struct dt_io_thread* dtio); static void dtio_reconnect_enable(struct dt_io_thread* dtio); /** stop from stop_flush event loop */ static void dtio_stop_flush_exit(struct stop_flush_info* info); +/** setup a start control message */ +static int dtio_control_start_send(struct dt_io_thread* dtio); #ifdef HAVE_SSL /** enable briefly waiting for a read event, for SSL negotiation */ static int dtio_enable_brief_read(struct dt_io_thread* dtio); @@ -261,6 +264,7 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) } else { dtio->upstream_is_unix = 1; } + dtio->is_bidirectional = cfg->dnstap_bidirectional; if(dtio->upstream_is_unix) { if(!cfg->dnstap_socket_path || @@ -551,6 +555,20 @@ static void dtio_cur_msg_free(struct dt_io_thread* dtio) dtio->cur_msg_len_done = 0; } +/** delete the buffer and counters used to read frame */ +static void dtio_read_frame_free(struct dt_frame_read_buf* rb) +{ + if(rb->buf) { + free(rb->buf); + rb->buf = NULL; + } + rb->buf_count = 0; + rb->buf_cap = 0; + rb->frame_len = 0; + rb->frame_len_done = 0; + rb->control_frame = 0; +} + /** del the output file descriptor event for listening */ static void dtio_del_output_event(struct dt_io_thread* dtio) { @@ -594,6 +612,11 @@ static void dtio_close_output(struct dt_io_thread* dtio) if(dtio->cur_msg) { dtio_cur_msg_free(dtio); } + + dtio->ready_frame_sent = 0; + dtio->accept_frame_received = 0; + dtio_read_frame_free(&dtio->read_frame); + dtio_reconnect_enable(dtio); } @@ -855,6 +878,94 @@ static int dtio_write_more(struct dt_io_thread* dtio) return 1; } +/** Receive bytes from dtio->fd, store in buffer. Returns 0: closed, + * -1: continue, >0: number of bytes read into buffer */ +static ssize_t receive_bytes(struct dt_io_thread* dtio, void* buf, size_t len) { + ssize_t r; + r = recv(dtio->fd, (void*)buf, len, 0); + if(r == -1) { + char* to = dtio->socket_path; + if(!to) to = dtio->ip_str; + if(!to) to = ""; +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return -1; /* try later */ +#else + if(WSAGetLastError() == WSAEINPROGRESS) { + return -1; /* try later */ + } else if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock( + (dtio->stop_flush_event? + dtio->stop_flush_event:dtio->event), + UB_EV_READ); + return -1; /* try later */ + } +#endif + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + log_err("dnstap io: output closed, recv %s: %s", to, + strerror(errno)); + /* and close below */ + return 0; + } + if(r == 0) { + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + verbose(VERB_DETAIL, "dnstap io: output closed by the other side"); + /* and close below */ + return 0; + } + /* something was received */ + return r; +} + +#ifdef HAVE_SSL +/** Receive bytes over TLS from dtio->fd, store in buffer. Returns 0: closed, + * -1: continue, >0: number of bytes read into buffer */ +static int ssl_read_bytes(struct dt_io_thread* dtio, void* buf, size_t len) +{ + int r; + ERR_clear_error(); + r = SSL_read(dtio->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(dtio->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } else if(want == SSL_ERROR_WANT_READ) { + /* continue later */ + return -1; + } else if(want == SSL_ERROR_WANT_WRITE) { + (void)dtio_add_output_event_write(dtio); + return -1; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef ECONNRESET + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + errno == ECONNRESET && verbosity < 4) + return 0; /* silence reset by peer */ +#endif + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } + log_crypto_err("could not SSL_read"); + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } + return r; +} +#endif /* HAVE_SSL */ + /** check if the output fd has been closed, * it returns false if the stream is closed. */ static int dtio_check_close(struct dt_io_thread* dtio) @@ -864,44 +975,17 @@ static int dtio_check_close(struct dt_io_thread* dtio) * packets is okay for the framestream protocol. And also, the * read call can return that the stream has been closed by the * other side. */ - ssize_t r; uint8_t buf[1024]; + int r = -1; + + if(dtio->fd == -1) return 0; - while(1) { - r = recv(dtio->fd, (void*)buf, sizeof(buf), 0); - if(r == -1) { - char* to = dtio->socket_path; - if(!to) to = dtio->ip_str; - if(!to) to = ""; -#ifndef USE_WINSOCK - if(errno == EINTR || errno == EAGAIN) - return 1; /* try later */ -#else - if(WSAGetLastError() == WSAEINPROGRESS) { - return 1; /* try later */ - } else if(WSAGetLastError() == WSAEWOULDBLOCK) { - ub_winsock_tcp_wouldblock( - (dtio->stop_flush_event? - dtio->stop_flush_event:dtio->event), - UB_EV_READ); - return 1; /* try later */ - } -#endif - if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && verbosity < 4) - break; /* no log retries on low verbosity */ - log_err("dnstap io: output closed, recv %s: %s", to, - strerror(errno)); - /* and close below */ - break; - } - if(r == 0) { - if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && verbosity < 4) - break; /* no log retries on low verbosity */ - verbose(VERB_DETAIL, "dnstap io: output closed by the other side"); - /* and close below */ - break; - } - /* something was received, ignore it */ + + while(r != 0) { + /* not interested in buffer content, overwrite */ + r = receive_bytes(dtio, (void*)buf, sizeof(buf)); + if(r == -1) + return 1; } /* the other end has been closed */ /* close the channel */ @@ -910,6 +994,118 @@ static int dtio_check_close(struct dt_io_thread* dtio) return 0; } +/** Read accept frame. Returns -1: continue reading, 0: closed, + * 1: valid accept received. */ +static int dtio_read_accept_frame(struct dt_io_thread* dtio) +{ + int r; + while(dtio->read_frame.frame_len_done < 4) { +#ifdef HAVE_SSL + if(dtio->ssl) { + r = ssl_read_bytes(dtio, + (uint8_t*)&dtio->read_frame.frame_len+ + dtio->read_frame.frame_len_done, + 4-dtio->read_frame.frame_len_done); + } else { +#endif + r = receive_bytes(dtio, + (uint8_t*)&dtio->read_frame.frame_len+ + dtio->read_frame.frame_len_done, + 4-dtio->read_frame.frame_len_done); +#ifdef HAVE_SSL + } +#endif + if(r == -1) + return -1; /* continue reading */ + if(r == 0) { + /* connection closed */ + goto close_connection; + } + dtio->read_frame.frame_len_done += r; + if(dtio->read_frame.frame_len_done < 4) + return -1; /* continue reading */ + + if(dtio->read_frame.frame_len == 0) { + dtio->read_frame.frame_len_done = 0; + dtio->read_frame.control_frame = 1; + continue; + } + dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); + dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); + dtio->read_frame.buf_cap = dtio->read_frame.frame_len; + if(!dtio->read_frame.buf) { + log_err("dnstap io: out of memory (creating read " + "buffer)"); + goto close_connection; + } + } + if(dtio->read_frame.buf_count < dtio->read_frame.frame_len) { +#ifdef HAVE_SSL + if(dtio->ssl) { + r = ssl_read_bytes(dtio, dtio->read_frame.buf+ + dtio->read_frame.buf_count, + dtio->read_frame.buf_cap- + dtio->read_frame.buf_count); + } else { +#endif + r = receive_bytes(dtio, dtio->read_frame.buf+ + dtio->read_frame.buf_count, + dtio->read_frame.buf_cap- + dtio->read_frame.buf_count); +#ifdef HAVE_SSL + } +#endif + if(r == -1) + return -1; /* continue reading */ + if(r == 0) { + /* connection closed */ + goto close_connection; + } + dtio->read_frame.buf_count += r; + if(dtio->read_frame.buf_count < dtio->read_frame.frame_len) + return -1; /* continue reading */ + } + + /* Complete frame received, check if this is a valid ACCEPT control + * frame. */ + if(dtio->read_frame.frame_len < 4) { + verbose(VERB_OPS, "dnstap: invalid data received"); + goto close_connection; + } + if(sldns_read_uint32(dtio->read_frame.buf) != + FSTRM_CONTROL_FRAME_ACCEPT) { + verbose(VERB_ALGO, "dnstap: invalid control type received, " + "ignored"); + dtio->ready_frame_sent = 0; + dtio->accept_frame_received = 0; + dtio_read_frame_free(&dtio->read_frame); + return -1; + } + + if(dtio->read_frame.frame_len != 4+4+4+strlen(DNSTAP_CONTENT_TYPE) || + memcmp(dtio->read_frame.buf+4+4+4, DNSTAP_CONTENT_TYPE, + strlen(DNSTAP_CONTENT_TYPE)) != 0) { + verbose(VERB_OPS, "dnstap: invalid content type on ACCEPT " + "frame"); + goto close_connection; + } + + if(!dtio_control_start_send(dtio)) { + verbose(VERB_OPS, "dnstap io: out of memory while sending " + "START frame"); + goto close_connection; + } + + dtio->accept_frame_received = 1; + return 1; + +close_connection: + dtio_del_output_event(dtio); + dtio_reconnect_slow(dtio, DTIO_RECONNECT_TIMEOUT_SLOW); + dtio_close_output(dtio); + return 0; +} + /** add the output file descriptor event for listening, read only */ static int dtio_add_output_event_read(struct dt_io_thread* dtio) { @@ -1176,7 +1372,10 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) #endif if((bits&UB_EV_READ)) { - if(!dtio_check_close(dtio)) + if(dtio->ready_frame_sent && !dtio->accept_frame_received) { + if(dtio_read_accept_frame(dtio) <= 0) + return; + } else if(!dtio_check_close(dtio)) return; } @@ -1208,6 +1407,15 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) /* done with the current message */ dtio_cur_msg_free(dtio); + + /* If this is a bidirectional stream the first message will be + * the READY control frame. We can only continue writing after + * receiving an ACCEPT control frame. */ + if(dtio->is_bidirectional && !dtio->ready_frame_sent) { + dtio->ready_frame_sent = 1; + (void)dtio_add_output_event_read(dtio); + break; + } } } @@ -1240,6 +1448,13 @@ void dtio_cmd_cb(int fd, short ATTR_UNUSED(bits), void* arg) verbose(VERB_ALGO, "dnstap io: cmd channel cmd quit"); } else if(r == 1 && cmd == DTIO_COMMAND_WAKEUP) { verbose(VERB_ALGO, "dnstap io: cmd channel cmd wakeup"); + + if(dtio->is_bidirectional && !dtio->accept_frame_received) { + verbose(VERB_ALGO, "dnstap io: cmd wakeup ignored, " + "waiting for ACCEPT control frame"); + return; + } + /* reregister event */ if(!dtio_add_output_event_write(dtio)) return; @@ -1561,6 +1776,25 @@ static int dtio_control_start_send(struct dt_io_thread* dtio) return 1; } +/** setup a ready control message */ +static int dtio_control_ready_send(struct dt_io_thread* dtio) +{ + log_assert(dtio->cur_msg == NULL && dtio->cur_msg_len == 0); + dtio->cur_msg = fstrm_create_control_frame_ready(DNSTAP_CONTENT_TYPE, + &dtio->cur_msg_len); + if(!dtio->cur_msg) { + return 0; + } + /* setup to send the control message */ + /* set that the buffer needs to be sent, but the length + * of that buffer is already written, that way the buffer can + * start with 0 length and then the length of the control frame + * in it */ + dtio->cur_msg_done = 0; + dtio->cur_msg_len_done = 4; + return 1; +} + /** open the output file descriptor for af_local */ static int dtio_open_output_local(struct dt_io_thread* dtio) { @@ -1693,7 +1927,8 @@ static void dtio_open_output(struct dt_io_thread* dtio) } dtio->check_nb_connect = 1; - /* the EV_READ is to catch channel close, write to write packets */ + /* the EV_READ is to read ACCEPT control messages, and catch channel + * close. EV_WRITE is to write packets */ ev = ub_event_new(dtio->event_base, dtio->fd, UB_EV_READ | UB_EV_WRITE | UB_EV_PERSIST, &dtio_output_cb, dtio); @@ -1712,7 +1947,8 @@ static void dtio_open_output(struct dt_io_thread* dtio) dtio->event = ev; /* setup protocol control message to start */ - if(!dtio_control_start_send(dtio)) { + if((!dtio->is_bidirectional && !dtio_control_start_send(dtio)) || + (dtio->is_bidirectional && !dtio_control_ready_send(dtio)) ) { log_err("dnstap io: out of memory"); ub_event_free(dtio->event); dtio->event = NULL; diff --git a/dnstap/dtstream.h b/dnstap/dtstream.h index 03346c213..d93714baf 100644 --- a/dnstap/dtstream.h +++ b/dnstap/dtstream.h @@ -88,6 +88,27 @@ struct dt_msg_entry { size_t len; }; +/** + * Containing buffer and counter for reading DNSTAP frames. + */ +struct dt_frame_read_buf { + /** Buffer containing frame, except length counter(s). */ + void* buf; + /** Number of bytes written to buffer. */ + size_t buf_count; + /** Capacity of the buffer. */ + size_t buf_cap; + + /** Frame length field. Will contain the 2nd length field for control + * frames. */ + uint32_t frame_len; + /** Number of bytes that have been written to the frame_length field. */ + size_t frame_len_done; + + /** Set to 1 if this is a control frame, 0 otherwise (ie data frame). */ + int control_frame; +}; + /** * IO thread that reads from the queues and writes them. */ @@ -171,6 +192,16 @@ struct dt_io_thread { * and client certificates can be used for authentication. */ int upstream_is_tls; + /** Perform bidirectional Frame Streams handshake before sending + * messages. */ + int is_bidirectional; + /** Set if the READY control frame has been sent. */ + int ready_frame_sent; + /** Set if valid ACCEPT frame is received. */ + int accept_frame_received; + /** (partially) read frame */ + struct dt_frame_read_buf read_frame; + /** the file path for unix socket (or NULL) */ char* socket_path; /** the ip address and port number (or NULL) */ diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 97ed7a087..d530b9a89 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -770,10 +770,11 @@ void tap_data_free(struct tap_data* data) /** reply with ACCEPT control frame to bidirectional client, * returns 0 on error */ -static int reply_with_accept(int fd) +static int reply_with_accept(struct tap_data* data) { #ifdef USE_DNSTAP /* len includes the escape and framelength */ + int r; size_t len = 0; void* acceptframe = fstrm_create_control_frame_accept( DNSTAP_CONTENT_TYPE, &len); @@ -782,21 +783,34 @@ static int reply_with_accept(int fd) return 0; } - fd_set_block(fd); - if(send(fd, acceptframe, len, 0) == -1) { + fd_set_block(data->fd); + if(data->ssl) { + if((r=SSL_write(data->ssl, acceptframe, len)) <= 0) { + if(SSL_get_error(data->ssl, r) == SSL_ERROR_ZERO_RETURN) + log_err("SSL_write, peer closed connection"); + else + log_err("could not SSL_write"); + fd_set_nonblock(data->fd); + free(acceptframe); + return 0; + } + } else { + if(send(data->fd, acceptframe, len, 0) == -1) { #ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); + log_err("send failed: %s", strerror(errno)); #else - log_err("send failed: %s", wsa_strerror(WSAGetLastError())); + log_err("send failed: %s", + wsa_strerror(WSAGetLastError())); #endif - fd_set_nonblock(fd); - free(acceptframe); - return 0; + fd_set_nonblock(data->fd); + free(acceptframe); + return 0; + } } if(verbosity) log_info("sent control frame(accept) content-type:(%s)", DNSTAP_CONTENT_TYPE); - fd_set_nonblock(fd); + fd_set_nonblock(data->fd); free(acceptframe); return 1; #else @@ -1033,7 +1047,7 @@ void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) FSTRM_CONTROL_FRAME_READY) { data->is_bidirectional = 1; if(verbosity) log_info("bidirectional stream"); - if(!reply_with_accept(fd)) { + if(!reply_with_accept(data)) { tap_data_free(data); } } else if(data->len >= 4 && sldns_read_uint32(data->frame) == diff --git a/doc/example.conf.in b/doc/example.conf.in index 70560273f..b1a304a4b 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1046,6 +1046,8 @@ remote-control: # upstream log destination, by socket path, TCP or TLS destination. # dnstap: # dnstap-enable: no +# # if set to yes frame streams will be used in bidirectional mode +# dnstap-bidirectional: yes # dnstap-socket-path: "@DNSTAP_SOCKET_PATH@" # # if "" use the unix socket in dnstap-socket-path, otherwise, # # set it to "IPaddress[@port]" of the destination. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index de5a333bd..d8f23576c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2183,6 +2183,10 @@ If dnstap is enabled. Default no. If yes, it connects to the dnstap server and if any of the dnstap-log-..-messages options is enabled it sends logs for those messages to the server. .TP +.B dnstap-bidirectional: \fI +Use frame streams in bidirectional mode to transfer DNSTAP messages. Default is +yes. +.TP .B dnstap-socket-path: \fI Sets the unix socket file name for connecting to the server that is listening on that socket. Default is "@DNSTAP_SOCKET_PATH@". diff --git a/util/config_file.c b/util/config_file.c index b1420d508..0e9ee471b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -298,6 +298,7 @@ config_create(void) if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) goto error_exit; #endif + cfg->dnstap_bidirectional = 1; cfg->dnstap_tls = 1; cfg->disable_dnssec_lame_check = 0; cfg->ip_ratelimit = 0; @@ -639,6 +640,7 @@ int config_set_option(struct config_file* cfg, const char* opt, #endif #ifdef USE_DNSTAP else S_YNO("dnstap-enable:", dnstap) + else S_YNO("dnstap-bidirectional:", dnstap_bidirectional) else S_STR("dnstap-socket-path:", dnstap_socket_path) else S_STR("dnstap-ip:", dnstap_ip) else S_YNO("dnstap-tls:", dnstap_tls) @@ -1055,6 +1057,7 @@ config_get_option(struct config_file* cfg, const char* opt, #endif #ifdef USE_DNSTAP else O_YNO(opt, "dnstap-enable", dnstap) + else O_YNO(opt, "dnstap-bidirectional", dnstap_bidirectional) else O_STR(opt, "dnstap-socket-path", dnstap_socket_path) else O_STR(opt, "dnstap-ip", dnstap_ip) else O_YNO(opt, "dnstap-tls", dnstap_tls) diff --git a/util/config_file.h b/util/config_file.h index fa7e5c592..66e5025d0 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -481,6 +481,8 @@ struct config_file { /** true to enable dnstap support */ int dnstap; + /** using bidirectional frame streams if true */ + int dnstap_bidirectional; /** dnstap socket path */ char* dnstap_socket_path; /** dnstap IP */ diff --git a/util/configlexer.c b/util/configlexer.c index a4ac74066..b9fcf7b21 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 314 -#define YY_END_OF_BUFFER 315 +#define YY_NUM_RULES 315 +#define YY_END_OF_BUFFER 316 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,347 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3083] = +static const flex_int16_t yy_accept[3097] = { 0, - 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, - 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, - 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, - 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, - 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, + 1, 1, 316, 313, 1, 295, 295, 314, 2, 314, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 297, 298, 298, 299, 314, 301, 302, 302, + 303, 314, 308, 305, 306, 306, 307, 314, 309, 310, + 310, 311, 314, 312, 296, 2, 300, 314, 312, 313, + 0, 1, 2, 2, 2, 2, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, - 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 297, 0, 301, 0, 308, 0, 305, 309, 0, + 312, 0, 2, 2, 312, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 312, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 115, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 123, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 115, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 123, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 99, 312, 312, 312, 312, 312, - 312, 8, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 116, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 99, 313, 313, 313, 313, 313, + 313, 8, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 116, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 128, 312, 311, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 128, 313, 312, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 290, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 311, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 57, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 227, 312, 14, 15, 312, 19, 18, 312, 312, 211, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 312, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 57, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 227, 313, 14, 15, 313, 19, 18, 313, 313, 211, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 122, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 209, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 122, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 209, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 3, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 283, 312, 312, 282, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 303, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 284, 313, 313, 283, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 304, 313, 313, 313, - 312, 312, 312, 56, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 60, 312, 257, 312, 312, 312, 312, 312, 312, 312, - 312, 290, 291, 312, 312, 312, 312, 312, 61, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 119, 312, 312, 312, 312, - 312, 312, 312, 312, 198, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 21, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 56, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 60, 313, 258, 313, 313, 313, 313, 313, 313, + 313, 313, 291, 292, 313, 313, 313, 313, 313, 61, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 119, 313, 313, 313, + 313, 313, 313, 313, 313, 198, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 21, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 147, 312, 312, 303, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 97, 312, - 312, 312, 312, 312, 312, 312, 265, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 170, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 146, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 147, 313, 313, 304, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 97, + 313, 313, 313, 313, 313, 313, 313, 266, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 170, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 146, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 32, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 33, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 58, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 121, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 96, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 32, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 33, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 58, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 114, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 59, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 230, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 171, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 47, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 121, 313, 313, 313, 313, 313, 114, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 59, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 231, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 171, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 47, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 248, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 51, 312, 52, 312, 312, 312, 312, - 312, 100, 312, 101, 312, 312, 312, 312, 98, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 7, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 249, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 51, 313, 52, 313, + 313, 313, 313, 313, 100, 313, 101, 313, 313, 313, + 313, 98, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 7, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 220, 312, 312, 312, - 312, 149, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 231, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 48, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 190, 312, - 189, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 220, + 313, 313, 313, 313, 149, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 232, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 48, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 190, 313, 189, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 16, 17, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 62, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 197, 312, 312, 312, 312, 312, - 312, 103, 312, 102, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 181, 312, 312, 312, 312, - 312, 312, 312, 312, 129, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 81, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 16, 17, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 62, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 197, 313, + 313, 313, 313, 313, 313, 103, 313, 102, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 181, + 313, 313, 313, 313, 313, 313, 313, 313, 129, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 81, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 210, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 85, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 184, - 185, 312, 312, 312, 259, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 6, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 210, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 85, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 55, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 184, 185, 313, 313, 313, 260, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 6, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 263, - 312, 312, 312, 312, 312, 312, 284, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 42, 312, 312, - 312, 312, 44, 312, 312, 312, 312, 312, 312, 312, - 312, 45, 312, 312, 312, 312, 312, 312, 312, 312, - 177, 312, 312, 312, 124, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 202, 312, 178, 312, 312, - 312, 217, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 264, 313, 313, 313, 313, 313, + 313, 285, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 42, 313, 313, 313, 313, 44, 313, 313, + 313, 313, 313, 313, 313, 313, 45, 313, 313, 313, + 313, 313, 313, 313, 313, 177, 313, 313, 313, 124, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 202, 313, 178, 313, 313, 313, 217, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 46, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 126, 108, 312, 109, 312, 312, 312, 107, 312, - 312, 312, 312, 312, 312, 312, 312, 144, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 247, - 312, 312, 312, 312, 312, 312, 312, 312, 179, 312, - 312, 312, 312, 312, 182, 312, 188, 312, 312, 312, - 312, 312, 216, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 95, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 46, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 126, 108, 313, + 109, 313, 313, 313, 107, 313, 313, 313, 313, 313, + 313, 313, 313, 144, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 248, 313, 313, 313, 313, + 313, 313, 313, 313, 179, 313, 313, 313, 313, 313, + 182, 313, 188, 313, 313, 313, 313, 313, 216, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 95, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 53, 312, 312, 312, 26, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 20, 312, 312, - 312, 312, 312, 312, 27, 36, 312, 154, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 70, 72, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 267, 312, 312, 312, 228, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 110, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 143, 312, + 313, 313, 120, 313, 313, 313, 313, 313, 313, 53, + 313, 313, 313, 26, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 20, 313, 313, 313, 313, 313, 313, + 27, 36, 313, 154, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 70, 72, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 268, 313, + 313, 313, 313, 228, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 110, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 278, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 148, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 208, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 287, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 165, - 312, 312, 312, 312, 312, 312, 312, 312, 104, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 160, 312, + 313, 313, 313, 313, 313, 143, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 279, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 148, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 208, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 288, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 165, 313, 313, 313, + 313, 313, 313, 313, 313, 104, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 172, 312, 312, 312, 312, 312, 132, 312, 312, 312, - 312, 312, 91, 312, 312, 312, 312, 200, 312, 312, - 312, 312, 312, 312, 218, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 239, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 125, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 164, 312, 312, 312, 312, 312, 73, 74, 312, - 312, 312, 312, 312, 54, 312, 312, 312, 312, 312, - 80, 173, 312, 191, 312, 221, 312, 312, 183, 260, - 312, 312, 312, 312, 312, 66, 312, 175, 312, 312, + 313, 313, 313, 313, 313, 160, 313, 172, 313, 313, + 313, 313, 313, 132, 313, 313, 313, 313, 313, 91, + 313, 313, 313, 313, 200, 313, 313, 313, 313, 313, + 313, 218, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 240, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 125, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 164, + 313, 313, 313, 313, 313, 73, 74, 313, 313, 313, + 313, 313, 54, 313, 313, 313, 313, 313, 80, 173, + 313, 191, 313, 221, 313, 313, 183, 261, 313, 313, - 312, 312, 312, 9, 312, 312, 312, 94, 312, 312, - 312, 312, 252, 312, 312, 312, 312, 199, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 163, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 150, 312, - 266, 312, 312, 312, 312, 238, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 212, 312, 312, + 313, 313, 313, 66, 313, 175, 313, 313, 313, 313, + 313, 9, 313, 313, 313, 94, 313, 313, 313, 313, + 253, 313, 313, 313, 313, 199, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 163, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 150, 313, 267, 313, + 313, 313, 313, 313, 239, 313, 313, 313, 313, 313, - 312, 312, 258, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 281, 312, 174, - 312, 312, 312, 312, 312, 312, 312, 65, 67, 312, - 312, 312, 312, 312, 312, 312, 93, 312, 312, 312, - 312, 250, 312, 312, 312, 312, 262, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 204, 34, - 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, - 312, 312, 312, 90, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 212, 313, 313, 313, + 313, 259, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 282, 313, 174, 313, + 313, 313, 313, 313, 313, 313, 65, 67, 313, 313, + 313, 313, 313, 313, 313, 93, 313, 313, 313, 313, + 251, 313, 313, 313, 313, 263, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 204, 34, 28, + 30, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 35, 313, 29, 31, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 206, 203, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 64, 312, 312, 127, 312, 111, 312, 312, 312, 312, - 312, 312, 312, 312, 145, 13, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 276, 312, 279, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, - 312, 22, 312, 312, 312, 256, 312, 312, 312, 312, - 264, 312, 312, 312, 68, 312, 214, 312, 312, 312, - 312, 205, 312, 312, 63, 312, 312, 312, 312, 23, + 313, 313, 90, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 206, 203, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 64, 313, 313, 127, 313, 111, 313, 313, 313, 313, + 313, 313, 313, 313, 145, 13, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 277, 313, 280, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 12, 313, + 313, 22, 313, 313, 313, 257, 313, 313, 313, 313, + 265, 313, 313, 313, 68, 313, 214, 313, 313, 313, - 312, 43, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 159, 158, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 207, 201, 312, 219, 312, - 312, 268, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 75, - 312, 312, 312, 251, 312, 312, 312, 312, 187, 312, - 312, 312, 312, 213, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 285, 286, 156, 312, 312, 69, 312, - 312, 312, 312, 166, 312, 312, 105, 106, 312, 312, + 313, 205, 313, 313, 63, 313, 313, 313, 313, 23, + 313, 43, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 159, 158, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 207, 201, 313, 219, 313, + 313, 269, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 75, 313, 313, 313, 252, 313, 313, 313, 313, 187, + 313, 313, 313, 313, 213, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 286, 287, 156, 313, 313, 69, - 312, 312, 151, 312, 153, 312, 192, 312, 312, 312, - 312, 157, 312, 312, 222, 312, 312, 312, 312, 312, - 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 229, 312, 312, 312, 312, 312, - 312, 312, 24, 312, 261, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 193, 312, 312, 249, - 312, 280, 312, 186, 312, 312, 312, 312, 49, 312, - 312, 312, 312, 4, 312, 312, 312, 312, 118, 133, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 225, 37, + 313, 313, 313, 313, 166, 313, 313, 105, 106, 313, + 313, 313, 313, 151, 313, 153, 313, 192, 313, 313, + 313, 313, 157, 313, 313, 222, 313, 313, 313, 313, + 313, 313, 313, 134, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 230, 313, 313, 313, + 313, 313, 313, 313, 24, 313, 262, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 193, 313, + 313, 250, 313, 281, 313, 186, 313, 313, 313, 313, + 49, 313, 313, 313, 313, 4, 313, 313, 313, 313, + 118, 133, 313, 313, 313, 313, 313, 313, 313, 313, - 38, 312, 312, 312, 312, 312, 312, 312, 269, 312, - 312, 312, 312, 312, 312, 237, 312, 312, 312, 312, - 312, 312, 312, 196, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 78, 312, 50, 255, 312, 226, 312, - 312, 312, 312, 11, 312, 312, 312, 312, 312, 312, - 117, 312, 312, 312, 312, 194, 82, 312, 40, 312, - 312, 312, 312, 312, 312, 312, 312, 162, 312, 312, - 312, 312, 312, 136, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 236, 312, 312, 312, 312, 130, 312, - 312, 112, 113, 312, 312, 312, 84, 88, 83, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 225, 37, 38, 313, 313, 313, 313, 313, 313, 313, + 270, 313, 313, 313, 313, 313, 313, 313, 238, 313, + 313, 313, 313, 313, 313, 313, 196, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 78, 313, 50, 256, + 313, 226, 313, 313, 313, 313, 11, 313, 313, 313, + 313, 313, 313, 117, 313, 313, 313, 313, 194, 82, + 313, 40, 313, 313, 313, 313, 313, 313, 313, 313, + 162, 313, 313, 313, 313, 313, 136, 313, 313, 313, + 313, 229, 313, 313, 313, 313, 313, 237, 313, 313, - 76, 312, 312, 312, 312, 312, 10, 312, 312, 312, - 253, 288, 312, 312, 312, 312, 293, 39, 312, 312, - 312, 312, 312, 161, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 89, 87, 312, 77, - 277, 312, 312, 312, 312, 312, 312, 312, 180, 312, - 312, 312, 312, 312, 195, 312, 312, 312, 312, 312, - 312, 312, 312, 152, 71, 312, 312, 312, 312, 312, - 270, 312, 312, 312, 312, 312, 312, 312, 233, 312, - 312, 232, 131, 312, 86, 137, 138, 141, 142, 139, + 313, 313, 130, 313, 313, 112, 113, 313, 313, 313, + 84, 88, 83, 313, 76, 313, 313, 313, 313, 313, + 10, 313, 313, 313, 254, 289, 313, 313, 313, 313, + 294, 39, 313, 313, 313, 313, 313, 161, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 89, 87, 313, 77, 278, 313, 313, 313, 313, 313, + 313, 313, 180, 313, 313, 313, 313, 313, 195, 313, + 313, 313, 313, 313, 313, 313, 313, 152, 71, 313, + 313, 313, 313, 313, 271, 313, 313, 313, 313, 313, - 140, 79, 312, 254, 312, 312, 312, 312, 155, 312, - 312, 312, 312, 312, 224, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 168, 167, 41, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 92, - 312, 223, 312, 246, 274, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 5, 312, 312, - 215, 312, 312, 275, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 234, 25, 312, 312, 312, 312, 312, + 313, 313, 234, 313, 313, 233, 131, 313, 86, 137, + 138, 141, 142, 139, 140, 79, 313, 255, 313, 313, + 313, 313, 155, 313, 313, 313, 313, 313, 224, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 168, 167, 41, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 92, 313, 223, 313, 247, 275, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 5, 313, 313, 215, 313, 313, 276, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 235, 25, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 236, 313, 313, 313, 135, 313, 313, 313, 313, + 313, 313, 313, 313, 169, 313, 176, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 272, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 293, 313, 313, 243, 313, 313, + 313, 313, 313, 273, 313, 313, 313, 313, 313, 313, + 274, 313, 313, 313, 241, 313, 244, 245, 313, 313, + 313, 313, 313, 242, 246, 0 - 312, 312, 312, 312, 312, 312, 312, 235, 312, 312, - 312, 135, 312, 312, 312, 312, 312, 312, 312, 312, - 169, 312, 176, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 271, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 292, 312, 312, 242, 312, 312, 312, 312, 312, 272, - 312, 312, 312, 312, 312, 312, 273, 312, 312, 312, - 240, 312, 243, 244, 312, 312, 312, 312, 312, 241, - 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -746,15 +748,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3097] = +static const flex_int16_t yy_base[3111] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 1616, 1559, 81, 6016, 6016, 6016, 96, 52, + 90, 112, 1616, 1547, 81, 6048, 6048, 6048, 96, 52, 106, 63, 107, 128, 70, 116, 123, 134, 57, 88, 76, 145, 151, 114, 158, 97, 169, 181, 179, 188, - 194, 129, 1447, 6016, 6016, 6016, 135, 1315, 6016, 6016, - 6016, 146, 1142, 1110, 6016, 6016, 6016, 220, 1034, 6016, - 6016, 6016, 171, 903, 6016, 224, 6016, 228, 157, 818, + 194, 129, 1447, 6048, 6048, 6048, 135, 1315, 6048, 6048, + 6048, 146, 1142, 1110, 6048, 6048, 6048, 220, 1034, 6048, + 6048, 6048, 171, 903, 6048, 224, 6048, 228, 157, 818, 232, 167, 0, 239, 0, 0, 165, 205, 85, 166, 226, 190, 233, 234, 228, 240, 241, 242, 98, 130, 250, 243, 245, 248, 258, 256, 262, 267, 273, 251, @@ -783,9 +785,9 @@ static const flex_int16_t yy_base[3097] = 701, 703, 717, 705, 710, 718, 719, 727, 712, 720, 739, 744, 745, 733, 731, 747, 749, 752, 754, 760, - 755, 757, 763, 764, 765, 766, 773, 768, 6016, 772, + 755, 757, 763, 764, 765, 766, 773, 768, 6048, 772, 774, 782, 784, 786, 790, 787, 796, 794, 777, 804, - 806, 802, 810, 832, 788, 800, 809, 811, 814, 6016, + 806, 802, 810, 832, 788, 800, 809, 811, 814, 6048, 822, 816, 856, 827, 820, 840, 837, 836, 844, 845, 838, 846, 867, 850, 849, 852, 879, 854, 862, 864, 874, 880, 878, 887, 890, 886, 888, 894, 898, 895, @@ -795,21 +797,21 @@ static const flex_int16_t yy_base[3097] = 937, 943, 955, 950, 951, 959, 961, 960, 953, 966, 962, 969, 972, 970, 978, 980, 981, 976, 982, 984, 987, 993, 986, 988, 995, 997, 996, 1000, 1005, 1006, - 1010, 990, 1018, 1001, 6016, 1020, 1012, 1014, 1016, 1024, - 1026, 6016, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, + 1010, 990, 1018, 1001, 6048, 1020, 1012, 1014, 1016, 1024, + 1026, 6048, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, 1046, 1049, 1042, 1050, 1061, 1051, 1059, 1064, 1060, 1063, 1066, 1069, 1072, 1070, 1077, 1073, 1067, 935, 1080, 1094, - 6016, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, + 6048, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, 1105, 1109, 1122, 1123, 1125, 1126, 1130, 1086, 1129, 1131, 1133, 1134, 1136, 1137, 1135, 1138, 1144, 1140, 1145, 1141, - 6016, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, + 6048, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, 1171, 1172, 1174, 1173, 1178, 1192, 1182, 1193, 1189, 1195, 1190, 1191, 1197, 1196, 1200, 1205, 1213, 1210, 1215, 1218, 1226, 1225, 1228, 1235, 1237, 1211, 1230, 1203, 1222, 1234, 1240, 1239, 1238, 1245, 1246, 1253, 1248, 1249, 1251, 1254, 1263, 1255, 1258, 1265, 1262, 1269, 1266, 1259, 1271, 1278, - 1279, 1281, 6016, 1288, 1285, 1286, 1287, 1290, 1297, 1298, + 1279, 1281, 6048, 1288, 1285, 1286, 1287, 1290, 1297, 1298, 1292, 1299, 1302, 1301, 1305, 1304, 1307, 1311, 1312, 1316, 1318, 1321, 1325, 1322, 1323, 1337, 1336, 1338, 1329, 1330, 1346, 1345, 1348, 1349, 1351, 1359, 1341, 1355, 1357, 1366, @@ -821,622 +823,624 @@ static const flex_int16_t yy_base[3097] = 1442, 1443, 1446, 1454, 1452, 1444, 1462, 1450, 1465, 1466, 1467, 1468, 1469, 1472, 1471, 1474, 1475, 1483, 1484, 1485, 1488, 1487, 1492, 1490, 1497, 1489, 1498, 1499, 1503, 1505, - 1506, 1510, 1513, 1516, 1511, 6016, 1507, 1523, 1521, 1524, + 1506, 1510, 1513, 1516, 1511, 6048, 1507, 1523, 1521, 1524, 1525, 1529, 1530, 1538, 1531, 1533, 1534, 1535, 1536, 1561, - 6016, 1542, 6016, 6016, 1545, 6016, 6016, 1544, 1543, 6016, + 6048, 1542, 6048, 6048, 1545, 6048, 6048, 1544, 1543, 6048, - 1558, 1547, 1546, 1567, 1571, 1565, 1551, 1574, 1555, 1584, - 1589, 1577, 1579, 1585, 1586, 1592, 1598, 1587, 1604, 1599, - 1609, 1612, 1613, 1615, 1619, 1621, 1622, 1606, 1624, 1626, - 1629, 1627, 1630, 1632, 1636, 1637, 1633, 1640, 1639, 1649, - 1653, 1642, 1660, 6016, 1657, 1669, 1670, 1666, 1673, 1665, - 1672, 1674, 1645, 1656, 1675, 1676, 1679, 1680, 1677, 1686, - 1681, 1689, 1698, 1688, 6016, 1691, 1693, 1695, 1699, 1701, - 1703, 1708, 1709, 1705, 1711, 1712, 1722, 1714, 1717, 1718, - 1724, 1726, 1728, 6016, 1727, 1735, 1736, 1738, 1740, 1742, - 1744, 1741, 1745, 1746, 1747, 1748, 1749, 1753, 1760, 1759, + 1558, 1551, 1546, 1568, 1571, 1565, 1559, 1574, 1555, 1584, + 1589, 1582, 1579, 1585, 1586, 1592, 1598, 1599, 1604, 1594, + 1612, 1610, 1614, 1616, 1619, 1620, 1623, 1624, 1625, 1626, + 1628, 1630, 1631, 1627, 1634, 1636, 1633, 1640, 1639, 1650, + 1649, 1656, 1659, 6048, 1657, 1666, 1669, 1665, 1673, 1668, + 1672, 1674, 1676, 1680, 1677, 1681, 1683, 1684, 1645, 1687, + 1689, 1692, 1696, 1693, 6048, 1694, 1695, 1697, 1701, 1702, + 1705, 1709, 1710, 1707, 1713, 1715, 1726, 1716, 1718, 1719, + 1727, 1723, 1731, 6048, 1735, 1730, 1739, 1740, 1741, 1743, + 1744, 1746, 1749, 1748, 1750, 1751, 1752, 1753, 1765, 1758, - 1766, 1756, 1769, 1771, 1773, 1774, 1781, 1776, 1782, 1784, - 1785, 1786, 1788, 1789, 1792, 1800, 1801, 1797, 1805, 1798, - 1809, 1813, 1815, 1802, 1814, 1817, 1816, 1823, 1831, 1827, - 1820, 1828, 1835, 1832, 1840, 1833, 1842, 1844, 1845, 1846, - 1848, 1836, 1853, 1854, 1855, 6016, 1856, 1857, 6016, 1861, - 1862, 1884, 1863, 1865, 1867, 1876, 1866, 1868, 1870, 1878, - 1894, 1888, 1904, 1896, 1897, 1906, 1907, 1908, 1909, 1911, - 1915, 1916, 1877, 1917, 1924, 1932, 1928, 1934, 1937, 1919, - 1933, 1935, 1954, 1938, 1939, 1942, 1945, 1946, 1943, 1951, - 1949, 1958, 1964, 1966, 1967, 6016, 1975, 1976, 1970, 1972, + 1754, 1756, 1771, 1774, 1776, 1777, 1779, 1761, 1783, 1784, + 1786, 1787, 1788, 1789, 1791, 1799, 1801, 1798, 1802, 1797, + 1806, 1809, 1814, 1805, 1813, 1815, 1816, 1821, 1829, 1827, + 1826, 1819, 1834, 1831, 1836, 1838, 1840, 1842, 1839, 1843, + 1848, 1846, 1850, 1852, 1853, 6048, 1855, 1859, 6048, 1858, + 1860, 1882, 1861, 1863, 1865, 1875, 1864, 1884, 1871, 1869, + 1890, 1892, 1900, 1896, 1897, 1904, 1901, 1902, 1909, 1910, + 1912, 1913, 1914, 1918, 1919, 1929, 1930, 1877, 1936, 1938, + 1922, 1933, 1935, 1954, 1937, 1940, 1942, 1939, 1946, 1943, + 1950, 1957, 1959, 1963, 1965, 1966, 6048, 1967, 1969, 1975, - 1984, 1981, 1982, 6016, 1987, 1988, 1990, 1998, 1991, 1993, - 1994, 1995, 2002, 2003, 2005, 2004, 2009, 2008, 2007, 2025, - 6016, 2010, 6016, 2020, 2011, 2021, 2022, 2027, 2028, 2030, - 2032, 6016, 6016, 2033, 2039, 2041, 2050, 2046, 6016, 2047, - 2055, 2052, 2057, 2051, 2058, 2061, 2062, 2066, 2067, 2070, - 2068, 2075, 2071, 2076, 2073, 6016, 2089, 1940, 2085, 2091, - 2083, 2093, 2095, 2072, 6016, 2097, 2094, 2101, 2108, 2105, - 2106, 2109, 2111, 2112, 2116, 2117, 2118, 2119, 2120, 2129, - 2130, 2121, 2132, 2135, 2131, 6016, 2128, 2139, 2147, 2143, - 2145, 2142, 2149, 2150, 2152, 2153, 2154, 1879, 2155, 2160, + 1976, 1983, 1979, 1981, 6048, 1986, 1987, 1985, 1997, 1990, + 1988, 1993, 1992, 2002, 2003, 2005, 2004, 2006, 2008, 2009, + 2024, 6048, 2011, 6048, 2019, 2010, 2020, 2021, 2022, 2028, + 2029, 2031, 6048, 6048, 2032, 2038, 2041, 2050, 2045, 6048, + 2046, 2054, 2051, 2056, 2049, 2057, 2060, 2061, 2065, 2066, + 2070, 2067, 2074, 2069, 2075, 2071, 6048, 2083, 2072, 2089, + 2090, 2082, 2091, 2092, 2088, 6048, 2099, 2101, 2102, 2109, + 2107, 2104, 2110, 2111, 2115, 2112, 2118, 2119, 2120, 2121, + 2131, 2132, 2122, 2124, 2133, 2141, 6048, 2136, 2140, 2148, + 2144, 2146, 2143, 2147, 2150, 2151, 2155, 2159, 2153, 2157, - 2161, 2169, 2170, 2162, 2174, 2166, 2167, 2175, 2176, 2182, - 2181, 2183, 2184, 2185, 6016, 2187, 2191, 147, 2193, 2194, - 2196, 2195, 2202, 2198, 2201, 2218, 2219, 2215, 2214, 2217, - 2223, 2224, 2225, 2226, 2227, 1751, 2228, 2229, 6016, 2205, - 2231, 2232, 2234, 2233, 2235, 2242, 6016, 2251, 2254, 2263, - 2253, 2257, 2264, 2265, 2268, 2266, 2269, 2270, 2273, 2272, - 2276, 2278, 6016, 2280, 2283, 2290, 2281, 2291, 2236, 2293, - 2292, 2294, 2298, 2299, 2300, 2303, 2304, 2305, 2306, 2308, - 2312, 2313, 2314, 2319, 2320, 6016, 2331, 2321, 2322, 2323, - 2332, 2333, 2342, 2338, 2340, 2346, 2347, 2360, 2349, 2344, + 2161, 2163, 2171, 2172, 2169, 2174, 2177, 2167, 2178, 2181, + 2187, 2180, 2185, 2188, 2189, 6048, 2190, 2196, 147, 2191, + 2197, 2199, 2201, 2204, 2203, 2200, 2216, 2221, 2217, 2223, + 2219, 2218, 2226, 2228, 2227, 2229, 2230, 2231, 2234, 6048, + 2236, 2238, 2239, 2241, 2243, 2244, 2254, 6048, 2247, 2260, + 2245, 2263, 2258, 2255, 2271, 2266, 2272, 2267, 2275, 2277, + 2279, 2278, 2281, 2282, 6048, 2287, 2284, 2288, 2294, 2295, + 2298, 2297, 2303, 2304, 2305, 2299, 2307, 2308, 2309, 2310, + 2312, 2313, 2317, 2320, 2316, 2325, 2328, 6048, 2332, 2327, + 2330, 2334, 2339, 2340, 2348, 2343, 2346, 2350, 2355, 2364, - 2356, 2351, 2358, 2355, 2367, 2366, 2370, 2376, 2372, 2380, - 2382, 2374, 2378, 2386, 2384, 2392, 2388, 2389, 2405, 2406, - 2398, 2408, 2401, 2390, 2416, 2409, 6016, 2418, 2411, 2423, - 2424, 2431, 2427, 2428, 2429, 2432, 2435, 2437, 2438, 2439, - 2448, 2451, 2447, 2440, 2458, 2445, 2460, 2443, 2449, 2462, - 2465, 2466, 2471, 2473, 6016, 2476, 2472, 2468, 2480, 2483, - 2478, 2485, 2490, 2488, 2486, 2492, 2495, 2496, 2497, 2499, - 2501, 2502, 2503, 2504, 6016, 2509, 2508, 2510, 2514, 2520, - 2518, 2524, 2527, 2530, 2533, 2517, 2534, 2536, 2537, 6016, - 2545, 2547, 2544, 2548, 2546, 2551, 2552, 2554, 2556, 6016, + 2353, 2349, 2357, 2367, 2365, 2371, 2381, 2374, 2384, 2385, + 2361, 2390, 2392, 2376, 2388, 2393, 2378, 2394, 2400, 2401, + 2409, 2410, 2407, 2411, 2408, 2420, 2432, 2405, 6048, 2423, + 2418, 2413, 2425, 2441, 2436, 2437, 2438, 2439, 2442, 2444, + 2446, 2447, 2454, 2449, 2452, 2455, 2457, 2456, 2458, 2464, + 2466, 2468, 2472, 2474, 2476, 2477, 6048, 2478, 2480, 2483, + 2484, 2487, 2488, 2495, 2496, 2498, 2490, 2492, 2500, 2501, + 2504, 2505, 2509, 2506, 2510, 2516, 6048, 2517, 2518, 2519, + 2522, 2523, 2527, 2526, 2532, 2529, 2538, 2539, 2540, 2541, + 2542, 6048, 2550, 2551, 2547, 2559, 2549, 2554, 2556, 2561, - 2557, 2558, 2565, 2566, 2561, 6016, 2568, 2564, 2569, 2571, - 2572, 2573, 2574, 2579, 2580, 2582, 2585, 2588, 2592, 2593, - 6016, 2594, 2602, 2603, 2595, 2606, 2597, 2607, 2608, 2612, - 2616, 2610, 6016, 2625, 2627, 2628, 2635, 2630, 2632, 2633, - 2636, 2637, 2638, 2640, 2643, 6016, 2646, 2644, 2647, 2652, - 2650, 2648, 2655, 2667, 2657, 2659, 2668, 2664, 2670, 2671, - 2672, 2673, 2676, 2675, 2683, 2686, 2684, 2688, 2689, 2691, - 2701, 2703, 2704, 2706, 6016, 2709, 2698, 2711, 2700, 2712, - 2713, 2714, 2715, 2717, 2719, 2724, 2722, 2723, 2731, 2739, - 2732, 2734, 2740, 2741, 2744, 2743, 2745, 2746, 2747, 2755, + 2562, 6048, 2563, 2564, 2571, 2572, 2568, 6048, 2575, 2570, + 2576, 2577, 2578, 2579, 2580, 2585, 2586, 2588, 2593, 2595, + 2591, 2599, 6048, 2600, 2608, 2603, 2601, 2609, 2612, 2613, + 2615, 2624, 2616, 2618, 2622, 6048, 2637, 2623, 2634, 2641, + 2638, 2639, 2642, 2643, 2644, 2646, 2647, 2650, 6048, 2653, + 2651, 2654, 2655, 2658, 2659, 2661, 2674, 2663, 2666, 2673, + 2671, 2676, 2678, 2679, 2681, 2689, 2682, 2683, 2695, 2690, + 2693, 2698, 2701, 2708, 2709, 2710, 2712, 6048, 2715, 2716, + 2717, 2704, 2707, 2718, 2723, 2724, 2727, 2728, 2729, 2731, + 2732, 2741, 2743, 2738, 2748, 2744, 2746, 2750, 2752, 2753, - 2751, 2750, 2763, 2754, 2761, 2768, 2758, 2769, 2770, 2771, - 2772, 2774, 2778, 2779, 2781, 2775, 2783, 2792, 2794, 2796, - 2785, 2797, 2801, 2802, 6016, 2805, 2807, 2803, 2809, 2810, - 2816, 2817, 2819, 2820, 2811, 2825, 2827, 2828, 2833, 2834, - 2836, 2843, 2839, 6016, 2840, 6016, 2841, 2842, 2844, 2854, - 2846, 6016, 2850, 6016, 2857, 2864, 2851, 2855, 6016, 2865, - 2859, 2861, 2872, 2869, 2874, 2875, 2876, 2877, 2882, 2878, - 2880, 2885, 2886, 2888, 2890, 2892, 2896, 2893, 2903, 2905, - 2897, 2906, 2899, 2912, 2914, 2913, 2915, 6016, 2925, 2916, - 2919, 2922, 2926, 2927, 2928, 2930, 2931, 2936, 2937, 2938, + 2754, 2755, 2762, 2761, 2760, 2770, 2768, 2769, 2777, 2776, + 2778, 2779, 2780, 2767, 2782, 2785, 2783, 2788, 2789, 2793, + 2805, 2802, 2790, 2796, 2806, 2808, 2810, 6048, 2813, 2814, + 2811, 2817, 2818, 2823, 2820, 2830, 2827, 2828, 2833, 2832, + 2835, 2840, 2843, 2844, 2851, 2847, 6048, 2848, 6048, 2849, + 2850, 2852, 2862, 2854, 6048, 2858, 6048, 2865, 2872, 2859, + 2863, 6048, 2873, 2867, 2869, 2880, 2877, 2882, 2883, 2884, + 2885, 2890, 2886, 2888, 2893, 2894, 2896, 2898, 2900, 2904, + 2901, 2911, 2913, 2905, 2914, 2907, 2920, 2922, 2921, 2923, + 6048, 2933, 2924, 2927, 2930, 2934, 2935, 2936, 2938, 2939, - 2939, 2945, 2944, 2954, 2950, 2961, 6016, 2953, 2958, 2960, - 2962, 6016, 2964, 2963, 2965, 2971, 2974, 2973, 2975, 2977, - 2981, 2983, 2976, 2986, 2984, 2993, 2994, 6016, 2999, 3000, - 2985, 3003, 3002, 3015, 3007, 3016, 3018, 3020, 3021, 3011, - 3022, 3023, 3025, 3027, 3034, 3035, 3031, 3038, 3033, 3039, - 3047, 3043, 3037, 3041, 3049, 3050, 3051, 3054, 3057, 3058, - 3053, 3059, 3060, 3062, 6016, 3068, 3071, 3072, 3075, 3063, - 3080, 3081, 3082, 3084, 3086, 3085, 3087, 3088, 6016, 3095, - 6016, 3089, 3103, 3098, 3108, 3090, 3109, 3113, 3112, 3117, - 3118, 3119, 3120, 3121, 3122, 3123, 3126, 3134, 3133, 3135, + 2944, 2945, 2946, 2947, 2953, 2952, 2962, 2958, 2969, 6048, + 2961, 2966, 2968, 2970, 6048, 2972, 2971, 2973, 2979, 2982, + 2981, 2983, 2985, 2989, 2984, 2991, 2986, 2994, 3007, 3004, + 3005, 6048, 3010, 3011, 2992, 3015, 3014, 3026, 3022, 3028, + 3030, 3038, 3034, 3023, 3025, 3021, 3033, 3041, 3048, 3051, + 3047, 3055, 3035, 3054, 3057, 3060, 3046, 3050, 3061, 3062, + 3063, 3066, 3067, 3074, 3069, 3071, 3072, 3073, 6048, 3083, + 3075, 3079, 3087, 3085, 3090, 3092, 3093, 3096, 3097, 3099, + 3098, 3101, 6048, 3103, 6048, 3102, 3119, 3109, 3114, 3120, + 3115, 3121, 3126, 3128, 3129, 3130, 3131, 3134, 3138, 3137, - 3148, 3131, 3128, 3136, 3139, 3144, 3149, 6016, 6016, 3150, - 3152, 3155, 3157, 3158, 3159, 3162, 3169, 3166, 3165, 3168, - 3172, 3180, 6016, 3182, 3176, 3184, 3187, 3194, 3185, 3198, - 3199, 3195, 3207, 3202, 6016, 3204, 3205, 3215, 3210, 3211, - 3218, 6016, 3213, 6016, 3216, 3217, 3222, 3225, 3226, 3227, - 3228, 3229, 3232, 3244, 3247, 3233, 3249, 3237, 3245, 3250, - 3251, 3258, 3254, 3255, 3256, 6016, 3260, 3261, 3262, 3265, - 3267, 3268, 3275, 3277, 6016, 3278, 3280, 3282, 3283, 3285, - 3287, 3288, 3289, 3291, 3294, 3290, 3292, 3305, 3298, 3297, - 3307, 3317, 3308, 3319, 6016, 3320, 3314, 3327, 3329, 3322, + 3139, 3140, 3142, 3150, 3156, 3143, 3147, 3157, 3145, 3161, + 3162, 6048, 6048, 3164, 3165, 3166, 3168, 3169, 3171, 3172, + 3170, 3180, 3181, 3186, 3188, 3196, 6048, 3191, 3193, 3192, + 3197, 3200, 3198, 3204, 3215, 3212, 3219, 3218, 6048, 3201, + 3211, 3226, 3210, 3227, 3228, 6048, 3229, 6048, 3231, 3232, + 3233, 3234, 3235, 3239, 3240, 3242, 3245, 3253, 3255, 3246, + 3258, 3260, 3261, 3262, 3263, 3270, 3265, 3267, 3268, 6048, + 3272, 3269, 3273, 3285, 3288, 3291, 3275, 3274, 6048, 3292, + 3295, 3282, 3298, 3299, 3303, 3300, 3304, 3305, 3308, 3306, + 3309, 3319, 3312, 3315, 3316, 3327, 3328, 3335, 6048, 3332, - 3324, 3330, 3331, 3332, 3335, 3337, 3336, 3338, 3340, 3342, - 3339, 3349, 3343, 3356, 3345, 3359, 3365, 3366, 3346, 6016, - 3362, 3369, 3370, 3373, 3372, 3376, 3379, 3383, 3380, 3392, - 3393, 3384, 3387, 3396, 3397, 3404, 3399, 6016, 3409, 3389, - 3412, 3410, 3411, 3416, 3417, 3419, 3420, 3421, 3422, 3429, - 3424, 6016, 3431, 3426, 3436, 3437, 3428, 3451, 3446, 3427, - 3449, 3453, 3450, 3456, 3454, 3458, 3459, 3462, 3463, 6016, - 6016, 3465, 3466, 3468, 6016, 3469, 3467, 3479, 3472, 3475, - 3482, 3485, 3481, 3484, 3486, 3489, 3493, 6016, 3494, 3501, - 3498, 3500, 3508, 3511, 3504, 3512, 3513, 3506, 3514, 3516, + 3321, 3342, 3339, 3340, 3341, 3344, 3345, 3346, 3348, 3349, + 3350, 3351, 3353, 3357, 3358, 3354, 3361, 3360, 3372, 3371, + 3363, 3375, 3385, 3381, 6048, 3382, 3387, 3386, 3388, 3391, + 3392, 3395, 3397, 3389, 3399, 3410, 3400, 3404, 3413, 3414, + 3422, 3417, 6048, 3429, 3408, 3430, 3415, 3428, 3433, 3434, + 3442, 3437, 3419, 3427, 3444, 3441, 6048, 3454, 3443, 3458, + 3452, 3455, 3465, 3462, 3446, 3464, 3468, 3469, 3472, 3474, + 3475, 3476, 3479, 3480, 6048, 6048, 3482, 3483, 3484, 6048, + 3487, 3486, 3498, 3489, 3490, 3491, 3502, 3501, 3499, 3503, + 3505, 3512, 6048, 3513, 3520, 3515, 3516, 3527, 3530, 3533, - 3520, 3519, 3521, 3524, 3535, 3536, 3531, 3527, 3534, 6016, - 3532, 3539, 3540, 3544, 3541, 3548, 6016, 3546, 3549, 3550, - 3555, 3558, 3562, 3559, 3568, 3569, 3571, 3572, 3573, 3574, - 3576, 3583, 3580, 3579, 3582, 3586, 3588, 6016, 3589, 3593, - 3597, 3600, 6016, 3602, 3611, 3612, 3613, 3603, 3614, 3608, - 3621, 6016, 3616, 3618, 3623, 3624, 3631, 3626, 3633, 3630, - 6016, 3632, 3634, 3636, 6016, 3637, 3638, 3646, 3651, 3643, - 3658, 3654, 3656, 3659, 3655, 6016, 3657, 6016, 3666, 3667, - 3670, 6016, 3668, 3672, 3673, 3675, 3676, 3677, 3681, 3688, - 3683, 3689, 3690, 3691, 3692, 3694, 3701, 3693, 3697, 3700, + 3517, 3529, 3519, 3526, 3534, 3537, 3536, 3541, 3542, 3550, + 3553, 3548, 3549, 3551, 6048, 3552, 3556, 3557, 3559, 3560, + 3561, 6048, 3563, 3565, 3574, 3566, 3584, 3573, 3570, 3588, + 3585, 3589, 3590, 3591, 3592, 3593, 3600, 3595, 3597, 3599, + 3604, 3607, 6048, 3608, 3614, 3601, 3616, 6048, 3619, 3628, + 3626, 3629, 3624, 3631, 3632, 3639, 6048, 3634, 3637, 3635, + 3638, 3648, 3640, 3649, 3645, 6048, 3652, 3651, 3653, 6048, + 3656, 3654, 3661, 3666, 3667, 3674, 3669, 3671, 3672, 3673, + 6048, 3679, 6048, 3677, 3681, 3685, 6048, 3683, 3688, 3689, + 3691, 3692, 3697, 3698, 3696, 3705, 3706, 3707, 3709, 3710, - 3702, 6016, 3712, 3704, 3705, 3719, 3717, 3709, 3707, 3725, - 3723, 6016, 6016, 3732, 6016, 3734, 3727, 3729, 6016, 3733, - 3735, 3744, 3739, 3740, 3750, 3747, 3751, 6016, 3753, 3742, - 3754, 3757, 3758, 3761, 3763, 3764, 3765, 3767, 3768, 6016, - 3769, 3771, 3778, 3770, 3772, 3781, 3780, 3786, 6016, 3790, - 3794, 3793, 3797, 3798, 6016, 3799, 6016, 3800, 3801, 3803, - 3807, 3804, 6016, 3812, 3813, 3817, 3819, 3820, 3822, 3821, - 3828, 3829, 3830, 3837, 3834, 3835, 3832, 6016, 3836, 3838, - 3842, 3843, 3846, 3849, 3857, 3853, 3854, 3859, 3860, 3863, - 3866, 3864, 3870, 3872, 3874, 3867, 6016, 3875, 3880, 3873, + 3708, 3713, 3717, 3714, 3715, 3719, 3720, 6048, 3721, 3723, + 3730, 3735, 3731, 3738, 3725, 3742, 3743, 6048, 6048, 3745, + 6048, 3748, 3749, 3752, 6048, 3754, 3753, 3761, 3757, 3758, + 3760, 3764, 3770, 6048, 3766, 3771, 3775, 3772, 3777, 3780, + 3782, 3783, 3779, 3784, 3787, 6048, 3788, 3785, 3790, 3786, + 3796, 3800, 3802, 3801, 6048, 3809, 3810, 3811, 3813, 3815, + 6048, 3817, 6048, 3819, 3823, 3824, 3825, 3820, 6048, 3828, + 3831, 3834, 3835, 3838, 3840, 3841, 3844, 3847, 3848, 3856, + 3852, 3851, 3854, 6048, 3853, 3855, 3859, 3866, 3860, 3863, + 3876, 3873, 3877, 3871, 3874, 3881, 3884, 3885, 3887, 3891, - 3889, 3886, 3890, 6016, 3891, 3892, 3893, 6016, 3896, 3899, - 3901, 3905, 3900, 3906, 3907, 3908, 3911, 6016, 3913, 3915, - 3912, 3916, 3928, 3920, 6016, 6016, 3930, 6016, 3931, 3917, - 3935, 3934, 3914, 3938, 3942, 3944, 3946, 3943, 3951, 3954, - 3948, 3964, 3966, 3971, 3967, 3968, 3957, 6016, 6016, 3973, - 3974, 3969, 3980, 3981, 3983, 3984, 3991, 3987, 3993, 3997, - 3998, 4005, 6016, 3986, 3988, 4006, 6016, 4001, 4004, 4007, - 4012, 4011, 4013, 4017, 4014, 4015, 4018, 4022, 4019, 4024, - 4032, 4025, 4029, 4028, 4038, 4035, 4036, 4045, 6016, 4042, - 4046, 4049, 4052, 4053, 4055, 4057, 4058, 4059, 6016, 4056, + 3892, 3893, 6048, 3894, 3899, 3895, 3908, 3904, 3898, 6048, + 3905, 3909, 3915, 6048, 3912, 3918, 3919, 3922, 3923, 3924, + 3927, 3926, 3929, 6048, 3933, 3934, 3930, 3931, 3932, 3939, + 6048, 6048, 3947, 6048, 3949, 3935, 3952, 3951, 3954, 3956, + 3960, 3961, 3963, 3957, 3964, 3972, 3971, 3981, 3988, 3989, + 3987, 3978, 3973, 6048, 6048, 3992, 3994, 3996, 3998, 3999, + 4001, 3985, 4008, 4006, 4014, 4017, 4007, 4010, 6048, 4018, + 4019, 4021, 4023, 6048, 4024, 4026, 4027, 4029, 4028, 4030, + 4035, 4032, 4036, 4034, 4038, 4042, 4040, 4053, 4045, 4047, + 4054, 4057, 4061, 4060, 4064, 6048, 4067, 4065, 4066, 4068, - 4061, 4063, 4069, 4062, 4072, 4083, 4087, 4089, 4064, 4081, - 4090, 4092, 4096, 4093, 6016, 4097, 4099, 4100, 4103, 4106, - 4108, 4109, 4111, 4112, 4114, 4116, 4117, 4124, 4126, 4118, - 4127, 4121, 4129, 6016, 4133, 4140, 4134, 4142, 4137, 4067, - 4143, 4144, 4150, 4147, 4152, 4151, 4157, 6016, 4154, 4158, - 4161, 4159, 4165, 4168, 4172, 4169, 4171, 6016, 4179, 4162, - 4173, 4175, 4183, 4185, 4188, 4190, 4193, 4192, 4195, 6016, - 4196, 4199, 4200, 4197, 4206, 4207, 4211, 4209, 6016, 4212, - 4218, 4210, 4226, 4221, 4230, 4227, 4229, 4231, 4233, 4236, - 4238, 4240, 4241, 4243, 4237, 4254, 4259, 4257, 6016, 4244, + 4069, 4070, 4076, 4080, 4077, 6048, 4072, 4082, 4083, 4088, + 4090, 4094, 4095, 4100, 4103, 4105, 4106, 4108, 4112, 4111, + 4113, 6048, 4117, 4114, 4115, 4116, 4126, 4130, 4123, 4132, + 4127, 4137, 4133, 4138, 4140, 4147, 4141, 4144, 4149, 4150, + 6048, 4151, 4158, 4152, 4160, 4154, 4161, 4162, 4173, 4176, + 4164, 4166, 4168, 4178, 6048, 4170, 4179, 4180, 4182, 4185, + 4188, 4191, 4193, 4194, 6048, 4198, 4192, 4199, 4200, 4201, + 4203, 4204, 4210, 4213, 4215, 4220, 6048, 4216, 4224, 4226, + 4218, 4232, 4225, 4234, 4227, 6048, 4236, 4237, 4233, 4250, + 4235, 4255, 4247, 4254, 4251, 4257, 4258, 4260, 4262, 4263, - 6016, 4258, 4262, 4266, 4268, 4265, 6016, 4255, 4270, 4273, - 4274, 4275, 6016, 4276, 4278, 4280, 4279, 6016, 4290, 4292, - 4281, 4296, 4283, 4298, 6016, 4303, 4304, 4300, 4312, 4315, - 4311, 4313, 4316, 4314, 4318, 4319, 4320, 4328, 4323, 4324, - 6016, 4330, 4333, 4340, 4341, 4335, 4325, 4343, 4349, 4342, - 6016, 4351, 4350, 4352, 4353, 4354, 4357, 4359, 4366, 4362, - 4361, 6016, 4365, 4369, 4382, 4363, 4373, 6016, 6016, 4378, - 4383, 4385, 4380, 4386, 6016, 4389, 4396, 4391, 4395, 4398, - 6016, 6016, 4400, 6016, 4397, 6016, 4402, 4401, 6016, 6016, - 4404, 4405, 4408, 4414, 4411, 6016, 4421, 6016, 4418, 4422, + 4264, 4265, 4274, 4281, 4278, 6048, 4266, 6048, 4280, 4283, + 4291, 4287, 4277, 6048, 4290, 4292, 4294, 4295, 4298, 6048, + 4300, 4301, 4303, 4302, 6048, 4313, 4304, 4305, 4311, 4320, + 4321, 6048, 4327, 4328, 4324, 4336, 4338, 4333, 4335, 4337, + 4339, 4341, 4343, 4344, 4345, 4354, 4347, 4350, 6048, 4352, + 4359, 4365, 4366, 4349, 4360, 4368, 4370, 4373, 6048, 4374, + 4367, 4375, 4376, 4377, 4378, 4383, 4391, 4393, 4382, 6048, + 4389, 4392, 4402, 4401, 4404, 6048, 6048, 4394, 4410, 4412, + 4403, 4413, 6048, 4416, 4423, 4407, 4422, 4418, 6048, 6048, + 4425, 6048, 4426, 6048, 4428, 4430, 6048, 6048, 4431, 4432, - 4424, 4425, 4427, 6016, 4426, 4429, 4434, 6016, 4428, 4436, - 4435, 4439, 6016, 4443, 4446, 4438, 4444, 6016, 4450, 4456, - 4458, 4448, 4452, 4459, 4465, 4460, 4468, 4469, 4470, 4471, - 4472, 4479, 4484, 4486, 4488, 4480, 4476, 4490, 4496, 4498, - 4489, 4493, 4500, 4502, 4504, 4506, 4508, 4510, 4511, 4512, - 4514, 4515, 4513, 4523, 4516, 4517, 4530, 4526, 4519, 4531, - 4534, 4532, 4538, 4539, 4541, 4542, 4543, 6016, 4544, 4546, - 4548, 4560, 4553, 4549, 4559, 4566, 4570, 4572, 6016, 4574, - 6016, 4576, 4561, 4578, 4580, 6016, 4581, 4582, 4583, 4584, - 4585, 4586, 4588, 4587, 4591, 4592, 4595, 6016, 4598, 4593, + 4433, 4434, 4441, 6048, 4448, 6048, 4443, 4449, 4435, 4445, + 4452, 6048, 4453, 4454, 4456, 6048, 4459, 4469, 4460, 4461, + 6048, 4465, 4470, 4462, 4471, 6048, 4474, 4480, 4477, 4483, + 4484, 4485, 4486, 4491, 4492, 4487, 4495, 4494, 4497, 4504, + 4508, 4510, 4512, 4513, 4498, 4515, 4517, 4521, 4519, 4523, + 4524, 4526, 4528, 4529, 4533, 4537, 4530, 4534, 4538, 4539, + 4540, 4547, 4543, 4549, 4554, 4550, 4555, 4556, 4557, 4558, + 4561, 4564, 4562, 4568, 4572, 6048, 4566, 4567, 4573, 4574, + 4578, 4580, 4586, 4594, 4598, 4599, 6048, 4601, 6048, 4603, + 4588, 4579, 4595, 4605, 6048, 4607, 4608, 4609, 4610, 4612, - 4602, 4613, 6016, 4608, 4619, 4603, 4614, 4616, 4620, 4622, - 4624, 4625, 4626, 4628, 4630, 4637, 4633, 4634, 4636, 4638, - 4639, 4644, 4647, 4646, 4654, 4656, 4661, 6016, 4650, 6016, - 4657, 4662, 4663, 4665, 4667, 4668, 4670, 6016, 6016, 4671, - 4673, 4678, 4679, 4674, 4683, 4680, 6016, 4686, 4693, 4696, - 4687, 6016, 4690, 4698, 4699, 4703, 6016, 4704, 4706, 4707, - 4709, 4710, 4713, 4717, 4714, 4720, 4721, 4725, 6016, 6016, - 6016, 6016, 4726, 4728, 4731, 4732, 4734, 4735, 4737, 4739, - 4740, 6016, 4742, 6016, 6016, 4743, 4749, 4751, 4752, 4753, - 4756, 4758, 4760, 6016, 4759, 4764, 4766, 4762, 4773, 4779, + 4613, 4615, 4616, 4611, 4619, 4622, 6048, 4625, 4618, 4632, + 4635, 6048, 4638, 4643, 4628, 4639, 4644, 4645, 4648, 4649, + 4652, 4650, 4654, 4656, 4664, 4659, 4661, 4662, 4665, 4663, + 4671, 4673, 4672, 4680, 4682, 4686, 6048, 4675, 6048, 4687, + 4688, 4689, 4690, 4692, 4693, 4695, 6048, 6048, 4698, 4699, + 4704, 4700, 4705, 4709, 4712, 6048, 4706, 4720, 4726, 4717, + 6048, 4719, 4711, 4722, 4728, 6048, 4729, 4735, 4732, 4738, + 4733, 4740, 4743, 4745, 4746, 4747, 4750, 6048, 6048, 6048, + 6048, 4755, 4751, 4758, 4753, 4761, 4760, 4763, 4765, 4767, + 6048, 4771, 6048, 6048, 4775, 4776, 4777, 4778, 4779, 4784, - 4763, 4776, 4780, 4782, 4789, 4785, 4786, 4784, 4788, 4792, - 4795, 6016, 6016, 4796, 4802, 4803, 4811, 4807, 4808, 4820, - 4815, 4816, 4817, 4818, 4822, 4804, 4829, 4834, 4827, 4824, - 6016, 4835, 4838, 6016, 4831, 6016, 4837, 4839, 4845, 4846, - 4847, 4848, 4849, 4851, 6016, 6016, 4852, 4853, 4855, 4862, - 4858, 4866, 4854, 4865, 4867, 6016, 4868, 6016, 4870, 4872, - 4879, 4880, 4887, 4888, 4891, 4893, 4889, 4894, 6016, 4895, - 4896, 6016, 4898, 4900, 4901, 6016, 4906, 4903, 4911, 4913, - 6016, 4918, 4915, 4920, 6016, 4923, 6016, 4908, 4924, 4926, - 4933, 6016, 4930, 4934, 6016, 4937, 4940, 4941, 4942, 6016, + 4785, 4788, 6048, 4786, 4790, 4792, 4789, 4799, 4806, 4793, + 4802, 4808, 4809, 4816, 4812, 4813, 4815, 4818, 4820, 4822, + 6048, 6048, 4811, 4829, 4831, 4838, 4835, 4836, 4825, 4848, + 4843, 4844, 4845, 4846, 4850, 4851, 4859, 4862, 4852, 4855, + 6048, 4860, 4863, 6048, 4864, 6048, 4868, 4869, 4870, 4871, + 4877, 4878, 4879, 4881, 6048, 6048, 4875, 4882, 4885, 4892, + 4889, 4896, 4883, 4900, 4893, 6048, 4895, 6048, 4897, 4903, + 4914, 4901, 4915, 4922, 4924, 4920, 4921, 4906, 6048, 4923, + 4925, 6048, 4927, 4928, 4930, 6048, 4933, 4935, 4937, 4940, + 6048, 4944, 4946, 4947, 6048, 4949, 6048, 4941, 4951, 4954, - 4931, 6016, 4943, 4946, 4947, 4952, 4953, 4957, 4954, 4958, - 4959, 4966, 4962, 4965, 6016, 6016, 4978, 4964, 4970, 4971, - 4974, 4981, 4979, 4982, 4984, 6016, 6016, 4988, 6016, 4989, - 4992, 6016, 4985, 4996, 4994, 4998, 5000, 5001, 5002, 5006, - 5008, 5014, 5009, 5007, 5019, 5030, 5013, 5034, 5035, 5037, - 5039, 5041, 5015, 5043, 5044, 5020, 5045, 5047, 5049, 6016, - 5051, 5052, 5053, 6016, 5057, 5058, 5060, 5061, 6016, 5063, - 5068, 5070, 5072, 6016, 5073, 5075, 5076, 5078, 5082, 5089, - 5085, 5084, 5086, 6016, 6016, 6016, 5094, 5096, 6016, 5101, - 5092, 5102, 5103, 6016, 5104, 5105, 6016, 6016, 5107, 5109, + 4963, 6048, 4955, 4958, 6048, 4965, 4968, 4969, 4960, 6048, + 4970, 6048, 4971, 4977, 4978, 4981, 4974, 4983, 4984, 4985, + 4986, 4993, 4995, 4992, 6048, 6048, 5005, 4990, 4998, 5001, + 5002, 5012, 5007, 5010, 5016, 6048, 6048, 5017, 6048, 5011, + 5020, 6048, 5009, 5024, 5025, 5028, 5030, 5029, 5031, 5036, + 5038, 5039, 5041, 5040, 5042, 5048, 5063, 5049, 5059, 5064, + 5066, 5069, 5071, 5060, 5073, 5055, 5074, 5077, 5079, 5081, + 6048, 5083, 5084, 5080, 6048, 5089, 5085, 5091, 5097, 6048, + 5094, 5095, 5096, 5103, 6048, 5106, 5108, 5109, 5110, 5111, + 5121, 5114, 5116, 5118, 6048, 6048, 6048, 5123, 5130, 6048, - 5108, 5116, 6016, 5111, 6016, 5112, 6016, 5114, 5115, 5124, - 5122, 6016, 5129, 5135, 6016, 5138, 5141, 5143, 5144, 5126, - 5130, 5145, 6016, 5154, 5147, 5151, 5158, 5155, 5159, 5160, - 5161, 5168, 5163, 5167, 6016, 5170, 5164, 5171, 5177, 5172, - 5175, 5181, 6016, 5183, 6016, 5184, 5185, 5189, 5186, 5187, - 5192, 5194, 5199, 5196, 5206, 5200, 6016, 5208, 5210, 6016, - 5212, 6016, 5214, 6016, 5215, 5216, 5218, 5220, 6016, 5224, - 5217, 5221, 5226, 6016, 5227, 5229, 5230, 5236, 6016, 6016, - 5238, 5246, 5242, 5239, 5251, 5253, 5248, 5255, 5256, 5257, - 5259, 5269, 5241, 5264, 5262, 5271, 5272, 5277, 6016, 6016, + 5132, 5133, 5117, 5134, 6048, 5135, 5136, 6048, 6048, 5137, + 5140, 5138, 5145, 6048, 5141, 6048, 5143, 6048, 5146, 5150, + 5156, 5154, 6048, 5160, 5166, 6048, 5169, 5172, 5174, 5175, + 5159, 5161, 5176, 6048, 5183, 5182, 5185, 5189, 5178, 5186, + 5191, 5192, 5193, 5200, 5195, 5202, 6048, 5199, 5204, 5205, + 5206, 5208, 5213, 5214, 6048, 5216, 6048, 5217, 5218, 5219, + 5224, 5221, 5222, 5232, 5238, 5225, 5236, 5226, 6048, 5247, + 5249, 6048, 5229, 6048, 5253, 6048, 5239, 5242, 5244, 5254, + 6048, 5257, 5261, 5262, 5263, 6048, 5264, 5266, 5267, 5269, + 6048, 6048, 5270, 5277, 5273, 5272, 5275, 5284, 5276, 5288, - 6016, 5273, 5280, 5287, 5284, 5286, 5294, 5290, 6016, 5291, - 5292, 5293, 5301, 5298, 5303, 6016, 5299, 5304, 5305, 5306, - 5310, 5307, 5314, 6016, 5318, 5321, 5324, 5313, 5328, 5332, - 5335, 5337, 5338, 6016, 5340, 6016, 6016, 5325, 6016, 5341, - 5342, 5345, 5346, 6016, 5349, 5351, 5350, 5352, 5354, 5356, - 6016, 5366, 5357, 5359, 5368, 6016, 6016, 5372, 6016, 5375, - 5376, 5369, 5385, 5380, 5382, 5387, 5384, 6016, 5388, 5391, - 5393, 5394, 5395, 6016, 5396, 5397, 5399, 5400, 5403, 5402, - 5405, 5407, 5409, 6016, 5410, 5412, 5430, 5426, 6016, 5413, - 5425, 6016, 6016, 5435, 5437, 5358, 6016, 6016, 6016, 5440, + 5289, 5292, 5279, 5297, 5293, 5298, 5295, 5303, 5305, 5313, + 6048, 6048, 6048, 5304, 5306, 5317, 5319, 5320, 5327, 5322, + 6048, 5324, 5331, 5328, 5325, 5338, 5334, 5336, 6048, 5337, + 5339, 5341, 5342, 5346, 5343, 5347, 6048, 5354, 5359, 5360, + 5350, 5363, 5370, 5372, 5374, 5375, 6048, 5377, 6048, 6048, + 5348, 6048, 5361, 5378, 5379, 5381, 6048, 5385, 5388, 5386, + 5387, 5390, 5392, 6048, 5399, 5394, 5397, 5398, 6048, 6048, + 5405, 6048, 5408, 5410, 5395, 5417, 5412, 5413, 5419, 5420, + 6048, 5422, 5423, 5426, 5427, 5428, 6048, 5429, 5430, 5432, + 5433, 6048, 5436, 5435, 5438, 5440, 5441, 6048, 5445, 5444, - 6016, 5442, 5446, 5450, 5454, 5445, 6016, 5456, 5453, 5458, - 6016, 6016, 5457, 5459, 5460, 5462, 6016, 6016, 5463, 5466, - 5464, 5467, 5469, 6016, 5474, 5478, 5480, 5483, 5486, 5475, - 5489, 5491, 5499, 5501, 5496, 5497, 5502, 5504, 5505, 5506, - 5508, 5517, 5513, 5515, 5527, 5524, 6016, 6016, 5531, 6016, - 6016, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 6016, 5546, - 5548, 5549, 5417, 5550, 6016, 5552, 5554, 5551, 5556, 5516, - 5559, 5557, 5562, 6016, 6016, 5563, 5564, 5565, 5573, 5568, - 6016, 5575, 5582, 5579, 5580, 5577, 5583, 5584, 6016, 5588, - 5589, 6016, 6016, 5587, 6016, 6016, 6016, 6016, 6016, 6016, + 5463, 5460, 6048, 5447, 5458, 6048, 6048, 5469, 5473, 5462, + 6048, 6048, 6048, 5475, 6048, 5477, 5481, 5485, 5489, 5480, + 6048, 5491, 5470, 5492, 6048, 6048, 5493, 5494, 5495, 5497, + 6048, 6048, 5498, 5501, 5499, 5502, 5504, 6048, 5507, 5509, + 5515, 5521, 5527, 5517, 5505, 5522, 5530, 5539, 5512, 5528, + 5535, 5536, 5540, 5538, 5547, 5548, 5544, 5552, 5554, 5555, + 6048, 6048, 5559, 6048, 6048, 5562, 5564, 5566, 5568, 5570, + 5572, 5574, 6048, 5575, 5577, 5578, 5579, 5580, 6048, 5582, + 5586, 5581, 5589, 5583, 5592, 5588, 5598, 6048, 6048, 5590, + 5604, 5594, 5605, 5599, 6048, 5609, 5616, 5611, 5613, 5614, - 6016, 6016, 5592, 6016, 5590, 5605, 5607, 5609, 6016, 5597, - 5610, 5518, 5611, 5599, 6016, 5612, 5614, 5616, 5615, 5618, - 5622, 5624, 5626, 5628, 5627, 5629, 5632, 5630, 5636, 5634, - 5638, 5644, 6016, 6016, 6016, 5642, 5640, 5651, 5652, 5663, - 5664, 5667, 5669, 5653, 5657, 5670, 5671, 5674, 5659, 5675, - 5686, 5678, 5681, 5682, 5683, 5689, 5685, 5691, 5695, 6016, - 5696, 6016, 5697, 6016, 6016, 5699, 5701, 5704, 5705, 5713, - 5714, 5706, 5709, 5716, 5718, 5726, 5728, 6016, 5717, 5719, - 6016, 5729, 5730, 6016, 5721, 5731, 5732, 5733, 5737, 5740, - 5742, 5744, 5753, 6016, 6016, 5745, 5748, 5754, 5756, 5757, + 5619, 5615, 6048, 5621, 5623, 6048, 6048, 5624, 6048, 6048, + 6048, 6048, 6048, 6048, 6048, 6048, 5626, 6048, 5622, 5641, + 5643, 5645, 6048, 5628, 5638, 5630, 5636, 5646, 6048, 5648, + 5448, 5649, 5650, 5653, 5657, 5659, 5655, 5661, 5662, 5663, + 5665, 5664, 5669, 5666, 5670, 5677, 6048, 6048, 6048, 5675, + 5676, 5684, 5685, 5692, 5697, 5700, 5702, 5667, 5693, 5703, + 5704, 5705, 5695, 5707, 5714, 5711, 5712, 5716, 5715, 5718, + 5719, 5723, 5727, 6048, 5728, 6048, 5729, 6048, 6048, 5731, + 5732, 5736, 5737, 5745, 5746, 5738, 5741, 5748, 5750, 5758, + 5760, 6048, 5749, 5751, 6048, 5761, 5762, 6048, 5753, 5763, - 5764, 5760, 5763, 5767, 5769, 5770, 5777, 6016, 5776, 5778, - 5780, 6016, 5781, 5782, 5784, 5786, 5787, 5794, 5790, 5795, - 6016, 5792, 6016, 5797, 5798, 5799, 5800, 5802, 5803, 5811, - 5813, 5814, 6016, 5815, 5822, 5817, 5824, 5828, 5826, 5830, - 5820, 5833, 5835, 5842, 5846, 5843, 5847, 5834, 5851, 5838, - 6016, 5849, 5852, 6016, 5855, 5858, 5859, 5861, 5864, 6016, - 5867, 5862, 5868, 5869, 5873, 5875, 6016, 5877, 5884, 5879, - 6016, 5885, 6016, 6016, 5888, 5889, 5891, 5895, 5897, 6016, - 6016, 6016, 5924, 5931, 5938, 5945, 5952, 88, 5959, 5966, - 5973, 5980, 5987, 5994, 6001, 6008 + 5764, 5765, 5769, 5772, 5774, 5776, 5785, 6048, 6048, 5777, + 5780, 5786, 5788, 5789, 5796, 5792, 5795, 5799, 5801, 5802, + 5809, 6048, 5808, 5810, 5812, 6048, 5813, 5814, 5816, 5818, + 5819, 5826, 5822, 5827, 6048, 5824, 6048, 5829, 5830, 5831, + 5832, 5834, 5835, 5843, 5845, 5846, 6048, 5847, 5854, 5849, + 5856, 5860, 5858, 5862, 5852, 5865, 5867, 5874, 5878, 5875, + 5879, 5866, 5883, 5870, 6048, 5881, 5884, 6048, 5887, 5890, + 5891, 5893, 5896, 6048, 5899, 5894, 5900, 5901, 5905, 5907, + 6048, 5909, 5916, 5911, 6048, 5917, 6048, 6048, 5920, 5921, + 5923, 5927, 5929, 6048, 6048, 6048, 5956, 5963, 5970, 5977, + 5984, 88, 5991, 5998, 6005, 6012, 6019, 6026, 6033, 6040 } ; -static const flex_int16_t yy_def[3097] = +static const flex_int16_t yy_def[3111] = { 0, - 3082, 1, 3083, 3083, 3084, 3084, 3085, 3085, 3086, 3086, - 3087, 3087, 3082, 3088, 3082, 3082, 3082, 3082, 3089, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3090, 3082, 3082, 3082, 3090, 3091, 3082, 3082, - 3082, 3091, 3092, 3082, 3082, 3082, 3082, 3092, 3093, 3082, - 3082, 3082, 3093, 3094, 3082, 3095, 3082, 3094, 3094, 3088, - 3088, 3082, 3096, 3089, 3096, 3089, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3096, 1, 3097, 3097, 3098, 3098, 3099, 3099, 3100, 3100, + 3101, 3101, 3096, 3102, 3096, 3096, 3096, 3096, 3103, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3104, 3096, 3096, 3096, 3104, 3105, 3096, 3096, + 3096, 3105, 3106, 3096, 3096, 3096, 3096, 3106, 3107, 3096, + 3096, 3096, 3107, 3108, 3096, 3109, 3096, 3108, 3108, 3102, + 3102, 3096, 3110, 3103, 3110, 3103, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3090, 3090, 3091, 3091, 3092, 3092, 3082, 3093, 3093, - 3094, 3094, 3095, 3095, 3094, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3104, 3104, 3105, 3105, 3106, 3106, 3096, 3107, 3107, + 3108, 3108, 3109, 3109, 3108, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3096, 3102, 3108, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3082, 3082, 3088, 3088, 3082, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3108, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3096, 3102, 3096, 3096, 3102, 3102, 3096, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3108, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3096, + 3102, 3096, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, - 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3096, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3082, 3088, 3088, + 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3096, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3096, 3102, 3102, 3096, - 3088, 3088, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3096, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3082, 3082, 3082, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3082, 3082, 3082, 3082, 3082, 3082, + 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3102, 3102, + 3096, 3096, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, - 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 0, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3096, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3096, 0, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; -static const flex_int16_t yy_nxt[6057] = +static const flex_int16_t yy_nxt[6089] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1609,504 +1613,507 @@ static const flex_int16_t yy_nxt[6057] = 852, 843, 844, 850, 71, 848, 71, 71, 71, 851, 845, 854, 71, 71, 71, 858, 71, 71, 71, 71, 855, 71, 859, 860, 853, 71, 71, 71, 71, 71, - 71, 857, 873, 876, 71, 861, 872, 856, 71, 863, - 870, 71, 71, 862, 71, 871, 875, 874, 71, 864, - 71, 877, 880, 865, 71, 878, 866, 71, 882, 879, - 71, 883, 71, 867, 868, 891, 869, 71, 71, 71, + 71, 857, 874, 877, 71, 861, 873, 856, 71, 863, + 871, 71, 71, 862, 71, 872, 864, 875, 71, 865, + 876, 71, 878, 866, 71, 879, 867, 71, 883, 880, + 881, 884, 71, 868, 869, 71, 870, 71, 71, 71, - 71, 881, 71, 884, 885, 71, 886, 897, 895, 887, - 896, 71, 71, 892, 888, 3082, 893, 71, 898, 71, - 889, 890, 71, 900, 894, 71, 71, 899, 71, 902, - 901, 904, 71, 903, 71, 71, 905, 71, 907, 71, - 71, 908, 71, 71, 912, 71, 71, 906, 911, 71, - 71, 915, 71, 71, 921, 71, 919, 932, 71, 909, - 913, 910, 71, 914, 916, 917, 71, 922, 933, 71, - 71, 920, 923, 71, 918, 924, 925, 926, 71, 71, - 928, 929, 71, 71, 927, 71, 71, 71, 71, 71, - 71, 930, 71, 71, 71, 931, 934, 936, 939, 71, + 892, 882, 71, 885, 886, 71, 887, 71, 896, 888, + 897, 71, 71, 893, 889, 3096, 894, 71, 899, 898, + 890, 891, 900, 71, 895, 71, 901, 71, 902, 71, + 903, 905, 71, 71, 904, 906, 71, 71, 71, 71, + 71, 71, 909, 71, 71, 913, 71, 71, 907, 71, + 916, 912, 71, 71, 3096, 914, 908, 920, 71, 910, + 911, 915, 71, 71, 917, 918, 923, 921, 922, 71, + 71, 924, 71, 926, 919, 925, 927, 939, 71, 71, + 929, 71, 71, 928, 930, 71, 71, 71, 933, 71, + 71, 931, 934, 71, 71, 932, 71, 71, 935, 940, - 937, 71, 71, 940, 71, 942, 71, 935, 71, 938, - 941, 71, 71, 944, 71, 945, 71, 947, 71, 949, - 943, 71, 71, 948, 71, 71, 950, 71, 957, 955, - 71, 71, 946, 953, 956, 71, 951, 71, 954, 71, - 71, 71, 964, 952, 962, 958, 960, 965, 71, 71, - 959, 71, 963, 71, 71, 71, 967, 71, 71, 71, - 71, 71, 71, 961, 71, 975, 71, 978, 973, 71, - 966, 1218, 71, 71, 968, 969, 971, 970, 972, 71, - 976, 979, 71, 974, 71, 977, 71, 71, 981, 71, - 983, 980, 985, 986, 71, 71, 982, 71, 71, 71, + 71, 937, 71, 943, 938, 71, 71, 71, 71, 71, + 71, 941, 936, 942, 71, 71, 945, 946, 71, 948, + 71, 950, 71, 71, 949, 944, 71, 951, 71, 71, + 958, 71, 71, 956, 947, 954, 71, 952, 957, 71, + 71, 955, 966, 71, 71, 953, 959, 963, 71, 961, + 965, 960, 71, 71, 71, 964, 71, 71, 968, 71, + 962, 71, 71, 71, 71, 71, 71, 71, 976, 71, + 974, 71, 979, 967, 71, 969, 970, 971, 71, 981, + 980, 972, 973, 977, 71, 978, 975, 71, 982, 71, + 71, 987, 71, 984, 988, 986, 71, 71, 983, 71, - 984, 71, 71, 3082, 988, 71, 990, 995, 996, 987, - 71, 71, 998, 71, 71, 71, 1000, 989, 71, 991, - 1001, 993, 71, 992, 997, 994, 71, 71, 71, 71, - 71, 999, 1002, 71, 1003, 1006, 71, 1008, 1009, 1004, - 71, 71, 1013, 1010, 71, 71, 71, 1005, 71, 71, - 1007, 1011, 1015, 71, 1012, 71, 1018, 152, 71, 71, - 1017, 71, 1021, 1020, 1016, 1014, 71, 71, 71, 71, - 71, 1022, 1024, 1019, 71, 71, 71, 1036, 71, 71, - 71, 71, 1037, 71, 1027, 1041, 1023, 1025, 1039, 71, - 71, 71, 71, 1026, 1028, 1038, 1029, 71, 1042, 1059, + 71, 71, 71, 985, 71, 989, 996, 991, 997, 999, + 71, 71, 71, 1001, 71, 71, 1002, 990, 71, 71, + 992, 994, 71, 993, 995, 998, 71, 71, 71, 71, + 1000, 1003, 71, 1007, 71, 1009, 1010, 1004, 1005, 71, + 71, 1014, 71, 1011, 71, 1013, 1006, 71, 1016, 71, + 1008, 71, 71, 71, 1019, 152, 71, 1012, 1018, 71, + 1021, 71, 1022, 71, 1015, 71, 71, 1020, 71, 1017, + 1025, 71, 71, 71, 71, 1037, 71, 71, 71, 3096, + 1038, 1023, 71, 1024, 71, 1026, 1028, 1040, 71, 1065, + 71, 1029, 1027, 1039, 1030, 71, 1044, 71, 1031, 1043, - 1030, 71, 1031, 1182, 1040, 1043, 1032, 71, 1033, 71, - 71, 1046, 1044, 1034, 1049, 1045, 1047, 71, 1035, 71, - 71, 71, 71, 1048, 71, 1052, 1050, 1055, 71, 71, - 71, 1061, 71, 1054, 1051, 1053, 1060, 71, 1056, 1062, - 1063, 71, 1064, 1058, 1065, 71, 71, 71, 71, 1057, - 71, 71, 71, 71, 1066, 71, 71, 1077, 71, 71, - 1080, 1081, 71, 1076, 71, 1067, 1068, 71, 1069, 1078, - 1079, 71, 1082, 1070, 1144, 1071, 1083, 71, 1086, 71, - 71, 1072, 1088, 71, 1087, 71, 1073, 1074, 71, 71, - 1084, 1092, 1089, 1075, 71, 71, 1085, 71, 1091, 1093, + 1032, 1042, 1041, 71, 1033, 71, 1034, 1047, 1045, 71, + 71, 1035, 1048, 71, 71, 71, 1036, 71, 1049, 1046, + 1054, 1051, 71, 71, 1050, 71, 71, 71, 1057, 1053, + 1055, 71, 71, 1052, 1056, 71, 1063, 1064, 1062, 1058, + 1061, 1060, 71, 71, 1066, 1067, 71, 1059, 71, 71, + 71, 71, 71, 71, 3096, 71, 71, 1068, 1079, 71, + 1082, 1083, 1078, 71, 1081, 1069, 1070, 71, 1071, 1080, + 71, 1084, 71, 1072, 1090, 1073, 71, 1088, 71, 71, + 71, 1074, 71, 1089, 1085, 1091, 1075, 1076, 71, 71, + 1094, 1086, 71, 1077, 71, 1087, 71, 1095, 71, 71, - 71, 71, 1090, 71, 71, 1098, 71, 71, 71, 1095, - 1096, 71, 1101, 1099, 1094, 71, 71, 71, 71, 1097, - 71, 71, 71, 71, 71, 1100, 1106, 1108, 1102, 1103, - 1105, 1107, 1110, 71, 71, 71, 1104, 1109, 71, 1111, - 71, 71, 3082, 71, 1113, 71, 71, 1112, 1118, 1115, - 1119, 1120, 71, 1114, 71, 1122, 1117, 1123, 1116, 71, - 71, 1121, 1126, 71, 71, 71, 1128, 1127, 71, 1129, - 71, 71, 1124, 1130, 71, 71, 1125, 1137, 1131, 71, - 71, 71, 1139, 71, 71, 71, 71, 3082, 71, 71, - 1133, 1132, 1135, 1134, 1141, 1136, 71, 1150, 71, 1140, + 71, 71, 1093, 71, 1100, 71, 71, 1092, 1097, 1098, + 71, 1103, 1101, 1096, 1099, 71, 71, 71, 71, 71, + 1102, 71, 71, 71, 71, 1104, 1108, 1110, 1109, 1105, + 1107, 1112, 71, 71, 71, 71, 1106, 71, 3096, 1111, + 1113, 71, 71, 1115, 71, 71, 1114, 1120, 1117, 1121, + 1122, 71, 1116, 1118, 71, 1124, 1119, 1125, 71, 71, + 1123, 1128, 71, 71, 71, 1130, 1129, 71, 1131, 71, + 71, 1126, 1132, 71, 71, 1127, 1133, 1139, 71, 71, + 71, 1141, 71, 71, 71, 71, 3096, 71, 71, 1135, + 1134, 1137, 1136, 1143, 1138, 71, 71, 1142, 1144, 1145, - 1142, 1138, 71, 1145, 71, 1143, 71, 71, 71, 1146, - 71, 1148, 1147, 1149, 71, 1154, 1151, 1155, 71, 71, - 1153, 71, 71, 1152, 71, 71, 1159, 1158, 1156, 71, - 71, 71, 71, 71, 71, 1163, 1165, 1166, 1170, 1167, - 1157, 71, 71, 71, 71, 71, 1164, 1160, 71, 1161, - 1168, 1162, 71, 1169, 1173, 71, 71, 1175, 71, 1171, - 71, 1174, 71, 71, 1176, 71, 71, 71, 71, 1180, - 1181, 1177, 1172, 71, 71, 71, 1186, 1187, 1190, 71, - 71, 1178, 71, 71, 1179, 1184, 1183, 71, 71, 71, - 1188, 1194, 1189, 1185, 71, 71, 71, 71, 71, 1191, + 1140, 71, 71, 71, 71, 71, 1146, 1147, 1148, 1150, + 1151, 1149, 71, 1152, 71, 71, 1156, 71, 1153, 1157, + 71, 1155, 71, 71, 71, 71, 1158, 1160, 71, 1161, + 1154, 71, 71, 71, 71, 71, 1165, 71, 1167, 1168, + 1169, 1159, 1170, 1162, 71, 71, 71, 1166, 1172, 71, + 1163, 1171, 1164, 71, 71, 1175, 71, 71, 1177, 71, + 71, 71, 1176, 71, 71, 1178, 71, 1173, 71, 1179, + 71, 1182, 71, 1174, 71, 1183, 71, 1184, 1188, 1189, + 71, 1180, 71, 1181, 71, 71, 1186, 71, 1185, 1192, + 71, 71, 1191, 71, 71, 1187, 1196, 1190, 71, 1193, - 71, 1193, 1192, 1200, 71, 1196, 71, 71, 71, 71, - 1206, 71, 1195, 1204, 71, 71, 1197, 1221, 71, 1199, - 1201, 1203, 1202, 1198, 1205, 1208, 1209, 71, 71, 1211, - 71, 71, 71, 1210, 1207, 1212, 71, 71, 71, 71, - 71, 71, 71, 1215, 71, 71, 71, 71, 71, 71, - 1213, 1214, 1225, 1251, 1216, 71, 1219, 3082, 1222, 1217, - 1227, 1220, 1224, 1223, 71, 1231, 71, 71, 1226, 1228, - 71, 1229, 1232, 1234, 1230, 1233, 71, 71, 71, 71, - 1236, 71, 71, 71, 1235, 71, 71, 1240, 1239, 71, - 1243, 71, 1246, 71, 71, 3082, 71, 1237, 1242, 1238, + 71, 71, 71, 71, 71, 1194, 1195, 1198, 1202, 71, + 71, 1197, 71, 71, 71, 1208, 71, 71, 1203, 1206, + 1199, 3096, 1201, 1210, 1205, 1204, 1207, 1200, 1211, 71, + 71, 71, 71, 1209, 71, 1212, 71, 1214, 1213, 71, + 71, 71, 71, 71, 71, 1215, 1217, 71, 1223, 71, + 1220, 71, 71, 1216, 71, 1218, 71, 71, 71, 1221, + 71, 1219, 1227, 1235, 1233, 1224, 1222, 71, 71, 1226, + 1225, 71, 1229, 71, 1234, 1236, 71, 1228, 1237, 71, + 71, 1230, 1238, 1231, 71, 71, 1232, 1239, 71, 1242, + 71, 71, 71, 1243, 71, 71, 1246, 71, 1240, 1249, - 1244, 1247, 1241, 71, 71, 71, 71, 71, 1248, 1250, - 1245, 71, 71, 71, 1249, 1252, 71, 71, 71, 71, - 1253, 71, 1254, 1258, 1256, 71, 71, 71, 1257, 1259, - 1255, 1263, 71, 71, 71, 71, 71, 1260, 1268, 1262, - 1261, 1264, 1267, 1270, 71, 71, 71, 1265, 1269, 1274, - 1272, 71, 1266, 71, 1275, 71, 1271, 71, 1273, 71, - 71, 1279, 71, 1288, 71, 1289, 1287, 1277, 71, 71, - 1276, 71, 1278, 71, 1292, 1286, 1290, 1291, 1280, 71, - 71, 1281, 1282, 71, 1293, 71, 1283, 71, 1294, 71, - 1295, 71, 1284, 71, 1297, 71, 1285, 71, 1298, 71, + 71, 71, 1250, 1241, 1245, 1247, 1251, 71, 71, 1244, + 71, 71, 71, 1253, 1248, 1254, 71, 71, 71, 1255, + 71, 71, 71, 71, 1259, 71, 71, 1252, 1261, 71, + 71, 1256, 1257, 71, 1262, 1260, 1266, 1258, 71, 1271, + 71, 71, 1263, 71, 1265, 71, 1264, 71, 1267, 1268, + 1270, 1273, 71, 71, 1272, 1277, 71, 1275, 1269, 71, + 1278, 71, 71, 71, 1291, 1276, 71, 1274, 71, 1282, + 71, 1290, 3096, 1280, 71, 1279, 1281, 71, 71, 1289, + 71, 1292, 1283, 1293, 71, 1284, 1285, 71, 1295, 71, + 1286, 71, 1296, 1294, 71, 1299, 1287, 71, 71, 1298, - 1299, 71, 71, 71, 1316, 71, 1296, 1300, 1302, 1301, - 1304, 71, 1307, 1308, 71, 1305, 1309, 1303, 71, 71, - 1306, 71, 71, 1311, 71, 1310, 1317, 1318, 1312, 71, - 1313, 71, 1314, 1319, 1315, 1320, 71, 71, 1324, 1321, - 71, 71, 71, 1325, 71, 71, 1323, 1328, 71, 1326, - 71, 71, 71, 71, 1322, 1334, 71, 1330, 71, 1329, - 71, 71, 71, 1327, 71, 1335, 1333, 1337, 1336, 1331, - 1332, 71, 1339, 71, 1341, 71, 1338, 1344, 71, 71, - 1343, 71, 1340, 1346, 71, 71, 71, 1342, 1347, 71, - 1349, 71, 1348, 71, 1345, 1352, 71, 1354, 71, 71, + 1288, 71, 1297, 71, 1300, 71, 71, 71, 1301, 1303, + 1302, 1306, 1307, 71, 71, 1305, 1310, 1311, 71, 1304, + 71, 71, 71, 71, 71, 1312, 71, 1308, 1313, 1322, + 1314, 71, 1309, 71, 1319, 1315, 71, 1316, 71, 1317, + 1323, 1318, 1320, 1321, 1325, 71, 1324, 1326, 1327, 71, + 71, 71, 71, 1328, 71, 71, 1331, 71, 1329, 71, + 71, 1337, 71, 1338, 1333, 71, 1332, 71, 71, 71, + 71, 71, 1330, 1339, 1336, 1341, 1334, 71, 1335, 71, + 1343, 71, 1340, 1342, 1347, 71, 1346, 71, 1349, 71, + 71, 71, 1350, 71, 1351, 1344, 71, 71, 1352, 1355, - 1350, 71, 1351, 71, 1355, 71, 1356, 1359, 71, 71, - 71, 1353, 71, 1361, 71, 71, 71, 71, 1365, 1363, - 1357, 71, 71, 71, 1364, 1367, 1358, 71, 1369, 1360, - 71, 71, 1362, 71, 3082, 1366, 1368, 71, 1371, 1372, - 71, 1370, 1373, 71, 1375, 1374, 71, 71, 1377, 71, - 71, 1376, 1381, 1378, 1382, 1384, 1379, 71, 71, 71, - 71, 71, 1383, 1380, 71, 71, 1388, 71, 1385, 71, - 71, 71, 1392, 1393, 71, 1395, 1387, 71, 71, 71, - 1394, 71, 71, 1386, 71, 71, 71, 71, 1402, 1389, - 1390, 1396, 71, 71, 1391, 71, 1399, 1397, 71, 1400, + 71, 71, 1348, 71, 1345, 71, 1354, 1357, 71, 71, + 1358, 71, 1362, 71, 71, 1353, 1359, 71, 71, 71, + 1364, 1356, 71, 71, 1360, 1368, 1361, 1366, 1367, 71, + 71, 71, 71, 1370, 1363, 71, 71, 1372, 1365, 71, + 71, 1374, 71, 1378, 1376, 71, 1371, 1369, 1375, 1373, + 1377, 71, 71, 71, 71, 71, 1379, 1384, 1385, 1381, + 71, 1382, 71, 71, 71, 1386, 1387, 71, 1383, 71, + 1380, 1388, 71, 1391, 71, 71, 71, 71, 1395, 1396, + 1390, 71, 1398, 71, 71, 71, 1389, 1397, 71, 71, + 71, 71, 71, 71, 1405, 1392, 1393, 1399, 71, 71, - 1407, 71, 1398, 1406, 1401, 71, 71, 71, 71, 1411, - 71, 1409, 1403, 1405, 1412, 71, 71, 1414, 1404, 71, - 71, 71, 3082, 71, 1416, 71, 1410, 1415, 1408, 71, - 1420, 1422, 1424, 1421, 1413, 1417, 1418, 1423, 71, 1419, - 71, 71, 1427, 71, 1425, 71, 71, 1428, 71, 71, - 71, 71, 1426, 71, 1432, 1433, 71, 71, 1435, 71, - 71, 71, 1429, 71, 1431, 71, 1440, 1441, 71, 1434, - 71, 1430, 71, 1437, 1444, 1438, 1436, 71, 1439, 1442, - 71, 71, 1445, 71, 71, 71, 71, 1443, 71, 71, - 1451, 1446, 1448, 1452, 1453, 1447, 71, 71, 1449, 71, + 1394, 71, 1402, 1400, 71, 1403, 71, 1410, 71, 1401, + 1404, 1409, 71, 71, 71, 1414, 71, 1412, 1406, 1408, + 1415, 71, 71, 1417, 1407, 71, 71, 1411, 71, 71, + 1418, 71, 1413, 1426, 1416, 71, 71, 71, 1425, 1419, + 1429, 1420, 1423, 1421, 1428, 1424, 1422, 71, 1431, 1427, + 71, 71, 71, 1432, 71, 71, 71, 71, 1430, 71, + 71, 1436, 1437, 71, 71, 1439, 71, 71, 71, 1444, + 1433, 71, 71, 1435, 71, 1445, 71, 1438, 1434, 71, + 1441, 1448, 1442, 1440, 71, 1443, 71, 71, 1449, 71, + 1446, 71, 71, 1447, 71, 71, 71, 1455, 1450, 1452, - 1456, 71, 71, 1450, 71, 1455, 1454, 1458, 1461, 1460, - 1462, 71, 1457, 71, 71, 1466, 71, 71, 1463, 71, - 1464, 1465, 71, 1459, 71, 71, 71, 71, 71, 1472, - 71, 1468, 71, 1467, 1471, 71, 71, 71, 1478, 1469, - 1474, 1470, 1475, 1479, 71, 71, 1480, 71, 1483, 1476, - 1473, 1481, 71, 71, 71, 1477, 71, 71, 71, 71, - 71, 1487, 1491, 71, 71, 1482, 1486, 71, 71, 1492, - 1494, 71, 1484, 1485, 71, 1497, 71, 1488, 1490, 1489, - 1496, 71, 71, 71, 71, 71, 1495, 71, 71, 1493, - 1498, 71, 71, 1505, 71, 1508, 71, 1506, 71, 1502, + 1451, 1456, 71, 71, 1453, 1459, 71, 1457, 71, 1460, + 1454, 71, 1462, 1458, 71, 1465, 1466, 71, 1461, 1464, + 71, 71, 71, 71, 1467, 71, 1468, 1469, 71, 71, + 71, 71, 1463, 1470, 1473, 1472, 71, 71, 1476, 1471, + 71, 71, 71, 1475, 71, 71, 1474, 1479, 1482, 1478, + 1484, 71, 3096, 1483, 71, 1485, 71, 71, 1480, 71, + 1477, 71, 1487, 71, 1481, 71, 71, 71, 71, 1495, + 1491, 1486, 1490, 71, 71, 71, 1488, 1498, 1489, 1496, + 71, 71, 71, 71, 1501, 1492, 1494, 1493, 1500, 71, + 71, 71, 71, 71, 1506, 71, 71, 1509, 71, 1497, - 1507, 1499, 1500, 1501, 1509, 71, 1504, 71, 1503, 71, - 71, 1512, 1510, 1511, 71, 71, 71, 1515, 71, 1513, - 71, 1516, 71, 71, 71, 1519, 1525, 1514, 1523, 71, - 71, 1520, 71, 71, 1517, 1524, 1518, 1527, 71, 1522, - 71, 71, 1521, 1528, 1529, 1530, 71, 71, 1526, 71, - 1534, 1535, 71, 71, 71, 71, 71, 71, 1539, 71, - 1538, 1540, 1542, 71, 71, 1532, 1531, 71, 71, 1533, - 71, 1536, 71, 1543, 71, 1537, 1544, 71, 71, 1541, - 1545, 1547, 71, 1549, 1546, 71, 1550, 71, 71, 71, - 71, 71, 1548, 71, 1554, 71, 1556, 1551, 71, 71, + 1499, 71, 71, 71, 1510, 1512, 71, 1515, 1502, 71, + 1503, 1504, 1505, 1508, 1511, 71, 1507, 1513, 71, 71, + 1514, 71, 1516, 71, 71, 1519, 71, 71, 1517, 1520, + 71, 71, 1523, 71, 1518, 1527, 71, 1529, 1528, 1524, + 71, 71, 1521, 71, 1522, 71, 71, 1526, 71, 1533, + 1525, 1532, 1534, 71, 1531, 1530, 71, 71, 1538, 1539, + 71, 71, 71, 71, 71, 71, 1543, 71, 1542, 1544, + 1546, 71, 71, 1535, 1536, 71, 71, 1537, 71, 1540, + 71, 1547, 71, 1541, 1548, 71, 71, 1545, 1549, 1551, + 71, 1553, 1550, 71, 1554, 71, 71, 71, 71, 71, - 1557, 71, 1561, 71, 1555, 71, 71, 1553, 1552, 71, - 71, 1558, 71, 1559, 1564, 1566, 71, 1562, 71, 71, - 1569, 1565, 1567, 1563, 1560, 71, 71, 71, 71, 71, - 1568, 1572, 71, 1574, 1570, 71, 1571, 1575, 71, 71, - 71, 71, 1582, 71, 71, 1573, 1577, 1576, 1583, 71, - 71, 71, 71, 1580, 1578, 1579, 1587, 71, 71, 1586, - 1589, 1591, 1590, 71, 1584, 1581, 71, 71, 1593, 1585, - 1595, 71, 1588, 71, 71, 71, 71, 71, 71, 1600, - 1594, 1597, 1598, 1592, 71, 1601, 71, 71, 71, 71, - 71, 1612, 1596, 1605, 71, 1606, 71, 71, 71, 71, + 1552, 71, 1558, 71, 1560, 1555, 71, 71, 1561, 71, + 1565, 71, 1559, 71, 71, 1557, 1556, 71, 71, 1562, + 71, 1563, 1568, 1570, 71, 1566, 71, 71, 1573, 1569, + 1571, 1567, 1564, 71, 71, 71, 71, 71, 1572, 1576, + 71, 1578, 1574, 71, 1575, 1579, 71, 71, 71, 71, + 1586, 71, 71, 1577, 1581, 1580, 1587, 71, 71, 71, + 71, 1584, 1582, 1583, 1591, 71, 71, 1590, 1593, 1595, + 1594, 71, 1588, 1585, 71, 71, 1597, 1589, 1599, 71, + 1592, 71, 71, 71, 71, 71, 71, 1604, 1598, 1601, + 1602, 1596, 71, 1605, 71, 71, 71, 71, 71, 71, - 1599, 1602, 1609, 1604, 1603, 1610, 71, 71, 1607, 1608, - 1614, 1613, 71, 71, 1620, 71, 71, 1611, 1617, 1619, - 71, 1616, 1621, 1618, 71, 1622, 1615, 1625, 71, 71, - 1623, 71, 1624, 71, 71, 71, 71, 1627, 71, 1626, - 71, 1632, 1633, 1631, 71, 1635, 71, 71, 71, 1634, - 71, 71, 71, 1628, 71, 1629, 71, 1637, 1630, 1638, - 71, 1639, 71, 71, 71, 1647, 71, 71, 1640, 1636, - 71, 71, 71, 71, 1641, 71, 71, 1643, 1644, 1645, - 1652, 71, 1642, 1646, 71, 71, 1648, 1650, 71, 1655, - 1654, 1656, 1649, 71, 71, 71, 1651, 71, 71, 71, + 1600, 1609, 71, 1610, 71, 71, 3096, 71, 1603, 1606, + 1614, 1608, 1607, 1615, 1617, 1611, 1612, 71, 71, 1613, + 71, 1619, 1618, 71, 71, 1616, 1625, 71, 71, 1622, + 1623, 1624, 1621, 1626, 71, 71, 71, 1620, 71, 71, + 1627, 71, 1628, 71, 1629, 1630, 71, 71, 71, 1632, + 3096, 71, 1631, 1634, 71, 1637, 1633, 1636, 1638, 71, + 71, 71, 1640, 71, 71, 1639, 1635, 71, 71, 1643, + 71, 1641, 1642, 71, 71, 71, 71, 1645, 1644, 71, + 71, 1652, 71, 1646, 71, 71, 71, 71, 71, 1648, + 1649, 1650, 71, 1651, 1647, 1657, 71, 1659, 71, 1655, - 71, 71, 71, 71, 1653, 1662, 1660, 1657, 71, 1663, - 1670, 71, 1664, 1659, 1661, 1672, 71, 1665, 1658, 1669, - 1671, 71, 71, 1666, 1675, 71, 71, 1668, 1667, 1674, - 71, 71, 71, 71, 71, 71, 71, 1678, 1679, 71, - 1673, 71, 1687, 1676, 71, 1682, 71, 71, 71, 71, - 1677, 1681, 71, 1680, 1690, 1686, 1684, 71, 1683, 1685, - 1688, 71, 71, 71, 1689, 71, 1692, 1691, 71, 1697, - 71, 71, 71, 1693, 1694, 71, 1701, 1700, 71, 71, - 1699, 71, 71, 1696, 1705, 71, 1698, 1709, 1695, 71, - 1702, 1703, 1710, 71, 1704, 71, 1706, 71, 71, 3082, + 71, 1660, 1653, 71, 1654, 71, 71, 1656, 1658, 71, + 71, 71, 71, 1661, 71, 71, 71, 1662, 1665, 1667, + 1668, 1675, 71, 1669, 1664, 1666, 1676, 71, 71, 1663, + 1670, 1671, 71, 71, 71, 1674, 1672, 1679, 1680, 71, + 1673, 71, 71, 71, 71, 1677, 1678, 71, 1683, 1684, + 71, 71, 71, 71, 1681, 71, 71, 1692, 71, 1687, + 71, 1682, 1689, 71, 1691, 1690, 1685, 1686, 1693, 71, + 71, 1688, 1697, 1695, 71, 71, 1694, 71, 71, 71, + 1702, 71, 71, 71, 71, 71, 1706, 1699, 1696, 1705, + 1698, 1704, 1708, 71, 71, 1709, 1701, 1703, 1710, 71, - 71, 1715, 1707, 1708, 1712, 1714, 1718, 71, 71, 1711, - 1717, 71, 71, 1719, 1720, 71, 1716, 71, 71, 1713, - 71, 1721, 1724, 71, 71, 1728, 71, 1726, 71, 71, - 71, 71, 1723, 1727, 1729, 71, 1725, 1722, 71, 71, - 71, 71, 71, 1732, 1738, 71, 71, 1733, 1730, 1731, - 71, 1740, 1734, 1735, 1741, 1736, 1737, 71, 71, 1742, - 71, 1743, 71, 71, 71, 1748, 1739, 71, 71, 71, - 1744, 71, 1752, 71, 71, 71, 1745, 1747, 71, 1754, - 71, 71, 1746, 1755, 1750, 1756, 1757, 1751, 71, 1749, - 71, 71, 1761, 71, 1753, 71, 71, 1758, 71, 1765, + 1707, 71, 1700, 1714, 71, 71, 71, 1720, 1715, 71, + 71, 71, 1711, 71, 71, 1719, 1722, 71, 1716, 1713, + 1712, 1717, 1723, 71, 71, 71, 1725, 1718, 71, 1721, + 1724, 71, 71, 1729, 1727, 1733, 1730, 1726, 1728, 71, + 71, 71, 71, 1731, 71, 71, 71, 71, 71, 1732, + 1734, 3096, 71, 71, 1737, 71, 1738, 1743, 71, 71, + 1745, 1739, 1746, 1735, 1736, 1740, 71, 1741, 71, 1742, + 1748, 71, 1747, 71, 71, 71, 71, 1753, 71, 1744, + 71, 71, 71, 71, 1757, 71, 71, 71, 71, 1752, + 1759, 3096, 1750, 1749, 1751, 71, 1755, 1763, 71, 1756, - 71, 71, 71, 71, 71, 71, 1760, 71, 1763, 1767, - 71, 71, 1772, 1759, 1762, 1766, 1768, 1764, 71, 1769, - 71, 71, 1770, 1773, 1777, 1771, 1775, 71, 1774, 1776, - 71, 1778, 71, 71, 1781, 71, 1780, 71, 1779, 1784, - 71, 1782, 71, 71, 71, 71, 1785, 1783, 71, 71, - 71, 71, 71, 71, 1790, 71, 71, 1794, 71, 71, - 1791, 3082, 71, 1800, 1786, 1792, 1788, 1787, 1789, 71, - 1793, 1795, 71, 1803, 1798, 71, 1797, 1802, 71, 71, - 1804, 1799, 71, 71, 1796, 71, 71, 1801, 1808, 71, - 1811, 1812, 71, 71, 1805, 1813, 71, 71, 1806, 1809, + 1754, 71, 1758, 1760, 71, 71, 1761, 1766, 71, 1762, + 1764, 71, 71, 71, 1767, 1770, 71, 71, 71, 71, + 1765, 71, 71, 1768, 1772, 71, 1777, 1771, 71, 71, + 1773, 1769, 71, 1774, 71, 1780, 3096, 1778, 1775, 1781, + 71, 71, 1776, 1785, 1782, 71, 1779, 1783, 71, 1786, + 1784, 1787, 71, 71, 71, 71, 1789, 71, 71, 71, + 1790, 71, 71, 71, 71, 1788, 71, 71, 1795, 1796, + 71, 71, 1800, 71, 71, 1797, 71, 3096, 1791, 1793, + 1794, 1792, 1798, 1801, 71, 71, 1799, 1808, 71, 1806, + 1804, 1807, 1809, 1803, 71, 71, 1802, 1805, 71, 71, - 71, 1810, 71, 1807, 1815, 71, 71, 1816, 1819, 71, - 71, 1821, 71, 1814, 1820, 1822, 1823, 71, 1817, 1825, - 1824, 1818, 71, 71, 71, 71, 1830, 1827, 1828, 71, - 71, 1829, 71, 71, 71, 71, 1837, 71, 1839, 71, - 71, 71, 71, 1840, 71, 1831, 1832, 1833, 1826, 71, - 71, 1842, 1834, 1841, 1835, 1836, 1844, 1838, 1845, 71, - 1847, 1843, 71, 71, 71, 1849, 71, 71, 1846, 71, - 1851, 71, 71, 1854, 1855, 71, 71, 1857, 71, 71, - 71, 71, 71, 1848, 1863, 71, 1862, 1852, 71, 1850, - 1859, 1860, 71, 1853, 71, 71, 1856, 71, 71, 71, + 71, 71, 71, 1814, 71, 71, 1817, 1818, 71, 1819, + 71, 1821, 71, 71, 1811, 1810, 1812, 71, 1815, 1813, + 1816, 71, 1820, 71, 1822, 1825, 71, 71, 71, 1827, + 71, 1826, 71, 1828, 1823, 71, 1829, 1831, 1824, 1830, + 71, 71, 71, 71, 1833, 1834, 71, 71, 1835, 1836, + 71, 1843, 1841, 1832, 71, 71, 71, 71, 3096, 71, + 1842, 1845, 1837, 1838, 1839, 71, 1846, 71, 71, 1840, + 1847, 71, 1851, 1848, 1844, 71, 1849, 71, 71, 1853, + 1855, 71, 71, 1850, 1852, 71, 1857, 71, 71, 71, + 1860, 1861, 71, 71, 1863, 71, 71, 71, 1854, 71, - 1869, 1861, 71, 1867, 1858, 1866, 71, 71, 1873, 1864, - 1865, 71, 1872, 71, 71, 1876, 1878, 71, 1877, 71, - 1875, 71, 1871, 1868, 71, 71, 71, 71, 1870, 71, - 1879, 1874, 71, 71, 71, 1880, 1884, 71, 1887, 1881, - 71, 1883, 1888, 1889, 71, 71, 1882, 71, 71, 71, - 1885, 1892, 71, 71, 71, 1891, 1897, 71, 1896, 71, - 1886, 71, 71, 71, 1890, 1894, 1901, 1893, 71, 1902, - 1904, 71, 71, 1898, 1895, 71, 1899, 1903, 1900, 1905, - 1908, 71, 71, 1906, 71, 71, 71, 71, 1907, 71, - 1915, 1912, 71, 71, 1918, 71, 71, 1917, 1910, 71, + 71, 1869, 71, 71, 71, 1868, 1865, 1858, 1856, 1866, + 1859, 71, 71, 1862, 71, 71, 71, 1875, 71, 1871, + 1867, 1864, 1872, 1873, 1870, 71, 71, 1879, 71, 71, + 71, 1878, 71, 71, 1882, 1885, 1881, 1883, 1874, 71, + 71, 1877, 71, 71, 1876, 1884, 71, 71, 1880, 71, + 71, 1886, 1887, 1890, 71, 71, 1893, 1894, 1888, 1889, + 1895, 71, 71, 71, 71, 71, 71, 1891, 1898, 71, + 71, 1903, 71, 71, 71, 1902, 71, 1897, 71, 71, + 1892, 1896, 1907, 71, 1899, 1900, 71, 71, 1909, 1905, + 1911, 1901, 1904, 1908, 1912, 1906, 1910, 71, 71, 1913, - 1919, 71, 71, 1909, 1911, 1920, 71, 1913, 1916, 1914, - 71, 1921, 1925, 71, 1926, 71, 71, 1922, 1927, 1929, - 1930, 71, 1923, 1928, 71, 71, 71, 71, 1934, 71, - 1924, 71, 1932, 1933, 71, 1936, 71, 71, 1939, 71, - 1941, 1935, 1931, 71, 71, 71, 71, 71, 1937, 71, - 71, 71, 1947, 1946, 1945, 1942, 71, 1943, 1948, 71, - 3082, 1940, 1938, 1949, 71, 1951, 1944, 71, 71, 71, - 71, 71, 71, 1952, 1953, 1956, 1950, 1955, 1954, 71, - 71, 71, 1957, 71, 1959, 71, 71, 1963, 71, 71, - 71, 1962, 1958, 1960, 71, 1965, 71, 1961, 1964, 1966, + 1914, 71, 71, 71, 71, 71, 71, 1921, 71, 1918, + 71, 1924, 71, 71, 71, 1923, 1916, 71, 1925, 1915, + 71, 71, 1917, 1922, 1926, 1919, 1920, 71, 1931, 71, + 1927, 1932, 71, 1935, 1930, 1933, 1936, 71, 1928, 71, + 1934, 71, 71, 1929, 71, 71, 1940, 71, 71, 1938, + 71, 71, 71, 71, 1942, 1945, 1947, 1939, 71, 1941, + 1943, 71, 71, 1937, 71, 71, 71, 71, 1953, 71, + 1948, 1951, 1952, 1954, 71, 1946, 1944, 1949, 1955, 71, + 71, 1957, 71, 1950, 71, 71, 71, 71, 1958, 1959, + 71, 1960, 71, 1963, 71, 1961, 71, 1962, 71, 1965, - 1967, 71, 71, 71, 71, 71, 71, 71, 1974, 1972, - 71, 1969, 1973, 71, 71, 71, 1968, 71, 71, 1976, - 71, 1970, 71, 1971, 1975, 71, 1979, 1982, 3082, 1978, - 71, 1977, 71, 1983, 1985, 1981, 71, 1980, 71, 1984, - 71, 1986, 71, 1987, 1989, 71, 71, 71, 71, 1988, - 1990, 1995, 71, 71, 1997, 71, 1991, 71, 1992, 1999, - 71, 1993, 1994, 71, 71, 1998, 71, 71, 2003, 1996, - 71, 71, 2000, 2001, 71, 2002, 71, 71, 71, 2004, - 71, 71, 71, 71, 71, 71, 2006, 2011, 2007, 2008, - 2015, 71, 2005, 71, 71, 2010, 2014, 2018, 2019, 71, + 1956, 71, 71, 1969, 71, 71, 1964, 1968, 1966, 71, + 71, 71, 1973, 1967, 1970, 1971, 1972, 1974, 71, 71, + 71, 71, 71, 71, 1981, 1979, 71, 71, 71, 1976, + 71, 1980, 71, 71, 71, 1986, 71, 1983, 71, 1975, + 1977, 3096, 1978, 71, 71, 1982, 1987, 1985, 71, 1990, + 1984, 71, 1989, 1991, 1988, 71, 71, 1996, 71, 1993, + 1994, 71, 71, 1992, 1997, 71, 71, 71, 2002, 1995, + 71, 71, 2004, 71, 71, 2005, 2006, 71, 1998, 71, + 2001, 1999, 2000, 71, 71, 71, 2008, 2003, 71, 2010, + 71, 2007, 71, 71, 2011, 71, 71, 71, 71, 71, - 2012, 2016, 2013, 71, 2009, 2017, 71, 71, 2021, 2022, - 71, 71, 71, 71, 71, 2024, 71, 71, 2025, 2020, - 71, 2026, 2030, 2028, 2023, 71, 71, 2032, 2029, 2034, - 71, 2027, 71, 71, 71, 71, 2031, 2037, 2036, 2038, - 2033, 71, 71, 71, 2042, 71, 2039, 71, 71, 71, - 71, 71, 2043, 2045, 2048, 71, 71, 2049, 2035, 71, - 2040, 2044, 71, 2041, 2052, 2047, 71, 71, 2046, 2054, - 71, 2053, 71, 71, 2050, 2058, 71, 71, 2060, 71, - 71, 2056, 2051, 71, 2061, 71, 71, 71, 71, 2057, - 2055, 2059, 2063, 71, 2062, 2067, 2069, 2065, 2064, 71, + 71, 71, 2022, 71, 2009, 2013, 2018, 2014, 2015, 71, + 2021, 2012, 2017, 71, 71, 71, 2025, 2023, 2016, 2019, + 2026, 2020, 71, 71, 71, 2029, 71, 2028, 71, 2024, + 71, 2031, 71, 71, 2027, 2032, 71, 71, 71, 2033, + 2037, 71, 2030, 2039, 71, 2035, 2041, 71, 71, 2036, + 2034, 71, 2038, 71, 71, 2044, 2043, 71, 2040, 2045, + 71, 71, 2046, 2049, 71, 71, 71, 71, 71, 71, + 2050, 2055, 71, 71, 2042, 2052, 71, 2051, 2047, 71, + 2056, 2048, 2054, 2059, 71, 2053, 71, 71, 2057, 71, + 71, 2060, 2061, 2065, 71, 2063, 2058, 71, 71, 2067, - 2066, 2070, 71, 71, 71, 71, 71, 2068, 2071, 71, - 2074, 2075, 71, 71, 71, 2072, 2073, 2079, 71, 71, - 71, 71, 2076, 2078, 71, 71, 71, 71, 71, 71, - 71, 2080, 2077, 71, 2088, 2083, 2082, 2081, 2085, 2084, - 2086, 71, 2090, 71, 71, 2087, 2089, 71, 71, 2091, - 2093, 71, 2097, 2094, 2099, 71, 71, 71, 2101, 71, - 2098, 71, 2092, 2095, 71, 2096, 2100, 71, 2103, 3082, - 71, 2106, 2104, 2108, 2105, 2102, 2107, 71, 2109, 71, - 71, 71, 71, 2110, 71, 2113, 71, 71, 2114, 2111, - 2112, 2117, 2118, 71, 71, 2119, 71, 71, 2122, 71, + 71, 2068, 2062, 2064, 71, 71, 71, 71, 71, 2066, + 2070, 71, 71, 2069, 2074, 2076, 2072, 71, 71, 2073, + 2077, 71, 71, 2079, 2071, 71, 2078, 2081, 71, 2075, + 2080, 71, 71, 2082, 2086, 71, 71, 71, 2083, 71, + 71, 2085, 71, 71, 71, 71, 71, 71, 71, 2095, + 2096, 2084, 71, 2090, 2087, 2088, 2089, 2091, 2092, 2093, + 71, 2097, 71, 2094, 71, 71, 2098, 71, 2100, 71, + 71, 2101, 2106, 71, 71, 2108, 71, 71, 2105, 2099, + 2102, 2110, 2103, 2107, 71, 71, 71, 3096, 2113, 2109, + 2111, 71, 2104, 2114, 71, 2115, 2116, 2112, 71, 2118, - 71, 71, 2115, 2128, 71, 2123, 71, 2124, 2120, 2125, - 71, 71, 2127, 2116, 71, 2121, 2126, 71, 71, 71, - 71, 2129, 2132, 2130, 71, 71, 71, 71, 71, 2135, - 71, 71, 71, 2139, 2141, 71, 2142, 71, 71, 2131, - 2134, 71, 71, 2133, 2136, 71, 2137, 2138, 71, 71, - 2144, 71, 2143, 2140, 2146, 71, 2148, 2151, 71, 71, - 2147, 2149, 71, 2152, 2145, 71, 71, 2150, 71, 71, - 71, 71, 71, 2162, 71, 71, 71, 71, 2153, 2163, - 71, 2154, 71, 2159, 2161, 71, 2200, 2157, 2155, 2165, - 2156, 2158, 2170, 2160, 71, 2164, 71, 2167, 2166, 2168, + 71, 71, 71, 2117, 2120, 71, 2119, 71, 2121, 71, + 2125, 71, 71, 2126, 71, 2129, 2128, 2134, 2124, 71, + 71, 71, 2122, 71, 2130, 2133, 2127, 71, 2131, 2132, + 71, 71, 71, 2123, 71, 2135, 71, 71, 2137, 71, + 71, 71, 71, 71, 2140, 71, 2143, 71, 71, 71, + 2149, 71, 2136, 71, 2147, 71, 2138, 2142, 71, 2150, + 71, 2144, 2139, 2141, 2145, 2146, 71, 71, 2151, 2148, + 71, 2152, 2154, 71, 71, 2156, 2159, 71, 71, 71, + 71, 71, 71, 71, 2153, 71, 2155, 2157, 2160, 71, + 71, 2158, 3096, 71, 2170, 71, 71, 2161, 2162, 2171, - 71, 2169, 71, 71, 2172, 71, 71, 2171, 2175, 71, - 71, 2176, 71, 71, 2173, 2177, 71, 2174, 2181, 71, - 2182, 71, 71, 2184, 71, 71, 2186, 71, 2180, 71, - 71, 71, 2178, 2179, 71, 2188, 2189, 71, 2190, 71, - 71, 2183, 71, 2185, 2187, 2191, 71, 71, 2193, 2192, - 71, 2195, 2196, 71, 2198, 71, 71, 71, 2202, 2201, - 71, 2194, 2204, 71, 71, 71, 2197, 71, 2199, 2208, - 71, 71, 71, 2203, 71, 71, 2212, 2213, 71, 2205, - 2206, 71, 71, 2207, 71, 71, 71, 2209, 71, 2211, - 2215, 2218, 71, 2220, 2210, 2219, 71, 2216, 71, 2217, + 2169, 71, 2165, 71, 2163, 2167, 2164, 71, 71, 2175, + 2166, 2168, 2176, 71, 2172, 2177, 71, 2173, 71, 71, + 2174, 71, 2180, 2183, 71, 71, 71, 71, 71, 71, + 71, 2184, 2179, 2178, 2181, 2185, 71, 2182, 2189, 71, + 71, 2188, 2190, 71, 2192, 71, 71, 2186, 2187, 2194, + 71, 71, 2197, 71, 71, 2191, 2196, 71, 2193, 2198, + 71, 2195, 71, 71, 71, 71, 2200, 71, 2199, 2203, + 2204, 71, 2206, 71, 71, 71, 2201, 71, 2209, 71, + 2208, 71, 2202, 71, 2205, 2207, 71, 2210, 2212, 71, + 2216, 71, 71, 71, 2214, 71, 2213, 2221, 71, 2220, - 2214, 71, 2221, 71, 2225, 71, 71, 2227, 71, 71, - 71, 2228, 71, 71, 2222, 2226, 2223, 2232, 2233, 71, - 71, 2231, 71, 71, 71, 71, 2229, 2224, 2230, 2237, - 2239, 71, 2235, 2242, 71, 2234, 2240, 2244, 2241, 71, - 71, 2236, 71, 71, 71, 2245, 71, 2246, 2238, 71, - 71, 71, 2249, 71, 71, 2243, 71, 71, 3082, 2248, - 2250, 2255, 2251, 2252, 2254, 2253, 2256, 71, 71, 2247, - 71, 71, 71, 2261, 2257, 71, 2260, 2258, 71, 71, - 2259, 71, 2262, 71, 2266, 2268, 71, 71, 71, 71, - 2263, 71, 71, 71, 71, 2279, 71, 2270, 2264, 2267, + 2215, 71, 2211, 2217, 71, 71, 71, 71, 2219, 2223, + 2226, 71, 71, 71, 71, 2218, 71, 71, 3096, 2228, + 2222, 2224, 2225, 71, 2233, 2227, 71, 2229, 71, 71, + 2235, 71, 2230, 71, 2231, 2234, 2236, 71, 71, 71, + 71, 2239, 2240, 2232, 2241, 71, 71, 71, 71, 71, + 71, 2237, 2245, 2238, 2247, 2248, 2242, 2250, 2243, 2244, + 71, 2249, 2252, 71, 71, 2253, 2246, 71, 71, 2251, + 71, 71, 2254, 71, 2257, 71, 71, 71, 71, 71, + 3096, 2263, 2258, 2256, 2259, 2260, 2261, 71, 2264, 2255, + 71, 71, 2262, 71, 71, 2265, 71, 2268, 2269, 2266, - 2265, 2271, 2269, 71, 2274, 71, 2275, 2272, 2273, 71, - 2276, 71, 2280, 71, 2277, 2281, 71, 71, 2283, 2284, - 2282, 2278, 2285, 2286, 71, 71, 71, 71, 71, 71, - 2288, 71, 71, 71, 2292, 2293, 71, 71, 71, 2289, - 2287, 71, 2295, 71, 3082, 2290, 71, 2296, 71, 2297, - 2294, 2291, 2298, 71, 71, 71, 71, 2300, 2301, 2299, - 2302, 2303, 71, 71, 71, 71, 71, 71, 2304, 2305, - 71, 2309, 71, 2312, 71, 71, 71, 2311, 71, 71, - 2308, 2313, 71, 2306, 2318, 2307, 71, 2316, 2319, 2317, - 2310, 71, 2314, 71, 2315, 71, 71, 2321, 71, 71, + 71, 2270, 2267, 71, 71, 71, 2276, 71, 71, 2271, + 2272, 71, 2273, 71, 71, 71, 71, 71, 71, 2274, + 2278, 2275, 2284, 2277, 71, 2279, 71, 2282, 3096, 2283, + 2280, 2281, 2287, 71, 71, 2288, 2286, 71, 2285, 2289, + 71, 71, 2291, 2292, 2290, 2293, 71, 2295, 71, 71, + 71, 71, 71, 2297, 71, 2294, 71, 71, 71, 2301, + 71, 2302, 71, 71, 2296, 71, 2298, 71, 2304, 2305, + 2299, 2309, 71, 71, 2303, 2306, 2300, 2307, 71, 71, + 71, 71, 2312, 71, 2308, 2311, 71, 71, 71, 71, + 71, 71, 2314, 2310, 2318, 71, 71, 3096, 2321, 2313, - 2324, 2322, 71, 2326, 71, 2320, 2325, 2328, 71, 71, - 71, 71, 2330, 71, 71, 71, 2327, 71, 71, 2323, - 2329, 71, 2334, 2338, 71, 2340, 2336, 71, 2331, 2332, - 2333, 71, 2337, 2339, 71, 71, 2341, 71, 71, 71, - 71, 71, 71, 2349, 2335, 2344, 2347, 71, 71, 71, - 2348, 71, 71, 2342, 2346, 2352, 71, 71, 2345, 71, - 2343, 71, 2353, 71, 2356, 71, 2350, 2351, 2357, 71, - 2354, 71, 71, 71, 2360, 2355, 2358, 2361, 71, 2359, - 2362, 71, 71, 71, 71, 71, 3082, 2363, 2366, 71, - 2368, 2369, 71, 71, 2365, 2364, 2370, 71, 2371, 71, + 2315, 2320, 71, 2317, 71, 71, 71, 71, 2316, 2326, + 2325, 2319, 2322, 2323, 71, 71, 71, 71, 2324, 2328, + 71, 2329, 2327, 71, 2330, 71, 71, 2333, 2331, 71, + 2335, 71, 2336, 2334, 2337, 71, 71, 2339, 71, 71, + 2338, 71, 2332, 71, 71, 71, 71, 71, 71, 2343, + 2349, 2345, 2346, 2347, 71, 2341, 71, 2340, 71, 2342, + 2348, 71, 71, 2350, 2351, 71, 71, 71, 2356, 71, + 2353, 2344, 71, 71, 71, 71, 2358, 2361, 71, 2355, + 2352, 2357, 71, 71, 71, 2354, 2362, 71, 2365, 2360, + 71, 2359, 2366, 71, 2363, 2367, 71, 71, 71, 71, - 2372, 71, 71, 71, 2367, 2373, 71, 2374, 2375, 71, - 2376, 71, 2377, 71, 2378, 71, 2382, 71, 2379, 71, - 2384, 71, 2385, 71, 71, 71, 71, 71, 71, 71, - 71, 2381, 71, 2380, 2388, 2386, 71, 2387, 2383, 71, - 2389, 2391, 2394, 71, 71, 71, 2390, 71, 2395, 2392, - 2393, 71, 71, 2401, 71, 71, 71, 71, 2396, 71, - 2398, 71, 71, 2402, 2397, 2400, 71, 2410, 3082, 2399, - 2403, 2404, 71, 71, 71, 2405, 2408, 2411, 2412, 71, - 2409, 2406, 2413, 71, 2407, 71, 2414, 71, 2415, 71, - 2416, 71, 2417, 71, 71, 71, 71, 71, 71, 71, + 71, 2371, 2364, 2370, 71, 71, 2369, 71, 71, 3096, + 71, 71, 2374, 2375, 2368, 2377, 2378, 71, 2372, 2373, + 2379, 71, 2380, 71, 2381, 71, 71, 2376, 71, 2383, + 71, 2385, 71, 2384, 71, 2386, 71, 71, 2382, 71, + 2391, 71, 71, 71, 2387, 2393, 71, 71, 2388, 2394, + 71, 71, 71, 71, 2395, 2390, 71, 2389, 2397, 2396, + 71, 2392, 71, 71, 2398, 2400, 2403, 71, 71, 71, + 71, 71, 2404, 2399, 71, 71, 2401, 71, 2410, 71, + 71, 71, 2402, 2407, 2411, 71, 71, 71, 2409, 2406, + 2417, 71, 71, 71, 2405, 2408, 2412, 2414, 2419, 71, - 71, 71, 2418, 2426, 71, 71, 71, 2424, 71, 2430, - 2431, 71, 2419, 2421, 2420, 71, 71, 2423, 2422, 2425, - 2427, 71, 2428, 2429, 2433, 2434, 71, 71, 2432, 71, - 2435, 2436, 71, 71, 2437, 71, 2439, 71, 71, 71, - 2445, 71, 2446, 71, 2447, 2438, 71, 71, 2440, 71, - 71, 71, 71, 2441, 2443, 2442, 2451, 71, 2444, 71, - 71, 2455, 2449, 71, 2448, 2454, 2456, 71, 2450, 71, - 71, 2457, 2452, 2458, 71, 71, 71, 2453, 71, 2460, - 71, 71, 2459, 71, 71, 2464, 71, 71, 2462, 2468, - 2469, 71, 71, 71, 2461, 2472, 71, 2473, 2463, 71, + 2413, 71, 2415, 2427, 2420, 2418, 2421, 71, 71, 2416, + 2422, 71, 71, 2423, 71, 2424, 71, 2425, 71, 2426, + 71, 71, 71, 71, 71, 71, 71, 2428, 71, 71, + 2436, 71, 71, 2429, 2434, 71, 2440, 2441, 71, 2431, + 2430, 71, 2438, 2433, 2432, 71, 2435, 2444, 71, 2437, + 2439, 71, 71, 2442, 2443, 2446, 71, 71, 71, 2447, + 2445, 71, 71, 71, 2449, 71, 2455, 71, 2456, 71, + 2448, 2457, 71, 2450, 71, 71, 71, 71, 71, 2451, + 2452, 2453, 2454, 2461, 71, 71, 71, 2465, 71, 2459, + 2458, 2464, 2466, 71, 2460, 71, 2462, 2467, 2468, 71, - 71, 2465, 2466, 71, 2467, 2471, 71, 2470, 2476, 71, - 2475, 71, 71, 2477, 2474, 2481, 71, 71, 2478, 71, - 71, 2485, 71, 71, 2484, 2487, 71, 71, 2483, 2482, - 71, 2479, 2480, 71, 71, 2488, 2489, 2492, 71, 71, - 2493, 71, 2486, 2495, 71, 71, 2491, 71, 71, 2490, - 71, 2500, 71, 71, 2502, 71, 71, 2498, 2496, 2499, - 2497, 2503, 71, 2494, 71, 71, 71, 2504, 2501, 71, - 2506, 71, 71, 71, 2507, 71, 71, 71, 2505, 71, - 2509, 2510, 2512, 2517, 2513, 2515, 71, 2511, 2508, 71, - 2514, 2516, 71, 71, 2518, 71, 2521, 71, 71, 71, + 71, 71, 71, 71, 2463, 71, 71, 2469, 71, 2470, + 2474, 71, 71, 71, 2472, 2478, 2479, 71, 71, 71, + 2471, 2482, 71, 2473, 71, 71, 2475, 2476, 2480, 2483, + 71, 2477, 71, 71, 2484, 71, 2481, 2485, 2486, 71, + 2491, 71, 71, 2487, 2489, 71, 71, 2488, 71, 2494, + 2495, 71, 2497, 71, 2492, 2490, 71, 2493, 71, 71, + 71, 2498, 2502, 71, 71, 2496, 71, 2499, 71, 2503, + 2505, 71, 2501, 71, 71, 2500, 71, 2510, 71, 2506, + 71, 3096, 2508, 2512, 71, 2509, 2504, 2507, 71, 71, + 71, 71, 71, 2513, 2514, 2511, 2516, 71, 71, 71, - 2523, 71, 71, 2522, 2526, 71, 2525, 2527, 71, 71, - 3082, 2519, 2524, 2520, 2529, 71, 71, 71, 2531, 2530, - 71, 71, 2528, 2532, 71, 2533, 2534, 2535, 71, 71, - 71, 71, 2536, 71, 2537, 71, 2542, 71, 2541, 2538, - 71, 2543, 71, 2540, 71, 2544, 2539, 71, 71, 2545, - 71, 71, 71, 2546, 2547, 2549, 2548, 2550, 71, 71, - 71, 71, 71, 2555, 71, 71, 71, 71, 71, 2553, - 2554, 71, 2552, 2556, 2560, 71, 2551, 2564, 71, 71, - 71, 71, 2563, 71, 2557, 71, 2558, 2559, 2562, 2568, - 2561, 2569, 71, 71, 2571, 2572, 2566, 3082, 2573, 2565, + 2517, 71, 71, 71, 2515, 71, 71, 2519, 2522, 2520, + 2523, 2525, 71, 2527, 2521, 71, 2518, 2524, 2526, 71, + 2528, 71, 71, 2531, 71, 71, 71, 2533, 71, 71, + 2532, 71, 2536, 71, 2537, 71, 2535, 2538, 71, 2529, + 2530, 2539, 71, 2534, 71, 2541, 3096, 2540, 71, 71, + 2542, 71, 2545, 2543, 2544, 2546, 71, 71, 71, 71, + 2547, 71, 2548, 71, 71, 71, 2553, 2549, 71, 2554, + 2555, 2551, 71, 71, 2550, 71, 71, 71, 2557, 2558, + 2556, 71, 71, 71, 71, 2552, 2560, 2561, 71, 2559, + 71, 71, 71, 2566, 71, 71, 71, 2563, 71, 2564, - 71, 71, 71, 2567, 71, 2574, 71, 71, 71, 71, - 2575, 71, 2576, 71, 71, 2579, 71, 2577, 2570, 71, - 2582, 71, 2578, 2584, 71, 2585, 71, 2580, 71, 2581, - 2586, 71, 2587, 71, 2583, 2589, 71, 71, 2588, 71, - 2593, 2590, 2591, 71, 71, 2594, 71, 71, 2596, 2597, - 71, 2592, 2598, 71, 71, 71, 71, 2599, 2603, 71, - 71, 2604, 2601, 2595, 2605, 71, 71, 71, 2600, 2607, - 71, 71, 71, 2611, 2612, 71, 2602, 71, 71, 71, - 2608, 2606, 2613, 71, 71, 2614, 2610, 71, 2620, 2609, - 2615, 71, 71, 2619, 71, 71, 2623, 71, 71, 2622, + 2565, 2562, 71, 2567, 2571, 71, 71, 2568, 71, 71, + 71, 2574, 2575, 71, 71, 2569, 71, 2570, 2573, 71, + 2579, 2572, 2582, 2577, 2587, 2576, 2580, 71, 71, 2583, + 2578, 2584, 2585, 71, 71, 71, 71, 71, 71, 2581, + 71, 71, 2586, 71, 2590, 2588, 71, 2593, 71, 2595, + 71, 2589, 2596, 71, 71, 2591, 2597, 71, 2592, 71, + 71, 2600, 71, 2598, 71, 2599, 2594, 71, 71, 2602, + 2604, 71, 2607, 71, 2601, 2605, 71, 2608, 71, 2603, + 2609, 71, 71, 71, 71, 2610, 2611, 71, 2606, 2614, + 71, 71, 2615, 2616, 71, 2618, 71, 71, 71, 71, - 2616, 71, 71, 2617, 2618, 71, 2624, 71, 2626, 71, - 2625, 71, 2628, 71, 71, 71, 2631, 2621, 2635, 71, - 71, 71, 71, 2627, 2629, 2630, 71, 71, 71, 2634, - 2637, 2632, 71, 71, 2633, 2636, 2639, 2642, 2638, 2640, - 2641, 3082, 2643, 71, 2650, 2644, 2645, 71, 71, 2646, - 71, 2647, 71, 2648, 71, 2649, 71, 71, 71, 2653, - 71, 2651, 71, 2657, 71, 71, 71, 2654, 2658, 2660, - 71, 71, 2662, 71, 71, 2664, 71, 2652, 2661, 2663, - 2655, 71, 2656, 71, 2659, 71, 71, 2669, 71, 71, - 2665, 71, 2666, 2670, 2667, 71, 2673, 71, 71, 71, + 2622, 2612, 2617, 71, 2613, 71, 71, 2623, 71, 2624, + 2619, 71, 2625, 2621, 71, 71, 2620, 2626, 71, 2631, + 71, 2630, 71, 71, 71, 71, 2627, 2633, 2634, 71, + 71, 2628, 2636, 71, 2629, 2635, 2637, 71, 71, 2640, + 2639, 71, 71, 71, 71, 2632, 3096, 2638, 2643, 71, + 2647, 71, 71, 71, 71, 71, 3096, 2649, 2641, 2642, + 2644, 71, 71, 2646, 2645, 2650, 2648, 2651, 71, 2653, + 2654, 2657, 71, 71, 2652, 2655, 71, 71, 2658, 71, + 2659, 2656, 71, 2660, 71, 2661, 71, 71, 2664, 2662, + 71, 2663, 71, 71, 71, 2669, 71, 71, 71, 2666, - 2671, 2674, 71, 2677, 2668, 71, 2676, 71, 2679, 71, - 2672, 2675, 2678, 2680, 71, 71, 71, 71, 71, 2681, - 71, 71, 71, 2689, 71, 71, 2684, 71, 71, 71, - 2685, 2687, 2692, 2693, 2683, 71, 2690, 71, 2694, 71, - 2682, 2688, 71, 71, 2695, 2686, 2691, 2696, 71, 2697, - 2699, 71, 2698, 2700, 71, 2701, 71, 71, 71, 2703, - 71, 2706, 2704, 2705, 71, 2707, 2702, 71, 71, 2708, - 2709, 71, 71, 71, 71, 2714, 71, 71, 2712, 2716, - 71, 71, 2718, 71, 71, 71, 2710, 2717, 71, 2719, - 71, 2720, 2713, 2711, 71, 2724, 71, 71, 71, 71, + 2670, 2672, 71, 2674, 71, 2673, 2676, 71, 71, 71, + 71, 2671, 2667, 2665, 2668, 2675, 71, 2677, 2678, 71, + 2681, 71, 71, 71, 71, 2679, 2682, 71, 2685, 71, + 71, 71, 2683, 2686, 71, 2689, 71, 2680, 2688, 2684, + 2687, 2690, 2691, 71, 2692, 71, 71, 71, 71, 71, + 71, 71, 2701, 71, 71, 2694, 71, 2696, 71, 71, + 2693, 2697, 2699, 71, 2704, 2695, 2702, 71, 2705, 71, + 2706, 2700, 71, 71, 71, 2698, 2707, 2703, 2708, 71, + 2709, 2711, 71, 2710, 2712, 71, 2713, 71, 71, 71, + 2718, 71, 2715, 2716, 2717, 71, 71, 2714, 71, 71, - 71, 2715, 71, 2722, 2721, 71, 2727, 71, 2728, 71, - 2725, 2726, 71, 71, 2723, 2731, 2729, 2732, 2734, 71, - 2736, 71, 2737, 71, 2730, 71, 2739, 71, 71, 71, - 71, 71, 2735, 71, 71, 2733, 2744, 71, 2743, 71, - 71, 2748, 71, 71, 2740, 2741, 2738, 2742, 2751, 71, - 2745, 71, 71, 2753, 71, 71, 2749, 2746, 2747, 71, - 2754, 71, 2750, 2756, 71, 2757, 71, 2759, 71, 71, - 71, 2752, 71, 2765, 2755, 71, 2764, 71, 3082, 2762, - 2761, 2758, 71, 2768, 71, 71, 71, 2760, 2769, 2766, - 71, 2770, 2763, 71, 2773, 2767, 2774, 71, 2771, 71, + 2719, 2721, 71, 2720, 71, 71, 71, 2727, 71, 2722, + 2725, 2723, 71, 71, 2729, 71, 2730, 71, 71, 71, + 2733, 71, 2731, 2732, 2726, 2724, 71, 71, 2737, 71, + 71, 71, 71, 2728, 71, 71, 2740, 71, 71, 71, + 2734, 2735, 71, 2738, 2739, 71, 2741, 2736, 2747, 71, + 2742, 71, 71, 2744, 2743, 71, 2745, 71, 2748, 2749, + 71, 2750, 71, 2751, 2746, 2752, 71, 71, 2753, 2757, + 71, 2754, 2756, 2755, 71, 71, 71, 71, 2761, 71, + 71, 2764, 71, 71, 2766, 71, 71, 2769, 71, 71, + 71, 2767, 71, 2762, 2758, 2760, 2770, 71, 2759, 2763, - 71, 2776, 2775, 71, 71, 71, 71, 71, 2781, 2778, - 2779, 71, 71, 2772, 71, 2784, 71, 71, 71, 71, - 71, 2777, 2789, 71, 2785, 2780, 71, 71, 2782, 2783, - 2792, 71, 2788, 2793, 71, 2786, 2791, 71, 71, 2790, - 2795, 71, 2794, 2787, 2797, 71, 2796, 2798, 71, 2799, - 71, 71, 2801, 71, 71, 71, 2800, 2802, 71, 71, - 2806, 2807, 71, 71, 71, 71, 2811, 71, 2812, 71, - 71, 71, 71, 2813, 2810, 2849, 2803, 2804, 2808, 71, - 2805, 71, 71, 2809, 2817, 71, 2816, 2818, 71, 71, - 2814, 2815, 2821, 71, 2819, 71, 2820, 71, 71, 2824, + 2772, 71, 71, 2765, 2777, 71, 71, 2768, 71, 2771, + 71, 71, 2776, 2774, 2775, 2781, 71, 71, 71, 71, + 2773, 2782, 3096, 2779, 2786, 2778, 71, 2783, 2780, 2784, + 71, 2787, 71, 71, 2789, 71, 2788, 71, 71, 2785, + 71, 71, 2791, 2792, 71, 2795, 2793, 71, 2798, 71, + 71, 71, 71, 2790, 71, 71, 71, 2794, 2803, 71, + 71, 71, 2799, 71, 2796, 2797, 2806, 71, 2802, 2805, + 2800, 2807, 71, 71, 71, 2804, 71, 2809, 2808, 2801, + 2816, 2810, 2811, 71, 2812, 71, 2813, 71, 71, 2815, + 71, 71, 71, 2814, 71, 2820, 2817, 2821, 71, 71, - 71, 71, 2825, 2823, 71, 2822, 71, 71, 71, 71, - 71, 2828, 71, 71, 2830, 71, 71, 2831, 71, 2829, - 71, 2826, 71, 71, 2827, 71, 71, 2840, 2841, 2832, - 71, 2836, 2833, 2834, 2835, 2837, 2838, 2843, 71, 71, - 3082, 2839, 2906, 71, 2844, 2842, 2845, 2847, 71, 2848, - 71, 2846, 2850, 71, 2851, 71, 2852, 2853, 71, 71, - 2854, 2855, 2858, 71, 2856, 2857, 71, 71, 2859, 71, - 71, 71, 71, 71, 2865, 71, 71, 71, 2864, 71, - 71, 2868, 71, 3082, 2860, 2861, 2867, 71, 71, 2869, - 2862, 71, 2863, 71, 2873, 2874, 71, 2870, 2875, 71, + 71, 71, 2825, 71, 2826, 71, 2827, 71, 71, 2824, + 71, 71, 71, 2818, 2819, 2822, 2830, 2831, 71, 2823, + 2832, 71, 2834, 71, 2835, 71, 71, 2828, 2833, 2829, + 71, 2838, 71, 71, 2837, 71, 71, 2836, 2839, 71, + 71, 71, 71, 71, 2842, 71, 71, 2844, 71, 71, + 2845, 71, 2843, 71, 71, 2840, 2841, 71, 71, 2854, + 71, 71, 2846, 2855, 2850, 2847, 2848, 2849, 2851, 2852, + 2857, 71, 2956, 71, 2853, 71, 71, 2856, 2858, 2863, + 2859, 2861, 71, 71, 2860, 2862, 71, 2864, 71, 2865, + 71, 2866, 2867, 71, 71, 2868, 2869, 2872, 71, 2870, - 2872, 2866, 71, 2876, 71, 2871, 2880, 2877, 2882, 71, - 71, 2881, 71, 2878, 71, 71, 2879, 71, 71, 71, - 2889, 71, 2886, 2887, 2890, 2884, 71, 2892, 71, 71, - 71, 71, 2891, 3082, 2883, 2938, 2885, 71, 2888, 2893, - 71, 2912, 2894, 2895, 71, 2896, 71, 2897, 71, 2898, - 71, 2899, 71, 2900, 71, 2901, 71, 2902, 71, 71, - 2904, 71, 71, 71, 71, 71, 2909, 71, 2903, 71, - 71, 2905, 71, 2913, 2915, 71, 71, 71, 71, 2910, - 2917, 71, 2911, 2907, 2908, 2914, 71, 2919, 71, 2922, - 71, 2921, 71, 71, 2916, 71, 71, 71, 2924, 2920, + 2871, 2874, 71, 2873, 71, 71, 71, 71, 71, 2879, + 71, 71, 71, 2878, 71, 71, 2882, 71, 71, 2875, + 71, 2881, 71, 2891, 2883, 71, 2876, 2877, 71, 2887, + 71, 2886, 2884, 2888, 71, 71, 2880, 2894, 2885, 2889, + 71, 71, 2895, 71, 2892, 2890, 2896, 2893, 71, 71, + 2897, 71, 71, 71, 2900, 2904, 2898, 71, 2901, 2903, + 71, 71, 3096, 2905, 2906, 71, 2907, 71, 71, 2899, + 2902, 2909, 71, 2908, 2910, 71, 2911, 71, 2912, 71, + 2913, 71, 2914, 71, 2915, 71, 2916, 71, 71, 2918, + 71, 71, 71, 71, 71, 71, 71, 2917, 2923, 71, - 71, 71, 71, 71, 2918, 71, 2923, 2928, 2931, 2925, - 71, 2929, 71, 2927, 2926, 2930, 2932, 2933, 71, 2934, - 71, 2935, 71, 71, 71, 71, 2940, 71, 71, 71, - 2944, 71, 2937, 2936, 2943, 71, 2946, 71, 2942, 71, - 71, 71, 71, 71, 2939, 71, 2945, 71, 2941, 71, - 2947, 71, 2953, 71, 3082, 71, 2950, 71, 2948, 2949, - 2952, 2954, 2957, 2960, 71, 71, 71, 2951, 2955, 2958, - 71, 2956, 71, 2959, 2961, 2962, 71, 71, 2963, 2964, - 71, 2965, 71, 71, 71, 2966, 2968, 71, 71, 2969, - 2967, 71, 2970, 2973, 71, 71, 71, 2971, 71, 71, + 2919, 71, 71, 71, 2920, 71, 2927, 71, 2926, 2924, + 2929, 71, 71, 2921, 2922, 2925, 2928, 71, 71, 2933, + 2931, 2930, 71, 2936, 71, 2935, 71, 71, 71, 71, + 2934, 2938, 71, 2932, 71, 71, 71, 71, 2937, 71, + 2942, 71, 2945, 71, 2941, 2943, 2939, 2952, 2946, 71, + 2940, 71, 2944, 2947, 71, 2948, 71, 2949, 71, 71, + 2951, 71, 71, 71, 2950, 2958, 71, 2957, 71, 2953, + 71, 2960, 71, 2954, 71, 71, 71, 71, 71, 71, + 71, 2959, 71, 71, 2955, 2961, 2967, 2962, 71, 71, + 71, 2964, 2963, 2966, 2968, 2971, 2974, 71, 71, 2980, - 2976, 2978, 71, 2972, 71, 2974, 2975, 2981, 71, 71, - 71, 2984, 71, 2979, 71, 2985, 2977, 71, 71, 71, - 2988, 2989, 71, 2980, 2982, 2986, 71, 71, 2983, 71, - 71, 71, 71, 2990, 71, 2991, 2993, 2987, 2994, 71, - 2995, 71, 71, 71, 71, 71, 71, 2999, 2992, 3001, - 71, 2996, 2997, 71, 3000, 71, 2998, 71, 71, 3003, - 3006, 71, 3007, 3004, 3002, 3008, 71, 71, 3012, 71, - 71, 3014, 3005, 71, 3015, 3013, 71, 71, 3009, 3010, - 71, 3016, 71, 71, 3020, 3017, 3011, 3018, 3021, 71, - 71, 71, 3023, 71, 71, 71, 3022, 71, 3024, 71, + 2969, 2965, 2972, 2970, 2976, 71, 71, 2975, 71, 2973, + 71, 2977, 2978, 71, 2979, 71, 71, 71, 71, 2982, + 71, 2987, 2983, 2984, 71, 71, 2981, 71, 71, 71, + 2992, 71, 71, 2985, 2990, 2986, 71, 2989, 2988, 2995, + 71, 71, 71, 2998, 71, 71, 2999, 2993, 2991, 71, + 71, 71, 3002, 3003, 71, 2994, 2996, 3000, 71, 71, + 2997, 71, 71, 71, 71, 3004, 71, 3005, 3007, 3001, + 3008, 71, 3009, 71, 71, 71, 71, 71, 71, 3013, + 3006, 3015, 71, 3010, 3011, 71, 3014, 71, 3012, 71, + 71, 3017, 3020, 71, 3021, 3018, 3016, 3022, 71, 71, - 71, 3029, 3019, 71, 3026, 71, 3032, 71, 71, 3033, - 71, 71, 71, 71, 3025, 71, 71, 3036, 3027, 3028, - 3034, 3031, 3030, 3035, 71, 3040, 71, 71, 71, 3039, - 71, 3041, 3037, 71, 3038, 71, 3044, 71, 3046, 71, - 3042, 71, 3047, 71, 3048, 3051, 71, 71, 71, 3045, - 3049, 71, 3050, 3052, 3043, 71, 71, 3053, 3054, 71, - 71, 3060, 71, 3055, 71, 71, 3057, 3056, 71, 3058, - 3059, 71, 71, 3062, 71, 71, 3063, 71, 3066, 3067, - 71, 71, 71, 3070, 3061, 3071, 71, 3082, 71, 3073, - 71, 3064, 71, 3065, 3068, 3072, 3074, 71, 71, 3075, + 3026, 71, 71, 3028, 3019, 71, 3029, 3027, 71, 71, + 3023, 3024, 71, 3030, 71, 71, 3034, 3031, 3025, 3032, + 3035, 71, 71, 71, 3037, 71, 71, 71, 3036, 71, + 3038, 71, 71, 3043, 3033, 71, 3040, 71, 3046, 71, + 71, 3047, 71, 71, 71, 71, 3039, 71, 71, 3050, + 3041, 3042, 3048, 3045, 3044, 3049, 71, 3054, 71, 71, + 71, 3053, 71, 3055, 3051, 71, 3052, 71, 3058, 71, + 3060, 71, 3056, 71, 3061, 71, 3062, 3065, 71, 71, + 71, 3059, 3063, 71, 3064, 3066, 3057, 71, 71, 3067, + 3068, 71, 71, 3074, 71, 3069, 71, 71, 3071, 3070, - 3069, 71, 71, 3076, 71, 3082, 3077, 3080, 71, 3081, - 71, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3078, 3082, 3079, 43, 43, 43, 43, 43, 43, - 43, 48, 48, 48, 48, 48, 48, 48, 53, 53, - 53, 53, 53, 53, 53, 59, 59, 59, 59, 59, - 59, 59, 64, 64, 64, 64, 64, 64, 64, 74, - 74, 3082, 74, 74, 74, 74, 142, 142, 3082, 3082, - 3082, 142, 142, 144, 144, 3082, 3082, 144, 3082, 144, - 146, 3082, 3082, 3082, 3082, 3082, 146, 149, 149, 3082, - 3082, 3082, 149, 149, 151, 3082, 3082, 3082, 3082, 3082, + 71, 3072, 3073, 71, 71, 3076, 71, 71, 3077, 71, + 3080, 3081, 71, 71, 71, 3084, 3075, 3085, 71, 3096, + 71, 3087, 71, 3078, 71, 3079, 3082, 3086, 3088, 71, + 71, 3089, 3083, 71, 71, 3090, 71, 3096, 3091, 3094, + 71, 3095, 71, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3092, 3096, 3093, 43, 43, 43, 43, + 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, + 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, + 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, + 64, 74, 74, 3096, 74, 74, 74, 74, 142, 142, - 151, 153, 153, 3082, 153, 153, 153, 153, 75, 75, - 3082, 75, 75, 75, 75, 13, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3096, 3096, 3096, 142, 142, 144, 144, 3096, 3096, 144, + 3096, 144, 146, 3096, 3096, 3096, 3096, 3096, 146, 149, + 149, 3096, 3096, 3096, 149, 149, 151, 3096, 3096, 3096, + 3096, 3096, 151, 153, 153, 3096, 153, 153, 153, 153, + 75, 75, 3096, 75, 75, 75, 75, 13, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; -static const flex_int16_t yy_chk[6057] = +static const flex_int16_t yy_chk[6089] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2116,7 +2123,7 @@ static const flex_int16_t yy_chk[6057] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3088, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3102, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, @@ -2125,7 +2132,7 @@ static const flex_int16_t yy_chk[6057] = 26, 21, 23, 89, 12, 23, 27, 27, 47, 47, 21, 24, 42, 90, 26, 27, 24, 28, 34, 52, 24, 28, 52, 24, 28, 24, 24, 42, 32, 32, - 1018, 28, 90, 28, 33, 33, 24, 32, 72, 33, + 1019, 28, 90, 28, 33, 33, 24, 32, 72, 33, 69, 35, 72, 32, 63, 63, 35, 32, 77, 80, 35, 77, 37, 37, 69, 33, 35, 37, 230, 35, 230, 80, 39, 39, 38, 39, 35, 37, 37, 38, @@ -2279,501 +2286,504 @@ static const flex_int16_t yy_chk[6057] = 678, 669, 670, 675, 679, 673, 678, 680, 681, 677, 671, 680, 682, 683, 685, 684, 686, 687, 688, 689, 681, 684, 685, 686, 679, 692, 699, 698, 695, 703, - 702, 683, 699, 703, 707, 687, 698, 682, 709, 689, - 692, 701, 14, 688, 690, 695, 702, 701, 706, 690, - 704, 704, 707, 690, 705, 705, 690, 708, 709, 706, - 712, 710, 713, 690, 690, 712, 690, 710, 714, 715, + 14, 683, 699, 703, 702, 687, 698, 682, 709, 689, + 692, 701, 707, 688, 690, 695, 690, 701, 706, 690, + 702, 704, 704, 690, 705, 705, 690, 708, 709, 706, + 707, 710, 713, 690, 690, 712, 690, 710, 714, 715, - 718, 708, 711, 711, 711, 716, 711, 718, 716, 711, - 717, 717, 720, 713, 711, 13, 714, 719, 719, 728, - 711, 711, 721, 721, 715, 722, 723, 720, 724, 723, - 722, 725, 725, 724, 726, 727, 726, 729, 728, 730, - 732, 729, 731, 733, 733, 734, 737, 727, 732, 735, - 736, 736, 739, 738, 742, 742, 740, 753, 753, 730, - 734, 731, 740, 735, 737, 738, 741, 743, 754, 754, - 745, 741, 743, 743, 739, 745, 746, 747, 750, 748, - 749, 750, 746, 747, 748, 751, 749, 752, 755, 756, - 759, 751, 757, 758, 761, 752, 755, 757, 760, 760, + 712, 708, 711, 711, 711, 716, 711, 720, 716, 711, + 717, 717, 718, 713, 711, 13, 714, 719, 719, 718, + 711, 711, 720, 722, 715, 721, 721, 723, 722, 724, + 723, 725, 725, 726, 724, 726, 727, 728, 729, 730, + 734, 731, 729, 732, 733, 733, 737, 735, 727, 736, + 736, 732, 739, 738, 0, 734, 728, 740, 759, 730, + 731, 735, 741, 740, 737, 738, 743, 741, 742, 742, + 745, 743, 743, 746, 739, 745, 747, 759, 748, 746, + 749, 750, 747, 748, 750, 751, 749, 752, 753, 753, + 755, 751, 754, 754, 756, 752, 757, 758, 755, 760, - 758, 764, 762, 761, 766, 763, 767, 756, 768, 759, - 762, 763, 769, 766, 770, 767, 771, 769, 774, 771, - 764, 772, 773, 770, 775, 776, 772, 778, 778, 777, - 779, 780, 768, 775, 777, 777, 773, 781, 776, 782, - 785, 783, 785, 774, 783, 779, 781, 786, 786, 787, - 780, 788, 783, 789, 792, 790, 788, 791, 793, 794, - 795, 796, 797, 782, 1036, 796, 798, 799, 794, 802, - 787, 1036, 800, 799, 789, 790, 792, 791, 793, 801, - 797, 800, 803, 795, 804, 798, 805, 806, 802, 808, - 804, 801, 806, 807, 807, 809, 803, 810, 811, 812, + 760, 757, 761, 763, 758, 762, 764, 766, 767, 763, + 768, 761, 756, 762, 769, 770, 766, 767, 771, 769, + 774, 771, 772, 773, 770, 764, 775, 772, 776, 778, + 778, 779, 780, 777, 768, 775, 782, 773, 777, 777, + 781, 776, 786, 786, 783, 774, 779, 783, 785, 781, + 785, 780, 787, 788, 789, 783, 790, 791, 788, 792, + 782, 794, 793, 795, 796, 797, 798, 801, 796, 802, + 794, 800, 799, 787, 808, 789, 790, 791, 799, 801, + 800, 792, 793, 797, 803, 798, 795, 804, 802, 805, + 806, 807, 807, 804, 808, 806, 809, 810, 803, 811, - 805, 813, 814, 0, 809, 815, 811, 816, 817, 808, - 818, 820, 819, 816, 817, 824, 821, 810, 819, 812, - 822, 814, 821, 813, 818, 815, 822, 825, 823, 827, - 826, 820, 823, 831, 824, 826, 828, 828, 829, 825, - 830, 832, 833, 830, 829, 834, 836, 825, 833, 842, - 827, 831, 835, 835, 832, 837, 838, 838, 839, 840, - 837, 841, 841, 840, 836, 834, 843, 844, 845, 847, - 848, 842, 844, 839, 850, 851, 853, 853, 854, 857, - 855, 858, 854, 859, 848, 858, 843, 845, 856, 856, - 873, 860, 998, 847, 850, 855, 851, 852, 859, 873, + 812, 813, 814, 805, 815, 809, 816, 811, 817, 819, + 820, 818, 816, 821, 817, 819, 822, 810, 824, 821, + 812, 814, 822, 813, 815, 818, 825, 823, 826, 827, + 820, 823, 832, 826, 828, 828, 829, 824, 825, 831, + 830, 833, 829, 830, 834, 832, 825, 833, 835, 835, + 827, 836, 839, 837, 838, 838, 840, 831, 837, 842, + 840, 841, 841, 843, 834, 844, 845, 839, 847, 836, + 844, 850, 848, 851, 853, 853, 854, 857, 855, 0, + 854, 842, 860, 843, 859, 845, 848, 856, 856, 878, + 878, 850, 847, 855, 851, 852, 860, 858, 852, 859, - 852, 862, 852, 998, 857, 860, 852, 861, 852, 864, - 865, 863, 861, 852, 865, 862, 863, 863, 852, 866, - 867, 868, 869, 864, 870, 867, 865, 869, 871, 872, - 874, 875, 880, 868, 866, 867, 874, 875, 870, 876, - 877, 877, 878, 872, 879, 876, 881, 878, 882, 871, - 879, 884, 885, 958, 880, 886, 889, 885, 887, 888, - 888, 889, 891, 884, 890, 881, 882, 883, 883, 886, - 887, 892, 890, 883, 958, 883, 891, 893, 894, 894, - 895, 883, 897, 899, 895, 900, 883, 883, 897, 898, - 892, 901, 898, 883, 902, 903, 893, 901, 900, 902, + 852, 858, 857, 861, 852, 862, 852, 863, 861, 864, + 865, 852, 863, 863, 867, 868, 852, 866, 864, 862, + 868, 866, 869, 870, 865, 871, 872, 873, 870, 867, + 868, 874, 875, 866, 869, 881, 876, 877, 875, 871, + 874, 873, 876, 877, 879, 880, 882, 872, 883, 879, + 885, 880, 888, 886, 0, 887, 890, 881, 886, 889, + 889, 890, 885, 891, 888, 882, 883, 884, 884, 887, + 892, 891, 893, 884, 898, 884, 894, 895, 895, 896, + 898, 884, 899, 896, 892, 899, 884, 884, 900, 901, + 902, 893, 903, 884, 904, 894, 902, 903, 908, 906, - 905, 906, 899, 907, 909, 908, 910, 911, 912, 905, - 906, 908, 911, 909, 903, 913, 914, 916, 915, 907, - 919, 918, 917, 922, 925, 910, 916, 918, 912, 913, - 915, 917, 920, 924, 926, 927, 914, 919, 920, 922, - 928, 929, 0, 930, 925, 931, 934, 924, 930, 927, - 931, 934, 935, 926, 936, 936, 929, 937, 928, 938, - 940, 935, 941, 937, 944, 942, 942, 941, 941, 942, - 943, 945, 938, 943, 946, 947, 940, 950, 944, 948, - 949, 951, 952, 950, 953, 964, 955, 0, 952, 954, - 946, 945, 948, 947, 954, 949, 961, 964, 959, 953, + 907, 911, 901, 910, 909, 913, 912, 900, 906, 907, + 909, 912, 910, 904, 908, 914, 915, 917, 916, 918, + 911, 919, 920, 926, 923, 913, 917, 919, 918, 914, + 916, 921, 925, 927, 928, 929, 915, 921, 0, 920, + 923, 930, 931, 926, 932, 935, 925, 931, 928, 932, + 935, 936, 927, 929, 937, 937, 930, 938, 939, 941, + 936, 942, 945, 938, 943, 943, 942, 942, 943, 944, + 946, 939, 944, 947, 948, 941, 945, 951, 949, 950, + 952, 953, 954, 951, 956, 959, 0, 953, 955, 947, + 946, 949, 948, 955, 950, 962, 958, 954, 956, 958, - 955, 951, 957, 959, 960, 957, 962, 967, 963, 960, - 966, 962, 961, 963, 968, 969, 966, 970, 970, 971, - 968, 969, 972, 967, 973, 974, 974, 973, 971, 975, - 976, 977, 978, 979, 982, 978, 980, 981, 985, 982, - 972, 987, 980, 981, 985, 983, 979, 975, 984, 976, - 983, 977, 988, 984, 989, 992, 990, 991, 991, 987, - 989, 990, 993, 994, 992, 995, 996, 997, 999, 996, - 997, 993, 988, 1000, 1001, 1004, 1002, 1003, 1006, 1006, - 1007, 994, 1002, 1003, 995, 1000, 999, 1005, 1008, 1009, - 1004, 1010, 1005, 1001, 1011, 1010, 1012, 1013, 1014, 1007, + 952, 965, 960, 961, 963, 964, 959, 960, 961, 963, + 964, 962, 967, 965, 968, 969, 970, 972, 967, 971, + 971, 969, 970, 973, 974, 976, 972, 974, 975, 975, + 968, 977, 978, 979, 980, 983, 979, 984, 981, 982, + 983, 973, 984, 976, 981, 982, 985, 980, 986, 988, + 977, 985, 978, 989, 986, 990, 993, 991, 992, 992, + 994, 990, 991, 995, 996, 993, 999, 988, 997, 994, + 1000, 997, 998, 989, 1001, 998, 1002, 999, 1003, 1004, + 1008, 995, 1005, 996, 1003, 1004, 1001, 1006, 1000, 1007, + 1007, 1009, 1006, 1012, 1010, 1002, 1011, 1005, 1013, 1008, - 1016, 1009, 1008, 1017, 1017, 1012, 1019, 1020, 1022, 1021, - 1024, 1024, 1011, 1022, 1025, 1023, 1013, 1040, 1040, 1016, - 1019, 1021, 1020, 1014, 1023, 1026, 1027, 1029, 1028, 1029, - 1030, 1026, 1027, 1028, 1025, 1030, 1031, 1032, 1033, 1034, - 1035, 1037, 1038, 1033, 1041, 1042, 1044, 1043, 1045, 1069, - 1031, 1032, 1044, 1069, 1034, 1046, 1037, 0, 1041, 1035, - 1046, 1038, 1043, 1042, 1048, 1048, 1051, 1049, 1045, 1046, - 1052, 1046, 1049, 1051, 1046, 1050, 1050, 1053, 1054, 1056, - 1053, 1055, 1057, 1058, 1052, 1060, 1059, 1057, 1056, 1061, - 1060, 1062, 1064, 1064, 1067, 0, 1065, 1054, 1059, 1055, + 1011, 1014, 1015, 1017, 1020, 1009, 1010, 1013, 1018, 1018, + 1021, 1012, 1022, 1026, 1023, 1025, 1025, 1024, 1020, 1023, + 1014, 0, 1017, 1027, 1022, 1021, 1024, 1015, 1028, 1027, + 1029, 1032, 1031, 1026, 1028, 1029, 1030, 1031, 1030, 1033, + 1035, 1034, 1036, 1037, 1038, 1032, 1034, 1039, 1041, 1041, + 1037, 1042, 1043, 1033, 1044, 1035, 1045, 1046, 1051, 1038, + 1049, 1036, 1045, 1051, 1049, 1042, 1039, 1047, 1054, 1044, + 1043, 1053, 1047, 1050, 1050, 1052, 1052, 1046, 1053, 1056, + 1058, 1047, 1054, 1047, 1055, 1057, 1047, 1055, 1059, 1058, + 1060, 1062, 1061, 1059, 1063, 1064, 1062, 1067, 1056, 1066, - 1061, 1065, 1058, 1066, 1068, 1071, 1070, 1072, 1066, 1068, - 1062, 1073, 1074, 1075, 1067, 1070, 1076, 1077, 1078, 1079, - 1071, 1080, 1072, 1076, 1074, 1081, 1082, 1083, 1075, 1077, - 1073, 1081, 1084, 1085, 1088, 1089, 1090, 1078, 1087, 1080, - 1079, 1082, 1085, 1089, 1087, 1091, 1092, 1083, 1088, 1093, - 1091, 1094, 1084, 1095, 1093, 1093, 1090, 1100, 1092, 1096, - 1097, 1097, 1099, 1101, 1102, 1102, 1100, 1095, 1104, 1101, - 1094, 1103, 1096, 1098, 1105, 1099, 1103, 1104, 1098, 1106, - 1105, 1098, 1098, 1107, 1106, 1109, 1098, 1112, 1107, 1108, - 1108, 1113, 1098, 1110, 1110, 1111, 1098, 1115, 1111, 1114, + 1066, 1068, 1067, 1057, 1061, 1063, 1068, 1069, 1070, 1060, + 1072, 1071, 1076, 1070, 1064, 1071, 1073, 1074, 1075, 1072, + 1077, 1078, 1079, 1080, 1076, 1081, 1082, 1069, 1078, 1085, + 1083, 1073, 1074, 1084, 1079, 1077, 1083, 1075, 1086, 1089, + 1090, 1087, 1080, 1091, 1082, 1089, 1081, 1092, 1084, 1085, + 1087, 1091, 1093, 1094, 1090, 1095, 1096, 1093, 1086, 1097, + 1095, 1095, 1102, 1098, 1103, 1094, 1101, 1092, 1099, 1099, + 1103, 1102, 0, 1097, 1111, 1096, 1098, 1100, 1105, 1101, + 1104, 1104, 1100, 1105, 1106, 1100, 1100, 1108, 1107, 1114, + 1100, 1117, 1108, 1106, 1107, 1111, 1100, 1109, 1110, 1110, - 1111, 1117, 1118, 1124, 1124, 1116, 1109, 1112, 1114, 1113, - 1116, 1121, 1119, 1120, 1123, 1117, 1121, 1115, 1119, 1120, - 1118, 1122, 1126, 1123, 1129, 1122, 1125, 1125, 1123, 1125, - 1123, 1128, 1123, 1126, 1123, 1128, 1130, 1131, 1132, 1129, - 1133, 1134, 1135, 1132, 1132, 1136, 1131, 1135, 1137, 1133, - 1138, 1139, 1140, 1144, 1130, 1141, 1148, 1137, 1146, 1136, - 1143, 1141, 1149, 1134, 1142, 1142, 1140, 1144, 1143, 1138, - 1139, 1145, 1146, 1147, 1148, 1150, 1145, 1151, 1151, 1152, - 1150, 1158, 1147, 1153, 1153, 1157, 1154, 1149, 1154, 1156, - 1157, 1161, 1156, 1159, 1152, 1160, 1160, 1162, 1162, 1165, + 1100, 1115, 1109, 1112, 1112, 1113, 1116, 1118, 1113, 1114, + 1113, 1117, 1118, 1119, 1120, 1116, 1121, 1122, 1128, 1115, + 1123, 1125, 1121, 1122, 1124, 1123, 1132, 1119, 1124, 1128, + 1125, 1131, 1120, 1126, 1126, 1125, 1130, 1125, 1133, 1125, + 1130, 1125, 1127, 1127, 1132, 1127, 1131, 1133, 1134, 1135, + 1136, 1137, 1138, 1134, 1134, 1139, 1137, 1140, 1135, 1141, + 1142, 1143, 1144, 1144, 1139, 1145, 1138, 1143, 1146, 1148, + 1147, 1149, 1136, 1145, 1142, 1147, 1140, 1150, 1141, 1151, + 1149, 1152, 1146, 1148, 1153, 1153, 1152, 1154, 1155, 1155, + 1156, 1158, 1156, 1159, 1158, 1150, 1160, 1161, 1159, 1162, - 1158, 1164, 1159, 1163, 1163, 1166, 1164, 1167, 1167, 1168, - 1169, 1161, 1170, 1169, 1171, 1172, 1173, 1174, 1173, 1171, - 1165, 1177, 1176, 1178, 1172, 1176, 1166, 1179, 1178, 1168, - 1186, 1181, 1170, 1180, 0, 1174, 1177, 1182, 1180, 1181, - 1183, 1179, 1182, 1184, 1184, 1183, 1185, 1187, 1186, 1188, - 1189, 1185, 1191, 1187, 1192, 1194, 1188, 1193, 1191, 1195, - 1192, 1194, 1193, 1189, 1196, 1197, 1198, 1198, 1195, 1199, - 1201, 1202, 1203, 1204, 1205, 1207, 1197, 1208, 1203, 1204, - 1205, 1207, 1209, 1196, 1210, 1211, 1212, 1213, 1213, 1199, - 1201, 1208, 1214, 1215, 1202, 1216, 1210, 1208, 1217, 1211, + 1162, 1163, 1154, 1167, 1151, 1168, 1161, 1164, 1164, 1165, + 1165, 1166, 1169, 1169, 1170, 1160, 1166, 1171, 1172, 1174, + 1171, 1163, 1173, 1175, 1167, 1175, 1168, 1173, 1174, 1176, + 1178, 1179, 1180, 1178, 1170, 1181, 1182, 1180, 1172, 1184, + 1183, 1182, 1186, 1186, 1184, 1185, 1179, 1176, 1183, 1181, + 1185, 1187, 1188, 1189, 1190, 1191, 1187, 1193, 1194, 1189, + 1195, 1190, 1197, 1193, 1194, 1195, 1196, 1198, 1191, 1199, + 1188, 1197, 1196, 1200, 1200, 1201, 1203, 1204, 1205, 1206, + 1199, 1207, 1209, 1210, 1205, 1206, 1198, 1207, 1209, 1211, + 1212, 1213, 1214, 1215, 1215, 1201, 1203, 1210, 1216, 1217, - 1218, 1218, 1209, 1217, 1212, 1219, 1220, 1222, 1225, 1223, - 1227, 1220, 1214, 1216, 1223, 1223, 1224, 1225, 1215, 1226, - 1228, 1229, 0, 1232, 1227, 1230, 1222, 1226, 1219, 1231, - 1230, 1231, 1234, 1230, 1224, 1228, 1229, 1232, 1234, 1229, - 1235, 1236, 1237, 1238, 1235, 1239, 1240, 1237, 1237, 1241, - 1242, 1243, 1236, 1244, 1241, 1242, 1245, 1248, 1244, 1247, - 1249, 1252, 1238, 1251, 1240, 1250, 1250, 1251, 1253, 1243, - 1255, 1239, 1256, 1247, 1254, 1248, 1245, 1258, 1249, 1252, - 1254, 1257, 1255, 1259, 1260, 1261, 1262, 1253, 1264, 1263, - 1261, 1256, 1258, 1262, 1263, 1257, 1265, 1267, 1259, 1266, + 1204, 1218, 1212, 1210, 1221, 1213, 1219, 1220, 1220, 1211, + 1214, 1219, 1222, 1224, 1227, 1225, 1226, 1222, 1216, 1218, + 1225, 1225, 1228, 1227, 1217, 1229, 1230, 1221, 1231, 1233, + 1228, 1234, 1224, 1234, 1226, 1235, 1238, 1232, 1233, 1229, + 1238, 1230, 1232, 1231, 1237, 1232, 1231, 1239, 1240, 1235, + 1237, 1241, 1242, 1240, 1240, 1243, 1244, 1245, 1239, 1246, + 1247, 1244, 1245, 1248, 1251, 1247, 1250, 1252, 1253, 1253, + 1241, 1254, 1255, 1243, 1256, 1254, 1258, 1246, 1242, 1259, + 1250, 1257, 1251, 1248, 1261, 1252, 1260, 1257, 1258, 1262, + 1255, 1263, 1264, 1256, 1265, 1267, 1268, 1264, 1259, 1261, - 1266, 1268, 1269, 1260, 1270, 1265, 1264, 1268, 1271, 1270, - 1272, 1277, 1267, 1279, 1271, 1277, 1272, 1273, 1273, 1274, - 1274, 1276, 1276, 1269, 1278, 1280, 1281, 1282, 1283, 1283, - 1284, 1279, 1285, 1278, 1282, 1287, 1288, 1286, 1289, 1280, - 1285, 1281, 1286, 1289, 1289, 1291, 1290, 1292, 1292, 1287, - 1284, 1290, 1290, 1293, 1294, 1288, 1296, 1295, 1297, 1298, - 1299, 1296, 1300, 1302, 1301, 1291, 1295, 1304, 1300, 1301, - 1303, 1307, 1293, 1294, 1305, 1306, 1303, 1297, 1299, 1298, - 1305, 1306, 1308, 1309, 1310, 1311, 1304, 1312, 1316, 1302, - 1307, 1313, 1314, 1314, 1315, 1317, 1317, 1315, 1321, 1311, + 1260, 1265, 1266, 1270, 1262, 1268, 1271, 1266, 1269, 1269, + 1263, 1272, 1271, 1267, 1273, 1274, 1275, 1282, 1270, 1273, + 1283, 1274, 1275, 1276, 1276, 1277, 1277, 1279, 1279, 1280, + 1281, 1284, 1272, 1280, 1283, 1282, 1285, 1286, 1286, 1281, + 1287, 1288, 1289, 1285, 1290, 1291, 1284, 1289, 1292, 1288, + 1293, 1294, 0, 1292, 1292, 1293, 1293, 1296, 1290, 1297, + 1287, 1295, 1295, 1298, 1291, 1299, 1300, 1301, 1302, 1303, + 1299, 1294, 1298, 1305, 1304, 1303, 1296, 1306, 1297, 1304, + 1314, 1307, 1308, 1306, 1309, 1300, 1302, 1301, 1308, 1310, + 1309, 1311, 1312, 1313, 1314, 1315, 1317, 1317, 1316, 1305, - 1316, 1308, 1309, 1310, 1318, 1318, 1313, 1319, 1312, 1320, - 1322, 1321, 1319, 1320, 1323, 1324, 1328, 1324, 1326, 1322, - 1327, 1324, 1329, 1330, 1335, 1327, 1333, 1323, 1331, 1331, - 1332, 1328, 1333, 1334, 1324, 1332, 1326, 1335, 1336, 1330, - 1337, 1338, 1329, 1336, 1337, 1338, 1339, 1340, 1334, 1341, - 1342, 1343, 1343, 1345, 1347, 1348, 1342, 1349, 1349, 1351, - 1348, 1350, 1353, 1353, 1357, 1340, 1339, 1350, 1358, 1341, - 1355, 1345, 1361, 1355, 1362, 1347, 1356, 1356, 1360, 1351, - 1357, 1360, 1364, 1362, 1358, 1363, 1363, 1365, 1366, 1367, - 1368, 1370, 1361, 1371, 1367, 1369, 1369, 1364, 1372, 1373, + 1307, 1318, 1319, 1323, 1318, 1320, 1320, 1323, 1310, 1324, + 1311, 1312, 1313, 1316, 1319, 1322, 1315, 1321, 1321, 1325, + 1322, 1326, 1324, 1327, 1331, 1327, 1329, 1330, 1325, 1327, + 1332, 1333, 1330, 1335, 1326, 1334, 1334, 1336, 1335, 1331, + 1337, 1338, 1327, 1336, 1329, 1340, 1339, 1333, 1341, 1340, + 1332, 1339, 1341, 1342, 1338, 1337, 1343, 1344, 1345, 1346, + 1346, 1348, 1350, 1351, 1345, 1352, 1352, 1354, 1351, 1353, + 1356, 1356, 1360, 1342, 1343, 1353, 1361, 1344, 1358, 1348, + 1364, 1358, 1365, 1350, 1359, 1359, 1363, 1354, 1360, 1363, + 1367, 1365, 1361, 1366, 1366, 1368, 1369, 1370, 1371, 1373, - 1370, 1374, 1374, 1375, 1368, 1376, 1378, 1366, 1365, 1377, - 1381, 1371, 1383, 1372, 1377, 1379, 1379, 1375, 1380, 1382, - 1382, 1378, 1380, 1376, 1373, 1384, 1386, 1385, 1387, 1390, - 1381, 1385, 1391, 1387, 1383, 1392, 1384, 1389, 1389, 1393, - 1394, 1395, 1395, 1396, 1397, 1386, 1391, 1390, 1396, 1398, - 1399, 1400, 1401, 1393, 1392, 1392, 1400, 1403, 1402, 1399, - 1402, 1404, 1403, 1405, 1397, 1394, 1408, 1404, 1406, 1398, - 1409, 1409, 1401, 1410, 1406, 1411, 1414, 1413, 1415, 1415, - 1408, 1411, 1413, 1405, 1416, 1416, 1418, 1417, 1419, 1423, - 1420, 1425, 1410, 1420, 1421, 1421, 1422, 1425, 1431, 1424, + 1364, 1374, 1370, 1372, 1372, 1367, 1375, 1376, 1373, 1377, + 1377, 1378, 1371, 1379, 1381, 1369, 1368, 1380, 1384, 1374, + 1386, 1375, 1380, 1382, 1382, 1378, 1383, 1385, 1385, 1381, + 1383, 1379, 1376, 1387, 1389, 1388, 1390, 1393, 1384, 1388, + 1394, 1390, 1386, 1395, 1387, 1392, 1392, 1396, 1397, 1398, + 1398, 1399, 1400, 1389, 1394, 1393, 1399, 1401, 1402, 1403, + 1404, 1396, 1395, 1395, 1403, 1406, 1405, 1402, 1405, 1407, + 1406, 1408, 1400, 1397, 1411, 1407, 1409, 1401, 1412, 1412, + 1404, 1413, 1409, 1414, 1417, 1416, 1418, 1418, 1411, 1414, + 1416, 1408, 1419, 1419, 1421, 1420, 1422, 1425, 1423, 1427, - 1414, 1417, 1424, 1419, 1418, 1424, 1426, 1427, 1422, 1423, - 1427, 1426, 1429, 1430, 1433, 1433, 1432, 1424, 1430, 1432, - 1435, 1429, 1434, 1431, 1440, 1435, 1427, 1438, 1434, 1436, - 1436, 1437, 1437, 1438, 1439, 1441, 1442, 1440, 1443, 1439, - 1444, 1445, 1446, 1444, 1447, 1448, 1449, 1445, 1446, 1447, - 1453, 1448, 1450, 1441, 1454, 1442, 1452, 1450, 1443, 1451, - 1451, 1452, 1455, 1456, 1457, 1460, 1461, 1458, 1453, 1449, - 1459, 1460, 1462, 1463, 1454, 1464, 1470, 1456, 1457, 1458, - 1466, 1466, 1455, 1459, 1467, 1468, 1461, 1463, 1469, 1469, - 1468, 1470, 1462, 1471, 1472, 1473, 1464, 1474, 1476, 1475, + 1413, 1423, 1424, 1424, 1426, 1435, 0, 1428, 1417, 1420, + 1428, 1422, 1421, 1428, 1429, 1425, 1426, 1430, 1431, 1427, + 1429, 1431, 1430, 1433, 1434, 1428, 1437, 1437, 1436, 1434, + 1435, 1436, 1433, 1438, 1446, 1439, 1444, 1431, 1445, 1438, + 1439, 1440, 1440, 1441, 1441, 1442, 1447, 1443, 1453, 1444, + 0, 1442, 1443, 1446, 1448, 1449, 1445, 1448, 1450, 1457, + 1451, 1449, 1452, 1458, 1450, 1451, 1447, 1454, 1452, 1455, + 1455, 1453, 1454, 1456, 1459, 1460, 1461, 1457, 1456, 1462, + 1463, 1464, 1465, 1458, 1466, 1467, 1468, 1464, 1471, 1460, + 1461, 1462, 1472, 1463, 1459, 1470, 1470, 1472, 1474, 1467, - 1477, 1478, 1482, 1486, 1467, 1476, 1474, 1471, 1480, 1477, - 1484, 1484, 1477, 1473, 1475, 1486, 1483, 1478, 1472, 1483, - 1485, 1485, 1487, 1480, 1489, 1489, 1488, 1482, 1480, 1488, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1492, 1493, 1497, - 1487, 1503, 1500, 1490, 1502, 1496, 1499, 1498, 1500, 1504, - 1491, 1495, 1505, 1494, 1503, 1499, 1498, 1506, 1497, 1498, - 1501, 1501, 1507, 1510, 1502, 1511, 1505, 1504, 1512, 1512, - 1513, 1514, 1515, 1506, 1507, 1516, 1516, 1515, 1519, 1518, - 1514, 1520, 1517, 1511, 1518, 1521, 1513, 1522, 1510, 1525, - 1516, 1517, 1522, 1522, 1517, 1524, 1519, 1526, 1529, 0, + 1473, 1473, 1465, 1475, 1466, 1476, 1477, 1468, 1471, 1478, + 1479, 1481, 1480, 1474, 1482, 1486, 1484, 1475, 1478, 1480, + 1481, 1488, 1488, 1481, 1477, 1479, 1489, 1489, 1491, 1476, + 1482, 1484, 1487, 1490, 1492, 1487, 1484, 1492, 1493, 1493, + 1486, 1494, 1495, 1496, 1497, 1490, 1491, 1498, 1496, 1497, + 1500, 1499, 1501, 1502, 1494, 1503, 1506, 1504, 1509, 1500, + 1507, 1495, 1502, 1504, 1503, 1502, 1498, 1499, 1505, 1505, + 1508, 1501, 1509, 1507, 1510, 1511, 1506, 1514, 1515, 1516, + 1516, 1517, 1518, 1521, 1519, 1520, 1520, 1511, 1508, 1519, + 1510, 1518, 1521, 1522, 1523, 1521, 1515, 1517, 1522, 1524, - 1527, 1528, 1520, 1521, 1525, 1527, 1531, 1528, 1532, 1524, - 1530, 1530, 1531, 1532, 1533, 1534, 1529, 1536, 1537, 1526, - 1533, 1534, 1538, 1539, 1540, 1541, 1543, 1540, 1538, 1545, - 1546, 1541, 1537, 1540, 1543, 1547, 1539, 1536, 1548, 1549, - 1550, 1551, 1552, 1547, 1553, 1553, 1556, 1548, 1545, 1546, - 1558, 1554, 1549, 1550, 1555, 1551, 1552, 1554, 1559, 1556, - 1555, 1557, 1557, 1560, 1561, 1562, 1553, 1563, 1564, 1565, - 1558, 1562, 1567, 1567, 1568, 1569, 1559, 1561, 1570, 1569, - 1571, 1572, 1560, 1570, 1564, 1571, 1572, 1565, 1573, 1563, - 1574, 1576, 1577, 1577, 1568, 1578, 1579, 1573, 1580, 1581, + 1520, 1525, 1514, 1526, 1528, 1530, 1529, 1532, 1526, 1526, + 1531, 1533, 1523, 1532, 1540, 1531, 1534, 1534, 1528, 1525, + 1524, 1529, 1535, 1543, 1541, 1536, 1537, 1530, 1535, 1533, + 1536, 1538, 1537, 1542, 1540, 1545, 1543, 1538, 1541, 1542, + 1544, 1545, 1547, 1544, 1549, 1550, 1551, 1552, 1553, 1544, + 1547, 0, 1554, 1555, 1551, 1556, 1552, 1557, 1557, 1560, + 1558, 1553, 1559, 1549, 1550, 1554, 1558, 1555, 1559, 1556, + 1561, 1561, 1560, 1562, 1563, 1564, 1565, 1566, 1567, 1557, + 1568, 1569, 1572, 1566, 1571, 1571, 1573, 1578, 1577, 1565, + 1573, 0, 1563, 1562, 1564, 1582, 1568, 1577, 1574, 1569, - 1581, 1582, 1583, 1586, 1584, 1587, 1576, 1585, 1579, 1583, - 1590, 1589, 1588, 1574, 1578, 1582, 1584, 1580, 1588, 1585, - 1591, 1593, 1586, 1589, 1593, 1587, 1591, 1597, 1590, 1592, - 1592, 1594, 1594, 1596, 1598, 1600, 1597, 1601, 1596, 1601, - 1598, 1599, 1599, 1602, 1603, 1604, 1602, 1600, 1605, 1607, - 1606, 1608, 1611, 1609, 1607, 1610, 1613, 1611, 1615, 1619, - 1608, 0, 1612, 1615, 1603, 1609, 1605, 1604, 1606, 1614, - 1610, 1612, 1616, 1618, 1614, 1621, 1613, 1617, 1617, 1618, - 1619, 1614, 1622, 1623, 1612, 1625, 1624, 1616, 1624, 1626, - 1626, 1627, 1627, 1629, 1621, 1628, 1628, 1632, 1622, 1625, + 1567, 1575, 1572, 1574, 1576, 1580, 1575, 1581, 1581, 1576, + 1578, 1583, 1584, 1586, 1582, 1585, 1585, 1587, 1588, 1590, + 1580, 1589, 1591, 1583, 1587, 1593, 1592, 1586, 1594, 1595, + 1588, 1584, 1592, 1589, 1601, 1595, 0, 1593, 1590, 1596, + 1596, 1597, 1591, 1601, 1597, 1600, 1594, 1598, 1598, 1602, + 1600, 1603, 1603, 1604, 1605, 1602, 1605, 1606, 1607, 1608, + 1606, 1609, 1610, 1611, 1612, 1604, 1613, 1616, 1611, 1612, + 1614, 1615, 1616, 1618, 1617, 1613, 1621, 0, 1607, 1609, + 1610, 1608, 1614, 1617, 1620, 1619, 1615, 1622, 1622, 1620, + 1619, 1621, 1623, 1618, 1624, 1626, 1617, 1619, 1623, 1628, - 1633, 1625, 1640, 1623, 1630, 1630, 1631, 1631, 1634, 1634, - 1635, 1636, 1637, 1629, 1635, 1637, 1639, 1636, 1632, 1641, - 1640, 1633, 1639, 1642, 1643, 1641, 1646, 1643, 1644, 1644, - 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654, - 1660, 1657, 1650, 1653, 1653, 1647, 1647, 1647, 1642, 1655, - 1656, 1655, 1647, 1654, 1648, 1649, 1657, 1651, 1658, 1659, - 1660, 1656, 1661, 1663, 1658, 1662, 1662, 1665, 1659, 1664, - 1664, 1666, 1667, 1667, 1668, 1668, 1669, 1672, 1672, 1673, - 1677, 1674, 1676, 1661, 1679, 1679, 1678, 1665, 1680, 1663, - 1674, 1676, 1678, 1666, 1683, 1681, 1669, 1684, 1682, 1685, + 1627, 1629, 1634, 1629, 1630, 1631, 1631, 1632, 1632, 1633, + 1633, 1635, 1635, 1637, 1626, 1624, 1627, 1638, 1630, 1628, + 1630, 1645, 1634, 1636, 1636, 1639, 1639, 1640, 1647, 1641, + 1642, 1640, 1653, 1642, 1637, 1641, 1644, 1646, 1638, 1645, + 1654, 1648, 1644, 1646, 1648, 1649, 1649, 1650, 1650, 1651, + 1652, 1655, 1653, 1647, 1656, 1651, 1659, 1655, 0, 1665, + 1654, 1658, 1652, 1652, 1652, 1661, 1658, 1658, 1662, 1652, + 1659, 1660, 1663, 1660, 1656, 1664, 1661, 1666, 1663, 1665, + 1667, 1667, 1668, 1662, 1664, 1669, 1669, 1670, 1671, 1672, + 1672, 1673, 1673, 1674, 1677, 1677, 1678, 1679, 1666, 1682, - 1685, 1677, 1686, 1683, 1673, 1682, 1687, 1689, 1690, 1680, - 1681, 1691, 1689, 1692, 1690, 1693, 1695, 1695, 1694, 1698, - 1692, 1693, 1687, 1684, 1694, 1696, 1697, 1699, 1686, 1700, - 1696, 1691, 1702, 1701, 1703, 1697, 1701, 1704, 1704, 1698, - 1708, 1700, 1705, 1706, 1707, 1711, 1699, 1709, 1705, 1706, - 1702, 1709, 1712, 1713, 1715, 1708, 1714, 1714, 1713, 1718, - 1703, 1716, 1719, 1720, 1707, 1711, 1719, 1709, 1721, 1720, - 1722, 1722, 1724, 1715, 1712, 1723, 1716, 1721, 1718, 1723, - 1725, 1725, 1726, 1724, 1727, 1728, 1729, 1730, 1724, 1731, - 1732, 1729, 1734, 1733, 1735, 1735, 1732, 1734, 1727, 1736, + 1681, 1684, 1684, 1685, 1686, 1683, 1679, 1670, 1668, 1681, + 1671, 1683, 1689, 1674, 1688, 1687, 1690, 1690, 1691, 1686, + 1682, 1678, 1687, 1688, 1685, 1692, 1694, 1695, 1696, 1697, + 1701, 1694, 1703, 1695, 1698, 1701, 1697, 1699, 1689, 1704, + 1698, 1692, 1702, 1699, 1691, 1700, 1700, 1705, 1696, 1707, + 1706, 1702, 1703, 1706, 1708, 1709, 1709, 1710, 1704, 1705, + 1711, 1712, 1713, 1710, 1714, 1716, 1711, 1707, 1714, 1717, + 1718, 1719, 1719, 1720, 1721, 1718, 1723, 1713, 1724, 1726, + 1708, 1712, 1724, 1729, 1714, 1716, 1728, 1725, 1726, 1721, + 1728, 1717, 1720, 1725, 1729, 1723, 1727, 1727, 1731, 1729, - 1736, 1737, 1739, 1726, 1728, 1737, 1740, 1730, 1733, 1731, - 1741, 1739, 1742, 1742, 1744, 1744, 1748, 1740, 1745, 1746, - 1747, 1750, 1740, 1745, 1745, 1746, 1747, 1749, 1751, 1753, - 1741, 1754, 1749, 1750, 1751, 1754, 1755, 1756, 1757, 1758, - 1759, 1753, 1748, 1760, 1757, 1762, 1759, 1763, 1755, 1764, - 1766, 1767, 1767, 1766, 1764, 1760, 1770, 1762, 1768, 1768, - 0, 1758, 1756, 1769, 1769, 1771, 1763, 1772, 1775, 1773, - 1777, 1771, 1774, 1772, 1773, 1777, 1770, 1775, 1774, 1779, - 1780, 1783, 1779, 1781, 1781, 1784, 1785, 1786, 1786, 1787, - 1788, 1785, 1780, 1783, 1789, 1788, 1791, 1784, 1787, 1789, + 1730, 1730, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1734, + 1739, 1740, 1740, 1737, 1746, 1739, 1732, 1741, 1741, 1731, + 1742, 1744, 1733, 1738, 1742, 1735, 1736, 1745, 1747, 1747, + 1744, 1749, 1749, 1751, 1746, 1750, 1752, 1753, 1745, 1751, + 1750, 1750, 1752, 1745, 1754, 1755, 1756, 1758, 1760, 1754, + 1759, 1761, 1756, 1763, 1759, 1762, 1764, 1755, 1765, 1758, + 1760, 1762, 1764, 1753, 1768, 1767, 1769, 1772, 1772, 1771, + 1765, 1769, 1771, 1773, 1773, 1763, 1761, 1767, 1774, 1774, + 1775, 1776, 1777, 1768, 1778, 1779, 1780, 1776, 1777, 1778, + 1784, 1779, 1782, 1784, 1785, 1780, 1788, 1782, 1786, 1786, - 1790, 1790, 1792, 1793, 1794, 1795, 1798, 1796, 1797, 1795, - 1799, 1792, 1796, 1800, 1797, 1801, 1791, 1804, 1805, 1799, - 1809, 1793, 1808, 1794, 1798, 1803, 1803, 1805, 0, 1801, - 1807, 1800, 1806, 1806, 1808, 1804, 1811, 1803, 1810, 1807, - 1817, 1809, 1818, 1810, 1814, 1814, 1820, 1816, 1821, 1811, - 1816, 1822, 1823, 1824, 1824, 1830, 1817, 1822, 1818, 1826, - 1826, 1820, 1821, 1825, 1827, 1825, 1829, 1831, 1831, 1823, - 1832, 1833, 1827, 1829, 1834, 1830, 1835, 1836, 1837, 1832, - 1838, 1839, 1841, 1844, 1842, 1845, 1834, 1839, 1835, 1836, - 1843, 1843, 1833, 1847, 1846, 1838, 1842, 1846, 1847, 1848, + 1775, 1789, 1790, 1791, 1791, 1792, 1785, 1790, 1788, 1795, + 1793, 1794, 1795, 1789, 1792, 1793, 1794, 1796, 1796, 1797, + 1798, 1801, 1799, 1800, 1803, 1801, 1802, 1804, 1805, 1798, + 1803, 1802, 1806, 1807, 1809, 1809, 1810, 1805, 1815, 1797, + 1799, 0, 1800, 1811, 1813, 1804, 1809, 1807, 1812, 1812, + 1806, 1814, 1811, 1813, 1810, 1816, 1817, 1820, 1820, 1815, + 1816, 1822, 1823, 1814, 1822, 1824, 1827, 1826, 1828, 1817, + 1829, 1830, 1830, 1831, 1828, 1831, 1832, 1832, 1823, 1835, + 1827, 1824, 1826, 1833, 1836, 1838, 1835, 1829, 1837, 1837, + 1839, 1833, 1843, 1840, 1838, 1841, 1842, 1844, 1848, 1850, - 1839, 1844, 1841, 1850, 1837, 1845, 1852, 1851, 1850, 1851, - 1853, 1854, 1856, 1858, 1859, 1853, 1860, 1862, 1854, 1848, - 1861, 1856, 1861, 1859, 1852, 1864, 1865, 1864, 1860, 1866, - 1866, 1858, 1867, 1868, 1870, 1869, 1862, 1869, 1868, 1870, - 1865, 1871, 1872, 1873, 1874, 1877, 1871, 1875, 1876, 1879, - 1874, 1880, 1875, 1877, 1881, 1881, 1882, 1882, 1867, 1883, - 1872, 1876, 1884, 1873, 1885, 1880, 1886, 1887, 1879, 1887, - 1885, 1886, 1888, 1889, 1883, 1890, 1890, 1892, 1892, 1891, - 1896, 1889, 1884, 1893, 1893, 1894, 1900, 1895, 1898, 1889, - 1888, 1891, 1895, 1899, 1894, 1899, 1901, 1898, 1896, 1902, + 1845, 1847, 1849, 1849, 1836, 1840, 1845, 1841, 1842, 1851, + 1848, 1839, 1844, 1852, 1854, 1853, 1852, 1850, 1843, 1845, + 1853, 1847, 1856, 1857, 1858, 1857, 1859, 1856, 1860, 1851, + 1862, 1859, 1864, 1868, 1854, 1860, 1865, 1866, 1867, 1862, + 1867, 1870, 1858, 1870, 1871, 1865, 1872, 1872, 1873, 1866, + 1864, 1874, 1868, 1875, 1876, 1875, 1874, 1877, 1871, 1876, + 1878, 1879, 1877, 1880, 1882, 1881, 1885, 1883, 1886, 1880, + 1881, 1887, 1887, 1889, 1873, 1883, 1890, 1882, 1878, 1888, + 1888, 1879, 1886, 1891, 1894, 1885, 1892, 1895, 1889, 1891, + 1893, 1892, 1893, 1896, 1896, 1895, 1890, 1897, 1898, 1898, - 1898, 1901, 1901, 1903, 1905, 1906, 1907, 1900, 1902, 1909, - 1906, 1907, 1910, 1913, 1911, 1903, 1905, 1912, 1912, 1914, - 1915, 1916, 1909, 1911, 1917, 1921, 1919, 1933, 1920, 1922, - 1930, 1913, 1910, 1924, 1922, 1916, 1915, 1914, 1919, 1917, - 1920, 1923, 1924, 1927, 1929, 1921, 1923, 1932, 1931, 1927, - 1929, 1934, 1933, 1930, 1935, 1935, 1938, 1936, 1937, 1937, - 1934, 1941, 1927, 1931, 1939, 1932, 1936, 1940, 1939, 0, - 1947, 1942, 1940, 1943, 1941, 1938, 1942, 1942, 1944, 1943, - 1945, 1946, 1952, 1945, 1944, 1950, 1950, 1951, 1951, 1946, - 1947, 1952, 1953, 1953, 1954, 1954, 1955, 1956, 1957, 1964, + 1899, 1899, 1894, 1895, 1900, 1901, 1902, 1904, 1906, 1897, + 1901, 1909, 1905, 1900, 1905, 1907, 1904, 1908, 1911, 1904, + 1907, 1907, 1912, 1909, 1902, 1915, 1908, 1912, 1913, 1906, + 1911, 1916, 1917, 1913, 1918, 1918, 1919, 1920, 1915, 1922, + 1921, 1917, 1923, 1927, 1928, 1929, 1925, 1926, 1936, 1928, + 1929, 1916, 1930, 1922, 1919, 1920, 1921, 1923, 1925, 1926, + 1933, 1930, 1935, 1927, 1938, 1937, 1933, 1939, 1935, 1940, + 1944, 1936, 1941, 1941, 1942, 1943, 1943, 1945, 1940, 1933, + 1937, 1945, 1938, 1942, 1947, 1946, 1953, 0, 1948, 1944, + 1946, 1952, 1939, 1948, 1948, 1949, 1950, 1947, 1962, 1952, - 1958, 1965, 1951, 1964, 1957, 1958, 1959, 1959, 1955, 1960, - 1960, 1961, 1962, 1951, 1968, 1956, 1961, 1969, 1962, 1966, - 1970, 1965, 1969, 1966, 1972, 1971, 1973, 1975, 1976, 1972, - 1974, 1977, 1979, 1976, 1978, 1978, 1979, 1980, 1982, 1968, - 1971, 1984, 1983, 1970, 1973, 1981, 1974, 1975, 1986, 1987, - 1981, 1985, 1980, 1977, 1983, 1990, 1985, 1988, 1988, 1991, - 1984, 1986, 1992, 1990, 1982, 1993, 1994, 1987, 1995, 2000, - 1996, 1997, 1998, 2001, 2001, 2004, 2002, 2009, 1991, 2002, - 2040, 1992, 2003, 1997, 2000, 2005, 2040, 1995, 1993, 2004, - 1994, 1996, 2009, 1998, 2010, 2003, 2006, 2006, 2005, 2007, + 1951, 1949, 1950, 1951, 1956, 1956, 1953, 1957, 1957, 1958, + 1959, 1959, 1960, 1960, 1961, 1963, 1962, 1968, 1958, 1964, + 1967, 1963, 1957, 1968, 1964, 1967, 1961, 1965, 1965, 1966, + 1966, 1970, 1971, 1957, 1972, 1970, 1973, 1975, 1972, 1976, + 1977, 1979, 1978, 1980, 1976, 1982, 1979, 1984, 1981, 1983, + 1985, 1985, 1971, 1987, 1983, 1986, 1973, 1978, 1989, 1986, + 1990, 1980, 1975, 1977, 1981, 1982, 1988, 1991, 1987, 1984, + 1992, 1988, 1990, 1994, 1993, 1992, 1995, 1995, 1998, 1999, + 1997, 2000, 2001, 2002, 1989, 2007, 1991, 1993, 1997, 2003, + 2005, 1994, 0, 2004, 2008, 2008, 2009, 1998, 1999, 2009, - 2007, 2008, 2008, 2011, 2011, 2012, 2014, 2010, 2013, 2013, - 2016, 2014, 2017, 2018, 2012, 2016, 2019, 2012, 2020, 2020, - 2021, 2021, 2022, 2023, 2023, 2024, 2025, 2025, 2019, 2026, - 2027, 2030, 2017, 2018, 2032, 2027, 2028, 2028, 2029, 2029, - 2031, 2022, 2033, 2024, 2026, 2030, 2035, 2037, 2032, 2031, - 2039, 2035, 2036, 2036, 2038, 2038, 2041, 2042, 2042, 2041, - 2044, 2033, 2043, 2043, 2046, 2045, 2037, 2049, 2039, 2047, - 2047, 2050, 2052, 2042, 2051, 2060, 2052, 2053, 2053, 2044, - 2045, 2054, 2056, 2046, 2057, 2055, 2061, 2049, 2062, 2051, - 2055, 2059, 2059, 2061, 2050, 2060, 2063, 2056, 2064, 2057, + 2007, 2010, 2002, 2011, 2000, 2004, 2001, 2012, 2013, 2013, + 2003, 2005, 2014, 2014, 2010, 2015, 2015, 2011, 2016, 2017, + 2012, 2018, 2018, 2020, 2020, 2019, 2021, 2024, 2025, 2026, + 2023, 2021, 2017, 2016, 2019, 2023, 2029, 2019, 2027, 2027, + 2031, 2026, 2028, 2028, 2030, 2030, 2033, 2024, 2025, 2032, + 2032, 2034, 2035, 2035, 2037, 2029, 2034, 2038, 2031, 2036, + 2036, 2033, 2039, 2040, 2042, 2044, 2038, 2046, 2037, 2042, + 2043, 2043, 2045, 2045, 2047, 2048, 2039, 2051, 2048, 2052, + 2047, 2053, 2040, 2056, 2044, 2046, 2049, 2049, 2050, 2050, + 2054, 2054, 2057, 2058, 2052, 2059, 2051, 2060, 2060, 2059, - 2054, 2065, 2062, 2066, 2066, 2068, 2067, 2068, 2069, 2071, - 2074, 2069, 2072, 2073, 2063, 2067, 2064, 2072, 2073, 2075, - 2076, 2071, 2078, 2082, 2077, 2080, 2069, 2065, 2069, 2077, - 2080, 2081, 2075, 2083, 2084, 2074, 2081, 2085, 2082, 2083, - 2086, 2076, 2087, 2085, 2088, 2086, 2089, 2087, 2078, 2090, - 2095, 2091, 2090, 2092, 2093, 2084, 2094, 2100, 0, 2089, - 2091, 2096, 2092, 2093, 2095, 2094, 2097, 2096, 2108, 2088, - 2098, 2102, 2097, 2104, 2098, 2103, 2103, 2100, 2106, 2104, - 2102, 2105, 2105, 2109, 2108, 2110, 2110, 2111, 2112, 2114, - 2105, 2115, 2117, 2116, 2121, 2123, 2123, 2112, 2106, 2109, + 2053, 2061, 2049, 2056, 2062, 2067, 2063, 2064, 2058, 2062, + 2066, 2066, 2068, 2069, 2070, 2057, 2071, 2072, 0, 2068, + 2061, 2063, 2064, 2073, 2073, 2067, 2074, 2069, 2075, 2078, + 2075, 2081, 2070, 2076, 2071, 2074, 2076, 2079, 2083, 2080, + 2085, 2078, 2079, 2072, 2080, 2082, 2089, 2084, 2091, 2087, + 2088, 2076, 2084, 2076, 2087, 2088, 2081, 2090, 2082, 2083, + 2093, 2089, 2092, 2090, 2095, 2093, 2085, 2094, 2092, 2091, + 2096, 2097, 2094, 2098, 2097, 2099, 2100, 2101, 2102, 2107, + 0, 2103, 2098, 2096, 2099, 2100, 2101, 2103, 2104, 2095, + 2113, 2105, 2102, 2109, 2104, 2105, 2110, 2110, 2111, 2107, - 2106, 2114, 2111, 2119, 2117, 2120, 2119, 2115, 2116, 2122, - 2120, 2124, 2124, 2128, 2121, 2126, 2126, 2127, 2128, 2129, - 2127, 2122, 2130, 2131, 2131, 2129, 2132, 2134, 2130, 2133, - 2133, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2147, 2134, - 2132, 2138, 2140, 2142, 0, 2135, 2143, 2142, 2146, 2143, - 2139, 2136, 2144, 2144, 2145, 2150, 2148, 2146, 2147, 2145, - 2148, 2149, 2149, 2153, 2152, 2154, 2155, 2156, 2150, 2152, - 2157, 2156, 2158, 2159, 2161, 2160, 2166, 2158, 2163, 2159, - 2155, 2160, 2164, 2153, 2166, 2154, 2167, 2164, 2167, 2165, - 2157, 2170, 2161, 2173, 2163, 2165, 2171, 2171, 2172, 2174, + 2112, 2112, 2109, 2115, 2111, 2116, 2117, 2117, 2118, 2112, + 2113, 2119, 2113, 2121, 2122, 2124, 2123, 2127, 2128, 2115, + 2119, 2116, 2127, 2118, 2129, 2121, 2126, 2124, 0, 2126, + 2122, 2123, 2130, 2130, 2131, 2131, 2129, 2135, 2128, 2133, + 2133, 2134, 2135, 2136, 2134, 2137, 2138, 2139, 2139, 2136, + 2140, 2137, 2141, 2141, 2142, 2138, 2143, 2144, 2145, 2145, + 2147, 2146, 2154, 2148, 2140, 2150, 2142, 2146, 2148, 2150, + 2143, 2154, 2151, 2155, 2147, 2151, 2144, 2152, 2152, 2153, + 2161, 2156, 2157, 2157, 2153, 2156, 2158, 2160, 2162, 2163, + 2164, 2165, 2160, 2155, 2164, 2169, 2166, 0, 2167, 2158, - 2174, 2172, 2176, 2177, 2178, 2170, 2176, 2179, 2179, 2177, - 2185, 2180, 2183, 2183, 2188, 2187, 2178, 2191, 2192, 2173, - 2180, 2193, 2191, 2195, 2195, 2199, 2193, 2194, 2185, 2187, - 2188, 2199, 2194, 2197, 2197, 2200, 2200, 2201, 2202, 2205, - 2203, 2209, 2206, 2210, 2192, 2203, 2207, 2207, 2211, 2210, - 2209, 2216, 2212, 2201, 2206, 2214, 2214, 2217, 2205, 2215, - 2202, 2222, 2215, 2219, 2219, 2223, 2211, 2212, 2220, 2220, - 2216, 2221, 2224, 2226, 2223, 2217, 2221, 2224, 2225, 2222, - 2225, 2227, 2228, 2229, 2230, 2231, 0, 2226, 2229, 2237, - 2231, 2232, 2232, 2236, 2228, 2227, 2233, 2233, 2234, 2234, + 2161, 2166, 2171, 2163, 2167, 2172, 2168, 2178, 2162, 2173, + 2172, 2165, 2168, 2169, 2174, 2173, 2181, 2175, 2171, 2175, + 2186, 2178, 2174, 2179, 2179, 2180, 2182, 2182, 2180, 2184, + 2185, 2188, 2186, 2184, 2187, 2187, 2185, 2191, 2191, 2193, + 2188, 2195, 2181, 2196, 2199, 2200, 2201, 2202, 2209, 2199, + 2207, 2201, 2202, 2203, 2203, 2195, 2207, 2193, 2210, 2196, + 2205, 2205, 2208, 2208, 2209, 2211, 2213, 2214, 2215, 2215, + 2211, 2200, 2217, 2219, 2220, 2224, 2218, 2222, 2222, 2214, + 2210, 2217, 2218, 2223, 2225, 2213, 2223, 2227, 2227, 2220, + 2229, 2219, 2228, 2228, 2224, 2229, 2230, 2231, 2232, 2233, - 2235, 2235, 2241, 2238, 2230, 2236, 2242, 2237, 2238, 2239, - 2239, 2240, 2240, 2243, 2241, 2244, 2245, 2245, 2242, 2246, - 2247, 2247, 2248, 2248, 2249, 2250, 2253, 2251, 2252, 2255, - 2256, 2244, 2259, 2243, 2251, 2249, 2254, 2250, 2246, 2258, - 2252, 2254, 2257, 2257, 2260, 2262, 2253, 2261, 2258, 2255, - 2256, 2263, 2264, 2264, 2265, 2266, 2267, 2269, 2259, 2270, - 2261, 2271, 2274, 2265, 2260, 2263, 2273, 2274, 0, 2262, - 2266, 2267, 2275, 2272, 2283, 2269, 2272, 2275, 2276, 2276, - 2273, 2270, 2277, 2277, 2271, 2278, 2278, 2280, 2280, 2282, - 2282, 2284, 2283, 2285, 2287, 2288, 2289, 2290, 2291, 2292, + 2236, 2233, 2225, 2232, 2234, 2235, 2231, 2238, 2237, 0, + 2239, 2245, 2236, 2237, 2230, 2239, 2240, 2240, 2234, 2235, + 2241, 2241, 2242, 2242, 2243, 2243, 2244, 2238, 2246, 2245, + 2247, 2247, 2249, 2246, 2248, 2248, 2250, 2251, 2244, 2252, + 2253, 2253, 2254, 2257, 2249, 2255, 2255, 2258, 2250, 2256, + 2256, 2259, 2260, 2261, 2257, 2252, 2263, 2251, 2259, 2258, + 2262, 2254, 2264, 2266, 2260, 2262, 2265, 2265, 2267, 2268, + 2269, 2270, 2266, 2261, 2271, 2273, 2263, 2272, 2272, 2277, + 2278, 2274, 2264, 2269, 2273, 2275, 2279, 2280, 2271, 2268, + 2280, 2281, 2292, 2282, 2267, 2270, 2274, 2277, 2282, 2283, - 2294, 2293, 2284, 2293, 2295, 2296, 2300, 2291, 2297, 2297, - 2299, 2299, 2285, 2288, 2287, 2301, 2306, 2290, 2289, 2292, - 2294, 2304, 2295, 2296, 2301, 2302, 2302, 2307, 2300, 2308, - 2304, 2305, 2305, 2309, 2306, 2310, 2308, 2311, 2312, 2313, - 2314, 2314, 2315, 2315, 2316, 2307, 2317, 2318, 2309, 2319, - 2316, 2320, 2321, 2310, 2312, 2311, 2320, 2322, 2313, 2324, - 2323, 2324, 2318, 2329, 2317, 2323, 2325, 2325, 2319, 2326, - 2331, 2326, 2321, 2327, 2327, 2332, 2333, 2322, 2334, 2331, - 2335, 2336, 2329, 2337, 2340, 2335, 2341, 2344, 2333, 2341, - 2342, 2342, 2343, 2346, 2332, 2345, 2345, 2346, 2334, 2348, + 2275, 2291, 2278, 2292, 2283, 2281, 2284, 2284, 2293, 2279, + 2285, 2285, 2286, 2286, 2288, 2288, 2290, 2290, 2294, 2291, + 2296, 2297, 2298, 2299, 2304, 2300, 2301, 2293, 2302, 2303, + 2302, 2309, 2305, 2294, 2300, 2306, 2306, 2308, 2308, 2297, + 2296, 2315, 2304, 2299, 2298, 2310, 2301, 2311, 2311, 2303, + 2305, 2313, 2316, 2309, 2310, 2314, 2314, 2317, 2318, 2315, + 2313, 2319, 2320, 2322, 2317, 2321, 2323, 2323, 2324, 2324, + 2316, 2325, 2326, 2318, 2327, 2328, 2330, 2325, 2329, 2319, + 2320, 2321, 2322, 2329, 2331, 2333, 2332, 2333, 2338, 2327, + 2326, 2332, 2334, 2334, 2328, 2335, 2330, 2335, 2336, 2336, - 2351, 2336, 2337, 2353, 2340, 2344, 2349, 2343, 2350, 2350, - 2349, 2354, 2355, 2351, 2348, 2356, 2356, 2358, 2353, 2359, - 2360, 2361, 2361, 2362, 2360, 2363, 2363, 2365, 2359, 2358, - 2364, 2354, 2355, 2366, 2367, 2364, 2365, 2368, 2368, 2373, - 2373, 2374, 2362, 2375, 2375, 2376, 2367, 2377, 2378, 2366, - 2379, 2380, 2380, 2381, 2383, 2383, 2386, 2378, 2376, 2379, - 2377, 2386, 2387, 2374, 2388, 2389, 2390, 2387, 2381, 2391, - 2389, 2392, 2395, 2393, 2390, 2398, 2401, 2396, 2388, 2397, - 2392, 2393, 2396, 2401, 2397, 2399, 2399, 2395, 2391, 2402, - 2398, 2400, 2400, 2403, 2402, 2404, 2405, 2408, 2406, 2407, + 2340, 2341, 2342, 2343, 2331, 2344, 2345, 2338, 2346, 2340, + 2344, 2349, 2350, 2352, 2342, 2350, 2351, 2351, 2353, 2357, + 2341, 2354, 2354, 2343, 2363, 2355, 2345, 2346, 2352, 2355, + 2360, 2349, 2362, 2358, 2357, 2364, 2353, 2358, 2359, 2359, + 2365, 2365, 2367, 2360, 2363, 2369, 2371, 2362, 2368, 2369, + 2370, 2370, 2372, 2372, 2367, 2364, 2373, 2368, 2374, 2375, + 2376, 2373, 2377, 2377, 2383, 2371, 2385, 2374, 2382, 2382, + 2384, 2384, 2376, 2387, 2386, 2375, 2388, 2389, 2389, 2385, + 2390, 0, 2387, 2392, 2392, 2388, 2383, 2386, 2395, 2396, + 2397, 2398, 2399, 2395, 2396, 2390, 2398, 2400, 2401, 2404, - 2407, 2409, 2405, 2406, 2410, 2410, 2409, 2411, 2411, 2414, - 0, 2403, 2408, 2404, 2415, 2415, 2416, 2426, 2417, 2416, - 2418, 2419, 2414, 2417, 2417, 2418, 2419, 2420, 2421, 2422, - 2423, 2424, 2421, 2420, 2422, 2425, 2427, 2430, 2426, 2423, - 2429, 2428, 2427, 2425, 2435, 2429, 2424, 2428, 2432, 2430, - 2437, 2433, 2438, 2432, 2433, 2437, 2435, 2438, 2439, 2440, - 2441, 2442, 2443, 2443, 2444, 2447, 2448, 2453, 2449, 2441, - 2442, 2451, 2440, 2444, 2450, 2450, 2439, 2454, 2454, 2452, - 2455, 2457, 2453, 2459, 2447, 2460, 2448, 2449, 2452, 2460, - 2451, 2461, 2461, 2462, 2463, 2464, 2457, 0, 2465, 2455, + 2399, 2402, 2407, 2405, 2397, 2406, 2410, 2401, 2405, 2402, + 2406, 2408, 2408, 2410, 2404, 2411, 2400, 2407, 2409, 2409, + 2411, 2412, 2413, 2414, 2423, 2415, 2416, 2416, 2417, 2414, + 2415, 2418, 2419, 2419, 2420, 2420, 2418, 2423, 2429, 2412, + 2413, 2424, 2424, 2417, 2425, 2426, 0, 2425, 2427, 2428, + 2426, 2426, 2429, 2427, 2428, 2430, 2431, 2432, 2433, 2434, + 2431, 2430, 2432, 2435, 2436, 2439, 2437, 2433, 2440, 2438, + 2439, 2435, 2437, 2442, 2434, 2438, 2443, 2445, 2442, 2443, + 2440, 2447, 2448, 2449, 2450, 2436, 2447, 2448, 2457, 2445, + 2451, 2452, 2453, 2453, 2454, 2458, 2463, 2450, 2459, 2451, - 2463, 2464, 2467, 2459, 2465, 2466, 2466, 2468, 2470, 2471, - 2467, 2473, 2468, 2474, 2475, 2473, 2478, 2470, 2462, 2477, - 2477, 2488, 2471, 2479, 2479, 2480, 2480, 2474, 2483, 2475, - 2482, 2482, 2483, 2484, 2478, 2486, 2486, 2489, 2484, 2490, - 2491, 2488, 2489, 2493, 2501, 2491, 2491, 2494, 2494, 2496, - 2496, 2490, 2497, 2497, 2498, 2499, 2503, 2498, 2504, 2504, - 2505, 2505, 2501, 2493, 2506, 2506, 2507, 2509, 2499, 2508, - 2508, 2510, 2511, 2512, 2513, 2513, 2503, 2518, 2514, 2512, - 2509, 2507, 2514, 2519, 2520, 2517, 2511, 2521, 2522, 2510, - 2517, 2517, 2523, 2521, 2522, 2524, 2525, 2525, 2533, 2524, + 2452, 2449, 2461, 2454, 2460, 2460, 2465, 2457, 2467, 2462, + 2469, 2463, 2464, 2464, 2472, 2458, 2470, 2459, 2462, 2478, + 2470, 2461, 2473, 2467, 2478, 2465, 2471, 2471, 2473, 2474, + 2469, 2475, 2476, 2476, 2477, 2474, 2480, 2475, 2481, 2472, + 2483, 2484, 2477, 2485, 2483, 2480, 2487, 2487, 2488, 2489, + 2489, 2481, 2490, 2490, 2498, 2484, 2492, 2492, 2485, 2493, + 2494, 2496, 2496, 2493, 2499, 2494, 2488, 2500, 2503, 2499, + 2501, 2504, 2504, 2509, 2498, 2501, 2501, 2506, 2506, 2500, + 2507, 2507, 2508, 2511, 2513, 2508, 2509, 2517, 2503, 2514, + 2514, 2515, 2515, 2516, 2516, 2518, 2518, 2519, 2520, 2521, - 2518, 2528, 2530, 2519, 2520, 2531, 2528, 2535, 2531, 2534, - 2530, 2536, 2534, 2537, 2538, 2539, 2536, 2523, 2540, 2540, - 2544, 2541, 2543, 2533, 2535, 2535, 2547, 2542, 2553, 2539, - 2542, 2537, 2545, 2556, 2538, 2541, 2543, 2546, 2542, 2544, - 2545, 0, 2546, 2546, 2553, 2547, 2548, 2548, 2549, 2549, - 2550, 2550, 2551, 2551, 2552, 2552, 2554, 2555, 2557, 2556, - 2558, 2554, 2559, 2561, 2561, 2562, 2563, 2557, 2562, 2565, - 2565, 2566, 2567, 2567, 2568, 2570, 2570, 2555, 2566, 2568, - 2558, 2571, 2559, 2572, 2563, 2573, 2575, 2576, 2576, 2577, - 2571, 2578, 2572, 2577, 2573, 2579, 2580, 2582, 2581, 2583, + 2522, 2511, 2517, 2528, 2513, 2524, 2522, 2523, 2523, 2524, + 2519, 2529, 2527, 2521, 2530, 2531, 2520, 2527, 2527, 2532, + 2533, 2531, 2543, 2534, 2540, 2532, 2528, 2534, 2535, 2535, + 2538, 2529, 2540, 2541, 2530, 2538, 2541, 2544, 2545, 2545, + 2544, 2546, 2548, 2547, 2549, 2533, 0, 2543, 2547, 2550, + 2551, 2551, 2552, 2554, 2553, 2555, 0, 2553, 2546, 2546, + 2548, 2556, 2558, 2550, 2549, 2553, 2552, 2554, 2566, 2556, + 2557, 2559, 2559, 2564, 2555, 2557, 2557, 2560, 2560, 2561, + 2561, 2558, 2562, 2562, 2563, 2563, 2565, 2567, 2566, 2564, + 2568, 2565, 2569, 2574, 2570, 2572, 2572, 2573, 2577, 2568, - 2578, 2580, 2580, 2583, 2575, 2591, 2582, 2587, 2588, 2588, - 2579, 2581, 2587, 2590, 2590, 2592, 2593, 2595, 2596, 2591, - 2599, 2601, 2600, 2602, 2604, 2606, 2595, 2608, 2609, 2602, - 2596, 2600, 2608, 2609, 2593, 2611, 2604, 2610, 2610, 2620, - 2592, 2601, 2613, 2621, 2611, 2599, 2606, 2613, 2614, 2614, - 2616, 2616, 2614, 2617, 2617, 2618, 2618, 2619, 2622, 2620, - 2625, 2624, 2621, 2622, 2626, 2625, 2619, 2624, 2628, 2626, - 2627, 2627, 2629, 2630, 2631, 2632, 2633, 2637, 2630, 2634, - 2634, 2632, 2637, 2636, 2638, 2640, 2628, 2636, 2641, 2638, - 2639, 2639, 2631, 2629, 2642, 2644, 2644, 2646, 2647, 2649, + 2573, 2576, 2576, 2578, 2578, 2577, 2581, 2581, 2582, 2583, + 2579, 2574, 2569, 2567, 2570, 2579, 2584, 2582, 2583, 2586, + 2587, 2587, 2588, 2589, 2590, 2584, 2588, 2592, 2591, 2593, + 2603, 2594, 2589, 2591, 2591, 2594, 2598, 2586, 2593, 2590, + 2592, 2598, 2599, 2599, 2601, 2601, 2602, 2604, 2606, 2607, + 2610, 2612, 2613, 2611, 2615, 2603, 2617, 2606, 2613, 2619, + 2602, 2607, 2611, 2620, 2619, 2604, 2615, 2622, 2620, 2621, + 2621, 2612, 2631, 2624, 2632, 2610, 2622, 2617, 2624, 2625, + 2625, 2627, 2627, 2625, 2628, 2628, 2629, 2629, 2630, 2633, + 2635, 2639, 2631, 2632, 2633, 2636, 2635, 2630, 2637, 2640, - 2650, 2633, 2648, 2641, 2640, 2651, 2648, 2652, 2649, 2654, - 2646, 2647, 2653, 2656, 2642, 2652, 2650, 2653, 2655, 2655, - 2658, 2658, 2659, 2659, 2651, 2661, 2663, 2663, 2665, 2666, - 2671, 2667, 2656, 2668, 2672, 2654, 2670, 2670, 2668, 2673, - 2675, 2675, 2676, 2677, 2665, 2666, 2661, 2667, 2678, 2678, - 2671, 2681, 2684, 2682, 2693, 2683, 2676, 2672, 2673, 2682, - 2683, 2687, 2677, 2685, 2685, 2686, 2686, 2688, 2688, 2689, - 2690, 2681, 2691, 2693, 2684, 2695, 2692, 2694, 0, 2690, - 2689, 2687, 2692, 2696, 2696, 2697, 2702, 2688, 2697, 2694, - 2698, 2698, 2691, 2703, 2704, 2695, 2705, 2705, 2702, 2706, + 2636, 2638, 2638, 2637, 2641, 2642, 2643, 2644, 2645, 2639, + 2642, 2640, 2648, 2644, 2646, 2646, 2648, 2649, 2650, 2651, + 2651, 2652, 2649, 2650, 2643, 2641, 2653, 2654, 2656, 2656, + 2658, 2659, 2660, 2645, 2662, 2663, 2660, 2661, 2666, 2668, + 2652, 2653, 2673, 2658, 2659, 2664, 2661, 2654, 2667, 2667, + 2662, 2665, 2677, 2664, 2663, 2678, 2665, 2679, 2668, 2670, + 2670, 2671, 2671, 2673, 2666, 2675, 2675, 2680, 2677, 2682, + 2682, 2678, 2680, 2679, 2683, 2684, 2685, 2687, 2687, 2688, + 2689, 2690, 2690, 2693, 2694, 2696, 2695, 2697, 2697, 2699, + 2694, 2695, 2703, 2688, 2683, 2685, 2698, 2698, 2684, 2689, - 2704, 2707, 2706, 2708, 2710, 2711, 2712, 2707, 2713, 2710, - 2711, 2714, 2717, 2703, 2713, 2715, 2715, 2718, 2719, 2720, - 2722, 2708, 2721, 2721, 2717, 2712, 2728, 2723, 2714, 2714, - 2725, 2725, 2720, 2726, 2726, 2718, 2723, 2727, 2738, 2722, - 2728, 2729, 2727, 2719, 2730, 2730, 2729, 2731, 2731, 2732, - 2732, 2733, 2735, 2735, 2740, 2741, 2733, 2738, 2742, 2743, - 2743, 2745, 2745, 2747, 2746, 2748, 2749, 2749, 2750, 2750, - 2753, 2796, 2754, 2752, 2748, 2796, 2740, 2741, 2746, 2752, - 2742, 2755, 2762, 2747, 2758, 2758, 2755, 2760, 2760, 2761, - 2753, 2754, 2763, 2764, 2761, 2765, 2762, 2767, 2763, 2766, + 2700, 2700, 2701, 2693, 2704, 2702, 2705, 2696, 2707, 2699, + 2704, 2706, 2703, 2701, 2702, 2708, 2708, 2714, 2709, 2715, + 2700, 2709, 0, 2706, 2716, 2705, 2710, 2710, 2707, 2714, + 2716, 2717, 2717, 2718, 2719, 2720, 2718, 2722, 2725, 2715, + 2719, 2724, 2722, 2723, 2723, 2726, 2724, 2727, 2728, 2728, + 2730, 2726, 2731, 2720, 2732, 2733, 2735, 2725, 2734, 2734, + 2736, 2751, 2730, 2741, 2727, 2727, 2738, 2738, 2733, 2736, + 2731, 2739, 2739, 2740, 2753, 2735, 2742, 2741, 2740, 2732, + 2751, 2742, 2743, 2743, 2744, 2744, 2745, 2745, 2746, 2748, + 2748, 2754, 2755, 2746, 2756, 2756, 2753, 2758, 2758, 2760, - 2766, 2769, 2767, 2765, 2770, 2764, 2771, 2772, 2773, 2775, - 2776, 2771, 2777, 2778, 2773, 2780, 2779, 2775, 2781, 2772, - 2782, 2769, 2783, 2785, 2770, 2786, 2790, 2783, 2785, 2776, - 2863, 2780, 2777, 2778, 2779, 2781, 2781, 2787, 2791, 2788, - 0, 2782, 2863, 2787, 2788, 2786, 2790, 2794, 2794, 2795, - 2795, 2791, 2800, 2800, 2802, 2802, 2803, 2803, 2806, 2803, - 2804, 2804, 2806, 2804, 2805, 2805, 2809, 2805, 2808, 2808, - 2813, 2810, 2814, 2815, 2816, 2816, 2819, 2821, 2815, 2820, - 2822, 2821, 2823, 0, 2809, 2810, 2820, 2825, 2830, 2822, - 2813, 2826, 2814, 2827, 2827, 2828, 2828, 2823, 2829, 2829, + 2761, 2759, 2762, 2762, 2763, 2763, 2765, 2766, 2775, 2761, + 2767, 2768, 2765, 2754, 2755, 2759, 2768, 2771, 2771, 2760, + 2773, 2773, 2775, 2774, 2776, 2777, 2778, 2766, 2774, 2767, + 2776, 2779, 2779, 2780, 2778, 2782, 2783, 2777, 2780, 2784, + 2785, 2786, 2788, 2789, 2784, 2790, 2791, 2786, 2794, 2793, + 2788, 2795, 2785, 2796, 2797, 2782, 2783, 2800, 2799, 2797, + 2804, 2931, 2789, 2799, 2794, 2790, 2791, 2793, 2795, 2795, + 2801, 2805, 2931, 2802, 2796, 2810, 2801, 2800, 2802, 2810, + 2804, 2808, 2808, 2823, 2805, 2809, 2809, 2814, 2814, 2816, + 2816, 2817, 2817, 2820, 2817, 2818, 2818, 2820, 2818, 2819, - 2826, 2819, 2831, 2830, 2832, 2825, 2833, 2831, 2834, 2835, - 2836, 2833, 2833, 2832, 2834, 2837, 2832, 2838, 2839, 2840, - 2841, 2841, 2838, 2839, 2842, 2836, 2843, 2844, 2844, 2870, - 2842, 2912, 2843, 0, 2835, 2912, 2837, 2846, 2840, 2845, - 2845, 2870, 2846, 2849, 2849, 2852, 2852, 2853, 2853, 2854, - 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2860, - 2861, 2861, 2862, 2864, 2868, 2866, 2867, 2867, 2860, 2869, - 2872, 2862, 2871, 2871, 2873, 2873, 2876, 2877, 2878, 2868, - 2877, 2880, 2869, 2864, 2866, 2872, 2879, 2879, 2882, 2883, - 2886, 2882, 2884, 2885, 2876, 2883, 2887, 2888, 2885, 2880, + 2819, 2823, 2819, 2822, 2822, 2824, 2827, 2828, 2829, 2830, + 2830, 2833, 2835, 2829, 2834, 2836, 2835, 2837, 2845, 2824, + 2839, 2834, 2840, 2845, 2836, 2849, 2827, 2828, 2841, 2841, + 2844, 2840, 2837, 2842, 2842, 2846, 2833, 2847, 2839, 2843, + 2843, 2850, 2847, 2847, 2846, 2844, 2848, 2846, 2851, 2852, + 2849, 2854, 2848, 2853, 2852, 2856, 2850, 2857, 2853, 2855, + 2855, 2856, 0, 2857, 2858, 2858, 2859, 2859, 2860, 2851, + 2854, 2863, 2863, 2860, 2866, 2866, 2867, 2867, 2868, 2868, + 2869, 2869, 2870, 2870, 2871, 2871, 2872, 2872, 2874, 2875, + 2875, 2876, 2877, 2878, 2882, 2880, 2884, 2874, 2881, 2881, - 2894, 2890, 2891, 2905, 2878, 2903, 2884, 2890, 2903, 2886, - 2910, 2891, 2914, 2888, 2887, 2894, 2905, 2906, 2906, 2907, - 2907, 2908, 2908, 2911, 2913, 2916, 2914, 2917, 2919, 2918, - 2919, 2920, 2911, 2910, 2918, 2921, 2921, 2922, 2917, 2923, - 2925, 2924, 2926, 2928, 2913, 2927, 2920, 2930, 2916, 2929, - 2922, 2931, 2928, 2937, 0, 2936, 2925, 2932, 2923, 2924, - 2927, 2929, 2932, 2938, 2938, 2939, 2944, 2926, 2930, 2936, - 2945, 2931, 2949, 2937, 2939, 2940, 2940, 2941, 2941, 2942, - 2942, 2943, 2943, 2946, 2947, 2944, 2946, 2948, 2950, 2947, - 2945, 2952, 2948, 2951, 2953, 2954, 2955, 2949, 2957, 2951, + 2876, 2886, 2883, 2890, 2877, 2885, 2885, 2892, 2884, 2882, + 2887, 2887, 2894, 2878, 2880, 2883, 2886, 2891, 2893, 2893, + 2891, 2890, 2896, 2897, 2898, 2896, 2899, 2900, 2902, 2897, + 2894, 2899, 2901, 2892, 2904, 2919, 2905, 2908, 2898, 2917, + 2904, 2924, 2917, 2926, 2902, 2905, 2900, 2926, 2919, 2927, + 2901, 2925, 2908, 2920, 2920, 2921, 2921, 2922, 2922, 2928, + 2925, 2930, 2932, 2933, 2924, 2933, 2934, 2932, 2937, 2927, + 2935, 2935, 2936, 2928, 2938, 2939, 2940, 2942, 2941, 2944, + 2958, 2934, 2943, 2945, 2930, 2936, 2942, 2937, 2950, 2951, + 2946, 2939, 2938, 2941, 2943, 2946, 2952, 2952, 2953, 2958, - 2954, 2956, 2956, 2950, 2958, 2952, 2953, 2959, 2959, 2961, - 2963, 2966, 2966, 2957, 2967, 2967, 2955, 2968, 2969, 2972, - 2970, 2971, 2973, 2958, 2961, 2968, 2970, 2971, 2963, 2974, - 2979, 2975, 2980, 2972, 2985, 2973, 2975, 2969, 2976, 2976, - 2977, 2977, 2982, 2983, 2986, 2987, 2988, 2983, 2974, 2986, - 2989, 2979, 2980, 2990, 2985, 2991, 2982, 2992, 2996, 2988, - 2991, 2997, 2992, 2989, 2987, 2993, 2993, 2998, 2999, 2999, - 3000, 3001, 2990, 3002, 3002, 3000, 3003, 3001, 2996, 2997, - 3004, 3003, 3005, 3006, 3007, 3004, 2998, 3005, 3009, 3009, - 3007, 3010, 3011, 3011, 3013, 3014, 3010, 3015, 3013, 3016, + 2944, 2940, 2950, 2945, 2954, 2954, 2959, 2953, 2963, 2951, + 2955, 2955, 2956, 2956, 2957, 2957, 2960, 2961, 2962, 2960, + 2964, 2965, 2961, 2962, 2966, 2967, 2959, 2965, 2969, 2968, + 2970, 2970, 2971, 2963, 2968, 2964, 2972, 2967, 2966, 2973, + 2973, 2975, 2977, 2980, 2980, 2981, 2981, 2971, 2969, 2982, + 2983, 2986, 2984, 2985, 2987, 2972, 2975, 2982, 2984, 2985, + 2977, 2988, 2993, 2989, 2994, 2986, 2999, 2987, 2989, 2983, + 2990, 2990, 2991, 2991, 2996, 2997, 3000, 3001, 3002, 2997, + 2988, 3000, 3003, 2993, 2994, 3004, 2999, 3005, 2996, 3006, + 3010, 3002, 3005, 3011, 3006, 3003, 3001, 3007, 3007, 3012, - 3017, 3018, 3006, 3019, 3015, 3022, 3022, 3018, 3020, 3024, - 3024, 3025, 3026, 3027, 3014, 3028, 3029, 3026, 3016, 3017, - 3025, 3020, 3019, 3025, 3030, 3030, 3031, 3032, 3034, 3029, - 3036, 3031, 3027, 3041, 3028, 3035, 3035, 3037, 3037, 3039, - 3032, 3038, 3038, 3040, 3039, 3042, 3042, 3048, 3043, 3036, - 3040, 3050, 3041, 3043, 3034, 3044, 3046, 3044, 3045, 3045, - 3047, 3052, 3052, 3046, 3049, 3053, 3048, 3047, 3055, 3049, - 3050, 3056, 3057, 3055, 3058, 3062, 3056, 3059, 3059, 3061, - 3061, 3063, 3064, 3064, 3053, 3065, 3065, 0, 3066, 3068, - 3068, 3057, 3070, 3058, 3062, 3066, 3069, 3069, 3072, 3070, + 3013, 3013, 3014, 3015, 3004, 3016, 3016, 3014, 3017, 3015, + 3010, 3011, 3018, 3017, 3019, 3020, 3021, 3018, 3012, 3019, + 3023, 3023, 3021, 3024, 3025, 3025, 3027, 3028, 3024, 3029, + 3027, 3030, 3031, 3032, 3020, 3033, 3029, 3036, 3036, 3032, + 3034, 3038, 3038, 3039, 3040, 3041, 3028, 3042, 3043, 3040, + 3030, 3031, 3039, 3034, 3033, 3039, 3044, 3044, 3045, 3046, + 3048, 3043, 3050, 3045, 3041, 3055, 3042, 3049, 3049, 3051, + 3051, 3053, 3046, 3052, 3052, 3054, 3053, 3056, 3056, 3062, + 3057, 3050, 3054, 3064, 3055, 3057, 3048, 3058, 3060, 3058, + 3059, 3059, 3061, 3066, 3066, 3060, 3063, 3067, 3062, 3061, - 3063, 3075, 3076, 3072, 3077, 0, 3075, 3078, 3078, 3079, - 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3076, 0, 3077, 3083, 3083, 3083, 3083, 3083, 3083, - 3083, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, - 3085, 3085, 3085, 3085, 3085, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3089, - 3089, 0, 3089, 3089, 3089, 3089, 3090, 3090, 0, 0, - 0, 3090, 3090, 3091, 3091, 0, 0, 3091, 0, 3091, - 3092, 0, 0, 0, 0, 0, 3092, 3093, 3093, 0, - 0, 0, 3093, 3093, 3094, 0, 0, 0, 0, 0, + 3069, 3063, 3064, 3070, 3071, 3069, 3072, 3076, 3070, 3073, + 3073, 3075, 3075, 3077, 3078, 3078, 3067, 3079, 3079, 0, + 3080, 3082, 3082, 3071, 3084, 3072, 3076, 3080, 3083, 3083, + 3086, 3084, 3077, 3089, 3090, 3086, 3091, 0, 3089, 3092, + 3092, 3093, 3093, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3090, 0, 3091, 3097, 3097, 3097, 3097, + 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, 3098, 3098, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3103, 3103, 0, 3103, 3103, 3103, 3103, 3104, 3104, - 3094, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3096, 3096, - 0, 3096, 3096, 3096, 3096, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 0, 0, 0, 3104, 3104, 3105, 3105, 0, 0, 3105, + 0, 3105, 3106, 0, 0, 0, 0, 0, 3106, 3107, + 3107, 0, 0, 0, 3107, 3107, 3108, 0, 0, 0, + 0, 0, 3108, 3109, 3109, 0, 3109, 3109, 3109, 3109, + 3110, 3110, 0, 3110, 3110, 3110, 3110, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; static yy_state_type yy_last_accepting_state; @@ -2972,7 +2982,7 @@ static void config_end_include(void) } #endif -#line 2973 "" +#line 2984 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2981,9 +2991,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2982 "" +#line 2993 "" -#line 2984 "" +#line 2995 "" #define INITIAL 0 #define quotedstring 1 @@ -3205,7 +3215,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3206 "" +#line 3217 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3238,13 +3248,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 >= 3083 ) + if ( yy_current_state >= 3097 ) 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] != 6016 ); + while ( yy_base[yy_current_state] != 6048 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4415,165 +4425,165 @@ YY_RULE_SETUP case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 233: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 234: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 235: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 445 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 239: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 240: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 241: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 260: YY_RULE_SETUP @@ -4588,200 +4598,205 @@ YY_RULE_SETUP case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 271: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 272: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 273: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 491 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 292: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 293: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 294: -/* rule 294 can match eol */ YY_RULE_SETUP #line 512 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 295: +/* rule 295 can match eol */ +YY_RULE_SETUP +#line 513 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 295: +case 296: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 516 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: -YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 297: -/* rule 297 can match eol */ YY_RULE_SETUP #line 522 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 298: +/* rule 298 can match eol */ +YY_RULE_SETUP +#line 523 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 299: YY_RULE_SETUP -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4794,34 +4809,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 299: +case 300: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 300: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 301: -/* rule 301 can match eol */ YY_RULE_SETUP #line 543 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 302: +/* rule 302 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 302: +case 303: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4834,38 +4849,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 303: +case 304: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 304: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 305: -/* rule 305 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 306: +/* rule 306 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 307: YY_RULE_SETUP #line 566 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 567 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4873,27 +4888,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 308: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4903,7 +4918,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 584 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4915,33 +4930,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 313: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4942 "" +#line 4958 "" case YY_END_OF_BUFFER: { @@ -5236,7 +5251,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 >= 3083 ) + if ( yy_current_state >= 3097 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5264,11 +5279,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 >= 3083 ) + if ( yy_current_state >= 3097 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3082); + yy_is_jam = (yy_current_state == 3096); return yy_is_jam ? 0 : yy_current_state; } @@ -5907,6 +5922,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d7c61c05b..58c5da3d5 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -434,6 +434,7 @@ access-control-view{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_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) } +dnstap-bidirectional{COLON} { YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } dnstap-socket-path{COLON} { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } dnstap-ip{COLON} { YDVAR(1, VAR_DNSTAP_IP) } dnstap-tls{COLON} { YDVAR(1, VAR_DNSTAP_TLS) } diff --git a/util/configparser.c b/util/configparser.c index 2c9b0a5c4..eb1daf560 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,6 +97,15 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -294,133 +303,134 @@ extern int yydebug; VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, VAR_DNSTAP_SEND_IDENTITY = 416, VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_DNSTAP_BIDIRECTIONAL = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -584,133 +594,134 @@ extern int yydebug; #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 #define VAR_DNSTAP_SEND_IDENTITY 416 #define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_DNSTAP_BIDIRECTIONAL 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -720,7 +731,7 @@ union YYSTYPE char* str; -#line 724 "util/configparser.c" +#line 735 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -741,36 +752,83 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -778,7 +836,19 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -792,22 +862,20 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -819,11 +887,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -836,6 +904,18 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + #define YY_ASSERT(E) ((void) (0 && (E))) @@ -914,17 +994,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -937,11 +1017,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -953,12 +1033,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -970,28 +1050,29 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 615 +#define YYLAST 617 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 290 +#define YYNTOKENS 291 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 315 +#define YYNNTS 316 /* YYNRULES -- Number of rules. */ -#define YYNRULES 606 +#define YYNRULES 608 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 900 +#define YYNSTATES 903 #define YYUNDEFTOK 2 -#define YYMAXUTOK 544 +#define YYMAXUTOK 545 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint16 yytranslate[] = +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1047,12 +1128,12 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, 183, 184, 184, 185, 185, 186, 186, 190, 195, 196, @@ -1105,16 +1186,16 @@ static const yytype_uint16 yyrline[] = 2563, 2573, 2583, 2593, 2632, 2642, 2650, 2658, 2673, 2682, 2687, 2688, 2689, 2689, 2689, 2690, 2690, 2690, 2691, 2691, 2693, 2703, 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2759, - 2760, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, 2765, - 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2774, - 2783, 2790, 2797, 2806, 2813, 2820, 2827, 2834, 2843, 2852, - 2859, 2866, 2876, 2886, 2896, 2906, 2916, 2926, 2931, 2932, - 2933, 2935, 2941, 2946, 2947, 2948, 2950, 2956, 2966, 2973, - 2982, 2990, 2995, 2996, 2998, 2998, 2998, 2999, 2999, 3000, - 3001, 3002, 3003, 3004, 3006, 3016, 3025, 3032, 3041, 3048, - 3057, 3065, 3078, 3086, 3099, 3104, 3105, 3106, 3106, 3107, - 3107, 3107, 3108, 3110, 3122, 3134, 3146, 3161, 3174, 3187, - 3198, 3203, 3204, 3205, 3205, 3207, 3222 + 2760, 2761, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, + 2765, 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, + 2774, 2783, 2793, 2800, 2807, 2816, 2823, 2830, 2837, 2844, + 2853, 2862, 2869, 2876, 2886, 2896, 2906, 2916, 2926, 2936, + 2941, 2942, 2943, 2945, 2951, 2956, 2957, 2958, 2960, 2966, + 2976, 2983, 2992, 3000, 3005, 3006, 3008, 3008, 3008, 3009, + 3009, 3010, 3011, 3012, 3013, 3014, 3016, 3026, 3035, 3042, + 3051, 3058, 3067, 3075, 3088, 3096, 3109, 3114, 3115, 3116, + 3116, 3117, 3117, 3117, 3118, 3120, 3132, 3144, 3156, 3171, + 3184, 3197, 3208, 3213, 3214, 3215, 3215, 3217, 3232 }; #endif @@ -1176,7 +1257,7 @@ static const char *const yytname[] = "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_DNSTAP_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1330,11 +1411,11 @@ static const char *const yytname[] = "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", - "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", - "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", - "dt_dnstap_send_identity", "dt_dnstap_send_version", - "dt_dnstap_identity", "dt_dnstap_version", + "dt_dnstap_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", @@ -1361,7 +1442,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +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, @@ -1391,124 +1472,126 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545 }; # endif -#define YYPACT_NINF -280 +#define YYPACT_NINF (-281) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-280))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -280, 0, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - 277, -42, -37, -41, -7, -43, -30, -136, -106, -279, - -177, -172, -271, 2, 3, 4, 25, 26, 28, 31, - 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, - 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 201, 205, 206, 207, 208, 209, 210, 211, 213, 214, - 215, 216, 219, 220, 222, 223, 224, 225, 226, 227, - 228, 229, 237, 243, 245, 246, 247, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 269, 270, 271, 273, - 274, 275, 276, 311, 312, 313, 314, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 318, 319, 320, 362, 363, 364, 365, -280, - -280, -280, -280, -280, -280, -280, -280, 366, 367, 368, - 369, 370, 374, -280, -280, -280, -280, -280, -280, -280, - 378, 379, 404, 405, 406, 408, 419, -280, -280, -280, - -280, -280, -280, -280, -280, 420, 421, 422, 423, 424, - 425, 426, 427, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 428, 429, 430, 431, 432, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 433, 434, - 435, 436, 437, 477, 479, 495, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 512, 513, 514, 515, 516, - 517, 518, 520, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 521, -280, -280, 522, -280, -280, 523, 524, - 525, 526, 529, 532, 535, 536, 545, 546, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 547, - 549, 550, 551, 552, 553, -280, -280, -280, -280, -280, - -280, -280, 554, 555, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 556, 557, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, 558, 559, 560, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 561, 562, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 563, 564, - 565, 566, 567, 568, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, 569, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 570, -280, -280, 571, 572, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 573, - 574, 575, -280, -280, -280, -280, -280, -280, -280, -280 + -281, 0, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 278, -42, -37, -41, -7, -43, -30, -136, -106, -280, + -178, -173, -272, 2, 3, 4, 26, 28, 31, 32, + 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 87, 88, 91, 93, 94, 95, + 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 202, 206, 207, 208, 209, 210, 211, 212, 214, 215, + 216, 217, 220, 221, 223, 224, 225, 226, 227, 228, + 229, 230, 238, 244, 246, 247, 248, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 270, 271, 272, 274, + 275, 276, 277, 312, 313, 314, 315, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 319, 320, 321, 363, 364, 365, 366, -281, + -281, -281, -281, -281, -281, -281, -281, 367, 368, 369, + 370, 371, 375, -281, -281, -281, -281, -281, -281, -281, + 379, 380, 405, 406, 407, 409, 420, -281, -281, -281, + -281, -281, -281, -281, -281, 421, 422, 423, 424, 425, + 426, 427, 428, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 429, 430, 431, 432, 433, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 434, 435, + 436, 437, 438, 439, 479, 481, -281, -281, -281, -281, + -281, -281, -281, -281, -281, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 514, 515, 516, 517, + 518, 519, 520, 522, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 523, -281, -281, 524, -281, -281, + 525, 526, 527, 528, 531, 534, 537, 538, 547, 548, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, 549, 551, 552, 553, 554, 555, -281, -281, -281, + -281, -281, -281, -281, 556, 557, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 558, + 559, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, 560, 561, 562, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 563, + 564, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 565, 566, 567, 568, 569, 570, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 571, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, 572, -281, -281, + 573, 574, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 575, 576, 577, -281, -281, -281, -281, -281, + -281, -281, -281 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 2, 0, 1, 17, 214, 224, 489, 547, 508, 233, - 561, 584, 243, 600, 259, 552, 3, 19, 216, 226, - 235, 245, 261, 491, 510, 549, 554, 563, 586, 602, + 2, 0, 1, 17, 214, 224, 489, 549, 508, 233, + 563, 586, 243, 602, 259, 554, 3, 19, 216, 226, + 235, 245, 261, 491, 510, 551, 556, 565, 588, 604, 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, @@ -1560,79 +1643,80 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 490, 492, 494, 493, 499, 495, 496, 497, 498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 509, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 0, 548, 550, 0, 553, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 564, - 565, 566, 568, 569, 567, 570, 571, 572, 573, 0, - 0, 0, 0, 0, 0, 585, 587, 588, 589, 590, - 591, 592, 0, 0, 601, 603, 604, 273, 272, 279, - 292, 290, 302, 298, 299, 303, 300, 301, 304, 305, - 306, 307, 308, 331, 332, 333, 334, 335, 360, 361, - 362, 367, 368, 295, 369, 370, 373, 371, 372, 375, - 376, 377, 391, 346, 347, 349, 350, 378, 394, 340, - 342, 395, 401, 402, 403, 296, 359, 419, 420, 341, - 414, 324, 291, 336, 392, 398, 379, 0, 0, 423, - 297, 274, 323, 383, 275, 293, 294, 337, 338, 421, - 381, 385, 386, 276, 424, 363, 390, 325, 345, 396, - 397, 400, 413, 339, 417, 415, 416, 351, 358, 387, - 388, 352, 353, 380, 405, 326, 327, 330, 309, 311, - 312, 313, 314, 315, 425, 426, 428, 364, 365, 366, - 374, 429, 430, 431, 0, 0, 0, 382, 354, 356, - 557, 440, 444, 442, 441, 445, 443, 0, 0, 448, - 449, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 384, 399, 418, 453, 454, 355, 432, 0, 0, - 0, 0, 0, 0, 406, 407, 408, 409, 410, 411, - 412, 558, 348, 343, 404, 322, 277, 278, 344, 455, - 457, 456, 458, 459, 460, 310, 317, 450, 452, 451, - 316, 0, 329, 389, 427, 328, 357, 318, 319, 321, - 320, 461, 462, 463, 467, 466, 464, 465, 468, 469, - 470, 471, 473, 472, 482, 0, 486, 487, 0, 0, - 488, 474, 480, 475, 476, 477, 479, 481, 478, 254, - 255, 256, 257, 258, 500, 502, 501, 504, 505, 506, - 507, 503, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 551, 556, 574, 575, 576, 579, 577, 578, 580, 581, - 582, 583, 593, 594, 595, 596, 597, 598, 605, 606, - 393, 422, 439, 559, 560, 446, 447, 433, 434, 0, - 0, 0, 438, 599, 483, 484, 485, 437, 435, 436 + 0, 0, 0, 0, 509, 511, 513, 512, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 0, 550, 552, 0, 555, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 566, 567, 568, 570, 571, 569, 572, 573, 574, + 575, 0, 0, 0, 0, 0, 0, 587, 589, 590, + 591, 592, 593, 594, 0, 0, 603, 605, 606, 273, + 272, 279, 292, 290, 302, 298, 299, 303, 300, 301, + 304, 305, 306, 307, 308, 331, 332, 333, 334, 335, + 360, 361, 362, 367, 368, 295, 369, 370, 373, 371, + 372, 375, 376, 377, 391, 346, 347, 349, 350, 378, + 394, 340, 342, 395, 401, 402, 403, 296, 359, 419, + 420, 341, 414, 324, 291, 336, 392, 398, 379, 0, + 0, 423, 297, 274, 323, 383, 275, 293, 294, 337, + 338, 421, 381, 385, 386, 276, 424, 363, 390, 325, + 345, 396, 397, 400, 413, 339, 417, 415, 416, 351, + 358, 387, 388, 352, 353, 380, 405, 326, 327, 330, + 309, 311, 312, 313, 314, 315, 425, 426, 428, 364, + 365, 366, 374, 429, 430, 431, 0, 0, 0, 382, + 354, 356, 559, 440, 444, 442, 441, 445, 443, 0, + 0, 448, 449, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 384, 399, 418, 453, 454, 355, 432, + 0, 0, 0, 0, 0, 0, 406, 407, 408, 409, + 410, 411, 412, 560, 348, 343, 404, 322, 277, 278, + 344, 455, 457, 456, 458, 459, 460, 310, 317, 450, + 452, 451, 316, 0, 329, 389, 427, 328, 357, 318, + 319, 321, 320, 461, 462, 463, 467, 466, 464, 465, + 468, 469, 470, 471, 473, 472, 482, 0, 486, 487, + 0, 0, 488, 474, 480, 475, 476, 477, 479, 481, + 478, 254, 255, 256, 257, 258, 500, 502, 501, 504, + 505, 506, 507, 503, 530, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 531, 541, 542, 543, 544, 545, + 546, 547, 548, 553, 558, 576, 577, 578, 581, 579, + 580, 582, 583, 584, 585, 595, 596, 597, 598, 599, + 600, 607, 608, 393, 422, 439, 561, 562, 446, 447, + 433, 434, 0, 0, 0, 438, 601, 483, 484, 485, + 437, 435, 436 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 576, 577, - 578, 579, 580, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280 + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 578, 579, + 580, 581, 582, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1663,159 +1747,159 @@ static const yytype_int16 yydefgoto[] = 445, 446, 454, 455, 456, 457, 458, 459, 484, 485, 486, 487, 488, 489, 490, 491, 468, 469, 470, 471, 472, 473, 474, 23, 36, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 24, 37, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 25, 38, 563, 564, 26, - 39, 566, 567, 427, 428, 429, 430, 27, 40, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 28, 41, 595, 596, 597, 598, 599, 600, 601, 431, - 29, 42, 604, 605, 606 + 521, 522, 523, 524, 24, 37, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 25, 38, 565, 566, + 26, 39, 568, 569, 427, 428, 429, 430, 27, 40, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 28, 41, 597, 598, 599, 600, 601, 602, 603, + 431, 29, 42, 606, 607, 608 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = +static const yytype_int16 yytable[] = { - 2, 475, 432, 460, 433, 434, 562, 447, 602, 603, - 565, 3, 607, 608, 609, 448, 449, 525, 526, 527, + 2, 475, 432, 460, 433, 434, 564, 447, 604, 605, + 567, 3, 609, 610, 611, 448, 449, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 610, 611, 475, 612, 461, - 462, 613, 614, 615, 616, 4, 617, 618, 619, 620, - 621, 5, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 622, 623, 463, 435, 508, 509, 510, 511, - 512, 513, 514, 515, 589, 590, 591, 592, 593, 594, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 6, 436, 639, 640, 437, - 450, 641, 451, 642, 643, 644, 645, 646, 647, 648, - 649, 7, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 464, 465, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 8, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 466, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 9, 744, 477, 478, 479, 745, 746, 747, 748, 749, - 750, 751, 482, 752, 753, 754, 755, 438, 10, 756, - 757, 452, 758, 759, 760, 761, 762, 763, 764, 765, - 492, 493, 494, 495, 496, 11, 476, 766, 477, 478, - 479, 480, 481, 767, 12, 768, 769, 770, 482, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 13, 790, - 791, 792, 14, 793, 794, 795, 796, 0, 15, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 797, 798, 799, 800, 75, 76, 77, 801, 802, - 803, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 804, 805, 806, 807, 808, 809, 810, 811, - 812, 119, 120, 121, 813, 122, 123, 124, 814, 815, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 816, 817, 818, 149, 819, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 839, 199, 840, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 841, 842, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 215, 216, 217, 218, - 219, 220, 852, 853, 854, 855, 856, 857, 858, 221, - 859, 860, 861, 862, 863, 864, 865, 222, 223, 866, - 224, 225, 867, 226, 227, 868, 869, 228, 229, 230, - 231, 232, 233, 234, 235, 870, 871, 872, 236, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 0, 0, 0, 0, + 538, 539, 540, 541, 542, 543, 612, 475, 613, 461, + 462, 614, 615, 616, 617, 4, 618, 619, 620, 621, + 622, 5, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 623, 624, 463, 435, 508, 509, 510, 511, + 512, 513, 514, 515, 591, 592, 593, 594, 595, 596, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 6, 436, 640, 641, 437, + 450, 642, 451, 643, 644, 645, 646, 647, 648, 649, + 650, 7, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, + 669, 670, 464, 465, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 8, 689, 690, 691, 692, 693, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 466, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, + 745, 9, 746, 477, 478, 479, 747, 748, 749, 750, + 751, 752, 753, 482, 754, 755, 756, 757, 438, 10, + 758, 759, 452, 760, 761, 762, 763, 764, 765, 766, + 767, 492, 493, 494, 495, 496, 11, 476, 768, 477, + 478, 479, 480, 481, 769, 12, 770, 771, 772, 482, + 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, + 783, 784, 785, 786, 787, 788, 789, 790, 791, 13, + 792, 793, 794, 14, 795, 796, 797, 798, 0, 15, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 799, 800, 801, 802, 75, 76, 77, 803, + 804, 805, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 119, 120, 121, 815, 122, 123, 124, 816, + 817, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 818, 819, 820, 149, 821, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 842, + 199, 843, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 215, 216, + 217, 218, 219, 220, 855, 856, 857, 858, 859, 860, + 861, 221, 862, 863, 864, 865, 866, 867, 868, 222, + 223, 869, 224, 225, 870, 226, 227, 871, 872, 228, + 229, 230, 231, 232, 233, 234, 235, 873, 874, 875, + 236, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 503, 504, 505, 506, 507 + 0, 0, 0, 503, 504, 505, 506, 507 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 289, 11, 10, 10, 10, 52, 53, 153, 154, 155, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 290, 11, 10, 10, 10, 52, 53, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, + 166, 167, 168, 169, 170, 171, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 10, 282, 10, 10, 10, 10, -1, 288, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, - 10, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 10, 10, 10, 140, 10, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 10, 211, 10, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 239, 240, 241, 242, - 243, 244, 10, 10, 10, 10, 10, 10, 10, 252, - 10, 10, 10, 10, 10, 10, 10, 260, 261, 10, - 263, 264, 10, 266, 267, 10, 10, 270, 271, 272, - 273, 274, 275, 276, 277, 10, 10, 10, 281, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 10, 283, 10, 10, 10, 10, -1, 289, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 10, 10, 10, 10, 48, 49, 50, 10, + 10, 10, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 104, 105, 106, 10, 108, 109, 110, 10, + 10, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 10, 10, 10, 140, 10, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 10, + 212, 10, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 253, 10, 10, 10, 10, 10, 10, 10, 261, + 262, 10, 264, 265, 10, 267, 268, 10, 10, 271, + 272, 273, 274, 275, 276, 277, 278, 10, 10, 10, + 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 35, 35, 35, 35 + -1, -1, -1, 35, 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_int16 yystos[] = { - 0, 291, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 288, 292, 293, 296, 299, - 302, 305, 313, 533, 544, 565, 569, 577, 590, 600, - 294, 297, 300, 303, 306, 314, 534, 545, 566, 570, - 578, 591, 601, 12, 13, 14, 15, 16, 17, 18, + 0, 292, 0, 11, 45, 51, 95, 111, 152, 211, + 229, 246, 255, 279, 283, 289, 293, 294, 297, 300, + 303, 306, 314, 534, 545, 567, 571, 579, 592, 602, + 295, 298, 301, 304, 307, 315, 535, 546, 568, 572, + 580, 593, 603, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 48, 49, 50, 54, 55, @@ -1827,51 +1911,51 @@ static const yytype_uint16 yystos[] = 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 239, 240, 241, 242, 243, - 244, 252, 260, 261, 263, 264, 266, 267, 270, 271, - 272, 273, 274, 275, 276, 277, 281, 295, 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, 573, 574, 575, - 576, 599, 44, 46, 47, 107, 138, 141, 269, 298, - 505, 506, 507, 508, 509, 510, 511, 44, 52, 53, - 137, 139, 268, 301, 512, 513, 514, 515, 516, 517, - 44, 80, 81, 105, 172, 173, 212, 304, 526, 527, - 528, 529, 530, 531, 532, 44, 253, 255, 256, 257, - 258, 259, 265, 307, 518, 519, 520, 521, 522, 523, - 524, 525, 283, 284, 285, 286, 287, 308, 309, 310, - 311, 312, 315, 518, 519, 520, 521, 522, 96, 97, - 98, 99, 100, 101, 102, 103, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 153, 154, 155, 156, 157, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 240, 241, 242, 243, 244, + 245, 253, 261, 262, 264, 265, 267, 268, 271, 272, + 273, 274, 275, 276, 277, 278, 282, 296, 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, 575, 576, 577, + 578, 601, 44, 46, 47, 107, 138, 141, 270, 299, + 506, 507, 508, 509, 510, 511, 512, 44, 52, 53, + 137, 139, 269, 302, 513, 514, 515, 516, 517, 518, + 44, 80, 81, 105, 173, 174, 213, 305, 527, 528, + 529, 530, 531, 532, 533, 44, 254, 256, 257, 258, + 259, 260, 266, 308, 519, 520, 521, 522, 523, 524, + 525, 526, 284, 285, 286, 287, 288, 309, 310, 311, + 312, 313, 316, 519, 520, 521, 522, 523, 96, 97, + 98, 99, 100, 101, 102, 103, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 546, 547, 548, 549, 550, 551, 552, + 168, 169, 170, 171, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 112, 567, 568, 289, 571, 572, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 246, - 247, 248, 249, 250, 251, 592, 593, 594, 595, 596, - 597, 598, 279, 280, 602, 603, 604, 10, 10, 10, + 563, 564, 565, 566, 112, 569, 570, 290, 573, 574, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 247, 248, 249, 250, 251, 252, 594, 595, 596, + 597, 598, 599, 600, 280, 281, 604, 605, 606, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1900,77 +1984,78 @@ static const yytype_uint16 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, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 290, 291, 291, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 293, 294, 294, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 296, 297, 297, 298, 298, 298, - 298, 298, 298, 298, 299, 300, 300, 301, 301, 301, - 301, 301, 301, 302, 303, 303, 304, 304, 304, 304, - 304, 304, 304, 305, 306, 306, 307, 307, 307, 307, - 307, 307, 307, 307, 308, 309, 310, 311, 312, 313, - 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 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, 534, 535, 535, 535, 535, 535, 535, 535, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 545, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, + 0, 291, 292, 292, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 294, 295, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 297, 298, 298, 299, 299, 299, + 299, 299, 299, 299, 300, 301, 301, 302, 302, 302, + 302, 302, 302, 303, 304, 304, 305, 305, 305, 305, + 305, 305, 305, 306, 307, 307, 308, 308, 308, 308, + 308, 308, 308, 308, 309, 310, 311, 312, 313, 314, + 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 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, 535, 536, 536, 536, 536, 536, 536, 536, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 546, 547, 547, 547, 547, 547, 547, 547, 547, 547, + 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 563, 564, 565, 566, 566, - 567, 568, 569, 570, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 591, 592, 592, 592, - 592, 592, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 601, 602, 602, 603, 604 + 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 568, 569, 570, 571, 572, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 580, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 593, 594, + 594, 594, 594, 594, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 603, 604, 604, 605, 606 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, @@ -2024,15 +2109,15 @@ static const yytype_uint8 yyr2[] = 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 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, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2118,7 +2203,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2142,7 +2229,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2165,19 +2252,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2222,13 +2309,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2264,12 +2351,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2300,10 +2387,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2316,19 +2403,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2355,7 +2442,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2380,7 +2469,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2407,7 +2497,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2437,8 +2529,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; @@ -2481,7 +2573,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2493,16 +2585,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYPTRDIFF_T yystacksize; int yyn; int yyresult; @@ -2516,7 +2608,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2548,12 +2640,14 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2561,23 +2655,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2591,9 +2685,10 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2607,8 +2702,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2674,14 +2771,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -2718,15 +2814,15 @@ yyreduce: { case 17: #line 191 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2725 "util/configparser.c" +#line 2821 "util/configparser.c" break; case 214: #line 285 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2736,12 +2832,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2740 "util/configparser.c" +#line 2836 "util/configparser.c" break; case 224: #line 302 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2751,12 +2847,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2755 "util/configparser.c" +#line 2851 "util/configparser.c" break; case 233: #line 319 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2768,12 +2864,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2772 "util/configparser.c" +#line 2868 "util/configparser.c" break; case 243: #line 338 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2788,12 +2884,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2792 "util/configparser.c" +#line 2888 "util/configparser.c" break; case 254: #line 362 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2809,12 +2905,12 @@ yyreduce: } } -#line 2813 "util/configparser.c" +#line 2909 "util/configparser.c" break; case 255: #line 381 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2828,44 +2924,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2832 "util/configparser.c" +#line 2928 "util/configparser.c" break; case 256: #line 398 "./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 2842 "util/configparser.c" +#line 2938 "util/configparser.c" break; case 257: #line 406 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2854 "util/configparser.c" +#line 2950 "util/configparser.c" break; case 258: #line 416 "./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 2864 "util/configparser.c" +#line 2960 "util/configparser.c" break; case 259: #line 424 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2880,36 +2976,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2980 "util/configparser.c" break; case 272: #line 447 "./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) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2896 "util/configparser.c" +#line 2992 "util/configparser.c" break; case 273: #line 456 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2908 "util/configparser.c" +#line 3004 "util/configparser.c" break; case 274: #line 465 "./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) cfg_parser->cfg->stat_interval = 0; @@ -2918,48 +3014,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2922 "util/configparser.c" +#line 3018 "util/configparser.c" break; case 275: #line 476 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2934 "util/configparser.c" +#line 3030 "util/configparser.c" break; case 276: #line 485 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2946 "util/configparser.c" +#line 3042 "util/configparser.c" break; case 277: #line 494 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" +#line 3054 "util/configparser.c" break; case 278: #line 503 "./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) cfg_parser->cfg->shm_key = 0; @@ -2968,24 +3064,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" +#line 3068 "util/configparser.c" break; case 279: #line 514 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" +#line 3080 "util/configparser.c" break; case 280: #line 523 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -2995,12 +3091,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2999 "util/configparser.c" +#line 3095 "util/configparser.c" break; case 281: #line 535 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3011,12 +3107,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3015 "util/configparser.c" +#line 3111 "util/configparser.c" break; case 282: #line 549 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3029,12 +3125,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3033 "util/configparser.c" +#line 3129 "util/configparser.c" break; case 283: #line 564 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3043,12 +3139,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3047 "util/configparser.c" +#line 3143 "util/configparser.c" break; case 284: #line 575 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3063,12 +3159,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3067 "util/configparser.c" +#line 3163 "util/configparser.c" break; case 285: #line 592 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3083,12 +3179,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3183 "util/configparser.c" break; case 286: #line 609 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3103,12 +3199,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3203 "util/configparser.c" break; case 287: #line 626 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3123,12 +3219,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3223 "util/configparser.c" break; case 288: #line 643 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3141,12 +3237,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3241 "util/configparser.c" break; case 289: #line 658 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3159,12 +3255,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3163 "util/configparser.c" +#line 3259 "util/configparser.c" break; case 290: #line 673 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3175,12 +3271,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3179 "util/configparser.c" +#line 3275 "util/configparser.c" break; case 291: #line 686 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3193,180 +3289,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3197 "util/configparser.c" +#line 3293 "util/configparser.c" break; case 292: #line 701 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3209 "util/configparser.c" +#line 3305 "util/configparser.c" break; case 293: #line 710 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3221 "util/configparser.c" +#line 3317 "util/configparser.c" break; case 294: #line 719 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3233 "util/configparser.c" +#line 3329 "util/configparser.c" break; case 295: #line 728 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3245 "util/configparser.c" +#line 3341 "util/configparser.c" break; case 296: #line 737 "./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) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3353 "util/configparser.c" break; case 297: #line 746 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3365 "util/configparser.c" break; case 298: #line 755 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3377 "util/configparser.c" break; case 299: #line 764 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3389 "util/configparser.c" break; case 300: #line 773 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3401 "util/configparser.c" break; case 301: #line 782 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3413 "util/configparser.c" break; case 302: #line 791 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3425 "util/configparser.c" break; case 303: #line 800 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3437 "util/configparser.c" break; case 304: #line 809 "./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) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3449 "util/configparser.c" break; case 305: #line 818 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3461 "util/configparser.c" break; case 306: #line 827 "./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) yyerror("number expected"); @@ -3377,24 +3473,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 307: #line 840 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3489 "util/configparser.c" break; case 308: #line 849 "./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) yyerror("number expected"); @@ -3405,180 +3501,180 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" +#line 3505 "util/configparser.c" break; case 309: #line 862 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3421 "util/configparser.c" +#line 3517 "util/configparser.c" break; case 310: #line 871 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3433 "util/configparser.c" +#line 3529 "util/configparser.c" break; case 311: #line 880 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3445 "util/configparser.c" +#line 3541 "util/configparser.c" break; case 312: #line 889 "./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 3455 "util/configparser.c" +#line 3551 "util/configparser.c" break; case 313: #line 896 "./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 3465 "util/configparser.c" +#line 3561 "util/configparser.c" break; case 314: #line 903 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3573 "util/configparser.c" break; case 315: #line 912 "./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 3487 "util/configparser.c" +#line 3583 "util/configparser.c" break; case 316: #line 919 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3595 "util/configparser.c" break; case 317: #line 928 "./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 3510 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 318: #line 936 "./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 3520 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 319: #line 943 "./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 3530 "util/configparser.c" +#line 3626 "util/configparser.c" break; case 320: #line 950 "./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 3541 "util/configparser.c" +#line 3637 "util/configparser.c" break; case 321: #line 958 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3553 "util/configparser.c" +#line 3649 "util/configparser.c" break; case 322: #line 967 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3565 "util/configparser.c" +#line 3661 "util/configparser.c" break; case 323: #line 976 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" +#line 3673 "util/configparser.c" break; case 324: #line 985 "./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) yyerror("expected yes or no."); @@ -3590,104 +3686,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3594 "util/configparser.c" +#line 3690 "util/configparser.c" break; case 325: #line 999 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 3702 "util/configparser.c" break; case 326: #line 1008 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3618 "util/configparser.c" +#line 3714 "util/configparser.c" break; case 327: #line 1017 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" +#line 3726 "util/configparser.c" break; case 328: #line 1026 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" +#line 3738 "util/configparser.c" break; case 329: #line 1035 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" +#line 3750 "util/configparser.c" break; case 330: #line 1044 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 3762 "util/configparser.c" break; case 331: #line 1053 "./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 3676 "util/configparser.c" +#line 3772 "util/configparser.c" break; case 332: #line 1060 "./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 3686 "util/configparser.c" +#line 3782 "util/configparser.c" break; case 333: #line 1067 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3711,106 +3807,106 @@ yyreduce: } } } -#line 3715 "util/configparser.c" +#line 3811 "util/configparser.c" break; case 334: #line 1093 "./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 3726 "util/configparser.c" +#line 3822 "util/configparser.c" break; case 335: #line 1101 "./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 3736 "util/configparser.c" +#line 3832 "util/configparser.c" break; case 336: #line 1108 "./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 3746 "util/configparser.c" +#line 3842 "util/configparser.c" break; case 337: #line 1115 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3756 "util/configparser.c" +#line 3852 "util/configparser.c" break; case 338: #line 1122 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3766 "util/configparser.c" +#line 3862 "util/configparser.c" break; case 339: #line 1129 "./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 3777 "util/configparser.c" +#line 3873 "util/configparser.c" break; case 340: #line 1137 "./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 3788 "util/configparser.c" +#line 3884 "util/configparser.c" break; case 341: #line 1145 "./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 3799 "util/configparser.c" +#line 3895 "util/configparser.c" break; case 342: #line 1153 "./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 3809 "util/configparser.c" +#line 3905 "util/configparser.c" break; case 343: #line 1160 "./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) yyerror("expected yes or no."); @@ -3819,12 +3915,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3919 "util/configparser.c" break; case 344: #line 1171 "./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) yyerror("expected yes or no."); @@ -3833,95 +3929,95 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3837 "util/configparser.c" +#line 3933 "util/configparser.c" break; case 345: #line 1182 "./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 3847 "util/configparser.c" +#line 3943 "util/configparser.c" break; case 346: #line 1189 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3955 "util/configparser.c" break; case 347: #line 1198 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3967 "util/configparser.c" break; case 348: #line 1207 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3979 "util/configparser.c" break; case 349: #line 1216 "./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 3893 "util/configparser.c" +#line 3989 "util/configparser.c" break; case 350: #line 1223 "./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 3903 "util/configparser.c" +#line 3999 "util/configparser.c" break; case 351: #line 1230 "./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 3914 "util/configparser.c" +#line 4010 "util/configparser.c" break; case 352: #line 1238 "./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 3925 "util/configparser.c" +#line 4021 "util/configparser.c" break; case 353: @@ -3934,7 +4030,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3938 "util/configparser.c" +#line 4034 "util/configparser.c" break; case 354: @@ -3947,7 +4043,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 4047 "util/configparser.c" break; case 355: @@ -3960,12 +4056,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3964 "util/configparser.c" +#line 4060 "util/configparser.c" break; case 356: #line 1276 "./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) yyerror("number expected"); @@ -3977,23 +4073,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3981 "util/configparser.c" +#line 4077 "util/configparser.c" break; case 357: #line 1290 "./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 3992 "util/configparser.c" +#line 4088 "util/configparser.c" break; case 358: #line 1298 "./util/configparser.y" - { + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4004,12 +4100,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4008 "util/configparser.c" +#line 4104 "util/configparser.c" break; case 359: #line 1311 "./util/configparser.y" - { + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4018,23 +4114,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4022 "util/configparser.c" +#line 4118 "util/configparser.c" break; case 360: #line 1322 "./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 4033 "util/configparser.c" +#line 4129 "util/configparser.c" break; case 361: #line 1330 "./util/configparser.y" - { + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4045,48 +4141,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4049 "util/configparser.c" +#line 4145 "util/configparser.c" break; case 362: #line 1343 "./util/configparser.y" - { + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4061 "util/configparser.c" +#line 4157 "util/configparser.c" break; case 363: #line 1352 "./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) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4073 "util/configparser.c" +#line 4169 "util/configparser.c" break; case 364: #line 1361 "./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) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4085 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 365: #line 1370 "./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) yyerror("expected yes or no."); @@ -4094,12 +4190,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 4194 "util/configparser.c" break; case 366: #line 1380 "./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) yyerror("expected yes or no."); @@ -4107,23 +4203,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" +#line 4207 "util/configparser.c" break; case 367: #line 1390 "./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 4122 "util/configparser.c" +#line 4218 "util/configparser.c" break; case 368: #line 1398 "./util/configparser.y" - { + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4134,58 +4230,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4234 "util/configparser.c" break; case 369: #line 1411 "./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) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4246 "util/configparser.c" break; case 370: #line 1420 "./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 4161 "util/configparser.c" +#line 4257 "util/configparser.c" break; case 371: #line 1428 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4269 "util/configparser.c" break; case 372: #line 1437 "./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 4184 "util/configparser.c" +#line 4280 "util/configparser.c" break; case 373: #line 1445 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4196,34 +4292,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4200 "util/configparser.c" +#line 4296 "util/configparser.c" break; case 374: #line 1458 "./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) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" +#line 4308 "util/configparser.c" break; case 375: #line 1467 "./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 4222 "util/configparser.c" +#line 4318 "util/configparser.c" break; case 376: #line 1474 "./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) yyerror("expected yes or no."); @@ -4231,12 +4327,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 4331 "util/configparser.c" break; case 377: #line 1484 "./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) yyerror("expected yes or no."); @@ -4244,12 +4340,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4344 "util/configparser.c" break; case 378: #line 1494 "./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) yyerror("expected yes or no."); @@ -4257,12 +4353,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" +#line 4357 "util/configparser.c" break; case 379: #line 1504 "./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) yyerror("expected yes or no."); @@ -4270,12 +4366,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4274 "util/configparser.c" +#line 4370 "util/configparser.c" break; case 380: #line 1514 "./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) yyerror("expected yes or no."); @@ -4283,12 +4379,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4383 "util/configparser.c" break; case 381: #line 1524 "./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) yyerror("expected yes or no."); @@ -4296,12 +4392,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4300 "util/configparser.c" +#line 4396 "util/configparser.c" break; case 382: #line 1534 "./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) yyerror("expected yes or no."); @@ -4309,12 +4405,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4409 "util/configparser.c" break; case 383: #line 1544 "./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) yyerror("expected yes or no."); @@ -4322,100 +4418,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4326 "util/configparser.c" +#line 4422 "util/configparser.c" break; case 384: #line 1554 "./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 4336 "util/configparser.c" +#line 4432 "util/configparser.c" break; case 385: #line 1561 "./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 4346 "util/configparser.c" +#line 4442 "util/configparser.c" break; case 386: #line 1568 "./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 4356 "util/configparser.c" +#line 4452 "util/configparser.c" break; case 387: #line 1575 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" +#line 4464 "util/configparser.c" break; case 388: #line 1584 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" +#line 4476 "util/configparser.c" break; case 389: #line 1593 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4392 "util/configparser.c" +#line 4488 "util/configparser.c" break; case 390: #line 1602 "./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) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4404 "util/configparser.c" +#line 4500 "util/configparser.c" break; case 391: #line 1611 "./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 4414 "util/configparser.c" +#line 4510 "util/configparser.c" break; case 392: #line 1618 "./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) yyerror("expected yes or no."); @@ -4423,12 +4519,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4523 "util/configparser.c" break; case 393: #line 1628 "./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 && @@ -4446,22 +4542,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4450 "util/configparser.c" +#line 4546 "util/configparser.c" break; case 394: #line 1648 "./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 4460 "util/configparser.c" +#line 4556 "util/configparser.c" break; case 395: #line 1655 "./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) { cfg_parser->cfg->val_date_override = 0; @@ -4477,12 +4573,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4481 "util/configparser.c" +#line 4577 "util/configparser.c" break; case 396: #line 1673 "./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) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4493,12 +4589,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4497 "util/configparser.c" +#line 4593 "util/configparser.c" break; case 397: #line 1686 "./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) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4509,60 +4605,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4513 "util/configparser.c" +#line 4609 "util/configparser.c" break; case 398: #line 1699 "./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) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4525 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 399: #line 1708 "./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) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4537 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 400: #line 1717 "./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) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4645 "util/configparser.c" break; case 401: #line 1726 "./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) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4561 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 402: #line 1735 "./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) yyerror("expected yes or no."); @@ -4570,12 +4666,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4574 "util/configparser.c" +#line 4670 "util/configparser.c" break; case 403: #line 1745 "./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) yyerror("expected yes or no."); @@ -4583,12 +4679,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4587 "util/configparser.c" +#line 4683 "util/configparser.c" break; case 404: #line 1755 "./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) yyerror("expected yes or no."); @@ -4597,84 +4693,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4601 "util/configparser.c" +#line 4697 "util/configparser.c" break; case 405: #line 1766 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4613 "util/configparser.c" +#line 4709 "util/configparser.c" break; case 406: #line 1775 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4721 "util/configparser.c" break; case 407: #line 1784 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4733 "util/configparser.c" break; case 408: #line 1793 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4745 "util/configparser.c" break; case 409: #line 1802 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4757 "util/configparser.c" break; case 410: #line 1811 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4769 "util/configparser.c" break; case 411: #line 1820 "./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) yyerror("expected yes or no."); @@ -4685,12 +4781,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4785 "util/configparser.c" break; case 412: #line 1833 "./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) yyerror("expected yes or no."); @@ -4701,70 +4797,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4801 "util/configparser.c" break; case 413: #line 1846 "./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) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4717 "util/configparser.c" +#line 4813 "util/configparser.c" break; case 414: #line 1855 "./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 4727 "util/configparser.c" +#line 4823 "util/configparser.c" break; case 415: #line 1862 "./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) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4835 "util/configparser.c" break; case 416: #line 1871 "./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) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4847 "util/configparser.c" break; case 417: #line 1880 "./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) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4763 "util/configparser.c" +#line 4859 "util/configparser.c" break; case 418: #line 1889 "./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) yyerror("expected yes or no."); @@ -4772,23 +4868,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4776 "util/configparser.c" +#line 4872 "util/configparser.c" break; case 419: #line 1898 "./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 4787 "util/configparser.c" +#line 4883 "util/configparser.c" break; case 420: #line 1906 "./util/configparser.y" - { + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4799,23 +4895,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4899 "util/configparser.c" break; case 421: #line 1919 "./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 4814 "util/configparser.c" +#line 4910 "util/configparser.c" break; case 422: #line 1927 "./util/configparser.y" - { + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -4854,22 +4950,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4858 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 423: #line 1968 "./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 4868 "util/configparser.c" +#line 4964 "util/configparser.c" break; case 424: #line 1975 "./util/configparser.y" - { + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -4882,12 +4978,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4886 "util/configparser.c" +#line 4982 "util/configparser.c" break; case 425: #line 1990 "./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) yyerror("expected yes or no."); @@ -4895,12 +4991,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4995 "util/configparser.c" break; case 426: #line 2000 "./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) yyerror("expected yes or no."); @@ -4908,65 +5004,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4912 "util/configparser.c" +#line 5008 "util/configparser.c" break; case 427: #line 2010 "./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 4922 "util/configparser.c" +#line 5018 "util/configparser.c" break; case 428: #line 2017 "./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 4932 "util/configparser.c" +#line 5028 "util/configparser.c" break; case 429: #line 2024 "./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 4942 "util/configparser.c" +#line 5038 "util/configparser.c" break; case 430: #line 2031 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 5050 "util/configparser.c" break; case 431: #line 2040 "./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 4965 "util/configparser.c" +#line 5061 "util/configparser.c" break; case 432: #line 2048 "./util/configparser.y" - { + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -4978,12 +5074,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 5078 "util/configparser.c" break; case 433: #line 2062 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5002,12 +5098,12 @@ yyreduce: } } } -#line 5006 "util/configparser.c" +#line 5102 "util/configparser.c" break; case 434: #line 2083 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5026,12 +5122,12 @@ yyreduce: } } } -#line 5030 "util/configparser.c" +#line 5126 "util/configparser.c" break; case 435: #line 2104 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5041,12 +5137,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5045 "util/configparser.c" +#line 5141 "util/configparser.c" break; case 436: #line 2116 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5056,12 +5152,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5060 "util/configparser.c" +#line 5156 "util/configparser.c" break; case 437: #line 2128 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5071,24 +5167,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5075 "util/configparser.c" +#line 5171 "util/configparser.c" break; case 438: #line 2140 "./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, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5087 "util/configparser.c" +#line 5183 "util/configparser.c" break; case 439: #line 2149 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5107,58 +5203,58 @@ yyreduce: } } } -#line 5111 "util/configparser.c" +#line 5207 "util/configparser.c" break; case 440: #line 2170 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5123 "util/configparser.c" +#line 5219 "util/configparser.c" break; case 441: #line 2180 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5135 "util/configparser.c" +#line 5231 "util/configparser.c" break; case 442: #line 2189 "./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 5146 "util/configparser.c" +#line 5242 "util/configparser.c" break; case 443: #line 2197 "./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 5157 "util/configparser.c" +#line 5253 "util/configparser.c" break; case 444: #line 2205 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5169,12 +5265,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" +#line 5269 "util/configparser.c" break; case 445: #line 2218 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5185,12 +5281,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5189 "util/configparser.c" +#line 5285 "util/configparser.c" break; case 446: #line 2231 "./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) { yyerror("number expected"); @@ -5203,12 +5299,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5207 "util/configparser.c" +#line 5303 "util/configparser.c" break; case 447: #line 2246 "./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) { yyerror("number expected"); @@ -5221,69 +5317,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5225 "util/configparser.c" +#line 5321 "util/configparser.c" break; case 448: #line 2261 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 5333 "util/configparser.c" break; case 449: #line 2270 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5249 "util/configparser.c" +#line 5345 "util/configparser.c" break; case 450: #line 2279 "./util/configparser.y" - { + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5354 "util/configparser.c" break; case 451: #line 2285 "./util/configparser.y" - { + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5270 "util/configparser.c" +#line 5366 "util/configparser.c" break; case 452: #line 2294 "./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) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5282 "util/configparser.c" +#line 5378 "util/configparser.c" break; case 453: #line 2303 "./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) yyerror("expected yes or no."); @@ -5291,12 +5387,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5295 "util/configparser.c" +#line 5391 "util/configparser.c" break; case 454: #line 2313 "./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) yyerror("expected yes or no."); @@ -5304,12 +5400,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5308 "util/configparser.c" +#line 5404 "util/configparser.c" break; case 455: #line 2323 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5320,12 +5416,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5420 "util/configparser.c" break; case 456: #line 2336 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5336,12 +5432,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5340 "util/configparser.c" +#line 5436 "util/configparser.c" break; case 457: #line 2349 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5351,12 +5447,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5355 "util/configparser.c" +#line 5451 "util/configparser.c" break; case 458: #line 2361 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5368,12 +5464,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5372 "util/configparser.c" +#line 5468 "util/configparser.c" break; case 459: #line 2375 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5383,12 +5479,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5387 "util/configparser.c" +#line 5483 "util/configparser.c" break; case 460: #line 2387 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5400,12 +5496,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5404 "util/configparser.c" +#line 5500 "util/configparser.c" break; case 461: #line 2401 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5413,56 +5509,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5417 "util/configparser.c" +#line 5513 "util/configparser.c" break; case 462: #line 2411 "./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 5427 "util/configparser.c" +#line 5523 "util/configparser.c" break; case 463: #line 2418 "./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 5437 "util/configparser.c" +#line 5533 "util/configparser.c" break; case 464: #line 2425 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5449 "util/configparser.c" +#line 5545 "util/configparser.c" break; case 465: #line 2434 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5461 "util/configparser.c" +#line 5557 "util/configparser.c" break; case 466: #line 2443 "./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) yyerror("expected yes or no."); @@ -5470,12 +5566,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5474 "util/configparser.c" +#line 5570 "util/configparser.c" break; case 467: #line 2453 "./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) yyerror("expected yes or no."); @@ -5483,12 +5579,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5583 "util/configparser.c" break; case 468: #line 2463 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5496,56 +5592,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5500 "util/configparser.c" +#line 5596 "util/configparser.c" break; case 469: #line 2473 "./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 5510 "util/configparser.c" +#line 5606 "util/configparser.c" break; case 470: #line 2480 "./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 5520 "util/configparser.c" +#line 5616 "util/configparser.c" break; case 471: #line 2487 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5532 "util/configparser.c" +#line 5628 "util/configparser.c" break; case 472: #line 2496 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5544 "util/configparser.c" +#line 5640 "util/configparser.c" break; case 473: #line 2505 "./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) yyerror("expected yes or no."); @@ -5553,12 +5649,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 5653 "util/configparser.c" break; case 474: #line 2515 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5566,53 +5662,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5570 "util/configparser.c" +#line 5666 "util/configparser.c" break; case 475: #line 2525 "./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 5580 "util/configparser.c" +#line 5676 "util/configparser.c" break; case 476: #line 2532 "./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 5590 "util/configparser.c" +#line 5686 "util/configparser.c" break; case 477: #line 2539 "./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 5600 "util/configparser.c" +#line 5696 "util/configparser.c" break; case 478: #line 2546 "./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 5611 "util/configparser.c" +#line 5707 "util/configparser.c" break; case 479: #line 2554 "./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) yyerror("expected yes or no."); @@ -5620,12 +5716,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5720 "util/configparser.c" break; case 480: #line 2564 "./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) yyerror("expected yes or no."); @@ -5633,12 +5729,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5637 "util/configparser.c" +#line 5733 "util/configparser.c" break; case 481: #line 2574 "./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) yyerror("expected yes or no."); @@ -5646,12 +5742,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 5746 "util/configparser.c" break; case 482: #line 2584 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5659,12 +5755,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5663 "util/configparser.c" +#line 5759 "util/configparser.c" break; case 483: #line 2594 "./util/configparser.y" - { + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5701,12 +5797,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5705 "util/configparser.c" +#line 5801 "util/configparser.c" break; case 484: #line 2633 "./util/configparser.y" - { + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5714,34 +5810,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5718 "util/configparser.c" +#line 5814 "util/configparser.c" break; case 485: #line 2643 "./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 5729 "util/configparser.c" +#line 5825 "util/configparser.c" break; case 486: #line 2651 "./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 5740 "util/configparser.c" +#line 5836 "util/configparser.c" break; case 487: #line 2659 "./util/configparser.y" - { + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5754,32 +5850,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5758 "util/configparser.c" +#line 5854 "util/configparser.c" break; case 488: #line 2674 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5770 "util/configparser.c" +#line 5866 "util/configparser.c" break; case 489: #line 2683 "./util/configparser.y" - { + { OUTYY(("\nP(remote-control:)\n")); } -#line 5778 "util/configparser.c" +#line 5874 "util/configparser.c" break; case 500: #line 2694 "./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) yyerror("expected yes or no."); @@ -5787,220 +5883,233 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" +#line 5887 "util/configparser.c" break; case 501: #line 2704 "./util/configparser.y" - { + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" +#line 5899 "util/configparser.c" break; case 502: #line 2713 "./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 5813 "util/configparser.c" +#line 5909 "util/configparser.c" break; case 503: #line 2720 "./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 5823 "util/configparser.c" +#line 5919 "util/configparser.c" break; case 504: #line 2727 "./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 5833 "util/configparser.c" +#line 5929 "util/configparser.c" break; case 505: #line 2734 "./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 5843 "util/configparser.c" +#line 5939 "util/configparser.c" break; case 506: #line 2741 "./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 5853 "util/configparser.c" +#line 5949 "util/configparser.c" break; case 507: #line 2748 "./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 5863 "util/configparser.c" +#line 5959 "util/configparser.c" break; case 508: #line 2755 "./util/configparser.y" - { + { OUTYY(("\nP(dnstap:)\n")); } -#line 5871 "util/configparser.c" +#line 5967 "util/configparser.c" break; - case 529: + case 530: #line 2775 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5883 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 530: + case 531: #line 2784 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_bidirectional = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5992 "util/configparser.c" + break; + + case 532: +#line 2794 "./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 5893 "util/configparser.c" +#line 6002 "util/configparser.c" break; - case 531: -#line 2791 "./util/configparser.y" - { + case 533: +#line 2801 "./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 5903 "util/configparser.c" +#line 6012 "util/configparser.c" break; - case 532: -#line 2798 "./util/configparser.y" - { + case 534: +#line 2808 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 6024 "util/configparser.c" break; - case 533: -#line 2807 "./util/configparser.y" - { + case 535: +#line 2817 "./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 5925 "util/configparser.c" +#line 6034 "util/configparser.c" break; - case 534: -#line 2814 "./util/configparser.y" - { + case 536: +#line 2824 "./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 5935 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 535: -#line 2821 "./util/configparser.y" - { + case 537: +#line 2831 "./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 5945 "util/configparser.c" +#line 6054 "util/configparser.c" break; - case 536: -#line 2828 "./util/configparser.y" - { + case 538: +#line 2838 "./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 5955 "util/configparser.c" +#line 6064 "util/configparser.c" break; - case 537: -#line 2835 "./util/configparser.y" - { + case 539: +#line 2845 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5967 "util/configparser.c" +#line 6076 "util/configparser.c" break; - case 538: -#line 2844 "./util/configparser.y" - { + case 540: +#line 2854 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5979 "util/configparser.c" +#line 6088 "util/configparser.c" break; - case 539: -#line 2853 "./util/configparser.y" - { + case 541: +#line 2863 "./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 5989 "util/configparser.c" +#line 6098 "util/configparser.c" break; - case 540: -#line 2860 "./util/configparser.y" - { + case 542: +#line 2870 "./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 5999 "util/configparser.c" +#line 6108 "util/configparser.c" break; - case 541: -#line 2867 "./util/configparser.y" - { + case 543: +#line 2877 "./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) yyerror("expected yes or no."); @@ -6008,12 +6117,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6121 "util/configparser.c" break; - case 542: -#line 2877 "./util/configparser.y" - { + case 544: +#line 2887 "./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) yyerror("expected yes or no."); @@ -6021,12 +6130,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6134 "util/configparser.c" break; - case 543: -#line 2887 "./util/configparser.y" - { + case 545: +#line 2897 "./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) yyerror("expected yes or no."); @@ -6034,12 +6143,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6038 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 544: -#line 2897 "./util/configparser.y" - { + case 546: +#line 2907 "./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) yyerror("expected yes or no."); @@ -6047,12 +6156,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6051 "util/configparser.c" +#line 6160 "util/configparser.c" break; - case 545: -#line 2907 "./util/configparser.y" - { + case 547: +#line 2917 "./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) yyerror("expected yes or no."); @@ -6060,12 +6169,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6173 "util/configparser.c" break; - case 546: -#line 2917 "./util/configparser.y" - { + case 548: +#line 2927 "./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) yyerror("expected yes or no."); @@ -6073,48 +6182,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6077 "util/configparser.c" +#line 6186 "util/configparser.c" break; - case 547: -#line 2927 "./util/configparser.y" - { + case 549: +#line 2937 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6085 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 551: -#line 2936 "./util/configparser.y" - { + case 553: +#line 2946 "./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 6095 "util/configparser.c" +#line 6204 "util/configparser.c" break; - case 552: -#line 2942 "./util/configparser.y" - { + case 554: +#line 2952 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6103 "util/configparser.c" +#line 6212 "util/configparser.c" break; - case 556: -#line 2951 "./util/configparser.y" - { + case 558: +#line 2961 "./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 6113 "util/configparser.c" +#line 6222 "util/configparser.c" break; - case 557: -#line 2957 "./util/configparser.y" - { + case 559: +#line 2967 "./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) yyerror("expected yes or no."); @@ -6122,132 +6231,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6126 "util/configparser.c" +#line 6235 "util/configparser.c" break; - case 558: -#line 2967 "./util/configparser.y" - { + case 560: +#line 2977 "./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 6136 "util/configparser.c" +#line 6245 "util/configparser.c" break; - case 559: -#line 2974 "./util/configparser.y" - { + case 561: +#line 2984 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6148 "util/configparser.c" +#line 6257 "util/configparser.c" break; - case 560: -#line 2983 "./util/configparser.y" - { + case 562: +#line 2993 "./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 6159 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 561: -#line 2991 "./util/configparser.y" - { + case 563: +#line 3001 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6167 "util/configparser.c" +#line 6276 "util/configparser.c" break; - case 574: -#line 3007 "./util/configparser.y" - { + case 576: +#line 3017 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6288 "util/configparser.c" break; - case 575: -#line 3017 "./util/configparser.y" - { + case 577: +#line 3027 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6191 "util/configparser.c" +#line 6300 "util/configparser.c" break; - case 576: -#line 3026 "./util/configparser.y" - { + case 578: +#line 3036 "./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 6201 "util/configparser.c" +#line 6310 "util/configparser.c" break; - case 577: -#line 3033 "./util/configparser.y" - { + case 579: +#line 3043 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6213 "util/configparser.c" +#line 6322 "util/configparser.c" break; - case 578: -#line 3042 "./util/configparser.y" - { + case 580: +#line 3052 "./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 6223 "util/configparser.c" +#line 6332 "util/configparser.c" break; - case 579: -#line 3049 "./util/configparser.y" - { + case 581: +#line 3059 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6235 "util/configparser.c" +#line 6344 "util/configparser.c" break; - case 580: -#line 3058 "./util/configparser.y" - { + case 582: +#line 3068 "./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 6246 "util/configparser.c" +#line 6355 "util/configparser.c" break; - case 581: -#line 3066 "./util/configparser.y" - { + case 583: +#line 3076 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6258,23 +6367,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6371 "util/configparser.c" break; - case 582: -#line 3079 "./util/configparser.y" - { + case 584: +#line 3089 "./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 6273 "util/configparser.c" +#line 6382 "util/configparser.c" break; - case 583: -#line 3087 "./util/configparser.y" - { + case 585: +#line 3097 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6285,20 +6394,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6289 "util/configparser.c" +#line 6398 "util/configparser.c" break; - case 584: -#line 3100 "./util/configparser.y" - { + case 586: +#line 3110 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6297 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 593: -#line 3111 "./util/configparser.y" - { + case 595: +#line 3121 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6308,12 +6417,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6312 "util/configparser.c" +#line 6421 "util/configparser.c" break; - case 594: -#line 3123 "./util/configparser.y" - { + case 596: +#line 3133 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6323,12 +6432,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6327 "util/configparser.c" +#line 6436 "util/configparser.c" break; - case 595: -#line 3135 "./util/configparser.y" - { + case 597: +#line 3145 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6338,12 +6447,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6342 "util/configparser.c" +#line 6451 "util/configparser.c" break; - case 596: -#line 3147 "./util/configparser.y" - { + case 598: +#line 3157 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6356,12 +6465,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6360 "util/configparser.c" +#line 6469 "util/configparser.c" break; - case 597: -#line 3162 "./util/configparser.y" - { + case 599: +#line 3172 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6372,12 +6481,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6485 "util/configparser.c" break; - case 598: -#line 3175 "./util/configparser.y" - { + case 600: +#line 3185 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6388,12 +6497,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6392 "util/configparser.c" +#line 6501 "util/configparser.c" break; - case 599: -#line 3188 "./util/configparser.y" - { + case 601: +#line 3198 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6402,20 +6511,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6406 "util/configparser.c" +#line 6515 "util/configparser.c" break; - case 600: -#line 3199 "./util/configparser.y" - { + case 602: +#line 3209 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6414 "util/configparser.c" +#line 6523 "util/configparser.c" break; - case 605: -#line 3208 "./util/configparser.y" - { + case 607: +#line 3218 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6428,12 +6537,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6432 "util/configparser.c" +#line 6541 "util/configparser.c" break; - case 606: -#line 3223 "./util/configparser.y" - { + case 608: +#line 3233 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6446,11 +6555,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6450 "util/configparser.c" +#line 6559 "util/configparser.c" break; -#line 6454 "util/configparser.c" +#line 6563 "util/configparser.c" default: break; } @@ -6514,7 +6623,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (!yymsg) { yymsg = yymsgbuf; @@ -6669,7 +6778,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6682,7 +6791,7 @@ yyreturn: #endif return yyresult; } -#line 3237 "./util/configparser.y" +#line 3247 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 66662409e..ca27ad9f5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -209,133 +209,134 @@ extern int yydebug; VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, VAR_DNSTAP_SEND_IDENTITY = 416, VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_DNSTAP_BIDIRECTIONAL = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -499,133 +500,134 @@ extern int yydebug; #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 #define VAR_DNSTAP_SEND_IDENTITY 416 #define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_DNSTAP_BIDIRECTIONAL 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -635,7 +637,7 @@ union YYSTYPE char* str; -#line 639 "util/configparser.h" +#line 641 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index eb21abeed..4af776112 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -119,7 +119,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP %token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE %token VAR_DNSTAP_TLS_CLIENT_KEY_FILE VAR_DNSTAP_TLS_CLIENT_CERT_FILE -%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION +%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION VAR_DNSTAP_BIDIRECTIONAL %token VAR_DNSTAP_IDENTITY VAR_DNSTAP_VERSION %token VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES %token VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES @@ -2758,7 +2758,7 @@ dtstart: VAR_DNSTAP ; contents_dt: contents_dt content_dt | ; -content_dt: dt_dnstap_enable | dt_dnstap_socket_path | +content_dt: dt_dnstap_enable | dt_dnstap_socket_path | dt_dnstap_bidirectional | 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 | @@ -2780,6 +2780,16 @@ dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG free($2); } ; +dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG + { + OUTYY(("P(dt_dnstap_bidirectional:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_bidirectional = + (strcmp($2, "yes")==0); + free($2); + } + ; dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG { OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2)); From c00a5d0723bf1cfa364244d4cafddfe8ee60b180 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Tue, 14 Jul 2020 14:29:09 +0200 Subject: [PATCH 106/394] Add maximum to received frame streams frames. --- dnstap/dtstream.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index f5fae08dc..030b66eee 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -69,6 +69,9 @@ /** the msec to wait for reconnect slow, to stop busy spinning on reconnect */ #define DTIO_RECONNECT_TIMEOUT_SLOW 1000 +/** maximum length of received frame */ +#define DTIO_RECV_FRAME_MAX_LEN 1000 + struct stop_flush_info; /** DTIO command channel commands */ enum { @@ -1031,6 +1034,12 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) continue; } dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); + if(dtio->read_frame.frame_len > DTIO_RECV_FRAME_MAX_LEN) { + verbose(VERB_OPS, "dnstap: received frame exceeds max " + "length, capped to %d bytes", + DTIO_RECV_FRAME_MAX_LEN); + dtio->read_frame.frame_len = DTIO_RECV_FRAME_MAX_LEN; + } dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); dtio->read_frame.buf_cap = dtio->read_frame.frame_len; if(!dtio->read_frame.buf) { From db3ac2335cc5d2de1e6c8f73626cb65ef18b4d2d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 15:49:42 +0200 Subject: [PATCH 107/394] - Handle SSL_ERROR_WANT_WRITE on SSL_read for negotiation - Close connection when receiving overly large frame --- dnstap/dtstream.c | 30 ++++++++++++++++++++++++++---- dnstap/dtstream.h | 3 +++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 030b66eee..171fe1c12 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -94,6 +94,8 @@ static int dtio_control_start_send(struct dt_io_thread* dtio); #ifdef HAVE_SSL /** enable briefly waiting for a read event, for SSL negotiation */ static int dtio_enable_brief_read(struct dt_io_thread* dtio); +/** enable briefly waiting for a write event, for SSL negotiation */ +static int dtio_enable_brief_write(struct dt_io_thread* dtio); #endif struct dt_msg_queue* @@ -945,7 +947,7 @@ static int ssl_read_bytes(struct dt_io_thread* dtio, void* buf, size_t len) /* continue later */ return -1; } else if(want == SSL_ERROR_WANT_WRITE) { - (void)dtio_add_output_event_write(dtio); + (void)dtio_enable_brief_write(dtio); return -1; } else if(want == SSL_ERROR_SYSCALL) { #ifdef ECONNRESET @@ -1036,9 +1038,9 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); if(dtio->read_frame.frame_len > DTIO_RECV_FRAME_MAX_LEN) { verbose(VERB_OPS, "dnstap: received frame exceeds max " - "length, capped to %d bytes", + "length of %d bytes, closing connection", DTIO_RECV_FRAME_MAX_LEN); - dtio->read_frame.frame_len = DTIO_RECV_FRAME_MAX_LEN; + goto close_connection; } dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); dtio->read_frame.buf_cap = dtio->read_frame.frame_len; @@ -1207,6 +1209,24 @@ static int dtio_disable_brief_read(struct dt_io_thread* dtio) } #endif /* HAVE_SSL */ +#ifdef HAVE_SSL +/** enable the brief write condition */ +static int dtio_enable_brief_write(struct dt_io_thread* dtio) +{ + dtio->ssl_brief_write = 1; + return dtio_add_output_event_write(dtio); +} +#endif /* HAVE_SSL */ + +#ifdef HAVE_SSL +/** disable the brief write condition */ +static int dtio_disable_brief_write(struct dt_io_thread* dtio) +{ + dtio->ssl_brief_write = 0; + return dtio_add_output_event_read(dtio); +} +#endif /* HAVE_SSL */ + #ifdef HAVE_SSL /** check peer verification after ssl handshake connection, false if closed*/ static int dtio_ssl_check_peer(struct dt_io_thread* dtio) @@ -1380,7 +1400,9 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) } #endif - if((bits&UB_EV_READ)) { + if((bits&UB_EV_READ || dtio->ssl_brief_write)) { + if(dtio->ssl_brief_write) + (void)dtio_disable_brief_write(dtio); if(dtio->ready_frame_sent && !dtio->accept_frame_received) { if(dtio_read_accept_frame(dtio) <= 0) return; diff --git a/dnstap/dtstream.h b/dnstap/dtstream.h index d93714baf..ede491f30 100644 --- a/dnstap/dtstream.h +++ b/dnstap/dtstream.h @@ -151,6 +151,9 @@ struct dt_io_thread { * This happens during negotiation, we then do not want to write, * but wait for a read event. */ int ssl_brief_read; + /** true if SSL_read is waiting for a write event. Set back to 0 after + * single write event is handled. */ + int ssl_brief_write; /** the buffer that currently getting written, or NULL if no * (partial) message written now */ From b5b79e3a36d8983a6ce37fe08a01fb005215d066 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 15 Jul 2020 15:15:45 +0000 Subject: [PATCH 108/394] Add feature to serve original TTLs rather than decrementing ones --- cachedb/cachedb.c | 1 + doc/unbound.conf.5.in | 12 + services/cache/rrset.c | 2 + util/config_file.c | 4 + util/config_file.h | 2 + util/configlexer.c | 4057 +++++++++++++++++++------------------- util/configlexer.lex | 1 + util/configparser.c | 3187 +++++++++++++++--------------- util/configparser.h | 305 ++- util/configparser.y | 14 +- util/data/msgencode.c | 8 +- util/data/msgparse.h | 2 + util/data/msgreply.c | 3 + util/data/packed_rrset.c | 8 +- util/data/packed_rrset.h | 3 + 15 files changed, 3838 insertions(+), 3771 deletions(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index eed4d5fd9..6a2b735aa 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -465,6 +465,7 @@ packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t subtract) data->rr_ttl[i] -= subtract; else data->rr_ttl[i] = 0; } + data->ttl_add = 0; } /* Adjust the TTL of a DNS message and its RRs by 'adjust'. If 'adjust' is diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index de5a333bd..5e826bbf6 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1124,6 +1124,18 @@ responding with expired data. A recommended value per draft-ietf-dnsop-serve-stale-10 is 1800. Setting this to 0 will disable this behavior. Default is 0. .TP +.B serve\-original\-ttl: \fI +If enabled, unbound will always return the original TTL as received from +the upstream authoritative name server rather than the decrementing TTL as +stored in the cache. This feature may be useful if unbound serves as a +front-end to a hidden authoritative name server. Enabling this feature does +not impact cache expiry, it only changes the TTL unbound embeds in responses to +queries. Note that the returned TTL is still subject to the +configured maximum TTL as set using \fBcache\-max\-ttl\fR (defaults to +86400 seconds). If you wish to return higher original TTL values, you may +need to explicitly adjust the setting for \fBcache\-max\-ttl\fR. +Default is "no". +.TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> List of keysize and iteration count values, separated by spaces, surrounded by quotes. Default is "1024 150 2048 500 4096 2500". This determines the diff --git a/services/cache/rrset.c b/services/cache/rrset.c index 8c0251bcb..4e3d08bda 100644 --- a/services/cache/rrset.c +++ b/services/cache/rrset.c @@ -45,6 +45,7 @@ #include "util/config_file.h" #include "util/data/packed_rrset.h" #include "util/data/msgreply.h" +#include "util/data/msgparse.h" #include "util/regional.h" #include "util/alloc.h" #include "util/net_help.h" @@ -396,6 +397,7 @@ rrset_update_sec_status(struct rrset_cache* r, cachedata->ttl = updata->ttl + now; for(i=0; icount+cachedata->rrsig_count; i++) cachedata->rr_ttl[i] = updata->rr_ttl[i]+now; + cachedata->ttl_add = now; } } lock_rw_unlock(&e->lock); diff --git a/util/config_file.c b/util/config_file.c index b1420d508..5e9e2fda2 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -250,6 +250,7 @@ config_create(void) cfg->serve_expired_ttl_reset = 0; cfg->serve_expired_reply_ttl = 30; cfg->serve_expired_client_timeout = 0; + cfg->serve_original_ttl = 0; cfg->add_holddown = 30*24*3600; cfg->del_holddown = 30*24*3600; cfg->keep_missing = 366*24*3600; /* one year plus a little leeway */ @@ -604,6 +605,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else if(strcmp(opt, "serve-expired-reply-ttl:") == 0) { IS_NUMBER_OR_ZERO; cfg->serve_expired_reply_ttl = atoi(val); SERVE_EXPIRED_REPLY_TTL=(time_t)cfg->serve_expired_reply_ttl;} else S_NUMBER_OR_ZERO("serve-expired-client-timeout:", serve_expired_client_timeout) + else S_YNO("serve-original-ttl:", serve_original_ttl) else S_STR("val-nsec3-keysize-iterations:", val_nsec3_key_iterations) else S_UNSIGNED_OR_ZERO("add-holddown:", add_holddown) else S_UNSIGNED_OR_ZERO("del-holddown:", del_holddown) @@ -1008,6 +1010,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "serve-expired-ttl-reset", serve_expired_ttl_reset) else O_DEC(opt, "serve-expired-reply-ttl", serve_expired_reply_ttl) else O_DEC(opt, "serve-expired-client-timeout", serve_expired_client_timeout) + else O_YNO(opt, "serve-original-ttl", serve_original_ttl) else O_STR(opt, "val-nsec3-keysize-iterations",val_nsec3_key_iterations) else O_UNS(opt, "add-holddown", add_holddown) else O_UNS(opt, "del-holddown", del_holddown) @@ -2030,6 +2033,7 @@ config_apply(struct config_file* config) SERVE_EXPIRED = config->serve_expired; SERVE_EXPIRED_TTL = (time_t)config->serve_expired_ttl; SERVE_EXPIRED_REPLY_TTL = (time_t)config->serve_expired_reply_ttl; + SERVE_ORIGINAL_TTL = config->serve_original_ttl; MAX_NEG_TTL = (time_t)config->max_negative_ttl; RTT_MIN_TIMEOUT = config->infra_cache_min_rtt; EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size; diff --git a/util/config_file.h b/util/config_file.h index fa7e5c592..c7a028fba 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -373,6 +373,8 @@ struct config_file { /** serve expired entries only after trying to update the entries and this * timeout (in milliseconds) is reached */ int serve_expired_client_timeout; + /** serve original TTLs rather than decrementing ones */ + int serve_original_ttl; /** nsec3 maximum iterations per key size, string */ char* val_nsec3_key_iterations; /** autotrust add holddown time, in seconds */ diff --git a/util/configlexer.c b/util/configlexer.c index a4ac74066..b4013146d 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 314 -#define YY_END_OF_BUFFER 315 +#define YY_NUM_RULES 315 +#define YY_END_OF_BUFFER 316 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,347 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3083] = +static const flex_int16_t yy_accept[3096] = { 0, - 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, - 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, - 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, - 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, - 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, + 1, 1, 316, 313, 1, 295, 295, 314, 2, 314, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 297, 298, 298, 299, 314, 301, 302, 302, + 303, 314, 308, 305, 306, 306, 307, 314, 309, 310, + 310, 311, 314, 312, 296, 2, 300, 314, 312, 313, + 0, 1, 2, 2, 2, 2, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, - 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 297, 0, 301, 0, 308, 0, 305, 309, 0, + 312, 0, 2, 2, 312, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 312, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 115, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 123, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 115, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 123, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 99, 312, 312, 312, 312, 312, - 312, 8, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 116, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 99, 313, 313, 313, 313, 313, + 313, 8, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 116, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 128, 312, 311, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 128, 313, 312, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 290, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 311, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 57, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 227, 312, 14, 15, 312, 19, 18, 312, 312, 211, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 312, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 57, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 228, 313, 14, 15, 313, 19, 18, 313, 313, 212, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 122, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 209, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 122, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 210, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 3, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 283, 312, 312, 282, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 303, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 312, 313, + 313, 313, 313, 313, 313, 313, 284, 313, 313, 283, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 304, 313, 313, 313, - 312, 312, 312, 56, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 60, 312, 257, 312, 312, 312, 312, 312, 312, 312, - 312, 290, 291, 312, 312, 312, 312, 312, 61, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 119, 312, 312, 312, 312, - 312, 312, 312, 312, 198, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 21, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 56, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 60, 313, 258, 313, 313, 313, 313, 313, 313, + 313, 313, 291, 292, 313, 313, 313, 313, 313, 61, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 119, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 199, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 21, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 147, 312, 312, 303, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 97, 312, - 312, 312, 312, 312, 312, 312, 265, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 170, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 146, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 147, 313, 313, 304, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 97, 313, 313, 313, 313, 313, 313, 313, 266, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 171, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 146, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 32, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 33, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 58, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 121, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 96, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 32, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 33, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 58, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 114, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 59, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 230, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 171, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 47, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 121, 313, 313, 313, 313, 313, 114, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 59, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 231, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 172, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 47, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 248, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 51, 312, 52, 312, 312, 312, 312, - 312, 100, 312, 101, 312, 312, 312, 312, 98, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 7, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 249, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 51, 313, 52, + 313, 313, 313, 313, 313, 100, 313, 101, 313, 313, + 313, 313, 98, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 7, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 220, 312, 312, 312, - 312, 149, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 231, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 48, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 190, 312, - 189, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 221, 313, 313, 313, 313, 149, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 232, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 48, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 191, 313, 190, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 16, 17, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 62, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 197, 312, 312, 312, 312, 312, - 312, 103, 312, 102, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 181, 312, 312, 312, 312, - 312, 312, 312, 312, 129, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 81, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 16, 17, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 62, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 198, + 313, 313, 313, 313, 313, 313, 103, 313, 102, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 182, 313, 313, 313, 313, 313, 313, 313, 313, 129, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 81, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 210, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 85, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 184, - 185, 312, 312, 312, 259, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 6, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 211, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 85, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 55, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 185, 186, 313, 313, 313, 260, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 6, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 263, - 312, 312, 312, 312, 312, 312, 284, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 42, 312, 312, - 312, 312, 44, 312, 312, 312, 312, 312, 312, 312, - 312, 45, 312, 312, 312, 312, 312, 312, 312, 312, - 177, 312, 312, 312, 124, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 202, 312, 178, 312, 312, - 312, 217, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 264, 313, 313, 313, 313, 313, + 313, 285, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 42, 313, 313, 313, 313, 44, 313, + 313, 313, 313, 313, 313, 313, 313, 45, 313, 313, + 313, 313, 313, 313, 313, 313, 178, 313, 313, 313, + 124, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 203, 313, 179, 313, 313, 313, 218, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 46, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 126, 108, 312, 109, 312, 312, 312, 107, 312, - 312, 312, 312, 312, 312, 312, 312, 144, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 247, - 312, 312, 312, 312, 312, 312, 312, 312, 179, 312, - 312, 312, 312, 312, 182, 312, 188, 312, 312, 312, - 312, 312, 216, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 95, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 46, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 126, 108, 313, + 109, 313, 313, 313, 107, 313, 313, 313, 313, 313, + 313, 313, 313, 144, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 248, 313, 313, 313, 313, + 313, 313, 313, 313, 180, 313, 313, 313, 313, 313, + 183, 313, 189, 313, 313, 313, 313, 313, 217, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 95, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 53, 312, 312, 312, 26, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 20, 312, 312, - 312, 312, 312, 312, 27, 36, 312, 154, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 70, 72, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 267, 312, 312, 312, 228, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 110, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 143, 312, + 313, 313, 120, 313, 313, 313, 313, 313, 313, 313, + 53, 313, 313, 313, 26, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 20, 313, 313, 313, 313, 313, + 313, 27, 36, 313, 154, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 70, 72, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 268, + 313, 313, 313, 229, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 110, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 278, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 148, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 208, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 287, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 165, - 312, 312, 312, 312, 312, 312, 312, 312, 104, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 160, 312, + 313, 313, 313, 313, 313, 143, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 279, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 148, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 209, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 288, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 165, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 104, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 172, 312, 312, 312, 312, 312, 132, 312, 312, 312, - 312, 312, 91, 312, 312, 312, 312, 200, 312, 312, - 312, 312, 312, 312, 218, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 239, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 125, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 164, 312, 312, 312, 312, 312, 73, 74, 312, - 312, 312, 312, 312, 54, 312, 312, 312, 312, 312, - 80, 173, 312, 191, 312, 221, 312, 312, 183, 260, - 312, 312, 312, 312, 312, 66, 312, 175, 312, 312, + 313, 313, 313, 313, 313, 313, 160, 313, 173, 313, + 313, 313, 313, 313, 132, 313, 313, 313, 313, 313, + 91, 313, 313, 313, 313, 201, 313, 313, 313, 313, + 313, 313, 219, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 240, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 125, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 164, + 313, 313, 313, 313, 313, 73, 74, 313, 313, 313, + 313, 313, 54, 313, 313, 313, 313, 313, 80, 174, + 313, 192, 313, 222, 313, 313, 184, 261, 313, 313, - 312, 312, 312, 9, 312, 312, 312, 94, 312, 312, - 312, 312, 252, 312, 312, 312, 312, 199, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 163, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 150, 312, - 266, 312, 312, 312, 312, 238, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 212, 312, 312, + 313, 313, 313, 66, 313, 176, 313, 313, 313, 313, + 313, 9, 313, 313, 313, 94, 313, 313, 313, 313, + 253, 313, 313, 313, 313, 200, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 163, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 150, 313, 267, + 313, 313, 313, 313, 239, 313, 313, 313, 313, 313, - 312, 312, 258, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 281, 312, 174, - 312, 312, 312, 312, 312, 312, 312, 65, 67, 312, - 312, 312, 312, 312, 312, 312, 93, 312, 312, 312, - 312, 250, 312, 312, 312, 312, 262, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 204, 34, - 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, - 312, 312, 312, 90, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 213, 313, 313, 313, + 313, 259, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 282, 313, 175, 313, + 313, 313, 313, 313, 313, 313, 65, 67, 313, 313, + 313, 313, 313, 313, 313, 93, 313, 313, 313, 313, + 251, 313, 313, 313, 313, 263, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 205, 34, + 28, 30, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 35, 313, 29, 31, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 206, 203, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 64, 312, 312, 127, 312, 111, 312, 312, 312, 312, - 312, 312, 312, 312, 145, 13, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 276, 312, 279, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, - 312, 22, 312, 312, 312, 256, 312, 312, 312, 312, - 264, 312, 312, 312, 68, 312, 214, 312, 312, 312, - 312, 205, 312, 312, 63, 312, 312, 312, 312, 23, + 313, 313, 313, 90, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 207, 204, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 64, 313, 313, 127, 313, 111, 313, 313, 313, 313, + 313, 313, 313, 313, 145, 13, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 277, 313, 280, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 12, 313, + 313, 22, 313, 313, 313, 257, 313, 313, 313, 313, + 265, 313, 313, 313, 68, 313, 215, 313, 313, 313, - 312, 43, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 159, 158, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 207, 201, 312, 219, 312, - 312, 268, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 75, - 312, 312, 312, 251, 312, 312, 312, 312, 187, 312, - 312, 312, 312, 213, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 285, 286, 156, 312, 312, 69, 312, - 312, 312, 312, 166, 312, 312, 105, 106, 312, 312, + 313, 313, 206, 313, 313, 63, 313, 313, 313, 313, + 23, 313, 43, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 159, 158, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 208, 202, 313, 220, + 313, 313, 269, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 75, 313, 313, 313, 252, 313, 313, 313, 313, 188, + 313, 313, 313, 313, 214, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 286, 287, 156, 313, 313, 69, - 312, 312, 151, 312, 153, 312, 192, 312, 312, 312, - 312, 157, 312, 312, 222, 312, 312, 312, 312, 312, - 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 229, 312, 312, 312, 312, 312, - 312, 312, 24, 312, 261, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 193, 312, 312, 249, - 312, 280, 312, 186, 312, 312, 312, 312, 49, 312, - 312, 312, 312, 4, 312, 312, 312, 312, 118, 133, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 225, 37, + 313, 313, 313, 313, 166, 313, 313, 313, 105, 106, + 313, 313, 313, 313, 151, 313, 153, 313, 193, 313, + 313, 313, 313, 157, 313, 313, 223, 313, 313, 313, + 313, 313, 313, 313, 134, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 230, 313, 313, 313, + 313, 313, 313, 313, 24, 313, 262, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 194, 313, + 313, 250, 313, 281, 313, 187, 313, 313, 313, 313, + 49, 313, 313, 313, 313, 4, 313, 313, 313, 313, + 118, 133, 313, 313, 313, 170, 313, 313, 313, 313, - 38, 312, 312, 312, 312, 312, 312, 312, 269, 312, - 312, 312, 312, 312, 312, 237, 312, 312, 312, 312, - 312, 312, 312, 196, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 78, 312, 50, 255, 312, 226, 312, - 312, 312, 312, 11, 312, 312, 312, 312, 312, 312, - 117, 312, 312, 312, 312, 194, 82, 312, 40, 312, - 312, 312, 312, 312, 312, 312, 312, 162, 312, 312, - 312, 312, 312, 136, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 236, 312, 312, 312, 312, 130, 312, - 312, 112, 113, 312, 312, 312, 84, 88, 83, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 226, 37, 38, 313, 313, 313, 313, 313, 313, + 313, 270, 313, 313, 313, 313, 313, 313, 238, 313, + 313, 313, 313, 313, 313, 313, 197, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 78, 313, 50, 256, + 313, 227, 313, 313, 313, 313, 11, 313, 313, 313, + 313, 313, 313, 117, 313, 313, 313, 313, 195, 82, + 313, 40, 313, 313, 313, 313, 313, 313, 313, 313, + 162, 313, 313, 313, 313, 313, 136, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 237, 313, 313, 313, - 76, 312, 312, 312, 312, 312, 10, 312, 312, 312, - 253, 288, 312, 312, 312, 312, 293, 39, 312, 312, - 312, 312, 312, 161, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 89, 87, 312, 77, - 277, 312, 312, 312, 312, 312, 312, 312, 180, 312, - 312, 312, 312, 312, 195, 312, 312, 312, 312, 312, - 312, 312, 312, 152, 71, 312, 312, 312, 312, 312, - 270, 312, 312, 312, 312, 312, 312, 312, 233, 312, - 312, 232, 131, 312, 86, 137, 138, 141, 142, 139, + 313, 130, 313, 313, 112, 113, 313, 313, 313, 84, + 88, 83, 313, 76, 313, 313, 313, 313, 313, 10, + 313, 313, 313, 254, 289, 313, 313, 313, 313, 294, + 39, 313, 313, 313, 313, 313, 161, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 89, + 87, 313, 77, 278, 313, 313, 313, 313, 313, 313, + 313, 181, 313, 313, 313, 313, 313, 196, 313, 313, + 313, 313, 313, 313, 313, 313, 152, 71, 313, 313, + 313, 313, 313, 271, 313, 313, 313, 313, 313, 313, - 140, 79, 312, 254, 312, 312, 312, 312, 155, 312, - 312, 312, 312, 312, 224, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 168, 167, 41, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 92, - 312, 223, 312, 246, 274, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 5, 312, 312, - 215, 312, 312, 275, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 234, 25, 312, 312, 312, 312, 312, + 313, 234, 313, 313, 233, 131, 313, 86, 137, 138, + 141, 142, 139, 140, 79, 313, 255, 313, 313, 313, + 313, 155, 313, 313, 313, 313, 313, 225, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 168, 167, 41, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 92, 313, 224, 313, 247, 275, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 5, 313, 313, 216, 313, 313, 276, 313, 313, 313, + + 313, 313, 313, 313, 313, 313, 235, 25, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 236, 313, 313, 313, 135, 313, 313, 313, 313, 313, + 313, 313, 313, 169, 313, 177, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 272, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 293, 313, 313, 243, 313, 313, 313, + 313, 313, 273, 313, 313, 313, 313, 313, 313, 274, + 313, 313, 313, 241, 313, 244, 245, 313, 313, 313, + 313, 313, 242, 246, 0 - 312, 312, 312, 312, 312, 312, 312, 235, 312, 312, - 312, 135, 312, 312, 312, 312, 312, 312, 312, 312, - 169, 312, 176, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 271, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 292, 312, 312, 242, 312, 312, 312, 312, 312, 272, - 312, 312, 312, 312, 312, 312, 273, 312, 312, 312, - 240, 312, 243, 244, 312, 312, 312, 312, 312, 241, - 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -746,15 +748,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3097] = +static const flex_int16_t yy_base[3110] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 1616, 1559, 81, 6016, 6016, 6016, 96, 52, + 90, 112, 1902, 1579, 81, 6033, 6033, 6033, 96, 52, 106, 63, 107, 128, 70, 116, 123, 134, 57, 88, 76, 145, 151, 114, 158, 97, 169, 181, 179, 188, - 194, 129, 1447, 6016, 6016, 6016, 135, 1315, 6016, 6016, - 6016, 146, 1142, 1110, 6016, 6016, 6016, 220, 1034, 6016, - 6016, 6016, 171, 903, 6016, 224, 6016, 228, 157, 818, + 194, 129, 1551, 6033, 6033, 6033, 135, 1315, 6033, 6033, + 6033, 146, 1142, 1110, 6033, 6033, 6033, 220, 1034, 6033, + 6033, 6033, 171, 903, 6033, 224, 6033, 228, 157, 818, 232, 167, 0, 239, 0, 0, 165, 205, 85, 166, 226, 190, 233, 234, 228, 240, 241, 242, 98, 130, 250, 243, 245, 248, 258, 256, 262, 267, 273, 251, @@ -783,9 +785,9 @@ static const flex_int16_t yy_base[3097] = 701, 703, 717, 705, 710, 718, 719, 727, 712, 720, 739, 744, 745, 733, 731, 747, 749, 752, 754, 760, - 755, 757, 763, 764, 765, 766, 773, 768, 6016, 772, + 755, 757, 763, 764, 765, 766, 773, 768, 6033, 772, 774, 782, 784, 786, 790, 787, 796, 794, 777, 804, - 806, 802, 810, 832, 788, 800, 809, 811, 814, 6016, + 806, 802, 810, 832, 788, 800, 809, 811, 814, 6033, 822, 816, 856, 827, 820, 840, 837, 836, 844, 845, 838, 846, 867, 850, 849, 852, 879, 854, 862, 864, 874, 880, 878, 887, 890, 886, 888, 894, 898, 895, @@ -795,648 +797,650 @@ static const flex_int16_t yy_base[3097] = 937, 943, 955, 950, 951, 959, 961, 960, 953, 966, 962, 969, 972, 970, 978, 980, 981, 976, 982, 984, 987, 993, 986, 988, 995, 997, 996, 1000, 1005, 1006, - 1010, 990, 1018, 1001, 6016, 1020, 1012, 1014, 1016, 1024, - 1026, 6016, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, + 1010, 990, 1018, 1001, 6033, 1020, 1012, 1014, 1016, 1024, + 1026, 6033, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, 1046, 1049, 1042, 1050, 1061, 1051, 1059, 1064, 1060, 1063, 1066, 1069, 1072, 1070, 1077, 1073, 1067, 935, 1080, 1094, - 6016, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, + 6033, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, 1105, 1109, 1122, 1123, 1125, 1126, 1130, 1086, 1129, 1131, 1133, 1134, 1136, 1137, 1135, 1138, 1144, 1140, 1145, 1141, - 6016, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, + 6033, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, 1171, 1172, 1174, 1173, 1178, 1192, 1182, 1193, 1189, 1195, 1190, 1191, 1197, 1196, 1200, 1205, 1213, 1210, 1215, 1218, 1226, 1225, 1228, 1235, 1237, 1211, 1230, 1203, 1222, 1234, 1240, 1239, 1238, 1245, 1246, 1253, 1248, 1249, 1251, 1254, 1263, 1255, 1258, 1265, 1262, 1269, 1266, 1259, 1271, 1278, - 1279, 1281, 6016, 1288, 1285, 1286, 1287, 1290, 1297, 1298, + 1279, 1281, 6033, 1288, 1285, 1286, 1287, 1290, 1297, 1298, 1292, 1299, 1302, 1301, 1305, 1304, 1307, 1311, 1312, 1316, 1318, 1321, 1325, 1322, 1323, 1337, 1336, 1338, 1329, 1330, 1346, 1345, 1348, 1349, 1351, 1359, 1341, 1355, 1357, 1366, 1361, 1363, 1364, 1365, 1370, 1367, 1375, 1379, 1382, 1381, - 1389, 1390, 1384, 1395, 1387, 1396, 1392, 1399, 1400, 1401, - 1402, 1411, 1403, 1404, 1408, 1412, 1414, 1415, 1416, 1421, - 1425, 1424, 1429, 1426, 1430, 1431, 1433, 1437, 1439, 1440, - 1442, 1443, 1446, 1454, 1452, 1444, 1462, 1450, 1465, 1466, - 1467, 1468, 1469, 1472, 1471, 1474, 1475, 1483, 1484, 1485, - 1488, 1487, 1492, 1490, 1497, 1489, 1498, 1499, 1503, 1505, - 1506, 1510, 1513, 1516, 1511, 6016, 1507, 1523, 1521, 1524, - 1525, 1529, 1530, 1538, 1531, 1533, 1534, 1535, 1536, 1561, - 6016, 1542, 6016, 6016, 1545, 6016, 6016, 1544, 1543, 6016, + 1389, 1390, 1384, 1395, 1387, 1398, 1392, 1399, 1401, 1402, + 1403, 1411, 1404, 1407, 1412, 1413, 1414, 1415, 1418, 1420, + 1431, 1422, 1426, 1424, 1429, 1433, 1439, 1440, 1441, 1442, + 1444, 1445, 1451, 1446, 1449, 1452, 1455, 1454, 1462, 1458, + 1464, 1469, 1470, 1473, 1472, 1475, 1476, 1484, 1485, 1486, + 1487, 1488, 1491, 1489, 1490, 1496, 1498, 1499, 1504, 1506, + 1505, 1510, 1513, 1516, 1518, 6033, 1511, 1523, 1521, 1524, + 1525, 1507, 1529, 1539, 1534, 1531, 1535, 1536, 1540, 1562, + 6033, 1543, 6033, 6033, 1546, 6033, 6033, 1545, 1544, 6033, - 1558, 1547, 1546, 1567, 1571, 1565, 1551, 1574, 1555, 1584, - 1589, 1577, 1579, 1585, 1586, 1592, 1598, 1587, 1604, 1599, - 1609, 1612, 1613, 1615, 1619, 1621, 1622, 1606, 1624, 1626, - 1629, 1627, 1630, 1632, 1636, 1637, 1633, 1640, 1639, 1649, - 1653, 1642, 1660, 6016, 1657, 1669, 1670, 1666, 1673, 1665, - 1672, 1674, 1645, 1656, 1675, 1676, 1679, 1680, 1677, 1686, - 1681, 1689, 1698, 1688, 6016, 1691, 1693, 1695, 1699, 1701, - 1703, 1708, 1709, 1705, 1711, 1712, 1722, 1714, 1717, 1718, - 1724, 1726, 1728, 6016, 1727, 1735, 1736, 1738, 1740, 1742, - 1744, 1741, 1745, 1746, 1747, 1748, 1749, 1753, 1760, 1759, + 1549, 1548, 1552, 1565, 1568, 1559, 1557, 1572, 1573, 1583, + 1594, 1580, 1576, 1587, 1578, 1588, 1590, 1592, 1607, 1600, + 1609, 1611, 1614, 1618, 1620, 1602, 1621, 1622, 1624, 1625, + 1627, 1626, 1629, 1632, 1635, 1636, 1638, 1631, 1639, 1648, + 1650, 1652, 1659, 6033, 1657, 1660, 1669, 1665, 1672, 1664, + 1668, 1671, 1676, 1678, 1673, 1680, 1682, 1683, 1684, 1686, + 1688, 1691, 1695, 1692, 6033, 1693, 1696, 1694, 1701, 1700, + 1704, 1708, 1710, 1712, 1714, 1715, 1722, 1719, 1717, 1725, + 1726, 1727, 1729, 1730, 6033, 1734, 1739, 1731, 1740, 1742, + 1746, 1748, 1743, 1749, 1750, 1753, 1640, 1754, 1755, 1762, - 1766, 1756, 1769, 1771, 1773, 1774, 1781, 1776, 1782, 1784, - 1785, 1786, 1788, 1789, 1792, 1800, 1801, 1797, 1805, 1798, - 1809, 1813, 1815, 1802, 1814, 1817, 1816, 1823, 1831, 1827, - 1820, 1828, 1835, 1832, 1840, 1833, 1842, 1844, 1845, 1846, - 1848, 1836, 1853, 1854, 1855, 6016, 1856, 1857, 6016, 1861, - 1862, 1884, 1863, 1865, 1867, 1876, 1866, 1868, 1870, 1878, - 1894, 1888, 1904, 1896, 1897, 1906, 1907, 1908, 1909, 1911, - 1915, 1916, 1877, 1917, 1924, 1932, 1928, 1934, 1937, 1919, - 1933, 1935, 1954, 1938, 1939, 1942, 1945, 1946, 1943, 1951, - 1949, 1958, 1964, 1966, 1967, 6016, 1975, 1976, 1970, 1972, + 1758, 1761, 1760, 1757, 1764, 1775, 1777, 1781, 1778, 1783, + 1784, 1785, 1786, 1787, 1788, 1790, 1797, 1800, 1799, 1801, + 1796, 1808, 1811, 1814, 1803, 1812, 1815, 1817, 1825, 1827, + 1828, 1819, 1823, 1835, 1830, 1834, 1839, 1840, 1842, 1843, + 1844, 1846, 1849, 1852, 1851, 1854, 6033, 1853, 1855, 6033, + 1859, 1860, 1882, 1861, 1863, 1865, 1875, 1864, 1866, 1868, + 1876, 1892, 1886, 1902, 1894, 1895, 1904, 1905, 1906, 1907, + 1909, 1913, 1914, 1915, 1878, 1922, 1927, 1926, 1935, 1937, + 1917, 1929, 1932, 1951, 1933, 1936, 1940, 1943, 1946, 1944, + 1953, 1942, 1960, 1962, 1964, 1968, 6033, 1973, 1966, 1974, - 1984, 1981, 1982, 6016, 1987, 1988, 1990, 1998, 1991, 1993, - 1994, 1995, 2002, 2003, 2005, 2004, 2009, 2008, 2007, 2025, - 6016, 2010, 6016, 2020, 2011, 2021, 2022, 2027, 2028, 2030, - 2032, 6016, 6016, 2033, 2039, 2041, 2050, 2046, 6016, 2047, - 2055, 2052, 2057, 2051, 2058, 2061, 2062, 2066, 2067, 2070, - 2068, 2075, 2071, 2076, 2073, 6016, 2089, 1940, 2085, 2091, - 2083, 2093, 2095, 2072, 6016, 2097, 2094, 2101, 2108, 2105, - 2106, 2109, 2111, 2112, 2116, 2117, 2118, 2119, 2120, 2129, - 2130, 2121, 2132, 2135, 2131, 6016, 2128, 2139, 2147, 2143, - 2145, 2142, 2149, 2150, 2152, 2153, 2154, 1879, 2155, 2160, + 1975, 1982, 1978, 1980, 6033, 1985, 1986, 1984, 1996, 1989, + 1987, 1992, 1938, 1991, 2001, 2002, 2003, 2004, 2009, 2007, + 2016, 6033, 2011, 6033, 2008, 2017, 2019, 2018, 2023, 2020, + 2025, 2026, 6033, 6033, 2028, 2034, 2039, 2042, 2044, 6033, + 2029, 2052, 2049, 2055, 2047, 2048, 2054, 2056, 2059, 2060, + 2069, 2062, 2071, 2064, 2073, 2066, 6033, 2081, 2067, 2085, + 2086, 2076, 2087, 2089, 2093, 2083, 6033, 2097, 2099, 2100, + 2107, 2105, 2102, 2108, 2109, 2113, 2110, 2116, 2117, 2118, + 2119, 2129, 2130, 2120, 2122, 2131, 2139, 6033, 2134, 2138, + 2146, 2142, 2144, 2141, 2145, 2148, 2149, 2153, 2157, 2151, - 2161, 2169, 2170, 2162, 2174, 2166, 2167, 2175, 2176, 2182, - 2181, 2183, 2184, 2185, 6016, 2187, 2191, 147, 2193, 2194, - 2196, 2195, 2202, 2198, 2201, 2218, 2219, 2215, 2214, 2217, - 2223, 2224, 2225, 2226, 2227, 1751, 2228, 2229, 6016, 2205, - 2231, 2232, 2234, 2233, 2235, 2242, 6016, 2251, 2254, 2263, - 2253, 2257, 2264, 2265, 2268, 2266, 2269, 2270, 2273, 2272, - 2276, 2278, 6016, 2280, 2283, 2290, 2281, 2291, 2236, 2293, - 2292, 2294, 2298, 2299, 2300, 2303, 2304, 2305, 2306, 2308, - 2312, 2313, 2314, 2319, 2320, 6016, 2331, 2321, 2322, 2323, - 2332, 2333, 2342, 2338, 2340, 2346, 2347, 2360, 2349, 2344, + 2155, 2159, 2161, 2169, 2170, 2167, 2172, 2175, 2165, 2176, + 2179, 2185, 2178, 2183, 2186, 2187, 6033, 2188, 2194, 147, + 2189, 2195, 2197, 2199, 2202, 2201, 2198, 2214, 2219, 2215, + 2221, 2217, 2216, 2224, 2226, 2225, 2227, 2228, 2229, 2232, + 6033, 2234, 2236, 2237, 2239, 2241, 2242, 2252, 6033, 2248, + 2253, 2260, 2256, 2261, 2264, 2265, 2269, 2270, 2272, 2273, + 2274, 2276, 2278, 2280, 6033, 2283, 2285, 2288, 2291, 2295, + 2294, 2296, 2297, 2301, 2302, 2303, 2304, 2306, 2308, 2307, + 2309, 2310, 2317, 2314, 2318, 2322, 2324, 6033, 2331, 2327, + 2332, 2334, 2339, 2335, 2349, 2336, 2337, 2345, 2352, 2359, - 2356, 2351, 2358, 2355, 2367, 2366, 2370, 2376, 2372, 2380, - 2382, 2374, 2378, 2386, 2384, 2392, 2388, 2389, 2405, 2406, - 2398, 2408, 2401, 2390, 2416, 2409, 6016, 2418, 2411, 2423, - 2424, 2431, 2427, 2428, 2429, 2432, 2435, 2437, 2438, 2439, - 2448, 2451, 2447, 2440, 2458, 2445, 2460, 2443, 2449, 2462, - 2465, 2466, 2471, 2473, 6016, 2476, 2472, 2468, 2480, 2483, - 2478, 2485, 2490, 2488, 2486, 2492, 2495, 2496, 2497, 2499, - 2501, 2502, 2503, 2504, 6016, 2509, 2508, 2510, 2514, 2520, - 2518, 2524, 2527, 2530, 2533, 2517, 2534, 2536, 2537, 6016, - 2545, 2547, 2544, 2548, 2546, 2551, 2552, 2554, 2556, 6016, + 2350, 2356, 2366, 2361, 2369, 2370, 2377, 2375, 2376, 2383, + 2373, 2385, 2387, 2388, 2389, 2391, 2393, 2396, 2395, 2397, + 2404, 2405, 2406, 2410, 2403, 2424, 2429, 2346, 6033, 2416, + 2418, 2422, 2428, 2436, 2432, 2431, 2434, 2438, 2442, 2443, + 2444, 2445, 2454, 2446, 2449, 2450, 2455, 2456, 2458, 2461, + 2465, 2466, 2469, 2472, 2473, 2476, 2243, 6033, 2477, 2479, + 2478, 2481, 2486, 2482, 2493, 2494, 2496, 2487, 2489, 2499, + 2500, 2503, 2504, 2507, 2505, 2509, 2513, 6033, 2515, 2517, + 2516, 2519, 2522, 2526, 2523, 2525, 2535, 2537, 2529, 2538, + 2539, 2540, 6033, 2549, 2551, 2550, 2554, 2552, 2541, 2556, - 2557, 2558, 2565, 2566, 2561, 6016, 2568, 2564, 2569, 2571, - 2572, 2573, 2574, 2579, 2580, 2582, 2585, 2588, 2592, 2593, - 6016, 2594, 2602, 2603, 2595, 2606, 2597, 2607, 2608, 2612, - 2616, 2610, 6016, 2625, 2627, 2628, 2635, 2630, 2632, 2633, - 2636, 2637, 2638, 2640, 2643, 6016, 2646, 2644, 2647, 2652, - 2650, 2648, 2655, 2667, 2657, 2659, 2668, 2664, 2670, 2671, - 2672, 2673, 2676, 2675, 2683, 2686, 2684, 2688, 2689, 2691, - 2701, 2703, 2704, 2706, 6016, 2709, 2698, 2711, 2700, 2712, - 2713, 2714, 2715, 2717, 2719, 2724, 2722, 2723, 2731, 2739, - 2732, 2734, 2740, 2741, 2744, 2743, 2745, 2746, 2747, 2755, + 2558, 2559, 6033, 2562, 2563, 2570, 2571, 2566, 6033, 2574, + 2569, 2573, 2575, 2576, 2577, 2580, 2578, 2584, 2585, 2591, + 2600, 2588, 2592, 6033, 2594, 2607, 2602, 2605, 2604, 2608, + 2610, 2615, 2616, 2617, 2618, 6033, 2629, 2627, 2626, 2640, + 2628, 2635, 2636, 2638, 2641, 2642, 2644, 2645, 6033, 2648, + 2650, 2651, 2652, 2655, 2656, 2657, 2664, 2663, 2666, 2667, + 2671, 2672, 2670, 2673, 2677, 2683, 2679, 2682, 2692, 2680, + 2690, 2694, 2698, 2705, 2706, 2701, 2707, 6033, 2710, 2712, + 2704, 2711, 2714, 2717, 2718, 2719, 2721, 2722, 2726, 2723, + 2724, 2739, 2746, 2727, 2734, 2736, 2742, 2744, 2749, 2748, - 2751, 2750, 2763, 2754, 2761, 2768, 2758, 2769, 2770, 2771, - 2772, 2774, 2778, 2779, 2781, 2775, 2783, 2792, 2794, 2796, - 2785, 2797, 2801, 2802, 6016, 2805, 2807, 2803, 2809, 2810, - 2816, 2817, 2819, 2820, 2811, 2825, 2827, 2828, 2833, 2834, - 2836, 2843, 2839, 6016, 2840, 6016, 2841, 2842, 2844, 2854, - 2846, 6016, 2850, 6016, 2857, 2864, 2851, 2855, 6016, 2865, - 2859, 2861, 2872, 2869, 2874, 2875, 2876, 2877, 2882, 2878, - 2880, 2885, 2886, 2888, 2890, 2892, 2896, 2893, 2903, 2905, - 2897, 2906, 2899, 2912, 2914, 2913, 2915, 6016, 2925, 2916, - 2919, 2922, 2926, 2927, 2928, 2930, 2931, 2936, 2937, 2938, + 2750, 2751, 2758, 2757, 2756, 2765, 2760, 2766, 2774, 2764, + 2771, 2773, 2775, 2763, 2776, 2778, 2780, 2784, 2786, 2789, + 2796, 2799, 2801, 2800, 2802, 2803, 2806, 6033, 2791, 2810, + 2807, 2814, 2817, 2819, 2821, 2829, 2820, 2824, 2827, 2836, + 2838, 2828, 2831, 2830, 2841, 2850, 2846, 6033, 2847, 6033, + 2843, 2851, 2852, 2860, 2855, 6033, 2858, 6033, 2859, 2867, + 2863, 2868, 6033, 2869, 2870, 2871, 2873, 2876, 2877, 2878, + 2881, 2882, 2887, 2883, 2885, 2889, 2893, 2894, 2899, 2901, + 2900, 2902, 2907, 2908, 2909, 2910, 2914, 2915, 2916, 2921, + 2922, 6033, 2924, 2925, 2928, 2930, 2931, 2932, 2933, 2939, - 2939, 2945, 2944, 2954, 2950, 2961, 6016, 2953, 2958, 2960, - 2962, 6016, 2964, 2963, 2965, 2971, 2974, 2973, 2975, 2977, - 2981, 2983, 2976, 2986, 2984, 2993, 2994, 6016, 2999, 3000, - 2985, 3003, 3002, 3015, 3007, 3016, 3018, 3020, 3021, 3011, - 3022, 3023, 3025, 3027, 3034, 3035, 3031, 3038, 3033, 3039, - 3047, 3043, 3037, 3041, 3049, 3050, 3051, 3054, 3057, 3058, - 3053, 3059, 3060, 3062, 6016, 3068, 3071, 3072, 3075, 3063, - 3080, 3081, 3082, 3084, 3086, 3085, 3087, 3088, 6016, 3095, - 6016, 3089, 3103, 3098, 3108, 3090, 3109, 3113, 3112, 3117, - 3118, 3119, 3120, 3121, 3122, 3123, 3126, 3134, 3133, 3135, + 2935, 2938, 2937, 2947, 2941, 2951, 2954, 2962, 2948, 2966, + 6033, 2963, 2965, 2967, 2969, 6033, 2971, 2970, 2972, 2978, + 2974, 2980, 2981, 2982, 2983, 2987, 2989, 2997, 3001, 3002, + 3005, 6033, 3004, 3006, 2991, 2990, 3018, 3020, 3021, 3022, + 3027, 3025, 3029, 3030, 2992, 3012, 3032, 3033, 3041, 3044, + 3037, 3045, 3040, 3046, 3048, 3049, 3050, 3053, 3055, 3056, + 3057, 3060, 3061, 3064, 3059, 3062, 3066, 3065, 6033, 3077, + 3067, 3078, 3084, 3081, 3088, 3069, 3089, 3090, 3091, 3094, + 3100, 3092, 6033, 3095, 6033, 3097, 3111, 3104, 3117, 3113, + 3105, 3118, 3120, 3124, 3126, 3127, 3128, 3129, 3130, 3131, - 3148, 3131, 3128, 3136, 3139, 3144, 3149, 6016, 6016, 3150, - 3152, 3155, 3157, 3158, 3159, 3162, 3169, 3166, 3165, 3168, - 3172, 3180, 6016, 3182, 3176, 3184, 3187, 3194, 3185, 3198, - 3199, 3195, 3207, 3202, 6016, 3204, 3205, 3215, 3210, 3211, - 3218, 6016, 3213, 6016, 3216, 3217, 3222, 3225, 3226, 3227, - 3228, 3229, 3232, 3244, 3247, 3233, 3249, 3237, 3245, 3250, - 3251, 3258, 3254, 3255, 3256, 6016, 3260, 3261, 3262, 3265, - 3267, 3268, 3275, 3277, 6016, 3278, 3280, 3282, 3283, 3285, - 3287, 3288, 3289, 3291, 3294, 3290, 3292, 3305, 3298, 3297, - 3307, 3317, 3308, 3319, 6016, 3320, 3314, 3327, 3329, 3322, + 3134, 3135, 3141, 3142, 3139, 3143, 3149, 3151, 3152, 3154, + 3155, 6033, 6033, 3156, 3157, 3158, 3160, 3164, 3172, 3178, + 3171, 3182, 3168, 3174, 3184, 3191, 6033, 3189, 3192, 3188, + 3194, 3204, 3196, 3201, 3211, 3208, 3206, 3215, 3212, 6033, + 3197, 3216, 3225, 3221, 3223, 3228, 6033, 3227, 6033, 3224, + 3229, 3231, 3233, 3236, 3237, 3238, 3240, 3245, 3247, 3257, + 3246, 3256, 3253, 3258, 3260, 3261, 3268, 3263, 3264, 3265, + 6033, 3270, 3267, 3161, 3272, 3281, 3284, 3282, 3271, 6033, + 3275, 3293, 3278, 3288, 3295, 3299, 3296, 3301, 3303, 3304, + 3302, 3305, 3312, 3307, 3309, 3311, 3323, 3326, 3331, 6033, - 3324, 3330, 3331, 3332, 3335, 3337, 3336, 3338, 3340, 3342, - 3339, 3349, 3343, 3356, 3345, 3359, 3365, 3366, 3346, 6016, - 3362, 3369, 3370, 3373, 3372, 3376, 3379, 3383, 3380, 3392, - 3393, 3384, 3387, 3396, 3397, 3404, 3399, 6016, 3409, 3389, - 3412, 3410, 3411, 3416, 3417, 3419, 3420, 3421, 3422, 3429, - 3424, 6016, 3431, 3426, 3436, 3437, 3428, 3451, 3446, 3427, - 3449, 3453, 3450, 3456, 3454, 3458, 3459, 3462, 3463, 6016, - 6016, 3465, 3466, 3468, 6016, 3469, 3467, 3479, 3472, 3475, - 3482, 3485, 3481, 3484, 3486, 3489, 3493, 6016, 3494, 3501, - 3498, 3500, 3508, 3511, 3504, 3512, 3513, 3506, 3514, 3516, + 3313, 3324, 3334, 3336, 3320, 3337, 3338, 3340, 3342, 3343, + 3344, 3345, 3346, 3347, 3348, 3349, 3356, 3351, 3367, 3352, + 3353, 3370, 3380, 3366, 6033, 3358, 3373, 3375, 3381, 3376, + 3384, 3394, 3397, 3382, 3399, 3400, 3386, 3388, 3404, 3406, + 3411, 3412, 6033, 3414, 3413, 3422, 3417, 3418, 3420, 3423, + 3432, 3425, 3427, 3428, 3435, 3430, 6033, 3446, 3441, 3434, + 3443, 3449, 3457, 3452, 3433, 3456, 3459, 3460, 3462, 3465, + 3466, 3467, 3470, 3471, 6033, 6033, 3473, 3474, 3475, 6033, + 3478, 3476, 3489, 3480, 3481, 3490, 3493, 3492, 3482, 3494, + 3496, 3498, 6033, 3504, 3512, 3503, 3510, 3513, 3521, 3519, - 3520, 3519, 3521, 3524, 3535, 3536, 3531, 3527, 3534, 6016, - 3532, 3539, 3540, 3544, 3541, 3548, 6016, 3546, 3549, 3550, - 3555, 3558, 3562, 3559, 3568, 3569, 3571, 3572, 3573, 3574, - 3576, 3583, 3580, 3579, 3582, 3586, 3588, 6016, 3589, 3593, - 3597, 3600, 6016, 3602, 3611, 3612, 3613, 3603, 3614, 3608, - 3621, 6016, 3616, 3618, 3623, 3624, 3631, 3626, 3633, 3630, - 6016, 3632, 3634, 3636, 6016, 3637, 3638, 3646, 3651, 3643, - 3658, 3654, 3656, 3659, 3655, 6016, 3657, 6016, 3666, 3667, - 3670, 6016, 3668, 3672, 3673, 3675, 3676, 3677, 3681, 3688, - 3683, 3689, 3690, 3691, 3692, 3694, 3701, 3693, 3697, 3700, + 3511, 3520, 3524, 3526, 3525, 3527, 3528, 3531, 3532, 3540, + 3541, 3536, 3538, 3539, 6033, 3542, 3547, 3549, 3551, 3548, + 3555, 6033, 3552, 3560, 3565, 3568, 3563, 3576, 3573, 3578, + 3580, 3561, 3581, 3583, 3585, 3584, 3586, 3593, 3588, 3591, + 3598, 3599, 3601, 6033, 3607, 3608, 3592, 3610, 6033, 3614, + 3621, 3617, 3628, 3618, 3625, 3623, 3632, 6033, 3627, 3629, + 3631, 3634, 3642, 3638, 3646, 3637, 6033, 3641, 3645, 3647, + 6033, 3648, 3654, 3657, 3662, 3650, 3669, 3665, 3667, 3668, + 3666, 6033, 3673, 6033, 3676, 3677, 3680, 6033, 3682, 3683, + 3685, 3687, 3684, 3691, 3692, 3699, 3688, 3700, 3701, 3702, - 3702, 6016, 3712, 3704, 3705, 3719, 3717, 3709, 3707, 3725, - 3723, 6016, 6016, 3732, 6016, 3734, 3727, 3729, 6016, 3733, - 3735, 3744, 3739, 3740, 3750, 3747, 3751, 6016, 3753, 3742, - 3754, 3757, 3758, 3761, 3763, 3764, 3765, 3767, 3768, 6016, - 3769, 3771, 3778, 3770, 3772, 3781, 3780, 3786, 6016, 3790, - 3794, 3793, 3797, 3798, 6016, 3799, 6016, 3800, 3801, 3803, - 3807, 3804, 6016, 3812, 3813, 3817, 3819, 3820, 3822, 3821, - 3828, 3829, 3830, 3837, 3834, 3835, 3832, 6016, 3836, 3838, - 3842, 3843, 3846, 3849, 3857, 3853, 3854, 3859, 3860, 3863, - 3866, 3864, 3870, 3872, 3874, 3867, 6016, 3875, 3880, 3873, + 3703, 3705, 3712, 3704, 3711, 3713, 3714, 6033, 3715, 3717, + 3723, 3724, 3729, 3718, 3726, 3734, 3733, 6033, 6033, 3737, + 6033, 3740, 3741, 3742, 6033, 3744, 3748, 3751, 3749, 3752, + 3754, 3761, 3755, 6033, 3764, 3750, 3767, 3765, 3769, 3772, + 3773, 3775, 3776, 3777, 3780, 6033, 3778, 3779, 3782, 3783, + 3788, 3793, 3789, 3795, 6033, 3800, 3804, 3803, 3807, 3809, + 6033, 3810, 6033, 3811, 3813, 3814, 3818, 3817, 6033, 3823, + 3824, 3828, 3830, 3832, 3831, 3834, 3835, 3841, 3842, 3849, + 3845, 3844, 3846, 6033, 3847, 3851, 3853, 3860, 3848, 3855, + 3864, 3867, 3868, 3869, 3873, 3877, 3871, 3878, 3884, 3882, - 3889, 3886, 3890, 6016, 3891, 3892, 3893, 6016, 3896, 3899, - 3901, 3905, 3900, 3906, 3907, 3908, 3911, 6016, 3913, 3915, - 3912, 3916, 3928, 3920, 6016, 6016, 3930, 6016, 3931, 3917, - 3935, 3934, 3914, 3938, 3942, 3944, 3946, 3943, 3951, 3954, - 3948, 3964, 3966, 3971, 3967, 3968, 3957, 6016, 6016, 3973, - 3974, 3969, 3980, 3981, 3983, 3984, 3991, 3987, 3993, 3997, - 3998, 4005, 6016, 3986, 3988, 4006, 6016, 4001, 4004, 4007, - 4012, 4011, 4013, 4017, 4014, 4015, 4018, 4022, 4019, 4024, - 4032, 4025, 4029, 4028, 4038, 4035, 4036, 4045, 6016, 4042, - 4046, 4049, 4052, 4053, 4055, 4057, 4058, 4059, 6016, 4056, + 3888, 3874, 6033, 3886, 3894, 3880, 3903, 3899, 3900, 3904, + 6033, 3905, 3907, 3908, 6033, 3906, 3890, 3914, 3921, 3915, + 3918, 3922, 3925, 3926, 6033, 3928, 3930, 3924, 3927, 3929, + 3937, 6033, 6033, 3943, 6033, 3945, 3931, 3935, 3947, 3948, + 3952, 3956, 3957, 3959, 3953, 3960, 3963, 3967, 3975, 3976, + 3977, 3978, 3979, 3982, 6033, 6033, 3984, 3985, 3988, 3990, + 3991, 3993, 3994, 4001, 3998, 4006, 4009, 3999, 4016, 6033, + 4013, 4014, 4015, 6033, 3996, 4018, 4020, 4022, 4024, 4026, + 4025, 4027, 4028, 4030, 4032, 4035, 4036, 4040, 4038, 4042, + 4046, 4048, 4049, 4050, 4056, 6033, 4058, 4057, 4059, 4060, - 4061, 4063, 4069, 4062, 4072, 4083, 4087, 4089, 4064, 4081, - 4090, 4092, 4096, 4093, 6016, 4097, 4099, 4100, 4103, 4106, - 4108, 4109, 4111, 4112, 4114, 4116, 4117, 4124, 4126, 4118, - 4127, 4121, 4129, 6016, 4133, 4140, 4134, 4142, 4137, 4067, - 4143, 4144, 4150, 4147, 4152, 4151, 4157, 6016, 4154, 4158, - 4161, 4159, 4165, 4168, 4172, 4169, 4171, 6016, 4179, 4162, - 4173, 4175, 4183, 4185, 4188, 4190, 4193, 4192, 4195, 6016, - 4196, 4199, 4200, 4197, 4206, 4207, 4211, 4209, 6016, 4212, - 4218, 4210, 4226, 4221, 4230, 4227, 4229, 4231, 4233, 4236, - 4238, 4240, 4241, 4243, 4237, 4254, 4259, 4257, 6016, 4244, + 4061, 4063, 4067, 4069, 4070, 6033, 4071, 4073, 4074, 4079, + 4075, 4080, 4094, 4097, 4099, 4087, 4090, 4100, 4104, 4106, + 4107, 6033, 4109, 4108, 4110, 4111, 4118, 4120, 4115, 4122, + 4124, 4126, 4129, 4127, 4136, 4138, 4131, 4139, 4133, 4140, + 6033, 4141, 4150, 4143, 4152, 4153, 4154, 4155, 4156, 4164, + 4161, 4166, 4165, 4168, 6033, 4169, 4170, 4173, 4174, 4176, + 4177, 4182, 4179, 4183, 6033, 4186, 4190, 4192, 4191, 4195, + 4197, 4200, 4201, 4203, 4204, 4211, 6033, 4222, 4207, 4218, + 4220, 4208, 4217, 4221, 4227, 4209, 6033, 4234, 4236, 4228, + 4244, 4224, 4246, 4247, 4248, 4237, 4250, 4251, 4249, 4255, - 6016, 4258, 4262, 4266, 4268, 4265, 6016, 4255, 4270, 4273, - 4274, 4275, 6016, 4276, 4278, 4280, 4279, 6016, 4290, 4292, - 4281, 4296, 4283, 4298, 6016, 4303, 4304, 4300, 4312, 4315, - 4311, 4313, 4316, 4314, 4318, 4319, 4320, 4328, 4323, 4324, - 6016, 4330, 4333, 4340, 4341, 4335, 4325, 4343, 4349, 4342, - 6016, 4351, 4350, 4352, 4353, 4354, 4357, 4359, 4366, 4362, - 4361, 6016, 4365, 4369, 4382, 4363, 4373, 6016, 6016, 4378, - 4383, 4385, 4380, 4386, 6016, 4389, 4396, 4391, 4395, 4398, - 6016, 6016, 4400, 6016, 4397, 6016, 4402, 4401, 6016, 6016, - 4404, 4405, 4408, 4414, 4411, 6016, 4421, 6016, 4418, 4422, + 4256, 4257, 4259, 4267, 4274, 4271, 6033, 4260, 6033, 4269, + 4276, 4285, 4281, 4272, 6033, 4270, 4283, 4288, 4289, 4284, + 6033, 4291, 4295, 4297, 4296, 6033, 4298, 4300, 4302, 4306, + 4310, 4313, 6033, 4316, 4317, 4319, 4327, 4329, 4326, 4328, + 4330, 4332, 4333, 4334, 4335, 4343, 4338, 4340, 6033, 4346, + 4348, 4355, 4356, 4349, 4339, 4360, 4363, 4357, 6033, 4366, + 4365, 4367, 4368, 4369, 4372, 4374, 4381, 4377, 4376, 6033, + 4380, 4384, 4397, 4378, 4388, 6033, 6033, 4393, 4398, 4400, + 4395, 4401, 6033, 4404, 4411, 4406, 4410, 4413, 6033, 6033, + 4415, 6033, 4412, 6033, 4417, 4416, 6033, 6033, 4419, 4420, - 4424, 4425, 4427, 6016, 4426, 4429, 4434, 6016, 4428, 4436, - 4435, 4439, 6016, 4443, 4446, 4438, 4444, 6016, 4450, 4456, - 4458, 4448, 4452, 4459, 4465, 4460, 4468, 4469, 4470, 4471, - 4472, 4479, 4484, 4486, 4488, 4480, 4476, 4490, 4496, 4498, - 4489, 4493, 4500, 4502, 4504, 4506, 4508, 4510, 4511, 4512, - 4514, 4515, 4513, 4523, 4516, 4517, 4530, 4526, 4519, 4531, - 4534, 4532, 4538, 4539, 4541, 4542, 4543, 6016, 4544, 4546, - 4548, 4560, 4553, 4549, 4559, 4566, 4570, 4572, 6016, 4574, - 6016, 4576, 4561, 4578, 4580, 6016, 4581, 4582, 4583, 4584, - 4585, 4586, 4588, 4587, 4591, 4592, 4595, 6016, 4598, 4593, + 4423, 4429, 4426, 6033, 4436, 6033, 4433, 4437, 4439, 4440, + 4442, 6033, 4441, 4444, 4449, 6033, 4443, 4451, 4450, 4454, + 6033, 4458, 4461, 4453, 4459, 6033, 4465, 4471, 4473, 4463, + 4467, 4474, 4480, 4475, 4483, 4484, 4485, 4486, 4487, 4488, + 4492, 4495, 4499, 4501, 4502, 4503, 4504, 4510, 4512, 4505, + 4508, 4515, 4516, 4519, 4522, 4524, 4526, 4527, 4528, 4529, + 4530, 4531, 4534, 4533, 4537, 4544, 4545, 4546, 4547, 4548, + 4549, 4550, 4555, 4559, 4560, 4562, 6033, 4552, 4558, 4563, + 4566, 4565, 4571, 4578, 4582, 4585, 4587, 6033, 4589, 6033, + 4591, 4593, 4594, 4595, 6033, 4596, 4597, 4598, 4599, 4600, - 4602, 4613, 6016, 4608, 4619, 4603, 4614, 4616, 4620, 4622, - 4624, 4625, 4626, 4628, 4630, 4637, 4633, 4634, 4636, 4638, - 4639, 4644, 4647, 4646, 4654, 4656, 4661, 6016, 4650, 6016, - 4657, 4662, 4663, 4665, 4667, 4668, 4670, 6016, 6016, 4671, - 4673, 4678, 4679, 4674, 4683, 4680, 6016, 4686, 4693, 4696, - 4687, 6016, 4690, 4698, 4699, 4703, 6016, 4704, 4706, 4707, - 4709, 4710, 4713, 4717, 4714, 4720, 4721, 4725, 6016, 6016, - 6016, 6016, 4726, 4728, 4731, 4732, 4734, 4735, 4737, 4739, - 4740, 6016, 4742, 6016, 6016, 4743, 4749, 4751, 4752, 4753, - 4756, 4758, 4760, 6016, 4759, 4764, 4766, 4762, 4773, 4779, + 4601, 4602, 4603, 4606, 4607, 4612, 6033, 4618, 4608, 4622, + 4627, 6033, 4628, 4633, 4629, 4634, 4635, 4636, 4638, 4639, + 4643, 4641, 4645, 4649, 4646, 4650, 4654, 4653, 4658, 4655, + 4661, 4662, 4664, 4671, 4674, 4678, 6033, 4665, 6033, 4673, + 4679, 4680, 4683, 4685, 4686, 4688, 6033, 6033, 4689, 4691, + 4696, 4687, 4693, 4700, 4697, 6033, 4704, 4708, 4714, 4705, + 6033, 4710, 4715, 4716, 4721, 6033, 4717, 4722, 4723, 4733, + 4724, 4738, 4734, 4740, 4726, 4741, 4728, 4745, 6033, 6033, + 6033, 6033, 4746, 4730, 4751, 4754, 4755, 4756, 4757, 4759, + 4760, 6033, 4762, 6033, 6033, 4764, 4771, 4763, 4773, 4772, - 4763, 4776, 4780, 4782, 4789, 4785, 4786, 4784, 4788, 4792, - 4795, 6016, 6016, 4796, 4802, 4803, 4811, 4807, 4808, 4820, - 4815, 4816, 4817, 4818, 4822, 4804, 4829, 4834, 4827, 4824, - 6016, 4835, 4838, 6016, 4831, 6016, 4837, 4839, 4845, 4846, - 4847, 4848, 4849, 4851, 6016, 6016, 4852, 4853, 4855, 4862, - 4858, 4866, 4854, 4865, 4867, 6016, 4868, 6016, 4870, 4872, - 4879, 4880, 4887, 4888, 4891, 4893, 4889, 4894, 6016, 4895, - 4896, 6016, 4898, 4900, 4901, 6016, 4906, 4903, 4911, 4913, - 6016, 4918, 4915, 4920, 6016, 4923, 6016, 4908, 4924, 4926, - 4933, 6016, 4930, 4934, 6016, 4937, 4940, 4941, 4942, 6016, + 4770, 4774, 4779, 6033, 4781, 4785, 4786, 4782, 4793, 4795, + 4798, 4799, 4784, 4788, 4807, 4803, 4809, 4800, 4811, 4813, + 4818, 6033, 6033, 4814, 4820, 4821, 4829, 4825, 4826, 4838, + 4833, 4834, 4835, 4836, 4840, 4822, 4847, 4852, 4845, 4842, + 6033, 4853, 4856, 6033, 4849, 6033, 4855, 4857, 4863, 4864, + 4865, 4866, 4867, 4869, 6033, 6033, 4870, 4871, 4873, 4880, + 4876, 4884, 4872, 4883, 4885, 6033, 4886, 6033, 4888, 4890, + 4897, 4898, 4905, 4906, 4909, 4911, 4907, 4912, 6033, 4913, + 4914, 6033, 4916, 4918, 4919, 6033, 4924, 4921, 4929, 4931, + 6033, 4936, 4933, 4938, 6033, 4941, 6033, 4926, 4942, 4944, - 4931, 6016, 4943, 4946, 4947, 4952, 4953, 4957, 4954, 4958, - 4959, 4966, 4962, 4965, 6016, 6016, 4978, 4964, 4970, 4971, - 4974, 4981, 4979, 4982, 4984, 6016, 6016, 4988, 6016, 4989, - 4992, 6016, 4985, 4996, 4994, 4998, 5000, 5001, 5002, 5006, - 5008, 5014, 5009, 5007, 5019, 5030, 5013, 5034, 5035, 5037, - 5039, 5041, 5015, 5043, 5044, 5020, 5045, 5047, 5049, 6016, - 5051, 5052, 5053, 6016, 5057, 5058, 5060, 5061, 6016, 5063, - 5068, 5070, 5072, 6016, 5073, 5075, 5076, 5078, 5082, 5089, - 5085, 5084, 5086, 6016, 6016, 6016, 5094, 5096, 6016, 5101, - 5092, 5102, 5103, 6016, 5104, 5105, 6016, 6016, 5107, 5109, + 4951, 4948, 6033, 4949, 4952, 6033, 4955, 4958, 4959, 4961, + 6033, 4963, 6033, 4964, 4966, 4967, 4971, 4972, 4976, 4973, + 4977, 4978, 4985, 4983, 4989, 6033, 6033, 4997, 4980, 4988, + 4990, 4994, 5004, 4999, 5001, 5007, 6033, 6033, 5009, 6033, + 5011, 5012, 6033, 5002, 5013, 5017, 5018, 5020, 5021, 5022, + 5026, 5028, 5029, 5030, 5031, 5037, 5049, 5033, 5047, 5053, + 5055, 5057, 5059, 5051, 5061, 5062, 5039, 5063, 5064, 5068, + 6033, 5070, 5071, 5073, 6033, 5076, 5078, 5080, 5081, 6033, + 5090, 5083, 5087, 5093, 6033, 5077, 5098, 5099, 5100, 5101, + 5111, 5094, 5104, 5108, 6033, 6033, 6033, 5114, 5118, 6033, - 5108, 5116, 6016, 5111, 6016, 5112, 6016, 5114, 5115, 5124, - 5122, 6016, 5129, 5135, 6016, 5138, 5141, 5143, 5144, 5126, - 5130, 5145, 6016, 5154, 5147, 5151, 5158, 5155, 5159, 5160, - 5161, 5168, 5163, 5167, 6016, 5170, 5164, 5171, 5177, 5172, - 5175, 5181, 6016, 5183, 6016, 5184, 5185, 5189, 5186, 5187, - 5192, 5194, 5199, 5196, 5206, 5200, 6016, 5208, 5210, 6016, - 5212, 6016, 5214, 6016, 5215, 5216, 5218, 5220, 6016, 5224, - 5217, 5221, 5226, 6016, 5227, 5229, 5230, 5236, 6016, 6016, - 5238, 5246, 5242, 5239, 5251, 5253, 5248, 5255, 5256, 5257, - 5259, 5269, 5241, 5264, 5262, 5271, 5272, 5277, 6016, 6016, + 5121, 5115, 5106, 5122, 6033, 5124, 5125, 5126, 6033, 6033, + 5127, 5128, 5130, 5139, 6033, 5132, 6033, 5135, 6033, 5136, + 5142, 5145, 5148, 6033, 5149, 5158, 6033, 5161, 5164, 5166, + 5167, 5151, 5153, 5168, 6033, 5175, 5174, 5177, 5181, 5170, + 5178, 5184, 5183, 5191, 5186, 5193, 6033, 5190, 5195, 5197, + 5203, 5187, 5198, 5196, 6033, 5208, 6033, 5205, 5209, 5210, + 5212, 5215, 5217, 5219, 5220, 5223, 5229, 5224, 6033, 5233, + 5235, 6033, 5226, 6033, 5238, 6033, 5230, 5239, 5240, 5245, + 6033, 5242, 5244, 5248, 5251, 6033, 5252, 5254, 5257, 5259, + 6033, 6033, 5260, 5267, 5269, 6033, 5262, 5266, 5273, 5263, - 6016, 5273, 5280, 5287, 5284, 5286, 5294, 5290, 6016, 5291, - 5292, 5293, 5301, 5298, 5303, 6016, 5299, 5304, 5305, 5306, - 5310, 5307, 5314, 6016, 5318, 5321, 5324, 5313, 5328, 5332, - 5335, 5337, 5338, 6016, 5340, 6016, 6016, 5325, 6016, 5341, - 5342, 5345, 5346, 6016, 5349, 5351, 5350, 5352, 5354, 5356, - 6016, 5366, 5357, 5359, 5368, 6016, 6016, 5372, 6016, 5375, - 5376, 5369, 5385, 5380, 5382, 5387, 5384, 6016, 5388, 5391, - 5393, 5394, 5395, 6016, 5396, 5397, 5399, 5400, 5403, 5402, - 5405, 5407, 5409, 6016, 5410, 5412, 5430, 5426, 6016, 5413, - 5425, 6016, 6016, 5435, 5437, 5358, 6016, 6016, 6016, 5440, + 5278, 5275, 5279, 5281, 5291, 5287, 5143, 5282, 5290, 5292, + 5293, 6033, 6033, 6033, 5296, 5298, 5305, 5304, 5307, 5315, + 5311, 6033, 5312, 5314, 5313, 5322, 5320, 5324, 6033, 5321, + 5325, 5326, 5327, 5331, 5328, 5335, 6033, 5342, 5346, 5334, + 5336, 5348, 5355, 5357, 5359, 5360, 6033, 5362, 6033, 6033, + 5349, 6033, 5352, 5363, 5364, 5366, 6033, 5370, 5373, 5371, + 5372, 5376, 5378, 6033, 5388, 5379, 5383, 5384, 6033, 6033, + 5393, 6033, 5395, 5396, 5390, 5403, 5398, 5400, 5406, 5407, + 6033, 5409, 5411, 5413, 5414, 5415, 6033, 5416, 5417, 5419, + 5420, 5423, 5422, 5425, 5427, 5428, 6033, 5430, 5432, 5450, - 6016, 5442, 5446, 5450, 5454, 5445, 6016, 5456, 5453, 5458, - 6016, 6016, 5457, 5459, 5460, 5462, 6016, 6016, 5463, 5466, - 5464, 5467, 5469, 6016, 5474, 5478, 5480, 5483, 5486, 5475, - 5489, 5491, 5499, 5501, 5496, 5497, 5502, 5504, 5505, 5506, - 5508, 5517, 5513, 5515, 5527, 5524, 6016, 6016, 5531, 6016, - 6016, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 6016, 5546, - 5548, 5549, 5417, 5550, 6016, 5552, 5554, 5551, 5556, 5516, - 5559, 5557, 5562, 6016, 6016, 5563, 5564, 5565, 5573, 5568, - 6016, 5575, 5582, 5579, 5580, 5577, 5583, 5584, 6016, 5588, - 5589, 6016, 6016, 5587, 6016, 6016, 6016, 6016, 6016, 6016, + 5446, 6033, 5434, 5445, 6033, 6033, 5456, 5460, 5449, 6033, + 6033, 6033, 5462, 6033, 5464, 5468, 5472, 5476, 5467, 6033, + 5478, 5457, 5479, 6033, 6033, 5480, 5481, 5482, 5484, 6033, + 6033, 5485, 5488, 5486, 5489, 5491, 6033, 5494, 5496, 5502, + 5508, 5514, 5504, 5492, 5509, 5517, 5526, 5499, 5515, 5522, + 5523, 5527, 5525, 5534, 5535, 5531, 5539, 5541, 5542, 6033, + 6033, 5546, 6033, 6033, 5549, 5551, 5553, 5555, 5557, 5559, + 5561, 6033, 5562, 5564, 5565, 5566, 5567, 6033, 5569, 5573, + 5568, 5576, 5570, 5579, 5575, 5585, 6033, 6033, 5577, 5591, + 5581, 5592, 5586, 6033, 5596, 5603, 5598, 5600, 5601, 5606, - 6016, 6016, 5592, 6016, 5590, 5605, 5607, 5609, 6016, 5597, - 5610, 5518, 5611, 5599, 6016, 5612, 5614, 5616, 5615, 5618, - 5622, 5624, 5626, 5628, 5627, 5629, 5632, 5630, 5636, 5634, - 5638, 5644, 6016, 6016, 6016, 5642, 5640, 5651, 5652, 5663, - 5664, 5667, 5669, 5653, 5657, 5670, 5671, 5674, 5659, 5675, - 5686, 5678, 5681, 5682, 5683, 5689, 5685, 5691, 5695, 6016, - 5696, 6016, 5697, 6016, 6016, 5699, 5701, 5704, 5705, 5713, - 5714, 5706, 5709, 5716, 5718, 5726, 5728, 6016, 5717, 5719, - 6016, 5729, 5730, 6016, 5721, 5731, 5732, 5733, 5737, 5740, - 5742, 5744, 5753, 6016, 6016, 5745, 5748, 5754, 5756, 5757, + 5602, 6033, 5608, 5610, 6033, 6033, 5611, 6033, 6033, 6033, + 6033, 6033, 6033, 6033, 6033, 5613, 6033, 5609, 5628, 5630, + 5632, 6033, 5615, 5625, 5617, 5623, 5633, 6033, 5635, 5637, + 5636, 5640, 5639, 5644, 5646, 5649, 5651, 5650, 5652, 5655, + 5653, 5660, 5657, 5656, 5674, 6033, 6033, 6033, 5661, 5663, + 5665, 5671, 5682, 5684, 5687, 5689, 5673, 5690, 5691, 5693, + 5695, 5696, 5697, 5705, 5701, 5702, 5703, 5704, 5707, 5711, + 5709, 5717, 6033, 5718, 6033, 5713, 6033, 6033, 5720, 5722, + 5727, 5725, 5736, 5738, 5729, 5734, 5737, 5740, 5742, 5749, + 6033, 5739, 5746, 6033, 5750, 5751, 6033, 5752, 5753, 5754, - 5764, 5760, 5763, 5767, 5769, 5770, 5777, 6016, 5776, 5778, - 5780, 6016, 5781, 5782, 5784, 5786, 5787, 5794, 5790, 5795, - 6016, 5792, 6016, 5797, 5798, 5799, 5800, 5802, 5803, 5811, - 5813, 5814, 6016, 5815, 5822, 5817, 5824, 5828, 5826, 5830, - 5820, 5833, 5835, 5842, 5846, 5843, 5847, 5834, 5851, 5838, - 6016, 5849, 5852, 6016, 5855, 5858, 5859, 5861, 5864, 6016, - 5867, 5862, 5868, 5869, 5873, 5875, 6016, 5877, 5884, 5879, - 6016, 5885, 6016, 6016, 5888, 5889, 5891, 5895, 5897, 6016, - 6016, 6016, 5924, 5931, 5938, 5945, 5952, 88, 5959, 5966, - 5973, 5980, 5987, 5994, 6001, 6008 + 5757, 5761, 5759, 5762, 5763, 5776, 6033, 6033, 5765, 5769, + 5771, 5780, 5777, 5789, 5791, 5781, 5788, 5794, 5784, 5801, + 6033, 5797, 5800, 5807, 6033, 5798, 5804, 5808, 5809, 5810, + 5817, 5812, 5813, 6033, 5818, 6033, 5821, 5824, 5822, 5816, + 5825, 5830, 5837, 5834, 5832, 6033, 5814, 5841, 5846, 5847, + 5849, 5851, 5852, 5853, 5855, 5857, 5858, 5864, 5861, 5866, + 5867, 5869, 5870, 6033, 5876, 5871, 6033, 5877, 5878, 5879, + 5880, 5884, 6033, 5888, 5881, 5891, 5892, 5895, 5896, 6033, + 5902, 5905, 5906, 6033, 5907, 6033, 6033, 5909, 5897, 5908, + 5918, 5920, 6033, 6033, 6033, 5941, 5948, 5955, 5962, 5969, + 88, 5976, 5983, 5990, 5997, 6004, 6011, 6018, 6025 } ; -static const flex_int16_t yy_def[3097] = +static const flex_int16_t yy_def[3110] = { 0, - 3082, 1, 3083, 3083, 3084, 3084, 3085, 3085, 3086, 3086, - 3087, 3087, 3082, 3088, 3082, 3082, 3082, 3082, 3089, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3090, 3082, 3082, 3082, 3090, 3091, 3082, 3082, - 3082, 3091, 3092, 3082, 3082, 3082, 3082, 3092, 3093, 3082, - 3082, 3082, 3093, 3094, 3082, 3095, 3082, 3094, 3094, 3088, - 3088, 3082, 3096, 3089, 3096, 3089, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3095, 1, 3096, 3096, 3097, 3097, 3098, 3098, 3099, 3099, + 3100, 3100, 3095, 3101, 3095, 3095, 3095, 3095, 3102, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3103, 3095, 3095, 3095, 3103, 3104, 3095, 3095, + 3095, 3104, 3105, 3095, 3095, 3095, 3095, 3105, 3106, 3095, + 3095, 3095, 3106, 3107, 3095, 3108, 3095, 3107, 3107, 3101, + 3101, 3095, 3109, 3102, 3109, 3102, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3090, 3090, 3091, 3091, 3092, 3092, 3082, 3093, 3093, - 3094, 3094, 3095, 3095, 3094, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3103, 3103, 3104, 3104, 3105, 3105, 3095, 3106, 3106, + 3107, 3107, 3108, 3108, 3107, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3107, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3107, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3095, 3101, 3107, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3082, 3082, 3088, 3088, 3082, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3107, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3095, 3101, 3095, 3095, 3101, 3101, 3095, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3107, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3107, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3095, + 3101, 3095, 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3101, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, - 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, + 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3082, 3088, 3088, + 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3095, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3095, 3095, 3101, 3101, 3095, - 3088, 3088, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3095, 3095, + 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3095, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3095, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3095, 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3082, 3082, 3082, 3088, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3095, 3095, + 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3095, 3095, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3082, 3082, 3082, 3082, 3082, 3082, + 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3095, + 3095, 3095, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3095, + 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3095, 3101, 3095, 3095, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, - 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3101, 3095, 3101, 3101, 3095, 3095, 3101, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3101, 3095, 3101, 3101, 3101, + 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3095, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 0, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3101, 3101, 3101, 3101, 3101, 3101, 3095, 3095, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3095, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3095, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3101, 3101, 3095, 3101, 3101, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3101, 3101, 3101, 3101, 3101, 3101, 3095, + 3101, 3101, 3101, 3095, 3101, 3095, 3095, 3101, 3101, 3101, + 3101, 3101, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095 } ; -static const flex_int16_t yy_nxt[6057] = +static const flex_int16_t yy_nxt[6074] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1590,523 +1594,525 @@ static const flex_int16_t yy_nxt[6057] = 757, 71, 71, 760, 71, 762, 764, 766, 71, 763, 71, 765, 71, 771, 71, 768, 71, 71, 71, 71, 71, 767, 774, 71, 776, 773, 780, 777, 71, 769, - 770, 778, 71, 772, 71, 71, 783, 71, 775, 782, + 770, 778, 71, 772, 71, 71, 784, 71, 775, 782, - 71, 784, 71, 71, 785, 71, 779, 781, 71, 71, - 787, 789, 71, 71, 71, 71, 71, 71, 795, 788, - 796, 71, 786, 790, 71, 71, 797, 71, 71, 71, - 791, 792, 804, 793, 71, 794, 798, 71, 71, 71, - 799, 802, 71, 71, 71, 800, 71, 801, 809, 803, - 71, 805, 71, 71, 806, 71, 71, 71, 807, 71, - 143, 816, 808, 71, 810, 71, 811, 71, 818, 819, - 812, 813, 814, 817, 815, 71, 820, 822, 71, 71, - 71, 71, 71, 823, 71, 71, 821, 71, 71, 827, - 828, 829, 830, 831, 826, 824, 71, 71, 71, 825, + 71, 785, 71, 71, 786, 71, 779, 781, 71, 783, + 788, 71, 71, 790, 71, 71, 71, 71, 796, 789, + 71, 797, 787, 791, 71, 71, 71, 71, 71, 798, + 792, 71, 793, 71, 794, 71, 795, 71, 805, 71, + 799, 800, 71, 803, 71, 801, 71, 802, 804, 806, + 810, 807, 71, 71, 71, 71, 808, 71, 71, 71, + 819, 809, 71, 817, 71, 71, 820, 71, 71, 812, + 811, 71, 813, 814, 815, 71, 816, 71, 818, 822, + 824, 823, 71, 71, 821, 71, 71, 825, 71, 71, + 828, 829, 830, 831, 832, 827, 826, 71, 71, 71, - 71, 71, 71, 152, 833, 71, 840, 834, 838, 836, - 71, 71, 71, 839, 832, 835, 71, 837, 71, 71, - 71, 842, 846, 71, 71, 841, 71, 847, 849, 71, - 852, 843, 844, 850, 71, 848, 71, 71, 71, 851, - 845, 854, 71, 71, 71, 858, 71, 71, 71, 71, - 855, 71, 859, 860, 853, 71, 71, 71, 71, 71, - 71, 857, 873, 876, 71, 861, 872, 856, 71, 863, - 870, 71, 71, 862, 71, 871, 875, 874, 71, 864, - 71, 877, 880, 865, 71, 878, 866, 71, 882, 879, - 71, 883, 71, 867, 868, 891, 869, 71, 71, 71, + 71, 71, 152, 71, 71, 834, 840, 839, 835, 71, + 837, 71, 71, 841, 836, 833, 838, 71, 71, 71, + 71, 843, 847, 71, 71, 842, 71, 848, 850, 71, + 853, 71, 844, 845, 71, 849, 71, 71, 71, 846, + 851, 855, 71, 852, 71, 857, 859, 71, 71, 71, + 856, 861, 71, 71, 854, 860, 71, 71, 71, 71, + 858, 71, 71, 874, 143, 71, 862, 873, 875, 877, + 71, 871, 71, 864, 863, 71, 872, 876, 71, 878, + 865, 71, 879, 880, 866, 71, 71, 867, 881, 71, + 884, 71, 71, 71, 868, 869, 71, 870, 892, 882, - 71, 881, 71, 884, 885, 71, 886, 897, 895, 887, - 896, 71, 71, 892, 888, 3082, 893, 71, 898, 71, - 889, 890, 71, 900, 894, 71, 71, 899, 71, 902, - 901, 904, 71, 903, 71, 71, 905, 71, 907, 71, - 71, 908, 71, 71, 912, 71, 71, 906, 911, 71, - 71, 915, 71, 71, 921, 71, 919, 932, 71, 909, - 913, 910, 71, 914, 916, 917, 71, 922, 933, 71, - 71, 920, 923, 71, 918, 924, 925, 926, 71, 71, - 928, 929, 71, 71, 927, 71, 71, 71, 71, 71, - 71, 930, 71, 71, 71, 931, 934, 936, 939, 71, + 71, 71, 897, 71, 896, 71, 883, 71, 885, 886, + 893, 887, 898, 71, 888, 71, 895, 906, 894, 889, + 71, 899, 71, 901, 71, 890, 891, 71, 900, 902, + 903, 71, 905, 71, 71, 71, 904, 71, 71, 71, + 71, 909, 71, 913, 71, 71, 907, 912, 71, 71, + 916, 71, 71, 71, 908, 920, 918, 977, 910, 911, + 914, 71, 915, 71, 922, 71, 923, 926, 921, 917, + 71, 924, 71, 71, 919, 925, 927, 71, 71, 929, + 930, 71, 71, 928, 71, 71, 71, 931, 933, 71, + 934, 71, 932, 71, 935, 71, 71, 71, 940, 71, - 937, 71, 71, 940, 71, 942, 71, 935, 71, 938, - 941, 71, 71, 944, 71, 945, 71, 947, 71, 949, - 943, 71, 71, 948, 71, 71, 950, 71, 957, 955, - 71, 71, 946, 953, 956, 71, 951, 71, 954, 71, - 71, 71, 964, 952, 962, 958, 960, 965, 71, 71, - 959, 71, 963, 71, 71, 71, 967, 71, 71, 71, - 71, 71, 71, 961, 71, 975, 71, 978, 973, 71, - 966, 1218, 71, 71, 968, 969, 971, 970, 972, 71, - 976, 979, 71, 974, 71, 977, 71, 71, 981, 71, - 983, 980, 985, 986, 71, 71, 982, 71, 71, 71, + 937, 71, 943, 938, 71, 71, 71, 71, 71, 71, + 941, 936, 942, 71, 71, 945, 939, 71, 946, 948, + 950, 71, 949, 71, 944, 71, 951, 71, 71, 956, + 71, 947, 71, 958, 957, 71, 954, 952, 71, 71, + 71, 955, 71, 71, 71, 959, 964, 71, 961, 966, + 953, 967, 71, 71, 965, 71, 71, 960, 969, 71, + 963, 71, 71, 71, 962, 968, 71, 71, 71, 980, + 71, 71, 975, 71, 71, 71, 970, 71, 973, 971, + 981, 972, 974, 985, 984, 978, 982, 979, 71, 976, + 71, 71, 983, 988, 71, 987, 71, 71, 71, 71, - 984, 71, 71, 3082, 988, 71, 990, 995, 996, 987, - 71, 71, 998, 71, 71, 71, 1000, 989, 71, 991, - 1001, 993, 71, 992, 997, 994, 71, 71, 71, 71, - 71, 999, 1002, 71, 1003, 1006, 71, 1008, 1009, 1004, - 71, 71, 1013, 1010, 71, 71, 71, 1005, 71, 71, - 1007, 1011, 1015, 71, 1012, 71, 1018, 152, 71, 71, - 1017, 71, 1021, 1020, 1016, 1014, 71, 71, 71, 71, - 71, 1022, 1024, 1019, 71, 71, 71, 1036, 71, 71, - 71, 71, 1037, 71, 1027, 1041, 1023, 1025, 1039, 71, - 71, 71, 71, 1026, 1028, 1038, 1029, 71, 1042, 1059, + 71, 71, 986, 71, 997, 990, 992, 998, 1000, 71, + 71, 989, 71, 71, 71, 1002, 71, 991, 1003, 993, + 995, 71, 994, 996, 71, 71, 999, 71, 71, 1001, + 71, 1004, 71, 1008, 1011, 1005, 71, 1006, 71, 1010, + 71, 71, 1015, 71, 1012, 1007, 1017, 71, 71, 1014, + 1013, 1009, 71, 71, 1020, 152, 71, 71, 1019, 71, + 1023, 1022, 71, 1016, 71, 71, 71, 71, 71, 1026, + 1018, 1021, 71, 71, 71, 1038, 71, 71, 71, 71, + 1039, 71, 1029, 1043, 1024, 1025, 1027, 1041, 71, 71, + 1028, 71, 1030, 1040, 1031, 71, 1044, 1062, 1032, 71, - 1030, 71, 1031, 1182, 1040, 1043, 1032, 71, 1033, 71, - 71, 1046, 1044, 1034, 1049, 1045, 1047, 71, 1035, 71, - 71, 71, 71, 1048, 71, 1052, 1050, 1055, 71, 71, - 71, 1061, 71, 1054, 1051, 1053, 1060, 71, 1056, 1062, - 1063, 71, 1064, 1058, 1065, 71, 71, 71, 71, 1057, - 71, 71, 71, 71, 1066, 71, 71, 1077, 71, 71, - 1080, 1081, 71, 1076, 71, 1067, 1068, 71, 1069, 1078, - 1079, 71, 1082, 1070, 1144, 1071, 1083, 71, 1086, 71, - 71, 1072, 1088, 71, 1087, 71, 1073, 1074, 71, 71, - 1084, 1092, 1089, 1075, 71, 71, 1085, 71, 1091, 1093, + 1033, 3095, 1042, 1045, 1034, 71, 1035, 71, 71, 1048, + 1046, 1036, 1051, 1047, 1049, 71, 1037, 71, 71, 71, + 71, 1050, 71, 1054, 1052, 1057, 71, 71, 71, 1063, + 71, 1056, 1053, 1055, 1064, 71, 1058, 1061, 1065, 71, + 71, 1060, 71, 1066, 1067, 71, 71, 1059, 71, 71, + 71, 71, 1068, 71, 1079, 71, 71, 71, 1078, 71, + 1082, 1069, 1083, 1070, 71, 1071, 71, 1080, 1081, 1085, + 1072, 1104, 1073, 71, 1084, 71, 1088, 71, 1074, 71, + 1090, 71, 1091, 1075, 1076, 1089, 71, 71, 71, 1094, + 1077, 71, 1086, 71, 1087, 71, 1095, 71, 71, 71, - 71, 71, 1090, 71, 71, 1098, 71, 71, 71, 1095, - 1096, 71, 1101, 1099, 1094, 71, 71, 71, 71, 1097, - 71, 71, 71, 71, 71, 1100, 1106, 1108, 1102, 1103, - 1105, 1107, 1110, 71, 71, 71, 1104, 1109, 71, 1111, - 71, 71, 3082, 71, 1113, 71, 71, 1112, 1118, 1115, - 1119, 1120, 71, 1114, 71, 1122, 1117, 1123, 1116, 71, - 71, 1121, 1126, 71, 71, 71, 1128, 1127, 71, 1129, - 71, 71, 1124, 1130, 71, 71, 1125, 1137, 1131, 71, - 71, 71, 1139, 71, 71, 71, 71, 3082, 71, 71, - 1133, 1132, 1135, 1134, 1141, 1136, 71, 1150, 71, 1140, + 71, 1093, 71, 1100, 71, 71, 1092, 1097, 1098, 71, + 1103, 1101, 1096, 1099, 71, 71, 71, 71, 1105, 1102, + 71, 71, 71, 1112, 71, 1108, 1109, 1107, 1110, 71, + 71, 71, 71, 71, 1106, 1114, 71, 1111, 71, 71, + 1113, 71, 71, 1120, 1121, 1117, 1122, 71, 1119, 1125, + 1115, 1116, 71, 1124, 1118, 71, 1123, 71, 1127, 1128, + 71, 71, 71, 1130, 1129, 71, 1131, 71, 71, 71, + 1126, 1132, 71, 71, 1133, 71, 1139, 71, 1141, 71, + 71, 1134, 71, 1135, 71, 1137, 71, 1136, 1138, 71, + 3095, 1143, 1142, 1144, 71, 1140, 71, 1145, 71, 71, - 1142, 1138, 71, 1145, 71, 1143, 71, 71, 71, 1146, - 71, 1148, 1147, 1149, 71, 1154, 1151, 1155, 71, 71, - 1153, 71, 71, 1152, 71, 71, 1159, 1158, 1156, 71, - 71, 71, 71, 71, 71, 1163, 1165, 1166, 1170, 1167, - 1157, 71, 71, 71, 71, 71, 1164, 1160, 71, 1161, - 1168, 1162, 71, 1169, 1173, 71, 71, 1175, 71, 1171, - 71, 1174, 71, 71, 1176, 71, 71, 71, 71, 1180, - 1181, 1177, 1172, 71, 71, 71, 1186, 1187, 1190, 71, - 71, 1178, 71, 71, 1179, 1184, 1183, 71, 71, 71, - 1188, 1194, 1189, 1185, 71, 71, 71, 71, 71, 1191, + 71, 1146, 71, 1147, 1148, 1149, 71, 1151, 1153, 1150, + 71, 1152, 71, 71, 1157, 71, 1154, 1158, 71, 1156, + 71, 71, 71, 71, 1159, 1161, 71, 1162, 1155, 71, + 71, 71, 71, 71, 1166, 71, 1168, 1169, 1170, 1160, + 1171, 1163, 71, 71, 71, 1167, 1173, 71, 1164, 1172, + 1165, 71, 71, 1176, 71, 71, 1178, 71, 71, 71, + 1177, 71, 71, 1179, 71, 1174, 71, 1180, 71, 1183, + 71, 1175, 71, 1184, 71, 1185, 1189, 1190, 71, 1181, + 71, 1182, 71, 71, 1187, 71, 1186, 1193, 71, 71, + 1192, 71, 71, 1188, 1197, 1191, 71, 1194, 71, 71, - 71, 1193, 1192, 1200, 71, 1196, 71, 71, 71, 71, - 1206, 71, 1195, 1204, 71, 71, 1197, 1221, 71, 1199, - 1201, 1203, 1202, 1198, 1205, 1208, 1209, 71, 71, 1211, - 71, 71, 71, 1210, 1207, 1212, 71, 71, 71, 71, - 71, 71, 71, 1215, 71, 71, 71, 71, 71, 71, - 1213, 1214, 1225, 1251, 1216, 71, 1219, 3082, 1222, 1217, - 1227, 1220, 1224, 1223, 71, 1231, 71, 71, 1226, 1228, - 71, 1229, 1232, 1234, 1230, 1233, 71, 71, 71, 71, - 1236, 71, 71, 71, 1235, 71, 71, 1240, 1239, 71, - 1243, 71, 1246, 71, 71, 3082, 71, 1237, 1242, 1238, + 71, 71, 71, 1195, 1196, 1199, 1203, 71, 71, 1198, + 71, 71, 71, 1209, 71, 71, 1204, 1207, 1200, 3095, + 1202, 1211, 1206, 1205, 1208, 1201, 1212, 71, 71, 71, + 71, 1210, 71, 1213, 71, 1215, 1214, 71, 71, 71, + 71, 71, 71, 1216, 1218, 71, 1224, 71, 1221, 71, + 71, 1217, 71, 1219, 71, 71, 71, 1222, 1351, 1220, + 1228, 71, 1234, 1225, 1223, 71, 71, 1227, 1226, 71, + 1230, 1235, 1236, 71, 71, 1229, 1237, 71, 71, 1231, + 1239, 1232, 71, 71, 1233, 71, 71, 71, 1238, 71, + 1243, 71, 1242, 71, 1246, 1249, 71, 1240, 71, 1245, - 1244, 1247, 1241, 71, 71, 71, 71, 71, 1248, 1250, - 1245, 71, 71, 71, 1249, 1252, 71, 71, 71, 71, - 1253, 71, 1254, 1258, 1256, 71, 71, 71, 1257, 1259, - 1255, 1263, 71, 71, 71, 71, 71, 1260, 1268, 1262, - 1261, 1264, 1267, 1270, 71, 71, 71, 1265, 1269, 1274, - 1272, 71, 1266, 71, 1275, 71, 1271, 71, 1273, 71, - 71, 1279, 71, 1288, 71, 1289, 1287, 1277, 71, 71, - 1276, 71, 1278, 71, 1292, 1286, 1290, 1291, 1280, 71, - 71, 1281, 1282, 71, 1293, 71, 1283, 71, 1294, 71, - 1295, 71, 1284, 71, 1297, 71, 1285, 71, 1298, 71, + 1241, 71, 1247, 1250, 71, 1244, 1251, 71, 71, 71, + 71, 1254, 1248, 1253, 71, 71, 71, 71, 1255, 71, + 71, 71, 71, 71, 1252, 1256, 1261, 71, 1259, 1257, + 71, 71, 1260, 1262, 1258, 71, 1266, 71, 1271, 1263, + 71, 1265, 1267, 1264, 71, 71, 1270, 71, 71, 71, + 71, 1268, 71, 1273, 1272, 1269, 1277, 1275, 71, 71, + 1276, 1278, 71, 71, 1280, 71, 1282, 1274, 1279, 71, + 1322, 1281, 71, 1291, 71, 1292, 1289, 1283, 1290, 71, + 1284, 1285, 71, 71, 1295, 1286, 71, 1293, 71, 71, + 71, 1287, 1294, 1296, 1297, 1288, 71, 1298, 71, 1300, - 1299, 71, 71, 71, 1316, 71, 1296, 1300, 1302, 1301, - 1304, 71, 1307, 1308, 71, 1305, 1309, 1303, 71, 71, - 1306, 71, 71, 1311, 71, 1310, 1317, 1318, 1312, 71, - 1313, 71, 1314, 1319, 1315, 1320, 71, 71, 1324, 1321, - 71, 71, 71, 1325, 71, 71, 1323, 1328, 71, 1326, - 71, 71, 71, 71, 1322, 1334, 71, 1330, 71, 1329, - 71, 71, 71, 1327, 71, 1335, 1333, 1337, 1336, 1331, - 1332, 71, 1339, 71, 1341, 71, 1338, 1344, 71, 71, - 1343, 71, 1340, 1346, 71, 71, 71, 1342, 1347, 71, - 1349, 71, 1348, 71, 1345, 1352, 71, 1354, 71, 71, + 71, 71, 71, 1301, 71, 1302, 71, 1299, 71, 71, + 71, 1310, 1311, 1305, 1307, 3095, 71, 71, 71, 71, + 1304, 1303, 1308, 71, 1312, 1314, 1306, 1313, 1309, 71, + 1315, 71, 1316, 1323, 1317, 71, 1318, 71, 1319, 1320, + 1321, 71, 71, 1327, 71, 71, 1324, 71, 1328, 71, + 1326, 71, 1331, 1325, 1329, 71, 71, 71, 71, 71, + 1338, 1337, 71, 71, 1333, 1332, 1330, 71, 71, 71, + 1339, 71, 1336, 1341, 71, 1334, 1335, 1340, 71, 71, + 1343, 1344, 71, 1342, 1348, 71, 71, 1347, 1350, 71, + 71, 71, 71, 1352, 71, 71, 1345, 1353, 1356, 71, - 1350, 71, 1351, 71, 1355, 71, 1356, 1359, 71, 71, - 71, 1353, 71, 1361, 71, 71, 71, 71, 1365, 1363, - 1357, 71, 71, 71, 1364, 1367, 1358, 71, 1369, 1360, - 71, 71, 1362, 71, 3082, 1366, 1368, 71, 1371, 1372, - 71, 1370, 1373, 71, 1375, 1374, 71, 71, 1377, 71, - 71, 1376, 1381, 1378, 1382, 1384, 1379, 71, 71, 71, - 71, 71, 1383, 1380, 71, 71, 1388, 71, 1385, 71, - 71, 71, 1392, 1393, 71, 1395, 1387, 71, 71, 71, - 1394, 71, 71, 1386, 71, 71, 71, 71, 1402, 1389, - 1390, 1396, 71, 71, 1391, 71, 1399, 1397, 71, 1400, + 71, 1349, 71, 1355, 1346, 1358, 71, 71, 1359, 71, + 1354, 1363, 71, 71, 1360, 1357, 71, 71, 71, 1365, + 71, 1361, 71, 1362, 1369, 1367, 71, 1368, 71, 71, + 71, 1371, 71, 1364, 1373, 71, 71, 1366, 71, 71, + 1375, 1377, 71, 1378, 1370, 1372, 1374, 1376, 71, 1379, + 71, 71, 71, 71, 71, 1380, 1385, 1382, 1386, 1383, + 1381, 1388, 71, 71, 71, 71, 1384, 71, 1387, 71, + 1392, 71, 71, 1390, 1389, 71, 71, 1396, 1397, 71, + 1391, 1399, 71, 71, 71, 1398, 71, 71, 71, 71, + 71, 71, 1393, 71, 1406, 1394, 1400, 71, 71, 1395, - 1407, 71, 1398, 1406, 1401, 71, 71, 71, 71, 1411, - 71, 1409, 1403, 1405, 1412, 71, 71, 1414, 1404, 71, - 71, 71, 3082, 71, 1416, 71, 1410, 1415, 1408, 71, - 1420, 1422, 1424, 1421, 1413, 1417, 1418, 1423, 71, 1419, - 71, 71, 1427, 71, 1425, 71, 71, 1428, 71, 71, - 71, 71, 1426, 71, 1432, 1433, 71, 71, 1435, 71, - 71, 71, 1429, 71, 1431, 71, 1440, 1441, 71, 1434, - 71, 1430, 71, 1437, 1444, 1438, 1436, 71, 1439, 1442, - 71, 71, 1445, 71, 71, 71, 71, 1443, 71, 71, - 1451, 1446, 1448, 1452, 1453, 1447, 71, 71, 1449, 71, + 1403, 71, 1401, 1404, 71, 71, 1402, 71, 1405, 1410, + 1413, 1407, 1411, 71, 1415, 71, 1409, 71, 71, 1416, + 71, 71, 1408, 71, 1412, 1419, 1414, 1418, 71, 71, + 71, 71, 1426, 1417, 1424, 1420, 1428, 1425, 1421, 71, + 71, 71, 71, 1422, 1429, 1427, 1423, 1431, 71, 71, + 1430, 71, 1432, 71, 71, 71, 1436, 71, 71, 1437, + 1433, 71, 1439, 71, 71, 71, 1444, 1435, 71, 71, + 71, 1448, 1445, 1438, 1434, 1441, 71, 71, 1440, 71, + 71, 1442, 1443, 71, 71, 71, 71, 1446, 1449, 1447, + 71, 1455, 71, 71, 1451, 71, 71, 1456, 1450, 1452, - 1456, 71, 71, 1450, 71, 1455, 1454, 1458, 1461, 1460, - 1462, 71, 1457, 71, 71, 1466, 71, 71, 1463, 71, - 1464, 1465, 71, 1459, 71, 71, 71, 71, 71, 1472, - 71, 1468, 71, 1467, 1471, 71, 71, 71, 1478, 1469, - 1474, 1470, 1475, 1479, 71, 71, 1480, 71, 1483, 1476, - 1473, 1481, 71, 71, 71, 1477, 71, 71, 71, 71, - 71, 1487, 1491, 71, 71, 1482, 1486, 71, 71, 1492, - 1494, 71, 1484, 1485, 71, 1497, 71, 1488, 1490, 1489, - 1496, 71, 71, 71, 71, 71, 1495, 71, 71, 1493, - 1498, 71, 71, 1505, 71, 1508, 71, 1506, 71, 1502, + 1453, 1457, 1454, 71, 1459, 71, 1460, 71, 1461, 1462, + 1458, 71, 1465, 1466, 71, 1467, 1464, 71, 71, 71, + 71, 1468, 1469, 71, 71, 71, 1471, 71, 1463, 1470, + 71, 71, 71, 1476, 71, 71, 71, 71, 1475, 71, + 71, 1473, 1472, 1478, 1479, 1474, 1482, 71, 1487, 71, + 1480, 1483, 71, 1484, 1477, 71, 1481, 71, 1485, 71, + 1486, 71, 71, 71, 71, 1495, 1490, 1491, 1488, 71, + 71, 71, 1498, 71, 1489, 1496, 71, 71, 71, 71, + 1492, 1501, 1494, 1493, 71, 1500, 71, 71, 71, 71, + 1506, 71, 1499, 71, 1509, 1497, 1502, 71, 3095, 71, - 1507, 1499, 1500, 1501, 1509, 71, 1504, 71, 1503, 71, - 71, 1512, 1510, 1511, 71, 71, 71, 1515, 71, 1513, - 71, 1516, 71, 71, 71, 1519, 1525, 1514, 1523, 71, - 71, 1520, 71, 71, 1517, 1524, 1518, 1527, 71, 1522, - 71, 71, 1521, 1528, 1529, 1530, 71, 71, 1526, 71, - 1534, 1535, 71, 71, 71, 71, 71, 71, 1539, 71, - 1538, 1540, 1542, 71, 71, 1532, 1531, 71, 71, 1533, - 71, 1536, 71, 1543, 71, 1537, 1544, 71, 71, 1541, - 1545, 1547, 71, 1549, 1546, 71, 1550, 71, 71, 71, - 71, 71, 1548, 71, 1554, 71, 1556, 1551, 71, 71, + 1510, 1512, 71, 1503, 71, 1504, 1508, 1505, 1513, 71, + 1507, 1511, 71, 71, 71, 71, 71, 1514, 1515, 71, + 71, 1519, 1522, 71, 1517, 1520, 1516, 71, 1523, 1518, + 71, 1527, 71, 71, 71, 1524, 1529, 71, 1521, 1528, + 71, 71, 71, 71, 71, 1532, 1526, 1525, 1530, 71, + 1531, 71, 1537, 1533, 71, 1534, 71, 1539, 1540, 71, + 71, 1535, 1536, 71, 71, 71, 1544, 1545, 71, 1543, + 1547, 71, 71, 71, 1538, 1548, 71, 1542, 1541, 1549, + 71, 71, 71, 71, 71, 1552, 71, 1555, 1546, 71, + 71, 71, 1550, 1554, 71, 71, 71, 1551, 71, 1559, - 1557, 71, 1561, 71, 1555, 71, 71, 1553, 1552, 71, - 71, 1558, 71, 1559, 1564, 1566, 71, 1562, 71, 71, - 1569, 1565, 1567, 1563, 1560, 71, 71, 71, 71, 71, - 1568, 1572, 71, 1574, 1570, 71, 1571, 1575, 71, 71, - 71, 71, 1582, 71, 71, 1573, 1577, 1576, 1583, 71, - 71, 71, 71, 1580, 1578, 1579, 1587, 71, 71, 1586, - 1589, 1591, 1590, 71, 1584, 1581, 71, 71, 1593, 1585, - 1595, 71, 1588, 71, 71, 71, 71, 71, 71, 1600, - 1594, 1597, 1598, 1592, 71, 1601, 71, 71, 71, 71, - 71, 1612, 1596, 1605, 71, 1606, 71, 71, 71, 71, + 71, 1561, 71, 1553, 1556, 1562, 71, 71, 1566, 1560, + 1558, 1557, 71, 71, 71, 71, 1563, 1564, 1569, 1571, + 71, 71, 71, 71, 1574, 1572, 1567, 71, 71, 71, + 1570, 1565, 1568, 1577, 71, 71, 1580, 71, 71, 1576, + 1579, 71, 1573, 71, 71, 71, 71, 1587, 71, 1575, + 71, 71, 71, 1578, 71, 1582, 1581, 1588, 1585, 1591, + 71, 71, 1583, 1584, 71, 1592, 1594, 71, 1589, 1596, + 1586, 1590, 1595, 1598, 1593, 71, 71, 1600, 71, 71, + 71, 1597, 71, 71, 71, 71, 1605, 71, 1602, 1603, + 1599, 71, 1606, 71, 71, 71, 71, 1611, 1610, 1601, - 1599, 1602, 1609, 1604, 1603, 1610, 71, 71, 1607, 1608, - 1614, 1613, 71, 71, 1620, 71, 71, 1611, 1617, 1619, - 71, 1616, 1621, 1618, 71, 1622, 1615, 1625, 71, 71, - 1623, 71, 1624, 71, 71, 71, 71, 1627, 71, 1626, - 71, 1632, 1633, 1631, 71, 1635, 71, 71, 71, 1634, - 71, 71, 71, 1628, 71, 1629, 71, 1637, 1630, 1638, - 71, 1639, 71, 71, 71, 1647, 71, 71, 1640, 1636, - 71, 71, 71, 71, 1641, 71, 71, 1643, 1644, 1645, - 1652, 71, 1642, 1646, 71, 71, 1648, 1650, 71, 1655, - 1654, 1656, 1649, 71, 71, 71, 1651, 71, 71, 71, + 71, 1607, 71, 71, 71, 71, 1624, 1604, 1617, 1609, + 71, 1608, 1612, 1614, 71, 71, 1615, 71, 71, 71, + 1618, 1619, 1613, 1633, 1622, 71, 1621, 1626, 1616, 1623, + 1625, 71, 1630, 71, 71, 71, 1628, 1620, 71, 1627, + 71, 1629, 71, 71, 1634, 71, 71, 1631, 1637, 1636, + 71, 1638, 1640, 71, 71, 1639, 1632, 71, 71, 71, + 1643, 71, 71, 71, 1642, 1635, 71, 1644, 71, 71, + 71, 1652, 71, 71, 71, 71, 1641, 71, 71, 71, + 71, 1645, 71, 1648, 1649, 1650, 1646, 1651, 1647, 1657, + 71, 71, 1653, 1655, 71, 1654, 1659, 71, 1660, 1656, - 71, 71, 71, 71, 1653, 1662, 1660, 1657, 71, 1663, - 1670, 71, 1664, 1659, 1661, 1672, 71, 1665, 1658, 1669, - 1671, 71, 71, 1666, 1675, 71, 71, 1668, 1667, 1674, - 71, 71, 71, 71, 71, 71, 71, 1678, 1679, 71, - 1673, 71, 1687, 1676, 71, 1682, 71, 71, 71, 71, - 1677, 1681, 71, 1680, 1690, 1686, 1684, 71, 1683, 1685, - 1688, 71, 71, 71, 1689, 71, 1692, 1691, 71, 1697, - 71, 71, 71, 1693, 1694, 71, 1701, 1700, 71, 71, - 1699, 71, 71, 1696, 1705, 71, 1698, 1709, 1695, 71, - 1702, 1703, 1710, 71, 1704, 71, 1706, 71, 71, 3082, + 1658, 71, 71, 71, 71, 71, 1663, 71, 71, 1661, + 71, 3095, 1665, 71, 1667, 1662, 1675, 71, 71, 1666, + 1664, 1670, 1668, 1671, 71, 1669, 71, 1674, 1672, 1676, + 71, 71, 1680, 71, 1679, 1673, 1678, 71, 1677, 71, + 71, 71, 71, 71, 71, 1683, 1684, 71, 71, 1692, + 1681, 1693, 71, 1687, 71, 71, 71, 1689, 1682, 1686, + 1690, 1685, 71, 1691, 71, 71, 1688, 71, 71, 71, + 71, 71, 1702, 71, 71, 1695, 1694, 71, 1760, 1697, + 1699, 71, 1696, 1698, 71, 71, 1704, 71, 1701, 1703, + 1705, 71, 1706, 1708, 1700, 71, 1709, 71, 1714, 1711, - 71, 1715, 1707, 1708, 1712, 1714, 1718, 71, 71, 1711, - 1717, 71, 71, 1719, 1720, 71, 1716, 71, 71, 1713, - 71, 1721, 1724, 71, 71, 1728, 71, 1726, 71, 71, - 71, 71, 1723, 1727, 1729, 71, 1725, 1722, 71, 71, - 71, 71, 71, 1732, 1738, 71, 71, 1733, 1730, 1731, - 71, 1740, 1734, 1735, 1741, 1736, 1737, 71, 71, 1742, - 71, 1743, 71, 71, 71, 1748, 1739, 71, 71, 71, - 1744, 71, 1752, 71, 71, 71, 1745, 1747, 71, 1754, - 71, 71, 1746, 1755, 1750, 1756, 1757, 1751, 71, 1749, - 71, 71, 1761, 71, 1753, 71, 71, 1758, 71, 1765, + 1710, 71, 71, 1715, 71, 71, 1707, 71, 1712, 71, + 71, 1720, 1719, 1722, 71, 1713, 1716, 71, 1723, 71, + 1717, 71, 1726, 1718, 71, 71, 1724, 1721, 71, 71, + 1728, 1727, 1730, 1725, 71, 1734, 71, 71, 71, 1732, + 71, 71, 71, 1729, 71, 1733, 71, 1731, 1735, 71, + 71, 71, 1738, 71, 1746, 1739, 1736, 1744, 71, 71, + 71, 1737, 1740, 1741, 1747, 1742, 71, 1743, 1749, 71, + 71, 71, 1748, 71, 71, 1754, 71, 71, 71, 1745, + 71, 71, 1758, 71, 71, 71, 1750, 1753, 71, 1751, + 1761, 71, 1752, 1756, 71, 71, 1757, 71, 1755, 1762, - 71, 71, 71, 71, 71, 71, 1760, 71, 1763, 1767, - 71, 71, 1772, 1759, 1762, 1766, 1768, 1764, 71, 1769, - 71, 71, 1770, 1773, 1777, 1771, 1775, 71, 1774, 1776, - 71, 1778, 71, 71, 1781, 71, 1780, 71, 1779, 1784, - 71, 1782, 71, 71, 71, 71, 1785, 1783, 71, 71, - 71, 71, 71, 71, 1790, 71, 71, 1794, 71, 71, - 1791, 3082, 71, 1800, 1786, 1792, 1788, 1787, 1789, 71, - 1793, 1795, 71, 1803, 1798, 71, 1797, 1802, 71, 71, - 1804, 1799, 71, 71, 1796, 71, 71, 1801, 1808, 71, - 1811, 1812, 71, 71, 1805, 1813, 71, 71, 1806, 1809, + 1759, 71, 1763, 1766, 1764, 1767, 71, 1765, 71, 71, + 1768, 1771, 71, 1769, 71, 71, 71, 71, 71, 1778, + 71, 1773, 71, 1772, 71, 71, 71, 1770, 1774, 1775, + 1781, 1785, 1779, 71, 1776, 1782, 71, 71, 1777, 71, + 1780, 1787, 1783, 1784, 71, 1789, 1786, 71, 1788, 71, + 71, 71, 1790, 71, 1791, 71, 71, 71, 71, 71, + 71, 71, 71, 1796, 71, 71, 71, 1800, 1797, 71, + 1806, 71, 1798, 1792, 1794, 1795, 1799, 1793, 1801, 71, + 71, 1807, 1808, 71, 1803, 1804, 71, 1809, 71, 71, + 1811, 1802, 1805, 71, 71, 71, 1814, 71, 1817, 71, - 71, 1810, 71, 1807, 1815, 71, 71, 1816, 1819, 71, - 71, 1821, 71, 1814, 1820, 1822, 1823, 71, 1817, 1825, - 1824, 1818, 71, 71, 71, 71, 1830, 1827, 1828, 71, - 71, 1829, 71, 71, 71, 71, 1837, 71, 1839, 71, - 71, 71, 71, 1840, 71, 1831, 1832, 1833, 1826, 71, - 71, 1842, 1834, 1841, 1835, 1836, 1844, 1838, 1845, 71, - 1847, 1843, 71, 71, 71, 1849, 71, 71, 1846, 71, - 1851, 71, 71, 1854, 1855, 71, 71, 1857, 71, 71, - 71, 71, 71, 1848, 1863, 71, 1862, 1852, 71, 1850, - 1859, 1860, 71, 1853, 71, 71, 1856, 71, 71, 71, + 1810, 71, 1812, 1815, 3095, 1816, 1818, 71, 1813, 1819, + 71, 1821, 71, 71, 1822, 1820, 1825, 71, 1827, 71, + 1823, 1829, 1824, 1826, 71, 71, 71, 71, 1828, 1831, + 71, 71, 1834, 71, 1833, 71, 71, 1835, 71, 1836, + 71, 71, 1843, 71, 1830, 71, 71, 71, 71, 1848, + 1837, 1838, 1839, 1845, 71, 1832, 71, 1840, 1846, 71, + 1841, 1842, 71, 1844, 1851, 71, 1853, 1849, 1847, 71, + 71, 1855, 71, 71, 1852, 71, 1857, 1850, 71, 71, + 71, 1860, 1861, 71, 71, 1863, 71, 71, 71, 71, + 1854, 71, 1869, 71, 71, 71, 1868, 1865, 1858, 1856, - 1869, 1861, 71, 1867, 1858, 1866, 71, 71, 1873, 1864, - 1865, 71, 1872, 71, 71, 1876, 1878, 71, 1877, 71, - 1875, 71, 1871, 1868, 71, 71, 71, 71, 1870, 71, - 1879, 1874, 71, 71, 71, 1880, 1884, 71, 1887, 1881, - 71, 1883, 1888, 1889, 71, 71, 1882, 71, 71, 71, - 1885, 1892, 71, 71, 71, 1891, 1897, 71, 1896, 71, - 1886, 71, 71, 71, 1890, 1894, 1901, 1893, 71, 1902, - 1904, 71, 71, 1898, 1895, 71, 1899, 1903, 1900, 1905, - 1908, 71, 71, 1906, 71, 71, 71, 71, 1907, 71, - 1915, 1912, 71, 71, 1918, 71, 71, 1917, 1910, 71, + 1866, 1859, 71, 71, 1862, 71, 71, 71, 1875, 71, + 1867, 71, 1864, 1872, 1873, 1870, 71, 71, 1871, 1879, + 1882, 1874, 1878, 71, 71, 71, 71, 1877, 1883, 1885, + 1881, 1884, 71, 71, 71, 1876, 1880, 71, 71, 71, + 71, 71, 1886, 1890, 71, 71, 1893, 1894, 1895, 71, + 1889, 71, 71, 71, 71, 71, 1898, 1887, 1888, 1891, + 71, 71, 71, 1903, 71, 71, 1897, 1902, 71, 1896, + 1892, 3095, 1899, 71, 71, 1900, 71, 1907, 71, 1908, + 1904, 71, 1901, 1905, 1906, 1910, 71, 1909, 1911, 71, + 1912, 71, 1915, 71, 71, 1916, 71, 71, 71, 71, - 1919, 71, 71, 1909, 1911, 1920, 71, 1913, 1916, 1914, - 71, 1921, 1925, 71, 1926, 71, 71, 1922, 1927, 1929, - 1930, 71, 1923, 1928, 71, 71, 71, 71, 1934, 71, - 1924, 71, 1932, 1933, 71, 1936, 71, 71, 1939, 71, - 1941, 1935, 1931, 71, 71, 71, 71, 71, 1937, 71, - 71, 71, 1947, 1946, 1945, 1942, 71, 1943, 1948, 71, - 3082, 1940, 1938, 1949, 71, 1951, 1944, 71, 71, 71, - 71, 71, 71, 1952, 1953, 1956, 1950, 1955, 1954, 71, - 71, 71, 1957, 71, 1959, 71, 71, 1963, 71, 71, - 71, 1962, 1958, 1960, 71, 1965, 71, 1961, 1964, 1966, + 1922, 71, 1913, 1919, 71, 71, 71, 1914, 1917, 1924, + 1925, 71, 71, 1926, 71, 1918, 1923, 1920, 1927, 1921, + 71, 71, 1932, 71, 1936, 1931, 1933, 71, 1934, 1928, + 71, 71, 1929, 1935, 71, 1937, 71, 1930, 71, 1941, + 71, 71, 71, 1939, 71, 71, 1943, 71, 1940, 1946, + 71, 71, 1942, 1948, 71, 71, 1944, 1938, 71, 71, + 71, 71, 1949, 71, 1953, 1952, 1950, 71, 1954, 1955, + 71, 3095, 1945, 1947, 1956, 71, 1958, 1951, 71, 71, + 71, 71, 71, 1957, 1959, 1960, 71, 1961, 1962, 71, + 71, 1963, 1964, 71, 1966, 71, 71, 71, 71, 1970, - 1967, 71, 71, 71, 71, 71, 71, 71, 1974, 1972, - 71, 1969, 1973, 71, 71, 71, 1968, 71, 71, 1976, - 71, 1970, 71, 1971, 1975, 71, 1979, 1982, 3082, 1978, - 71, 1977, 71, 1983, 1985, 1981, 71, 1980, 71, 1984, - 71, 1986, 71, 1987, 1989, 71, 71, 71, 71, 1988, - 1990, 1995, 71, 71, 1997, 71, 1991, 71, 1992, 1999, - 71, 1993, 1994, 71, 71, 1998, 71, 71, 2003, 1996, - 71, 71, 2000, 2001, 71, 2002, 71, 71, 71, 2004, - 71, 71, 71, 71, 71, 71, 2006, 2011, 2007, 2008, - 2015, 71, 2005, 71, 71, 2010, 2014, 2018, 2019, 71, + 71, 71, 1965, 1969, 71, 71, 1971, 1967, 1968, 1972, + 1973, 1974, 71, 71, 71, 71, 71, 71, 71, 1981, + 1979, 1975, 1976, 1980, 71, 71, 71, 71, 71, 1986, + 71, 71, 1977, 1983, 1978, 1982, 71, 71, 1990, 71, + 1987, 1985, 71, 1992, 1984, 1989, 71, 71, 1988, 1996, + 71, 1991, 1994, 71, 71, 71, 1997, 71, 2002, 1995, + 1993, 71, 71, 71, 71, 71, 2004, 71, 71, 2005, + 1998, 1999, 2000, 2006, 71, 2001, 2007, 71, 71, 2003, + 71, 2010, 71, 2009, 2008, 71, 71, 2011, 71, 71, + 71, 71, 71, 71, 2022, 71, 71, 2013, 2014, 2018, - 2012, 2016, 2013, 71, 2009, 2017, 71, 71, 2021, 2022, - 71, 71, 71, 71, 71, 2024, 71, 71, 2025, 2020, - 71, 2026, 2030, 2028, 2023, 71, 71, 2032, 2029, 2034, - 71, 2027, 71, 71, 71, 71, 2031, 2037, 2036, 2038, - 2033, 71, 71, 71, 2042, 71, 2039, 71, 71, 71, - 71, 71, 2043, 2045, 2048, 71, 71, 2049, 2035, 71, - 2040, 2044, 71, 2041, 2052, 2047, 71, 71, 2046, 2054, - 71, 2053, 71, 71, 2050, 2058, 71, 71, 2060, 71, - 71, 2056, 2051, 71, 2061, 71, 71, 71, 71, 2057, - 2055, 2059, 2063, 71, 2062, 2067, 2069, 2065, 2064, 71, + 2015, 71, 71, 2012, 2021, 2017, 71, 2026, 71, 2025, + 3095, 2020, 2019, 71, 2023, 2016, 71, 71, 2028, 2029, + 71, 2024, 71, 71, 71, 2031, 71, 71, 2027, 2032, + 71, 71, 2033, 2037, 2030, 2035, 71, 71, 2039, 2036, + 2041, 71, 2034, 71, 71, 71, 2044, 71, 71, 2038, + 2043, 2040, 2045, 2046, 71, 71, 2049, 71, 71, 71, + 71, 71, 71, 2050, 71, 2055, 71, 2052, 71, 2042, + 2051, 2059, 2047, 71, 2056, 2048, 2057, 71, 2054, 2053, + 71, 71, 71, 2061, 71, 2060, 71, 71, 2058, 2065, + 71, 71, 2067, 71, 2063, 71, 2066, 71, 2068, 71, - 2066, 2070, 71, 71, 71, 71, 71, 2068, 2071, 71, - 2074, 2075, 71, 71, 71, 2072, 2073, 2079, 71, 71, - 71, 71, 2076, 2078, 71, 71, 71, 71, 71, 71, - 71, 2080, 2077, 71, 2088, 2083, 2082, 2081, 2085, 2084, - 2086, 71, 2090, 71, 71, 2087, 2089, 71, 71, 2091, - 2093, 71, 2097, 2094, 2099, 71, 71, 71, 2101, 71, - 2098, 71, 2092, 2095, 71, 2096, 2100, 71, 2103, 3082, - 71, 2106, 2104, 2108, 2105, 2102, 2107, 71, 2109, 71, - 71, 71, 71, 2110, 71, 2113, 71, 71, 2114, 2111, - 2112, 2117, 2118, 71, 71, 2119, 71, 71, 2122, 71, + 2062, 71, 2064, 71, 2069, 2071, 2070, 71, 2072, 2074, + 2076, 2073, 71, 71, 2075, 2077, 71, 71, 71, 71, + 71, 71, 2079, 2085, 2078, 2082, 2083, 71, 71, 2080, + 2081, 71, 2084, 2087, 71, 71, 2086, 71, 71, 71, + 71, 71, 71, 71, 71, 2096, 2088, 2097, 71, 2089, + 71, 2090, 2091, 2093, 2092, 2094, 71, 2095, 71, 2098, + 71, 71, 2099, 2103, 2101, 71, 71, 2102, 2107, 71, + 71, 2109, 71, 71, 2106, 2100, 71, 2111, 2104, 2108, + 71, 2112, 2114, 2116, 2117, 2110, 2105, 2115, 71, 71, + 71, 71, 71, 2113, 2118, 71, 2121, 71, 71, 2122, - 71, 71, 2115, 2128, 71, 2123, 71, 2124, 2120, 2125, - 71, 71, 2127, 2116, 71, 2121, 2126, 71, 71, 71, - 71, 2129, 2132, 2130, 71, 71, 71, 71, 71, 2135, - 71, 71, 71, 2139, 2141, 71, 2142, 71, 71, 2131, - 2134, 71, 71, 2133, 2136, 71, 2137, 2138, 71, 71, - 2144, 71, 2143, 2140, 2146, 71, 2148, 2151, 71, 71, - 2147, 2149, 71, 2152, 2145, 71, 71, 2150, 71, 71, - 71, 71, 71, 2162, 71, 71, 71, 71, 2153, 2163, - 71, 2154, 71, 2159, 2161, 71, 2200, 2157, 2155, 2165, - 2156, 2158, 2170, 2160, 71, 2164, 71, 2167, 2166, 2168, + 2119, 71, 2126, 71, 71, 2127, 71, 71, 2130, 71, + 2125, 71, 71, 2123, 71, 2120, 2131, 2134, 2128, 71, + 2132, 2133, 71, 2135, 2124, 2129, 71, 71, 71, 71, + 2136, 71, 2138, 71, 2139, 71, 2140, 71, 71, 71, + 71, 71, 2143, 71, 2149, 71, 2147, 2137, 71, 71, + 2142, 71, 2150, 71, 2145, 71, 2141, 2144, 2152, 71, + 2146, 71, 71, 71, 2151, 2148, 2156, 2154, 2159, 71, + 71, 71, 71, 71, 71, 2157, 71, 2153, 2155, 2160, + 71, 2158, 71, 71, 71, 2170, 71, 71, 71, 2161, + 2171, 2162, 71, 71, 2167, 2165, 2163, 3095, 2164, 2169, - 71, 2169, 71, 71, 2172, 71, 71, 2171, 2175, 71, - 71, 2176, 71, 71, 2173, 2177, 71, 2174, 2181, 71, - 2182, 71, 71, 2184, 71, 71, 2186, 71, 2180, 71, - 71, 71, 2178, 2179, 71, 2188, 2189, 71, 2190, 71, - 71, 2183, 71, 2185, 2187, 2191, 71, 71, 2193, 2192, - 71, 2195, 2196, 71, 2198, 71, 71, 71, 2202, 2201, - 71, 2194, 2204, 71, 71, 71, 2197, 71, 2199, 2208, - 71, 71, 71, 2203, 71, 71, 2212, 2213, 71, 2205, - 2206, 71, 71, 2207, 71, 71, 71, 2209, 71, 2211, - 2215, 2218, 71, 2220, 2210, 2219, 71, 2216, 71, 2217, + 71, 2166, 2173, 71, 2168, 2172, 2174, 71, 2175, 2176, + 71, 2177, 71, 71, 2180, 2178, 2179, 71, 2183, 71, + 71, 71, 71, 71, 71, 2184, 2181, 2185, 71, 2182, + 2189, 71, 2190, 71, 2192, 71, 2188, 71, 2194, 71, + 71, 2186, 71, 2187, 71, 2196, 71, 2191, 2197, 71, + 2198, 71, 71, 71, 71, 2193, 71, 2195, 2199, 2203, + 2201, 2200, 2204, 71, 2206, 71, 71, 71, 71, 71, + 2210, 2209, 2202, 2208, 71, 2205, 2212, 71, 71, 71, + 2216, 71, 71, 71, 2207, 2211, 71, 71, 2221, 71, + 71, 2220, 71, 2213, 2214, 71, 71, 2215, 2226, 71, - 2214, 71, 2221, 71, 2225, 71, 71, 2227, 71, 71, - 71, 2228, 71, 71, 2222, 2226, 2223, 2232, 2233, 71, - 71, 2231, 71, 71, 71, 71, 2229, 2224, 2230, 2237, - 2239, 71, 2235, 2242, 71, 2234, 2240, 2244, 2241, 71, - 71, 2236, 71, 71, 71, 2245, 71, 2246, 2238, 71, - 71, 71, 2249, 71, 71, 2243, 71, 71, 3082, 2248, - 2250, 2255, 2251, 2252, 2254, 2253, 2256, 71, 71, 2247, - 71, 71, 71, 2261, 2257, 71, 2260, 2258, 71, 71, - 2259, 71, 2262, 71, 2266, 2268, 71, 71, 71, 71, - 2263, 71, 71, 71, 71, 2279, 71, 2270, 2264, 2267, + 2223, 2219, 2217, 71, 71, 71, 2218, 2224, 71, 2222, + 71, 2225, 2228, 71, 71, 2233, 71, 71, 2229, 2235, + 71, 71, 71, 2227, 71, 2234, 2230, 2236, 2231, 2239, + 71, 71, 2240, 71, 71, 71, 2241, 71, 2242, 2232, + 71, 71, 2237, 2244, 2238, 2246, 2243, 71, 2247, 71, + 71, 2251, 2248, 2253, 2249, 2245, 2250, 71, 2252, 71, + 71, 71, 71, 71, 71, 2254, 2255, 2258, 71, 71, + 71, 2259, 71, 71, 2264, 2256, 2257, 2260, 2261, 2262, + 71, 2265, 71, 71, 71, 71, 2263, 71, 2266, 71, + 2269, 2268, 2270, 2267, 71, 2271, 71, 71, 71, 2275, - 2265, 2271, 2269, 71, 2274, 71, 2275, 2272, 2273, 71, - 2276, 71, 2280, 71, 2277, 2281, 71, 71, 2283, 2284, - 2282, 2278, 2285, 2286, 71, 71, 71, 71, 71, 71, - 2288, 71, 71, 71, 2292, 2293, 71, 71, 71, 2289, - 2287, 71, 2295, 71, 3082, 2290, 71, 2296, 71, 2297, - 2294, 2291, 2298, 71, 71, 71, 71, 2300, 2301, 2299, - 2302, 2303, 71, 71, 71, 71, 71, 71, 2304, 2305, - 71, 2309, 71, 2312, 71, 71, 71, 2311, 71, 71, - 2308, 2313, 71, 2306, 2318, 2307, 71, 2316, 2319, 2317, - 2310, 71, 2314, 71, 2315, 71, 71, 2321, 71, 71, + 2277, 71, 71, 2272, 71, 2273, 2279, 2274, 71, 71, + 71, 71, 2276, 71, 2284, 71, 2280, 2278, 2285, 71, + 3095, 2283, 2288, 71, 2281, 2282, 71, 2289, 2290, 71, + 71, 2287, 71, 2291, 2293, 2286, 2294, 2292, 2295, 71, + 71, 71, 71, 71, 2297, 71, 71, 71, 71, 2301, + 2302, 71, 71, 71, 3095, 2296, 71, 2298, 2304, 71, + 2299, 71, 71, 2305, 2306, 2303, 2300, 2307, 71, 71, + 71, 2309, 2310, 71, 2308, 2312, 71, 2311, 71, 71, + 71, 71, 71, 2313, 2314, 71, 2318, 71, 2321, 71, + 71, 71, 2320, 71, 71, 2317, 2322, 71, 2315, 2327, - 2324, 2322, 71, 2326, 71, 2320, 2325, 2328, 71, 71, - 71, 71, 2330, 71, 71, 71, 2327, 71, 71, 2323, - 2329, 71, 2334, 2338, 71, 2340, 2336, 71, 2331, 2332, - 2333, 71, 2337, 2339, 71, 71, 2341, 71, 71, 71, - 71, 71, 71, 2349, 2335, 2344, 2347, 71, 71, 71, - 2348, 71, 71, 2342, 2346, 2352, 71, 71, 2345, 71, - 2343, 71, 2353, 71, 2356, 71, 2350, 2351, 2357, 71, - 2354, 71, 71, 71, 2360, 2355, 2358, 2361, 71, 2359, - 2362, 71, 71, 71, 71, 71, 3082, 2363, 2366, 71, - 2368, 2369, 71, 71, 2365, 2364, 2370, 71, 2371, 71, + 2316, 71, 2325, 2328, 2326, 2319, 71, 2323, 71, 2324, + 71, 71, 2330, 71, 71, 2333, 2331, 71, 2335, 71, + 2329, 2334, 2337, 71, 71, 71, 71, 2339, 71, 71, + 71, 2336, 71, 71, 2332, 2338, 71, 2343, 2347, 71, + 2349, 2345, 71, 2340, 2341, 2342, 71, 2346, 2348, 71, + 71, 2350, 71, 71, 71, 71, 71, 71, 2358, 2344, + 2353, 2356, 71, 71, 71, 2357, 71, 71, 2351, 2355, + 2361, 71, 71, 2354, 71, 2352, 71, 2362, 71, 2365, + 71, 2359, 2360, 2366, 71, 2363, 71, 71, 71, 2369, + 2364, 2367, 2370, 71, 2368, 2371, 71, 71, 71, 71, - 2372, 71, 71, 71, 2367, 2373, 71, 2374, 2375, 71, - 2376, 71, 2377, 71, 2378, 71, 2382, 71, 2379, 71, - 2384, 71, 2385, 71, 71, 71, 71, 71, 71, 71, - 71, 2381, 71, 2380, 2388, 2386, 71, 2387, 2383, 71, - 2389, 2391, 2394, 71, 71, 71, 2390, 71, 2395, 2392, - 2393, 71, 71, 2401, 71, 71, 71, 71, 2396, 71, - 2398, 71, 71, 2402, 2397, 2400, 71, 2410, 3082, 2399, - 2403, 2404, 71, 71, 71, 2405, 2408, 2411, 2412, 71, - 2409, 2406, 2413, 71, 2407, 71, 2414, 71, 2415, 71, - 2416, 71, 2417, 71, 71, 71, 71, 71, 71, 71, + 71, 71, 2372, 2375, 2379, 71, 2378, 2380, 71, 2374, + 2373, 2381, 71, 2382, 71, 71, 71, 71, 71, 2376, + 2377, 71, 2385, 71, 2386, 71, 2387, 2383, 71, 71, + 2388, 2392, 71, 2389, 2384, 71, 2394, 71, 2395, 71, + 71, 71, 71, 71, 71, 2391, 71, 71, 2390, 2398, + 71, 2396, 2401, 2397, 2393, 2399, 2404, 71, 71, 71, + 71, 71, 71, 71, 2400, 71, 2402, 2405, 71, 2411, + 2403, 71, 71, 71, 2408, 71, 71, 2410, 71, 71, + 2407, 2412, 2418, 2415, 71, 2406, 2409, 3095, 2413, 2420, + 2414, 71, 2419, 2416, 2422, 71, 2421, 2423, 71, 2417, - 71, 71, 2418, 2426, 71, 71, 71, 2424, 71, 2430, - 2431, 71, 2419, 2421, 2420, 71, 71, 2423, 2422, 2425, - 2427, 71, 2428, 2429, 2433, 2434, 71, 71, 2432, 71, - 2435, 2436, 71, 71, 2437, 71, 2439, 71, 71, 71, - 2445, 71, 2446, 71, 2447, 2438, 71, 71, 2440, 71, - 71, 71, 71, 2441, 2443, 2442, 2451, 71, 2444, 71, - 71, 2455, 2449, 71, 2448, 2454, 2456, 71, 2450, 71, - 71, 2457, 2452, 2458, 71, 71, 71, 2453, 71, 2460, - 71, 71, 2459, 71, 71, 2464, 71, 71, 2462, 2468, - 2469, 71, 71, 71, 2461, 2472, 71, 2473, 2463, 71, + 71, 2424, 71, 2425, 71, 2426, 71, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 2436, 2428, 71, + 71, 71, 2434, 3095, 2427, 71, 2440, 2429, 2431, 2430, + 2441, 71, 2433, 2432, 2435, 71, 2437, 2438, 2439, 2444, + 71, 71, 71, 2442, 2443, 2446, 71, 71, 71, 71, + 2445, 71, 71, 2457, 71, 2449, 71, 2455, 71, 71, + 2447, 2456, 71, 71, 2450, 2448, 71, 71, 71, 2451, + 2452, 71, 2453, 2454, 71, 71, 2461, 71, 71, 2465, + 2464, 2458, 2459, 2466, 71, 2460, 71, 71, 2462, 2467, + 2468, 71, 71, 71, 2463, 2470, 71, 2469, 71, 71, - 71, 2465, 2466, 71, 2467, 2471, 71, 2470, 2476, 71, - 2475, 71, 71, 2477, 2474, 2481, 71, 71, 2478, 71, - 71, 2485, 71, 71, 2484, 2487, 71, 71, 2483, 2482, - 71, 2479, 2480, 71, 71, 2488, 2489, 2492, 71, 71, - 2493, 71, 2486, 2495, 71, 71, 2491, 71, 71, 2490, - 71, 2500, 71, 71, 2502, 71, 71, 2498, 2496, 2499, - 2497, 2503, 71, 2494, 71, 71, 71, 2504, 2501, 71, - 2506, 71, 71, 71, 2507, 71, 71, 71, 2505, 71, - 2509, 2510, 2512, 2517, 2513, 2515, 71, 2511, 2508, 71, - 2514, 2516, 71, 71, 2518, 71, 2521, 71, 71, 71, + 71, 71, 71, 2474, 71, 2472, 71, 2478, 2479, 71, + 71, 2471, 2482, 71, 2483, 2480, 2473, 71, 71, 2475, + 2476, 71, 2477, 71, 2481, 2485, 2486, 71, 71, 71, + 71, 2487, 2484, 2491, 71, 71, 71, 71, 2488, 71, + 2494, 71, 2492, 71, 2493, 2495, 71, 71, 2489, 2490, + 2497, 71, 2498, 71, 71, 2500, 2496, 2503, 71, 71, + 2504, 2502, 2499, 2506, 71, 2505, 2501, 71, 71, 71, + 71, 2511, 71, 71, 2513, 71, 71, 71, 2509, 2510, + 2507, 2508, 2514, 71, 71, 71, 71, 71, 2512, 2515, + 2516, 2517, 71, 2518, 71, 71, 2520, 71, 71, 71, - 2523, 71, 71, 2522, 2526, 71, 2525, 2527, 71, 71, - 3082, 2519, 2524, 2520, 2529, 71, 71, 71, 2531, 2530, - 71, 71, 2528, 2532, 71, 2533, 2534, 2535, 71, 71, - 71, 71, 2536, 71, 2537, 71, 2542, 71, 2541, 2538, - 71, 2543, 71, 2540, 71, 2544, 2539, 71, 71, 2545, - 71, 71, 71, 2546, 2547, 2549, 2548, 2550, 71, 71, - 71, 71, 71, 2555, 71, 71, 71, 71, 71, 2553, - 2554, 71, 2552, 2556, 2560, 71, 2551, 2564, 71, 71, - 71, 71, 2563, 71, 2557, 71, 2558, 2559, 2562, 2568, - 2561, 2569, 71, 71, 2571, 2572, 2566, 3082, 2573, 2565, + 2521, 71, 2519, 2523, 2524, 2526, 71, 2527, 71, 2522, + 2525, 71, 71, 71, 2532, 2530, 71, 2529, 2528, 2531, + 71, 2533, 71, 2534, 71, 2537, 71, 71, 2535, 2536, + 2538, 71, 2540, 71, 71, 71, 2542, 2541, 71, 71, + 2539, 2543, 71, 2544, 2545, 2546, 71, 71, 71, 71, + 2547, 71, 2548, 71, 2553, 71, 2552, 2549, 71, 2554, + 71, 2551, 71, 2555, 2550, 71, 71, 2556, 71, 71, + 71, 2557, 2558, 2560, 2559, 2561, 71, 71, 71, 71, + 71, 2566, 71, 71, 71, 71, 71, 2564, 2565, 71, + 2563, 2567, 2571, 71, 2562, 2575, 71, 71, 71, 71, - 71, 71, 71, 2567, 71, 2574, 71, 71, 71, 71, - 2575, 71, 2576, 71, 71, 2579, 71, 2577, 2570, 71, - 2582, 71, 2578, 2584, 71, 2585, 71, 2580, 71, 2581, - 2586, 71, 2587, 71, 2583, 2589, 71, 71, 2588, 71, - 2593, 2590, 2591, 71, 71, 2594, 71, 71, 2596, 2597, - 71, 2592, 2598, 71, 71, 71, 71, 2599, 2603, 71, - 71, 2604, 2601, 2595, 2605, 71, 71, 71, 2600, 2607, - 71, 71, 71, 2611, 2612, 71, 2602, 71, 71, 71, - 2608, 2606, 2613, 71, 71, 2614, 2610, 71, 2620, 2609, - 2615, 71, 71, 2619, 71, 71, 2623, 71, 71, 2622, + 2574, 71, 2568, 71, 2569, 2570, 2573, 2579, 2572, 2580, + 71, 71, 2582, 2583, 2577, 3095, 2584, 2576, 71, 71, + 71, 2578, 71, 2585, 71, 71, 71, 71, 2586, 71, + 2587, 71, 71, 2590, 71, 2588, 2581, 71, 2593, 71, + 2589, 2595, 71, 2596, 71, 2591, 71, 2592, 2597, 71, + 2598, 71, 2594, 2600, 71, 71, 2599, 71, 2604, 2601, + 2602, 71, 71, 2605, 71, 71, 2608, 2609, 71, 2603, + 2610, 71, 71, 2606, 71, 2611, 71, 71, 2615, 71, + 71, 2616, 2607, 2617, 71, 71, 71, 2612, 2619, 71, + 71, 71, 2623, 71, 2613, 2624, 71, 2614, 71, 2620, - 2616, 71, 71, 2617, 2618, 71, 2624, 71, 2626, 71, - 2625, 71, 2628, 71, 71, 71, 2631, 2621, 2635, 71, - 71, 71, 71, 2627, 2629, 2630, 71, 71, 71, 2634, - 2637, 2632, 71, 71, 2633, 2636, 2639, 2642, 2638, 2640, - 2641, 3082, 2643, 71, 2650, 2644, 2645, 71, 71, 2646, - 71, 2647, 71, 2648, 71, 2649, 71, 71, 71, 2653, - 71, 2651, 71, 2657, 71, 71, 71, 2654, 2658, 2660, - 71, 71, 2662, 71, 71, 2664, 71, 2652, 2661, 2663, - 2655, 71, 2656, 71, 2659, 71, 71, 2669, 71, 71, - 2665, 71, 2666, 2670, 2667, 71, 2673, 71, 71, 71, + 2618, 71, 71, 71, 2626, 2622, 2625, 71, 2621, 2627, + 71, 2632, 71, 2631, 71, 71, 2628, 71, 2634, 2635, + 71, 2629, 71, 2630, 71, 71, 71, 2636, 2638, 2640, + 71, 71, 2637, 71, 71, 71, 2643, 2633, 2647, 71, + 2639, 71, 71, 71, 71, 2649, 71, 2641, 2642, 2646, + 71, 2644, 71, 2650, 2645, 2648, 2654, 2651, 2653, 2657, + 71, 2655, 71, 2652, 71, 2656, 71, 2658, 71, 2659, + 71, 2660, 71, 2661, 71, 71, 71, 71, 2665, 2663, + 2662, 71, 2669, 71, 71, 2666, 71, 2670, 2672, 71, + 71, 71, 2674, 71, 71, 2664, 71, 2667, 2673, 2675, - 2671, 2674, 71, 2677, 2668, 71, 2676, 71, 2679, 71, - 2672, 2675, 2678, 2680, 71, 71, 71, 71, 71, 2681, - 71, 71, 71, 2689, 71, 71, 2684, 71, 71, 71, - 2685, 2687, 2692, 2693, 2683, 71, 2690, 71, 2694, 71, - 2682, 2688, 71, 71, 2695, 2686, 2691, 2696, 71, 2697, - 2699, 71, 2698, 2700, 71, 2701, 71, 71, 71, 2703, - 71, 2706, 2704, 2705, 71, 2707, 2702, 71, 71, 2708, - 2709, 71, 71, 71, 71, 2714, 71, 71, 2712, 2716, - 71, 71, 2718, 71, 71, 71, 2710, 2717, 71, 2719, - 71, 2720, 2713, 2711, 71, 2724, 71, 71, 71, 71, + 71, 2668, 2676, 71, 2671, 2677, 71, 71, 2680, 2678, + 2681, 71, 71, 71, 71, 2679, 2682, 71, 2685, 71, + 2687, 71, 2683, 2686, 71, 2689, 2688, 71, 71, 2684, + 2691, 71, 2690, 2692, 71, 71, 2696, 71, 71, 71, + 71, 71, 2693, 71, 2694, 71, 2702, 2697, 71, 71, + 2700, 2698, 71, 2695, 2705, 71, 71, 2703, 71, 2707, + 2706, 71, 71, 2701, 71, 2699, 71, 2709, 2779, 2704, + 2708, 71, 2710, 2712, 71, 2711, 2713, 71, 2714, 71, + 71, 71, 2719, 71, 2716, 2717, 2718, 71, 71, 2715, + 71, 71, 2720, 2722, 71, 2721, 71, 71, 2727, 71, - 71, 2715, 71, 2722, 2721, 71, 2727, 71, 2728, 71, - 2725, 2726, 71, 71, 2723, 2731, 2729, 2732, 2734, 71, - 2736, 71, 2737, 71, 2730, 71, 2739, 71, 71, 71, - 71, 71, 2735, 71, 71, 2733, 2744, 71, 2743, 71, - 71, 2748, 71, 71, 2740, 2741, 2738, 2742, 2751, 71, - 2745, 71, 71, 2753, 71, 71, 2749, 2746, 2747, 71, - 2754, 71, 2750, 2756, 71, 2757, 71, 2759, 71, 71, - 71, 2752, 71, 2765, 2755, 71, 2764, 71, 3082, 2762, - 2761, 2758, 71, 2768, 71, 71, 71, 2760, 2769, 2766, - 71, 2770, 2763, 71, 2773, 2767, 2774, 71, 2771, 71, + 71, 2723, 2725, 71, 71, 2729, 71, 2730, 71, 71, + 71, 71, 2724, 2731, 2726, 2732, 71, 2733, 71, 2734, + 2737, 71, 71, 71, 2728, 71, 2735, 2740, 71, 2736, + 71, 2738, 71, 71, 2741, 2739, 71, 71, 2745, 71, + 2744, 2747, 71, 71, 2742, 2749, 71, 2750, 71, 2743, + 2752, 71, 71, 71, 2757, 71, 2748, 71, 71, 2753, + 2751, 71, 2746, 2756, 71, 71, 2761, 71, 2754, 2755, + 71, 2764, 71, 71, 2766, 71, 71, 2758, 2769, 71, + 71, 2762, 71, 2760, 2759, 2770, 71, 2767, 71, 2763, + 2772, 71, 71, 2765, 71, 71, 2771, 2768, 2777, 2774, - 71, 2776, 2775, 71, 71, 71, 71, 71, 2781, 2778, - 2779, 71, 71, 2772, 71, 2784, 71, 71, 71, 71, - 71, 2777, 2789, 71, 2785, 2780, 71, 71, 2782, 2783, - 2792, 71, 2788, 2793, 71, 2786, 2791, 71, 71, 2790, - 2795, 71, 2794, 2787, 2797, 71, 2796, 2798, 71, 2799, - 71, 71, 2801, 71, 71, 71, 2800, 2802, 71, 71, - 2806, 2807, 71, 71, 71, 71, 2811, 71, 2812, 71, - 71, 71, 71, 2813, 2810, 2849, 2803, 2804, 2808, 71, - 2805, 71, 71, 2809, 2817, 71, 2816, 2818, 71, 71, - 2814, 2815, 2821, 71, 2819, 71, 2820, 71, 71, 2824, + 71, 2775, 2781, 71, 71, 71, 71, 2783, 2782, 71, + 2773, 71, 2786, 3095, 2776, 2780, 2787, 71, 71, 2778, + 71, 2784, 2789, 2788, 71, 71, 71, 71, 71, 2794, + 2791, 2785, 2792, 71, 71, 71, 2797, 71, 71, 71, + 71, 71, 2790, 2802, 71, 2793, 2798, 71, 71, 71, + 2795, 2796, 2807, 2801, 2805, 71, 2799, 2804, 2806, 71, + 2803, 71, 71, 2808, 2800, 71, 2809, 2810, 71, 2811, + 71, 2812, 71, 71, 2814, 71, 71, 71, 2813, 71, + 2819, 2815, 2820, 71, 71, 71, 71, 2816, 2824, 71, + 2825, 71, 71, 3095, 2823, 2826, 71, 71, 2817, 2818, - 71, 71, 2825, 2823, 71, 2822, 71, 71, 71, 71, - 71, 2828, 71, 71, 2830, 71, 71, 2831, 71, 2829, - 71, 2826, 71, 71, 2827, 71, 71, 2840, 2841, 2832, - 71, 2836, 2833, 2834, 2835, 2837, 2838, 2843, 71, 71, - 3082, 2839, 2906, 71, 2844, 2842, 2845, 2847, 71, 2848, - 71, 2846, 2850, 71, 2851, 71, 2852, 2853, 71, 71, - 2854, 2855, 2858, 71, 2856, 2857, 71, 71, 2859, 71, - 71, 71, 71, 71, 2865, 71, 71, 71, 2864, 71, - 71, 2868, 71, 3082, 2860, 2861, 2867, 71, 71, 2869, - 2862, 71, 2863, 71, 2873, 2874, 71, 2870, 2875, 71, + 2821, 71, 2829, 71, 2822, 2830, 71, 2831, 71, 71, + 2834, 71, 2827, 71, 2832, 2828, 71, 2833, 2837, 71, + 71, 2836, 71, 2835, 71, 2838, 71, 71, 71, 71, + 71, 2841, 71, 71, 2843, 71, 71, 2844, 71, 2842, + 71, 71, 2839, 71, 2840, 71, 2853, 71, 2854, 2845, + 3095, 2849, 2846, 2847, 2848, 2850, 2851, 2856, 71, 71, + 3095, 2852, 71, 71, 2857, 2855, 2862, 2858, 2860, 71, + 71, 2859, 2861, 71, 2863, 71, 2864, 71, 2865, 2866, + 71, 71, 2867, 2868, 2871, 71, 2869, 2870, 2873, 71, + 2872, 71, 71, 71, 71, 71, 2878, 71, 71, 71, - 2872, 2866, 71, 2876, 71, 2871, 2880, 2877, 2882, 71, - 71, 2881, 71, 2878, 71, 71, 2879, 71, 71, 71, - 2889, 71, 2886, 2887, 2890, 2884, 71, 2892, 71, 71, - 71, 71, 2891, 3082, 2883, 2938, 2885, 71, 2888, 2893, - 71, 2912, 2894, 2895, 71, 2896, 71, 2897, 71, 2898, - 71, 2899, 71, 2900, 71, 2901, 71, 2902, 71, 71, - 2904, 71, 71, 71, 71, 71, 2909, 71, 2903, 71, - 71, 2905, 71, 2913, 2915, 71, 71, 71, 71, 2910, - 2917, 71, 2911, 2907, 2908, 2914, 71, 2919, 71, 2922, - 71, 2921, 71, 71, 2916, 71, 71, 71, 2924, 2920, + 2877, 71, 71, 2881, 71, 71, 2874, 71, 2880, 71, + 2890, 2882, 71, 2875, 2876, 71, 2886, 71, 2885, 2883, + 2887, 71, 71, 2879, 2893, 2884, 2888, 71, 71, 2894, + 71, 2891, 2889, 2895, 2892, 71, 71, 2896, 71, 71, + 71, 2899, 2903, 2897, 71, 2900, 2902, 71, 71, 3095, + 2904, 2905, 71, 2906, 71, 71, 2898, 2901, 2908, 71, + 2907, 2909, 71, 2910, 71, 2911, 71, 2912, 71, 2913, + 71, 2914, 71, 2915, 71, 71, 2917, 71, 71, 71, + 71, 71, 71, 71, 2916, 2922, 71, 2918, 71, 71, + 71, 2919, 71, 2926, 71, 2925, 2923, 2928, 71, 71, - 71, 71, 71, 71, 2918, 71, 2923, 2928, 2931, 2925, - 71, 2929, 71, 2927, 2926, 2930, 2932, 2933, 71, 2934, - 71, 2935, 71, 71, 71, 71, 2940, 71, 71, 71, - 2944, 71, 2937, 2936, 2943, 71, 2946, 71, 2942, 71, - 71, 71, 71, 71, 2939, 71, 2945, 71, 2941, 71, - 2947, 71, 2953, 71, 3082, 71, 2950, 71, 2948, 2949, - 2952, 2954, 2957, 2960, 71, 71, 71, 2951, 2955, 2958, - 71, 2956, 71, 2959, 2961, 2962, 71, 71, 2963, 2964, - 71, 2965, 71, 71, 71, 2966, 2968, 71, 71, 2969, - 2967, 71, 2970, 2973, 71, 71, 71, 2971, 71, 71, + 2920, 2921, 2924, 2927, 71, 71, 2932, 2930, 2929, 71, + 2935, 71, 2934, 71, 71, 71, 71, 2933, 2937, 71, + 2931, 71, 71, 71, 71, 2936, 71, 2941, 71, 2944, + 71, 2940, 2942, 2938, 2951, 2945, 71, 2939, 71, 2943, + 2946, 71, 2947, 71, 2948, 71, 71, 2950, 71, 71, + 71, 2949, 71, 71, 2956, 2957, 2952, 71, 2959, 71, + 2953, 2955, 71, 71, 71, 71, 71, 2958, 71, 71, + 71, 2954, 2960, 71, 71, 2966, 71, 2973, 71, 2963, + 3095, 2961, 2962, 2965, 71, 2967, 71, 71, 2971, 2969, + 2964, 2968, 2970, 2974, 2975, 71, 2972, 71, 2976, 2977, - 2976, 2978, 71, 2972, 71, 2974, 2975, 2981, 71, 71, - 71, 2984, 71, 2979, 71, 2985, 2977, 71, 71, 71, - 2988, 2989, 71, 2980, 2982, 2986, 71, 71, 2983, 71, - 71, 71, 71, 2990, 71, 2991, 2993, 2987, 2994, 71, - 2995, 71, 71, 71, 71, 71, 71, 2999, 2992, 3001, - 71, 2996, 2997, 71, 3000, 71, 2998, 71, 71, 3003, - 3006, 71, 3007, 3004, 3002, 3008, 71, 71, 3012, 71, - 71, 3014, 3005, 71, 3015, 3013, 71, 71, 3009, 3010, - 71, 3016, 71, 71, 3020, 3017, 3011, 3018, 3021, 71, - 71, 71, 3023, 71, 71, 71, 3022, 71, 3024, 71, + 71, 2978, 71, 71, 71, 2979, 71, 2981, 71, 71, + 71, 2982, 2986, 2983, 71, 71, 71, 71, 71, 2991, + 71, 2989, 71, 2980, 71, 2985, 71, 2988, 2987, 2994, + 71, 71, 2997, 71, 2984, 71, 2998, 2990, 71, 2992, + 71, 2993, 71, 3001, 2996, 3002, 2995, 71, 2999, 71, + 71, 71, 71, 71, 3007, 71, 3003, 3000, 3006, 71, + 3004, 3008, 71, 71, 71, 71, 71, 71, 3012, 3005, + 71, 3014, 71, 3009, 71, 71, 71, 3011, 71, 3010, + 3019, 3020, 71, 3016, 71, 3013, 3015, 3017, 3021, 71, + 71, 3018, 3025, 71, 71, 3026, 3027, 71, 3022, 3029, - 71, 3029, 3019, 71, 3026, 71, 3032, 71, 71, 3033, - 71, 71, 71, 71, 3025, 71, 71, 3036, 3027, 3028, - 3034, 3031, 3030, 3035, 71, 3040, 71, 71, 71, 3039, - 71, 3041, 3037, 71, 3038, 71, 3044, 71, 3046, 71, - 3042, 71, 3047, 71, 3048, 3051, 71, 71, 71, 3045, - 3049, 71, 3050, 3052, 3043, 71, 71, 3053, 3054, 71, - 71, 3060, 71, 3055, 71, 71, 3057, 3056, 71, 3058, - 3059, 71, 71, 3062, 71, 71, 3063, 71, 3066, 3067, - 71, 71, 71, 3070, 3061, 3071, 71, 3082, 71, 3073, - 71, 3064, 71, 3065, 3068, 3072, 3074, 71, 71, 3075, + 3023, 71, 71, 3024, 71, 3028, 3030, 71, 3033, 3034, + 71, 71, 3031, 71, 71, 3037, 3032, 71, 3035, 3036, + 71, 71, 71, 71, 3042, 71, 71, 71, 3039, 71, + 71, 71, 3045, 3046, 71, 71, 3038, 71, 71, 3044, + 3049, 3040, 3041, 71, 3043, 71, 3047, 71, 3050, 3048, + 71, 3053, 3054, 3056, 71, 3057, 3052, 3051, 3055, 71, + 71, 3059, 71, 3060, 71, 71, 71, 3064, 71, 3061, + 71, 71, 3062, 3066, 71, 3065, 3067, 71, 3058, 71, + 71, 3068, 71, 71, 71, 3063, 3069, 3071, 3073, 71, + 71, 71, 71, 71, 71, 3075, 3076, 71, 3079, 3070, - 3069, 71, 71, 3076, 71, 3082, 3077, 3080, 71, 3081, - 71, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3078, 3082, 3079, 43, 43, 43, 43, 43, 43, - 43, 48, 48, 48, 48, 48, 48, 48, 53, 53, - 53, 53, 53, 53, 53, 59, 59, 59, 59, 59, - 59, 59, 64, 64, 64, 64, 64, 64, 64, 74, - 74, 3082, 74, 74, 74, 74, 142, 142, 3082, 3082, - 3082, 142, 142, 144, 144, 3082, 3082, 144, 3082, 144, - 146, 3082, 3082, 3082, 3082, 3082, 146, 149, 149, 3082, - 3082, 3082, 149, 149, 151, 3082, 3082, 3082, 3082, 3082, + 3080, 71, 3072, 3074, 71, 71, 3083, 3084, 71, 71, + 71, 3077, 3078, 3081, 3086, 71, 3085, 3087, 71, 71, + 71, 71, 71, 3082, 3095, 3089, 3088, 3090, 3095, 3091, + 3093, 71, 3094, 71, 3095, 3095, 3095, 3095, 3095, 3095, + 3092, 43, 43, 43, 43, 43, 43, 43, 48, 48, + 48, 48, 48, 48, 48, 53, 53, 53, 53, 53, + 53, 53, 59, 59, 59, 59, 59, 59, 59, 64, + 64, 64, 64, 64, 64, 64, 74, 74, 3095, 74, + 74, 74, 74, 142, 142, 3095, 3095, 3095, 142, 142, + 144, 144, 3095, 3095, 144, 3095, 144, 146, 3095, 3095, - 151, 153, 153, 3082, 153, 153, 153, 153, 75, 75, - 3082, 75, 75, 75, 75, 13, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3095, 3095, 3095, 146, 149, 149, 3095, 3095, 3095, 149, + 149, 151, 3095, 3095, 3095, 3095, 3095, 151, 153, 153, + 3095, 153, 153, 153, 153, 75, 75, 3095, 75, 75, + 75, 75, 13, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095 } ; -static const flex_int16_t yy_chk[6057] = +static const flex_int16_t yy_chk[6074] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2116,7 +2122,7 @@ static const flex_int16_t yy_chk[6057] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3088, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3101, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, @@ -2125,7 +2131,7 @@ static const flex_int16_t yy_chk[6057] = 26, 21, 23, 89, 12, 23, 27, 27, 47, 47, 21, 24, 42, 90, 26, 27, 24, 28, 34, 52, 24, 28, 52, 24, 28, 24, 24, 42, 32, 32, - 1018, 28, 90, 28, 33, 33, 24, 32, 72, 33, + 1020, 28, 90, 28, 33, 33, 24, 32, 72, 33, 69, 35, 72, 32, 63, 63, 35, 32, 77, 80, 35, 77, 37, 37, 69, 33, 35, 37, 230, 35, 230, 80, 39, 39, 38, 39, 35, 37, 37, 38, @@ -2262,518 +2268,520 @@ static const flex_int16_t yy_chk[6057] = 606, 598, 603, 605, 605, 602, 608, 606, 607, 599, 599, 607, 608, 601, 610, 609, 611, 613, 604, 610, - 615, 611, 611, 612, 612, 617, 607, 609, 614, 616, - 614, 616, 618, 619, 620, 621, 623, 624, 622, 615, - 623, 625, 613, 617, 622, 626, 624, 627, 628, 629, - 618, 619, 631, 620, 630, 621, 625, 632, 631, 634, - 626, 629, 633, 635, 636, 627, 637, 628, 636, 630, - 638, 632, 639, 640, 633, 641, 642, 646, 634, 643, - 43, 642, 635, 648, 637, 645, 638, 644, 644, 645, - 639, 640, 640, 643, 641, 647, 646, 648, 649, 650, - 651, 652, 653, 649, 655, 654, 647, 656, 657, 653, - 654, 655, 656, 657, 652, 650, 658, 659, 660, 651, + 615, 611, 611, 612, 612, 617, 607, 609, 614, 610, + 614, 616, 618, 616, 619, 620, 621, 623, 622, 615, + 624, 623, 613, 617, 622, 625, 626, 627, 628, 624, + 618, 629, 619, 630, 620, 632, 621, 634, 631, 633, + 625, 626, 635, 629, 631, 627, 636, 628, 630, 632, + 636, 633, 637, 638, 639, 640, 634, 641, 642, 644, + 644, 635, 645, 642, 643, 646, 645, 648, 647, 638, + 637, 650, 639, 640, 640, 649, 641, 651, 643, 647, + 649, 648, 652, 653, 646, 655, 654, 650, 656, 657, + 653, 654, 655, 656, 657, 652, 651, 658, 659, 660, - 662, 661, 666, 664, 659, 663, 666, 660, 664, 662, - 665, 667, 668, 665, 658, 661, 669, 663, 670, 671, - 677, 668, 672, 672, 675, 667, 673, 673, 674, 674, - 678, 669, 670, 675, 679, 673, 678, 680, 681, 677, - 671, 680, 682, 683, 685, 684, 686, 687, 688, 689, - 681, 684, 685, 686, 679, 692, 699, 698, 695, 703, - 702, 683, 699, 703, 707, 687, 698, 682, 709, 689, - 692, 701, 14, 688, 690, 695, 702, 701, 706, 690, - 704, 704, 707, 690, 705, 705, 690, 708, 709, 706, - 712, 710, 713, 690, 690, 712, 690, 710, 714, 715, + 661, 662, 664, 665, 663, 659, 665, 664, 660, 666, + 662, 667, 668, 666, 661, 658, 663, 669, 671, 670, + 682, 668, 672, 672, 677, 667, 673, 673, 674, 674, + 678, 675, 669, 670, 679, 673, 678, 680, 681, 671, + 675, 680, 683, 677, 686, 682, 684, 685, 687, 688, + 681, 686, 684, 689, 679, 685, 692, 699, 698, 695, + 683, 702, 701, 699, 43, 703, 687, 698, 701, 703, + 707, 692, 706, 689, 688, 690, 695, 702, 704, 704, + 690, 705, 705, 706, 690, 708, 709, 690, 707, 713, + 710, 715, 14, 712, 690, 690, 710, 690, 712, 708, - 718, 708, 711, 711, 711, 716, 711, 718, 716, 711, - 717, 717, 720, 713, 711, 13, 714, 719, 719, 728, - 711, 711, 721, 721, 715, 722, 723, 720, 724, 723, - 722, 725, 725, 724, 726, 727, 726, 729, 728, 730, - 732, 729, 731, 733, 733, 734, 737, 727, 732, 735, - 736, 736, 739, 738, 742, 742, 740, 753, 753, 730, - 734, 731, 740, 735, 737, 738, 741, 743, 754, 754, - 745, 741, 743, 743, 739, 745, 746, 747, 750, 748, - 749, 750, 746, 747, 748, 751, 749, 752, 755, 756, - 759, 751, 757, 758, 761, 752, 755, 757, 760, 760, + 714, 716, 717, 717, 716, 718, 709, 711, 711, 711, + 713, 711, 718, 720, 711, 726, 715, 726, 714, 711, + 719, 719, 721, 721, 722, 711, 711, 723, 720, 722, + 723, 724, 725, 725, 727, 728, 724, 729, 730, 732, + 731, 729, 733, 733, 738, 734, 727, 732, 735, 736, + 736, 737, 739, 797, 728, 740, 738, 797, 730, 731, + 734, 740, 735, 741, 742, 742, 743, 746, 741, 737, + 745, 743, 743, 746, 739, 745, 747, 750, 748, 749, + 750, 751, 747, 748, 752, 749, 755, 751, 753, 753, + 754, 754, 752, 756, 755, 757, 758, 759, 760, 760, - 758, 764, 762, 761, 766, 763, 767, 756, 768, 759, - 762, 763, 769, 766, 770, 767, 771, 769, 774, 771, - 764, 772, 773, 770, 775, 776, 772, 778, 778, 777, - 779, 780, 768, 775, 777, 777, 773, 781, 776, 782, - 785, 783, 785, 774, 783, 779, 781, 786, 786, 787, - 780, 788, 783, 789, 792, 790, 788, 791, 793, 794, - 795, 796, 797, 782, 1036, 796, 798, 799, 794, 802, - 787, 1036, 800, 799, 789, 790, 792, 791, 793, 801, - 797, 800, 803, 795, 804, 798, 805, 806, 802, 808, - 804, 801, 806, 807, 807, 809, 803, 810, 811, 812, + 757, 761, 763, 758, 762, 764, 766, 768, 763, 767, + 761, 756, 762, 770, 769, 766, 759, 771, 767, 769, + 771, 772, 770, 773, 764, 774, 772, 775, 776, 777, + 779, 768, 778, 778, 777, 777, 775, 773, 780, 781, + 782, 776, 783, 784, 788, 779, 784, 786, 781, 786, + 774, 787, 787, 789, 784, 790, 793, 780, 789, 791, + 783, 792, 794, 795, 782, 788, 796, 798, 799, 800, + 804, 801, 795, 803, 802, 800, 790, 805, 793, 791, + 801, 792, 794, 805, 804, 798, 802, 799, 806, 796, + 807, 809, 803, 808, 808, 807, 810, 811, 812, 813, - 805, 813, 814, 0, 809, 815, 811, 816, 817, 808, - 818, 820, 819, 816, 817, 824, 821, 810, 819, 812, - 822, 814, 821, 813, 818, 815, 822, 825, 823, 827, - 826, 820, 823, 831, 824, 826, 828, 828, 829, 825, - 830, 832, 833, 830, 829, 834, 836, 825, 833, 842, - 827, 831, 835, 835, 832, 837, 838, 838, 839, 840, - 837, 841, 841, 840, 836, 834, 843, 844, 845, 847, - 848, 842, 844, 839, 850, 851, 853, 853, 854, 857, - 855, 858, 854, 859, 848, 858, 843, 845, 856, 856, - 873, 860, 998, 847, 850, 855, 851, 852, 859, 873, + 814, 815, 806, 816, 817, 810, 812, 818, 820, 821, + 817, 809, 819, 818, 820, 822, 825, 811, 823, 813, + 815, 822, 814, 816, 823, 826, 819, 824, 827, 821, + 828, 824, 832, 827, 830, 825, 833, 826, 829, 829, + 830, 831, 834, 835, 831, 826, 836, 836, 834, 833, + 832, 828, 837, 838, 839, 839, 840, 841, 838, 842, + 842, 841, 843, 835, 845, 844, 848, 846, 849, 845, + 837, 840, 851, 852, 854, 854, 855, 858, 856, 859, + 855, 860, 849, 859, 843, 844, 846, 857, 857, 861, + 848, 875, 851, 856, 852, 853, 860, 875, 853, 863, - 852, 862, 852, 998, 857, 860, 852, 861, 852, 864, - 865, 863, 861, 852, 865, 862, 863, 863, 852, 866, - 867, 868, 869, 864, 870, 867, 865, 869, 871, 872, - 874, 875, 880, 868, 866, 867, 874, 875, 870, 876, - 877, 877, 878, 872, 879, 876, 881, 878, 882, 871, - 879, 884, 885, 958, 880, 886, 889, 885, 887, 888, - 888, 889, 891, 884, 890, 881, 882, 883, 883, 886, - 887, 892, 890, 883, 958, 883, 891, 893, 894, 894, - 895, 883, 897, 899, 895, 900, 883, 883, 897, 898, - 892, 901, 898, 883, 902, 903, 893, 901, 900, 902, + 853, 13, 858, 861, 853, 862, 853, 865, 866, 864, + 862, 853, 866, 863, 864, 864, 853, 867, 868, 869, + 870, 865, 871, 868, 866, 870, 872, 873, 874, 876, + 881, 869, 867, 868, 877, 876, 871, 874, 878, 878, + 877, 873, 882, 879, 880, 883, 885, 872, 879, 886, + 880, 913, 881, 887, 886, 892, 888, 890, 885, 889, + 889, 882, 890, 883, 884, 884, 891, 887, 888, 892, + 884, 913, 884, 893, 891, 894, 895, 895, 884, 899, + 898, 896, 899, 884, 884, 896, 898, 900, 901, 902, + 884, 903, 893, 904, 894, 902, 903, 908, 906, 907, - 905, 906, 899, 907, 909, 908, 910, 911, 912, 905, - 906, 908, 911, 909, 903, 913, 914, 916, 915, 907, - 919, 918, 917, 922, 925, 910, 916, 918, 912, 913, - 915, 917, 920, 924, 926, 927, 914, 919, 920, 922, - 928, 929, 0, 930, 925, 931, 934, 924, 930, 927, - 931, 934, 935, 926, 936, 936, 929, 937, 928, 938, - 940, 935, 941, 937, 944, 942, 942, 941, 941, 942, - 943, 945, 938, 943, 946, 947, 940, 950, 944, 948, - 949, 951, 952, 950, 953, 964, 955, 0, 952, 954, - 946, 945, 948, 947, 954, 949, 961, 964, 959, 953, + 911, 901, 910, 909, 914, 912, 900, 906, 907, 909, + 912, 910, 904, 908, 915, 916, 917, 918, 914, 911, + 920, 925, 919, 921, 923, 917, 918, 916, 919, 921, + 926, 928, 927, 930, 915, 925, 929, 920, 931, 932, + 923, 935, 941, 931, 932, 928, 935, 936, 930, 938, + 926, 927, 937, 937, 929, 938, 936, 939, 941, 942, + 945, 946, 943, 943, 942, 942, 943, 947, 944, 948, + 939, 944, 949, 950, 945, 952, 951, 954, 953, 956, + 959, 946, 951, 947, 953, 949, 955, 948, 950, 962, + 0, 955, 954, 956, 958, 952, 966, 958, 960, 961, - 955, 951, 957, 959, 960, 957, 962, 967, 963, 960, - 966, 962, 961, 963, 968, 969, 966, 970, 970, 971, - 968, 969, 972, 967, 973, 974, 974, 973, 971, 975, - 976, 977, 978, 979, 982, 978, 980, 981, 985, 982, - 972, 987, 980, 981, 985, 983, 979, 975, 984, 976, - 983, 977, 988, 984, 989, 992, 990, 991, 991, 987, - 989, 990, 993, 994, 992, 995, 996, 997, 999, 996, - 997, 993, 988, 1000, 1001, 1004, 1002, 1003, 1006, 1006, - 1007, 994, 1002, 1003, 995, 1000, 999, 1005, 1008, 1009, - 1004, 1010, 1005, 1001, 1011, 1010, 1012, 1013, 1014, 1007, + 963, 959, 964, 960, 961, 962, 965, 964, 966, 963, + 968, 965, 969, 970, 971, 973, 968, 972, 972, 970, + 971, 974, 975, 977, 973, 975, 976, 976, 969, 978, + 979, 980, 981, 984, 980, 985, 982, 983, 984, 974, + 985, 977, 982, 983, 986, 981, 987, 989, 978, 986, + 979, 990, 987, 991, 994, 992, 993, 993, 995, 991, + 992, 996, 997, 994, 1000, 989, 998, 995, 1001, 998, + 999, 990, 1002, 999, 1003, 1000, 1004, 1005, 1009, 996, + 1006, 997, 1004, 1005, 1002, 1007, 1001, 1008, 1008, 1010, + 1007, 1013, 1011, 1003, 1012, 1006, 1014, 1009, 1012, 1015, - 1016, 1009, 1008, 1017, 1017, 1012, 1019, 1020, 1022, 1021, - 1024, 1024, 1011, 1022, 1025, 1023, 1013, 1040, 1040, 1016, - 1019, 1021, 1020, 1014, 1023, 1026, 1027, 1029, 1028, 1029, - 1030, 1026, 1027, 1028, 1025, 1030, 1031, 1032, 1033, 1034, - 1035, 1037, 1038, 1033, 1041, 1042, 1044, 1043, 1045, 1069, - 1031, 1032, 1044, 1069, 1034, 1046, 1037, 0, 1041, 1035, - 1046, 1038, 1043, 1042, 1048, 1048, 1051, 1049, 1045, 1046, - 1052, 1046, 1049, 1051, 1046, 1050, 1050, 1053, 1054, 1056, - 1053, 1055, 1057, 1058, 1052, 1060, 1059, 1057, 1056, 1061, - 1060, 1062, 1064, 1064, 1067, 0, 1065, 1054, 1059, 1055, + 1016, 1018, 1021, 1010, 1011, 1014, 1019, 1019, 1022, 1013, + 1023, 1027, 1024, 1026, 1026, 1025, 1021, 1024, 1015, 0, + 1018, 1028, 1023, 1022, 1025, 1016, 1029, 1028, 1030, 1033, + 1032, 1027, 1029, 1030, 1031, 1032, 1031, 1034, 1036, 1035, + 1037, 1038, 1039, 1033, 1035, 1040, 1042, 1042, 1038, 1043, + 1044, 1034, 1045, 1036, 1046, 1047, 1157, 1039, 1157, 1037, + 1046, 1050, 1050, 1043, 1040, 1048, 1051, 1045, 1044, 1053, + 1048, 1051, 1052, 1052, 1054, 1047, 1053, 1055, 1056, 1048, + 1055, 1048, 1057, 1058, 1048, 1059, 1060, 1061, 1054, 1062, + 1059, 1063, 1058, 1064, 1062, 1066, 1066, 1056, 1067, 1061, - 1061, 1065, 1058, 1066, 1068, 1071, 1070, 1072, 1066, 1068, - 1062, 1073, 1074, 1075, 1067, 1070, 1076, 1077, 1078, 1079, - 1071, 1080, 1072, 1076, 1074, 1081, 1082, 1083, 1075, 1077, - 1073, 1081, 1084, 1085, 1088, 1089, 1090, 1078, 1087, 1080, - 1079, 1082, 1085, 1089, 1087, 1091, 1092, 1083, 1088, 1093, - 1091, 1094, 1084, 1095, 1093, 1093, 1090, 1100, 1092, 1096, - 1097, 1097, 1099, 1101, 1102, 1102, 1100, 1095, 1104, 1101, - 1094, 1103, 1096, 1098, 1105, 1099, 1103, 1104, 1098, 1106, - 1105, 1098, 1098, 1107, 1106, 1109, 1098, 1112, 1107, 1108, - 1108, 1113, 1098, 1110, 1110, 1111, 1098, 1115, 1111, 1114, + 1057, 1068, 1063, 1067, 1069, 1060, 1068, 1071, 1070, 1072, + 1073, 1071, 1064, 1070, 1074, 1075, 1076, 1077, 1072, 1078, + 1080, 1079, 1081, 1082, 1069, 1073, 1078, 1084, 1076, 1074, + 1083, 1085, 1077, 1079, 1075, 1086, 1083, 1087, 1089, 1080, + 1090, 1082, 1084, 1081, 1089, 1091, 1087, 1092, 1094, 1096, + 1097, 1085, 1093, 1091, 1090, 1086, 1095, 1093, 1098, 1128, + 1094, 1095, 1095, 1101, 1097, 1099, 1099, 1092, 1096, 1102, + 1128, 1098, 1100, 1103, 1104, 1104, 1101, 1100, 1102, 1103, + 1100, 1100, 1105, 1106, 1107, 1100, 1111, 1105, 1108, 1109, + 1107, 1100, 1106, 1108, 1109, 1100, 1110, 1110, 1112, 1112, - 1111, 1117, 1118, 1124, 1124, 1116, 1109, 1112, 1114, 1113, - 1116, 1121, 1119, 1120, 1123, 1117, 1121, 1115, 1119, 1120, - 1118, 1122, 1126, 1123, 1129, 1122, 1125, 1125, 1123, 1125, - 1123, 1128, 1123, 1126, 1123, 1128, 1130, 1131, 1132, 1129, - 1133, 1134, 1135, 1132, 1132, 1136, 1131, 1135, 1137, 1133, - 1138, 1139, 1140, 1144, 1130, 1141, 1148, 1137, 1146, 1136, - 1143, 1141, 1149, 1134, 1142, 1142, 1140, 1144, 1143, 1138, - 1139, 1145, 1146, 1147, 1148, 1150, 1145, 1151, 1151, 1152, - 1150, 1158, 1147, 1153, 1153, 1157, 1154, 1149, 1154, 1156, - 1157, 1161, 1156, 1159, 1152, 1160, 1160, 1162, 1162, 1165, + 1113, 1114, 1115, 1113, 1116, 1113, 1117, 1111, 1119, 1118, + 1120, 1121, 1122, 1116, 1118, 0, 1125, 1121, 1122, 1123, + 1115, 1114, 1119, 1124, 1123, 1125, 1117, 1124, 1120, 1130, + 1125, 1131, 1125, 1130, 1125, 1132, 1125, 1126, 1126, 1127, + 1127, 1133, 1127, 1134, 1136, 1135, 1131, 1137, 1134, 1134, + 1133, 1138, 1137, 1132, 1135, 1139, 1140, 1141, 1142, 1144, + 1144, 1143, 1145, 1146, 1139, 1138, 1136, 1143, 1147, 1148, + 1145, 1149, 1142, 1147, 1150, 1140, 1141, 1146, 1151, 1152, + 1149, 1150, 1153, 1148, 1154, 1154, 1155, 1153, 1156, 1156, + 1159, 1161, 1160, 1159, 1162, 1164, 1151, 1160, 1163, 1163, - 1158, 1164, 1159, 1163, 1163, 1166, 1164, 1167, 1167, 1168, - 1169, 1161, 1170, 1169, 1171, 1172, 1173, 1174, 1173, 1171, - 1165, 1177, 1176, 1178, 1172, 1176, 1166, 1179, 1178, 1168, - 1186, 1181, 1170, 1180, 0, 1174, 1177, 1182, 1180, 1181, - 1183, 1179, 1182, 1184, 1184, 1183, 1185, 1187, 1186, 1188, - 1189, 1185, 1191, 1187, 1192, 1194, 1188, 1193, 1191, 1195, - 1192, 1194, 1193, 1189, 1196, 1197, 1198, 1198, 1195, 1199, - 1201, 1202, 1203, 1204, 1205, 1207, 1197, 1208, 1203, 1204, - 1205, 1207, 1209, 1196, 1210, 1211, 1212, 1213, 1213, 1199, - 1201, 1208, 1214, 1215, 1202, 1216, 1210, 1208, 1217, 1211, + 1168, 1155, 1169, 1162, 1152, 1165, 1165, 1166, 1166, 1167, + 1161, 1170, 1170, 1171, 1167, 1164, 1172, 1173, 1175, 1172, + 1174, 1168, 1176, 1169, 1176, 1174, 1177, 1175, 1179, 1181, + 1180, 1179, 1182, 1171, 1181, 1183, 1185, 1173, 1186, 1184, + 1183, 1185, 1189, 1186, 1177, 1180, 1182, 1184, 1187, 1187, + 1188, 1190, 1191, 1192, 1199, 1188, 1194, 1190, 1195, 1191, + 1189, 1197, 1194, 1196, 1195, 1198, 1192, 1197, 1196, 1200, + 1201, 1201, 1202, 1199, 1198, 1204, 1205, 1206, 1207, 1208, + 1200, 1210, 1211, 1206, 1207, 1208, 1212, 1210, 1213, 1214, + 1215, 1217, 1202, 1216, 1216, 1204, 1211, 1218, 1219, 1205, - 1218, 1218, 1209, 1217, 1212, 1219, 1220, 1222, 1225, 1223, - 1227, 1220, 1214, 1216, 1223, 1223, 1224, 1225, 1215, 1226, - 1228, 1229, 0, 1232, 1227, 1230, 1222, 1226, 1219, 1231, - 1230, 1231, 1234, 1230, 1224, 1228, 1229, 1232, 1234, 1229, - 1235, 1236, 1237, 1238, 1235, 1239, 1240, 1237, 1237, 1241, - 1242, 1243, 1236, 1244, 1241, 1242, 1245, 1248, 1244, 1247, - 1249, 1252, 1238, 1251, 1240, 1250, 1250, 1251, 1253, 1243, - 1255, 1239, 1256, 1247, 1254, 1248, 1245, 1258, 1249, 1252, - 1254, 1257, 1255, 1259, 1260, 1261, 1262, 1253, 1264, 1263, - 1261, 1256, 1258, 1262, 1263, 1257, 1265, 1267, 1259, 1266, + 1213, 1222, 1211, 1214, 1220, 1223, 1212, 1225, 1215, 1220, + 1223, 1217, 1221, 1221, 1226, 1227, 1219, 1229, 1228, 1226, + 1226, 1230, 1218, 1231, 1222, 1229, 1225, 1228, 1232, 1233, + 1234, 1235, 1234, 1227, 1233, 1230, 1237, 1233, 1231, 1239, + 1238, 1241, 1237, 1232, 1238, 1235, 1232, 1240, 1242, 1243, + 1239, 1244, 1240, 1240, 1245, 1246, 1244, 1247, 1248, 1245, + 1241, 1250, 1247, 1251, 1252, 1253, 1253, 1243, 1254, 1255, + 1256, 1257, 1254, 1246, 1242, 1250, 1258, 1257, 1248, 1259, + 1260, 1251, 1252, 1263, 1261, 1262, 1264, 1255, 1258, 1256, + 1265, 1264, 1267, 1270, 1260, 1268, 1266, 1265, 1259, 1261, - 1266, 1268, 1269, 1260, 1270, 1265, 1264, 1268, 1271, 1270, - 1272, 1277, 1267, 1279, 1271, 1277, 1272, 1273, 1273, 1274, - 1274, 1276, 1276, 1269, 1278, 1280, 1281, 1282, 1283, 1283, - 1284, 1279, 1285, 1278, 1282, 1287, 1288, 1286, 1289, 1280, - 1285, 1281, 1286, 1289, 1289, 1291, 1290, 1292, 1292, 1287, - 1284, 1290, 1290, 1293, 1294, 1288, 1296, 1295, 1297, 1298, - 1299, 1296, 1300, 1302, 1301, 1291, 1295, 1304, 1300, 1301, - 1303, 1307, 1293, 1294, 1305, 1306, 1303, 1297, 1299, 1298, - 1305, 1306, 1308, 1309, 1310, 1311, 1304, 1312, 1316, 1302, - 1307, 1313, 1314, 1314, 1315, 1317, 1317, 1315, 1321, 1311, + 1262, 1266, 1263, 1271, 1268, 1269, 1269, 1272, 1270, 1271, + 1267, 1273, 1274, 1275, 1276, 1276, 1273, 1281, 1274, 1275, + 1277, 1277, 1279, 1279, 1282, 1280, 1281, 1283, 1272, 1280, + 1284, 1285, 1286, 1286, 1287, 1288, 1290, 1291, 1285, 1289, + 1294, 1283, 1282, 1288, 1289, 1284, 1292, 1295, 1295, 1296, + 1290, 1292, 1292, 1293, 1287, 1297, 1291, 1298, 1293, 1293, + 1294, 1300, 1299, 1301, 1302, 1303, 1298, 1299, 1296, 1305, + 1304, 1303, 1306, 1307, 1297, 1304, 1314, 1310, 1306, 1308, + 1300, 1309, 1302, 1301, 1311, 1308, 1312, 1309, 1313, 1315, + 1314, 1316, 1307, 1317, 1317, 1305, 1310, 1318, 0, 1319, - 1316, 1308, 1309, 1310, 1318, 1318, 1313, 1319, 1312, 1320, - 1322, 1321, 1319, 1320, 1323, 1324, 1328, 1324, 1326, 1322, - 1327, 1324, 1329, 1330, 1335, 1327, 1333, 1323, 1331, 1331, - 1332, 1328, 1333, 1334, 1324, 1332, 1326, 1335, 1336, 1330, - 1337, 1338, 1329, 1336, 1337, 1338, 1339, 1340, 1334, 1341, - 1342, 1343, 1343, 1345, 1347, 1348, 1342, 1349, 1349, 1351, - 1348, 1350, 1353, 1353, 1357, 1340, 1339, 1350, 1358, 1341, - 1355, 1345, 1361, 1355, 1362, 1347, 1356, 1356, 1360, 1351, - 1357, 1360, 1364, 1362, 1358, 1363, 1363, 1365, 1366, 1367, - 1368, 1370, 1361, 1371, 1367, 1369, 1369, 1364, 1372, 1373, + 1318, 1320, 1320, 1311, 1329, 1312, 1316, 1313, 1321, 1321, + 1315, 1319, 1322, 1324, 1323, 1325, 1326, 1322, 1323, 1327, + 1331, 1327, 1329, 1330, 1325, 1327, 1324, 1332, 1330, 1326, + 1333, 1334, 1334, 1337, 1335, 1331, 1336, 1338, 1327, 1335, + 1339, 1342, 1336, 1344, 1343, 1339, 1333, 1332, 1337, 1340, + 1338, 1341, 1344, 1340, 1345, 1341, 1351, 1346, 1347, 1347, + 1349, 1342, 1343, 1346, 1352, 1353, 1353, 1354, 1355, 1352, + 1357, 1357, 1359, 1354, 1345, 1359, 1361, 1351, 1349, 1360, + 1360, 1362, 1364, 1365, 1366, 1364, 1367, 1367, 1355, 1368, + 1369, 1370, 1361, 1366, 1371, 1372, 1374, 1362, 1375, 1371, - 1370, 1374, 1374, 1375, 1368, 1376, 1378, 1366, 1365, 1377, - 1381, 1371, 1383, 1372, 1377, 1379, 1379, 1375, 1380, 1382, - 1382, 1378, 1380, 1376, 1373, 1384, 1386, 1385, 1387, 1390, - 1381, 1385, 1391, 1387, 1383, 1392, 1384, 1389, 1389, 1393, - 1394, 1395, 1395, 1396, 1397, 1386, 1391, 1390, 1396, 1398, - 1399, 1400, 1401, 1393, 1392, 1392, 1400, 1403, 1402, 1399, - 1402, 1404, 1403, 1405, 1397, 1394, 1408, 1404, 1406, 1398, - 1409, 1409, 1401, 1410, 1406, 1411, 1414, 1413, 1415, 1415, - 1408, 1411, 1413, 1405, 1416, 1416, 1418, 1417, 1419, 1423, - 1420, 1425, 1410, 1420, 1421, 1421, 1422, 1425, 1431, 1424, + 1373, 1373, 1376, 1365, 1368, 1374, 1377, 1378, 1378, 1372, + 1370, 1369, 1379, 1381, 1380, 1382, 1375, 1376, 1381, 1383, + 1383, 1384, 1385, 1386, 1386, 1384, 1379, 1387, 1388, 1389, + 1382, 1377, 1380, 1389, 1390, 1391, 1393, 1393, 1394, 1388, + 1391, 1395, 1385, 1396, 1397, 1398, 1399, 1399, 1401, 1387, + 1403, 1402, 1400, 1390, 1405, 1395, 1394, 1400, 1397, 1403, + 1404, 1409, 1396, 1396, 1406, 1404, 1406, 1407, 1401, 1408, + 1398, 1402, 1407, 1410, 1405, 1408, 1412, 1413, 1413, 1410, + 1414, 1409, 1415, 1418, 1417, 1419, 1419, 1421, 1415, 1417, + 1412, 1420, 1420, 1422, 1423, 1424, 1425, 1425, 1424, 1414, - 1414, 1417, 1424, 1419, 1418, 1424, 1426, 1427, 1422, 1423, - 1427, 1426, 1429, 1430, 1433, 1433, 1432, 1424, 1430, 1432, - 1435, 1429, 1434, 1431, 1440, 1435, 1427, 1438, 1434, 1436, - 1436, 1437, 1437, 1438, 1439, 1441, 1442, 1440, 1443, 1439, - 1444, 1445, 1446, 1444, 1447, 1448, 1449, 1445, 1446, 1447, - 1453, 1448, 1450, 1441, 1454, 1442, 1452, 1450, 1443, 1451, - 1451, 1452, 1455, 1456, 1457, 1460, 1461, 1458, 1453, 1449, - 1459, 1460, 1462, 1463, 1454, 1464, 1470, 1456, 1457, 1458, - 1466, 1466, 1455, 1459, 1467, 1468, 1461, 1463, 1469, 1469, - 1468, 1470, 1462, 1471, 1472, 1473, 1464, 1474, 1476, 1475, + 1426, 1421, 1427, 1436, 1435, 1445, 1436, 1418, 1429, 1423, + 1428, 1422, 1426, 1428, 1429, 1430, 1428, 1433, 1431, 1434, + 1430, 1431, 1427, 1445, 1434, 1446, 1433, 1438, 1428, 1435, + 1437, 1437, 1442, 1438, 1439, 1440, 1440, 1431, 1442, 1439, + 1441, 1441, 1443, 1444, 1446, 1447, 1448, 1443, 1449, 1448, + 1451, 1450, 1452, 1453, 1449, 1451, 1444, 1450, 1452, 1454, + 1455, 1455, 1456, 1457, 1454, 1447, 1458, 1456, 1459, 1460, + 1461, 1464, 1465, 1462, 1463, 1466, 1453, 1464, 1468, 1467, + 1471, 1457, 1476, 1460, 1461, 1462, 1458, 1463, 1459, 1470, + 1470, 1472, 1465, 1467, 1474, 1466, 1472, 1473, 1473, 1468, - 1477, 1478, 1482, 1486, 1467, 1476, 1474, 1471, 1480, 1477, - 1484, 1484, 1477, 1473, 1475, 1486, 1483, 1478, 1472, 1483, - 1485, 1485, 1487, 1480, 1489, 1489, 1488, 1482, 1480, 1488, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1492, 1493, 1497, - 1487, 1503, 1500, 1490, 1502, 1496, 1499, 1498, 1500, 1504, - 1491, 1495, 1505, 1494, 1503, 1499, 1498, 1506, 1497, 1498, - 1501, 1501, 1507, 1510, 1502, 1511, 1505, 1504, 1512, 1512, - 1513, 1514, 1515, 1506, 1507, 1516, 1516, 1515, 1519, 1518, - 1514, 1520, 1517, 1511, 1518, 1521, 1513, 1522, 1510, 1525, - 1516, 1517, 1522, 1522, 1517, 1524, 1519, 1526, 1529, 0, + 1471, 1475, 1477, 1478, 1479, 1482, 1476, 1480, 1484, 1474, + 1486, 0, 1478, 1481, 1480, 1475, 1488, 1488, 1491, 1479, + 1477, 1482, 1481, 1484, 1487, 1481, 1490, 1487, 1484, 1489, + 1489, 1492, 1493, 1493, 1492, 1486, 1491, 1494, 1490, 1495, + 1496, 1497, 1498, 1499, 1500, 1496, 1497, 1501, 1502, 1504, + 1494, 1505, 1505, 1500, 1503, 1504, 1506, 1502, 1495, 1499, + 1502, 1498, 1507, 1503, 1508, 1509, 1501, 1510, 1511, 1514, + 1515, 1516, 1516, 1517, 1574, 1507, 1506, 1518, 1574, 1509, + 1511, 1523, 1508, 1510, 1521, 1519, 1518, 1524, 1515, 1517, + 1519, 1520, 1520, 1521, 1514, 1522, 1521, 1525, 1526, 1523, - 1527, 1528, 1520, 1521, 1525, 1527, 1531, 1528, 1532, 1524, - 1530, 1530, 1531, 1532, 1533, 1534, 1529, 1536, 1537, 1526, - 1533, 1534, 1538, 1539, 1540, 1541, 1543, 1540, 1538, 1545, - 1546, 1541, 1537, 1540, 1543, 1547, 1539, 1536, 1548, 1549, - 1550, 1551, 1552, 1547, 1553, 1553, 1556, 1548, 1545, 1546, - 1558, 1554, 1549, 1550, 1555, 1551, 1552, 1554, 1559, 1556, - 1555, 1557, 1557, 1560, 1561, 1562, 1553, 1563, 1564, 1565, - 1558, 1562, 1567, 1567, 1568, 1569, 1559, 1561, 1570, 1569, - 1571, 1572, 1560, 1570, 1564, 1571, 1572, 1565, 1573, 1563, - 1574, 1576, 1577, 1577, 1568, 1578, 1579, 1573, 1580, 1581, + 1522, 1530, 1528, 1526, 1526, 1529, 1520, 1531, 1524, 1533, + 1541, 1532, 1531, 1534, 1534, 1525, 1528, 1532, 1535, 1537, + 1529, 1536, 1538, 1530, 1535, 1539, 1536, 1533, 1538, 1542, + 1541, 1539, 1543, 1537, 1544, 1546, 1545, 1550, 1543, 1545, + 1548, 1546, 1551, 1542, 1552, 1545, 1553, 1544, 1548, 1554, + 1555, 1556, 1552, 1557, 1559, 1553, 1550, 1558, 1558, 1561, + 1559, 1551, 1554, 1555, 1560, 1556, 1563, 1557, 1562, 1562, + 1560, 1564, 1561, 1565, 1566, 1567, 1568, 1569, 1570, 1558, + 1573, 1567, 1572, 1572, 1579, 1575, 1563, 1566, 1581, 1564, + 1575, 1583, 1565, 1569, 1576, 1578, 1570, 1577, 1568, 1576, - 1581, 1582, 1583, 1586, 1584, 1587, 1576, 1585, 1579, 1583, - 1590, 1589, 1588, 1574, 1578, 1582, 1584, 1580, 1588, 1585, - 1591, 1593, 1586, 1589, 1593, 1587, 1591, 1597, 1590, 1592, - 1592, 1594, 1594, 1596, 1598, 1600, 1597, 1601, 1596, 1601, - 1598, 1599, 1599, 1602, 1603, 1604, 1602, 1600, 1605, 1607, - 1606, 1608, 1611, 1609, 1607, 1610, 1613, 1611, 1615, 1619, - 1608, 0, 1612, 1615, 1603, 1609, 1605, 1604, 1606, 1614, - 1610, 1612, 1616, 1618, 1614, 1621, 1613, 1617, 1617, 1618, - 1619, 1614, 1622, 1623, 1612, 1625, 1624, 1616, 1624, 1626, - 1626, 1627, 1627, 1629, 1621, 1628, 1628, 1632, 1622, 1625, + 1573, 1584, 1577, 1581, 1578, 1582, 1582, 1579, 1585, 1587, + 1583, 1586, 1586, 1584, 1588, 1591, 1589, 1590, 1592, 1593, + 1594, 1588, 1595, 1587, 1596, 1593, 1601, 1585, 1589, 1590, + 1596, 1601, 1594, 1605, 1591, 1597, 1597, 1602, 1592, 1598, + 1595, 1603, 1598, 1599, 1599, 1605, 1602, 1603, 1604, 1604, + 1606, 1607, 1606, 1608, 1607, 1609, 1610, 1611, 1612, 1613, + 1614, 1615, 1616, 1612, 1618, 1620, 1621, 1616, 1613, 1617, + 1620, 1626, 1614, 1608, 1610, 1611, 1615, 1609, 1617, 1624, + 1619, 1621, 1622, 1622, 1618, 1619, 1627, 1623, 1628, 1630, + 1626, 1617, 1619, 1623, 1629, 1634, 1629, 1631, 1631, 1637, - 1633, 1625, 1640, 1623, 1630, 1630, 1631, 1631, 1634, 1634, - 1635, 1636, 1637, 1629, 1635, 1637, 1639, 1636, 1632, 1641, - 1640, 1633, 1639, 1642, 1643, 1641, 1646, 1643, 1644, 1644, - 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654, - 1660, 1657, 1650, 1653, 1653, 1647, 1647, 1647, 1642, 1655, - 1656, 1655, 1647, 1654, 1648, 1649, 1657, 1651, 1658, 1659, - 1660, 1656, 1661, 1663, 1658, 1662, 1662, 1665, 1659, 1664, - 1664, 1666, 1667, 1667, 1668, 1668, 1669, 1672, 1672, 1673, - 1677, 1674, 1676, 1661, 1679, 1679, 1678, 1665, 1680, 1663, - 1674, 1676, 1678, 1666, 1683, 1681, 1669, 1684, 1682, 1685, + 1624, 1638, 1627, 1630, 0, 1630, 1632, 1632, 1628, 1633, + 1633, 1635, 1635, 1636, 1636, 1634, 1639, 1639, 1641, 1640, + 1637, 1644, 1638, 1640, 1641, 1642, 1645, 1644, 1642, 1646, + 1647, 1648, 1649, 1649, 1648, 1646, 1650, 1650, 1652, 1651, + 1653, 1654, 1655, 1656, 1645, 1651, 1665, 1660, 1655, 1660, + 1652, 1652, 1652, 1658, 1659, 1647, 1661, 1652, 1658, 1658, + 1653, 1654, 1662, 1656, 1663, 1664, 1665, 1661, 1659, 1666, + 1663, 1667, 1667, 1668, 1664, 1669, 1669, 1662, 1670, 1671, + 1672, 1672, 1673, 1673, 1674, 1677, 1677, 1678, 1679, 1682, + 1666, 1681, 1684, 1684, 1685, 1689, 1683, 1679, 1670, 1668, - 1685, 1677, 1686, 1683, 1673, 1682, 1687, 1689, 1690, 1680, - 1681, 1691, 1689, 1692, 1690, 1693, 1695, 1695, 1694, 1698, - 1692, 1693, 1687, 1684, 1694, 1696, 1697, 1699, 1686, 1700, - 1696, 1691, 1702, 1701, 1703, 1697, 1701, 1704, 1704, 1698, - 1708, 1700, 1705, 1706, 1707, 1711, 1699, 1709, 1705, 1706, - 1702, 1709, 1712, 1713, 1715, 1708, 1714, 1714, 1713, 1718, - 1703, 1716, 1719, 1720, 1707, 1711, 1719, 1709, 1721, 1720, - 1722, 1722, 1724, 1715, 1712, 1723, 1716, 1721, 1718, 1723, - 1725, 1725, 1726, 1724, 1727, 1728, 1729, 1730, 1724, 1731, - 1732, 1729, 1734, 1733, 1735, 1735, 1732, 1734, 1727, 1736, + 1681, 1671, 1683, 1686, 1674, 1688, 1687, 1690, 1690, 1691, + 1682, 1692, 1678, 1687, 1688, 1685, 1696, 1694, 1686, 1695, + 1698, 1689, 1694, 1697, 1701, 1695, 1698, 1692, 1699, 1701, + 1697, 1700, 1700, 1702, 1699, 1691, 1696, 1703, 1705, 1704, + 1706, 1707, 1702, 1706, 1708, 1709, 1709, 1710, 1711, 1712, + 1705, 1713, 1714, 1710, 1711, 1716, 1714, 1703, 1704, 1707, + 1717, 1720, 1718, 1719, 1719, 1723, 1713, 1718, 1721, 1712, + 1708, 0, 1714, 1724, 1732, 1716, 1727, 1724, 1725, 1725, + 1720, 1726, 1717, 1721, 1723, 1727, 1729, 1726, 1728, 1728, + 1729, 1730, 1731, 1731, 1733, 1732, 1734, 1736, 1735, 1737, - 1736, 1737, 1739, 1726, 1728, 1737, 1740, 1730, 1733, 1731, - 1741, 1739, 1742, 1742, 1744, 1744, 1748, 1740, 1745, 1746, - 1747, 1750, 1740, 1745, 1745, 1746, 1747, 1749, 1751, 1753, - 1741, 1754, 1749, 1750, 1751, 1754, 1755, 1756, 1757, 1758, - 1759, 1753, 1748, 1760, 1757, 1762, 1759, 1763, 1755, 1764, - 1766, 1767, 1767, 1766, 1764, 1760, 1770, 1762, 1768, 1768, - 0, 1758, 1756, 1769, 1769, 1771, 1763, 1772, 1775, 1773, - 1777, 1771, 1774, 1772, 1773, 1777, 1770, 1775, 1774, 1779, - 1780, 1783, 1779, 1781, 1781, 1784, 1785, 1786, 1786, 1787, - 1788, 1785, 1780, 1783, 1789, 1788, 1791, 1784, 1787, 1789, + 1738, 1739, 1730, 1735, 1740, 1747, 1738, 1730, 1733, 1740, + 1741, 1741, 1742, 1742, 1743, 1734, 1739, 1736, 1743, 1737, + 1745, 1746, 1748, 1748, 1752, 1747, 1750, 1750, 1751, 1745, + 1752, 1754, 1746, 1751, 1751, 1753, 1756, 1746, 1755, 1757, + 1759, 1753, 1760, 1755, 1761, 1757, 1760, 1762, 1756, 1763, + 1766, 1764, 1759, 1765, 1768, 1763, 1761, 1754, 1769, 1765, + 1770, 1772, 1766, 1776, 1772, 1770, 1768, 1773, 1773, 1774, + 1774, 0, 1762, 1764, 1775, 1775, 1777, 1769, 1778, 1781, + 1779, 1780, 1777, 1776, 1778, 1779, 1783, 1780, 1781, 1785, + 1786, 1783, 1785, 1787, 1787, 1789, 1790, 1793, 1791, 1792, - 1790, 1790, 1792, 1793, 1794, 1795, 1798, 1796, 1797, 1795, - 1799, 1792, 1796, 1800, 1797, 1801, 1791, 1804, 1805, 1799, - 1809, 1793, 1808, 1794, 1798, 1803, 1803, 1805, 0, 1801, - 1807, 1800, 1806, 1806, 1808, 1804, 1811, 1803, 1810, 1807, - 1817, 1809, 1818, 1810, 1814, 1814, 1820, 1816, 1821, 1811, - 1816, 1822, 1823, 1824, 1824, 1830, 1817, 1822, 1818, 1826, - 1826, 1820, 1821, 1825, 1827, 1825, 1829, 1831, 1831, 1823, - 1832, 1833, 1827, 1829, 1834, 1830, 1835, 1836, 1837, 1832, - 1838, 1839, 1841, 1844, 1842, 1845, 1834, 1839, 1835, 1836, - 1843, 1843, 1833, 1847, 1846, 1838, 1842, 1846, 1847, 1848, + 1792, 1797, 1786, 1791, 1794, 1795, 1793, 1789, 1790, 1794, + 1795, 1796, 1796, 1798, 1799, 1800, 1801, 1804, 1802, 1803, + 1801, 1797, 1798, 1802, 1805, 1803, 1806, 1807, 1809, 1809, + 1810, 1814, 1799, 1805, 1800, 1804, 1811, 1812, 1812, 1815, + 1809, 1807, 1813, 1814, 1806, 1811, 1817, 1816, 1810, 1820, + 1820, 1813, 1816, 1822, 1823, 1824, 1822, 1826, 1828, 1817, + 1815, 1827, 1829, 1836, 1828, 1830, 1830, 1831, 1833, 1831, + 1823, 1824, 1826, 1832, 1832, 1827, 1833, 1835, 1838, 1829, + 1837, 1837, 1839, 1836, 1835, 1840, 1841, 1838, 1842, 1843, + 1844, 1847, 1848, 1845, 1849, 1849, 1850, 1840, 1841, 1845, - 1839, 1844, 1841, 1850, 1837, 1845, 1852, 1851, 1850, 1851, - 1853, 1854, 1856, 1858, 1859, 1853, 1860, 1862, 1854, 1848, - 1861, 1856, 1861, 1859, 1852, 1864, 1865, 1864, 1860, 1866, - 1866, 1858, 1867, 1868, 1870, 1869, 1862, 1869, 1868, 1870, - 1865, 1871, 1872, 1873, 1874, 1877, 1871, 1875, 1876, 1879, - 1874, 1880, 1875, 1877, 1881, 1881, 1882, 1882, 1867, 1883, - 1872, 1876, 1884, 1873, 1885, 1880, 1886, 1887, 1879, 1887, - 1885, 1886, 1888, 1889, 1883, 1890, 1890, 1892, 1892, 1891, - 1896, 1889, 1884, 1893, 1893, 1894, 1900, 1895, 1898, 1889, - 1888, 1891, 1895, 1899, 1894, 1899, 1901, 1898, 1896, 1902, + 1842, 1851, 1853, 1839, 1848, 1844, 1852, 1853, 1854, 1852, + 0, 1847, 1845, 1856, 1850, 1843, 1858, 1857, 1856, 1857, + 1859, 1851, 1860, 1862, 1864, 1859, 1865, 1866, 1854, 1860, + 1868, 1867, 1862, 1867, 1858, 1865, 1870, 1871, 1870, 1866, + 1872, 1872, 1864, 1873, 1875, 1874, 1875, 1876, 1877, 1868, + 1874, 1871, 1876, 1877, 1878, 1879, 1880, 1882, 1881, 1883, + 1885, 1889, 1880, 1881, 1886, 1887, 1887, 1883, 1890, 1873, + 1882, 1891, 1878, 1888, 1888, 1879, 1889, 1891, 1886, 1885, + 1892, 1893, 1894, 1893, 1897, 1892, 1895, 1902, 1890, 1896, + 1896, 1898, 1898, 1906, 1895, 1900, 1897, 1899, 1899, 1904, - 1898, 1901, 1901, 1903, 1905, 1906, 1907, 1900, 1902, 1909, - 1906, 1907, 1910, 1913, 1911, 1903, 1905, 1912, 1912, 1914, - 1915, 1916, 1909, 1911, 1917, 1921, 1919, 1933, 1920, 1922, - 1930, 1913, 1910, 1924, 1922, 1916, 1915, 1914, 1919, 1917, - 1920, 1923, 1924, 1927, 1929, 1921, 1923, 1932, 1931, 1927, - 1929, 1934, 1933, 1930, 1935, 1935, 1938, 1936, 1937, 1937, - 1934, 1941, 1927, 1931, 1939, 1932, 1936, 1940, 1939, 0, - 1947, 1942, 1940, 1943, 1941, 1938, 1942, 1942, 1944, 1943, - 1945, 1946, 1952, 1945, 1944, 1950, 1950, 1951, 1951, 1946, - 1947, 1952, 1953, 1953, 1954, 1954, 1955, 1956, 1957, 1964, + 1894, 1901, 1895, 1917, 1900, 1902, 1901, 1905, 1904, 1905, + 1907, 1904, 1908, 1909, 1906, 1907, 1907, 1910, 1912, 1916, + 1913, 1914, 1909, 1917, 1908, 1913, 1914, 1918, 1920, 1910, + 1912, 1921, 1916, 1919, 1919, 1922, 1918, 1928, 1923, 1924, + 1929, 1926, 1930, 1927, 1937, 1929, 1920, 1930, 1938, 1921, + 1931, 1922, 1923, 1926, 1924, 1927, 1934, 1928, 1936, 1931, + 1939, 1940, 1934, 1938, 1936, 1941, 1945, 1937, 1942, 1942, + 1943, 1944, 1944, 1946, 1941, 1934, 1947, 1946, 1939, 1943, + 1948, 1947, 1949, 1950, 1951, 1945, 1940, 1949, 1949, 1950, + 1951, 1952, 1953, 1948, 1952, 1954, 1957, 1957, 1958, 1958, - 1958, 1965, 1951, 1964, 1957, 1958, 1959, 1959, 1955, 1960, - 1960, 1961, 1962, 1951, 1968, 1956, 1961, 1969, 1962, 1966, - 1970, 1965, 1969, 1966, 1972, 1971, 1973, 1975, 1976, 1972, - 1974, 1977, 1979, 1976, 1978, 1978, 1979, 1980, 1982, 1968, - 1971, 1984, 1983, 1970, 1973, 1981, 1974, 1975, 1986, 1987, - 1981, 1985, 1980, 1977, 1983, 1990, 1985, 1988, 1988, 1991, - 1984, 1986, 1992, 1990, 1982, 1993, 1994, 1987, 1995, 2000, - 1996, 1997, 1998, 2001, 2001, 2004, 2002, 2009, 1991, 2002, - 2040, 1992, 2003, 1997, 2000, 2005, 2040, 1995, 1993, 2004, - 1994, 1996, 2009, 1998, 2010, 2003, 2006, 2006, 2005, 2007, + 1953, 1959, 1960, 1960, 1961, 1961, 1962, 1963, 1964, 1975, + 1959, 1965, 1968, 1958, 1964, 1954, 1965, 1968, 1962, 1966, + 1966, 1967, 1967, 1969, 1958, 1963, 1971, 1972, 1973, 1969, + 1971, 1976, 1973, 1977, 1975, 1978, 1976, 1979, 1981, 1980, + 1982, 1983, 1979, 1984, 1985, 1985, 1983, 1972, 1986, 1987, + 1978, 1989, 1986, 1988, 1981, 1990, 1977, 1980, 1988, 1991, + 1982, 1992, 1993, 1994, 1987, 1984, 1992, 1990, 1995, 1995, + 1998, 1997, 1999, 2000, 2001, 1993, 2002, 1989, 1991, 1997, + 2003, 1994, 2004, 2005, 2007, 2008, 2008, 2009, 2011, 1998, + 2009, 1999, 2010, 2012, 2004, 2002, 2000, 0, 2001, 2007, - 2007, 2008, 2008, 2011, 2011, 2012, 2014, 2010, 2013, 2013, - 2016, 2014, 2017, 2018, 2012, 2016, 2019, 2012, 2020, 2020, - 2021, 2021, 2022, 2023, 2023, 2024, 2025, 2025, 2019, 2026, - 2027, 2030, 2017, 2018, 2032, 2027, 2028, 2028, 2029, 2029, - 2031, 2022, 2033, 2024, 2026, 2030, 2035, 2037, 2032, 2031, - 2039, 2035, 2036, 2036, 2038, 2038, 2041, 2042, 2042, 2041, - 2044, 2033, 2043, 2043, 2046, 2045, 2037, 2049, 2039, 2047, - 2047, 2050, 2052, 2042, 2051, 2060, 2052, 2053, 2053, 2044, - 2045, 2054, 2056, 2046, 2057, 2055, 2061, 2049, 2062, 2051, - 2055, 2059, 2059, 2061, 2050, 2060, 2063, 2056, 2064, 2057, + 2016, 2003, 2011, 2017, 2005, 2010, 2012, 2013, 2013, 2014, + 2014, 2015, 2015, 2018, 2018, 2016, 2017, 2019, 2020, 2020, + 2021, 2024, 2023, 2025, 2026, 2021, 2019, 2023, 2029, 2019, + 2027, 2027, 2028, 2028, 2030, 2030, 2026, 2031, 2032, 2032, + 2034, 2024, 2033, 2025, 2037, 2034, 2039, 2029, 2035, 2035, + 2036, 2036, 2038, 2040, 2042, 2031, 2044, 2033, 2037, 2042, + 2039, 2038, 2043, 2043, 2045, 2045, 2046, 2047, 2048, 2049, + 2049, 2048, 2040, 2047, 2051, 2044, 2050, 2050, 2053, 2052, + 2054, 2054, 2056, 2057, 2046, 2049, 2058, 2059, 2060, 2060, + 2061, 2059, 2063, 2051, 2052, 2062, 2064, 2053, 2066, 2066, - 2054, 2065, 2062, 2066, 2066, 2068, 2067, 2068, 2069, 2071, - 2074, 2069, 2072, 2073, 2063, 2067, 2064, 2072, 2073, 2075, - 2076, 2071, 2078, 2082, 2077, 2080, 2069, 2065, 2069, 2077, - 2080, 2081, 2075, 2083, 2084, 2074, 2081, 2085, 2082, 2083, - 2086, 2076, 2087, 2085, 2088, 2086, 2089, 2087, 2078, 2090, - 2095, 2091, 2090, 2092, 2093, 2084, 2094, 2100, 0, 2089, - 2091, 2096, 2092, 2093, 2095, 2094, 2097, 2096, 2108, 2088, - 2098, 2102, 2097, 2104, 2098, 2103, 2103, 2100, 2106, 2104, - 2102, 2105, 2105, 2109, 2108, 2110, 2110, 2111, 2112, 2114, - 2105, 2115, 2117, 2116, 2121, 2123, 2123, 2112, 2106, 2109, + 2062, 2058, 2056, 2067, 2069, 2068, 2057, 2063, 2070, 2061, + 2071, 2064, 2068, 2072, 2073, 2073, 2074, 2075, 2069, 2075, + 2079, 2082, 2086, 2067, 2076, 2074, 2070, 2076, 2071, 2078, + 2083, 2080, 2079, 2081, 2084, 2078, 2080, 2092, 2081, 2072, + 2085, 2090, 2076, 2083, 2076, 2085, 2082, 2088, 2086, 2089, + 2096, 2091, 2088, 2093, 2089, 2084, 2090, 2091, 2092, 2093, + 2094, 2095, 2099, 2097, 2098, 2094, 2095, 2098, 2100, 2101, + 2102, 2099, 2103, 2108, 2104, 2096, 2097, 2100, 2101, 2102, + 2104, 2105, 2110, 2116, 2106, 2114, 2103, 2105, 2106, 2111, + 2111, 2110, 2112, 2108, 2113, 2113, 2117, 2120, 2112, 2116, - 2106, 2114, 2111, 2119, 2117, 2120, 2119, 2115, 2116, 2122, - 2120, 2124, 2124, 2128, 2121, 2126, 2126, 2127, 2128, 2129, - 2127, 2122, 2130, 2131, 2131, 2129, 2132, 2134, 2130, 2133, - 2133, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2147, 2134, - 2132, 2138, 2140, 2142, 0, 2135, 2143, 2142, 2146, 2143, - 2139, 2136, 2144, 2144, 2145, 2150, 2148, 2146, 2147, 2145, - 2148, 2149, 2149, 2153, 2152, 2154, 2155, 2156, 2150, 2152, - 2157, 2156, 2158, 2159, 2161, 2160, 2166, 2158, 2163, 2159, - 2155, 2160, 2164, 2153, 2166, 2154, 2167, 2164, 2167, 2165, - 2157, 2170, 2161, 2173, 2163, 2165, 2171, 2171, 2172, 2174, + 2118, 2118, 2119, 2113, 2122, 2114, 2120, 2114, 2123, 2125, + 2124, 2127, 2117, 2128, 2127, 2129, 2122, 2119, 2128, 2130, + 0, 2125, 2131, 2131, 2123, 2124, 2132, 2132, 2134, 2134, + 2135, 2130, 2136, 2135, 2137, 2129, 2138, 2136, 2139, 2139, + 2137, 2140, 2138, 2141, 2141, 2142, 2143, 2144, 2145, 2145, + 2146, 2147, 2155, 2148, 0, 2140, 2146, 2142, 2148, 2150, + 2143, 2151, 2154, 2150, 2151, 2147, 2144, 2152, 2152, 2153, + 2158, 2154, 2155, 2156, 2153, 2157, 2157, 2156, 2161, 2160, + 2162, 2163, 2164, 2158, 2160, 2165, 2164, 2166, 2167, 2169, + 2168, 2174, 2166, 2171, 2167, 2163, 2168, 2172, 2161, 2174, - 2174, 2172, 2176, 2177, 2178, 2170, 2176, 2179, 2179, 2177, - 2185, 2180, 2183, 2183, 2188, 2187, 2178, 2191, 2192, 2173, - 2180, 2193, 2191, 2195, 2195, 2199, 2193, 2194, 2185, 2187, - 2188, 2199, 2194, 2197, 2197, 2200, 2200, 2201, 2202, 2205, - 2203, 2209, 2206, 2210, 2192, 2203, 2207, 2207, 2211, 2210, - 2209, 2216, 2212, 2201, 2206, 2214, 2214, 2217, 2205, 2215, - 2202, 2222, 2215, 2219, 2219, 2223, 2211, 2212, 2220, 2220, - 2216, 2221, 2224, 2226, 2223, 2217, 2221, 2224, 2225, 2222, - 2225, 2227, 2228, 2229, 2230, 2231, 0, 2226, 2229, 2237, - 2231, 2232, 2232, 2236, 2228, 2227, 2233, 2233, 2234, 2234, + 2162, 2175, 2172, 2175, 2173, 2165, 2178, 2169, 2181, 2171, + 2173, 2179, 2179, 2180, 2182, 2182, 2180, 2184, 2185, 2186, + 2178, 2184, 2187, 2187, 2185, 2193, 2188, 2191, 2191, 2196, + 2195, 2186, 2199, 2200, 2181, 2188, 2201, 2199, 2203, 2203, + 2207, 2201, 2202, 2193, 2195, 2196, 2207, 2202, 2205, 2205, + 2208, 2208, 2209, 2210, 2213, 2211, 2217, 2214, 2218, 2200, + 2211, 2215, 2215, 2219, 2218, 2217, 2224, 2220, 2209, 2214, + 2222, 2222, 2225, 2213, 2223, 2210, 2230, 2223, 2227, 2227, + 2231, 2219, 2220, 2228, 2228, 2224, 2229, 2232, 2234, 2231, + 2225, 2229, 2232, 2233, 2230, 2233, 2235, 2236, 2237, 2238, - 2235, 2235, 2241, 2238, 2230, 2236, 2242, 2237, 2238, 2239, - 2239, 2240, 2240, 2243, 2241, 2244, 2245, 2245, 2242, 2246, - 2247, 2247, 2248, 2248, 2249, 2250, 2253, 2251, 2252, 2255, - 2256, 2244, 2259, 2243, 2251, 2249, 2254, 2250, 2246, 2258, - 2252, 2254, 2257, 2257, 2260, 2262, 2253, 2261, 2258, 2255, - 2256, 2263, 2264, 2264, 2265, 2266, 2267, 2269, 2259, 2270, - 2261, 2271, 2274, 2265, 2260, 2263, 2273, 2274, 0, 2262, - 2266, 2267, 2275, 2272, 2283, 2269, 2272, 2275, 2276, 2276, - 2273, 2270, 2277, 2277, 2271, 2278, 2278, 2280, 2280, 2282, - 2282, 2284, 2283, 2285, 2287, 2288, 2289, 2290, 2291, 2292, + 2239, 2240, 2234, 2237, 2241, 2241, 2240, 2242, 2242, 2236, + 2235, 2243, 2243, 2244, 2244, 2245, 2246, 2247, 2250, 2238, + 2239, 2251, 2247, 2248, 2248, 2249, 2249, 2245, 2252, 2253, + 2250, 2254, 2254, 2251, 2246, 2255, 2256, 2256, 2257, 2257, + 2258, 2259, 2260, 2261, 2262, 2253, 2264, 2263, 2252, 2260, + 2265, 2258, 2263, 2259, 2255, 2261, 2266, 2266, 2267, 2268, + 2269, 2270, 2271, 2272, 2262, 2278, 2264, 2267, 2273, 2273, + 2265, 2279, 2274, 2275, 2270, 2276, 2280, 2272, 2282, 2281, + 2269, 2274, 2281, 2278, 2283, 2268, 2271, 0, 2275, 2283, + 2276, 2284, 2282, 2279, 2285, 2285, 2284, 2286, 2286, 2280, - 2294, 2293, 2284, 2293, 2295, 2296, 2300, 2291, 2297, 2297, - 2299, 2299, 2285, 2288, 2287, 2301, 2306, 2290, 2289, 2292, - 2294, 2304, 2295, 2296, 2301, 2302, 2302, 2307, 2300, 2308, - 2304, 2305, 2305, 2309, 2306, 2310, 2308, 2311, 2312, 2313, - 2314, 2314, 2315, 2315, 2316, 2307, 2317, 2318, 2309, 2319, - 2316, 2320, 2321, 2310, 2312, 2311, 2320, 2322, 2313, 2324, - 2323, 2324, 2318, 2329, 2317, 2323, 2325, 2325, 2319, 2326, - 2331, 2326, 2321, 2327, 2327, 2332, 2333, 2322, 2334, 2331, - 2335, 2336, 2329, 2337, 2340, 2335, 2341, 2344, 2333, 2341, - 2342, 2342, 2343, 2346, 2332, 2345, 2345, 2346, 2334, 2348, + 2287, 2287, 2289, 2289, 2291, 2291, 2292, 2293, 2294, 2296, + 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2302, 2293, 2304, + 2305, 2309, 2300, 0, 2292, 2306, 2306, 2294, 2297, 2296, + 2308, 2308, 2299, 2298, 2301, 2310, 2303, 2304, 2305, 2311, + 2311, 2313, 2315, 2309, 2310, 2314, 2314, 2316, 2317, 2318, + 2313, 2319, 2320, 2325, 2322, 2317, 2321, 2323, 2323, 2325, + 2315, 2324, 2324, 2326, 2318, 2316, 2328, 2327, 2330, 2319, + 2320, 2329, 2321, 2322, 2331, 2332, 2329, 2333, 2338, 2333, + 2332, 2326, 2327, 2334, 2334, 2328, 2340, 2335, 2330, 2335, + 2336, 2336, 2341, 2342, 2331, 2340, 2343, 2338, 2344, 2345, - 2351, 2336, 2337, 2353, 2340, 2344, 2349, 2343, 2350, 2350, - 2349, 2354, 2355, 2351, 2348, 2356, 2356, 2358, 2353, 2359, - 2360, 2361, 2361, 2362, 2360, 2363, 2363, 2365, 2359, 2358, - 2364, 2354, 2355, 2366, 2367, 2364, 2365, 2368, 2368, 2373, - 2373, 2374, 2362, 2375, 2375, 2376, 2367, 2377, 2378, 2366, - 2379, 2380, 2380, 2381, 2383, 2383, 2386, 2378, 2376, 2379, - 2377, 2386, 2387, 2374, 2388, 2389, 2390, 2387, 2381, 2391, - 2389, 2392, 2395, 2393, 2390, 2398, 2401, 2396, 2388, 2397, - 2392, 2393, 2396, 2401, 2397, 2399, 2399, 2395, 2391, 2402, - 2398, 2400, 2400, 2403, 2402, 2404, 2405, 2408, 2406, 2407, + 2352, 2346, 2349, 2344, 2350, 2342, 2353, 2350, 2351, 2351, + 2355, 2341, 2354, 2354, 2355, 2352, 2343, 2357, 2360, 2345, + 2346, 2358, 2349, 2362, 2353, 2358, 2359, 2359, 2363, 2364, + 2367, 2360, 2357, 2365, 2365, 2368, 2369, 2371, 2362, 2375, + 2369, 2377, 2367, 2384, 2368, 2370, 2370, 2373, 2363, 2364, + 2372, 2372, 2373, 2374, 2376, 2375, 2371, 2378, 2378, 2383, + 2383, 2377, 2374, 2385, 2385, 2384, 2376, 2386, 2387, 2388, + 2389, 2390, 2390, 2391, 2393, 2393, 2398, 2396, 2388, 2389, + 2386, 2387, 2396, 2401, 2397, 2400, 2399, 2402, 2391, 2397, + 2398, 2399, 2403, 2400, 2405, 2408, 2402, 2413, 2406, 2407, - 2407, 2409, 2405, 2406, 2410, 2410, 2409, 2411, 2411, 2414, - 0, 2403, 2408, 2404, 2415, 2415, 2416, 2426, 2417, 2416, - 2418, 2419, 2414, 2417, 2417, 2418, 2419, 2420, 2421, 2422, - 2423, 2424, 2421, 2420, 2422, 2425, 2427, 2430, 2426, 2423, - 2429, 2428, 2427, 2425, 2435, 2429, 2424, 2428, 2432, 2430, - 2437, 2433, 2438, 2432, 2433, 2437, 2435, 2438, 2439, 2440, - 2441, 2442, 2443, 2443, 2444, 2447, 2448, 2453, 2449, 2441, - 2442, 2451, 2440, 2444, 2450, 2450, 2439, 2454, 2454, 2452, - 2455, 2457, 2453, 2459, 2447, 2460, 2448, 2449, 2452, 2460, - 2451, 2461, 2461, 2462, 2463, 2464, 2457, 0, 2465, 2455, + 2403, 2414, 2401, 2406, 2407, 2409, 2409, 2410, 2410, 2405, + 2408, 2411, 2412, 2418, 2415, 2413, 2416, 2412, 2411, 2414, + 2415, 2416, 2417, 2417, 2419, 2420, 2420, 2424, 2418, 2419, + 2421, 2421, 2425, 2425, 2426, 2436, 2427, 2426, 2428, 2429, + 2424, 2427, 2427, 2428, 2429, 2430, 2431, 2432, 2433, 2434, + 2431, 2430, 2432, 2435, 2437, 2440, 2436, 2433, 2439, 2438, + 2437, 2435, 2445, 2439, 2434, 2438, 2442, 2440, 2447, 2443, + 2448, 2442, 2443, 2447, 2445, 2448, 2449, 2450, 2451, 2452, + 2453, 2453, 2454, 2457, 2458, 2463, 2459, 2451, 2452, 2461, + 2450, 2454, 2460, 2460, 2449, 2464, 2464, 2462, 2465, 2467, - 2463, 2464, 2467, 2459, 2465, 2466, 2466, 2468, 2470, 2471, - 2467, 2473, 2468, 2474, 2475, 2473, 2478, 2470, 2462, 2477, - 2477, 2488, 2471, 2479, 2479, 2480, 2480, 2474, 2483, 2475, - 2482, 2482, 2483, 2484, 2478, 2486, 2486, 2489, 2484, 2490, - 2491, 2488, 2489, 2493, 2501, 2491, 2491, 2494, 2494, 2496, - 2496, 2490, 2497, 2497, 2498, 2499, 2503, 2498, 2504, 2504, - 2505, 2505, 2501, 2493, 2506, 2506, 2507, 2509, 2499, 2508, - 2508, 2510, 2511, 2512, 2513, 2513, 2503, 2518, 2514, 2512, - 2509, 2507, 2514, 2519, 2520, 2517, 2511, 2521, 2522, 2510, - 2517, 2517, 2523, 2521, 2522, 2524, 2525, 2525, 2533, 2524, + 2463, 2469, 2457, 2470, 2458, 2459, 2462, 2470, 2461, 2471, + 2471, 2472, 2473, 2474, 2467, 0, 2475, 2465, 2473, 2474, + 2477, 2469, 2475, 2476, 2476, 2478, 2480, 2481, 2477, 2483, + 2478, 2484, 2485, 2483, 2488, 2480, 2472, 2487, 2487, 2498, + 2481, 2489, 2489, 2490, 2490, 2484, 2493, 2485, 2492, 2492, + 2493, 2494, 2488, 2496, 2496, 2499, 2494, 2500, 2501, 2498, + 2499, 2502, 2504, 2501, 2501, 2505, 2505, 2507, 2507, 2500, + 2508, 2508, 2509, 2502, 2510, 2509, 2512, 2514, 2515, 2515, + 2516, 2516, 2504, 2517, 2517, 2518, 2520, 2510, 2519, 2519, + 2521, 2522, 2523, 2529, 2512, 2524, 2524, 2514, 2523, 2520, - 2518, 2528, 2530, 2519, 2520, 2531, 2528, 2535, 2531, 2534, - 2530, 2536, 2534, 2537, 2538, 2539, 2536, 2523, 2540, 2540, - 2544, 2541, 2543, 2533, 2535, 2535, 2547, 2542, 2553, 2539, - 2542, 2537, 2545, 2556, 2538, 2541, 2543, 2546, 2542, 2544, - 2545, 0, 2546, 2546, 2553, 2547, 2548, 2548, 2549, 2549, - 2550, 2550, 2551, 2551, 2552, 2552, 2554, 2555, 2557, 2556, - 2558, 2554, 2559, 2561, 2561, 2562, 2563, 2557, 2562, 2565, - 2565, 2566, 2567, 2567, 2568, 2570, 2570, 2555, 2566, 2568, - 2558, 2571, 2559, 2572, 2563, 2573, 2575, 2576, 2576, 2577, - 2571, 2578, 2572, 2577, 2573, 2579, 2580, 2582, 2581, 2583, + 2518, 2530, 2525, 2531, 2528, 2522, 2525, 2532, 2521, 2528, + 2528, 2533, 2534, 2532, 2535, 2544, 2529, 2533, 2535, 2536, + 2536, 2530, 2539, 2531, 2541, 2542, 2545, 2539, 2542, 2545, + 2546, 2547, 2541, 2548, 2549, 2550, 2547, 2534, 2551, 2551, + 2544, 2552, 2553, 2554, 2555, 2553, 2558, 2546, 2546, 2550, + 2556, 2548, 2567, 2553, 2549, 2552, 2557, 2554, 2556, 2559, + 2559, 2557, 2557, 2555, 2564, 2558, 2560, 2560, 2561, 2561, + 2562, 2562, 2563, 2563, 2565, 2566, 2568, 2569, 2567, 2565, + 2564, 2570, 2572, 2572, 2573, 2568, 2574, 2573, 2576, 2576, + 2586, 2577, 2578, 2578, 2579, 2566, 2582, 2569, 2577, 2579, - 2578, 2580, 2580, 2583, 2575, 2591, 2582, 2587, 2588, 2588, - 2579, 2581, 2587, 2590, 2590, 2592, 2593, 2595, 2596, 2591, - 2599, 2601, 2600, 2602, 2604, 2606, 2595, 2608, 2609, 2602, - 2596, 2600, 2608, 2609, 2593, 2611, 2604, 2610, 2610, 2620, - 2592, 2601, 2613, 2621, 2611, 2599, 2606, 2613, 2614, 2614, - 2616, 2616, 2614, 2617, 2617, 2618, 2618, 2619, 2622, 2620, - 2625, 2624, 2621, 2622, 2626, 2625, 2619, 2624, 2628, 2626, - 2627, 2627, 2629, 2630, 2631, 2632, 2633, 2637, 2630, 2634, - 2634, 2632, 2637, 2636, 2638, 2640, 2628, 2636, 2641, 2638, - 2639, 2639, 2631, 2629, 2642, 2644, 2644, 2646, 2647, 2649, + 2583, 2570, 2581, 2581, 2574, 2582, 2584, 2592, 2586, 2583, + 2587, 2587, 2588, 2589, 2590, 2584, 2588, 2593, 2591, 2603, + 2592, 2594, 2589, 2591, 2591, 2594, 2593, 2598, 2602, 2590, + 2599, 2599, 2598, 2601, 2601, 2604, 2606, 2606, 2607, 2608, + 2611, 2612, 2602, 2613, 2603, 2616, 2614, 2607, 2618, 2620, + 2612, 2608, 2614, 2604, 2620, 2621, 2707, 2616, 2622, 2622, + 2621, 2623, 2625, 2613, 2632, 2611, 2633, 2625, 2707, 2618, + 2623, 2626, 2626, 2628, 2628, 2626, 2629, 2629, 2630, 2630, + 2631, 2634, 2636, 2640, 2632, 2633, 2634, 2637, 2636, 2631, + 2638, 2641, 2637, 2639, 2639, 2638, 2643, 2642, 2644, 2645, - 2650, 2633, 2648, 2641, 2640, 2651, 2648, 2652, 2649, 2654, - 2646, 2647, 2653, 2656, 2642, 2652, 2650, 2653, 2655, 2655, - 2658, 2658, 2659, 2659, 2651, 2661, 2663, 2663, 2665, 2666, - 2671, 2667, 2656, 2668, 2672, 2654, 2670, 2670, 2668, 2673, - 2675, 2675, 2676, 2677, 2665, 2666, 2661, 2667, 2678, 2678, - 2671, 2681, 2684, 2682, 2693, 2683, 2676, 2672, 2673, 2682, - 2683, 2687, 2677, 2685, 2685, 2686, 2686, 2688, 2688, 2689, - 2690, 2681, 2691, 2693, 2684, 2695, 2692, 2694, 0, 2690, - 2689, 2687, 2692, 2696, 2696, 2697, 2702, 2688, 2697, 2694, - 2698, 2698, 2691, 2703, 2704, 2695, 2705, 2705, 2702, 2706, + 2652, 2640, 2642, 2648, 2644, 2646, 2646, 2648, 2649, 2654, + 2650, 2653, 2641, 2649, 2643, 2650, 2651, 2651, 2658, 2652, + 2656, 2656, 2659, 2660, 2645, 2661, 2653, 2660, 2662, 2654, + 2663, 2658, 2664, 2665, 2661, 2659, 2666, 2668, 2665, 2673, + 2664, 2667, 2667, 2677, 2662, 2670, 2670, 2671, 2671, 2663, + 2675, 2675, 2678, 2679, 2682, 2682, 2668, 2683, 2680, 2677, + 2673, 2684, 2666, 2680, 2685, 2687, 2687, 2688, 2678, 2679, + 2689, 2690, 2690, 2693, 2694, 2697, 2700, 2683, 2698, 2698, + 2694, 2688, 2695, 2685, 2684, 2699, 2699, 2695, 2702, 2689, + 2701, 2701, 2703, 2693, 2704, 2708, 2700, 2697, 2705, 2702, - 2704, 2707, 2706, 2708, 2710, 2711, 2712, 2707, 2713, 2710, - 2711, 2714, 2717, 2703, 2713, 2715, 2715, 2718, 2719, 2720, - 2722, 2708, 2721, 2721, 2717, 2712, 2728, 2723, 2714, 2714, - 2725, 2725, 2720, 2726, 2726, 2718, 2723, 2727, 2738, 2722, - 2728, 2729, 2727, 2719, 2730, 2730, 2729, 2731, 2731, 2732, - 2732, 2733, 2735, 2735, 2740, 2741, 2733, 2738, 2742, 2743, - 2743, 2745, 2745, 2747, 2746, 2748, 2749, 2749, 2750, 2750, - 2753, 2796, 2754, 2752, 2748, 2796, 2740, 2741, 2746, 2752, - 2742, 2755, 2762, 2747, 2758, 2758, 2755, 2760, 2760, 2761, - 2753, 2754, 2763, 2764, 2761, 2765, 2762, 2767, 2763, 2766, + 2706, 2703, 2709, 2709, 2705, 2710, 2711, 2711, 2710, 2715, + 2701, 2716, 2717, 0, 2704, 2708, 2718, 2718, 2717, 2706, + 2719, 2715, 2720, 2719, 2721, 2723, 2725, 2724, 2720, 2726, + 2723, 2716, 2724, 2727, 2730, 2726, 2728, 2728, 2731, 2732, + 2733, 2735, 2721, 2734, 2734, 2725, 2730, 2740, 2736, 2741, + 2727, 2727, 2740, 2733, 2738, 2738, 2731, 2736, 2739, 2739, + 2735, 2742, 2751, 2741, 2732, 2753, 2742, 2743, 2743, 2744, + 2744, 2745, 2745, 2746, 2748, 2748, 2754, 2755, 2746, 2756, + 2756, 2751, 2758, 2758, 2760, 2761, 2759, 2753, 2762, 2762, + 2763, 2763, 2766, 0, 2761, 2765, 2767, 2768, 2754, 2755, - 2766, 2769, 2767, 2765, 2770, 2764, 2771, 2772, 2773, 2775, - 2776, 2771, 2777, 2778, 2773, 2780, 2779, 2775, 2781, 2772, - 2782, 2769, 2783, 2785, 2770, 2786, 2790, 2783, 2785, 2776, - 2863, 2780, 2777, 2778, 2779, 2781, 2781, 2787, 2791, 2788, - 0, 2782, 2863, 2787, 2788, 2786, 2790, 2794, 2794, 2795, - 2795, 2791, 2800, 2800, 2802, 2802, 2803, 2803, 2806, 2803, - 2804, 2804, 2806, 2804, 2805, 2805, 2809, 2805, 2808, 2808, - 2813, 2810, 2814, 2815, 2816, 2816, 2819, 2821, 2815, 2820, - 2822, 2821, 2823, 0, 2809, 2810, 2820, 2825, 2830, 2822, - 2813, 2826, 2814, 2827, 2827, 2828, 2828, 2823, 2829, 2829, + 2759, 2765, 2768, 2775, 2760, 2771, 2771, 2773, 2773, 2774, + 2776, 2777, 2766, 2778, 2774, 2767, 2776, 2775, 2779, 2779, + 2780, 2778, 2782, 2777, 2783, 2780, 2784, 2785, 2786, 2788, + 2789, 2784, 2790, 2791, 2786, 2793, 2792, 2788, 2794, 2785, + 2795, 2796, 2782, 2798, 2783, 2799, 2796, 2803, 2798, 2789, + 0, 2793, 2790, 2791, 2792, 2794, 2794, 2800, 2804, 2801, + 0, 2795, 2809, 2800, 2801, 2799, 2809, 2803, 2807, 2807, + 2822, 2804, 2808, 2808, 2813, 2813, 2815, 2815, 2816, 2816, + 2819, 2816, 2817, 2817, 2819, 2817, 2818, 2818, 2822, 2818, + 2821, 2821, 2823, 2826, 2827, 2828, 2829, 2829, 2832, 2834, - 2826, 2819, 2831, 2830, 2832, 2825, 2833, 2831, 2834, 2835, - 2836, 2833, 2833, 2832, 2834, 2837, 2832, 2838, 2839, 2840, - 2841, 2841, 2838, 2839, 2842, 2836, 2843, 2844, 2844, 2870, - 2842, 2912, 2843, 0, 2835, 2912, 2837, 2846, 2840, 2845, - 2845, 2870, 2846, 2849, 2849, 2852, 2852, 2853, 2853, 2854, - 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2860, - 2861, 2861, 2862, 2864, 2868, 2866, 2867, 2867, 2860, 2869, - 2872, 2862, 2871, 2871, 2873, 2873, 2876, 2877, 2878, 2868, - 2877, 2880, 2869, 2864, 2866, 2872, 2879, 2879, 2882, 2883, - 2886, 2882, 2884, 2885, 2876, 2883, 2887, 2888, 2885, 2880, + 2828, 2833, 2835, 2834, 2836, 2844, 2823, 2838, 2833, 2839, + 2844, 2835, 2848, 2826, 2827, 2840, 2840, 2843, 2839, 2836, + 2841, 2841, 2845, 2832, 2846, 2838, 2842, 2842, 2849, 2846, + 2846, 2845, 2843, 2847, 2845, 2850, 2851, 2848, 2853, 2847, + 2852, 2851, 2855, 2849, 2856, 2852, 2854, 2854, 2855, 0, + 2856, 2857, 2857, 2858, 2858, 2859, 2850, 2853, 2862, 2862, + 2859, 2865, 2865, 2866, 2866, 2867, 2867, 2868, 2868, 2869, + 2869, 2870, 2870, 2871, 2871, 2873, 2874, 2874, 2875, 2876, + 2877, 2881, 2879, 2883, 2873, 2880, 2880, 2875, 2885, 2882, + 2889, 2876, 2884, 2884, 2891, 2883, 2881, 2886, 2886, 2893, - 2894, 2890, 2891, 2905, 2878, 2903, 2884, 2890, 2903, 2886, - 2910, 2891, 2914, 2888, 2887, 2894, 2905, 2906, 2906, 2907, - 2907, 2908, 2908, 2911, 2913, 2916, 2914, 2917, 2919, 2918, - 2919, 2920, 2911, 2910, 2918, 2921, 2921, 2922, 2917, 2923, - 2925, 2924, 2926, 2928, 2913, 2927, 2920, 2930, 2916, 2929, - 2922, 2931, 2928, 2937, 0, 2936, 2925, 2932, 2923, 2924, - 2927, 2929, 2932, 2938, 2938, 2939, 2944, 2926, 2930, 2936, - 2945, 2931, 2949, 2937, 2939, 2940, 2940, 2941, 2941, 2942, - 2942, 2943, 2943, 2946, 2947, 2944, 2946, 2948, 2950, 2947, - 2945, 2952, 2948, 2951, 2953, 2954, 2955, 2949, 2957, 2951, + 2877, 2879, 2882, 2885, 2890, 2892, 2892, 2890, 2889, 2895, + 2896, 2897, 2895, 2898, 2899, 2901, 2896, 2893, 2898, 2900, + 2891, 2903, 2918, 2904, 2907, 2897, 2916, 2903, 2923, 2916, + 2925, 2901, 2904, 2899, 2925, 2918, 2926, 2900, 2924, 2907, + 2919, 2919, 2920, 2920, 2921, 2921, 2927, 2924, 2929, 2931, + 2930, 2923, 2933, 2932, 2931, 2932, 2926, 2934, 2934, 2935, + 2927, 2930, 2936, 2938, 2937, 2939, 2941, 2933, 2940, 2944, + 2943, 2929, 2935, 2942, 2949, 2941, 2950, 2951, 2951, 2938, + 0, 2936, 2937, 2940, 2952, 2942, 2957, 2945, 2949, 2944, + 2939, 2943, 2945, 2952, 2953, 2953, 2950, 2954, 2954, 2955, - 2954, 2956, 2956, 2950, 2958, 2952, 2953, 2959, 2959, 2961, - 2963, 2966, 2966, 2957, 2967, 2967, 2955, 2968, 2969, 2972, - 2970, 2971, 2973, 2958, 2961, 2968, 2970, 2971, 2963, 2974, - 2979, 2975, 2980, 2972, 2985, 2973, 2975, 2969, 2976, 2976, - 2977, 2977, 2982, 2983, 2986, 2987, 2988, 2983, 2974, 2986, - 2989, 2979, 2980, 2990, 2985, 2991, 2982, 2992, 2996, 2988, - 2991, 2997, 2992, 2989, 2987, 2993, 2993, 2998, 2999, 2999, - 3000, 3001, 2990, 3002, 3002, 3000, 3003, 3001, 2996, 2997, - 3004, 3003, 3005, 3006, 3007, 3004, 2998, 3005, 3009, 3009, - 3007, 3010, 3011, 3011, 3013, 3014, 3010, 3015, 3013, 3016, + 2955, 2956, 2956, 2958, 2959, 2957, 2960, 2959, 2961, 2962, + 2963, 2960, 2964, 2961, 2965, 2966, 2967, 2968, 2964, 2969, + 2969, 2967, 2971, 2958, 2970, 2963, 2976, 2966, 2965, 2972, + 2972, 2974, 2979, 2979, 2962, 2980, 2980, 2968, 2982, 2970, + 2981, 2971, 2985, 2983, 2976, 2984, 2974, 2986, 2981, 2983, + 2987, 2984, 2992, 2988, 2989, 2989, 2985, 2982, 2988, 2993, + 2986, 2990, 2990, 2995, 2996, 2998, 2999, 3000, 2996, 2987, + 3001, 2999, 3003, 2992, 3002, 3004, 3005, 2995, 3009, 2993, + 3004, 3005, 3010, 3001, 3011, 2998, 3000, 3002, 3006, 3006, + 3013, 3003, 3012, 3012, 3016, 3013, 3014, 3019, 3009, 3016, - 3017, 3018, 3006, 3019, 3015, 3022, 3022, 3018, 3020, 3024, - 3024, 3025, 3026, 3027, 3014, 3028, 3029, 3026, 3016, 3017, - 3025, 3020, 3019, 3025, 3030, 3030, 3031, 3032, 3034, 3029, - 3036, 3031, 3027, 3041, 3028, 3035, 3035, 3037, 3037, 3039, - 3032, 3038, 3038, 3040, 3039, 3042, 3042, 3048, 3043, 3036, - 3040, 3050, 3041, 3043, 3034, 3044, 3046, 3044, 3045, 3045, - 3047, 3052, 3052, 3046, 3049, 3053, 3048, 3047, 3055, 3049, - 3050, 3056, 3057, 3055, 3058, 3062, 3056, 3059, 3059, 3061, - 3061, 3063, 3064, 3064, 3053, 3065, 3065, 0, 3066, 3068, - 3068, 3057, 3070, 3058, 3062, 3066, 3069, 3069, 3072, 3070, + 3010, 3017, 3014, 3011, 3015, 3015, 3017, 3018, 3020, 3022, + 3022, 3026, 3018, 3023, 3020, 3026, 3019, 3027, 3023, 3024, + 3024, 3028, 3029, 3030, 3031, 3032, 3033, 3047, 3028, 3040, + 3031, 3035, 3035, 3037, 3037, 3039, 3027, 3038, 3041, 3033, + 3039, 3029, 3030, 3042, 3032, 3045, 3038, 3044, 3040, 3038, + 3043, 3043, 3044, 3047, 3048, 3048, 3042, 3041, 3045, 3049, + 3050, 3050, 3051, 3051, 3052, 3053, 3054, 3055, 3055, 3052, + 3056, 3057, 3053, 3057, 3059, 3056, 3058, 3058, 3049, 3060, + 3061, 3059, 3062, 3063, 3066, 3054, 3060, 3062, 3065, 3065, + 3068, 3069, 3070, 3071, 3075, 3068, 3069, 3072, 3072, 3061, - 3063, 3075, 3076, 3072, 3077, 0, 3075, 3078, 3078, 3079, - 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3076, 0, 3077, 3083, 3083, 3083, 3083, 3083, 3083, - 3083, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, - 3085, 3085, 3085, 3085, 3085, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3089, - 3089, 0, 3089, 3089, 3089, 3089, 3090, 3090, 0, 0, - 0, 3090, 3090, 3091, 3091, 0, 0, 3091, 0, 3091, - 3092, 0, 0, 0, 0, 0, 3092, 3093, 3093, 0, - 0, 0, 3093, 3093, 3094, 0, 0, 0, 0, 0, + 3074, 3074, 3063, 3066, 3076, 3077, 3077, 3078, 3078, 3079, + 3089, 3070, 3071, 3075, 3081, 3081, 3079, 3082, 3082, 3083, + 3085, 3090, 3088, 3076, 0, 3085, 3083, 3088, 0, 3089, + 3091, 3091, 3092, 3092, 0, 0, 0, 0, 0, 0, + 3090, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3097, 3097, + 3097, 3097, 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, + 3098, 3098, 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3100, + 3100, 3100, 3100, 3100, 3100, 3100, 3102, 3102, 0, 3102, + 3102, 3102, 3102, 3103, 3103, 0, 0, 0, 3103, 3103, + 3104, 3104, 0, 0, 3104, 0, 3104, 3105, 0, 0, - 3094, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3096, 3096, - 0, 3096, 3096, 3096, 3096, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 0, 0, 0, 3105, 3106, 3106, 0, 0, 0, 3106, + 3106, 3107, 0, 0, 0, 0, 0, 3107, 3108, 3108, + 0, 3108, 3108, 3108, 3108, 3109, 3109, 0, 3109, 3109, + 3109, 3109, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, 3095, + 3095, 3095, 3095 } ; static yy_state_type yy_last_accepting_state; @@ -2972,7 +2980,7 @@ static void config_end_include(void) } #endif -#line 2973 "" +#line 2982 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2981,9 +2989,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2982 "" +#line 2991 "" -#line 2984 "" +#line 2993 "" #define INITIAL 0 #define quotedstring 1 @@ -3205,7 +3213,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3206 "" +#line 3215 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3238,13 +3246,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 >= 3083 ) + if ( yy_current_state >= 3096 ) 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] != 6016 ); + while ( yy_base[yy_current_state] != 6033 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4119,461 +4127,461 @@ YY_RULE_SETUP case 170: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } YY_BREAK case 171: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 172: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 173: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 174: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 175: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 176: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 384 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 178: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 180: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 181: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 182: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 183: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 184: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 185: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 186: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 187: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 188: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 189: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 190: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 191: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 192: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 193: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 195: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 196: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 197: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 198: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 199: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 200: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 201: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 202: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 203: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 204: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 205: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 206: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 207: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 208: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 209: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 210: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 211: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 212: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 213: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 214: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 215: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 216: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 217: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 218: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 219: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 220: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 221: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 222: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 223: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 224: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 225: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 226: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 227: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 228: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 233: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 234: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 235: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 445 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 239: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 240: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 241: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 260: YY_RULE_SETUP @@ -4588,200 +4596,205 @@ YY_RULE_SETUP case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 271: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 272: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 273: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 491 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 292: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 293: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 294: -/* rule 294 can match eol */ YY_RULE_SETUP #line 512 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 295: +/* rule 295 can match eol */ +YY_RULE_SETUP +#line 513 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 295: +case 296: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 516 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: -YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 297: -/* rule 297 can match eol */ YY_RULE_SETUP #line 522 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 298: +/* rule 298 can match eol */ +YY_RULE_SETUP +#line 523 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 299: YY_RULE_SETUP -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4794,34 +4807,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 299: +case 300: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 300: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 301: -/* rule 301 can match eol */ YY_RULE_SETUP #line 543 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 302: +/* rule 302 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 302: +case 303: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4834,38 +4847,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 303: +case 304: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 304: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 305: -/* rule 305 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 306: +/* rule 306 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 307: YY_RULE_SETUP #line 566 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 567 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4873,27 +4886,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 308: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4903,7 +4916,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 584 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4915,33 +4928,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 313: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4942 "" +#line 4956 "" case YY_END_OF_BUFFER: { @@ -5236,7 +5249,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 >= 3083 ) + if ( yy_current_state >= 3096 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5264,11 +5277,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 >= 3083 ) + if ( yy_current_state >= 3096 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3082); + yy_is_jam = (yy_current_state == 3095); return yy_is_jam ? 0 : yy_current_state; } @@ -5907,6 +5920,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d7c61c05b..74e5d767c 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -374,6 +374,7 @@ serve-expired-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL) } serve-expired-ttl-reset{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } serve-expired-reply-ttl{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } serve-expired-client-timeout{COLON} { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +serve-original-ttl{COLON} { YDVAR(1, VAR_SERVE_ORIGINAL_TTL) } fake-dsa{COLON} { YDVAR(1, VAR_FAKE_DSA) } fake-sha1{COLON} { YDVAR(1, VAR_FAKE_SHA1) } val-log-level{COLON} { YDVAR(1, VAR_VAL_LOG_LEVEL) } diff --git a/util/configparser.c b/util/configparser.c index 2c9b0a5c4..3538b1937 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -41,14 +40,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -65,8 +61,8 @@ -/* First part of user prologue. */ -#line 38 "./util/configparser.y" +/* Copy the first part of user declarations. */ +#line 38 "./util/configparser.y" /* yacc.c:339 */ #include "config.h" @@ -95,17 +91,13 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" +#line 95 "util/configparser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR -# if defined __cplusplus -# if 201103L <= __cplusplus -# define YY_NULLPTR nullptr -# else -# define YY_NULLPTR 0 -# endif +# if defined __cplusplus && 201103L <= __cplusplus +# define YY_NULLPTR nullptr # else -# define YY_NULLPTR ((void*)0) +# define YY_NULLPTR 0 # endif # endif @@ -117,8 +109,8 @@ extern struct config_parser_state* cfg_parser; # define YYERROR_VERBOSE 0 #endif -/* Use api.header.include to #include this header - instead of duplicating it here. */ +/* In a future release of Bison, this section will be replaced + by #include "configparser.h". */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -349,78 +341,79 @@ extern int yydebug; VAR_SERVE_EXPIRED_TTL_RESET = 470, VAR_SERVE_EXPIRED_REPLY_TTL = 471, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_SERVE_ORIGINAL_TTL = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -639,90 +632,92 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 470 #define VAR_SERVE_EXPIRED_REPLY_TTL 471 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_SERVE_ORIGINAL_TTL 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:355 */ char* str; -#line 724 "util/configparser.c" - +#line 719 "util/configparser.c" /* yacc.c:355 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -735,7 +730,9 @@ int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ +/* Copy the second part of user declarations. */ +#line 736 "util/configparser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -756,13 +753,13 @@ typedef signed char yytype_int8; #ifdef YYTYPE_UINT16 typedef YYTYPE_UINT16 yytype_uint16; #else -typedef unsigned short yytype_uint16; +typedef unsigned short int yytype_uint16; #endif #ifdef YYTYPE_INT16 typedef YYTYPE_INT16 yytype_int16; #else -typedef short yytype_int16; +typedef short int yytype_int16; #endif #ifndef YYSIZE_T @@ -774,7 +771,7 @@ typedef short yytype_int16; # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else -# define YYSIZE_T unsigned +# define YYSIZE_T unsigned int # endif #endif @@ -810,6 +807,15 @@ typedef short yytype_int16; # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -817,7 +823,7 @@ typedef short yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ @@ -837,8 +843,6 @@ typedef short yytype_int16; #endif -#define YY_ASSERT(E) ((void) (0 && (E))) - #if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -970,27 +974,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 615 +#define YYLAST 617 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 290 +#define YYNTOKENS 291 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 315 +#define YYNNTS 316 /* YYNRULES -- Number of rules. */ -#define YYNRULES 606 +#define YYNRULES 608 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 900 +#define YYNSTATES 903 +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 544 +#define YYMAXUTOK 545 -/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex. */ + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1047,7 +1051,7 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG @@ -1072,49 +1076,49 @@ static const yytype_uint16 yyrline[] = 253, 253, 254, 255, 255, 256, 256, 257, 257, 258, 258, 259, 259, 260, 260, 260, 261, 261, 262, 262, 263, 263, 264, 264, 265, 265, 266, 266, 267, 267, - 267, 268, 268, 268, 269, 269, 269, 270, 270, 271, - 272, 272, 273, 273, 274, 274, 275, 275, 276, 276, - 276, 277, 277, 277, 278, 278, 278, 279, 279, 280, - 280, 281, 281, 282, 284, 296, 297, 298, 298, 298, - 298, 298, 299, 299, 301, 313, 314, 315, 315, 315, - 315, 316, 316, 318, 332, 333, 334, 334, 334, 334, - 335, 335, 335, 337, 354, 355, 356, 356, 356, 356, - 357, 357, 357, 358, 361, 380, 397, 405, 415, 423, - 440, 441, 442, 442, 442, 442, 442, 443, 443, 443, - 444, 444, 446, 455, 464, 475, 484, 493, 502, 513, - 522, 534, 548, 563, 574, 591, 608, 625, 642, 657, - 672, 685, 700, 709, 718, 727, 736, 745, 754, 763, - 772, 781, 790, 799, 808, 817, 826, 839, 848, 861, - 870, 879, 888, 895, 902, 911, 918, 927, 935, 942, - 949, 957, 966, 975, 984, 998, 1007, 1016, 1025, 1034, - 1043, 1052, 1059, 1066, 1092, 1100, 1107, 1114, 1121, 1128, - 1136, 1144, 1152, 1159, 1170, 1181, 1188, 1197, 1206, 1215, - 1222, 1229, 1237, 1245, 1255, 1265, 1275, 1289, 1297, 1310, - 1321, 1329, 1342, 1351, 1360, 1369, 1379, 1389, 1397, 1410, - 1419, 1427, 1436, 1444, 1457, 1466, 1473, 1483, 1493, 1503, - 1513, 1523, 1533, 1543, 1553, 1560, 1567, 1574, 1583, 1592, - 1601, 1610, 1617, 1627, 1647, 1654, 1672, 1685, 1698, 1707, - 1716, 1725, 1734, 1744, 1754, 1765, 1774, 1783, 1792, 1801, - 1810, 1819, 1832, 1845, 1854, 1861, 1870, 1879, 1888, 1897, - 1905, 1918, 1926, 1967, 1974, 1989, 1999, 2009, 2016, 2023, - 2030, 2039, 2047, 2061, 2082, 2103, 2115, 2127, 2139, 2148, - 2169, 2179, 2188, 2196, 2204, 2217, 2230, 2245, 2260, 2269, - 2278, 2284, 2293, 2302, 2312, 2322, 2335, 2348, 2360, 2374, - 2386, 2400, 2410, 2417, 2424, 2433, 2442, 2452, 2462, 2472, - 2479, 2486, 2495, 2504, 2514, 2524, 2531, 2538, 2545, 2553, - 2563, 2573, 2583, 2593, 2632, 2642, 2650, 2658, 2673, 2682, - 2687, 2688, 2689, 2689, 2689, 2690, 2690, 2690, 2691, 2691, - 2693, 2703, 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2759, - 2760, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, 2765, - 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2774, - 2783, 2790, 2797, 2806, 2813, 2820, 2827, 2834, 2843, 2852, - 2859, 2866, 2876, 2886, 2896, 2906, 2916, 2926, 2931, 2932, - 2933, 2935, 2941, 2946, 2947, 2948, 2950, 2956, 2966, 2973, - 2982, 2990, 2995, 2996, 2998, 2998, 2998, 2999, 2999, 3000, - 3001, 3002, 3003, 3004, 3006, 3016, 3025, 3032, 3041, 3048, - 3057, 3065, 3078, 3086, 3099, 3104, 3105, 3106, 3106, 3107, - 3107, 3107, 3108, 3110, 3122, 3134, 3146, 3161, 3174, 3187, - 3198, 3203, 3204, 3205, 3205, 3207, 3222 + 268, 268, 269, 269, 269, 270, 270, 270, 271, 271, + 272, 273, 273, 274, 274, 275, 275, 276, 276, 277, + 277, 277, 278, 278, 278, 279, 279, 279, 280, 280, + 281, 281, 282, 282, 283, 285, 297, 298, 299, 299, + 299, 299, 299, 300, 300, 302, 314, 315, 316, 316, + 316, 316, 317, 317, 319, 333, 334, 335, 335, 335, + 335, 336, 336, 336, 338, 355, 356, 357, 357, 357, + 357, 358, 358, 358, 359, 362, 381, 398, 406, 416, + 424, 441, 442, 443, 443, 443, 443, 443, 444, 444, + 444, 445, 445, 447, 456, 465, 476, 485, 494, 503, + 514, 523, 535, 549, 564, 575, 592, 609, 626, 643, + 658, 673, 686, 701, 710, 719, 728, 737, 746, 755, + 764, 773, 782, 791, 800, 809, 818, 827, 840, 849, + 862, 871, 880, 889, 896, 903, 912, 919, 928, 936, + 943, 950, 958, 967, 976, 985, 999, 1008, 1017, 1026, + 1035, 1044, 1053, 1060, 1067, 1093, 1101, 1108, 1115, 1122, + 1129, 1137, 1145, 1153, 1160, 1171, 1182, 1189, 1198, 1207, + 1216, 1223, 1230, 1238, 1246, 1256, 1266, 1276, 1290, 1298, + 1311, 1322, 1330, 1343, 1352, 1361, 1370, 1380, 1390, 1398, + 1411, 1420, 1428, 1437, 1445, 1458, 1467, 1474, 1484, 1494, + 1504, 1514, 1524, 1534, 1544, 1554, 1561, 1568, 1575, 1584, + 1593, 1602, 1611, 1618, 1628, 1648, 1655, 1673, 1686, 1699, + 1708, 1717, 1726, 1735, 1745, 1755, 1766, 1775, 1784, 1793, + 1802, 1811, 1820, 1829, 1842, 1855, 1864, 1871, 1880, 1889, + 1898, 1907, 1915, 1928, 1936, 1977, 1984, 1999, 2009, 2019, + 2026, 2033, 2040, 2049, 2057, 2071, 2092, 2113, 2125, 2137, + 2149, 2158, 2179, 2189, 2198, 2206, 2214, 2227, 2240, 2255, + 2270, 2279, 2288, 2294, 2303, 2312, 2322, 2332, 2345, 2358, + 2370, 2384, 2396, 2410, 2420, 2427, 2434, 2443, 2452, 2462, + 2472, 2482, 2489, 2496, 2505, 2514, 2524, 2534, 2541, 2548, + 2555, 2563, 2573, 2583, 2593, 2603, 2642, 2652, 2660, 2668, + 2683, 2692, 2697, 2698, 2699, 2699, 2699, 2700, 2700, 2700, + 2701, 2701, 2703, 2713, 2722, 2729, 2736, 2743, 2750, 2757, + 2764, 2769, 2770, 2771, 2771, 2772, 2772, 2772, 2773, 2774, + 2774, 2775, 2775, 2776, 2776, 2777, 2778, 2779, 2780, 2781, + 2782, 2784, 2793, 2800, 2807, 2816, 2823, 2830, 2837, 2844, + 2853, 2862, 2869, 2876, 2886, 2896, 2906, 2916, 2926, 2936, + 2941, 2942, 2943, 2945, 2951, 2956, 2957, 2958, 2960, 2966, + 2976, 2983, 2992, 3000, 3005, 3006, 3008, 3008, 3008, 3009, + 3009, 3010, 3011, 3012, 3013, 3014, 3016, 3026, 3035, 3042, + 3051, 3058, 3067, 3075, 3088, 3096, 3109, 3114, 3115, 3116, + 3116, 3117, 3117, 3117, 3118, 3120, 3132, 3144, 3156, 3171, + 3184, 3197, 3208, 3213, 3214, 3215, 3215, 3217, 3232 }; #endif @@ -1202,8 +1206,9 @@ static const char *const yytname[] = "VAR_ACCESS_CONTROL_TAG_DATA", "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST", "VAR_SERVE_EXPIRED", "VAR_SERVE_EXPIRED_TTL", "VAR_SERVE_EXPIRED_TTL_RESET", "VAR_SERVE_EXPIRED_REPLY_TTL", - "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", - "VAR_LOG_IDENTITY", "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", + "VAR_SERVE_EXPIRED_CLIENT_TIMEOUT", "VAR_SERVE_ORIGINAL_TTL", + "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY", + "VAR_HIDE_TRUSTANCHOR", "VAR_TRUST_ANCHOR_SIGNALING", "VAR_AGGRESSIVE_NSEC", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE", "VAR_SHM_KEY", "VAR_ROOT_KEY_SENTINEL", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE", "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", @@ -1296,8 +1301,8 @@ static const char *const yytname[] = "server_aggressive_nsec", "server_ignore_cd_flag", "server_serve_expired", "server_serve_expired_ttl", "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_serve_expired_client_timeout", "server_serve_original_ttl", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1391,14 +1396,15 @@ static const yytype_uint16 yytoknum[] = 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 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545 }; # endif -#define YYPACT_NINF -280 +#define YYPACT_NINF -281 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-280))) + (!!((Yystate) == (-281))) #define YYTABLE_NINF -1 @@ -1409,11 +1415,11 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -280, 0, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - 277, -42, -37, -41, -7, -43, -30, -136, -106, -279, - -177, -172, -271, 2, 3, 4, 25, 26, 28, 31, + -281, 0, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 278, -42, -37, -41, -7, -43, -30, -136, -106, -280, + -178, -173, -272, 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, @@ -1427,78 +1433,79 @@ static const yytype_int16 yypact[] = 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 201, 205, 206, 207, 208, 209, 210, 211, 213, 214, - 215, 216, 219, 220, 222, 223, 224, 225, 226, 227, - 228, 229, 237, 243, 245, 246, 247, 249, 250, 251, + 201, 202, 206, 207, 208, 209, 210, 211, 212, 214, + 215, 216, 217, 220, 221, 223, 224, 225, 226, 227, + 228, 229, 230, 238, 244, 246, 247, 248, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 269, 270, 271, 273, - 274, 275, 276, 311, 312, 313, 314, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 318, 319, 320, 362, 363, 364, 365, -280, - -280, -280, -280, -280, -280, -280, -280, 366, 367, 368, - 369, 370, 374, -280, -280, -280, -280, -280, -280, -280, - 378, 379, 404, 405, 406, 408, 419, -280, -280, -280, - -280, -280, -280, -280, -280, 420, 421, 422, 423, 424, - 425, 426, 427, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 428, 429, 430, 431, 432, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 433, 434, - 435, 436, 437, 477, 479, 495, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 512, 513, 514, 515, 516, - 517, 518, 520, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 521, -280, -280, 522, -280, -280, 523, 524, - 525, 526, 529, 532, 535, 536, 545, 546, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 547, - 549, 550, 551, 552, 553, -280, -280, -280, -280, -280, - -280, -280, 554, 555, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 556, 557, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, 558, 559, 560, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 561, 562, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 563, 564, - 565, 566, 567, 568, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, 569, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 570, -280, -280, 571, 572, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 573, - 574, 575, -280, -280, -280, -280, -280, -280, -280, -280 + 262, 263, 264, 265, 266, 267, 268, 270, 271, 272, + 274, 275, 276, 277, 312, 313, 314, 315, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 319, 320, 321, 363, 364, 365, + 366, -281, -281, -281, -281, -281, -281, -281, -281, 367, + 368, 369, 370, 371, 375, -281, -281, -281, -281, -281, + -281, -281, 379, 380, 405, 406, 407, 409, 420, -281, + -281, -281, -281, -281, -281, -281, -281, 421, 422, 423, + 424, 425, 426, 427, 428, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 429, 430, 431, 432, 433, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 434, 435, 436, 437, 438, 478, 480, 497, -281, -281, + -281, -281, -281, -281, -281, -281, -281, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 514, 515, 516, + 517, 518, 519, 520, 522, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 523, -281, -281, 524, -281, -281, + 525, 526, 527, 528, 531, 534, 537, 538, 547, 548, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, 549, 551, 552, 553, 554, 555, -281, -281, -281, + -281, -281, -281, -281, 556, 557, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 558, + 559, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, 560, 561, 562, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 563, + 564, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 565, 566, 567, 568, 569, 570, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 571, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 572, -281, + -281, 573, 574, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 575, 576, 577, -281, -281, -281, -281, -281, + -281, -281, -281 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1506,9 +1513,9 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 17, 214, 224, 489, 547, 508, 233, - 561, 584, 243, 600, 259, 552, 3, 19, 216, 226, - 235, 245, 261, 491, 510, 549, 554, 563, 586, 602, + 2, 0, 1, 17, 215, 225, 491, 549, 510, 234, + 563, 586, 244, 602, 260, 554, 3, 19, 217, 227, + 236, 246, 262, 493, 512, 551, 556, 565, 588, 604, 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, @@ -1529,147 +1536,148 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 18, 20, 21, - 84, 87, 96, 184, 185, 22, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 35, 75, 23, 88, - 89, 46, 68, 83, 24, 25, 28, 29, 26, 27, - 30, 31, 32, 33, 34, 119, 196, 120, 122, 123, - 124, 198, 203, 199, 210, 211, 212, 213, 180, 85, - 74, 100, 117, 118, 208, 205, 121, 36, 37, 38, - 39, 40, 76, 90, 91, 106, 62, 72, 63, 188, - 189, 101, 56, 57, 187, 58, 59, 110, 114, 128, - 137, 163, 140, 209, 111, 69, 41, 42, 43, 98, - 129, 130, 131, 44, 45, 47, 48, 50, 51, 49, - 135, 52, 53, 54, 60, 79, 115, 93, 136, 86, - 159, 94, 95, 112, 113, 206, 99, 55, 77, 80, - 61, 64, 102, 103, 78, 160, 104, 65, 66, 67, - 197, 116, 173, 174, 175, 176, 177, 178, 186, 105, - 73, 107, 108, 109, 161, 70, 71, 92, 81, 82, - 97, 125, 126, 207, 127, 132, 133, 134, 164, 165, - 167, 169, 170, 168, 171, 181, 138, 139, 143, 144, - 141, 142, 145, 146, 148, 147, 200, 202, 201, 162, - 172, 190, 192, 191, 193, 194, 195, 166, 179, 182, - 183, 204, 0, 0, 0, 0, 0, 0, 0, 215, - 217, 218, 219, 221, 222, 223, 220, 0, 0, 0, - 0, 0, 0, 225, 227, 228, 229, 230, 231, 232, - 0, 0, 0, 0, 0, 0, 0, 234, 236, 237, - 240, 241, 238, 242, 239, 0, 0, 0, 0, 0, - 0, 0, 0, 244, 246, 247, 248, 249, 253, 250, - 251, 252, 0, 0, 0, 0, 0, 264, 268, 269, - 270, 271, 260, 262, 263, 265, 266, 267, 0, 0, - 0, 0, 0, 0, 0, 0, 490, 492, 494, 493, - 499, 495, 496, 497, 498, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 18, 20, + 21, 84, 87, 96, 185, 186, 22, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 35, 75, 23, + 88, 89, 46, 68, 83, 24, 25, 28, 29, 26, + 27, 30, 31, 32, 33, 34, 119, 197, 120, 122, + 123, 124, 199, 204, 200, 211, 212, 213, 214, 181, + 85, 74, 100, 117, 118, 209, 206, 121, 36, 37, + 38, 39, 40, 76, 90, 91, 106, 62, 72, 63, + 189, 190, 101, 56, 57, 188, 58, 59, 110, 114, + 128, 137, 163, 140, 210, 111, 69, 41, 42, 43, + 98, 129, 130, 131, 44, 45, 47, 48, 50, 51, + 49, 135, 52, 53, 54, 60, 79, 115, 93, 136, + 86, 159, 94, 95, 112, 113, 207, 99, 55, 77, + 80, 61, 64, 102, 103, 78, 160, 104, 65, 66, + 67, 198, 116, 173, 174, 175, 176, 177, 178, 179, + 187, 105, 73, 107, 108, 109, 161, 70, 71, 92, + 81, 82, 97, 125, 126, 208, 127, 132, 133, 134, + 164, 165, 167, 169, 170, 168, 171, 182, 138, 139, + 143, 144, 141, 142, 145, 146, 148, 147, 201, 203, + 202, 162, 172, 191, 193, 192, 194, 195, 196, 166, + 180, 183, 184, 205, 0, 0, 0, 0, 0, 0, + 0, 216, 218, 219, 220, 222, 223, 224, 221, 0, + 0, 0, 0, 0, 0, 226, 228, 229, 230, 231, + 232, 233, 0, 0, 0, 0, 0, 0, 0, 235, + 237, 238, 241, 242, 239, 243, 240, 0, 0, 0, + 0, 0, 0, 0, 0, 245, 247, 248, 249, 250, + 254, 251, 252, 253, 0, 0, 0, 0, 0, 265, + 269, 270, 271, 272, 261, 263, 264, 266, 267, 268, + 0, 0, 0, 0, 0, 0, 0, 0, 492, 494, + 496, 495, 501, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 509, 511, 512, 513, 514, 515, 516, + 0, 0, 0, 0, 0, 511, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 0, 548, 550, 0, 553, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 564, - 565, 566, 568, 569, 567, 570, 571, 572, 573, 0, - 0, 0, 0, 0, 0, 585, 587, 588, 589, 590, - 591, 592, 0, 0, 601, 603, 604, 273, 272, 279, - 292, 290, 302, 298, 299, 303, 300, 301, 304, 305, - 306, 307, 308, 331, 332, 333, 334, 335, 360, 361, - 362, 367, 368, 295, 369, 370, 373, 371, 372, 375, - 376, 377, 391, 346, 347, 349, 350, 378, 394, 340, - 342, 395, 401, 402, 403, 296, 359, 419, 420, 341, - 414, 324, 291, 336, 392, 398, 379, 0, 0, 423, - 297, 274, 323, 383, 275, 293, 294, 337, 338, 421, - 381, 385, 386, 276, 424, 363, 390, 325, 345, 396, - 397, 400, 413, 339, 417, 415, 416, 351, 358, 387, - 388, 352, 353, 380, 405, 326, 327, 330, 309, 311, - 312, 313, 314, 315, 425, 426, 428, 364, 365, 366, - 374, 429, 430, 431, 0, 0, 0, 382, 354, 356, - 557, 440, 444, 442, 441, 445, 443, 0, 0, 448, - 449, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 384, 399, 418, 453, 454, 355, 432, 0, 0, - 0, 0, 0, 0, 406, 407, 408, 409, 410, 411, - 412, 558, 348, 343, 404, 322, 277, 278, 344, 455, - 457, 456, 458, 459, 460, 310, 317, 450, 452, 451, - 316, 0, 329, 389, 427, 328, 357, 318, 319, 321, - 320, 461, 462, 463, 467, 466, 464, 465, 468, 469, - 470, 471, 473, 472, 482, 0, 486, 487, 0, 0, - 488, 474, 480, 475, 476, 477, 479, 481, 478, 254, - 255, 256, 257, 258, 500, 502, 501, 504, 505, 506, - 507, 503, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 551, 556, 574, 575, 576, 579, 577, 578, 580, 581, - 582, 583, 593, 594, 595, 596, 597, 598, 605, 606, - 393, 422, 439, 559, 560, 446, 447, 433, 434, 0, - 0, 0, 438, 599, 483, 484, 485, 437, 435, 436 + 527, 528, 529, 530, 0, 550, 552, 0, 555, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 566, 567, 568, 570, 571, 569, 572, 573, 574, + 575, 0, 0, 0, 0, 0, 0, 587, 589, 590, + 591, 592, 593, 594, 0, 0, 603, 605, 606, 274, + 273, 280, 293, 291, 303, 299, 300, 304, 301, 302, + 305, 306, 307, 308, 309, 332, 333, 334, 335, 336, + 361, 362, 363, 368, 369, 296, 370, 371, 374, 372, + 373, 376, 377, 378, 392, 347, 348, 350, 351, 379, + 395, 341, 343, 396, 402, 403, 404, 297, 360, 421, + 422, 342, 416, 325, 292, 337, 393, 399, 380, 0, + 0, 425, 298, 275, 324, 384, 276, 294, 295, 338, + 339, 423, 382, 386, 387, 277, 426, 364, 391, 326, + 346, 397, 398, 401, 415, 340, 419, 417, 418, 352, + 359, 388, 389, 353, 354, 381, 406, 327, 328, 331, + 310, 312, 313, 314, 315, 316, 427, 428, 430, 365, + 366, 367, 375, 431, 432, 433, 0, 0, 0, 383, + 355, 357, 559, 442, 446, 444, 443, 447, 445, 0, + 0, 450, 451, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 385, 400, 420, 455, 456, 356, 434, + 0, 0, 0, 0, 0, 0, 407, 408, 409, 410, + 411, 412, 413, 414, 560, 349, 344, 405, 323, 278, + 279, 345, 457, 459, 458, 460, 461, 462, 311, 318, + 452, 454, 453, 317, 0, 330, 390, 429, 329, 358, + 319, 320, 322, 321, 463, 464, 465, 469, 468, 466, + 467, 470, 471, 472, 473, 475, 474, 484, 0, 488, + 489, 0, 0, 490, 476, 482, 477, 478, 479, 481, + 483, 480, 255, 256, 257, 258, 259, 502, 504, 503, + 506, 507, 508, 509, 505, 531, 532, 533, 534, 535, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 553, 558, 576, 577, 578, 581, 579, + 580, 582, 583, 584, 585, 595, 596, 597, 598, 599, + 600, 607, 608, 394, 424, 441, 561, 562, 448, 449, + 435, 436, 0, 0, 0, 440, 601, 485, 486, 487, + 439, 437, 438 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 576, 577, - 578, 579, 580, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280 + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 578, + 579, 580, 581, 582, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 16, 17, 30, 237, 18, 31, 439, 19, - 32, 453, 20, 33, 467, 21, 34, 483, 497, 498, - 499, 500, 501, 22, 35, 502, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 440, 441, 442, 443, 444, - 445, 446, 454, 455, 456, 457, 458, 459, 484, 485, - 486, 487, 488, 489, 490, 491, 468, 469, 470, 471, - 472, 473, 474, 23, 36, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 24, 37, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 25, 38, 563, 564, 26, - 39, 566, 567, 427, 428, 429, 430, 27, 40, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 28, 41, 595, 596, 597, 598, 599, 600, 601, 431, - 29, 42, 604, 605, 606 + -1, 1, 16, 17, 30, 238, 18, 31, 441, 19, + 32, 455, 20, 33, 469, 21, 34, 485, 499, 500, + 501, 502, 503, 22, 35, 504, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, + 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 442, 443, 444, 445, + 446, 447, 448, 456, 457, 458, 459, 460, 461, 486, + 487, 488, 489, 490, 491, 492, 493, 470, 471, 472, + 473, 474, 475, 476, 23, 36, 518, 519, 520, 521, + 522, 523, 524, 525, 526, 24, 37, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 25, 38, 565, 566, + 26, 39, 568, 569, 429, 430, 431, 432, 27, 40, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 28, 41, 597, 598, 599, 600, 601, 602, 603, + 433, 29, 42, 606, 607, 608 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1677,80 +1685,80 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 475, 432, 460, 433, 434, 562, 447, 602, 603, - 565, 3, 607, 608, 609, 448, 449, 525, 526, 527, - 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 610, 611, 475, 612, 461, - 462, 613, 614, 615, 616, 4, 617, 618, 619, 620, - 621, 5, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 622, 623, 463, 435, 508, 509, 510, 511, - 512, 513, 514, 515, 589, 590, 591, 592, 593, 594, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 6, 436, 639, 640, 437, - 450, 641, 451, 642, 643, 644, 645, 646, 647, 648, - 649, 7, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 464, 465, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 8, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 466, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 9, 744, 477, 478, 479, 745, 746, 747, 748, 749, - 750, 751, 482, 752, 753, 754, 755, 438, 10, 756, - 757, 452, 758, 759, 760, 761, 762, 763, 764, 765, - 492, 493, 494, 495, 496, 11, 476, 766, 477, 478, - 479, 480, 481, 767, 12, 768, 769, 770, 482, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 13, 790, - 791, 792, 14, 793, 794, 795, 796, 0, 15, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 797, 798, 799, 800, 75, 76, 77, 801, 802, - 803, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 804, 805, 806, 807, 808, 809, 810, 811, - 812, 119, 120, 121, 813, 122, 123, 124, 814, 815, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 816, 817, 818, 149, 819, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 839, 199, 840, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 841, 842, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 215, 216, 217, 218, - 219, 220, 852, 853, 854, 855, 856, 857, 858, 221, - 859, 860, 861, 862, 863, 864, 865, 222, 223, 866, - 224, 225, 867, 226, 227, 868, 869, 228, 229, 230, - 231, 232, 233, 234, 235, 870, 871, 872, 236, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 0, 0, 0, 0, + 2, 477, 434, 462, 435, 436, 564, 449, 604, 605, + 567, 3, 609, 610, 611, 450, 451, 527, 528, 529, + 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 612, 613, 477, 614, 463, + 464, 615, 616, 617, 618, 4, 619, 620, 621, 622, + 623, 5, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 624, 625, 465, 437, 510, 511, 512, 513, + 514, 515, 516, 517, 591, 592, 593, 594, 595, 596, + 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 640, 6, 438, 641, 642, 439, + 452, 643, 453, 644, 645, 646, 647, 648, 649, 650, + 651, 7, 652, 653, 654, 655, 656, 657, 658, 659, + 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 466, 467, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 8, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, + 707, 468, 708, 709, 710, 711, 712, 713, 714, 715, + 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, + 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, + 9, 746, 747, 479, 480, 481, 748, 749, 750, 751, + 752, 753, 754, 484, 755, 756, 757, 758, 440, 10, + 759, 760, 454, 761, 762, 763, 764, 765, 766, 767, + 768, 494, 495, 496, 497, 498, 11, 478, 769, 479, + 480, 481, 482, 483, 770, 12, 771, 772, 773, 484, + 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, + 784, 785, 786, 787, 788, 789, 790, 791, 792, 13, + 793, 794, 795, 14, 796, 797, 798, 799, 0, 15, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 800, 801, 802, 803, 75, 76, 77, 804, + 805, 806, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 807, 808, 809, 810, 811, 812, 813, + 814, 815, 119, 120, 121, 816, 122, 123, 124, 817, + 818, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 819, 820, 821, 149, 822, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 823, 824, 825, 826, 827, 828, 829, 830, 831, 832, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 842, 199, + 843, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 216, 217, + 218, 219, 220, 221, 855, 856, 857, 858, 859, 860, + 861, 222, 862, 863, 864, 865, 866, 867, 868, 223, + 224, 869, 225, 226, 870, 227, 228, 871, 872, 229, + 230, 231, 232, 233, 234, 235, 236, 873, 874, 875, + 237, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 503, 504, 505, 506, 507 + 0, 0, 0, 505, 506, 507, 508, 509 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 289, 11, 10, 10, 10, 52, 53, 153, 154, 155, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 290, 11, 10, 10, 10, 52, 53, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, @@ -1764,58 +1772,58 @@ static const yytype_int16 yycheck[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 210, 10, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 10, 282, 10, 10, 10, 10, -1, 288, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, - 10, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 10, 10, 10, 140, 10, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 10, 283, 10, 10, 10, 10, -1, 289, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 10, 10, 10, 10, 48, 49, 50, 10, + 10, 10, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 104, 105, 106, 10, 108, 109, 110, 10, + 10, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 10, 10, 10, 140, 10, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 10, 211, 10, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 239, 240, 241, 242, - 243, 244, 10, 10, 10, 10, 10, 10, 10, 252, - 10, 10, 10, 10, 10, 10, 10, 260, 261, 10, - 263, 264, 10, 266, 267, 10, 10, 270, 271, 272, - 273, 274, 275, 276, 277, 10, 10, 10, 281, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 10, 211, + 10, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 253, 10, 10, 10, 10, 10, 10, 10, 261, + 262, 10, 264, 265, 10, 267, 268, 10, 10, 271, + 272, 273, 274, 275, 276, 277, 278, 10, 10, 10, + 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 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, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 35, 35, 35, 35 + -1, -1, -1, 35, 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 291, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 288, 292, 293, 296, 299, - 302, 305, 313, 533, 544, 565, 569, 577, 590, 600, - 294, 297, 300, 303, 306, 314, 534, 545, 566, 570, - 578, 591, 601, 12, 13, 14, 15, 16, 17, 18, + 0, 292, 0, 11, 45, 51, 95, 111, 152, 210, + 229, 246, 255, 279, 283, 289, 293, 294, 297, 300, + 303, 306, 314, 535, 546, 567, 571, 579, 592, 602, + 295, 298, 301, 304, 307, 315, 536, 547, 568, 572, + 580, 593, 603, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 48, 49, 50, 54, 55, @@ -1832,9 +1840,9 @@ static const yytype_uint16 yystos[] = 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 239, 240, 241, 242, 243, - 244, 252, 260, 261, 263, 264, 266, 267, 270, 271, - 272, 273, 274, 275, 276, 277, 281, 295, 316, 317, + 223, 224, 225, 226, 227, 228, 240, 241, 242, 243, + 244, 245, 253, 261, 262, 264, 265, 267, 268, 271, + 272, 273, 274, 275, 276, 277, 278, 282, 296, 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, @@ -1853,25 +1861,25 @@ static const yytype_uint16 yystos[] = 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, 573, 574, 575, - 576, 599, 44, 46, 47, 107, 138, 141, 269, 298, - 505, 506, 507, 508, 509, 510, 511, 44, 52, 53, - 137, 139, 268, 301, 512, 513, 514, 515, 516, 517, - 44, 80, 81, 105, 172, 173, 212, 304, 526, 527, - 528, 529, 530, 531, 532, 44, 253, 255, 256, 257, - 258, 259, 265, 307, 518, 519, 520, 521, 522, 523, - 524, 525, 283, 284, 285, 286, 287, 308, 309, 310, - 311, 312, 315, 518, 519, 520, 521, 522, 96, 97, - 98, 99, 100, 101, 102, 103, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 546, 547, 548, 549, 550, 551, 552, + 498, 499, 500, 501, 502, 503, 504, 505, 506, 575, + 576, 577, 578, 601, 44, 46, 47, 107, 138, 141, + 270, 299, 507, 508, 509, 510, 511, 512, 513, 44, + 52, 53, 137, 139, 269, 302, 514, 515, 516, 517, + 518, 519, 44, 80, 81, 105, 172, 173, 212, 305, + 528, 529, 530, 531, 532, 533, 534, 44, 254, 256, + 257, 258, 259, 260, 266, 308, 520, 521, 522, 523, + 524, 525, 526, 527, 284, 285, 286, 287, 288, 309, + 310, 311, 312, 313, 316, 520, 521, 522, 523, 524, + 96, 97, 98, 99, 100, 101, 102, 103, 537, 538, + 539, 540, 541, 542, 543, 544, 545, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 112, 567, 568, 289, 571, 572, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 246, - 247, 248, 249, 250, 251, 592, 593, 594, 595, 596, - 597, 598, 279, 280, 602, 603, 604, 10, 10, 10, + 563, 564, 565, 566, 112, 569, 570, 290, 573, 574, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 247, 248, 249, 250, 251, 252, 594, 595, 596, + 597, 598, 599, 600, 280, 281, 604, 605, 606, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1900,40 +1908,41 @@ static const yytype_uint16 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, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 290, 291, 291, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 293, 294, 294, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 296, 297, 297, 298, 298, 298, - 298, 298, 298, 298, 299, 300, 300, 301, 301, 301, - 301, 301, 301, 302, 303, 303, 304, 304, 304, 304, - 304, 304, 304, 305, 306, 306, 307, 307, 307, 307, - 307, 307, 307, 307, 308, 309, 310, 311, 312, 313, - 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 0, 291, 292, 292, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 294, 295, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 297, 298, 298, 299, 299, + 299, 299, 299, 299, 299, 300, 301, 301, 302, 302, + 302, 302, 302, 302, 303, 304, 304, 305, 305, 305, + 305, 305, 305, 305, 306, 307, 307, 308, 308, 308, + 308, 308, 308, 308, 308, 309, 310, 311, 312, 313, + 314, 315, 315, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 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, @@ -1955,18 +1964,18 @@ static const yytype_uint16 yyr1[] = 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, 534, 535, 535, 535, 535, 535, 535, 535, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 545, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, + 534, 535, 536, 536, 537, 537, 537, 537, 537, 537, + 537, 537, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 547, 548, 548, 548, 548, 548, 548, 548, + 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 563, 564, 565, 566, 566, - 567, 568, 569, 570, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 591, 592, 592, 592, - 592, 592, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 601, 602, 602, 603, 604 + 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 568, 569, 570, 571, 572, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 580, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 593, 594, + 594, 594, 594, 594, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 603, 604, 604, 605, 606 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1993,46 +2002,46 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, + 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, + 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2048,22 +2057,22 @@ static const yytype_uint8 yyr2[] = #define YYRECOVERING() (!!yyerrstatus) -#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY) \ - { \ - yychar = (Token); \ - yylval = (Value); \ - YYPOPSTACK (yylen); \ - yystate = *yyssp; \ - goto yybackup; \ - } \ - else \ - { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ - while (0) +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + YYPOPSTACK (yylen); \ + yystate = *yyssp; \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ #define YYTERROR 1 @@ -2103,37 +2112,37 @@ do { \ } while (0) -/*-----------------------------------. -| Print this symbol's value on YYO. | -`-----------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - FILE *yyoutput = yyo; - YYUSE (yyoutput); + FILE *yyo = yyoutput; + YYUSE (yyo); if (!yyvaluep) return; # ifdef YYPRINT if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); # endif YYUSE (yytype); } -/*---------------------------. -| Print this symbol on YYO. | -`---------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep) { - YYFPRINTF (yyo, "%s %s (", + YYFPRINTF (yyoutput, "%s %s (", yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yytype, yyvaluep); - YYFPRINTF (yyo, ")"); + yy_symbol_value_print (yyoutput, yytype, yyvaluep); + YYFPRINTF (yyoutput, ")"); } /*------------------------------------------------------------------. @@ -2167,7 +2176,7 @@ do { \ static void yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", @@ -2178,7 +2187,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] + &(yyvsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } @@ -2282,10 +2291,7 @@ yytnamerr (char *yyres, const char *yystr) case '\\': if (*++yyp != '\\') goto do_not_strip_quotes; - else - goto append; - - append: + /* Fall through. */ default: if (yyres) yyres[yyn] = *yyp; @@ -2303,7 +2309,7 @@ yytnamerr (char *yyres, const char *yystr) if (! yyres) return yystrlen (yystr); - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); + return yystpcpy (yyres, yystr) - yyres; } # endif @@ -2381,10 +2387,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yyarg[yycount++] = yytname[yyx]; { YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 + && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } } } @@ -2396,7 +2402,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, case N: \ yyformat = S; \ break - default: /* Avoid compiler warnings. */ YYCASE_(0, YY_("syntax error")); YYCASE_(1, YY_("syntax error, unexpected %s")); YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); @@ -2408,10 +2413,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, { YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else + if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; + yysize = yysize1; } if (*yymsg_alloc < yysize) @@ -2537,33 +2541,23 @@ yyparse (void) yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; - /*------------------------------------------------------------. -| yynewstate -- push a new state, which is found in yystate. | +| yynewstate -- Push a new state, which is found in yystate. | `------------------------------------------------------------*/ -yynewstate: + yynewstate: /* In all cases, when you get here, the value and location stacks have just been pushed. So pushing a state here evens the stacks. */ yyssp++; - -/*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | -`--------------------------------------------------------------------*/ -yysetstate: - YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + yysetstate: + *yyssp = yystate; if (yyss + yystacksize - 1 <= yyssp) -#if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; -#else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYSIZE_T yysize = yyssp - yyss + 1; -# if defined yyoverflow +#ifdef yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into @@ -2579,10 +2573,14 @@ yysetstate: &yyss1, yysize * sizeof (*yyssp), &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); + yyss = yyss1; yyvs = yyvs1; } -# else /* defined YYSTACK_RELOCATE */ +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) goto yyexhaustedlab; @@ -2598,33 +2596,35 @@ yysetstate: goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } # endif +#endif /* no yyoverflow */ yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; } -#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); if (yystate == YYFINAL) YYACCEPT; goto yybackup; - /*-----------. | yybackup. | `-----------*/ yybackup: + /* Do appropriate processing given the current state. Read a lookahead token if we need one and don't already have one. */ @@ -2682,6 +2682,7 @@ yybackup: YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + goto yynewstate; @@ -2696,7 +2697,7 @@ yydefault: /*-----------------------------. -| yyreduce -- do a reduction. | +| yyreduce -- Do a reduction. | `-----------------------------*/ yyreduce: /* yyn is the number of a rule to reduce with. */ @@ -2716,16 +2717,16 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 17: -#line 191 "./util/configparser.y" + case 17: +#line 191 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(server:)\n")); } -#line 2725 "util/configparser.c" +#line 2726 "util/configparser.c" /* yacc.c:1646 */ break; - case 214: -#line 285 "./util/configparser.y" + case 215: +#line 286 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2736,11 +2737,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2740 "util/configparser.c" +#line 2741 "util/configparser.c" /* yacc.c:1646 */ break; - case 224: -#line 302 "./util/configparser.y" + case 225: +#line 303 "./util/configparser.y" /* yacc.c:1646 */ { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2751,11 +2752,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2755 "util/configparser.c" +#line 2756 "util/configparser.c" /* yacc.c:1646 */ break; - case 233: -#line 319 "./util/configparser.y" + case 234: +#line 320 "./util/configparser.y" /* yacc.c:1646 */ { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2768,11 +2769,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2772 "util/configparser.c" +#line 2773 "util/configparser.c" /* yacc.c:1646 */ break; - case 243: -#line 338 "./util/configparser.y" + case 244: +#line 339 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2788,11 +2789,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2792 "util/configparser.c" +#line 2793 "util/configparser.c" /* yacc.c:1646 */ break; - case 254: -#line 362 "./util/configparser.y" + case 255: +#line 363 "./util/configparser.y" /* yacc.c:1646 */ { uint8_t* bitlist; size_t len = 0; @@ -2809,11 +2810,11 @@ yyreduce: } } -#line 2813 "util/configparser.c" +#line 2814 "util/configparser.c" /* yacc.c:1646 */ break; - case 255: -#line 381 "./util/configparser.y" + case 256: +#line 382 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2828,21 +2829,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2832 "util/configparser.c" +#line 2833 "util/configparser.c" /* yacc.c:1646 */ break; - case 256: -#line 398 "./util/configparser.y" + case 257: +#line 399 "./util/configparser.y" /* yacc.c:1646 */ { 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 2842 "util/configparser.c" +#line 2843 "util/configparser.c" /* yacc.c:1646 */ break; - case 257: -#line 406 "./util/configparser.y" + case 258: +#line 407 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2850,21 +2851,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2854 "util/configparser.c" +#line 2855 "util/configparser.c" /* yacc.c:1646 */ break; - case 258: -#line 416 "./util/configparser.y" + case 259: +#line 417 "./util/configparser.y" /* yacc.c:1646 */ { 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 2864 "util/configparser.c" +#line 2865 "util/configparser.c" /* yacc.c:1646 */ break; - case 259: -#line 424 "./util/configparser.y" + case 260: +#line 425 "./util/configparser.y" /* yacc.c:1646 */ { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2880,11 +2881,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2885 "util/configparser.c" /* yacc.c:1646 */ break; - case 272: -#line 447 "./util/configparser.y" + case 273: +#line 448 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2892,11 +2893,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2896 "util/configparser.c" +#line 2897 "util/configparser.c" /* yacc.c:1646 */ break; - case 273: -#line 456 "./util/configparser.y" + case 274: +#line 457 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2904,11 +2905,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2908 "util/configparser.c" +#line 2909 "util/configparser.c" /* yacc.c:1646 */ break; - case 274: -#line 465 "./util/configparser.y" + case 275: +#line 466 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2918,11 +2919,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2922 "util/configparser.c" +#line 2923 "util/configparser.c" /* yacc.c:1646 */ break; - case 275: -#line 476 "./util/configparser.y" + case 276: +#line 477 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2930,11 +2931,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2934 "util/configparser.c" +#line 2935 "util/configparser.c" /* yacc.c:1646 */ break; - case 276: -#line 485 "./util/configparser.y" + case 277: +#line 486 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2942,11 +2943,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2946 "util/configparser.c" +#line 2947 "util/configparser.c" /* yacc.c:1646 */ break; - case 277: -#line 494 "./util/configparser.y" + case 278: +#line 495 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2954,11 +2955,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" +#line 2959 "util/configparser.c" /* yacc.c:1646 */ break; - case 278: -#line 503 "./util/configparser.y" + case 279: +#line 504 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2968,11 +2969,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" +#line 2973 "util/configparser.c" /* yacc.c:1646 */ break; - case 279: -#line 514 "./util/configparser.y" + case 280: +#line 515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2980,11 +2981,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" +#line 2985 "util/configparser.c" /* yacc.c:1646 */ break; - case 280: -#line 523 "./util/configparser.y" + case 281: +#line 524 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2995,11 +2996,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2999 "util/configparser.c" +#line 3000 "util/configparser.c" /* yacc.c:1646 */ break; - case 281: -#line 535 "./util/configparser.y" + case 282: +#line 536 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3011,11 +3012,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3015 "util/configparser.c" +#line 3016 "util/configparser.c" /* yacc.c:1646 */ break; - case 282: -#line 549 "./util/configparser.y" + case 283: +#line 550 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3029,11 +3030,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3033 "util/configparser.c" +#line 3034 "util/configparser.c" /* yacc.c:1646 */ break; - case 283: -#line 564 "./util/configparser.y" + case 284: +#line 565 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3043,11 +3044,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3047 "util/configparser.c" +#line 3048 "util/configparser.c" /* yacc.c:1646 */ break; - case 284: -#line 575 "./util/configparser.y" + case 285: +#line 576 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3063,11 +3064,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3067 "util/configparser.c" +#line 3068 "util/configparser.c" /* yacc.c:1646 */ break; - case 285: -#line 592 "./util/configparser.y" + case 286: +#line 593 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3083,11 +3084,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3088 "util/configparser.c" /* yacc.c:1646 */ break; - case 286: -#line 609 "./util/configparser.y" + case 287: +#line 610 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3103,11 +3104,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3108 "util/configparser.c" /* yacc.c:1646 */ break; - case 287: -#line 626 "./util/configparser.y" + case 288: +#line 627 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3123,11 +3124,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3128 "util/configparser.c" /* yacc.c:1646 */ break; - case 288: -#line 643 "./util/configparser.y" + case 289: +#line 644 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3141,11 +3142,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3146 "util/configparser.c" /* yacc.c:1646 */ break; - case 289: -#line 658 "./util/configparser.y" + case 290: +#line 659 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3159,11 +3160,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3163 "util/configparser.c" +#line 3164 "util/configparser.c" /* yacc.c:1646 */ break; - case 290: -#line 673 "./util/configparser.y" + case 291: +#line 674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3175,11 +3176,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3179 "util/configparser.c" +#line 3180 "util/configparser.c" /* yacc.c:1646 */ break; - case 291: -#line 686 "./util/configparser.y" + case 292: +#line 687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3193,11 +3194,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3197 "util/configparser.c" +#line 3198 "util/configparser.c" /* yacc.c:1646 */ break; - case 292: -#line 701 "./util/configparser.y" + case 293: +#line 702 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3205,11 +3206,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3209 "util/configparser.c" +#line 3210 "util/configparser.c" /* yacc.c:1646 */ break; - case 293: -#line 710 "./util/configparser.y" + case 294: +#line 711 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3217,11 +3218,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3221 "util/configparser.c" +#line 3222 "util/configparser.c" /* yacc.c:1646 */ break; - case 294: -#line 719 "./util/configparser.y" + case 295: +#line 720 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3229,11 +3230,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3233 "util/configparser.c" +#line 3234 "util/configparser.c" /* yacc.c:1646 */ break; - case 295: -#line 728 "./util/configparser.y" + case 296: +#line 729 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3241,11 +3242,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3245 "util/configparser.c" +#line 3246 "util/configparser.c" /* yacc.c:1646 */ break; - case 296: -#line 737 "./util/configparser.y" + case 297: +#line 738 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,11 +3254,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3258 "util/configparser.c" /* yacc.c:1646 */ break; - case 297: -#line 746 "./util/configparser.y" + case 298: +#line 747 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3265,11 +3266,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3270 "util/configparser.c" /* yacc.c:1646 */ break; - case 298: -#line 755 "./util/configparser.y" + case 299: +#line 756 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3277,11 +3278,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3282 "util/configparser.c" /* yacc.c:1646 */ break; - case 299: -#line 764 "./util/configparser.y" + case 300: +#line 765 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3289,11 +3290,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3294 "util/configparser.c" /* yacc.c:1646 */ break; - case 300: -#line 773 "./util/configparser.y" + case 301: +#line 774 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3301,11 +3302,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3306 "util/configparser.c" /* yacc.c:1646 */ break; - case 301: -#line 782 "./util/configparser.y" + case 302: +#line 783 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3313,11 +3314,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3318 "util/configparser.c" /* yacc.c:1646 */ break; - case 302: -#line 791 "./util/configparser.y" + case 303: +#line 792 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3325,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3330 "util/configparser.c" /* yacc.c:1646 */ break; - case 303: -#line 800 "./util/configparser.y" + case 304: +#line 801 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3337,11 +3338,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3342 "util/configparser.c" /* yacc.c:1646 */ break; - case 304: -#line 809 "./util/configparser.y" + case 305: +#line 810 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3349,11 +3350,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3354 "util/configparser.c" /* yacc.c:1646 */ break; - case 305: -#line 818 "./util/configparser.y" + case 306: +#line 819 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3361,11 +3362,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3366 "util/configparser.c" /* yacc.c:1646 */ break; - case 306: -#line 827 "./util/configparser.y" + case 307: +#line 828 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3377,11 +3378,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3382 "util/configparser.c" /* yacc.c:1646 */ break; - case 307: -#line 840 "./util/configparser.y" + case 308: +#line 841 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3389,11 +3390,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3394 "util/configparser.c" /* yacc.c:1646 */ break; - case 308: -#line 849 "./util/configparser.y" + case 309: +#line 850 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3405,11 +3406,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" +#line 3410 "util/configparser.c" /* yacc.c:1646 */ break; - case 309: -#line 862 "./util/configparser.y" + case 310: +#line 863 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3417,11 +3418,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3421 "util/configparser.c" +#line 3422 "util/configparser.c" /* yacc.c:1646 */ break; - case 310: -#line 871 "./util/configparser.y" + case 311: +#line 872 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -3429,11 +3430,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3433 "util/configparser.c" +#line 3434 "util/configparser.c" /* yacc.c:1646 */ break; - case 311: -#line 880 "./util/configparser.y" + case 312: +#line 881 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3441,31 +3442,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3445 "util/configparser.c" +#line 3446 "util/configparser.c" /* yacc.c:1646 */ break; - case 312: -#line 889 "./util/configparser.y" + case 313: +#line 890 "./util/configparser.y" /* yacc.c:1646 */ { 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 3455 "util/configparser.c" +#line 3456 "util/configparser.c" /* yacc.c:1646 */ break; - case 313: -#line 896 "./util/configparser.y" + case 314: +#line 897 "./util/configparser.y" /* yacc.c:1646 */ { 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 3465 "util/configparser.c" +#line 3466 "util/configparser.c" /* yacc.c:1646 */ break; - case 314: -#line 903 "./util/configparser.y" + case 315: +#line 904 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3473,21 +3474,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3478 "util/configparser.c" /* yacc.c:1646 */ break; - case 315: -#line 912 "./util/configparser.y" + case 316: +#line 913 "./util/configparser.y" /* yacc.c:1646 */ { 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 3487 "util/configparser.c" +#line 3488 "util/configparser.c" /* yacc.c:1646 */ break; - case 316: -#line 919 "./util/configparser.y" + case 317: +#line 920 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3495,53 +3496,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3500 "util/configparser.c" /* yacc.c:1646 */ break; - case 317: -#line 928 "./util/configparser.y" + case 318: +#line 929 "./util/configparser.y" /* yacc.c:1646 */ { 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 3510 "util/configparser.c" +#line 3511 "util/configparser.c" /* yacc.c:1646 */ break; - case 318: -#line 936 "./util/configparser.y" + case 319: +#line 937 "./util/configparser.y" /* yacc.c:1646 */ { 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 3520 "util/configparser.c" +#line 3521 "util/configparser.c" /* yacc.c:1646 */ break; - case 319: -#line 943 "./util/configparser.y" + case 320: +#line 944 "./util/configparser.y" /* yacc.c:1646 */ { 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 3530 "util/configparser.c" +#line 3531 "util/configparser.c" /* yacc.c:1646 */ break; - case 320: -#line 950 "./util/configparser.y" + case 321: +#line 951 "./util/configparser.y" /* yacc.c:1646 */ { 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 3541 "util/configparser.c" +#line 3542 "util/configparser.c" /* yacc.c:1646 */ break; - case 321: -#line 958 "./util/configparser.y" + case 322: +#line 959 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3549,11 +3550,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3553 "util/configparser.c" +#line 3554 "util/configparser.c" /* yacc.c:1646 */ break; - case 322: -#line 967 "./util/configparser.y" + case 323: +#line 968 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3561,11 +3562,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3565 "util/configparser.c" +#line 3566 "util/configparser.c" /* yacc.c:1646 */ break; - case 323: -#line 976 "./util/configparser.y" + case 324: +#line 977 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3573,11 +3574,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" +#line 3578 "util/configparser.c" /* yacc.c:1646 */ break; - case 324: -#line 985 "./util/configparser.y" + case 325: +#line 986 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3590,11 +3591,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3594 "util/configparser.c" +#line 3595 "util/configparser.c" /* yacc.c:1646 */ break; - case 325: -#line 999 "./util/configparser.y" + case 326: +#line 1000 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3602,11 +3603,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 3607 "util/configparser.c" /* yacc.c:1646 */ break; - case 326: -#line 1008 "./util/configparser.y" + case 327: +#line 1009 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3614,11 +3615,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3618 "util/configparser.c" +#line 3619 "util/configparser.c" /* yacc.c:1646 */ break; - case 327: -#line 1017 "./util/configparser.y" + case 328: +#line 1018 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3626,11 +3627,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" +#line 3631 "util/configparser.c" /* yacc.c:1646 */ break; - case 328: -#line 1026 "./util/configparser.y" + case 329: +#line 1027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3638,11 +3639,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" +#line 3643 "util/configparser.c" /* yacc.c:1646 */ break; - case 329: -#line 1035 "./util/configparser.y" + case 330: +#line 1036 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3650,11 +3651,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" +#line 3655 "util/configparser.c" /* yacc.c:1646 */ break; - case 330: -#line 1044 "./util/configparser.y" + case 331: +#line 1045 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3662,31 +3663,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 3667 "util/configparser.c" /* yacc.c:1646 */ break; - case 331: -#line 1053 "./util/configparser.y" + case 332: +#line 1054 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3676 "util/configparser.c" +#line 3677 "util/configparser.c" /* yacc.c:1646 */ break; - case 332: -#line 1060 "./util/configparser.y" + case 333: +#line 1061 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3686 "util/configparser.c" +#line 3687 "util/configparser.c" /* yacc.c:1646 */ break; - case 333: -#line 1067 "./util/configparser.y" + case 334: +#line 1068 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3711,105 +3712,105 @@ yyreduce: } } } -#line 3715 "util/configparser.c" +#line 3716 "util/configparser.c" /* yacc.c:1646 */ break; - case 334: -#line 1093 "./util/configparser.y" + case 335: +#line 1094 "./util/configparser.y" /* yacc.c:1646 */ { 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 3726 "util/configparser.c" +#line 3727 "util/configparser.c" /* yacc.c:1646 */ break; - case 335: -#line 1101 "./util/configparser.y" + case 336: +#line 1102 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3736 "util/configparser.c" +#line 3737 "util/configparser.c" /* yacc.c:1646 */ break; - case 336: -#line 1108 "./util/configparser.y" + case 337: +#line 1109 "./util/configparser.y" /* yacc.c:1646 */ { 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 3746 "util/configparser.c" +#line 3747 "util/configparser.c" /* yacc.c:1646 */ break; - case 337: -#line 1115 "./util/configparser.y" + case 338: +#line 1116 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3756 "util/configparser.c" +#line 3757 "util/configparser.c" /* yacc.c:1646 */ break; - case 338: -#line 1122 "./util/configparser.y" + case 339: +#line 1123 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3766 "util/configparser.c" +#line 3767 "util/configparser.c" /* yacc.c:1646 */ break; - case 339: -#line 1129 "./util/configparser.y" + case 340: +#line 1130 "./util/configparser.y" /* yacc.c:1646 */ { 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 3777 "util/configparser.c" +#line 3778 "util/configparser.c" /* yacc.c:1646 */ break; - case 340: -#line 1137 "./util/configparser.y" + case 341: +#line 1138 "./util/configparser.y" /* yacc.c:1646 */ { 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 3788 "util/configparser.c" +#line 3789 "util/configparser.c" /* yacc.c:1646 */ break; - case 341: -#line 1145 "./util/configparser.y" + case 342: +#line 1146 "./util/configparser.y" /* yacc.c:1646 */ { 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 3799 "util/configparser.c" +#line 3800 "util/configparser.c" /* yacc.c:1646 */ break; - case 342: -#line 1153 "./util/configparser.y" + case 343: +#line 1154 "./util/configparser.y" /* yacc.c:1646 */ { 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 3809 "util/configparser.c" +#line 3810 "util/configparser.c" /* yacc.c:1646 */ break; - case 343: -#line 1160 "./util/configparser.y" + case 344: +#line 1161 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3819,11 +3820,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3824 "util/configparser.c" /* yacc.c:1646 */ break; - case 344: -#line 1171 "./util/configparser.y" + case 345: +#line 1172 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3833,21 +3834,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3837 "util/configparser.c" +#line 3838 "util/configparser.c" /* yacc.c:1646 */ break; - case 345: -#line 1182 "./util/configparser.y" + case 346: +#line 1183 "./util/configparser.y" /* yacc.c:1646 */ { 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 3847 "util/configparser.c" +#line 3848 "util/configparser.c" /* yacc.c:1646 */ break; - case 346: -#line 1189 "./util/configparser.y" + case 347: +#line 1190 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3855,11 +3856,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3860 "util/configparser.c" /* yacc.c:1646 */ break; - case 347: -#line 1198 "./util/configparser.y" + case 348: +#line 1199 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3867,11 +3868,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3872 "util/configparser.c" /* yacc.c:1646 */ break; - case 348: -#line 1207 "./util/configparser.y" + case 349: +#line 1208 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3879,53 +3880,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3884 "util/configparser.c" /* yacc.c:1646 */ break; - case 349: -#line 1216 "./util/configparser.y" + case 350: +#line 1217 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3893 "util/configparser.c" +#line 3894 "util/configparser.c" /* yacc.c:1646 */ break; - case 350: -#line 1223 "./util/configparser.y" + case 351: +#line 1224 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3903 "util/configparser.c" +#line 3904 "util/configparser.c" /* yacc.c:1646 */ break; - case 351: -#line 1230 "./util/configparser.y" + case 352: +#line 1231 "./util/configparser.y" /* yacc.c:1646 */ { 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 3914 "util/configparser.c" +#line 3915 "util/configparser.c" /* yacc.c:1646 */ break; - case 352: -#line 1238 "./util/configparser.y" + case 353: +#line 1239 "./util/configparser.y" /* yacc.c:1646 */ { 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 3925 "util/configparser.c" +#line 3926 "util/configparser.c" /* yacc.c:1646 */ break; - case 353: -#line 1246 "./util/configparser.y" + case 354: +#line 1247 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3934,11 +3935,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3938 "util/configparser.c" +#line 3939 "util/configparser.c" /* yacc.c:1646 */ break; - case 354: -#line 1256 "./util/configparser.y" + case 355: +#line 1257 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3947,11 +3948,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 3952 "util/configparser.c" /* yacc.c:1646 */ break; - case 355: -#line 1266 "./util/configparser.y" + case 356: +#line 1267 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3960,11 +3961,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3964 "util/configparser.c" +#line 3965 "util/configparser.c" /* yacc.c:1646 */ break; - case 356: -#line 1276 "./util/configparser.y" + case 357: +#line 1277 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3977,22 +3978,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3981 "util/configparser.c" +#line 3982 "util/configparser.c" /* yacc.c:1646 */ break; - case 357: -#line 1290 "./util/configparser.y" + case 358: +#line 1291 "./util/configparser.y" /* yacc.c:1646 */ { 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 3992 "util/configparser.c" +#line 3993 "util/configparser.c" /* yacc.c:1646 */ break; - case 358: -#line 1298 "./util/configparser.y" + case 359: +#line 1299 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4004,11 +4005,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4008 "util/configparser.c" +#line 4009 "util/configparser.c" /* yacc.c:1646 */ break; - case 359: -#line 1311 "./util/configparser.y" + case 360: +#line 1312 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4018,22 +4019,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4022 "util/configparser.c" +#line 4023 "util/configparser.c" /* yacc.c:1646 */ break; - case 360: -#line 1322 "./util/configparser.y" + case 361: +#line 1323 "./util/configparser.y" /* yacc.c:1646 */ { 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 4033 "util/configparser.c" +#line 4034 "util/configparser.c" /* yacc.c:1646 */ break; - case 361: -#line 1330 "./util/configparser.y" + case 362: +#line 1331 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4045,11 +4046,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4049 "util/configparser.c" +#line 4050 "util/configparser.c" /* yacc.c:1646 */ break; - case 362: -#line 1343 "./util/configparser.y" + case 363: +#line 1344 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4057,11 +4058,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4061 "util/configparser.c" +#line 4062 "util/configparser.c" /* yacc.c:1646 */ break; - case 363: -#line 1352 "./util/configparser.y" + case 364: +#line 1353 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4069,11 +4070,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4073 "util/configparser.c" +#line 4074 "util/configparser.c" /* yacc.c:1646 */ break; - case 364: -#line 1361 "./util/configparser.y" + case 365: +#line 1362 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4081,11 +4082,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4085 "util/configparser.c" +#line 4086 "util/configparser.c" /* yacc.c:1646 */ break; - case 365: -#line 1370 "./util/configparser.y" + case 366: +#line 1371 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4094,11 +4095,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 4099 "util/configparser.c" /* yacc.c:1646 */ break; - case 366: -#line 1380 "./util/configparser.y" + case 367: +#line 1381 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4107,22 +4108,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" +#line 4112 "util/configparser.c" /* yacc.c:1646 */ break; - case 367: -#line 1390 "./util/configparser.y" + case 368: +#line 1391 "./util/configparser.y" /* yacc.c:1646 */ { 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 4122 "util/configparser.c" +#line 4123 "util/configparser.c" /* yacc.c:1646 */ break; - case 368: -#line 1398 "./util/configparser.y" + case 369: +#line 1399 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4134,11 +4135,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4139 "util/configparser.c" /* yacc.c:1646 */ break; - case 369: -#line 1411 "./util/configparser.y" + case 370: +#line 1412 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4146,22 +4147,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4151 "util/configparser.c" /* yacc.c:1646 */ break; - case 370: -#line 1420 "./util/configparser.y" + case 371: +#line 1421 "./util/configparser.y" /* yacc.c:1646 */ { 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 4161 "util/configparser.c" +#line 4162 "util/configparser.c" /* yacc.c:1646 */ break; - case 371: -#line 1428 "./util/configparser.y" + case 372: +#line 1429 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4169,22 +4170,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4174 "util/configparser.c" /* yacc.c:1646 */ break; - case 372: -#line 1437 "./util/configparser.y" + case 373: +#line 1438 "./util/configparser.y" /* yacc.c:1646 */ { 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 4184 "util/configparser.c" +#line 4185 "util/configparser.c" /* yacc.c:1646 */ break; - case 373: -#line 1445 "./util/configparser.y" + case 374: +#line 1446 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4196,11 +4197,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4200 "util/configparser.c" +#line 4201 "util/configparser.c" /* yacc.c:1646 */ break; - case 374: -#line 1458 "./util/configparser.y" + case 375: +#line 1459 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4208,21 +4209,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" +#line 4213 "util/configparser.c" /* yacc.c:1646 */ break; - case 375: -#line 1467 "./util/configparser.y" + case 376: +#line 1468 "./util/configparser.y" /* yacc.c:1646 */ { 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 4222 "util/configparser.c" +#line 4223 "util/configparser.c" /* yacc.c:1646 */ break; - case 376: -#line 1474 "./util/configparser.y" + case 377: +#line 1475 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4231,11 +4232,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 4236 "util/configparser.c" /* yacc.c:1646 */ break; - case 377: -#line 1484 "./util/configparser.y" + case 378: +#line 1485 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4244,11 +4245,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4249 "util/configparser.c" /* yacc.c:1646 */ break; - case 378: -#line 1494 "./util/configparser.y" + case 379: +#line 1495 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4257,11 +4258,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" +#line 4262 "util/configparser.c" /* yacc.c:1646 */ break; - case 379: -#line 1504 "./util/configparser.y" + case 380: +#line 1505 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4270,11 +4271,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4274 "util/configparser.c" +#line 4275 "util/configparser.c" /* yacc.c:1646 */ break; - case 380: -#line 1514 "./util/configparser.y" + case 381: +#line 1515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4283,11 +4284,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4288 "util/configparser.c" /* yacc.c:1646 */ break; - case 381: -#line 1524 "./util/configparser.y" + case 382: +#line 1525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4296,11 +4297,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4300 "util/configparser.c" +#line 4301 "util/configparser.c" /* yacc.c:1646 */ break; - case 382: -#line 1534 "./util/configparser.y" + case 383: +#line 1535 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4309,11 +4310,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4314 "util/configparser.c" /* yacc.c:1646 */ break; - case 383: -#line 1544 "./util/configparser.y" + case 384: +#line 1545 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4322,41 +4323,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4326 "util/configparser.c" +#line 4327 "util/configparser.c" /* yacc.c:1646 */ break; - case 384: -#line 1554 "./util/configparser.y" + case 385: +#line 1555 "./util/configparser.y" /* yacc.c:1646 */ { 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 4336 "util/configparser.c" +#line 4337 "util/configparser.c" /* yacc.c:1646 */ break; - case 385: -#line 1561 "./util/configparser.y" + case 386: +#line 1562 "./util/configparser.y" /* yacc.c:1646 */ { 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 4346 "util/configparser.c" +#line 4347 "util/configparser.c" /* yacc.c:1646 */ break; - case 386: -#line 1568 "./util/configparser.y" + case 387: +#line 1569 "./util/configparser.y" /* yacc.c:1646 */ { 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 4356 "util/configparser.c" +#line 4357 "util/configparser.c" /* yacc.c:1646 */ break; - case 387: -#line 1575 "./util/configparser.y" + case 388: +#line 1576 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4364,11 +4365,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" +#line 4369 "util/configparser.c" /* yacc.c:1646 */ break; - case 388: -#line 1584 "./util/configparser.y" + case 389: +#line 1585 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4376,11 +4377,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" +#line 4381 "util/configparser.c" /* yacc.c:1646 */ break; - case 389: -#line 1593 "./util/configparser.y" + case 390: +#line 1594 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4388,11 +4389,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4392 "util/configparser.c" +#line 4393 "util/configparser.c" /* yacc.c:1646 */ break; - case 390: -#line 1602 "./util/configparser.y" + case 391: +#line 1603 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4400,21 +4401,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4404 "util/configparser.c" +#line 4405 "util/configparser.c" /* yacc.c:1646 */ break; - case 391: -#line 1611 "./util/configparser.y" + case 392: +#line 1612 "./util/configparser.y" /* yacc.c:1646 */ { 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 4414 "util/configparser.c" +#line 4415 "util/configparser.c" /* yacc.c:1646 */ break; - case 392: -#line 1618 "./util/configparser.y" + case 393: +#line 1619 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4423,11 +4424,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4428 "util/configparser.c" /* yacc.c:1646 */ break; - case 393: -#line 1628 "./util/configparser.y" + case 394: +#line 1629 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4446,21 +4447,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4450 "util/configparser.c" +#line 4451 "util/configparser.c" /* yacc.c:1646 */ break; - case 394: -#line 1648 "./util/configparser.y" + case 395: +#line 1649 "./util/configparser.y" /* yacc.c:1646 */ { 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 4460 "util/configparser.c" +#line 4461 "util/configparser.c" /* yacc.c:1646 */ break; - case 395: -#line 1655 "./util/configparser.y" + case 396: +#line 1656 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4477,11 +4478,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4481 "util/configparser.c" +#line 4482 "util/configparser.c" /* yacc.c:1646 */ break; - case 396: -#line 1673 "./util/configparser.y" + case 397: +#line 1674 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4493,11 +4494,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4497 "util/configparser.c" +#line 4498 "util/configparser.c" /* yacc.c:1646 */ break; - case 397: -#line 1686 "./util/configparser.y" + case 398: +#line 1687 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4509,11 +4510,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4513 "util/configparser.c" +#line 4514 "util/configparser.c" /* yacc.c:1646 */ break; - case 398: -#line 1699 "./util/configparser.y" + case 399: +#line 1700 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4521,11 +4522,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4525 "util/configparser.c" +#line 4526 "util/configparser.c" /* yacc.c:1646 */ break; - case 399: -#line 1708 "./util/configparser.y" + case 400: +#line 1709 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4533,11 +4534,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4537 "util/configparser.c" +#line 4538 "util/configparser.c" /* yacc.c:1646 */ break; - case 400: -#line 1717 "./util/configparser.y" + case 401: +#line 1718 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4545,11 +4546,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4550 "util/configparser.c" /* yacc.c:1646 */ break; - case 401: -#line 1726 "./util/configparser.y" + case 402: +#line 1727 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4557,11 +4558,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4561 "util/configparser.c" +#line 4562 "util/configparser.c" /* yacc.c:1646 */ break; - case 402: -#line 1735 "./util/configparser.y" + case 403: +#line 1736 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4570,11 +4571,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4574 "util/configparser.c" +#line 4575 "util/configparser.c" /* yacc.c:1646 */ break; - case 403: -#line 1745 "./util/configparser.y" + case 404: +#line 1746 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4583,11 +4584,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4587 "util/configparser.c" +#line 4588 "util/configparser.c" /* yacc.c:1646 */ break; - case 404: -#line 1755 "./util/configparser.y" + case 405: +#line 1756 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4597,11 +4598,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4601 "util/configparser.c" +#line 4602 "util/configparser.c" /* yacc.c:1646 */ break; - case 405: -#line 1766 "./util/configparser.y" + case 406: +#line 1767 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4609,11 +4610,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4613 "util/configparser.c" +#line 4614 "util/configparser.c" /* yacc.c:1646 */ break; - case 406: -#line 1775 "./util/configparser.y" + case 407: +#line 1776 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4621,11 +4622,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4626 "util/configparser.c" /* yacc.c:1646 */ break; - case 407: -#line 1784 "./util/configparser.y" + case 408: +#line 1785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4633,11 +4634,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4638 "util/configparser.c" /* yacc.c:1646 */ break; - case 408: -#line 1793 "./util/configparser.y" + case 409: +#line 1794 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -4645,11 +4646,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4650 "util/configparser.c" /* yacc.c:1646 */ break; - case 409: -#line 1802 "./util/configparser.y" + case 410: +#line 1803 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4657,11 +4658,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4662 "util/configparser.c" /* yacc.c:1646 */ break; - case 410: -#line 1811 "./util/configparser.y" + case 411: +#line 1812 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4669,11 +4670,23 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4674 "util/configparser.c" /* yacc.c:1646 */ break; - case 411: -#line 1820 "./util/configparser.y" + case 412: +#line 1821 "./util/configparser.y" /* yacc.c:1646 */ + { + OUTYY(("P(server_serve_original_ttl:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_original_ttl = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4686 "util/configparser.c" /* yacc.c:1646 */ + break; + + case 413: +#line 1830 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4685,11 +4698,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4702 "util/configparser.c" /* yacc.c:1646 */ break; - case 412: -#line 1833 "./util/configparser.y" + case 414: +#line 1843 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4701,11 +4714,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4718 "util/configparser.c" /* yacc.c:1646 */ break; - case 413: -#line 1846 "./util/configparser.y" + case 415: +#line 1856 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4713,21 +4726,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4717 "util/configparser.c" +#line 4730 "util/configparser.c" /* yacc.c:1646 */ break; - case 414: -#line 1855 "./util/configparser.y" + case 416: +#line 1865 "./util/configparser.y" /* yacc.c:1646 */ { 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 4727 "util/configparser.c" +#line 4740 "util/configparser.c" /* yacc.c:1646 */ break; - case 415: -#line 1862 "./util/configparser.y" + case 417: +#line 1872 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4735,11 +4748,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4752 "util/configparser.c" /* yacc.c:1646 */ break; - case 416: -#line 1871 "./util/configparser.y" + case 418: +#line 1881 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4747,11 +4760,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4764 "util/configparser.c" /* yacc.c:1646 */ break; - case 417: -#line 1880 "./util/configparser.y" + case 419: +#line 1890 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4759,11 +4772,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4763 "util/configparser.c" +#line 4776 "util/configparser.c" /* yacc.c:1646 */ break; - case 418: -#line 1889 "./util/configparser.y" + case 420: +#line 1899 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4772,22 +4785,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4776 "util/configparser.c" +#line 4789 "util/configparser.c" /* yacc.c:1646 */ break; - case 419: -#line 1898 "./util/configparser.y" + case 421: +#line 1908 "./util/configparser.y" /* yacc.c:1646 */ { 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 4787 "util/configparser.c" +#line 4800 "util/configparser.c" /* yacc.c:1646 */ break; - case 420: -#line 1906 "./util/configparser.y" + case 422: +#line 1916 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4799,22 +4812,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4816 "util/configparser.c" /* yacc.c:1646 */ break; - case 421: -#line 1919 "./util/configparser.y" + case 423: +#line 1929 "./util/configparser.y" /* yacc.c:1646 */ { 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 4814 "util/configparser.c" +#line 4827 "util/configparser.c" /* yacc.c:1646 */ break; - case 422: -#line 1927 "./util/configparser.y" + case 424: +#line 1937 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -4854,21 +4867,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4858 "util/configparser.c" +#line 4871 "util/configparser.c" /* yacc.c:1646 */ break; - case 423: -#line 1968 "./util/configparser.y" + case 425: +#line 1978 "./util/configparser.y" /* yacc.c:1646 */ { 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 4868 "util/configparser.c" +#line 4881 "util/configparser.c" /* yacc.c:1646 */ break; - case 424: -#line 1975 "./util/configparser.y" + case 426: +#line 1985 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4882,11 +4895,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4886 "util/configparser.c" +#line 4899 "util/configparser.c" /* yacc.c:1646 */ break; - case 425: -#line 1990 "./util/configparser.y" + case 427: +#line 2000 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4895,11 +4908,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4912 "util/configparser.c" /* yacc.c:1646 */ break; - case 426: -#line 2000 "./util/configparser.y" + case 428: +#line 2010 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4908,41 +4921,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4912 "util/configparser.c" +#line 4925 "util/configparser.c" /* yacc.c:1646 */ break; - case 427: -#line 2010 "./util/configparser.y" + case 429: +#line 2020 "./util/configparser.y" /* yacc.c:1646 */ { 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 4922 "util/configparser.c" +#line 4935 "util/configparser.c" /* yacc.c:1646 */ break; - case 428: -#line 2017 "./util/configparser.y" + case 430: +#line 2027 "./util/configparser.y" /* yacc.c:1646 */ { 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 4932 "util/configparser.c" +#line 4945 "util/configparser.c" /* yacc.c:1646 */ break; - case 429: -#line 2024 "./util/configparser.y" + case 431: +#line 2034 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4942 "util/configparser.c" +#line 4955 "util/configparser.c" /* yacc.c:1646 */ break; - case 430: -#line 2031 "./util/configparser.y" + case 432: +#line 2041 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4950,22 +4963,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4967 "util/configparser.c" /* yacc.c:1646 */ break; - case 431: -#line 2040 "./util/configparser.y" + case 433: +#line 2050 "./util/configparser.y" /* yacc.c:1646 */ { 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 4965 "util/configparser.c" +#line 4978 "util/configparser.c" /* yacc.c:1646 */ break; - case 432: -#line 2048 "./util/configparser.y" + case 434: +#line 2058 "./util/configparser.y" /* yacc.c:1646 */ { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4978,11 +4991,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 4995 "util/configparser.c" /* yacc.c:1646 */ break; - case 433: -#line 2062 "./util/configparser.y" + case 435: +#line 2072 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5002,11 +5015,11 @@ yyreduce: } } } -#line 5006 "util/configparser.c" +#line 5019 "util/configparser.c" /* yacc.c:1646 */ break; - case 434: -#line 2083 "./util/configparser.y" + case 436: +#line 2093 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5026,11 +5039,11 @@ yyreduce: } } } -#line 5030 "util/configparser.c" +#line 5043 "util/configparser.c" /* yacc.c:1646 */ break; - case 435: -#line 2104 "./util/configparser.y" + case 437: +#line 2114 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5041,11 +5054,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5045 "util/configparser.c" +#line 5058 "util/configparser.c" /* yacc.c:1646 */ break; - case 436: -#line 2116 "./util/configparser.y" + case 438: +#line 2126 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5056,11 +5069,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5060 "util/configparser.c" +#line 5073 "util/configparser.c" /* yacc.c:1646 */ break; - case 437: -#line 2128 "./util/configparser.y" + case 439: +#line 2138 "./util/configparser.y" /* yacc.c:1646 */ { 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, @@ -5071,11 +5084,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5075 "util/configparser.c" +#line 5088 "util/configparser.c" /* yacc.c:1646 */ break; - case 438: -#line 2140 "./util/configparser.y" + case 440: +#line 2150 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5083,11 +5096,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5087 "util/configparser.c" +#line 5100 "util/configparser.c" /* yacc.c:1646 */ break; - case 439: -#line 2149 "./util/configparser.y" + case 441: +#line 2159 "./util/configparser.y" /* yacc.c:1646 */ { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5107,11 +5120,11 @@ yyreduce: } } } -#line 5111 "util/configparser.c" +#line 5124 "util/configparser.c" /* yacc.c:1646 */ break; - case 440: -#line 2170 "./util/configparser.y" + case 442: +#line 2180 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5119,11 +5132,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5123 "util/configparser.c" +#line 5136 "util/configparser.c" /* yacc.c:1646 */ break; - case 441: -#line 2180 "./util/configparser.y" + case 443: +#line 2190 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5131,33 +5144,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5135 "util/configparser.c" +#line 5148 "util/configparser.c" /* yacc.c:1646 */ break; - case 442: -#line 2189 "./util/configparser.y" + case 444: +#line 2199 "./util/configparser.y" /* yacc.c:1646 */ { 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 5146 "util/configparser.c" +#line 5159 "util/configparser.c" /* yacc.c:1646 */ break; - case 443: -#line 2197 "./util/configparser.y" + case 445: +#line 2207 "./util/configparser.y" /* yacc.c:1646 */ { 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 5157 "util/configparser.c" +#line 5170 "util/configparser.c" /* yacc.c:1646 */ break; - case 444: -#line 2205 "./util/configparser.y" + case 446: +#line 2215 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5169,11 +5182,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" +#line 5186 "util/configparser.c" /* yacc.c:1646 */ break; - case 445: -#line 2218 "./util/configparser.y" + case 447: +#line 2228 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5185,11 +5198,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5189 "util/configparser.c" +#line 5202 "util/configparser.c" /* yacc.c:1646 */ break; - case 446: -#line 2231 "./util/configparser.y" + case 448: +#line 2241 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5203,11 +5216,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5207 "util/configparser.c" +#line 5220 "util/configparser.c" /* yacc.c:1646 */ break; - case 447: -#line 2246 "./util/configparser.y" + case 449: +#line 2256 "./util/configparser.y" /* yacc.c:1646 */ { 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) { @@ -5221,11 +5234,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5225 "util/configparser.c" +#line 5238 "util/configparser.c" /* yacc.c:1646 */ break; - case 448: -#line 2261 "./util/configparser.y" + case 450: +#line 2271 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5233,11 +5246,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 5250 "util/configparser.c" /* yacc.c:1646 */ break; - case 449: -#line 2270 "./util/configparser.y" + case 451: +#line 2280 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5245,20 +5258,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5249 "util/configparser.c" +#line 5262 "util/configparser.c" /* yacc.c:1646 */ break; - case 450: -#line 2279 "./util/configparser.y" + case 452: +#line 2289 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5271 "util/configparser.c" /* yacc.c:1646 */ break; - case 451: -#line 2285 "./util/configparser.y" + case 453: +#line 2295 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5266,11 +5279,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5270 "util/configparser.c" +#line 5283 "util/configparser.c" /* yacc.c:1646 */ break; - case 452: -#line 2294 "./util/configparser.y" + case 454: +#line 2304 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5278,11 +5291,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5282 "util/configparser.c" +#line 5295 "util/configparser.c" /* yacc.c:1646 */ break; - case 453: -#line 2303 "./util/configparser.y" + case 455: +#line 2313 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5291,11 +5304,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5295 "util/configparser.c" +#line 5308 "util/configparser.c" /* yacc.c:1646 */ break; - case 454: -#line 2313 "./util/configparser.y" + case 456: +#line 2323 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5304,11 +5317,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5308 "util/configparser.c" +#line 5321 "util/configparser.c" /* yacc.c:1646 */ break; - case 455: -#line 2323 "./util/configparser.y" + case 457: +#line 2333 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5320,11 +5333,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5337 "util/configparser.c" /* yacc.c:1646 */ break; - case 456: -#line 2336 "./util/configparser.y" + case 458: +#line 2346 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5336,11 +5349,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5340 "util/configparser.c" +#line 5353 "util/configparser.c" /* yacc.c:1646 */ break; - case 457: -#line 2349 "./util/configparser.y" + case 459: +#line 2359 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5351,11 +5364,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5355 "util/configparser.c" +#line 5368 "util/configparser.c" /* yacc.c:1646 */ break; - case 458: -#line 2361 "./util/configparser.y" + case 460: +#line 2371 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5368,11 +5381,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5372 "util/configparser.c" +#line 5385 "util/configparser.c" /* yacc.c:1646 */ break; - case 459: -#line 2375 "./util/configparser.y" + case 461: +#line 2385 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5383,11 +5396,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5387 "util/configparser.c" +#line 5400 "util/configparser.c" /* yacc.c:1646 */ break; - case 460: -#line 2387 "./util/configparser.y" + case 462: +#line 2397 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5400,11 +5413,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5404 "util/configparser.c" +#line 5417 "util/configparser.c" /* yacc.c:1646 */ break; - case 461: -#line 2401 "./util/configparser.y" + case 463: +#line 2411 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5413,31 +5426,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5417 "util/configparser.c" +#line 5430 "util/configparser.c" /* yacc.c:1646 */ break; - case 462: -#line 2411 "./util/configparser.y" + case 464: +#line 2421 "./util/configparser.y" /* yacc.c:1646 */ { 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 5427 "util/configparser.c" +#line 5440 "util/configparser.c" /* yacc.c:1646 */ break; - case 463: -#line 2418 "./util/configparser.y" + case 465: +#line 2428 "./util/configparser.y" /* yacc.c:1646 */ { 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 5437 "util/configparser.c" +#line 5450 "util/configparser.c" /* yacc.c:1646 */ break; - case 464: -#line 2425 "./util/configparser.y" + case 466: +#line 2435 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5445,11 +5458,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5449 "util/configparser.c" +#line 5462 "util/configparser.c" /* yacc.c:1646 */ break; - case 465: -#line 2434 "./util/configparser.y" + case 467: +#line 2444 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5457,11 +5470,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5461 "util/configparser.c" +#line 5474 "util/configparser.c" /* yacc.c:1646 */ break; - case 466: -#line 2443 "./util/configparser.y" + case 468: +#line 2453 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5470,11 +5483,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5474 "util/configparser.c" +#line 5487 "util/configparser.c" /* yacc.c:1646 */ break; - case 467: -#line 2453 "./util/configparser.y" + case 469: +#line 2463 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5483,11 +5496,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5500 "util/configparser.c" /* yacc.c:1646 */ break; - case 468: -#line 2463 "./util/configparser.y" + case 470: +#line 2473 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5496,31 +5509,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5500 "util/configparser.c" +#line 5513 "util/configparser.c" /* yacc.c:1646 */ break; - case 469: -#line 2473 "./util/configparser.y" + case 471: +#line 2483 "./util/configparser.y" /* yacc.c:1646 */ { 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 5510 "util/configparser.c" +#line 5523 "util/configparser.c" /* yacc.c:1646 */ break; - case 470: -#line 2480 "./util/configparser.y" + case 472: +#line 2490 "./util/configparser.y" /* yacc.c:1646 */ { 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 5520 "util/configparser.c" +#line 5533 "util/configparser.c" /* yacc.c:1646 */ break; - case 471: -#line 2487 "./util/configparser.y" + case 473: +#line 2497 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5528,11 +5541,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5532 "util/configparser.c" +#line 5545 "util/configparser.c" /* yacc.c:1646 */ break; - case 472: -#line 2496 "./util/configparser.y" + case 474: +#line 2506 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5540,11 +5553,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5544 "util/configparser.c" +#line 5557 "util/configparser.c" /* yacc.c:1646 */ break; - case 473: -#line 2505 "./util/configparser.y" + case 475: +#line 2515 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5553,11 +5566,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 5570 "util/configparser.c" /* yacc.c:1646 */ break; - case 474: -#line 2515 "./util/configparser.y" + case 476: +#line 2525 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5566,52 +5579,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5570 "util/configparser.c" +#line 5583 "util/configparser.c" /* yacc.c:1646 */ break; - case 475: -#line 2525 "./util/configparser.y" + case 477: +#line 2535 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5580 "util/configparser.c" +#line 5593 "util/configparser.c" /* yacc.c:1646 */ break; - case 476: -#line 2532 "./util/configparser.y" + case 478: +#line 2542 "./util/configparser.y" /* yacc.c:1646 */ { 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 5590 "util/configparser.c" +#line 5603 "util/configparser.c" /* yacc.c:1646 */ break; - case 477: -#line 2539 "./util/configparser.y" + case 479: +#line 2549 "./util/configparser.y" /* yacc.c:1646 */ { 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 5600 "util/configparser.c" +#line 5613 "util/configparser.c" /* yacc.c:1646 */ break; - case 478: -#line 2546 "./util/configparser.y" + case 480: +#line 2556 "./util/configparser.y" /* yacc.c:1646 */ { 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 5611 "util/configparser.c" +#line 5624 "util/configparser.c" /* yacc.c:1646 */ break; - case 479: -#line 2554 "./util/configparser.y" + case 481: +#line 2564 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5620,11 +5633,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5637 "util/configparser.c" /* yacc.c:1646 */ break; - case 480: -#line 2564 "./util/configparser.y" + case 482: +#line 2574 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5633,11 +5646,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5637 "util/configparser.c" +#line 5650 "util/configparser.c" /* yacc.c:1646 */ break; - case 481: -#line 2574 "./util/configparser.y" + case 483: +#line 2584 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5646,11 +5659,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 5663 "util/configparser.c" /* yacc.c:1646 */ break; - case 482: -#line 2584 "./util/configparser.y" + case 484: +#line 2594 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5659,11 +5672,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5663 "util/configparser.c" +#line 5676 "util/configparser.c" /* yacc.c:1646 */ break; - case 483: -#line 2594 "./util/configparser.y" + case 485: +#line 2604 "./util/configparser.y" /* yacc.c:1646 */ { 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 && @@ -5701,11 +5714,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5705 "util/configparser.c" +#line 5718 "util/configparser.c" /* yacc.c:1646 */ break; - case 484: -#line 2633 "./util/configparser.y" + case 486: +#line 2643 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5714,33 +5727,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5718 "util/configparser.c" +#line 5731 "util/configparser.c" /* yacc.c:1646 */ break; - case 485: -#line 2643 "./util/configparser.y" + case 487: +#line 2653 "./util/configparser.y" /* yacc.c:1646 */ { 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 5729 "util/configparser.c" +#line 5742 "util/configparser.c" /* yacc.c:1646 */ break; - case 486: -#line 2651 "./util/configparser.y" + case 488: +#line 2661 "./util/configparser.y" /* yacc.c:1646 */ { 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 5740 "util/configparser.c" +#line 5753 "util/configparser.c" /* yacc.c:1646 */ break; - case 487: -#line 2659 "./util/configparser.y" + case 489: +#line 2669 "./util/configparser.y" /* yacc.c:1646 */ { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5754,11 +5767,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5758 "util/configparser.c" +#line 5771 "util/configparser.c" /* yacc.c:1646 */ break; - case 488: -#line 2674 "./util/configparser.y" + case 490: +#line 2684 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5766,19 +5779,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5770 "util/configparser.c" +#line 5783 "util/configparser.c" /* yacc.c:1646 */ break; - case 489: -#line 2683 "./util/configparser.y" + case 491: +#line 2693 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(remote-control:)\n")); } -#line 5778 "util/configparser.c" +#line 5791 "util/configparser.c" /* yacc.c:1646 */ break; - case 500: -#line 2694 "./util/configparser.y" + case 502: +#line 2704 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5787,11 +5800,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" +#line 5804 "util/configparser.c" /* yacc.c:1646 */ break; - case 501: -#line 2704 "./util/configparser.y" + case 503: +#line 2714 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5799,79 +5812,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" +#line 5816 "util/configparser.c" /* yacc.c:1646 */ break; - case 502: -#line 2713 "./util/configparser.y" + case 504: +#line 2723 "./util/configparser.y" /* yacc.c:1646 */ { 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 5813 "util/configparser.c" +#line 5826 "util/configparser.c" /* yacc.c:1646 */ break; - case 503: -#line 2720 "./util/configparser.y" + case 505: +#line 2730 "./util/configparser.y" /* yacc.c:1646 */ { 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 5823 "util/configparser.c" +#line 5836 "util/configparser.c" /* yacc.c:1646 */ break; - case 504: -#line 2727 "./util/configparser.y" + case 506: +#line 2737 "./util/configparser.y" /* yacc.c:1646 */ { 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 5833 "util/configparser.c" +#line 5846 "util/configparser.c" /* yacc.c:1646 */ break; - case 505: -#line 2734 "./util/configparser.y" + case 507: +#line 2744 "./util/configparser.y" /* yacc.c:1646 */ { 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 5843 "util/configparser.c" +#line 5856 "util/configparser.c" /* yacc.c:1646 */ break; - case 506: -#line 2741 "./util/configparser.y" + case 508: +#line 2751 "./util/configparser.y" /* yacc.c:1646 */ { 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 5853 "util/configparser.c" +#line 5866 "util/configparser.c" /* yacc.c:1646 */ break; - case 507: -#line 2748 "./util/configparser.y" + case 509: +#line 2758 "./util/configparser.y" /* yacc.c:1646 */ { 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 5863 "util/configparser.c" +#line 5876 "util/configparser.c" /* yacc.c:1646 */ break; - case 508: -#line 2755 "./util/configparser.y" + case 510: +#line 2765 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnstap:)\n")); } -#line 5871 "util/configparser.c" +#line 5884 "util/configparser.c" /* yacc.c:1646 */ break; - case 529: -#line 2775 "./util/configparser.y" + case 531: +#line 2785 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5879,31 +5892,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5883 "util/configparser.c" +#line 5896 "util/configparser.c" /* yacc.c:1646 */ break; - case 530: -#line 2784 "./util/configparser.y" + case 532: +#line 2794 "./util/configparser.y" /* yacc.c:1646 */ { 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 5893 "util/configparser.c" +#line 5906 "util/configparser.c" /* yacc.c:1646 */ break; - case 531: -#line 2791 "./util/configparser.y" + case 533: +#line 2801 "./util/configparser.y" /* yacc.c:1646 */ { 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 5903 "util/configparser.c" +#line 5916 "util/configparser.c" /* yacc.c:1646 */ break; - case 532: -#line 2798 "./util/configparser.y" + case 534: +#line 2808 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5911,51 +5924,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5928 "util/configparser.c" /* yacc.c:1646 */ break; - case 533: -#line 2807 "./util/configparser.y" + case 535: +#line 2817 "./util/configparser.y" /* yacc.c:1646 */ { 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 5925 "util/configparser.c" +#line 5938 "util/configparser.c" /* yacc.c:1646 */ break; - case 534: -#line 2814 "./util/configparser.y" + case 536: +#line 2824 "./util/configparser.y" /* yacc.c:1646 */ { 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 5935 "util/configparser.c" +#line 5948 "util/configparser.c" /* yacc.c:1646 */ break; - case 535: -#line 2821 "./util/configparser.y" + case 537: +#line 2831 "./util/configparser.y" /* yacc.c:1646 */ { 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 5945 "util/configparser.c" +#line 5958 "util/configparser.c" /* yacc.c:1646 */ break; - case 536: -#line 2828 "./util/configparser.y" + case 538: +#line 2838 "./util/configparser.y" /* yacc.c:1646 */ { 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 5955 "util/configparser.c" +#line 5968 "util/configparser.c" /* yacc.c:1646 */ break; - case 537: -#line 2835 "./util/configparser.y" + case 539: +#line 2845 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5963,11 +5976,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5967 "util/configparser.c" +#line 5980 "util/configparser.c" /* yacc.c:1646 */ break; - case 538: -#line 2844 "./util/configparser.y" + case 540: +#line 2854 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5975,31 +5988,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5979 "util/configparser.c" +#line 5992 "util/configparser.c" /* yacc.c:1646 */ break; - case 539: -#line 2853 "./util/configparser.y" + case 541: +#line 2863 "./util/configparser.y" /* yacc.c:1646 */ { 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 5989 "util/configparser.c" +#line 6002 "util/configparser.c" /* yacc.c:1646 */ break; - case 540: -#line 2860 "./util/configparser.y" + case 542: +#line 2870 "./util/configparser.y" /* yacc.c:1646 */ { 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 5999 "util/configparser.c" +#line 6012 "util/configparser.c" /* yacc.c:1646 */ break; - case 541: -#line 2867 "./util/configparser.y" + case 543: +#line 2877 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6008,11 +6021,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6025 "util/configparser.c" /* yacc.c:1646 */ break; - case 542: -#line 2877 "./util/configparser.y" + case 544: +#line 2887 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6021,11 +6034,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6038 "util/configparser.c" /* yacc.c:1646 */ break; - case 543: -#line 2887 "./util/configparser.y" + case 545: +#line 2897 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6034,11 +6047,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6038 "util/configparser.c" +#line 6051 "util/configparser.c" /* yacc.c:1646 */ break; - case 544: -#line 2897 "./util/configparser.y" + case 546: +#line 2907 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6047,11 +6060,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6051 "util/configparser.c" +#line 6064 "util/configparser.c" /* yacc.c:1646 */ break; - case 545: -#line 2907 "./util/configparser.y" + case 547: +#line 2917 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6060,11 +6073,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6077 "util/configparser.c" /* yacc.c:1646 */ break; - case 546: -#line 2917 "./util/configparser.y" + case 548: +#line 2927 "./util/configparser.y" /* yacc.c:1646 */ { 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) @@ -6073,47 +6086,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6077 "util/configparser.c" +#line 6090 "util/configparser.c" /* yacc.c:1646 */ break; - case 547: -#line 2927 "./util/configparser.y" + case 549: +#line 2937 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(python:)\n")); } -#line 6085 "util/configparser.c" +#line 6098 "util/configparser.c" /* yacc.c:1646 */ break; - case 551: -#line 2936 "./util/configparser.y" + case 553: +#line 2946 "./util/configparser.y" /* yacc.c:1646 */ { 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 6095 "util/configparser.c" +#line 6108 "util/configparser.c" /* yacc.c:1646 */ break; - case 552: -#line 2942 "./util/configparser.y" + case 554: +#line 2952 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dynlib:)\n")); } -#line 6103 "util/configparser.c" +#line 6116 "util/configparser.c" /* yacc.c:1646 */ break; - case 556: -#line 2951 "./util/configparser.y" + case 558: +#line 2961 "./util/configparser.y" /* yacc.c:1646 */ { 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 6113 "util/configparser.c" +#line 6126 "util/configparser.c" /* yacc.c:1646 */ break; - case 557: -#line 2957 "./util/configparser.y" + case 559: +#line 2967 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6122,21 +6135,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6126 "util/configparser.c" +#line 6139 "util/configparser.c" /* yacc.c:1646 */ break; - case 558: -#line 2967 "./util/configparser.y" + case 560: +#line 2977 "./util/configparser.y" /* yacc.c:1646 */ { 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 6136 "util/configparser.c" +#line 6149 "util/configparser.c" /* yacc.c:1646 */ break; - case 559: -#line 2974 "./util/configparser.y" + case 561: +#line 2984 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6144,30 +6157,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6148 "util/configparser.c" +#line 6161 "util/configparser.c" /* yacc.c:1646 */ break; - case 560: -#line 2983 "./util/configparser.y" + case 562: +#line 2993 "./util/configparser.y" /* yacc.c:1646 */ { 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 6159 "util/configparser.c" +#line 6172 "util/configparser.c" /* yacc.c:1646 */ break; - case 561: -#line 2991 "./util/configparser.y" + case 563: +#line 3001 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6167 "util/configparser.c" +#line 6180 "util/configparser.c" /* yacc.c:1646 */ break; - case 574: -#line 3007 "./util/configparser.y" + case 576: +#line 3017 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6175,11 +6188,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6192 "util/configparser.c" /* yacc.c:1646 */ break; - case 575: -#line 3017 "./util/configparser.y" + case 577: +#line 3027 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6187,21 +6200,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6191 "util/configparser.c" +#line 6204 "util/configparser.c" /* yacc.c:1646 */ break; - case 576: -#line 3026 "./util/configparser.y" + case 578: +#line 3036 "./util/configparser.y" /* yacc.c:1646 */ { 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 6201 "util/configparser.c" +#line 6214 "util/configparser.c" /* yacc.c:1646 */ break; - case 577: -#line 3033 "./util/configparser.y" + case 579: +#line 3043 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6209,21 +6222,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 6213 "util/configparser.c" +#line 6226 "util/configparser.c" /* yacc.c:1646 */ break; - case 578: -#line 3042 "./util/configparser.y" + case 580: +#line 3052 "./util/configparser.y" /* yacc.c:1646 */ { 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 6223 "util/configparser.c" +#line 6236 "util/configparser.c" /* yacc.c:1646 */ break; - case 579: -#line 3049 "./util/configparser.y" + case 581: +#line 3059 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6231,22 +6244,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 6235 "util/configparser.c" +#line 6248 "util/configparser.c" /* yacc.c:1646 */ break; - case 580: -#line 3058 "./util/configparser.y" + case 582: +#line 3068 "./util/configparser.y" /* yacc.c:1646 */ { 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 6246 "util/configparser.c" +#line 6259 "util/configparser.c" /* yacc.c:1646 */ break; - case 581: -#line 3066 "./util/configparser.y" + case 583: +#line 3076 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6258,22 +6271,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6275 "util/configparser.c" /* yacc.c:1646 */ break; - case 582: -#line 3079 "./util/configparser.y" + case 584: +#line 3089 "./util/configparser.y" /* yacc.c:1646 */ { 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 6273 "util/configparser.c" +#line 6286 "util/configparser.c" /* yacc.c:1646 */ break; - case 583: -#line 3087 "./util/configparser.y" + case 585: +#line 3097 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6285,19 +6298,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6289 "util/configparser.c" +#line 6302 "util/configparser.c" /* yacc.c:1646 */ break; - case 584: -#line 3100 "./util/configparser.y" + case 586: +#line 3110 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(cachedb:)\n")); } -#line 6297 "util/configparser.c" +#line 6310 "util/configparser.c" /* yacc.c:1646 */ break; - case 593: -#line 3111 "./util/configparser.y" + case 595: +#line 3121 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6308,11 +6321,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6312 "util/configparser.c" +#line 6325 "util/configparser.c" /* yacc.c:1646 */ break; - case 594: -#line 3123 "./util/configparser.y" + case 596: +#line 3133 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6323,11 +6336,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6327 "util/configparser.c" +#line 6340 "util/configparser.c" /* yacc.c:1646 */ break; - case 595: -#line 3135 "./util/configparser.y" + case 597: +#line 3145 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6338,11 +6351,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6342 "util/configparser.c" +#line 6355 "util/configparser.c" /* yacc.c:1646 */ break; - case 596: -#line 3147 "./util/configparser.y" + case 598: +#line 3157 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6356,11 +6369,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6360 "util/configparser.c" +#line 6373 "util/configparser.c" /* yacc.c:1646 */ break; - case 597: -#line 3162 "./util/configparser.y" + case 599: +#line 3172 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6372,11 +6385,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6389 "util/configparser.c" /* yacc.c:1646 */ break; - case 598: -#line 3175 "./util/configparser.y" + case 600: +#line 3185 "./util/configparser.y" /* yacc.c:1646 */ { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6388,11 +6401,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6392 "util/configparser.c" +#line 6405 "util/configparser.c" /* yacc.c:1646 */ break; - case 599: -#line 3188 "./util/configparser.y" + case 601: +#line 3198 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6402,19 +6415,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6406 "util/configparser.c" +#line 6419 "util/configparser.c" /* yacc.c:1646 */ break; - case 600: -#line 3199 "./util/configparser.y" + case 602: +#line 3209 "./util/configparser.y" /* yacc.c:1646 */ { OUTYY(("\nP(ipset:)\n")); } -#line 6414 "util/configparser.c" +#line 6427 "util/configparser.c" /* yacc.c:1646 */ break; - case 605: -#line 3208 "./util/configparser.y" + case 607: +#line 3218 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6428,11 +6441,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6432 "util/configparser.c" +#line 6445 "util/configparser.c" /* yacc.c:1646 */ break; - case 606: -#line 3223 "./util/configparser.y" + case 608: +#line 3233 "./util/configparser.y" /* yacc.c:1646 */ { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6446,12 +6459,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6450 "util/configparser.c" +#line 6463 "util/configparser.c" /* yacc.c:1646 */ break; -#line 6454 "util/configparser.c" - +#line 6467 "util/configparser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -6476,13 +6488,14 @@ yyreduce: /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ - { - const int yylhs = yyr1[yyn] - YYNTOKENS; - const int yyi = yypgoto[yylhs] + *yyssp; - yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp - ? yytable[yyi] - : yydefgoto[yylhs]); - } + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; goto yynewstate; @@ -6565,10 +6578,12 @@ yyerrlab: | yyerrorlab -- error raised explicitly by YYERROR. | `---------------------------------------------------*/ yyerrorlab: - /* Pacify compilers when the user code never invokes YYERROR and the - label yyerrorlab therefore never appears in user code. */ - if (0) - YYERROR; + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -6630,7 +6645,6 @@ yyacceptlab: yyresult = 0; goto yyreturn; - /*-----------------------------------. | yyabortlab -- YYABORT comes here. | `-----------------------------------*/ @@ -6638,7 +6652,6 @@ yyabortlab: yyresult = 1; goto yyreturn; - #if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | @@ -6649,10 +6662,6 @@ yyexhaustedlab: /* Fall through. */ #endif - -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6682,7 +6691,7 @@ yyreturn: #endif return yyresult; } -#line 3237 "./util/configparser.y" +#line 3247 "./util/configparser.y" /* yacc.c:1906 */ /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 66662409e..1548199c6 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,9 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, - Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,9 +30,6 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED /* Debug traces. */ @@ -264,78 +260,79 @@ extern int yydebug; VAR_SERVE_EXPIRED_TTL_RESET = 470, VAR_SERVE_EXPIRED_REPLY_TTL = 471, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_SERVE_ORIGINAL_TTL = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -554,90 +551,92 @@ extern int yydebug; #define VAR_SERVE_EXPIRED_TTL_RESET 470 #define VAR_SERVE_EXPIRED_REPLY_TTL 471 #define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_SERVE_ORIGINAL_TTL 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + union YYSTYPE { -#line 66 "./util/configparser.y" +#line 66 "./util/configparser.y" /* yacc.c:1909 */ char* str; -#line 639 "util/configparser.h" - +#line 638 "util/configparser.h" /* yacc.c:1909 */ }; + typedef union YYSTYPE YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 diff --git a/util/configparser.y b/util/configparser.y index eb21abeed..9b300324c 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -147,7 +147,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_ACCESS_CONTROL_TAG_DATA VAR_VIEW VAR_ACCESS_CONTROL_VIEW %token VAR_VIEW_FIRST VAR_SERVE_EXPIRED VAR_SERVE_EXPIRED_TTL %token VAR_SERVE_EXPIRED_TTL_RESET VAR_SERVE_EXPIRED_REPLY_TTL -%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_FAKE_DSA +%token VAR_SERVE_EXPIRED_CLIENT_TIMEOUT VAR_SERVE_ORIGINAL_TTL VAR_FAKE_DSA %token VAR_FAKE_SHA1 VAR_LOG_IDENTITY VAR_HIDE_TRUSTANCHOR %token VAR_TRUST_ANCHOR_SIGNALING VAR_AGGRESSIVE_NSEC VAR_USE_SYSTEMD %token VAR_SHM_ENABLE VAR_SHM_KEY VAR_ROOT_KEY_SENTINEL @@ -264,7 +264,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_qname_minimisation_strict | server_serve_expired | server_serve_expired_ttl | server_serve_expired_ttl_reset | server_serve_expired_reply_ttl | server_serve_expired_client_timeout | - server_fake_dsa | server_log_identity | server_use_systemd | + server_serve_original_ttl | server_fake_dsa | + server_log_identity | server_use_systemd | server_response_ip_tag | server_response_ip | server_response_ip_data | server_shm_enable | server_shm_key | server_fake_sha1 | server_hide_trustanchor | server_trust_anchor_signaling | @@ -1816,6 +1817,15 @@ server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG free($2); } ; +server_serve_original_ttl: VAR_SERVE_ORIGINAL_TTL STRING_ARG + { + OUTYY(("P(server_serve_original_ttl:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->serve_original_ttl = (strcmp($2, "yes")==0); + free($2); + } + ; server_fake_dsa: VAR_FAKE_DSA STRING_ARG { OUTYY(("P(server_fake_dsa:%s)\n", $2)); diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..bf5c9ab43 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -483,7 +483,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); else sldns_buffer_write_u32(pkt, - data->rr_ttl[j]-timenow); + data->rr_ttl[j]-(timenow == 0 ? 0 : + (SERVE_ORIGINAL_TTL ? + data->ttl_add : timenow))); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -521,7 +523,9 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); else sldns_buffer_write_u32(pkt, - data->rr_ttl[i]-timenow); + data->rr_ttl[i]-(timenow == 0 ? 0 : + (SERVE_ORIGINAL_TTL ? + data->ttl_add : timenow))); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], diff --git a/util/data/msgparse.h b/util/data/msgparse.h index fd04f9f6f..001cc4fe5 100644 --- a/util/data/msgparse.h +++ b/util/data/msgparse.h @@ -87,6 +87,8 @@ extern time_t SERVE_EXPIRED_TTL; extern time_t SERVE_EXPIRED_REPLY_TTL; /** Negative cache time (for entries without any RRs.) */ #define NORR_TTL 5 /* seconds */ +/** If we serve the original TTL or decrementing TTLs */ +extern int SERVE_ORIGINAL_TTL; /** * Data stored in scratch pad memory during parsing. diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 927bf09a2..5a6c1f853 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -67,6 +67,8 @@ int SERVE_EXPIRED = 0; time_t SERVE_EXPIRED_TTL = 0; /** TTL to use for expired records */ time_t SERVE_EXPIRED_REPLY_TTL = 30; +/** If we serve the original TTL or decrementing TTLs */ +int SERVE_ORIGINAL_TTL = 0; /** allocate qinfo, return 0 on error */ static int @@ -526,6 +528,7 @@ reply_info_set_ttls(struct reply_info* rep, time_t timenow) for(j=0; jcount + data->rrsig_count; j++) { data->rr_ttl[j] += timenow; } + data->ttl_add = timenow; } } diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 4b0294f97..6147233ab 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -220,6 +220,7 @@ packed_rrset_ttl_add(struct packed_rrset_data* data, time_t add) { size_t i; size_t total = data->count + data->rrsig_count; + data->ttl_add = add; data->ttl += add; for(i=0; irr_ttl[i] += add; @@ -286,7 +287,7 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, else sldns_write_uint16(rr+rrset->rk.dname_len, LDNS_RR_TYPE_RRSIG); memmove(rr+rrset->rk.dname_len+2, &rrset->rk.rrset_class, 2); sldns_write_uint32(rr+rrset->rk.dname_len+4, - (uint32_t)(d->rr_ttl[i]-now)); + (uint32_t)(d->rr_ttl[i]-(SERVE_ORIGINAL_TTL ? d->ttl_add : now))); memmove(rr+rrset->rk.dname_len+8, d->rr_data[i], d->rr_len[i]); if(sldns_wire2str_rr_buf(rr, rlen, dest, dest_len) == -1) { log_info("rrbuf failure %d %s", (int)d->rr_len[i], dest); @@ -353,11 +354,12 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, for(i=0; icount + d->rrsig_count; i++) { if(d->rr_ttl[i] < now) d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->rr_ttl[i] -= now; + else d->rr_ttl[i] -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; } if(d->ttl < now) d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->ttl -= now; + else d->ttl -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + d->ttl_add = 0; /* TTLs have been made relative */ return ck; } diff --git a/util/data/packed_rrset.h b/util/data/packed_rrset.h index 729877bab..ff95c0af0 100644 --- a/util/data/packed_rrset.h +++ b/util/data/packed_rrset.h @@ -233,6 +233,9 @@ enum sec_status { * the ttl value to send changes due to time. */ struct packed_rrset_data { + /** Timestamp added to TTLs in the packed data. + * Needed to support serving original TTLs. */ + time_t ttl_add; /** TTL (in seconds like time()) of the rrset. * Same for all RRs see rfc2181(5.2). */ time_t ttl; From e7cc57ceae732f0be337d10445ec77ec73da55ba Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:16:14 +0200 Subject: [PATCH 109/394] - Ignore unknown frame streams control fields. --- dnstap/dtstream.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 171fe1c12..bface6b06 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -71,6 +71,8 @@ /** maximum length of received frame */ #define DTIO_RECV_FRAME_MAX_LEN 1000 +/** lentgh of the ACCEPT frame with DNSTAP content type */ +#define DNSTAP_ACCEPT_FRAME_LEN 4+4+4+strlen(DNSTAP_CONTENT_TYPE) struct stop_flush_info; /** DTIO command channel commands */ @@ -1004,6 +1006,7 @@ static int dtio_check_close(struct dt_io_thread* dtio) static int dtio_read_accept_frame(struct dt_io_thread* dtio) { int r; + size_t read_frame_done; while(dtio->read_frame.frame_len_done < 4) { #ifdef HAVE_SSL if(dtio->ssl) { @@ -1092,23 +1095,38 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) dtio_read_frame_free(&dtio->read_frame); return -1; } + read_frame_done = 4; /* control frame type */ - if(dtio->read_frame.frame_len != 4+4+4+strlen(DNSTAP_CONTENT_TYPE) || - memcmp(dtio->read_frame.buf+4+4+4, DNSTAP_CONTENT_TYPE, - strlen(DNSTAP_CONTENT_TYPE)) != 0) { - verbose(VERB_OPS, "dnstap: invalid content type on ACCEPT " - "frame"); - goto close_connection; + /* Iteratate over control fields, ignore unknown types. + * Need to be able to read at least 2 bytes (control field type + + * length). */ + while(read_frame_done+8 < dtio->read_frame.frame_len) { + uint32_t type = sldns_read_uint32(dtio->read_frame.buf + + read_frame_done); + uint32_t len = sldns_read_uint32(dtio->read_frame.buf + + read_frame_done + 4); + if(type == FSTRM_CONTROL_FIELD_TYPE_CONTENT_TYPE) { + if(len == strlen(DNSTAP_CONTENT_TYPE) && + read_frame_done+8+len <= + dtio->read_frame.frame_len && + memcmp(dtio->read_frame.buf + read_frame_done + + + 8, DNSTAP_CONTENT_TYPE, len) == 0) { + if(!dtio_control_start_send(dtio)) { + verbose(VERB_OPS, "dnstap io: out of " + "memory while sending START frame"); + goto close_connection; + } + dtio->accept_frame_received = 1; + return 1; + } else { + /* unknow content type */ + goto close_connection; + } + } + /* unknown option, try next */ + read_frame_done += 8+len; } - if(!dtio_control_start_send(dtio)) { - verbose(VERB_OPS, "dnstap io: out of memory while sending " - "START frame"); - goto close_connection; - } - - dtio->accept_frame_received = 1; - return 1; close_connection: dtio_del_output_event(dtio); From b280527e3e72bd0b2f49a1ed5aa8ba7e38d9dd88 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:31:18 +0200 Subject: [PATCH 110/394] Log dnstap connection close due to unknown content type. --- dnstap/dtstream.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index bface6b06..57fbf9a78 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1120,6 +1120,9 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) return 1; } else { /* unknow content type */ + verbose(VERB_ALGO, "dnstap: ACCEPT frames " + "contains unknown content type, " + "closing connection"); goto close_connection; } } From 7189ba715d57ef4b34c7773ee268beac2d81df49 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:33:48 +0200 Subject: [PATCH 111/394] dnstap log message typo fix --- dnstap/dtstream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 57fbf9a78..3a792f589 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1120,7 +1120,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) return 1; } else { /* unknow content type */ - verbose(VERB_ALGO, "dnstap: ACCEPT frames " + verbose(VERB_ALGO, "dnstap: ACCEPT frame " "contains unknown content type, " "closing connection"); goto close_connection; From ec6fde611c2ed016e22fa9435181c18e48495a7f Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 15 Jul 2020 15:36:06 +0000 Subject: [PATCH 112/394] Cleaned up adjustment in message encoding, fixes spurious negative TTLs --- util/data/msgencode.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/util/data/msgencode.c b/util/data/msgencode.c index bf5c9ab43..5de9379a1 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -454,6 +454,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, size_t i, j, owner_pos; int r, owner_labs; uint16_t owner_ptr = 0; + time_t adjust = 0; struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; @@ -464,9 +465,12 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, owner_labs = dname_count_labels(key->rk.dname); owner_pos = sldns_buffer_position(pkt); - /* For an rrset with a fixed TTL, use the rrset's TTL as given */ + /** Determine relative time adjustment for TTL values. + * For an rrset with a fixed TTL, use the rrset's TTL as given. */ if((key->rk.flags & PACKED_RRSET_FIXEDTTL) != 0) - timenow = 0; + adjust = 0; + else + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : timenow; if(do_data) { const sldns_rr_descriptor* c = type_rdata_compressable(key); @@ -479,13 +483,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, return r; sldns_buffer_write(pkt, &key->rk.type, 2); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[j] < timenow) + if(data->rr_ttl[j] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[j]-(timenow == 0 ? 0 : - (SERVE_ORIGINAL_TTL ? - data->ttl_add : timenow))); + else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -519,13 +520,10 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, } sldns_buffer_write_u16(pkt, LDNS_RR_TYPE_RRSIG); sldns_buffer_write(pkt, &key->rk.rrset_class, 2); - if(data->rr_ttl[i] < timenow) + if(data->rr_ttl[i] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, - data->rr_ttl[i]-(timenow == 0 ? 0 : - (SERVE_ORIGINAL_TTL ? - data->ttl_add : timenow))); + else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], From 889b979a0e8d87cf6345d4dd3486bac446b0fd73 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 23:01:13 +0200 Subject: [PATCH 113/394] remove unused define --- dnstap/dtstream.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 3a792f589..7f0c38504 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -71,8 +71,6 @@ /** maximum length of received frame */ #define DTIO_RECV_FRAME_MAX_LEN 1000 -/** lentgh of the ACCEPT frame with DNSTAP content type */ -#define DNSTAP_ACCEPT_FRAME_LEN 4+4+4+strlen(DNSTAP_CONTENT_TYPE) struct stop_flush_info; /** DTIO command channel commands */ @@ -1097,7 +1095,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) } read_frame_done = 4; /* control frame type */ - /* Iteratate over control fields, ignore unknown types. + /* Iterate over control fields, ignore unknown types. * Need to be able to read at least 2 bytes (control field type + * length). */ while(read_frame_done+8 < dtio->read_frame.frame_len) { From 6ca79ff7274f629d2e5f082e4f77ae9d7a8cfcf5 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 10:54:18 +0200 Subject: [PATCH 114/394] correct byte count in comment --- dnstap/dtstream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 7f0c38504..dda3ef1ff 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1096,7 +1096,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) read_frame_done = 4; /* control frame type */ /* Iterate over control fields, ignore unknown types. - * Need to be able to read at least 2 bytes (control field type + + * Need to be able to read at least 8 bytes (control field type + * length). */ while(read_frame_done+8 < dtio->read_frame.frame_len) { uint32_t type = sldns_read_uint32(dtio->read_frame.buf + From d75f58d659ac051704e1c7048f3034b3e96a6ea0 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 11:45:10 +0200 Subject: [PATCH 115/394] - Add changelog entry for bidirectional frame streams support. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f4304bddf..dd2a68480 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: Ralph + - Add bidirectional frame streams support. + 8 July 2020: Wouter - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. From b953cd9aa045a009d3d4ddaeb6d45ac908c70596 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 12:31:30 +0200 Subject: [PATCH 116/394] Change unbound-dnstap-socket void cast for unused parameter --- dnstap/unbound-dnstap-socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index d530b9a89..44a0eda95 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -815,7 +815,7 @@ static int reply_with_accept(struct tap_data* data) return 1; #else log_err("no dnstap compiled, no reply"); - (void)fd; + (void)data; return 0; #endif } From 8876751ed1aca480a3ff4f5fa9826353edb832ba Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 16 Jul 2020 13:01:14 +0200 Subject: [PATCH 117/394] - Changelog entry for PR #265; include-toplevel. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dd2a68480..d7fb1e298 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: George + - Introduce 'include-toplevel:' configuration option. + 16 July 2020: Ralph - Add bidirectional frame streams support. From 84adade86ce1c49cc8967436666b1ca819b77718 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Jul 2020 14:47:15 +0200 Subject: [PATCH 118/394] - Fix check conf test for referencing installation paths. --- doc/Changelog | 3 +++ testdata/04-checkconf.tdir/bad.badfwd | 1 + testdata/04-checkconf.tdir/bad.user | 2 ++ testdata/04-checkconf.tdir/good.include-toplevel | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d7fb1e298..38987e7f1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: Wouter + - Fix check conf test for referencing installation paths. + 16 July 2020: George - Introduce 'include-toplevel:' configuration option. diff --git a/testdata/04-checkconf.tdir/bad.badfwd b/testdata/04-checkconf.tdir/bad.badfwd index 27d58c5ea..139d31238 100644 --- a/testdata/04-checkconf.tdir/bad.badfwd +++ b/testdata/04-checkconf.tdir/bad.badfwd @@ -2,6 +2,7 @@ server: # to make sure the check doesn't fail on username or chrootdir. username: "" chroot: "" + directory: "" forward-zone: name: "example.com" diff --git a/testdata/04-checkconf.tdir/bad.user b/testdata/04-checkconf.tdir/bad.user index 40631abb4..ffa556e44 100644 --- a/testdata/04-checkconf.tdir/bad.user +++ b/testdata/04-checkconf.tdir/bad.user @@ -1,2 +1,4 @@ server: username: blabla_noexist_user + chroot: "" + directory: "" diff --git a/testdata/04-checkconf.tdir/good.include-toplevel b/testdata/04-checkconf.tdir/good.include-toplevel index 91dc6980a..e88df7d56 100644 --- a/testdata/04-checkconf.tdir/good.include-toplevel +++ b/testdata/04-checkconf.tdir/good.include-toplevel @@ -10,3 +10,7 @@ server: identity: "top 2" include-toplevel: include.includetop.withclauses.* include-toplevel: include.include.withclauses.* include-toplevel: include.include.withclauses.* +server: + chroot: "" + directory: "" + username: "" From 2902ee133bcd3acc7258d08e5315ddac600942f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Jul 2020 15:41:25 +0200 Subject: [PATCH 119/394] - Fix unused variable warning for clang analyzer. --- daemon/unbound.c | 2 ++ doc/Changelog | 1 + 2 files changed, 3 insertions(+) diff --git a/daemon/unbound.c b/daemon/unbound.c index ceb3da6f5..3f96603c4 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -534,6 +534,8 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, LOGIN_SETALL & ~LOGIN_SETUSER & ~LOGIN_SETGROUP) != 0) log_warn("unable to setusercontext %s: %s", cfg->username, strerror(errno)); +#else + (void)pwd; #endif /* HAVE_SETUSERCONTEXT */ } #endif /* HAVE_GETPWNAM */ diff --git a/doc/Changelog b/doc/Changelog index 38987e7f1..f3450e075 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 16 July 2020: Wouter - Fix check conf test for referencing installation paths. + - Fix unused variable warning for clang analyzer. 16 July 2020: George - Introduce 'include-toplevel:' configuration option. From 14a04334702d6b056a21fd56be3e449500858b91 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 17 Jul 2020 13:07:03 +0200 Subject: [PATCH 120/394] =?UTF-8?q?-=20Merge=20PR=20#234=20-=20Ensure=20pr?= =?UTF-8?q?oper=20alignment=20of=20cmsg=20buffers=20by=20J=C3=A9r=C3=A9mie?= =?UTF-8?q?=20=20=20Courr=C3=A8ges-Anglas.=20-=20Fix=20PR=20#234=20log=5Fa?= =?UTF-8?q?ssert=20sizeof=20to=20use=20union=20buffer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 5 +++++ util/netevent.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f3450e075..2ea7e753f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +17 July 2020: Ralph + - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie + Courrèges-Anglas. + - Fix PR #234 log_assert sizeof to use union buffer. + 16 July 2020: Wouter - Fix check conf test for referencing installation paths. - Fix unused variable warning for clang analyzer. diff --git a/util/netevent.c b/util/netevent.c index 159d344d6..3e7a433e5 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -480,7 +480,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, #ifdef IP_PKTINFO void* cmsg_data; msg.msg_controllen = CMSG_SPACE(sizeof(struct in_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IP; cmsg->cmsg_type = IP_PKTINFO; memmove(CMSG_DATA(cmsg), &r->pktinfo.v4info, @@ -491,7 +491,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo)); #elif defined(IP_SENDSRCADDR) msg.msg_controllen = CMSG_SPACE(sizeof(struct in_addr)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IP; cmsg->cmsg_type = IP_SENDSRCADDR; memmove(CMSG_DATA(cmsg), &r->pktinfo.v4addr, @@ -504,7 +504,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, } else if(r->srctype == 6) { void* cmsg_data; msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IPV6; cmsg->cmsg_type = IPV6_PKTINFO; memmove(CMSG_DATA(cmsg), &r->pktinfo.v6info, @@ -516,7 +516,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, } else { /* try to pass all 0 to use default route */ msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IPV6; cmsg->cmsg_type = IPV6_PKTINFO; memset(CMSG_DATA(cmsg), 0, sizeof(struct in6_pktinfo)); From 7d4445c03da78d9a7d6b780cd463de4a46fc2fea Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 17 Jul 2020 16:53:52 +0200 Subject: [PATCH 121/394] - Fix libnettle compile for session ticket key callback function changes. --- doc/Changelog | 4 ++++ util/net_help.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2ea7e753f..a551a59d4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +17 July 2020: Wouter + - Fix libnettle compile for session ticket key callback function + changes. + 17 July 2020: Ralph - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie Courrèges-Anglas. diff --git a/util/net_help.c b/util/net_help.c index a00fe2e2f..f59a4d653 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -97,6 +97,7 @@ static struct tls_session_ticket_key { * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket * (the ticket is decrypt only). and <0 for failures. */ +#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB @@ -105,6 +106,7 @@ int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, HMAC_CTX* hmac_ctx, #endif int enc); +#endif /* HAVE_SSL */ /* returns true is string addr is an ip6 specced address */ int @@ -1267,6 +1269,7 @@ int set_auth_name_on_ssl(void* ssl, char* auth_name, int use_sni) } #else (void)ssl; + (void)use_sni; #endif #ifdef HAVE_SSL_SET1_HOST SSL_set_verify(ssl, SSL_VERIFY_PEER, NULL); @@ -1434,6 +1437,7 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } +#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_sctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB @@ -1531,6 +1535,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, return 0; #endif } +#endif /* HAVE_SSL */ void listen_sslctx_delete_ticket_keys(void) From b7b5952c3aaa22c89e69c8ef994cab1e0dc0076a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 17 Jul 2020 17:15:55 +0200 Subject: [PATCH 122/394] - Fix lock dependency cycle in rpz zone config setup. --- doc/Changelog | 1 + services/authzone.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a551a59d4..8d820ca92 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function changes. + - Fix lock dependency cycle in rpz zone config setup. 17 July 2020: Ralph - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie diff --git a/services/authzone.c b/services/authzone.c index 9b0568c8c..a26d1003a 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1866,15 +1866,26 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) struct auth_xfer* x = NULL; /* create zone */ + if(c->isrpz) { + /* if the rpz lock is needed, grab it before the other + * locks to avoid a lock dependency cycle */ + lock_rw_wrlock(&az->rpz_lock); + } lock_rw_wrlock(&az->lock); if(!(z=auth_zones_find_or_add_zone(az, c->name))) { lock_rw_unlock(&az->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } if(c->masters || c->urls) { if(!(x=auth_zones_find_or_add_xfer(az, z))) { lock_rw_unlock(&az->lock); lock_rw_unlock(&z->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } } @@ -1889,6 +1900,9 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) lock_basic_unlock(&x->lock); } lock_rw_unlock(&z->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } z->for_downstream = c->for_downstream; @@ -1900,11 +1914,13 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) return 0; } lock_protect(&z->lock, &z->rpz->local_zones, sizeof(*z->rpz)); - lock_rw_wrlock(&az->rpz_lock); + /* the az->rpz_lock is locked above */ z->rpz_az_next = az->rpz_first; if(az->rpz_first) az->rpz_first->rpz_az_prev = z; az->rpz_first = z; + } + if(c->isrpz) { lock_rw_unlock(&az->rpz_lock); } From 53ecdfc0b57e471c0f47f06ef77a637345a20e2a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:34:40 +0200 Subject: [PATCH 123/394] - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. --- doc/Changelog | 4 ++++ testcode/streamtcp.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8d820ca92..7ed21c876 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +20 July 2020: Wouter + - Fix streamtcp to print packet data to stdout. This makes the + stdout and stderr not mix together lines, when parsing its output. + 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function changes. diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 65ea8d4bc..c49159d33 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -200,6 +200,7 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, static void recv_one(int fd, int udp, SSL* ssl, sldns_buffer* buf) { + size_t i; char* pktstr; uint16_t len; if(!udp) { @@ -270,7 +271,13 @@ recv_one(int fd, int udp, SSL* ssl, sldns_buffer* buf) len = (size_t)l; } printf("\nnext received packet\n"); - log_buf(0, "data", buf); + printf("data[%d] ", (int)sldns_buffer_limit(buf)); + for(i=0; i>4], + hex[sldns_buffer_read_u8_at(buf, i)&0x0f]); + } + printf("\n"); pktstr = sldns_wire2str_pkt(sldns_buffer_begin(buf), len); printf("%s", pktstr); From 477bb1a6ffdd56ec36dbb4411fd78cc9f53ca56c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:53:30 +0200 Subject: [PATCH 124/394] - Fix contrib/fastrpz.patch to apply cleanly. --- contrib/fastrpz.patch | 4 ++-- doc/Changelog | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/contrib/fastrpz.patch b/contrib/fastrpz.patch index aacd5ab82..e85ea5055 100644 --- a/contrib/fastrpz.patch +++ b/contrib/fastrpz.patch @@ -27,8 +27,8 @@ index a20058cc..495779cc 100644 validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ --$(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo -+$(FASTRPZ_OBJ) $(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo +-$(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo ++$(FASTRPZ_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 COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo diff --git a/doc/Changelog b/doc/Changelog index 7ed21c876..a010517cf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. + - Fix contrib/fastrpz.patch to apply cleanly. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From 6a13b51bedb3d16adccbdf725954bb7f35271d81 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:55:13 +0200 Subject: [PATCH 125/394] - Fix contrib/fastrpz.patch to apply cleanly. --- contrib/fastrpz.patch | 118 +++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/contrib/fastrpz.patch b/contrib/fastrpz.patch index e85ea5055..5b3c18a7c 100644 --- a/contrib/fastrpz.patch +++ b/contrib/fastrpz.patch @@ -2,7 +2,7 @@ Description: based on the included patch contrib/fastrpz.patch Author: fastrpz@farsightsecurity.com --- diff --git a/Makefile.in b/Makefile.in -index a20058cc..495779cc 100644 +index bac212df..4824927f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,6 +23,8 @@ CHECKLOCK_SRC=testcode/checklocks.c @@ -13,8 +13,8 @@ index a20058cc..495779cc 100644 +FASTRPZ_OBJ=@FASTRPZ_OBJ@ DNSCRYPT_SRC=@DNSCRYPT_SRC@ DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ - WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ -@@ -127,7 +129,7 @@ validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ + WITH_DYNLIBMODULE=@WITH_DYNLIBMODULE@ +@@ -134,7 +136,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/cachedb.c cachedb/redis.c respip/respip.c $(CHECKLOCK_SRC) \ @@ -23,7 +23,7 @@ index a20058cc..495779cc 100644 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 \ -@@ -140,7 +142,7 @@ autotrust.lo val_anchor.lo rpz.lo \ +@@ -147,7 +149,7 @@ autotrust.lo val_anchor.lo rpz.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ @@ -32,7 +32,7 @@ index a20058cc..495779cc 100644 COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo -@@ -410,6 +412,11 @@ dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ +@@ -428,6 +430,11 @@ dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ $(srcdir)/util/config_file.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h @@ -45,10 +45,10 @@ index a20058cc..495779cc 100644 pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ pythonmod/interface.h \ diff --git a/config.h.in b/config.h.in -index 78d47fed..e33073e4 100644 +index f7a4095e..d5a4fa01 100644 --- a/config.h.in +++ b/config.h.in -@@ -1345,4 +1345,11 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, +@@ -1364,4 +1364,11 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, /** the version of unbound-control that this software implements */ #define UNBOUND_CONTROL_VERSION 1 @@ -62,7 +62,7 @@ index 78d47fed..e33073e4 100644 +/** turn on fastrpz response policy zones */ +#undef ENABLE_FASTRPZ diff --git a/configure.ac b/configure.ac -index 2b91dd3c..e6063d17 100644 +index 5c373d9d..e45abd89 100644 --- a/configure.ac +++ b/configure.ac @@ -6,6 +6,7 @@ sinclude(ax_pthread.m4) @@ -73,10 +73,10 @@ index 2b91dd3c..e6063d17 100644 sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing -@@ -1778,6 +1779,9 @@ case "$enable_ipset" in - ;; +@@ -1819,6 +1820,9 @@ case "$enable_explicit_port_randomisation" in esac + +# check for Fastrpz with fastrpz/rpz.m4 +ck_FASTRPZ + @@ -84,7 +84,7 @@ index 2b91dd3c..e6063d17 100644 # on openBSD, the implicit rule make $< work. # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). diff --git a/daemon/daemon.c b/daemon/daemon.c -index 8b0fc348..7ffb9221 100644 +index 5d427925..f89f1437 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -91,6 +91,9 @@ @@ -97,8 +97,8 @@ index 8b0fc348..7ffb9221 100644 #ifdef HAVE_SYSTEMD #include -@@ -458,6 +461,14 @@ daemon_create_workers(struct daemon* daemon) - dt_apply_cfg(daemon->dtenv, daemon->cfg); +@@ -456,6 +459,14 @@ daemon_create_workers(struct daemon* daemon) + fatal_exit("dt_create failed"); #else fatal_exit("dnstap enabled in config but not built with dnstap support"); +#endif @@ -112,7 +112,7 @@ index 8b0fc348..7ffb9221 100644 #endif } for(i=0; inum; i++) { -@@ -731,6 +742,9 @@ daemon_cleanup(struct daemon* daemon) +@@ -729,6 +740,9 @@ daemon_cleanup(struct daemon* daemon) #ifdef USE_DNSCRYPT dnsc_delete(daemon->dnscenv); daemon->dnscenv = NULL; @@ -139,7 +139,7 @@ index 3effbafb..4d4c34da 100644 /** diff --git a/daemon/worker.c b/daemon/worker.c -index eb7fdf2f..1982228d 100644 +index 23e3244c..b63d49b7 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -76,6 +76,9 @@ @@ -152,7 +152,7 @@ index eb7fdf2f..1982228d 100644 #include "sldns/wire2str.h" #include "util/shm_side/shm_main.h" #include "dnscrypt/dnscrypt.h" -@@ -534,8 +537,27 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, +@@ -535,8 +538,27 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, /* not secure */ secure = 0; break; @@ -180,7 +180,7 @@ index eb7fdf2f..1982228d 100644 /* return this delegation from the cache */ edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; -@@ -710,6 +732,23 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, +@@ -711,6 +733,23 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, *is_secure_answer = 0; } } else *is_secure_answer = 0; @@ -204,7 +204,7 @@ index eb7fdf2f..1982228d 100644 edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; -@@ -1435,6 +1474,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, +@@ -1436,6 +1475,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", &repinfo->addr, repinfo->addrlen); goto send_reply; @@ -220,7 +220,7 @@ index eb7fdf2f..1982228d 100644 } /* If we've found a local alias, replace the qname with the alias -@@ -1485,12 +1533,21 @@ lookup_cache: +@@ -1486,12 +1534,21 @@ lookup_cache: h = query_info_hash(lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); if((e=slabhash_lookup(worker->env.msg_cache, h, lookup_qinfo, 0))) { /* answer from cache - we have acquired a readlock on it */ @@ -244,7 +244,7 @@ index eb7fdf2f..1982228d 100644 /* prefetch it if the prefetch TTL expired. * Note that if there is more than one pass * its qname must be that used for cache -@@ -1547,11 +1604,19 @@ lookup_cache: +@@ -1548,11 +1605,19 @@ lookup_cache: lock_rw_unlock(&e->lock); } if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { @@ -267,10 +267,10 @@ index eb7fdf2f..1982228d 100644 } verbose(VERB_ALGO, "answer norec from cache -- " diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in -index 38c2d298..3b07f392 100644 +index cd43f04e..b92a1af8 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in -@@ -1828,6 +1828,81 @@ List domain for which the AAAA records are ignored and the A record is +@@ -1878,6 +1878,81 @@ List domain for which the AAAA records are ignored and the A record is used by dns64 processing instead. Can be entered multiple times, list a new domain for which it applies, one per line. Applies also to names underneath the name given. @@ -2888,7 +2888,7 @@ index 00000000..21235355 + fi +]) diff --git a/iterator/iterator.c b/iterator/iterator.c -index 1e0113a8..2fcbf547 100644 +index 23b07ea9..c3d31a33 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -68,6 +68,9 @@ @@ -2901,7 +2901,7 @@ index 1e0113a8..2fcbf547 100644 /* in msec */ int UNKNOWN_SERVER_NICENESS = 376; -@@ -555,6 +558,23 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -563,6 +566,23 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, if(ntohs(r->rk.type) == LDNS_RR_TYPE_CNAME && query_dname_compare(*mname, r->rk.dname) == 0 && !iter_find_rrset_in_prepend_answer(iq, r)) { @@ -2925,7 +2925,7 @@ index 1e0113a8..2fcbf547 100644 /* Add this relevant CNAME rrset to the prepend list.*/ if(!iter_add_prepend_answer(qstate, iq, r)) return 0; -@@ -563,6 +583,9 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -571,6 +591,9 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, /* Other rrsets in the section are ignored. */ } @@ -2935,7 +2935,7 @@ index 1e0113a8..2fcbf547 100644 /* add authority rrsets to authority prepend, for wildcarded CNAMEs */ for(i=msg->rep->an_numrrsets; irep->an_numrrsets + msg->rep->ns_numrrsets; i++) { -@@ -1199,6 +1222,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1231,6 +1254,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, uint8_t* delname; size_t delnamelen; struct dns_msg* msg = NULL; @@ -2943,7 +2943,7 @@ index 1e0113a8..2fcbf547 100644 log_query_info(VERB_DETAIL, "resolving", &qstate->qinfo); /* check effort */ -@@ -1285,8 +1309,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1317,8 +1341,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, } if(msg) { /* handle positive cache response */ @@ -2953,7 +2953,7 @@ index 1e0113a8..2fcbf547 100644 if(verbosity >= VERB_ALGO) { log_dns_msg("msg from cache lookup", &msg->qinfo, msg->rep); -@@ -1294,7 +1317,22 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1326,7 +1349,22 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, (int)msg->rep->ttl, (int)msg->rep->prefetch_ttl); } @@ -2976,7 +2976,7 @@ index 1e0113a8..2fcbf547 100644 if(type == RESPONSE_TYPE_CNAME) { uint8_t* sname = 0; size_t slen = 0; -@@ -2718,6 +2756,62 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -2801,6 +2839,62 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, sock_list_insert(&qstate->reply_origin, &qstate->reply->addr, qstate->reply->addrlen, qstate->region); @@ -3039,7 +3039,7 @@ index 1e0113a8..2fcbf547 100644 if(iq->minimisation_state != DONOT_MINIMISE_STATE && !(iq->chase_flags & BIT_RD)) { if(FLAGS_GET_RCODE(iq->response->rep->flags) != -@@ -3471,12 +3565,44 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3563,12 +3657,44 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, * but only if we did recursion. The nonrecursion referral * from cache does not need to be stored in the msg cache. */ if(!qstate->no_cache_store && qstate->query_flags&BIT_RD) { @@ -3085,10 +3085,10 @@ index 1e0113a8..2fcbf547 100644 qstate->return_msg = iq->response; return 0; diff --git a/iterator/iterator.h b/iterator/iterator.h -index a2f1b570..e1e4a738 100644 +index 342ac207..49b0ecdd 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h -@@ -386,6 +386,16 @@ struct iter_qstate { +@@ -396,6 +396,16 @@ struct iter_qstate { */ int minimise_count; @@ -3104,12 +3104,12 @@ index a2f1b570..e1e4a738 100644 + /** * Count number of time-outs. Used to prevent resolving failures when - * the QNAME minimisation QTYPE is blocked. */ + * the QNAME minimisation QTYPE is blocked. Used to determine if diff --git a/services/cache/dns.c b/services/cache/dns.c -index 2a5bca4a..6de8863a 100644 +index 7b6e142c..6d7449f5 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c -@@ -967,6 +967,14 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, +@@ -969,6 +969,14 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, struct regional* region, uint32_t flags) { struct reply_info* rep = NULL; @@ -3125,7 +3125,7 @@ index 2a5bca4a..6de8863a 100644 rep = reply_info_copy(msgrep, env->alloc, NULL); if(!rep) diff --git a/services/mesh.c b/services/mesh.c -index 9114ef4c..3dc518e5 100644 +index 4b0c5db4..eb9cfa5b 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -61,6 +61,9 @@ @@ -3138,7 +3138,7 @@ index 9114ef4c..3dc518e5 100644 #include "respip/respip.h" #include "services/listen_dnsport.h" -@@ -1195,6 +1198,13 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, +@@ -1207,6 +1210,13 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; @@ -3152,7 +3152,7 @@ index 9114ef4c..3dc518e5 100644 /* send the reply */ /* We don't reuse the encoded answer if either the previous or current * response has a local alias. We could compare the alias records -@@ -1415,6 +1425,7 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, +@@ -1434,6 +1444,7 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, key.s.is_valrec = valrec; key.s.qinfo = *qinfo; key.s.query_flags = qflags; @@ -3160,7 +3160,7 @@ index 9114ef4c..3dc518e5 100644 /* We are searching for a similar mesh state when we DO want to * aggregate the state. Thus unique is set to NULL. (default when we * desire aggregation).*/ -@@ -1461,6 +1472,10 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, +@@ -1480,6 +1491,10 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, if(!r) return 0; r->query_reply = *rep; @@ -3172,11 +3172,11 @@ index 9114ef4c..3dc518e5 100644 if(edns->opt_list) { r->edns.opt_list = edns_opt_copy_region(edns->opt_list, diff --git a/util/config_file.c b/util/config_file.c -index 52ca5a18..0660248f 100644 +index 0e9ee471..a5fd72e0 100644 --- a/util/config_file.c +++ b/util/config_file.c -@@ -1460,6 +1460,8 @@ config_delete(struct config_file* cfg) - free(cfg->dnstap_socket_path); +@@ -1495,6 +1495,8 @@ config_delete(struct config_file* cfg) + free(cfg->dnstap_tls_client_cert_file); free(cfg->dnstap_identity); free(cfg->dnstap_version); + if (cfg->rpz_cstr) @@ -3185,10 +3185,10 @@ index 52ca5a18..0660248f 100644 config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); diff --git a/util/config_file.h b/util/config_file.h -index 8739ca2a..a2dcf215 100644 +index 66e5025d..504f4f92 100644 --- a/util/config_file.h +++ b/util/config_file.h -@@ -499,6 +499,11 @@ struct config_file { +@@ -522,6 +522,11 @@ struct config_file { /** true to disable DNSSEC lameness check in iterator */ int disable_dnssec_lame_check; @@ -3201,10 +3201,10 @@ index 8739ca2a..a2dcf215 100644 int ip_ratelimit; /** number of slabs for ip_ratelimit cache */ diff --git a/util/configlexer.lex b/util/configlexer.lex -index deedffa5..301458a3 100644 +index 83cea4b9..9a7feea4 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex -@@ -446,6 +446,10 @@ dnstap-log-forwarder-query-messages{COLON} { +@@ -467,6 +467,10 @@ dnstap-log-forwarder-query-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } dnstap-log-forwarder-response-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } @@ -3216,18 +3216,18 @@ index deedffa5..301458a3 100644 ip-ratelimit{COLON} { YDVAR(1, VAR_IP_RATELIMIT) } ratelimit{COLON} { YDVAR(1, VAR_RATELIMIT) } diff --git a/util/configparser.y b/util/configparser.y -index d471babe..cb6b1d63 100644 +index fe600a99..ce43390f 100644 --- a/util/configparser.y +++ b/util/configparser.y -@@ -125,6 +125,7 @@ extern struct config_parser_state* cfg_parser; +@@ -128,6 +128,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES +%token VAR_RPZ VAR_RPZ_ENABLE VAR_RPZ_ZONE VAR_RPZ_OPTION %token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA %token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT - %token VAR_DISABLE_DNSSEC_LAME_CHECK -@@ -173,7 +174,7 @@ extern struct config_parser_state* cfg_parser; + %token VAR_IP_DSCP +@@ -179,7 +180,7 @@ extern struct config_parser_state* cfg_parser; %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -3236,7 +3236,7 @@ index d471babe..cb6b1d63 100644 forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | -@@ -2837,6 +2838,50 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES +@@ -2939,6 +2940,50 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES free($2); } ; @@ -3384,7 +3384,7 @@ index 729877ba..ccd1a0c2 100644 /** diff --git a/util/netevent.c b/util/netevent.c -index 9fe5da2d..037e70d1 100644 +index 3e7a433e..f20d806f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -57,6 +57,9 @@ @@ -3397,7 +3397,7 @@ index 9fe5da2d..037e70d1 100644 /* -------- Start of local definitions -------- */ /** if CMSG_ALIGN is not defined on this platform, a workaround */ -@@ -590,6 +593,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) +@@ -596,6 +599,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) struct cmsghdr* cmsg; #endif /* S_SPLINT_S */ @@ -3407,7 +3407,7 @@ index 9fe5da2d..037e70d1 100644 rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); -@@ -679,6 +685,9 @@ comm_point_udp_callback(int fd, short event, void* arg) +@@ -685,6 +691,9 @@ comm_point_udp_callback(int fd, short event, void* arg) int i; struct sldns_buffer *buffer; @@ -3417,7 +3417,7 @@ index 9fe5da2d..037e70d1 100644 rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); -@@ -722,6 +731,9 @@ comm_point_udp_callback(int fd, short event, void* arg) +@@ -728,6 +737,9 @@ comm_point_udp_callback(int fd, short event, void* arg) (void)comm_point_send_udp_msg(rep.c, buffer, (struct sockaddr*)&rep.addr, rep.addrlen); } @@ -3427,7 +3427,7 @@ index 9fe5da2d..037e70d1 100644 if(!rep.c || rep.c->fd != fd) /* commpoint closed to -1 or reused for another UDP port. Note rep.c cannot be reused with TCP fd. */ break; -@@ -3192,6 +3204,9 @@ comm_point_send_reply(struct comm_reply *repinfo) +@@ -3175,6 +3187,9 @@ comm_point_send_reply(struct comm_reply *repinfo) repinfo->c->tcp_timeout_msec); } } @@ -3437,7 +3437,7 @@ index 9fe5da2d..037e70d1 100644 } void -@@ -3201,6 +3216,9 @@ comm_point_drop_reply(struct comm_reply* repinfo) +@@ -3184,6 +3199,9 @@ comm_point_drop_reply(struct comm_reply* repinfo) return; log_assert(repinfo->c); log_assert(repinfo->c->type != comm_tcp_accept); @@ -3447,7 +3447,7 @@ index 9fe5da2d..037e70d1 100644 if(repinfo->c->type == comm_udp) return; if(repinfo->c->tcp_req_info) -@@ -3222,6 +3240,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) +@@ -3205,6 +3223,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) { verbose(VERB_ALGO, "comm point start listening %d (%d msec)", c->fd==-1?newfd:c->fd, msec); @@ -3458,7 +3458,7 @@ index 9fe5da2d..037e70d1 100644 /* no use to start listening no free slots. */ return; diff --git a/util/netevent.h b/util/netevent.h -index d80c72b3..0233292f 100644 +index bb2cd1e5..666067e8 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -120,6 +120,10 @@ struct comm_reply { From c8ff4f55e7085449ec1b7ad222ebf6677ad8939e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 11:05:28 +0200 Subject: [PATCH 126/394] - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes due to added libdynmod, but it does not compile, it conflicts with new rpz code. --- doc/Changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a010517cf..d999d26fb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,9 @@ 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. - - Fix contrib/fastrpz.patch to apply cleanly. + - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes + due to added libdynmod, but it does not compile, it conflicts with + new rpz code. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From 753487ff7f3a77ef59a52175fc64c55d177aaf84 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 13:02:09 +0200 Subject: [PATCH 127/394] - branch now named 1.11.0 and 1.11.0rc1 tag. --- configure | 26 +++++++++++++------------- configure.ac | 6 +++--- doc/Changelog | 1 + 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/configure b/configure index ae72d891e..ed66e8530 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.10.2. +# Generated by GNU Autoconf 2.69 for unbound 1.11.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.10.2' -PACKAGE_STRING='unbound 1.10.2' +PACKAGE_VERSION='1.11.0' +PACKAGE_STRING='unbound 1.11.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1458,7 +1458,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.10.2 to adapt to many kinds of systems. +\`configure' configures unbound 1.11.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.10.2:";; + short | recursive ) echo "Configuration of unbound 1.11.0:";; esac cat <<\_ACEOF @@ -1750,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.10.2 +unbound configure 1.11.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2459,7 +2459,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.10.2, which was +It was created by unbound $as_me 1.11.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2809,9 +2809,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=10 +UNBOUND_VERSION_MINOR=11 -UNBOUND_VERSION_MICRO=2 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2891,7 +2891,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 -# 1.10.2 had 9:9:1 +# 1.11.0 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21619,7 +21619,7 @@ _ACEOF -version=1.10.2 +version=1.11.0 date=`date +'%b %e, %Y'` @@ -22138,7 +22138,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.10.2, which was +This file was extended by unbound $as_me 1.11.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22204,7 +22204,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.10.2 +unbound config.status 1.11.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5c373d9d8..1d16dce72 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[10]) -m4_define([VERSION_MICRO],[2]) +m4_define([VERSION_MINOR],[11]) +m4_define([VERSION_MICRO],[0]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) @@ -94,7 +94,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 -# 1.10.2 had 9:9:1 +# 1.11.0 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index d999d26fb..3339e77b3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes due to added libdynmod, but it does not compile, it conflicts with new rpz code. + - branch now named 1.11.0 and 1.11.0rc1 tag. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From dd0b55250b3e34c18eac3fadcd514e940097d56c Mon Sep 17 00:00:00 2001 From: and0x000 Date: Mon, 20 Jul 2020 18:10:21 +0200 Subject: [PATCH 128/394] draft-ietf-dnsop-serve-stale-10 has become RFC 8767 on March 2020 --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 2eba3bd4f..3af4420c6 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -589,7 +589,7 @@ server: # # Time in milliseconds before replying to the client with expired data. # This essentially enables the serve-stale behavior as specified in - # draft-ietf-dnsop-serve-stale-10 that first tries to resolve before + # RFC 8767 that first tries to resolve before # immediately responding with expired data. 0 disables this behavior. # A recommended value is 1800. # serve-expired-client-timeout: 0 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd43f04ea..4920a0b2d 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1108,7 +1108,7 @@ later on. Default is "no". .B serve\-expired\-ttl: \fI Limit serving of expired responses to configured seconds after expiration. 0 disables the limit. This option only applies when \fBserve\-expired\fR is -enabled. A suggested value per draft-ietf-dnsop-serve-stale-10 is between +enabled. A suggested value per RFC 8767 is between 86400 (1 day) and 259200 (3 days). The default is 0. .TP .B serve\-expired\-ttl\-reset: \fI @@ -1120,14 +1120,14 @@ expired records will be served as long as there are queries for it. Default is .B serve\-expired\-reply\-ttl: \fI TTL value to use when replying with expired data. If \fBserve\-expired\-client\-timeout\fR is also used then it is RECOMMENDED to -use 30 as the value (draft-ietf-dnsop-serve-stale-10). The default is 30. +use 30 as the value (RFC 8767). The default is 30. .TP .B serve\-expired\-client\-timeout: \fI Time in milliseconds before replying to the client with expired data. This essentially enables the serve-stale behavior as specified in -draft-ietf-dnsop-serve-stale-10 that first tries to resolve before immediately +RFC 8767 that first tries to resolve before immediately responding with expired data. A recommended value per -draft-ietf-dnsop-serve-stale-10 is 1800. Setting this to 0 will disable this +RFC 8767 is 1800. Setting this to 0 will disable this behavior. Default is 0. .TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> From 9af8080f2b9514d27c5858cb24a06c1803bf0dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20L=C3=B6nnemark?= Date: Wed, 22 Jul 2020 03:05:19 +0200 Subject: [PATCH 129/394] Fix python module len() implementations They were all missing the 'self.' prefix when accessing the 'obj' instance variable, causing the following exception when attempting to call len() on (for example) a ReplyInfo_RRSet: File "/usr/lib/python3.7/site-packages/unboundmodule.py", line 377, in __len__ def __len__(self): return obj.rrset_count NameError: name 'obj' is not defined --- pythonmod/interface.i | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pythonmod/interface.i b/pythonmod/interface.i index c02ebaf95..f08b575d7 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -314,16 +314,16 @@ struct packed_rrset_data { class RRSetData_RRLen: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_len(self.obj, index) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count class RRSetData_RRTTL: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_ttl(self.obj, index) def __setitem__(self, index, value): _unboundmodule._set_data_rr_ttl(self.obj, index, value) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count class RRSetData_RRData: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_data(self.obj, index) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count %} %inline %{ @@ -404,12 +404,12 @@ struct dns_msg { class ReplyInfo_RRSet: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._rrset_rrsets_get(self.obj, index) - def __len__(self): return obj.rrset_count + def __len__(self): return self.obj.rrset_count class ReplyInfo_Ref: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._rrset_ref_get(self.obj, index) - def __len__(self): return obj.rrset_count + def __len__(self): return self.obj.rrset_count %} %inline %{ From 2d20edb39f6d23c555ce1e8c2f66bb5b403f0764 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 22 Jul 2020 10:30:50 +0200 Subject: [PATCH 130/394] stream reuse, free up elements that are connected in outside network delete. --- services/outside_network.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 425c0839a..9c9ce57fa 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1509,10 +1509,18 @@ outside_network_delete(struct outside_network* outnet) size_t i; for(i=0; inum_tcp; i++) if(outnet->tcp_conns[i]) { + if(!outnet->tcp_conns[i]->query-> + on_tcp_waiting_list) { + /* delete waiting_tcp elements that + * the tcp conn is working on */ + struct pending_tcp* pend = + (struct pending_tcp*)outnet-> + tcp_conns[i]->query-> + next_waiting; + decommission_pending_tcp(outnet, pend); + } comm_point_delete(outnet->tcp_conns[i]->c); waiting_tcp_delete(outnet->tcp_conns[i]->query); - /* TODO: loop over tcpwrite wait list and - * delete waiting_tcp_delete them */ free(outnet->tcp_conns[i]); } free(outnet->tcp_conns); From f1c4a4d515d27007f87ca9b065bee57c8eaee8b0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 22 Jul 2020 15:20:58 +0200 Subject: [PATCH 131/394] stream reuse, fix cleanup with streams in the connection table. --- services/outside_network.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/outside_network.c b/services/outside_network.c index 9c9ce57fa..c7c0743b8 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1509,7 +1509,8 @@ outside_network_delete(struct outside_network* outnet) size_t i; for(i=0; inum_tcp; i++) if(outnet->tcp_conns[i]) { - if(!outnet->tcp_conns[i]->query-> + if(outnet->tcp_conns[i]->query && + !outnet->tcp_conns[i]->query-> on_tcp_waiting_list) { /* delete waiting_tcp elements that * the tcp conn is working on */ From 72f8871e61d0f78c48667c2b6db14415b569a933 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 22 Jul 2020 15:40:17 +0200 Subject: [PATCH 132/394] stream reuse, test timeout and simultaneous queries. --- testdata/tcp_reuse.tdir/tcp_reuse.conf2 | 5 + testdata/tcp_reuse.tdir/tcp_reuse.test | 176 +++++++++++++++++++++++- 2 files changed, 177 insertions(+), 4 deletions(-) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 index 308107094..7bd7c23e3 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 +++ b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 @@ -22,6 +22,11 @@ server: local-data: "www2.example.com A 10.20.30.42" local-data: "www3.example.com A 10.20.30.43" local-data: "www4.example.com A 10.20.30.44" + local-data: "www5.example.com A 10.20.30.45" + local-data: "www6.example.com A 10.20.30.46" + + local-zone: "drop.net" deny + local-zone: "refuse.net" refuse # if queries escape, send them to localhost forward-zone: diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index 4b006afc4..ae8753cde 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -25,12 +25,12 @@ fi if grep "www1.example.com" outfile | grep "10.20.30.41"; then echo "content OK" else - echo "result contents not OK" + echo "result contents not OK, for www1.example.com" echo "> cat logfiles" cat outfile cat unbound2.log cat unbound.log - echo "result contents not OK" + echo "result contents not OK, for www1.example.com" exit 1 fi echo "OK" @@ -52,12 +52,180 @@ fi if grep "www2.example.com" outfile | grep "10.20.30.42"; then echo "content OK" else - echo "result contents not OK" + echo "result contents not OK, for www2.example.com" echo "> cat logfiles" cat outfile cat unbound2.log cat unbound.log - echo "result contents not OK" + echo "result contents not OK, for www2.example.com" + exit 1 +fi + +echo "> query drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT drop.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile; then + echo "content OK" +else + echo "result contents not OK, for drop.net" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for drop.net" + exit 1 +fi + +echo "> query refuse.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT refuse.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile; then + echo "content OK" +else + echo "result contents not OK, for refuse.net" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for refuse.net" + exit 1 +fi + +echo "> query q1.drop.net." +echo "> query q2.drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q1.drop.net. A IN >outfile1 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q2.drop.net. A IN >outfile2 2>&1 & +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile1 +cat outfile2 +if grep "rcode: SERVFAIL" outfile1; then + echo "content OK" +else + echo "result contents not OK, for q1.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q1.drop.net" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile2; then + echo "content OK" +else + echo "result contents not OK, for q2.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q2.drop.net" + exit 1 +fi + +echo "> query www3.example.com." +echo "> query www4.example.com." +echo "> query www5.example.com." +echo "> query www6.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www3.example.com. A IN >outfile3 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www4.example.com. A IN >outfile4 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www5.example.com. A IN >outfile5 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www6.example.com. A IN >outfile6 2>&1 & +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.com" outfile3 | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK, for www3.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www3.example.com" + exit 1 +fi +if grep "www4.example.com" outfile4 | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK, for www4.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www4.example.com" + exit 1 +fi +if grep "www5.example.com" outfile5 | grep "10.20.30.45"; then + echo "content OK" +else + echo "result contents not OK, for www5.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www5.example.com" + exit 1 +fi +if grep "www6.example.com" outfile6 | grep "10.20.30.46"; then + echo "content OK" +else + echo "result contents not OK, for www6.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www6.example.com" exit 1 fi From fc55a4b8ce2a746d743b241eb847ec47de38caf1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 23 Jul 2020 10:18:17 +0200 Subject: [PATCH 133/394] stream reuse, test with a list of outstanding queries to the upstream server. --- testdata/tcp_reuse.tdir/tcp_reuse.conf2 | 3 + testdata/tcp_reuse.tdir/tcp_reuse.test | 112 +++++++++++++++--------- 2 files changed, 73 insertions(+), 42 deletions(-) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 index 7bd7c23e3..6cb1e6122 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 +++ b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 @@ -28,6 +28,9 @@ server: local-zone: "drop.net" deny local-zone: "refuse.net" refuse + local-zone: "more.net" redirect + local-data: "more.net A 10.20.30.40" + # if queries escape, send them to localhost forward-zone: name: "." diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index ae8753cde..32ee7291e 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -109,48 +109,6 @@ else exit 1 fi -echo "> query q1.drop.net." -echo "> query q2.drop.net." -$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q1.drop.net. A IN >outfile1 2>&1 & -$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q2.drop.net. A IN >outfile2 2>&1 & -wait -if test "$?" -ne 0; then - echo "exit status not OK" - echo "> cat logfiles" - cat outfile1 - cat outfile2 - cat unbound2.log - cat unbound.log - echo "Not OK" - exit 1 -fi -cat outfile1 -cat outfile2 -if grep "rcode: SERVFAIL" outfile1; then - echo "content OK" -else - echo "result contents not OK, for q1.drop.net" - echo "> cat logfiles" - cat outfile1 - cat outfile2 - cat unbound2.log - cat unbound.log - echo "result contents not OK, for q1.drop.net" - exit 1 -fi -if grep "rcode: SERVFAIL" outfile2; then - echo "content OK" -else - echo "result contents not OK, for q2.drop.net" - echo "> cat logfiles" - cat outfile1 - cat outfile2 - cat unbound2.log - cat unbound.log - echo "result contents not OK, for q2.drop.net" - exit 1 -fi - echo "> query www3.example.com." echo "> query www4.example.com." echo "> query www5.example.com." @@ -229,5 +187,75 @@ else exit 1 fi +echo "> query a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a1.more.net A IN a2.more.net A IN a3.more.net A IN a4.more.net A IN a5.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do + if grep "$x" outfile | grep "10.20.30.40"; then + echo "content OK for $x" + else + echo "result contents not OK, for $x" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for $x" + exit 1 + fi +done + +# timeouts at the end. (so that the server is not marked as failed for +# the other tests). +echo "> query q1.drop.net." +echo "> query q2.drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q1.drop.net. A IN >outfile1 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q2.drop.net. A IN >outfile2 2>&1 & +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile1 +cat outfile2 +if grep "rcode: SERVFAIL" outfile1; then + echo "content OK" +else + echo "result contents not OK, for q1.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q1.drop.net" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile2; then + echo "content OK" +else + echo "result contents not OK, for q2.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q2.drop.net" + exit 1 +fi + echo "OK" exit 0 From 0d77f9af6c3909395a7dc20d6b8b8eebb9cc452f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 23 Jul 2020 10:29:36 +0200 Subject: [PATCH 134/394] stream reuse, test with connection drops. --- testdata/tcp_reuse.tdir/tcp_reuse.test | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index 32ee7291e..5541ed7f9 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -213,6 +213,24 @@ for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do fi done +# dropconn.drop.net make the server drop the connection. +echo "> query a11.more.net a12.more.net dropconn.drop.net a14.more.net a15.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a11.more.net A IN a12.more.net A IN dropconn.drop.net A IN a14.more.net A IN a15.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +# cannot really check outfile, because it may or may not have answers depending +# on how fast the other server responds or the drop happens, but there are +# a bunch of connection drops, whilst resolving the other queries. + + # timeouts at the end. (so that the server is not marked as failed for # the other tests). echo "> query q1.drop.net." From c6ff5558dec2d73e1cdd2fae3e05946a99a97dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Thu, 23 Jul 2020 16:04:26 +0200 Subject: [PATCH 135/394] munin plugin: always exit 0 in autoconf The autoconf operation should always exit 0, also in case the answer in "no", see https://guide.munin-monitoring.org/en/latest/develop/plugins/plugin-concise.html#autoconf --- contrib/unbound_munin_ | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index 2839cd8b5..defca291c 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -174,11 +174,11 @@ get_state ( ) { if test "$1" = "autoconf" ; then if test ! -f $conf; then echo no "($conf does not exist)" - exit 1 + exit 0 fi if test ! -d `dirname $state`; then echo no "(`dirname $state` directory does not exist)" - exit 1 + exit 0 fi echo yes exit 0 From 16029281a87bc6f79c8133a2eeecb18743bfdf91 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 23 Jul 2020 17:17:44 +0200 Subject: [PATCH 136/394] Start of EDNS client tags implementation. --- daemon/daemon.c | 15 +++++++++++ services/outside_network.c | 12 +++++++++ sldns/rrdef.h | 3 ++- util/edns.c | 38 ++++++++++++++++++++++++++ util/edns.h | 55 ++++++++++++++++++++++++++++++++++++++ util/module.h | 1 + 6 files changed, 123 insertions(+), 1 deletion(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 5d4279259..34f7bfda1 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -77,6 +77,7 @@ #include "util/storage/lookup3.h" #include "util/storage/slabhash.h" #include "util/tcp_conn_limit.h" +#include "util/edns.h" #include "services/listen_dnsport.h" #include "services/cache/rrset.h" #include "services/cache/infra.h" @@ -290,6 +291,15 @@ daemon_init(void) free(daemon); return NULL; } + if(!(daemon->env->edns_tags = edns_tags_create())) { + auth_zones_delete(daemon->env->auth_zones); + acl_list_delete(daemon->acl); + tcl_list_delete(daemon->tcl); + edns_known_options_delete(daemon->env); + free(daemon->env); + free(daemon); + return NULL; + } return daemon; } @@ -619,6 +629,10 @@ daemon_fork(struct daemon* daemon) &daemon->use_rpz)) fatal_exit("auth_zones could not be setup"); + /* Set-up EDNS tags */ + if(!edns_tags_apply_cfg(daemon->env->edns_tags, daemon->cfg)) + fatal_exit("Could not set up EDNS tags"); + /* setup modules */ daemon_setup_modules(daemon); @@ -750,6 +764,7 @@ daemon_delete(struct daemon* daemon) rrset_cache_delete(daemon->env->rrset_cache); infra_delete(daemon->env->infra_cache); edns_known_options_delete(daemon->env); + edns_tags_delete(daemon->env->edns_tags); auth_zones_delete(daemon->env->auth_zones); } ub_randfree(daemon->rand); diff --git a/services/outside_network.c b/services/outside_network.c index 44e01d745..b7ac5ef60 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -58,6 +58,7 @@ #include "util/net_help.h" #include "util/random.h" #include "util/fptr_wlist.h" +#include "util/edns.h" #include "sldns/sbuffer.h" #include "dnstap/dnstap.h" #ifdef HAVE_OPENSSL_SSL_H @@ -2111,9 +2112,20 @@ outnet_serviced_query(struct outside_network* outnet, { struct serviced_query* sq; struct service_callback* cb; + struct edns_tag_addr* client_tag_addr; + if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) return NULL; + + if((client_tag_addr = edns_tag_addr_lookup(env->edns_tags->client_tags, + addr, addrlen))) { + uint16_t client_tag = htons(client_tag_addr->tag_data); + edns_opt_list_append(&qstate->edns_opts_back_out, + LDNS_EDNS_CLIENT_TAG, 2, + (uint8_t*)&client_tag, qstate->region); + } + serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, flags); sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen, diff --git a/sldns/rrdef.h b/sldns/rrdef.h index 4e7fef574..e084f354a 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -426,7 +426,8 @@ enum sldns_enum_edns_option LDNS_EDNS_N3U = 7, /* RFC6975 */ LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */ LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/ - LDNS_EDNS_PADDING = 12 /* RFC7830 */ + LDNS_EDNS_PADDING = 12, /* RFC7830 */ + LDNS_EDNS_CLIENT_TAG = 16 /* draft-bellis-dnsop-edns-tags-01 */ }; typedef enum sldns_enum_edns_option sldns_edns_option; diff --git a/util/edns.c b/util/edns.c index d19952df0..0ab00cf7c 100644 --- a/util/edns.c +++ b/util/edns.c @@ -47,6 +47,44 @@ #include "util/data/msgparse.h" #include "util/data/msgreply.h" +struct edns_tags* edns_tags_create(void) +{ + struct edns_tags* edns_tags = calloc(1, sizeof(struct edns_tags)); + if(!edns_tags) + return NULL; + if(!(edns_tags->region = regional_create())) { + edns_tags_delete(edns_tags); + return NULL; + } + return edns_tags; +} + +void edns_tags_delete(struct edns_tags* edns_tags) +{ + if(!edns_tags) + return; + regional_destroy(edns_tags->region); + free(edns_tags); +} + +int edns_tags_apply_cfg(struct edns_tags* edns_tags, + struct config_file* config) +{ + regional_free_all(edns_tags->region); + addr_tree_init(&edns_tags->client_tags); + + /* TODO walk over config, create and insert node. */ + + return 1; +} + +struct edns_tag_addr* +edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, + socklen_t addrlen) +{ + return (struct edns_tag_addr*)addr_tree_lookup(&tree, addr, addrlen); +} + static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, struct comm_point* c, struct regional* region) { diff --git a/util/edns.h b/util/edns.h index a4ee7def6..310ba1cd2 100644 --- a/util/edns.h +++ b/util/edns.h @@ -42,11 +42,66 @@ #ifndef UTIL_EDNS_H #define UTIL_EDNS_H +#include "util/storage/dnstree.h" + struct edns_data; struct config_file; struct comm_point; struct regional; +/** + * Structure containing all EDNS tags. + */ +struct edns_tags { + /** Tree of EDNS client tags to use in upstream queries, per address + * prefix. Contains nodes of type edns_tag_addr. */ + rbtree_type client_tags; + /** region to allocate tree nodes in */ + struct regional* region; +}; + +/** + * EDNS tag. Node of rbtree, containing tag and prefix. + */ +struct edns_tag_addr { + /** node in address tree, used for tree lookups. Need to be the first + * member of this struct. */ + struct addr_tree_node node; + /** tag data, in host byte ordering */ + uint16_t tag_data; +}; + +/** + * Create structure to hold EDNS tags + * @return: newly created edns_tags, NULL on alloc failure. + */ +struct edns_tags* edns_tags_create(void); + +/** Delete ENDS tags structure + * @param edns_tags: struct to delete + */ +void edns_tags_delete(struct edns_tags* edns_tags); + +/** + * Add configured EDNS tags + * @param edns_tags: edns tags to apply config to + * @param config: struct containing EDNS tags configuration + * @return 0 on error + */ +int edns_tags_apply_cfg(struct edns_tags* edns_tags, + struct config_file* config); + +/** + * Find tag for address. + * @param tree: tree containing EDNS tags per address prefix. + * @param addr: address to use for tree lookup + * @param addrlen: length of address + * @return: matching tree node, NULL otherwise + */ +struct edns_tag_addr* +edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, + socklen_t addrlen); + /** * Apply common EDNS options. * diff --git a/util/module.h b/util/module.h index fa89c647e..1d696ed0a 100644 --- a/util/module.h +++ b/util/module.h @@ -520,6 +520,7 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; + struct edns_tags* edns_tags; /* Make every mesh state unique, do not aggregate mesh states. */ int unique_mesh; From 64806a0d146aeef89aac2d8670bb0b796820c22d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 24 Jul 2020 14:52:04 +0200 Subject: [PATCH 137/394] Add edns-client-tag configuration option --- doc/unbound.conf.5.in | 6 + util/config_file.c | 3 + util/config_file.h | 3 + util/configlexer.c | 4128 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 2075 +++++++++++---------- util/configparser.h | 10 +- util/configparser.y | 19 +- util/edns.c | 1 + 9 files changed, 3156 insertions(+), 3090 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd43f04ea..2b2f909da 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1516,6 +1516,12 @@ servers set. The default for fast\-server\-permil is 0. Set the number of servers that should be used for fast server selection. Only use the fastest specified number of servers with the fast\-server\-permil option, that turns this on or off. The default is to use the fastest 3 servers. +.TP 5 +.B edns\-client\-tag: \fI +Include an edns-client-tag option in queries with destination address matching +the configured IP netblock. This configuration option can be used multiple +times. The most specific match will be used. The tag data is configured in +decimal format, from 0 to 65535. .SS "Remote Control Options" In the .B remote\-control: diff --git a/util/config_file.c b/util/config_file.c index 0e9ee471b..0ab8614a3 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -315,6 +315,7 @@ config_create(void) cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; cfg->shm_key = 11777; + cfg->edns_client_tags = NULL; cfg->dnscrypt = 0; cfg->dnscrypt_port = 0; cfg->dnscrypt_provider = NULL; @@ -1130,6 +1131,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) + else O_LS2(opt, "edns_client_tags", edns_client_tags) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) @@ -1499,6 +1501,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); config_delstrlist(cfg->dynlib_file); + config_deldblstrlist(cfg->edns_client_tags); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index 66e5025d0..e61257a39 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -553,6 +553,9 @@ struct config_file { /** SHM data - key for the shm */ int shm_key; + /** list of EDNS client tag entries, linked list */ + struct config_str2list* edns_client_tags; + /** DNSCrypt */ /** true to enable dnscrypt */ int dnscrypt; diff --git a/util/configlexer.c b/util/configlexer.c index cd505dfda..46022f656 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 323 -#define YY_END_OF_BUFFER 324 +#define YY_NUM_RULES 324 +#define YY_END_OF_BUFFER 325 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,353 +363,354 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3137] = +static const flex_int16_t yy_accept[3148] = { 0, - 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, - 1, 1, 313, 313, 317, 317, 324, 321, 1, 295, - 295, 322, 2, 322, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 297, 298, 298, 299, - 322, 301, 302, 302, 303, 322, 308, 305, 306, 306, - 307, 322, 309, 310, 310, 311, 322, 320, 296, 2, - 300, 322, 320, 316, 313, 314, 314, 315, 322, 317, - 318, 318, 319, 322, 321, 0, 1, 2, 2, 2, - 2, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 1, 1, 298, 298, 302, 302, 306, 306, 310, 310, + 1, 1, 314, 314, 318, 318, 325, 322, 1, 296, + 296, 323, 2, 323, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 298, 299, 299, 300, + 323, 302, 303, 303, 304, 323, 309, 306, 307, 307, + 308, 323, 310, 311, 311, 312, 323, 321, 297, 2, + 301, 323, 321, 317, 314, 315, 315, 316, 323, 318, + 319, 319, 320, 323, 322, 0, 1, 2, 2, 2, + 2, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 297, 0, 301, 0, - 308, 0, 305, 309, 0, 320, 0, 2, 2, 320, - 316, 0, 313, 317, 0, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 298, 0, 302, 0, + 309, 0, 306, 310, 0, 321, 0, 2, 2, 321, + 317, 0, 314, 318, 0, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 320, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 321, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 115, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 123, - 321, 321, 321, 321, 321, 321, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 115, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 123, + 322, 322, 322, 322, 322, 322, 322, 321, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 99, 321, 321, 321, 321, 321, - 321, 8, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 116, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 99, 322, 322, 322, 322, 322, + 322, 8, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 116, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 128, 321, 320, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 290, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 128, 322, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 290, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 320, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 57, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 321, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 57, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 227, 321, 14, 15, 321, 19, 18, 321, 321, 211, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 122, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 209, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 227, 322, 14, 15, 322, 19, 18, 322, 322, + 211, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 122, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 209, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 3, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 284, 321, 321, 283, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 3, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 321, + 322, 322, 322, 322, 322, 322, 322, 284, 322, 322, + 283, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 304, 321, 321, - 321, 321, 321, 321, 321, 56, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 60, 321, 258, 321, 321, 321, 321, 321, - 321, 321, 321, 291, 292, 321, 321, 321, 321, 321, - 61, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 119, 321, 321, - 321, 321, 321, 321, 321, 321, 198, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 305, 322, 322, 322, 322, 322, 322, 322, 56, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 60, 322, 258, 322, 322, + 322, 322, 322, 322, 322, 322, 291, 292, 322, 322, + 322, 322, 322, 61, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 119, 322, 322, 322, 322, 322, 322, 322, 322, 198, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 21, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 147, 321, 321, 320, - 304, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 97, 321, 321, 321, 321, 321, 321, 321, 266, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 170, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 21, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 147, + 322, 322, 321, 305, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 97, 322, 322, 322, 322, 322, + 322, 322, 266, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 170, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 146, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 96, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 32, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 33, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 146, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 96, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 32, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 58, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 121, 320, 321, 321, 321, 321, - 321, 114, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 59, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 231, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 171, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 33, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 58, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 121, 321, + 322, 322, 322, 322, 322, 114, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 59, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 231, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 171, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 47, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 249, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 51, 321, 52, 321, 321, 321, 321, 321, 100, - 321, 101, 321, 321, 321, 321, 98, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 47, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 249, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 51, 322, 52, 322, + 322, 322, 322, 322, 100, 322, 101, 322, 322, 322, + 322, 98, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 7, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 220, 321, 321, 321, 321, - 149, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 232, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 7, 322, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 220, 322, 322, 322, 322, 149, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 232, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 190, - 321, 189, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 16, 17, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 62, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 197, 321, 321, 321, 321, - 321, 321, 103, 321, 102, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 181, 321, 321, 321, + 322, 48, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 190, 322, 189, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 16, 17, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 62, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 197, 322, 322, 322, 322, 322, 322, 103, 322, + 102, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 129, 320, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 81, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 210, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 85, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 55, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 181, 322, 322, 322, 322, 322, 322, 322, + 322, 129, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 81, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 210, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 85, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 55, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 184, 185, 321, 321, 321, 260, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 6, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 264, 321, 321, 321, 321, 321, 321, - 285, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 42, 321, 321, 321, 321, 44, 321, 321, 321, - 321, 321, 321, 321, 321, 45, 321, 321, 321, 321, - 321, 321, 321, 320, 321, 177, 321, 321, 321, 124, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 184, 185, 322, 322, 322, 260, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 6, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 264, 322, 322, 322, 322, 322, 322, 285, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 42, 322, + 322, 322, 322, 44, 322, 322, 322, 322, 322, 322, + 322, 322, 45, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 202, 321, 178, 321, 321, 321, 217, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 46, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 126, 108, 321, - 109, 321, 321, 321, 107, 321, 321, 321, 321, 321, - 321, 321, 321, 144, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 248, 321, 321, 321, - 321, 321, 321, 321, 321, 179, 321, 321, 321, 321, - 321, 182, 321, 188, 321, 321, 321, 321, 321, 216, + 321, 322, 177, 322, 322, 322, 124, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 202, 322, 178, + 322, 322, 322, 217, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 46, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 126, 108, 322, 109, 322, + 322, 322, 107, 322, 322, 322, 322, 322, 322, 322, + 322, 144, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 248, 322, 322, 322, 322, 322, + 322, 322, 322, 179, 322, 322, 322, 322, 322, 182, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 95, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 120, 321, 321, 321, 321, 321, 321, - 53, 321, 321, 321, 26, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 20, 321, 321, 321, 321, 321, - 321, 27, 36, 321, 154, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 320, 321, - 321, 321, 321, 321, 321, 70, 72, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 188, 322, 322, 322, 322, 322, 216, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 95, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 120, 322, 322, 322, 322, 322, 322, 53, 322, + 322, 322, 26, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 20, 322, 322, 322, 322, 322, 322, 27, + 36, 322, 154, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 321, 322, 322, 322, + 322, 322, 322, 70, 72, 322, 322, 322, 322, 322, - 268, 321, 321, 321, 321, 228, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 110, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 143, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 279, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 148, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 208, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 288, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 268, 322, + 322, 322, 322, 228, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 110, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 143, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 279, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 148, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 208, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 165, - 321, 321, 321, 321, 321, 321, 321, 321, 104, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 160, 321, - 172, 321, 321, 321, 321, 320, 321, 132, 321, 321, - 321, 321, 321, 91, 321, 321, 321, 321, 200, 321, - 321, 321, 321, 321, 321, 218, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 240, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 125, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 288, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 165, 322, + 322, 322, 322, 322, 322, 322, 322, 104, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 160, 322, 172, + 322, 322, 322, 322, 321, 322, 132, 322, 322, 322, + 322, 322, 91, 322, 322, 322, 322, 200, 322, 322, + 322, 322, 322, 322, 218, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 240, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 164, 321, 321, 321, 321, 321, 321, - 73, 74, 321, 321, 321, 321, 321, 54, 321, 321, - 321, 321, 321, 80, 173, 321, 191, 321, 221, 321, - 321, 183, 261, 321, 321, 321, 321, 321, 66, 321, - 175, 321, 321, 321, 321, 321, 9, 321, 321, 321, - 94, 321, 321, 321, 321, 253, 321, 321, 321, 321, - 199, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 125, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 164, 322, 322, 322, 322, 322, 322, + 73, 74, 322, 322, 322, 322, 322, 54, 322, 322, + 322, 322, 322, 80, 173, 322, 191, 322, 221, 322, + 322, 183, 261, 322, 322, 322, 322, 322, 66, 322, + 175, 322, 322, 322, 322, 322, 9, 322, 322, 322, + 94, 322, 322, 322, 322, 253, 322, 322, 322, 322, + 199, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 320, 321, 321, 321, - 321, 163, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 150, 321, 267, 321, 321, 321, 321, 321, - 239, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 212, 321, 321, 321, 321, 259, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 282, 321, 174, 321, 321, 321, 321, - 321, 321, 321, 65, 67, 321, 321, 321, 321, 321, - 321, 321, 93, 321, 321, 321, 321, 251, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 321, 322, 322, 322, + 322, 163, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 150, 322, 267, 322, 322, 322, 322, 322, + 239, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 212, 322, 295, 322, 322, 322, 259, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 282, 322, 174, 322, 322, 322, + 322, 322, 322, 322, 65, 67, 322, 322, 322, 322, - 321, 321, 263, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 204, 34, 28, 30, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 35, 321, 29, - 31, 321, 321, 321, 321, 321, 321, 321, 321, 90, - 321, 321, 321, 321, 321, 321, 320, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 206, 203, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 64, 321, - 321, 127, 321, 111, 321, 321, 321, 321, 321, 321, - 321, 321, 145, 312, 13, 321, 321, 321, 321, 321, + 322, 322, 322, 93, 322, 322, 322, 322, 251, 322, + 322, 322, 322, 263, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 204, 34, 28, 30, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 35, 322, + 29, 31, 322, 322, 322, 322, 322, 322, 322, 322, + 90, 322, 322, 322, 322, 322, 322, 321, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 206, + 203, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 64, + 322, 322, 127, 322, 111, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 277, 321, 280, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 12, 321, 321, - 22, 321, 321, 321, 257, 321, 321, 321, 321, 265, - 321, 321, 321, 68, 321, 214, 321, 321, 321, 321, - 205, 321, 321, 63, 321, 321, 321, 321, 23, 321, - 43, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 159, 158, 312, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 207, 201, 321, 219, 321, - 321, 269, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 145, 313, 13, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 277, 322, 280, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 12, 322, + 322, 22, 322, 322, 322, 257, 322, 322, 322, 322, + 265, 322, 322, 322, 68, 322, 214, 322, 322, 322, + 322, 205, 322, 322, 63, 322, 322, 322, 322, 23, + 322, 43, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 159, 158, 313, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 207, 201, 322, 219, + 322, 322, 269, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 75, 321, 321, 321, 252, 321, 321, 321, 321, 187, - 321, 321, 321, 321, 213, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 286, 287, 156, 321, 321, 69, - 321, 321, 321, 321, 166, 321, 321, 105, 106, 321, - 321, 321, 321, 151, 321, 153, 321, 192, 321, 321, - 321, 321, 157, 321, 321, 222, 321, 321, 321, 321, - 321, 321, 321, 134, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 230, 321, 321, 321, - 321, 321, 321, 321, 24, 321, 262, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 75, 322, 322, 322, 252, 322, 322, 322, 322, + 187, 322, 322, 322, 322, 213, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 286, 287, 156, 322, 322, + 69, 322, 322, 322, 322, 166, 322, 322, 105, 106, + 322, 322, 322, 322, 151, 322, 153, 322, 192, 322, + 322, 322, 322, 157, 322, 322, 222, 322, 322, 322, + 322, 322, 322, 322, 134, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 230, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 193, 321, - 321, 250, 321, 281, 321, 186, 321, 321, 321, 321, - 49, 321, 321, 321, 321, 4, 321, 321, 321, 321, - 118, 133, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 225, 37, 38, 321, 321, 321, 321, 321, 321, 321, - 270, 321, 321, 321, 321, 321, 321, 321, 238, 321, - 321, 321, 321, 321, 321, 321, 196, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 78, 321, 50, 256, - 321, 226, 321, 321, 321, 321, 11, 321, 321, 321, + 322, 322, 322, 322, 322, 24, 322, 262, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 193, + 322, 322, 250, 322, 281, 322, 186, 322, 322, 322, + 322, 49, 322, 322, 322, 322, 4, 322, 322, 322, + 322, 118, 133, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 225, 37, 38, 322, 322, 322, 322, 322, 322, + 322, 270, 322, 322, 322, 322, 322, 322, 322, 238, + 322, 322, 322, 322, 322, 322, 322, 196, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 78, 322, 50, - 321, 321, 321, 117, 321, 321, 321, 321, 194, 82, - 321, 40, 321, 321, 321, 321, 321, 321, 321, 321, - 162, 321, 321, 321, 321, 321, 136, 321, 321, 321, - 321, 229, 321, 321, 321, 321, 321, 237, 321, 321, - 321, 321, 130, 321, 321, 112, 113, 321, 321, 321, - 84, 88, 83, 321, 76, 321, 321, 321, 321, 321, - 10, 321, 321, 321, 254, 289, 321, 321, 321, 321, - 294, 39, 321, 321, 321, 321, 321, 161, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 256, 322, 226, 322, 322, 322, 322, 11, 322, 322, + 322, 322, 322, 322, 117, 322, 322, 322, 322, 194, + 82, 322, 40, 322, 322, 322, 322, 322, 322, 322, + 322, 162, 322, 322, 322, 322, 322, 136, 322, 322, + 322, 322, 229, 322, 322, 322, 322, 322, 237, 322, + 322, 322, 322, 130, 322, 322, 112, 113, 322, 322, + 322, 84, 88, 83, 322, 76, 322, 322, 322, 322, + 322, 10, 322, 322, 322, 254, 289, 322, 322, 322, + 322, 294, 39, 322, 322, 322, 322, 322, 161, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 89, 87, 321, 77, 278, 321, 321, 321, 321, 321, - 321, 321, 180, 321, 321, 321, 321, 321, 195, 321, - 321, 321, 321, 321, 321, 321, 321, 152, 71, 321, - 321, 321, 321, 321, 271, 321, 321, 321, 321, 321, - 321, 321, 234, 321, 321, 233, 131, 321, 86, 137, - 138, 141, 142, 139, 140, 79, 321, 255, 321, 321, - 321, 321, 155, 321, 321, 321, 321, 321, 224, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 168, 167, 41, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 89, 87, 322, 77, 278, 322, 322, 322, 322, + 322, 322, 322, 180, 322, 322, 322, 322, 322, 195, + 322, 322, 322, 322, 322, 322, 322, 322, 152, 71, + 322, 322, 322, 322, 322, 271, 322, 322, 322, 322, + 322, 322, 322, 234, 322, 322, 233, 131, 322, 86, + 137, 138, 141, 142, 139, 140, 79, 322, 255, 322, + 322, 322, 322, 155, 322, 322, 322, 322, 322, 224, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 168, 167, 41, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 92, 321, 223, 321, 247, 275, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 5, 321, 321, 215, 321, 321, 276, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 235, 25, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 236, 321, 321, 321, 135, 321, 321, 321, 321, - 321, 321, 321, 321, 169, 321, 176, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 272, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 92, 322, 223, 322, 247, 275, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 5, 322, 322, 215, 322, 322, 276, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 235, 25, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 236, 322, 322, 322, 135, 322, 322, 322, + 322, 322, 322, 322, 322, 169, 322, 176, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 272, 322, 322, - 321, 321, 321, 321, 293, 321, 321, 243, 321, 321, - 321, 321, 321, 273, 321, 321, 321, 321, 321, 321, - 274, 321, 321, 321, 241, 321, 244, 245, 321, 321, - 321, 321, 321, 242, 246, 0 + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 293, 322, 322, 243, 322, + 322, 322, 322, 322, 273, 322, 322, 322, 322, 322, + 322, 274, 322, 322, 322, 241, 322, 244, 245, 322, + 322, 322, 322, 322, 242, 246, 0 } ; static const YY_CHAR yy_ec[256] = @@ -752,17 +753,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[3155] = +static const flex_int16_t yy_base[3166] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4335, 3834, 81, 6133, - 6133, 6133, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3174, 3068, 81, 6159, + 6159, 6159, 129, 52, 130, 63, 131, 152, 70, 140, 144, 156, 57, 88, 76, 173, 175, 95, 184, 135, - 185, 205, 147, 204, 178, 123, 3717, 6133, 6133, 6133, - 107, 3426, 6133, 6133, 6133, 178, 3362, 3153, 6133, 6133, - 6133, 224, 2654, 6133, 6133, 6133, 204, 2276, 6133, 238, - 6133, 242, 197, 2238, 1962, 6133, 6133, 6133, 246, 1833, - 6133, 6133, 6133, 216, 1673, 252, 166, 0, 256, 0, + 185, 205, 147, 204, 178, 123, 2844, 6159, 6159, 6159, + 107, 2406, 6159, 6159, 6159, 178, 2248, 2125, 6159, 6159, + 6159, 224, 2071, 6159, 6159, 6159, 204, 2005, 6159, 238, + 6159, 242, 197, 1902, 1688, 6159, 6159, 6159, 246, 1637, + 6159, 6159, 6159, 216, 1370, 252, 166, 0, 256, 0, 0, 216, 248, 162, 241, 250, 254, 258, 92, 259, 262, 263, 260, 264, 265, 272, 267, 273, 271, 282, @@ -770,7 +771,7 @@ static const flex_int16_t yy_base[3155] = 311, 300, 316, 191, 321, 315, 323, 304, 325, 327, 326, 337, 329, 338, 340, 348, 341, 345, 347, 350, 357, 227, 351, 354, 358, 362, 369, 359, 373, 379, - 374, 377, 383, 385, 387, 384, 1618, 403, 1352, 406, + 374, 377, 383, 385, 387, 384, 1072, 403, 947, 406, 814, 416, 740, 688, 410, 600, 420, 424, 0, 416, 501, 430, 464, 442, 435, 422, 434, 429, 430, 431, 433, 397, 432, 435, 436, 437, 440, 454, 438, 453, @@ -791,670 +792,672 @@ static const flex_int16_t yy_base[3155] = 719, 717, 725, 713, 718, 733, 723, 737, 726, 745, 743, 730, 758, 744, 747, 749, 759, 748, 750, 756, 769, 761, 779, 766, 773, 781, 784, 792, 789, 795, - 785, 797, 787, 798, 801, 803, 810, 808, 6133, 805, + 785, 797, 787, 798, 801, 803, 810, 808, 6159, 805, 807, 819, 822, 823, 826, 816, 832, 806, 836, 839, - 841, 838, 846, 868, 824, 842, 845, 847, 850, 6133, + 841, 838, 846, 868, 824, 842, 845, 847, 850, 6159, 854, 852, 892, 861, 856, 878, 874, 858, 881, 870, 888, 882, 896, 883, 893, 898, 916, 899, 903, 905, 902, 914, 915, 924, 926, 921, 928, 929, 937, 932, 933, 934, 938, 942, 944, 945, 950, 946, 951, 952, - 954, 965, 955, 963, 959, 967, 968, 970, 972, 983, - 976, 977, 993, 984, 989, 994, 996, 997, 991, 1000, - 1003, 1007, 1004, 1008, 1012, 1020, 1015, 1010, 1017, 1018, - 1022, 1028, 1024, 1026, 1030, 1031, 1032, 1040, 1033, 1041, - 1034, 1047, 1049, 752, 6133, 1051, 1053, 1054, 1055, 1056, - 1057, 6133, 1059, 1058, 1061, 1066, 1063, 1071, 1080, 1067, - 1082, 1070, 1083, 1084, 1092, 1087, 1088, 1095, 1094, 1096, - 947, 1098, 1100, 1105, 1102, 1106, 1109, 1103, 1114, 1128, - 6133, 1112, 1115, 1116, 1118, 1123, 1131, 1140, 1126, 1133, + 955, 965, 958, 963, 967, 968, 970, 972, 973, 975, + 985, 979, 993, 969, 991, 995, 998, 1000, 976, 1002, + 1004, 1007, 1008, 1009, 1010, 1018, 1015, 1014, 1016, 1020, + 1021, 1023, 1027, 1028, 1031, 1030, 1033, 1034, 1035, 1040, + 1045, 1043, 1051, 752, 6159, 1053, 1044, 1055, 1057, 1056, + 1046, 6159, 1059, 1060, 1061, 1068, 1069, 1073, 1081, 1070, + 1074, 1087, 1083, 1088, 1095, 1071, 1093, 1098, 1094, 1099, + 1100, 1102, 1101, 1106, 1109, 1107, 1110, 1113, 1114, 1133, + 6159, 1115, 1121, 1125, 1118, 1128, 1138, 1145, 1131, 1143, - 1143, 1146, 1156, 1151, 1121, 1152, 1153, 1157, 1160, 1163, - 1165, 1166, 1168, 1169, 1170, 1171, 1172, 1174, 1179, 1184, - 6133, 1177, 1187, 1195, 1196, 1182, 1198, 1199, 1200, 1201, - 1202, 1203, 1205, 1204, 1210, 1220, 1211, 1224, 1221, 1222, - 1226, 1227, 1229, 1228, 1230, 1232, 1244, 1237, 1236, 1252, - 1247, 1254, 1256, 1263, 1265, 1245, 1258, 1262, 1260, 1268, - 1269, 1270, 1271, 1273, 1274, 1283, 1280, 1281, 1282, 1285, - 1295, 1286, 1288, 1298, 1290, 1296, 1293, 1300, 1304, 1307, - 1303, 1313, 6133, 1320, 1315, 1318, 1319, 1322, 1326, 1325, - 1331, 1332, 1333, 1335, 1334, 1336, 1338, 1342, 1341, 1343, + 1151, 1155, 1163, 1140, 1117, 1158, 1160, 1161, 1165, 1171, + 1169, 1166, 1173, 1174, 1175, 1177, 1176, 1179, 1186, 1183, + 6159, 1187, 1191, 1200, 1192, 1199, 1202, 1203, 1205, 1206, + 1207, 1209, 1208, 1215, 1213, 1225, 1216, 1232, 1218, 1231, + 1227, 1229, 1233, 1236, 1237, 1235, 1248, 1245, 1250, 1255, + 1263, 1260, 1262, 1270, 1272, 1252, 1265, 1240, 1269, 1267, + 1268, 1275, 1279, 1280, 1281, 1283, 1288, 1285, 1290, 1291, + 1292, 1299, 1297, 1295, 1298, 1304, 1313, 1305, 1311, 1315, + 1316, 1317, 1318, 6159, 1325, 1326, 1329, 1324, 1334, 1337, + 1336, 1330, 1338, 1342, 1294, 1343, 1344, 1352, 1345, 1347, - 1344, 1346, 1355, 1357, 1361, 1368, 1367, 1369, 1354, 1362, - 1377, 1373, 1381, 1379, 1380, 1389, 1384, 1386, 1387, 1396, - 1391, 1393, 1395, 1394, 1403, 1398, 1408, 1415, 1401, 1412, - 1422, 1418, 1420, 1423, 1424, 1427, 1428, 1430, 1431, 1432, - 1433, 1440, 1435, 1438, 1437, 1441, 1436, 1442, 1450, 1444, - 1463, 1455, 1458, 1460, 1464, 1467, 1466, 1465, 1468, 1472, - 1473, 1475, 1474, 1476, 1478, 1485, 875, 1487, 1489, 1493, - 1495, 1497, 1496, 1500, 1499, 1502, 1508, 1498, 1511, 1512, - 1515, 1517, 1519, 1520, 1524, 1528, 1522, 1530, 1523, 1533, - 1534, 1541, 1542, 1545, 1537, 6133, 1535, 1556, 1548, 1549, + 1353, 1358, 1359, 1361, 1357, 1362, 1375, 1374, 1376, 1360, + 1368, 1385, 1383, 1386, 1384, 1389, 1396, 1391, 1392, 1393, + 1403, 1399, 1400, 1401, 1402, 1407, 1410, 1411, 1421, 1416, + 1419, 1426, 1430, 1423, 1432, 1427, 1433, 1436, 1437, 1438, + 1439, 1440, 1447, 1445, 1442, 1444, 1450, 1443, 1452, 1457, + 1453, 1470, 1462, 1463, 1466, 1467, 1473, 1472, 1478, 1474, + 1479, 1480, 1482, 1481, 1483, 1489, 1488, 875, 1491, 1496, + 1500, 1502, 1504, 1503, 1506, 1508, 1509, 1513, 1512, 1519, + 1520, 1522, 1523, 1525, 1528, 1524, 1531, 1534, 1538, 1539, + 1541, 1540, 1543, 1544, 1550, 1551, 6159, 1546, 1558, 1556, - 1552, 1557, 1558, 1565, 1561, 1560, 1562, 1563, 1566, 1589, - 6133, 1570, 6133, 6133, 1573, 6133, 6133, 1572, 1571, 6133, - 1578, 1579, 1583, 1574, 1592, 1596, 1597, 1599, 1600, 1610, - 1621, 1612, 1603, 1614, 1602, 1616, 1635, 1630, 1605, 1626, - 1642, 1631, 1644, 1645, 1649, 1651, 1646, 1638, 1652, 1654, - 1659, 1655, 1660, 1662, 1665, 1666, 1664, 1668, 1669, 1676, - 1681, 1672, 1689, 6133, 1685, 1693, 1698, 1694, 1701, 1697, - 1696, 1703, 1705, 1707, 1708, 1709, 1710, 1712, 1713, 1718, - 1675, 1714, 1726, 1721, 6133, 1724, 1725, 1723, 1730, 1728, - 1736, 1738, 1731, 1729, 1741, 1742, 1752, 1748, 1744, 1753, + 1559, 1557, 1562, 1564, 1572, 1567, 1570, 1568, 1571, 1573, + 1597, 6159, 1574, 6159, 6159, 1578, 6159, 6159, 1579, 1584, + 6159, 1585, 1583, 1594, 1600, 1580, 1607, 1119, 1603, 1598, + 1605, 1620, 1626, 1613, 1601, 1611, 1615, 1631, 1642, 1632, + 1623, 1635, 1646, 1643, 1649, 1651, 1654, 1655, 1658, 1659, + 1660, 1661, 1663, 1665, 1666, 1662, 1669, 1671, 1668, 1675, + 1674, 1685, 1684, 1691, 1694, 6159, 1692, 1701, 1704, 1700, + 1708, 1703, 1707, 1709, 1711, 1715, 1712, 1716, 1718, 1719, + 1680, 1722, 1724, 1727, 1731, 1728, 6159, 1729, 1730, 1732, + 1736, 1737, 1740, 1744, 1745, 1742, 1748, 1750, 1761, 1751, - 1756, 1757, 1758, 6133, 1760, 1764, 1766, 1768, 1767, 1770, - 1771, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1789, 1784, - 1786, 1792, 1794, 1801, 1802, 1804, 1806, 1803, 1810, 1812, - 1813, 1814, 1815, 1817, 1818, 1826, 1828, 1825, 1830, 1827, - 1835, 1846, 1841, 1831, 1842, 1843, 1844, 1851, 1855, 1853, - 1857, 1858, 1866, 1859, 1864, 1867, 1868, 1878, 1861, 1870, - 1880, 1869, 1882, 1883, 1884, 6133, 1886, 1887, 6133, 1889, - 1890, 1912, 1892, 1894, 1899, 1896, 1897, 1900, 1905, 1913, - 1919, 1916, 1932, 1925, 1929, 1935, 1937, 1940, 1906, 1936, - 1942, 1938, 1944, 1948, 1947, 1960, 1967, 1908, 1968, 1970, + 1753, 1754, 1762, 1758, 1766, 6159, 1770, 1765, 1774, 1775, + 1776, 1778, 1779, 1781, 1784, 1783, 1785, 1786, 1787, 1788, + 1800, 1793, 1789, 1791, 1806, 1809, 1811, 1812, 1814, 1796, + 1818, 1819, 1821, 1822, 1823, 1824, 1826, 1834, 1836, 1833, + 1837, 1832, 1841, 1844, 1849, 1840, 1848, 1850, 1851, 1856, + 1864, 1862, 1861, 1854, 1869, 1866, 1871, 1873, 1875, 1882, + 1874, 1883, 1877, 1884, 1885, 1888, 1890, 6159, 1892, 1894, + 6159, 1895, 1896, 1918, 1897, 1899, 1904, 1901, 1907, 1910, + 1911, 1922, 1920, 1924, 1941, 1928, 1930, 1942, 1933, 1945, + 1931, 1947, 1949, 1951, 1953, 1955, 1956, 1954, 1971, 1974, - 1949, 1946, 1962, 1981, 1966, 1969, 1972, 1973, 1975, 1979, - 1983, 1988, 1977, 1990, 1993, 1994, 1997, 6133, 2005, 2003, - 2004, 2008, 2016, 2013, 2011, 6133, 2015, 2019, 2020, 2031, - 2026, 2014, 2022, 2012, 2029, 2034, 2037, 2038, 2039, 2040, - 2041, 2050, 6133, 2045, 6133, 2042, 2051, 2053, 2052, 2055, - 2059, 2057, 2060, 6133, 6133, 2063, 2067, 2069, 2081, 2064, - 6133, 2078, 2085, 2082, 2087, 2088, 2080, 2089, 2091, 2093, - 2092, 2101, 2096, 2103, 2098, 2099, 2108, 6133, 2111, 2110, - 2112, 2115, 2118, 2119, 2121, 2123, 6133, 2127, 2125, 2130, - 2138, 2129, 2137, 2139, 2140, 2144, 2142, 2147, 2148, 2149, + 1913, 1966, 1975, 1957, 1970, 1973, 1992, 1976, 1977, 1980, + 1978, 1983, 1981, 1987, 1985, 1996, 1997, 2002, 2003, 2004, + 6159, 2014, 2010, 2009, 2017, 2025, 2021, 2020, 6159, 2022, + 2023, 2027, 2035, 2033, 2034, 2036, 2037, 2038, 2040, 2044, + 2045, 2046, 2058, 2048, 2067, 6159, 2047, 6159, 2059, 2049, + 2051, 2062, 2050, 2066, 2072, 2074, 6159, 6159, 2075, 2078, + 2082, 2090, 2085, 6159, 2086, 2094, 2091, 2096, 2089, 2097, + 2100, 2101, 2105, 2106, 2110, 2107, 2114, 2109, 2115, 2111, + 6159, 2123, 2112, 2129, 2130, 2122, 2131, 2132, 2128, 6159, + 2139, 2141, 2142, 2149, 2147, 2144, 2150, 2151, 2155, 2152, - 2150, 2159, 2161, 2151, 2162, 2164, 2171, 6133, 2154, 2158, - 2176, 2174, 2181, 2173, 2175, 2177, 2183, 2185, 2186, 2187, - 2190, 2191, 2192, 2199, 2200, 2197, 2196, 2205, 2206, 2207, - 2210, 2213, 2214, 2215, 2216, 2217, 6133, 2218, 2220, 2223, - 391, 2226, 2229, 2227, 2228, 2236, 2231, 2234, 2247, 2252, - 2248, 2249, 2250, 2256, 2257, 2258, 2259, 2260, 2261, 2262, - 2264, 6133, 2266, 2267, 2269, 2273, 2272, 2275, 2280, 6133, - 2282, 2289, 2292, 2301, 2284, 2293, 2302, 2298, 2303, 2304, - 2306, 2308, 2310, 2309, 2312, 2315, 6133, 2319, 2320, 2324, - 2316, 2326, 2328, 2330, 2333, 2335, 2337, 2340, 2338, 2342, + 2158, 2159, 2160, 2161, 2171, 2172, 2162, 2164, 2173, 2181, + 6159, 2176, 2180, 2188, 2184, 2186, 2183, 2187, 2190, 2191, + 2195, 2199, 2193, 2197, 2201, 2203, 2211, 2212, 2209, 2214, + 2217, 2207, 2218, 2221, 2227, 2220, 2225, 2228, 2229, 6159, + 2230, 2236, 2231, 391, 2239, 2237, 2243, 2240, 2241, 2257, + 2242, 2264, 2265, 2261, 2244, 2263, 2260, 2267, 2270, 2269, + 2271, 2272, 2273, 2276, 6159, 2278, 2280, 2282, 2283, 2285, + 2286, 2296, 6159, 2289, 2302, 2287, 2305, 2307, 2297, 2313, + 2299, 2308, 2319, 2317, 2320, 2309, 2324, 2323, 2325, 2327, + 6159, 2331, 2333, 2335, 2332, 2342, 2341, 2334, 2344, 2348, - 2343, 2341, 2344, 2345, 2351, 2346, 2347, 2354, 2359, 6133, - 2364, 2362, 2366, 2370, 2369, 2371, 2372, 2387, 2373, 2379, - 2375, 2382, 2394, 2385, 2391, 2396, 2404, 2401, 2409, 2414, - 2410, 2411, 2419, 2412, 2421, 2423, 2424, 2425, 2427, 2429, - 2430, 2431, 2432, 2440, 2447, 2437, 2448, 2446, 2438, 2456, - 2457, 6133, 2459, 2458, 2451, 2461, 2477, 2465, 2467, 2475, - 2472, 2478, 2479, 2481, 2482, 2490, 2491, 2485, 2483, 2494, - 2488, 2495, 2501, 2503, 2505, 2507, 2508, 2512, 2395, 6133, - 2513, 2509, 2515, 2517, 2521, 2518, 2525, 2529, 2522, 2531, - 2532, 2536, 2537, 2539, 2540, 2541, 2545, 2547, 2533, 6133, + 2349, 2350, 2351, 2353, 2355, 2354, 2356, 2357, 2358, 2361, + 2365, 2369, 2370, 6159, 2378, 2371, 2374, 2382, 2380, 2387, + 2381, 2397, 2383, 2384, 2394, 2403, 2408, 2399, 2401, 2411, + 2414, 2418, 2419, 2426, 2424, 2425, 2432, 2422, 2434, 2436, + 2437, 2438, 2440, 2442, 2445, 2395, 2446, 2453, 2454, 2455, + 2459, 2452, 2473, 2478, 2458, 6159, 2467, 2465, 2477, 2479, + 2487, 2482, 2483, 2484, 2485, 2492, 2490, 2493, 2494, 2502, + 2497, 2503, 2500, 2510, 2504, 2507, 2506, 2513, 2517, 2520, + 2521, 2526, 2527, 6159, 2528, 2530, 2523, 2532, 2534, 2537, + 2540, 2543, 2545, 2546, 2547, 2549, 2551, 2552, 2553, 2554, - 2555, 2544, 2543, 2550, 2556, 2562, 2563, 2566, 2572, 2569, - 2565, 2575, 2577, 2567, 6133, 2582, 2585, 2586, 2593, 2588, - 2589, 2590, 2595, 2578, 6133, 2592, 2596, 2599, 2606, 2609, - 2604, 6133, 2611, 2612, 2613, 2602, 2615, 2617, 2618, 2620, - 2621, 2623, 2625, 2628, 2624, 2631, 6133, 2634, 2643, 2638, - 2639, 2644, 2645, 2649, 2650, 2655, 2657, 2667, 2658, 6133, - 2676, 2671, 2651, 2679, 2661, 2674, 2677, 2681, 2682, 2683, - 2684, 2685, 6133, 2688, 2690, 2691, 2692, 2694, 2696, 2697, - 2710, 2699, 2703, 2706, 2712, 2713, 2707, 2718, 2717, 2725, - 2715, 2729, 2731, 2719, 2735, 2721, 2736, 2739, 2746, 2748, + 2556, 2558, 2561, 6159, 2563, 2562, 2564, 2570, 2575, 2574, + 2576, 2578, 2585, 2587, 2572, 2588, 2444, 2589, 6159, 2597, + 2599, 2595, 2604, 2596, 2601, 2603, 2607, 2608, 6159, 2609, + 2610, 2611, 2618, 2619, 2615, 6159, 2622, 2617, 2623, 2626, + 2625, 2627, 2632, 2629, 2635, 2636, 2641, 2648, 2640, 2650, + 6159, 2642, 2657, 2644, 2658, 2664, 2652, 2653, 2659, 2665, + 2669, 2679, 2671, 6159, 2682, 2680, 2675, 2689, 2687, 2690, + 2691, 2692, 2693, 2694, 2695, 2696, 2699, 6159, 2700, 2702, + 2703, 2704, 2707, 2708, 2710, 2723, 2713, 2718, 2722, 2724, + 2727, 2728, 2730, 2731, 2740, 2732, 2734, 2748, 2741, 2746, - 2749, 2751, 6133, 2754, 2743, 2755, 2745, 2756, 2758, 2759, - 2760, 2762, 2767, 2769, 2765, 2768, 2777, 2784, 2772, 2780, - 2785, 2786, 2788, 2789, 2790, 2791, 2795, 2799, 2796, 2798, - 2806, 2802, 2808, 2816, 2803, 2807, 2812, 2815, 2818, 2817, - 2820, 2827, 2830, 2825, 2840, 2842, 2843, 2819, 2836, 2844, - 2845, 2850, 6133, 2829, 2846, 2855, 2854, 2857, 2860, 2861, - 2868, 2863, 2864, 2867, 2871, 2876, 2865, 2879, 2881, 2888, - 2884, 6133, 2886, 6133, 2887, 2889, 2890, 2898, 2893, 6133, - 2896, 6133, 2899, 2906, 2900, 2903, 6133, 2907, 2909, 2911, - 2914, 2912, 2917, 2918, 2921, 2922, 2923, 2925, 2928, 2930, + 2744, 2733, 2753, 2757, 2761, 2762, 2764, 6159, 2767, 2768, + 2769, 2759, 2770, 2771, 2773, 2774, 2776, 2779, 2783, 2781, + 2782, 2791, 2798, 2789, 2793, 2799, 2800, 2802, 2803, 2804, + 2805, 2806, 2813, 2810, 2812, 2820, 2816, 2821, 2828, 2817, + 2826, 2829, 2830, 2832, 2831, 2839, 2833, 2837, 2841, 2843, + 2851, 2855, 2857, 2856, 2858, 2859, 2862, 6159, 2847, 2866, + 2863, 2870, 2873, 2875, 2877, 2885, 2876, 2880, 2883, 2892, + 2894, 2884, 2887, 2886, 2901, 2900, 6159, 2897, 6159, 2902, + 2903, 2909, 2913, 2911, 6159, 2917, 6159, 2918, 2920, 2912, + 2914, 6159, 2922, 2924, 2926, 2932, 2927, 2929, 2934, 2936, - 2931, 2932, 2935, 2939, 2942, 2940, 2944, 2948, 2941, 2950, - 2953, 2954, 2958, 2959, 2963, 6133, 2967, 2960, 2964, 2969, - 2970, 2971, 2972, 2973, 2979, 2980, 2981, 2977, 2987, 2988, - 2991, 2994, 3002, 2995, 3004, 6133, 3003, 3006, 3007, 3010, - 6133, 3009, 3011, 3012, 3018, 3020, 3021, 3022, 3024, 3028, - 3023, 3030, 3025, 3040, 3038, 3031, 3044, 6133, 3048, 3049, - 3050, 3052, 3060, 3062, 3061, 3064, 3067, 3076, 3069, 3071, - 3033, 3053, 3073, 3077, 3085, 3087, 3078, 3088, 3086, 3089, - 3091, 3092, 3095, 3096, 3098, 3100, 3101, 3099, 3105, 3106, - 3108, 3103, 3104, 3107, 3110, 6133, 3126, 3112, 3122, 3128, + 2937, 2938, 2940, 2943, 2945, 2946, 2947, 2952, 2954, 2957, + 2955, 2959, 2963, 2956, 2964, 2968, 2969, 2973, 2974, 2978, + 6159, 2982, 2975, 2979, 2984, 2985, 2986, 2987, 2988, 2994, + 2995, 2996, 2992, 3002, 3003, 3006, 3009, 3017, 3010, 3019, + 6159, 3018, 3021, 3022, 3025, 6159, 3024, 3026, 3027, 3033, + 3035, 3036, 3037, 3039, 3043, 3038, 3045, 3040, 3055, 3053, + 3046, 3059, 6159, 3063, 3064, 3065, 3067, 3075, 3077, 3082, + 3079, 3080, 3085, 3089, 3087, 3088, 3048, 3091, 3093, 3094, + 3102, 3104, 3095, 3105, 3103, 3106, 3108, 3109, 3112, 3115, + 3116, 3117, 3118, 3121, 3122, 3124, 3125, 3120, 3123, 3127, - 3120, 3130, 3133, 3134, 3136, 3138, 3139, 3142, 3140, 6133, - 3143, 6133, 3137, 3147, 3149, 3160, 3155, 3161, 3165, 3170, - 3164, 3166, 3171, 3173, 3172, 3174, 3175, 3180, 3183, 3187, - 3188, 3194, 3181, 3189, 3186, 3197, 3198, 3200, 6133, 6133, - 3203, 3205, 3206, 3208, 3209, 3210, 3216, 3213, 3221, 3219, - 3220, 3227, 3235, 6133, 3230, 3232, 3233, 3238, 3242, 3239, - 3249, 3246, 3251, 3258, 3253, 6133, 3250, 3254, 3266, 3261, - 3262, 3269, 6133, 3264, 6133, 3267, 3273, 3275, 3276, 3277, - 3278, 3279, 3280, 3282, 3295, 3302, 3284, 3288, 3298, 3299, - 3300, 3301, 3310, 3305, 3306, 3307, 6133, 3309, 3311, 3312, + 3128, 6159, 3139, 3142, 3145, 3146, 3129, 3151, 3148, 3152, + 3154, 3153, 3157, 3166, 3155, 6159, 3159, 6159, 3156, 3158, + 3177, 3183, 3173, 3169, 3186, 3191, 3167, 3184, 3188, 3192, + 3194, 3195, 3196, 3198, 3200, 3199, 3207, 3215, 3202, 3206, + 3210, 3204, 3216, 3221, 6159, 6159, 3220, 3223, 3224, 3226, + 3227, 3229, 3237, 3231, 3230, 3239, 3244, 3246, 3254, 6159, + 3247, 3251, 3249, 3250, 3262, 3258, 3260, 3269, 3267, 3274, + 3273, 6159, 3270, 3275, 3283, 3278, 3284, 3286, 6159, 3288, + 6159, 3281, 3282, 3294, 3295, 3285, 3292, 3297, 3299, 3307, + 3309, 3314, 3310, 3316, 3312, 3317, 3318, 3320, 3325, 3321, - 3315, 3321, 3323, 3324, 3313, 6133, 3329, 3330, 3335, 3332, - 3337, 3338, 3340, 3342, 3343, 3346, 3347, 3344, 3348, 3360, - 3352, 3353, 3355, 3366, 3367, 3373, 6133, 3369, 3375, 3382, - 3378, 3379, 3381, 3385, 3380, 3386, 3387, 3389, 3390, 3392, - 3393, 3394, 3396, 3398, 3401, 3399, 3404, 3412, 3413, 3415, - 3424, 3420, 6133, 3421, 3422, 3425, 3427, 3430, 3431, 3434, - 3436, 3437, 3443, 3447, 3439, 3449, 3451, 3452, 3459, 3455, - 6133, 3467, 3454, 3468, 3463, 3466, 3465, 3473, 3471, 3481, - 3477, 3478, 3479, 3486, 3482, 6133, 3493, 3483, 3501, 3484, - 3485, 3510, 3505, 3506, 3494, 3508, 3509, 3511, 3513, 3516, + 3322, 3324, 6159, 3327, 3329, 3330, 3331, 3339, 3340, 3341, + 3346, 6159, 3347, 3348, 3352, 3353, 3354, 3355, 3357, 3361, + 3358, 3364, 3367, 3362, 3360, 3377, 3370, 3368, 3378, 3388, + 3389, 3391, 6159, 3393, 3385, 3401, 3397, 3399, 3400, 3403, + 3404, 3383, 3407, 3408, 3409, 3410, 3412, 3416, 3417, 3413, + 3420, 3419, 3422, 3430, 3423, 3437, 3446, 3431, 6159, 3441, + 3433, 3443, 3444, 3445, 3449, 3450, 3455, 3457, 3448, 3462, + 3466, 3458, 3469, 3471, 3472, 3480, 3475, 6159, 3483, 3473, + 3487, 3482, 3485, 3493, 3494, 3484, 3502, 3486, 3497, 3501, + 3509, 3504, 6159, 3512, 3508, 3513, 3514, 3516, 3526, 3510, - 3517, 3520, 3521, 6133, 6133, 3523, 3524, 3525, 6133, 3527, - 3529, 3537, 3540, 3530, 3528, 3545, 3544, 3532, 3546, 3542, - 3548, 6133, 3554, 3561, 3556, 3560, 3563, 3571, 3570, 3572, - 3566, 3562, 3573, 3574, 3578, 3579, 3580, 3583, 3591, 3593, - 3588, 3589, 3590, 6133, 3595, 3596, 3598, 3600, 3601, 3602, - 6133, 3605, 3607, 3613, 3612, 3623, 3625, 3616, 3631, 3614, - 3626, 3609, 3633, 3634, 3636, 3643, 3642, 3639, 3646, 3647, - 3649, 6133, 3641, 3651, 3652, 3659, 6133, 3661, 3669, 3670, - 3671, 3655, 3673, 3674, 3682, 6133, 3675, 3679, 3677, 3666, - 3690, 3680, 3694, 3692, 3693, 6133, 3695, 3685, 3696, 6133, + 3518, 3523, 3528, 3529, 3532, 3530, 3534, 3535, 3540, 3537, + 6159, 6159, 3542, 3543, 3545, 6159, 3549, 3546, 3553, 3552, + 3548, 3559, 3563, 3562, 3560, 3564, 3561, 3566, 6159, 3572, + 3579, 3575, 3576, 3584, 3591, 3581, 3588, 3589, 3590, 3592, + 3594, 3596, 3597, 3600, 3601, 3609, 3613, 3604, 3605, 3608, + 6159, 3614, 3616, 3617, 3619, 3621, 3627, 6159, 3625, 3629, + 3630, 3623, 3646, 3631, 3637, 3650, 3639, 3641, 3643, 3647, + 3651, 3654, 3663, 3658, 3656, 3665, 3666, 3668, 6159, 3669, + 3659, 3676, 3680, 6159, 3682, 3689, 3690, 3691, 3677, 3687, + 3686, 3699, 6159, 3694, 3697, 3695, 3700, 3708, 3704, 3711, - 3700, 3698, 3709, 3711, 3706, 3718, 3713, 3715, 3716, 3714, - 6133, 3724, 6133, 3725, 3721, 3730, 6133, 3727, 3732, 3735, - 3737, 3734, 3741, 3742, 3745, 3750, 3738, 3751, 3752, 3753, - 3755, 3756, 3763, 3762, 3764, 3765, 3754, 6133, 3766, 3769, - 3775, 3776, 3779, 3774, 3771, 3785, 3781, 6133, 6133, 3796, - 6133, 3797, 3782, 3789, 6133, 3791, 3793, 3808, 3799, 3803, - 3809, 3813, 3810, 6133, 3814, 3801, 3815, 3819, 3817, 3822, - 3824, 3825, 3827, 3828, 3829, 3832, 6133, 3830, 3833, 3841, - 3831, 3842, 3852, 3848, 3846, 6133, 3856, 3857, 3847, 3858, - 3860, 6133, 3864, 6133, 3868, 3869, 3870, 3872, 3871, 6133, + 3709, 3710, 6159, 3712, 3713, 3715, 6159, 3716, 3717, 3728, + 3730, 3721, 3737, 3733, 3735, 3736, 3734, 6159, 3744, 6159, + 3745, 3738, 3746, 6159, 3751, 3752, 3753, 3755, 3756, 3757, + 3761, 3767, 3760, 3768, 3769, 3771, 3772, 3773, 3774, 3781, + 3776, 3783, 3780, 3782, 6159, 3785, 3784, 3790, 3800, 3803, + 3805, 3795, 3787, 3806, 3809, 6159, 6159, 3813, 6159, 3815, + 3810, 3816, 6159, 3819, 3817, 3827, 3820, 3823, 3828, 3836, + 3825, 6159, 3838, 3829, 3839, 3840, 3843, 3842, 3844, 3846, + 3848, 3847, 3849, 3855, 6159, 3850, 3853, 3867, 3854, 3857, + 3868, 3875, 3862, 6159, 3876, 3883, 3869, 3879, 3886, 6159, - 3875, 3879, 3881, 3876, 3883, 3885, 3884, 3891, 3892, 3894, - 3901, 3898, 3899, 3897, 6133, 3900, 3904, 3907, 3908, 3911, - 3913, 3921, 3917, 3923, 3916, 3920, 3930, 3927, 3931, 3937, - 3935, 3940, 3924, 6133, 3941, 3946, 3943, 3955, 3947, 3951, - 6133, 3957, 3960, 3961, 6133, 3958, 3952, 3959, 3974, 3962, - 3967, 3970, 3975, 3976, 6133, 3978, 3981, 3977, 3979, 3982, - 3983, 6133, 6133, 3988, 6133, 3995, 3996, 3998, 3999, 4000, - 4002, 4004, 4005, 4009, 4010, 4012, 4015, 4018, 4006, 4027, - 4030, 4038, 4033, 4034, 4023, 6133, 6133, 4040, 4044, 4037, - 4048, 4049, 4041, 4051, 4058, 4055, 4056, 4062, 4063, 4071, + 3888, 6159, 3878, 3889, 3890, 3892, 3891, 6159, 3899, 3895, + 3904, 3900, 3906, 3905, 3908, 3912, 3914, 3915, 3922, 3918, + 3920, 3919, 6159, 3921, 3924, 3929, 3930, 3934, 3925, 3942, + 3939, 3941, 3937, 3946, 3948, 3951, 3952, 3956, 3950, 3960, + 3958, 6159, 3961, 3964, 3967, 3975, 3968, 3971, 6159, 3972, + 3980, 3981, 6159, 3978, 3979, 3987, 3990, 3982, 3992, 3993, + 3994, 3997, 6159, 3995, 4001, 3998, 4006, 4014, 4015, 6159, + 6159, 4016, 6159, 4017, 4002, 4005, 4003, 4004, 4027, 4031, + 4028, 4033, 4026, 4034, 4039, 4040, 4041, 4048, 4049, 4052, + 4051, 4050, 4055, 6159, 6159, 4057, 4059, 4061, 4065, 4066, - 6133, 4072, 4054, 4073, 4064, 6133, 4066, 4075, 4067, 4078, - 4081, 4079, 4082, 4083, 4087, 4085, 4089, 4095, 4094, 4096, - 4100, 4102, 4104, 4105, 4022, 4106, 4112, 6133, 4108, 4113, - 4115, 4117, 4118, 4119, 4120, 4121, 4122, 6133, 4129, 4128, - 4125, 4136, 4135, 4131, 4137, 4146, 4152, 4154, 4149, 4155, - 4156, 4158, 4160, 4161, 6133, 4169, 4162, 4163, 4165, 4172, - 4176, 4173, 4179, 4180, 4185, 4181, 4186, 4188, 4190, 4193, - 4194, 4195, 4197, 6133, 4199, 4201, 4202, 4206, 4208, 4211, - 4210, 4214, 4219, 4212, 4220, 4222, 4224, 6133, 4225, 4227, - 4228, 4229, 4237, 4232, 4234, 4238, 4240, 6133, 4247, 4242, + 4068, 4069, 4077, 4073, 4081, 4084, 4086, 4094, 6159, 4072, + 4079, 4089, 4090, 6159, 4092, 4095, 4096, 4097, 4098, 4102, + 4105, 4104, 4101, 4107, 4109, 4111, 4113, 4118, 4114, 4125, + 4122, 4116, 4126, 4130, 4127, 4137, 6159, 4133, 4138, 4139, + 4142, 4144, 4147, 4146, 4148, 4149, 6159, 4154, 4151, 4156, + 4152, 4159, 4162, 4164, 4173, 4179, 4181, 4171, 4175, 4182, + 4184, 4190, 4187, 6159, 4194, 4185, 4191, 4195, 4198, 4201, + 4202, 4204, 4206, 4209, 4210, 4212, 4214, 4216, 4218, 4219, + 4220, 4222, 6159, 4226, 4230, 4223, 4236, 4227, 4233, 4237, + 4243, 4247, 4238, 4248, 4249, 4251, 6159, 4252, 4253, 4254, - 4249, 4244, 4248, 4252, 4254, 4259, 4263, 4265, 4261, 6133, - 4257, 4268, 4271, 4274, 4275, 4277, 4278, 4282, 6133, 4284, - 4285, 4286, 4293, 4291, 4300, 4292, 4302, 4295, 4296, 4303, - 4304, 4305, 4310, 4315, 4311, 4322, 4323, 4326, 6133, 4318, - 6133, 4327, 4328, 4337, 4332, 4334, 4335, 6133, 4340, 4342, - 4344, 4345, 4350, 6133, 4349, 4346, 4348, 4352, 6133, 4351, - 4365, 4347, 4366, 4369, 4371, 6133, 4374, 4376, 4375, 4383, - 4387, 4382, 4385, 4386, 4388, 4390, 4392, 4393, 4394, 4403, - 4396, 4399, 6133, 4401, 4408, 4414, 4415, 4398, 4409, 4417, - 4419, 4422, 6133, 4423, 4416, 4424, 4425, 4426, 4427, 4432, + 4256, 4262, 4255, 4265, 4258, 4264, 6159, 4267, 4271, 4275, + 4278, 4277, 4280, 4281, 4283, 4285, 4286, 4290, 6159, 4287, + 4296, 4297, 4289, 4300, 4303, 4304, 4305, 6159, 4306, 4312, + 4315, 4322, 4318, 4325, 4321, 4323, 4320, 4327, 4329, 4333, + 4334, 4335, 4337, 4336, 4347, 4354, 4349, 6159, 4338, 6159, + 4351, 4355, 4363, 4361, 4359, 4352, 6159, 4365, 4366, 4368, + 4369, 4371, 6159, 4373, 4375, 4377, 4376, 6159, 4383, 4389, + 4378, 4387, 4396, 4400, 6159, 4403, 4390, 4404, 4411, 4412, + 4407, 4414, 4408, 4417, 4415, 4410, 4419, 4420, 4429, 4425, + 4426, 6159, 4428, 4430, 4435, 4436, 4443, 4437, 4440, 4444, - 4440, 4442, 4431, 6133, 4433, 4438, 4441, 4456, 4443, 4453, - 6133, 6133, 4452, 4457, 4459, 4460, 4463, 6133, 4461, 4473, - 4468, 4470, 4472, 6133, 6133, 4475, 6133, 4471, 6133, 4476, - 4477, 6133, 6133, 4478, 4479, 4482, 4491, 4485, 6133, 4495, - 6133, 4498, 4499, 4488, 4497, 4501, 6133, 4502, 4503, 4508, - 6133, 4509, 4516, 4511, 4512, 6133, 4514, 4517, 4522, 4524, - 6133, 4525, 4531, 4523, 4532, 4534, 4533, 4535, 4539, 4540, - 4536, 4544, 4545, 4546, 4556, 4558, 4560, 4562, 4552, 4563, - 4566, 4567, 4569, 4572, 4573, 4574, 4575, 4577, 4578, 4580, - 4583, 4587, 4588, 4586, 4589, 4590, 4599, 4592, 4595, 4603, + 4450, 4445, 6159, 4447, 4451, 4453, 4454, 4455, 4456, 4457, + 4467, 4463, 4379, 6159, 4465, 4464, 4470, 4472, 4474, 4479, + 6159, 6159, 4478, 4483, 4485, 4486, 4489, 6159, 4487, 4499, + 4494, 4496, 4498, 6159, 6159, 4501, 6159, 4497, 6159, 4502, + 4503, 6159, 6159, 4504, 4505, 4508, 4517, 4511, 6159, 4521, + 6159, 4524, 4525, 4514, 4523, 4527, 6159, 4528, 4529, 4534, + 6159, 4535, 4542, 4537, 4538, 6159, 4540, 4543, 4548, 4550, + 6159, 4551, 4557, 4549, 4558, 4560, 4559, 4561, 4565, 4566, + 4562, 4570, 4571, 4572, 4582, 4584, 4586, 4588, 4578, 4589, + 4592, 4593, 4595, 4598, 4599, 4600, 4601, 4603, 4604, 4606, - 4596, 4606, 4607, 4608, 4609, 4611, 4614, 4616, 4613, 4619, - 4620, 6133, 4618, 4623, 4624, 4628, 4629, 4637, 4639, 4641, - 4649, 4650, 6133, 4652, 6133, 4654, 4638, 4646, 4658, 4659, - 6133, 4660, 4661, 4662, 4663, 4664, 4665, 4666, 4667, 4670, - 4671, 4675, 6133, 4682, 4669, 4686, 4693, 6133, 4690, 4697, - 4694, 4698, 4700, 4702, 4701, 4703, 4704, 4705, 4709, 4711, - 4714, 4678, 4715, 4722, 4706, 4718, 4726, 4727, 4729, 4728, - 4732, 4736, 4740, 6133, 4735, 6133, 4741, 4742, 4743, 4744, - 4748, 4745, 4749, 6133, 6133, 4751, 4756, 4758, 4752, 4760, - 4763, 4766, 6133, 4769, 4772, 4774, 4775, 6133, 4777, 4779, + 4609, 4613, 4614, 4612, 4615, 4616, 4625, 4618, 4621, 4629, + 4622, 4632, 4633, 4634, 4635, 4637, 4640, 4642, 4639, 4645, + 4646, 6159, 4644, 4649, 4650, 4654, 4655, 4663, 4665, 4667, + 4675, 4676, 6159, 4678, 6159, 4680, 4664, 4672, 4684, 4685, + 6159, 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4696, + 4697, 4701, 6159, 4708, 6159, 4695, 4712, 4719, 6159, 4716, + 4723, 4720, 4724, 4726, 4728, 4727, 4729, 4730, 4731, 4735, + 4737, 4740, 4704, 4741, 4748, 4732, 4744, 4752, 4753, 4755, + 4754, 4758, 4762, 4766, 6159, 4761, 6159, 4767, 4768, 4769, + 4770, 4774, 4771, 4775, 6159, 6159, 4777, 4782, 4784, 4778, - 4780, 4782, 6133, 4783, 4785, 4786, 4797, 4787, 4802, 4793, - 4803, 4789, 4804, 4808, 6133, 6133, 6133, 6133, 4809, 4791, - 4815, 4811, 4817, 4818, 4819, 4821, 4822, 6133, 4826, 6133, - 6133, 4829, 4831, 4832, 4833, 4835, 4823, 4839, 4841, 6133, - 4840, 4845, 4847, 4844, 4854, 4857, 4861, 4851, 4862, 4863, - 4864, 4871, 4868, 4869, 4872, 4874, 4876, 4878, 6133, 6133, - 4880, 4884, 4885, 4892, 4889, 4890, 4896, 4903, 4898, 4899, - 4900, 4901, 4905, 4906, 4914, 4917, 4907, 4918, 6133, 4915, - 4919, 6133, 4921, 6133, 4923, 4924, 4925, 4926, 4931, 4932, - 4934, 4936, 6133, 6133, 6133, 4937, 4938, 4942, 4947, 4944, + 4786, 4789, 4792, 6159, 4795, 4798, 4800, 4801, 6159, 4803, + 4805, 4806, 4808, 6159, 4809, 4811, 4812, 4823, 4813, 4828, + 4819, 4829, 4815, 4830, 4834, 6159, 6159, 6159, 6159, 4835, + 4817, 4841, 4837, 4843, 4844, 4845, 4847, 4848, 6159, 4852, + 6159, 6159, 4855, 4857, 4858, 4859, 4861, 4849, 4865, 4867, + 6159, 4866, 4871, 4873, 4870, 4880, 4883, 4887, 4877, 4888, + 4889, 4890, 4897, 4894, 4895, 4898, 4900, 4902, 4904, 6159, + 6159, 4906, 4910, 4911, 4918, 4915, 4916, 4922, 4929, 4924, + 4925, 4926, 4927, 4931, 4932, 4940, 4943, 4933, 4944, 6159, + 4941, 4945, 6159, 4947, 6159, 4949, 4950, 4951, 4952, 4957, - 4948, 4949, 4951, 4952, 6133, 4953, 6133, 4954, 4955, 4966, - 4960, 4973, 4975, 4976, 4978, 4972, 4979, 6133, 4981, 4982, - 6133, 4983, 4986, 4988, 6133, 4991, 4989, 4994, 4997, 6133, - 4999, 5001, 5004, 6133, 5011, 6133, 5002, 5008, 5006, 5020, - 6133, 5012, 5015, 6133, 5024, 5026, 5027, 5021, 6133, 5017, - 6133, 5028, 5037, 5038, 5041, 5029, 5043, 5033, 5031, 5045, - 5053, 5051, 5052, 6133, 6133, 181, 5061, 5054, 5058, 5062, - 5057, 5070, 5065, 5067, 5069, 6133, 6133, 5074, 6133, 5072, - 5073, 6133, 5066, 5081, 5085, 5075, 5083, 5087, 5089, 5094, - 5096, 5097, 5099, 5098, 5100, 5106, 5121, 5103, 5117, 5123, + 4958, 4960, 4962, 6159, 6159, 6159, 4963, 4964, 4968, 4973, + 4970, 4974, 4975, 4977, 4978, 6159, 4979, 6159, 4980, 4981, + 4992, 4986, 4999, 5001, 5002, 5004, 4998, 5005, 6159, 5007, + 5008, 6159, 5009, 5012, 5014, 6159, 5017, 5015, 5020, 5023, + 6159, 5025, 5027, 5030, 6159, 5037, 6159, 5028, 5034, 5032, + 5046, 6159, 5038, 5041, 6159, 5050, 5052, 5053, 5047, 6159, + 5043, 6159, 5054, 5063, 5064, 5067, 5055, 5069, 5059, 5057, + 5071, 5079, 5077, 5078, 6159, 6159, 181, 5087, 5080, 5084, + 5088, 5083, 5096, 5091, 5093, 5095, 6159, 6159, 5100, 6159, + 5098, 5099, 6159, 5092, 5107, 5111, 5101, 5109, 5113, 5115, - 5125, 5127, 5129, 5118, 5131, 5113, 5132, 5135, 5137, 5139, - 6133, 5141, 5101, 5138, 6133, 5143, 5145, 5147, 5148, 6133, - 5150, 5151, 5154, 5155, 6133, 5161, 5166, 5167, 5168, 5169, - 5176, 5172, 5173, 5174, 6133, 6133, 6133, 5181, 5188, 6133, - 5190, 5180, 5183, 5191, 6133, 5192, 5193, 6133, 6133, 5195, - 5197, 5196, 5204, 6133, 5199, 6133, 5200, 6133, 5202, 5210, - 5212, 5214, 6133, 5217, 5224, 6133, 5219, 5227, 5230, 5231, - 5232, 5234, 5233, 6133, 5241, 5237, 5239, 5246, 5236, 5243, - 5247, 5251, 5248, 5263, 5249, 5259, 6133, 5260, 5262, 5265, - 5271, 5250, 5261, 5273, 6133, 5278, 6133, 5275, 5279, 5280, + 5120, 5122, 5123, 5125, 5124, 5126, 5132, 5147, 5129, 5143, + 5149, 5151, 5153, 5155, 5144, 5157, 5139, 5158, 5161, 5163, + 5165, 6159, 5167, 5127, 5164, 6159, 5169, 5171, 5173, 5174, + 6159, 5176, 5177, 5180, 5181, 6159, 5187, 5192, 5193, 5194, + 5195, 5202, 5198, 5199, 5200, 6159, 6159, 6159, 5207, 5214, + 6159, 5216, 5206, 5209, 5217, 6159, 5218, 5219, 6159, 6159, + 5221, 5223, 5222, 5230, 6159, 5225, 6159, 5226, 6159, 5228, + 5236, 5238, 5240, 6159, 5243, 5250, 6159, 5245, 5253, 5256, + 5257, 5258, 5260, 5259, 6159, 5267, 5263, 5265, 5272, 5262, + 5269, 5273, 5277, 5274, 5289, 5275, 5285, 6159, 5286, 5288, - 5281, 5282, 5283, 5286, 5291, 5285, 5300, 5287, 6133, 5304, - 5308, 6133, 5289, 6133, 5313, 6133, 5301, 5305, 5309, 5314, - 6133, 5316, 5318, 5297, 5322, 6133, 5323, 5326, 5327, 5329, - 6133, 6133, 5330, 5337, 5334, 5332, 5336, 5343, 5333, 5345, - 5347, 5348, 5349, 5361, 5351, 5356, 5352, 5360, 5362, 5366, - 6133, 6133, 6133, 5363, 5371, 5379, 5377, 5378, 5380, 5382, - 6133, 5383, 5385, 5387, 5386, 5395, 5390, 5394, 6133, 5397, - 5396, 5398, 5399, 5402, 5403, 5404, 6133, 5411, 5416, 5419, - 5406, 5421, 5418, 5428, 5430, 5431, 6133, 5433, 6133, 6133, - 5425, 6133, 5434, 5435, 5437, 5438, 6133, 5441, 5446, 5442, + 5291, 5297, 5276, 5287, 5299, 6159, 5304, 6159, 5301, 5305, + 5306, 5307, 5308, 5309, 5312, 5317, 5311, 5326, 5313, 6159, + 5330, 5334, 6159, 5315, 6159, 5339, 6159, 5327, 5331, 5335, + 5340, 6159, 5342, 5344, 5323, 5348, 6159, 5349, 5352, 5353, + 5355, 6159, 6159, 5356, 5363, 5360, 5358, 5362, 5369, 5359, + 5371, 5373, 5374, 5375, 5387, 5377, 5382, 5378, 5386, 5388, + 5392, 6159, 6159, 6159, 5389, 5397, 5405, 5403, 5404, 5406, + 5408, 6159, 5409, 5411, 5413, 5412, 5421, 5416, 5420, 6159, + 5423, 5422, 5424, 5425, 5428, 5429, 5430, 6159, 5437, 5442, + 5445, 5432, 5447, 5444, 5454, 5456, 5457, 6159, 5459, 6159, - 5443, 5448, 5450, 6133, 5451, 5453, 5455, 5458, 6133, 6133, - 5465, 6133, 5467, 5470, 5454, 5477, 5469, 5472, 5479, 5482, - 6133, 5476, 5483, 5484, 5485, 5486, 6133, 5490, 5488, 5491, - 5493, 6133, 5494, 5499, 5500, 5495, 5501, 6133, 5504, 5502, - 5514, 5505, 6133, 5519, 5520, 6133, 6133, 5524, 5526, 5527, - 6133, 6133, 6133, 5529, 6133, 5535, 5540, 5544, 5548, 5532, - 6133, 5550, 5543, 5551, 6133, 6133, 5547, 5552, 5553, 5555, - 6133, 6133, 5556, 5557, 5559, 5521, 5560, 6133, 5562, 5568, - 5569, 5574, 5579, 5571, 5582, 5576, 5590, 5597, 5583, 5592, - 5593, 5594, 5595, 5596, 5602, 5604, 5603, 5606, 5611, 5612, + 6159, 5451, 6159, 5460, 5461, 5463, 5464, 6159, 5467, 5472, + 5468, 5469, 5474, 5476, 6159, 5477, 5479, 5481, 5484, 6159, + 6159, 5491, 6159, 5493, 5496, 5480, 5503, 5495, 5498, 5505, + 5508, 6159, 5502, 5509, 5510, 5511, 5512, 6159, 5516, 5514, + 5517, 5519, 6159, 5520, 5525, 5526, 5521, 5527, 6159, 5530, + 5528, 5540, 5531, 6159, 5545, 5546, 6159, 6159, 5550, 5552, + 5553, 6159, 6159, 6159, 5555, 6159, 5561, 5566, 5570, 5574, + 5558, 6159, 5576, 5569, 5577, 6159, 6159, 5573, 5578, 5579, + 5581, 6159, 6159, 5582, 5583, 5585, 5547, 5586, 6159, 5588, + 5594, 5595, 5600, 5605, 5597, 5608, 5602, 5616, 5623, 5609, - 6133, 6133, 5619, 6133, 6133, 5621, 5623, 5625, 5627, 5629, - 5631, 5633, 6133, 5634, 5636, 5637, 5638, 5639, 6133, 5641, - 5645, 5640, 5648, 5642, 5651, 5647, 5657, 6133, 6133, 5649, - 5613, 5653, 5663, 5658, 6133, 5665, 5672, 5669, 5670, 5671, - 5673, 5677, 6133, 5674, 5678, 6133, 6133, 5681, 6133, 6133, - 6133, 6133, 6133, 6133, 6133, 6133, 5682, 6133, 5684, 5689, - 5695, 5699, 6133, 5686, 5692, 5700, 5702, 5703, 6133, 5705, - 5707, 5706, 5708, 5712, 5713, 5716, 5715, 5719, 5720, 5721, - 5723, 5724, 5730, 5726, 5725, 5735, 6133, 6133, 6133, 5739, - 5731, 5744, 5732, 5749, 5754, 5757, 5759, 5750, 5752, 5760, + 5618, 5619, 5620, 5621, 5622, 5628, 5630, 5629, 5632, 5637, + 5638, 6159, 6159, 5645, 6159, 6159, 5647, 5649, 5651, 5653, + 5655, 5657, 5659, 6159, 5660, 5662, 5663, 5664, 5665, 6159, + 5667, 5671, 5666, 5674, 5668, 5677, 5673, 5683, 6159, 6159, + 5675, 5639, 5679, 5689, 5684, 6159, 5691, 5698, 5695, 5696, + 5697, 5699, 5703, 6159, 5700, 5704, 6159, 6159, 5707, 6159, + 6159, 6159, 6159, 6159, 6159, 6159, 6159, 5708, 6159, 5710, + 5715, 5721, 5725, 6159, 5712, 5718, 5726, 5728, 5729, 6159, + 5731, 5733, 5732, 5734, 5738, 5739, 5742, 5741, 5745, 5746, + 5747, 5749, 5750, 5756, 5752, 5751, 5761, 6159, 6159, 6159, - 5761, 5762, 5764, 5765, 5774, 5770, 5771, 5773, 5775, 5777, - 5779, 5781, 5786, 6133, 5782, 6133, 5787, 6133, 6133, 5791, - 5792, 5788, 5798, 5807, 5808, 5799, 5803, 5804, 5806, 5810, - 5815, 6133, 5812, 5818, 6133, 5820, 5821, 6133, 5819, 5822, - 5824, 5828, 5829, 5826, 5830, 5831, 5847, 6133, 6133, 5832, - 5837, 5840, 5849, 5851, 5850, 5853, 5857, 5858, 5860, 5861, - 5870, 6133, 5867, 5868, 5872, 6133, 5874, 5869, 5875, 5876, - 5877, 5885, 5881, 5884, 6133, 5886, 6133, 5890, 5892, 5893, - 5883, 5891, 5894, 5905, 5903, 5899, 6133, 5909, 5913, 5911, - 5915, 5917, 5919, 5920, 5921, 5923, 5926, 5932, 5929, 5936, + 5765, 5757, 5770, 5758, 5775, 5780, 5783, 5785, 5776, 5778, + 5786, 5787, 5788, 5790, 5791, 5800, 5796, 5797, 5799, 5801, + 5803, 5805, 5807, 5812, 6159, 5808, 6159, 5813, 6159, 6159, + 5817, 5818, 5814, 5824, 5833, 5834, 5825, 5829, 5830, 5832, + 5836, 5841, 6159, 5838, 5844, 6159, 5846, 5847, 6159, 5845, + 5848, 5850, 5854, 5855, 5852, 5856, 5857, 5873, 6159, 6159, + 5858, 5863, 5866, 5875, 5877, 5876, 5879, 5883, 5884, 5886, + 5887, 5896, 6159, 5893, 5894, 5898, 6159, 5900, 5895, 5901, + 5902, 5903, 5911, 5907, 5910, 6159, 5912, 6159, 5916, 5918, + 5919, 5909, 5917, 5920, 5931, 5929, 5925, 6159, 5935, 5939, - 5937, 5933, 5941, 5938, 6133, 5948, 5939, 6133, 5945, 5949, - 5942, 5951, 5955, 6133, 5960, 5953, 5962, 5963, 5966, 5967, - 6133, 5969, 5976, 5971, 6133, 5977, 6133, 6133, 5979, 5973, - 5980, 5986, 5988, 6133, 6133, 6133, 6013, 6020, 6027, 6034, - 6041, 6048, 6055, 88, 6062, 6069, 6076, 6083, 6090, 6097, - 6104, 6111, 6118, 6125 + 5937, 5941, 5943, 5945, 5946, 5947, 5949, 5952, 5958, 5955, + 5962, 5963, 5959, 5967, 5964, 6159, 5974, 5965, 6159, 5971, + 5975, 5968, 5977, 5981, 6159, 5986, 5979, 5988, 5989, 5992, + 5993, 6159, 5995, 6002, 5997, 6159, 6003, 6159, 6159, 6005, + 5999, 6006, 6012, 6014, 6159, 6159, 6159, 6039, 6046, 6053, + 6060, 6067, 6074, 6081, 88, 6088, 6095, 6102, 6109, 6116, + 6123, 6130, 6137, 6144, 6151 } ; -static const flex_int16_t yy_def[3155] = +static const flex_int16_t yy_def[3166] = { 0, - 3136, 1, 3137, 3137, 3138, 3138, 3139, 3139, 3140, 3140, - 3141, 3141, 3142, 3142, 3143, 3143, 3136, 3144, 3136, 3136, - 3136, 3136, 3145, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3146, 3136, 3136, 3136, - 3146, 3147, 3136, 3136, 3136, 3147, 3148, 3136, 3136, 3136, - 3136, 3148, 3149, 3136, 3136, 3136, 3149, 3150, 3136, 3151, - 3136, 3150, 3150, 3152, 3136, 3136, 3136, 3136, 3152, 3153, - 3136, 3136, 3136, 3153, 3144, 3144, 3136, 3154, 3145, 3154, - 3145, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3147, 1, 3148, 3148, 3149, 3149, 3150, 3150, 3151, 3151, + 3152, 3152, 3153, 3153, 3154, 3154, 3147, 3155, 3147, 3147, + 3147, 3147, 3156, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3157, 3147, 3147, 3147, + 3157, 3158, 3147, 3147, 3147, 3158, 3159, 3147, 3147, 3147, + 3147, 3159, 3160, 3147, 3147, 3147, 3160, 3161, 3147, 3162, + 3147, 3161, 3161, 3163, 3147, 3147, 3147, 3147, 3163, 3164, + 3147, 3147, 3147, 3164, 3155, 3155, 3147, 3165, 3156, 3165, + 3156, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3146, 3146, 3147, 3147, - 3148, 3148, 3136, 3149, 3149, 3150, 3150, 3151, 3151, 3150, - 3152, 3152, 3136, 3153, 3153, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3157, 3157, 3158, 3158, + 3159, 3159, 3147, 3160, 3160, 3161, 3161, 3162, 3162, 3161, + 3163, 3163, 3147, 3164, 3164, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3150, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3150, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3136, 3136, 3144, 3136, 3136, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3147, 3147, 3155, 3147, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3150, - 3150, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3161, 3161, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3150, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3161, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3136, 3150, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3150, 3144, 3136, 3144, 3144, 3144, 3136, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, + 3161, 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3147, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3150, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, + 3155, 3155, 3155, 3155, 3161, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3136, 3144, 3136, 3144, - 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3147, 3147, 3155, 3147, 3155, 3147, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3136, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3136, 3136, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3150, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, 3136, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3161, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3147, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3136, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, 3144, 3144, - 3136, 3136, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, 3155, 3155, + 3155, 3147, 3147, 3147, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3136, 3136, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, 3155, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3136, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 0, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136 + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3147, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 0, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147 } ; -static const flex_int16_t yy_nxt[6174] = +static const flex_int16_t yy_nxt[6200] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1541,7 +1544,7 @@ static const flex_int16_t yy_nxt[6174] = 86, 433, 434, 431, 430, 436, 86, 86, 86, 435, 86, 86, 86, 86, 449, 86, 443, 445, 454, 86, 432, 86, 86, 455, 86, 446, 450, 447, 444, 86, - 437, 451, 86, 438, 452, 453, 86, 606, 439, 440, + 437, 451, 86, 438, 452, 453, 86, 607, 439, 440, 441, 442, 86, 448, 86, 456, 457, 86, 86, 458, 86, 459, 86, 460, 462, 86, 461, 463, 86, 464, @@ -1553,7 +1556,7 @@ static const flex_int16_t yy_nxt[6174] = 86, 485, 493, 86, 486, 86, 487, 86, 494, 86, 508, 167, 495, 505, 86, 506, 504, 507, 519, 510, 496, 86, 497, 86, 498, 520, 509, 86, 86, 518, - 521, 86, 523, 522, 86, 86, 86, 499, 525, 841, + 521, 86, 523, 522, 86, 86, 86, 499, 525, 843, 500, 86, 501, 528, 502, 86, 86, 511, 512, 86, 526, 86, 86, 524, 527, 86, 86, 513, 86, 514, @@ -1561,583 +1564,586 @@ static const flex_int16_t yy_nxt[6174] = 537, 540, 538, 533, 86, 534, 535, 86, 536, 86, 541, 86, 86, 539, 545, 86, 86, 86, 549, 550, 86, 86, 548, 543, 542, 86, 544, 86, 86, 86, - 86, 555, 547, 86, 86, 86, 556, 86, 86, 558, - 546, 559, 86, 552, 553, 551, 86, 554, 86, 561, - 86, 86, 634, 86, 557, 86, 560, 562, 564, 86, - 86, 563, 567, 572, 570, 566, 86, 86, 565, 573, + 160, 555, 547, 86, 86, 86, 556, 557, 86, 559, + 546, 86, 560, 552, 553, 551, 86, 554, 86, 562, + 86, 86, 86, 86, 558, 86, 86, 561, 86, 86, + 563, 564, 86, 572, 568, 571, 565, 567, 86, 566, - 574, 571, 86, 568, 86, 569, 86, 86, 576, 86, - 86, 577, 578, 86, 581, 579, 86, 86, 575, 583, - 86, 86, 584, 86, 580, 86, 586, 587, 86, 582, - 86, 86, 588, 86, 585, 86, 591, 86, 589, 86, - 592, 86, 593, 86, 86, 86, 86, 86, 599, 595, - 594, 590, 603, 86, 86, 602, 598, 600, 601, 596, - 86, 597, 86, 605, 86, 607, 86, 86, 86, 86, - 86, 86, 86, 617, 86, 609, 86, 610, 619, 86, - 86, 604, 612, 86, 86, 618, 624, 608, 616, 611, - 613, 615, 614, 86, 621, 86, 86, 86, 620, 627, + 575, 574, 573, 576, 86, 569, 86, 570, 86, 581, + 577, 86, 578, 86, 579, 86, 582, 86, 580, 584, + 86, 86, 86, 86, 587, 588, 585, 86, 86, 86, + 583, 86, 589, 86, 86, 586, 86, 594, 592, 593, + 86, 86, 590, 86, 86, 595, 86, 86, 86, 600, + 591, 601, 596, 86, 603, 599, 86, 86, 86, 86, + 602, 597, 598, 604, 86, 606, 86, 608, 86, 86, + 86, 613, 86, 86, 86, 618, 610, 605, 609, 611, + 620, 86, 86, 86, 86, 158, 86, 86, 617, 612, + 614, 619, 615, 616, 86, 623, 86, 622, 624, 621, - 86, 86, 630, 622, 629, 86, 623, 86, 86, 86, - 625, 86, 626, 86, 633, 86, 86, 636, 86, 86, - 628, 632, 86, 637, 639, 86, 631, 86, 86, 86, - 638, 86, 635, 653, 86, 641, 86, 667, 640, 86, - 642, 86, 643, 652, 86, 651, 86, 644, 656, 645, - 654, 660, 655, 86, 659, 646, 86, 647, 657, 86, - 648, 649, 658, 664, 86, 86, 86, 650, 663, 86, - 86, 670, 661, 86, 665, 662, 86, 672, 86, 86, - 666, 86, 86, 86, 86, 86, 669, 86, 668, 678, - 86, 674, 86, 673, 679, 86, 675, 86, 671, 683, + 86, 86, 628, 625, 629, 631, 86, 86, 86, 630, + 626, 86, 86, 86, 86, 86, 627, 634, 637, 86, + 86, 633, 86, 86, 638, 640, 86, 86, 86, 632, + 86, 86, 86, 668, 86, 635, 636, 639, 86, 641, + 643, 86, 654, 903, 86, 642, 86, 644, 652, 653, + 655, 86, 645, 86, 646, 657, 86, 656, 86, 660, + 647, 661, 648, 658, 86, 649, 650, 659, 86, 667, + 665, 86, 651, 86, 86, 671, 86, 664, 86, 86, + 662, 666, 86, 663, 86, 673, 86, 86, 86, 86, + 86, 675, 86, 670, 669, 679, 86, 674, 680, 86, - 167, 676, 685, 682, 684, 677, 680, 681, 86, 86, - 687, 86, 86, 86, 86, 86, 86, 86, 86, 692, - 694, 686, 696, 86, 86, 695, 689, 697, 690, 693, - 688, 699, 691, 86, 86, 86, 698, 86, 701, 86, - 86, 86, 86, 86, 705, 86, 700, 704, 713, 86, - 86, 710, 706, 702, 715, 703, 711, 86, 86, 707, - 86, 709, 708, 712, 714, 86, 716, 86, 717, 86, - 718, 86, 719, 86, 722, 86, 86, 720, 86, 721, - 723, 86, 86, 86, 86, 726, 86, 86, 727, 725, - 731, 730, 724, 86, 86, 86, 86, 732, 86, 86, + 86, 676, 683, 672, 167, 86, 677, 686, 685, 684, + 678, 681, 86, 86, 682, 86, 86, 687, 86, 86, + 86, 86, 86, 695, 693, 697, 86, 688, 86, 86, + 690, 86, 698, 691, 689, 694, 696, 692, 86, 700, + 86, 699, 86, 701, 86, 86, 86, 702, 86, 86, + 86, 705, 706, 86, 703, 711, 724, 704, 86, 707, + 712, 86, 714, 86, 710, 86, 708, 715, 86, 709, + 716, 713, 717, 86, 718, 86, 86, 719, 86, 720, + 86, 86, 86, 86, 721, 86, 722, 725, 86, 727, + 723, 728, 86, 86, 86, 733, 86, 729, 86, 726, - 734, 86, 736, 86, 737, 729, 86, 728, 86, 86, - 743, 86, 733, 86, 739, 738, 86, 86, 735, 740, - 86, 742, 746, 741, 744, 747, 86, 750, 86, 745, - 748, 86, 86, 86, 752, 86, 753, 751, 86, 86, - 755, 749, 756, 757, 86, 86, 86, 86, 86, 86, - 764, 86, 762, 760, 86, 86, 86, 86, 754, 86, - 758, 761, 770, 759, 765, 160, 768, 86, 86, 763, - 86, 769, 767, 766, 86, 86, 771, 772, 773, 774, - 86, 86, 86, 775, 779, 777, 86, 776, 781, 778, - 86, 780, 86, 86, 86, 782, 784, 86, 783, 86, + 732, 86, 734, 86, 86, 86, 738, 86, 86, 736, + 86, 86, 86, 731, 741, 739, 730, 86, 86, 742, + 763, 735, 740, 743, 86, 737, 86, 745, 86, 86, + 86, 86, 752, 748, 749, 744, 746, 86, 86, 86, + 747, 755, 86, 86, 750, 754, 751, 86, 753, 86, + 86, 86, 757, 758, 759, 86, 86, 86, 86, 760, + 86, 764, 762, 756, 766, 86, 86, 767, 772, 761, + 86, 86, 86, 86, 86, 86, 773, 765, 774, 768, + 770, 86, 769, 86, 771, 775, 776, 86, 86, 86, + 777, 779, 781, 783, 778, 780, 86, 86, 86, 86, - 86, 785, 86, 791, 86, 788, 86, 86, 86, 86, - 786, 86, 787, 794, 86, 793, 86, 796, 797, 789, - 790, 86, 800, 792, 798, 86, 801, 795, 86, 803, - 802, 86, 805, 86, 804, 86, 86, 86, 807, 799, - 86, 86, 809, 86, 86, 86, 86, 815, 86, 86, - 86, 86, 816, 86, 86, 86, 808, 86, 806, 810, - 817, 811, 812, 86, 813, 818, 814, 820, 86, 819, - 824, 86, 823, 86, 821, 822, 86, 86, 86, 86, - 86, 86, 825, 826, 829, 86, 86, 86, 86, 86, - 838, 86, 827, 836, 831, 839, 828, 830, 86, 832, + 784, 782, 86, 786, 86, 86, 86, 785, 787, 86, + 793, 790, 86, 86, 86, 86, 86, 788, 789, 796, + 86, 798, 795, 86, 86, 791, 792, 800, 802, 86, + 799, 794, 86, 805, 86, 797, 86, 804, 806, 86, + 86, 803, 801, 86, 807, 86, 86, 809, 811, 86, + 86, 86, 86, 86, 817, 86, 86, 86, 86, 810, + 86, 808, 818, 86, 819, 86, 86, 812, 813, 814, + 86, 815, 820, 816, 822, 86, 86, 826, 821, 86, + 86, 825, 824, 86, 823, 86, 86, 86, 828, 827, + 831, 86, 86, 86, 86, 86, 86, 840, 829, 830, - 86, 837, 86, 833, 834, 835, 86, 843, 86, 86, - 86, 86, 86, 86, 842, 86, 847, 840, 848, 849, - 850, 86, 844, 846, 86, 86, 851, 845, 86, 852, - 86, 853, 86, 167, 854, 86, 86, 86, 858, 856, - 859, 86, 855, 86, 857, 860, 86, 86, 86, 861, - 86, 863, 862, 866, 86, 86, 867, 869, 86, 870, - 864, 86, 86, 872, 868, 86, 874, 871, 865, 86, - 86, 86, 878, 86, 86, 86, 86, 875, 86, 86, - 880, 873, 879, 86, 86, 86, 86, 86, 898, 877, - 894, 86, 86, 881, 893, 876, 86, 895, 891, 883, + 838, 86, 86, 832, 86, 834, 841, 833, 839, 86, + 835, 836, 837, 86, 845, 86, 86, 86, 844, 86, + 842, 86, 86, 849, 850, 86, 86, 852, 851, 846, + 848, 853, 86, 86, 847, 86, 86, 86, 86, 855, + 861, 167, 856, 854, 86, 858, 860, 86, 862, 857, + 859, 86, 86, 86, 86, 868, 86, 86, 869, 86, + 864, 863, 871, 86, 86, 874, 870, 865, 866, 86, + 86, 86, 86, 872, 867, 86, 876, 86, 873, 880, + 86, 86, 877, 86, 86, 86, 86, 86, 881, 875, + 882, 86, 86, 86, 901, 879, 86, 86, 86, 883, - 897, 882, 86, 892, 884, 86, 899, 885, 896, 86, - 86, 886, 86, 86, 887, 86, 86, 904, 86, 920, - 900, 888, 889, 86, 890, 86, 902, 86, 901, 86, - 912, 158, 916, 903, 86, 905, 906, 913, 907, 86, - 915, 908, 917, 86, 86, 914, 909, 918, 86, 923, - 919, 86, 910, 911, 921, 86, 922, 86, 86, 86, - 924, 926, 86, 925, 86, 86, 927, 86, 86, 930, - 929, 928, 86, 86, 934, 86, 933, 86, 86, 86, - 937, 86, 86, 941, 943, 86, 86, 931, 86, 86, - 935, 932, 936, 939, 86, 938, 944, 962, 86, 942, + 878, 895, 893, 896, 897, 898, 885, 86, 894, 884, + 86, 86, 886, 86, 86, 887, 86, 900, 86, 888, + 86, 902, 889, 899, 86, 905, 86, 907, 86, 890, + 891, 915, 892, 86, 904, 916, 86, 923, 906, 86, + 908, 909, 917, 910, 86, 86, 911, 919, 86, 920, + 175, 912, 922, 918, 921, 86, 86, 913, 914, 86, + 925, 926, 86, 924, 86, 927, 929, 86, 86, 928, + 930, 86, 86, 86, 86, 86, 86, 933, 86, 86, + 937, 86, 86, 931, 86, 940, 936, 86, 86, 173, + 938, 932, 944, 86, 934, 935, 939, 86, 86, 941, - 947, 945, 86, 946, 940, 948, 86, 86, 950, 86, - 86, 86, 949, 951, 86, 952, 86, 954, 86, 955, - 86, 86, 86, 86, 953, 86, 86, 86, 958, 956, - 961, 86, 959, 964, 86, 963, 86, 86, 86, 86, - 957, 86, 86, 86, 86, 960, 966, 967, 969, 86, - 970, 86, 971, 965, 86, 86, 972, 86, 973, 977, - 968, 86, 979, 975, 978, 86, 86, 974, 976, 86, - 86, 86, 980, 86, 984, 986, 987, 86, 982, 86, - 86, 86, 985, 86, 86, 981, 989, 86, 86, 86, - 86, 86, 86, 86, 983, 997, 1000, 86, 995, 86, + 942, 947, 945, 946, 86, 86, 948, 86, 950, 943, + 949, 951, 963, 86, 86, 953, 86, 86, 952, 954, + 86, 86, 86, 957, 86, 86, 955, 958, 86, 86, + 956, 86, 86, 959, 964, 86, 961, 86, 967, 962, + 86, 86, 86, 86, 86, 86, 965, 960, 966, 86, + 86, 969, 970, 86, 972, 86, 974, 86, 86, 973, + 968, 86, 975, 86, 86, 982, 86, 86, 980, 971, + 978, 86, 976, 981, 86, 86, 979, 990, 86, 86, + 977, 983, 987, 86, 985, 989, 984, 86, 86, 86, + 988, 86, 86, 992, 86, 986, 86, 86, 86, 86, - 988, 990, 86, 991, 992, 86, 1001, 86, 994, 993, - 998, 1002, 999, 996, 86, 86, 86, 86, 1008, 86, - 1005, 1004, 1007, 86, 1003, 86, 86, 86, 86, 1006, - 86, 86, 1010, 1017, 1012, 1018, 1009, 1020, 86, 86, - 86, 86, 1022, 86, 86, 1011, 175, 1013, 86, 1015, - 1014, 1016, 1019, 1023, 86, 86, 86, 86, 1024, 86, - 1021, 1028, 1031, 1025, 86, 1030, 86, 1026, 86, 1032, - 86, 86, 86, 1035, 86, 1027, 1037, 86, 1029, 86, - 86, 86, 86, 86, 1034, 1040, 1039, 1043, 1033, 1042, - 1041, 167, 1036, 86, 1044, 86, 86, 86, 1038, 86, + 86, 86, 86, 1000, 86, 998, 86, 1003, 991, 86, + 993, 994, 995, 86, 1005, 1004, 996, 997, 1001, 86, + 1002, 999, 86, 1006, 86, 86, 1011, 86, 1008, 1012, + 1010, 86, 86, 1007, 86, 86, 86, 86, 1009, 86, + 1013, 1020, 1015, 1021, 1023, 86, 86, 86, 1025, 86, + 86, 1026, 1014, 86, 86, 1016, 1018, 86, 1017, 1019, + 1022, 86, 86, 86, 86, 1024, 1027, 86, 1031, 86, + 1033, 1034, 1028, 1029, 86, 86, 1038, 86, 1035, 86, + 1037, 1030, 86, 1040, 86, 1032, 86, 86, 86, 1043, + 86, 1047, 1036, 1042, 1044, 167, 86, 86, 86, 1039, - 86, 1047, 86, 86, 1045, 86, 1059, 86, 1062, 86, - 86, 1060, 86, 86, 1050, 1046, 1048, 1064, 86, 86, - 1087, 86, 1051, 1049, 1052, 86, 86, 1061, 1053, 86, - 1054, 1078, 86, 1065, 1055, 1063, 1056, 1067, 86, 1069, - 1066, 1057, 86, 1068, 1070, 86, 1058, 1071, 86, 86, - 86, 86, 1073, 86, 1079, 86, 1072, 86, 1076, 86, - 86, 86, 86, 173, 1074, 1075, 1084, 1085, 1077, 1080, - 1083, 1082, 1081, 86, 1086, 86, 1088, 1089, 1091, 86, - 86, 86, 86, 86, 1090, 86, 86, 1101, 86, 1104, - 86, 1100, 86, 1092, 86, 1093, 86, 1105, 1103, 1102, + 1046, 86, 1045, 86, 1041, 86, 1050, 86, 86, 86, + 86, 1062, 86, 1065, 86, 172, 1063, 86, 1049, 1048, + 86, 1053, 1051, 86, 86, 1091, 86, 1067, 1054, 1052, + 1055, 86, 1064, 86, 1056, 86, 1057, 86, 1070, 1068, + 1058, 86, 1059, 86, 86, 1066, 86, 1060, 1072, 1069, + 1074, 1071, 1061, 1073, 86, 86, 1081, 1075, 86, 1076, + 86, 1078, 86, 1079, 86, 1082, 86, 86, 86, 86, + 86, 1077, 1088, 1080, 1092, 1087, 1083, 1086, 1089, 86, + 1085, 1090, 1093, 86, 86, 1084, 86, 86, 86, 86, + 86, 86, 1094, 86, 86, 1105, 86, 1108, 86, 1109, - 1094, 86, 1095, 86, 1106, 1110, 86, 86, 1096, 1108, - 86, 1111, 1113, 1097, 1098, 1107, 86, 86, 86, 1114, - 1099, 86, 1109, 1117, 86, 86, 86, 86, 86, 86, - 1112, 1118, 86, 86, 1116, 86, 1115, 1120, 1123, 86, - 1126, 1121, 86, 1119, 86, 1127, 1125, 86, 1124, 1122, - 86, 86, 86, 86, 86, 86, 1128, 1135, 86, 1133, - 1131, 1132, 1130, 86, 86, 86, 86, 1129, 86, 1137, - 86, 1134, 86, 86, 1136, 1143, 86, 86, 1144, 1140, - 86, 1145, 86, 1147, 1138, 1139, 1141, 1142, 1148, 1146, - 1149, 86, 1151, 86, 86, 86, 1153, 1152, 86, 1154, + 86, 1104, 1095, 1107, 1096, 86, 1097, 1106, 1110, 86, + 86, 1098, 1111, 1099, 1114, 86, 86, 86, 167, 1100, + 1115, 1117, 86, 86, 1101, 1102, 1118, 86, 1112, 1113, + 86, 1103, 1121, 86, 86, 86, 86, 1116, 86, 1122, + 86, 1119, 1127, 1120, 1124, 1125, 86, 86, 86, 86, + 86, 86, 1123, 86, 1130, 1128, 1126, 86, 86, 86, + 86, 86, 86, 86, 86, 1132, 1129, 1135, 1136, 1134, + 1131, 86, 86, 1133, 1139, 86, 1140, 1137, 1138, 86, + 86, 1145, 1142, 1143, 165, 86, 1141, 86, 86, 1144, + 1147, 86, 1148, 1149, 1146, 86, 1151, 1152, 86, 86, - 86, 86, 86, 1155, 86, 86, 86, 1150, 1162, 86, - 1164, 86, 86, 1157, 86, 1156, 86, 1166, 1158, 1160, - 1161, 86, 1159, 86, 86, 86, 1165, 1168, 86, 1163, - 1170, 86, 86, 1171, 86, 1167, 86, 1173, 86, 1174, - 86, 1180, 86, 86, 1169, 1179, 1176, 1172, 1175, 1178, - 86, 86, 86, 86, 1177, 86, 1183, 86, 1184, 1181, - 86, 86, 86, 86, 86, 1188, 1190, 86, 1191, 1192, - 1182, 86, 86, 1185, 86, 86, 1189, 86, 1195, 1186, - 1193, 1187, 1194, 1198, 86, 1196, 86, 86, 86, 86, - 86, 1197, 1199, 1200, 86, 1201, 86, 1202, 86, 86, + 1150, 1155, 86, 86, 86, 1157, 1156, 86, 1158, 86, + 86, 1153, 1159, 86, 86, 1154, 1160, 1166, 86, 86, + 86, 1168, 86, 86, 86, 86, 163, 86, 86, 1162, + 1161, 1164, 1163, 1170, 1165, 86, 86, 1169, 1171, 1172, + 1167, 86, 86, 86, 86, 86, 1173, 1174, 1175, 1177, + 1178, 1176, 86, 1179, 86, 86, 1183, 86, 1180, 1184, + 86, 1182, 86, 86, 86, 86, 1185, 1187, 86, 1188, + 1181, 86, 86, 86, 86, 86, 1192, 86, 1194, 1195, + 1196, 1186, 1197, 1189, 86, 86, 86, 1193, 1199, 86, + 1190, 1198, 1191, 86, 86, 1202, 86, 86, 1204, 86, - 86, 1205, 1206, 86, 86, 86, 1211, 1212, 1203, 86, - 86, 1207, 86, 86, 1214, 1204, 1209, 1215, 86, 86, - 86, 1208, 1219, 86, 1210, 1213, 86, 86, 86, 86, - 86, 86, 1225, 86, 1217, 1218, 167, 1221, 1216, 86, - 86, 86, 86, 1232, 86, 1220, 1230, 86, 1222, 86, - 1224, 172, 1229, 1227, 1234, 1223, 1226, 1228, 1231, 1235, - 86, 86, 86, 86, 1237, 86, 1236, 1233, 1238, 86, - 86, 86, 86, 86, 86, 86, 1241, 86, 1247, 86, - 86, 1244, 86, 1239, 1240, 86, 86, 1242, 86, 167, - 1245, 1251, 1243, 86, 1248, 86, 1246, 86, 1253, 1257, + 86, 86, 1203, 86, 86, 1205, 86, 1200, 86, 1206, + 86, 1209, 86, 1201, 86, 1210, 86, 1211, 1215, 1216, + 86, 1207, 86, 1208, 86, 86, 1213, 86, 1212, 1219, + 86, 86, 1218, 86, 86, 1214, 1223, 1217, 86, 1220, + 86, 86, 86, 86, 167, 1221, 1222, 1225, 1229, 86, + 86, 1224, 86, 86, 86, 86, 86, 86, 1234, 1241, + 1226, 162, 1228, 1235, 1230, 1232, 1231, 1227, 1233, 1236, + 86, 1238, 1239, 86, 86, 1237, 86, 86, 86, 1240, + 86, 1242, 86, 86, 86, 86, 86, 1243, 1245, 86, + 1251, 86, 1248, 86, 1244, 86, 86, 1246, 86, 86, - 1249, 1250, 86, 1258, 1261, 86, 86, 1254, 1252, 1255, - 1259, 86, 1256, 1260, 86, 86, 86, 86, 1263, 86, - 1262, 86, 86, 86, 1267, 86, 1266, 1270, 86, 86, - 1264, 1273, 86, 86, 1265, 1269, 1271, 86, 1274, 86, - 1268, 86, 1275, 86, 1277, 1278, 86, 1272, 86, 1276, - 86, 86, 1279, 86, 86, 86, 86, 86, 86, 86, - 86, 1280, 1285, 1281, 86, 1283, 1284, 86, 1286, 1282, - 1290, 1295, 86, 1287, 1291, 86, 1289, 86, 1288, 86, - 1292, 1294, 86, 86, 86, 86, 86, 1293, 86, 1300, - 1296, 1298, 86, 1297, 1302, 86, 1307, 1301, 86, 1303, + 86, 1249, 86, 1247, 1255, 1263, 1261, 1252, 1250, 86, + 86, 1254, 86, 1253, 1257, 86, 1262, 1264, 86, 1256, + 86, 86, 86, 1258, 1266, 1259, 86, 1265, 1260, 1267, + 86, 1268, 86, 86, 1273, 1271, 86, 86, 86, 1269, + 86, 1270, 1274, 1278, 86, 86, 86, 86, 86, 1276, + 1275, 1279, 1272, 1280, 86, 86, 1284, 86, 1283, 1277, + 1282, 86, 86, 86, 86, 1281, 86, 86, 86, 86, + 86, 86, 1285, 1290, 86, 1288, 1286, 1295, 86, 1289, + 1291, 1287, 86, 86, 86, 1300, 1292, 86, 1294, 1296, + 1293, 86, 1299, 86, 86, 86, 86, 86, 1297, 1301, - 86, 1306, 1299, 1316, 86, 1304, 1305, 86, 86, 86, - 1375, 1314, 1308, 1315, 86, 1309, 1310, 86, 1317, 1318, - 1311, 1320, 86, 86, 86, 86, 1312, 86, 1321, 1322, - 1313, 1319, 86, 1323, 86, 1325, 86, 86, 86, 1326, - 86, 1327, 86, 86, 86, 86, 1324, 1335, 1332, 1330, - 86, 86, 1344, 86, 1336, 1337, 1329, 1328, 1333, 86, - 86, 86, 1331, 1334, 86, 1338, 1345, 1346, 1339, 86, - 86, 86, 86, 1340, 86, 1341, 1348, 1342, 86, 1343, - 86, 1347, 1350, 1351, 1352, 86, 1349, 1354, 86, 1353, - 86, 86, 86, 1356, 86, 86, 86, 1362, 86, 1357, + 86, 1302, 1298, 1303, 1307, 1305, 1306, 86, 86, 1308, + 86, 1310, 86, 1304, 86, 1309, 86, 1312, 1321, 160, + 1311, 86, 1338, 1320, 86, 1319, 1313, 86, 1322, 1314, + 1315, 86, 86, 1325, 1316, 86, 1323, 86, 86, 86, + 1317, 1324, 1326, 1327, 1318, 86, 1328, 86, 1330, 86, + 86, 86, 1331, 86, 1332, 86, 1329, 86, 86, 86, + 1340, 1341, 1335, 1337, 1412, 86, 86, 86, 86, 1334, + 1333, 86, 86, 1342, 1344, 1336, 1343, 1339, 86, 1345, + 86, 1346, 1352, 1347, 1353, 1348, 86, 1349, 1350, 1351, + 86, 86, 86, 1354, 1357, 86, 86, 86, 86, 1358, - 1358, 86, 1355, 86, 86, 1363, 1364, 86, 86, 1361, - 1365, 1359, 1366, 1360, 86, 1367, 86, 1368, 86, 1372, - 86, 86, 86, 1371, 1374, 86, 86, 1377, 86, 1376, - 86, 86, 1369, 1380, 86, 86, 1373, 1382, 86, 1379, - 1384, 1370, 86, 1383, 86, 86, 86, 1378, 1387, 86, - 86, 1381, 86, 86, 86, 1389, 86, 86, 86, 1391, - 86, 1397, 1393, 86, 1394, 1385, 1386, 1392, 86, 86, - 1388, 1395, 1396, 1390, 1399, 86, 86, 1398, 86, 86, - 86, 1401, 86, 1400, 1402, 86, 1403, 1404, 86, 1409, - 86, 86, 1410, 1408, 1406, 86, 1405, 1407, 86, 86, + 86, 1356, 1361, 86, 1359, 86, 86, 86, 1355, 1367, + 86, 1368, 1362, 86, 1363, 86, 86, 86, 1360, 86, + 86, 1366, 1364, 86, 1369, 1365, 86, 1370, 1371, 1373, + 86, 1372, 1377, 86, 86, 1376, 86, 1374, 1379, 86, + 86, 86, 1380, 86, 1381, 86, 1385, 86, 1382, 1378, + 86, 1375, 1387, 86, 1384, 1383, 86, 1388, 86, 86, + 86, 1392, 86, 1389, 86, 86, 86, 86, 1394, 86, + 1386, 86, 1396, 1398, 86, 86, 86, 86, 1397, 1400, + 1390, 1391, 1402, 86, 1393, 86, 1395, 86, 86, 86, + 1401, 86, 1399, 1404, 1406, 1405, 1407, 1403, 86, 1408, - 1412, 86, 86, 86, 1411, 167, 86, 1416, 86, 86, - 1413, 1417, 86, 1421, 1415, 86, 1422, 86, 1424, 86, - 1418, 1414, 86, 1423, 86, 86, 86, 1428, 86, 1419, - 86, 86, 1431, 86, 86, 1420, 86, 86, 86, 1425, - 1436, 86, 1429, 1435, 86, 1426, 1427, 86, 1430, 1438, - 1440, 86, 86, 1432, 1434, 1441, 86, 86, 86, 1433, - 1437, 1443, 86, 86, 86, 1444, 1439, 165, 86, 1442, - 86, 86, 1445, 1449, 86, 1456, 1450, 1446, 1447, 1451, - 86, 1448, 1452, 1454, 86, 1453, 1457, 86, 1455, 86, - 86, 1458, 86, 1459, 86, 86, 86, 86, 86, 1462, + 86, 86, 86, 1410, 1414, 1409, 1415, 1411, 86, 86, + 86, 1417, 86, 1416, 86, 1413, 86, 86, 1418, 1421, + 86, 86, 167, 86, 86, 1426, 1427, 1420, 86, 1429, + 86, 86, 86, 1419, 1428, 86, 86, 1423, 86, 86, + 86, 1422, 86, 1424, 1430, 86, 1436, 1425, 86, 86, + 1431, 1433, 1434, 86, 86, 86, 1432, 86, 1435, 1440, + 1441, 86, 1437, 86, 1445, 86, 86, 1439, 1443, 1446, + 86, 86, 86, 1438, 1444, 1447, 1442, 86, 86, 1450, + 1448, 1451, 86, 1454, 86, 1449, 1455, 1452, 86, 1459, + 1453, 1456, 86, 86, 1457, 86, 1462, 1460, 1458, 1461, - 1463, 86, 1465, 86, 86, 86, 1470, 86, 1461, 86, - 86, 1471, 86, 1460, 1464, 1467, 86, 1474, 1466, 86, - 86, 1468, 1469, 86, 1475, 86, 86, 1472, 86, 1473, - 86, 86, 86, 1477, 86, 1476, 1481, 1482, 86, 1480, - 1478, 1479, 86, 1483, 86, 1486, 1484, 1487, 86, 86, - 1489, 1485, 86, 1492, 1488, 1493, 86, 1491, 86, 86, - 1497, 86, 86, 1494, 86, 1495, 1496, 86, 86, 86, - 1490, 86, 86, 86, 1503, 86, 1499, 1498, 86, 1502, - 86, 86, 86, 1500, 1509, 86, 1501, 1506, 1505, 1510, - 86, 1511, 1507, 86, 1514, 1504, 1512, 86, 86, 86, + 86, 1463, 86, 86, 86, 86, 86, 86, 86, 86, + 1467, 1468, 86, 86, 1471, 86, 86, 86, 1476, 1464, + 86, 86, 1466, 86, 1477, 1469, 86, 1473, 1470, 1465, + 1480, 86, 1472, 1474, 1475, 86, 86, 86, 1481, 1478, + 86, 86, 1479, 86, 86, 86, 86, 86, 1487, 1483, + 1482, 1488, 1484, 86, 86, 1485, 1491, 86, 1489, 86, + 1486, 86, 1492, 1490, 1498, 1494, 86, 1496, 1499, 1493, + 86, 1497, 86, 1495, 86, 86, 1500, 86, 1501, 1502, + 86, 86, 86, 86, 86, 1503, 86, 86, 1509, 86, + 1505, 1504, 86, 1508, 86, 86, 86, 1506, 1515, 1507, - 1508, 86, 86, 86, 86, 1513, 1522, 1518, 86, 86, - 1517, 86, 86, 1525, 1523, 86, 86, 1515, 1516, 86, - 86, 86, 1519, 1528, 1520, 86, 1521, 1527, 86, 86, - 86, 86, 86, 86, 1526, 1529, 1542, 1524, 86, 1530, - 86, 1536, 86, 86, 1531, 1533, 1537, 1532, 1535, 86, - 1538, 1534, 1539, 86, 1540, 86, 86, 86, 86, 86, - 1549, 1541, 1543, 86, 1550, 1546, 1544, 86, 86, 1547, - 86, 1545, 1554, 86, 86, 1556, 86, 86, 86, 1555, - 86, 86, 1548, 1551, 86, 1559, 1553, 1552, 1560, 86, - 1558, 1557, 86, 1561, 86, 1565, 1566, 86, 1562, 86, + 1511, 1512, 86, 1516, 86, 1517, 86, 1520, 1513, 1510, + 1518, 86, 86, 86, 1514, 86, 86, 86, 86, 86, + 1528, 1524, 1519, 86, 1523, 86, 86, 1531, 1529, 86, + 86, 1521, 1522, 86, 86, 1534, 1525, 1527, 1526, 86, + 1533, 86, 86, 86, 86, 86, 86, 1542, 1532, 1535, + 86, 1530, 86, 1543, 86, 1545, 86, 158, 1536, 1539, + 86, 1537, 1538, 1546, 86, 1540, 1544, 1541, 86, 86, + 86, 86, 86, 1547, 1548, 86, 86, 1552, 1555, 86, + 1550, 1553, 1549, 86, 1556, 1551, 86, 1560, 86, 86, + 86, 1557, 1562, 86, 1554, 1561, 86, 86, 86, 86, - 86, 86, 86, 86, 1570, 1571, 86, 1569, 1573, 86, - 1563, 86, 86, 86, 1564, 1574, 86, 1567, 1575, 86, - 86, 1568, 86, 1578, 86, 86, 1572, 86, 1581, 1576, - 86, 86, 1577, 1580, 86, 86, 86, 1587, 86, 1585, - 1582, 86, 1579, 86, 86, 86, 1592, 1588, 86, 1586, - 1584, 1583, 86, 86, 86, 86, 1597, 86, 1590, 1589, - 1595, 86, 1593, 86, 1600, 1598, 86, 86, 1596, 1591, - 1594, 86, 86, 167, 1599, 1603, 86, 86, 1602, 1606, - 86, 1605, 86, 86, 86, 86, 86, 1614, 1601, 1607, - 86, 1604, 86, 86, 86, 1608, 1609, 1615, 1612, 1618, + 86, 1565, 1559, 1558, 1563, 86, 1564, 86, 1571, 1566, + 86, 1567, 1572, 86, 86, 86, 86, 1568, 1569, 1570, + 1577, 1575, 86, 1576, 86, 86, 86, 86, 1573, 1579, + 86, 86, 1581, 86, 1580, 86, 1574, 86, 1584, 86, + 86, 1582, 86, 1583, 1578, 86, 1587, 86, 1586, 86, + 86, 86, 1593, 86, 1591, 1588, 86, 1585, 86, 86, + 86, 1598, 1594, 1589, 1592, 86, 1590, 86, 86, 86, + 86, 1603, 86, 1596, 1595, 1601, 86, 86, 1606, 1599, + 1604, 86, 86, 1602, 1597, 1600, 86, 86, 167, 1605, + 1609, 86, 86, 1608, 1612, 86, 1611, 86, 86, 86, - 86, 86, 1610, 1611, 86, 1619, 1621, 86, 86, 1623, - 1613, 1625, 1622, 1616, 1617, 86, 86, 86, 1627, 86, - 86, 1620, 86, 86, 86, 86, 1632, 1630, 1624, 1629, - 1626, 86, 1633, 86, 86, 86, 86, 86, 86, 1628, - 1637, 86, 1638, 86, 86, 1645, 86, 1634, 1631, 1646, - 1636, 86, 1635, 86, 1639, 1640, 1642, 86, 1641, 1643, - 1647, 86, 86, 86, 1661, 86, 86, 1650, 1652, 1654, - 1649, 1644, 1653, 86, 86, 86, 1648, 86, 1656, 1655, - 86, 1657, 86, 1658, 86, 1662, 86, 1659, 1651, 86, - 86, 86, 1665, 1664, 1666, 1668, 1667, 1660, 86, 86, + 86, 86, 1620, 1607, 1613, 86, 1610, 86, 86, 86, + 1614, 1615, 1621, 1618, 1624, 86, 86, 1616, 1617, 86, + 1625, 1627, 86, 86, 1629, 1619, 1631, 1628, 1622, 1623, + 86, 86, 86, 1633, 86, 86, 1626, 86, 86, 86, + 86, 1638, 1636, 1630, 1635, 1632, 86, 1639, 86, 86, + 86, 86, 86, 86, 1634, 1643, 86, 1644, 86, 86, + 1651, 86, 1640, 1637, 1652, 1642, 86, 1641, 86, 1645, + 1646, 1648, 86, 1647, 1649, 1653, 86, 86, 86, 1668, + 86, 86, 1656, 1658, 1660, 1655, 1650, 1659, 86, 1661, + 86, 1654, 86, 86, 1663, 86, 1665, 1662, 86, 1664, - 86, 86, 86, 1671, 86, 86, 1663, 1670, 86, 86, - 1672, 86, 86, 86, 86, 1681, 86, 86, 86, 86, - 86, 86, 1669, 86, 1678, 86, 1673, 1676, 1677, 1674, - 1679, 1675, 1680, 86, 1684, 86, 1682, 1683, 1686, 86, - 1688, 86, 1689, 86, 1685, 1687, 86, 86, 1690, 86, - 86, 86, 86, 86, 163, 86, 86, 1691, 1694, 1696, - 86, 1704, 86, 1703, 1697, 1693, 1695, 1698, 86, 1699, - 1692, 1700, 1705, 86, 86, 1702, 1701, 86, 86, 86, - 1706, 1708, 1709, 86, 86, 86, 86, 86, 86, 1712, - 1710, 1713, 1707, 86, 86, 1721, 86, 1716, 1711, 86, + 86, 86, 86, 1657, 86, 1666, 86, 86, 86, 1672, + 1671, 1673, 1675, 1674, 1667, 86, 86, 86, 86, 86, + 1678, 86, 86, 1669, 1677, 86, 1670, 1679, 86, 86, + 86, 86, 1688, 86, 86, 86, 86, 86, 86, 1676, + 86, 86, 86, 1680, 1683, 1684, 1685, 1686, 1681, 1682, + 1687, 1693, 86, 1689, 1691, 86, 1690, 1697, 86, 86, + 1696, 86, 1692, 1695, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 3147, 1710, 1694, 1701, 1703, 1698, 86, + 86, 1702, 86, 1700, 1706, 1699, 86, 1707, 1704, 1711, + 86, 1705, 1708, 1717, 1709, 1712, 86, 86, 1713, 86, - 86, 86, 86, 1715, 1714, 1718, 1722, 86, 1719, 1720, - 86, 86, 1717, 86, 1723, 1724, 86, 1725, 86, 86, - 1731, 86, 86, 86, 1726, 1728, 86, 1727, 1734, 86, - 1735, 1733, 86, 86, 86, 1737, 1730, 1732, 1738, 1739, - 86, 1729, 1743, 86, 1736, 86, 86, 1744, 86, 1749, - 1740, 86, 86, 1752, 1741, 86, 1748, 1745, 1742, 86, - 1746, 1751, 86, 86, 86, 1754, 86, 86, 1747, 1753, - 1750, 86, 1755, 1758, 86, 86, 1762, 86, 1760, 86, - 86, 1757, 86, 1756, 1761, 1763, 86, 1759, 86, 86, - 86, 86, 86, 86, 1772, 86, 1766, 86, 1767, 1764, + 1714, 86, 1715, 1716, 86, 86, 1719, 86, 86, 86, + 1720, 86, 86, 86, 1728, 86, 1718, 86, 1723, 86, + 86, 1727, 1725, 86, 1722, 1726, 1721, 1729, 86, 86, + 1724, 1733, 1731, 86, 86, 1730, 86, 86, 1738, 86, + 86, 1732, 86, 86, 86, 1734, 1735, 1741, 1746, 1740, + 86, 1742, 86, 1744, 1737, 1739, 1745, 86, 1736, 86, + 86, 1750, 86, 86, 86, 1743, 1751, 86, 1755, 1756, + 1747, 86, 1758, 86, 1752, 86, 1759, 1749, 1748, 1753, + 86, 1761, 86, 86, 1754, 1760, 86, 86, 86, 1757, + 1765, 86, 1762, 1769, 86, 86, 86, 86, 86, 86, - 1777, 86, 1774, 1768, 1769, 1765, 1770, 1771, 86, 1775, - 1776, 86, 86, 86, 86, 86, 1773, 1782, 86, 86, - 86, 1786, 86, 86, 86, 86, 86, 1781, 86, 1788, - 1779, 1778, 1780, 1789, 86, 1784, 86, 86, 1785, 1790, - 1783, 1791, 167, 86, 1787, 86, 1792, 1796, 86, 1793, - 86, 86, 1800, 86, 1794, 86, 86, 86, 1795, 86, - 86, 86, 1798, 1802, 1797, 86, 86, 1807, 86, 1801, - 1799, 1803, 1804, 86, 1810, 162, 1805, 1808, 1811, 86, - 86, 1806, 86, 1812, 1809, 1813, 86, 1814, 86, 1816, - 1817, 86, 86, 86, 86, 86, 1819, 1815, 86, 86, + 1767, 86, 1764, 1763, 1766, 86, 1768, 86, 86, 1770, + 86, 1775, 86, 1771, 1772, 1773, 1781, 1774, 1776, 1779, + 86, 1782, 86, 86, 1777, 86, 1778, 86, 1784, 86, + 86, 86, 1789, 86, 86, 86, 1783, 86, 86, 1793, + 86, 1780, 86, 86, 86, 1785, 1788, 1795, 1786, 1796, + 1787, 1791, 86, 86, 86, 1792, 1790, 1797, 1798, 86, + 167, 86, 1794, 1799, 1803, 86, 86, 86, 86, 1807, + 86, 86, 1801, 86, 86, 86, 1802, 86, 1809, 1805, + 86, 86, 1800, 86, 1814, 1804, 3147, 1806, 1808, 1810, + 86, 86, 1811, 1813, 1812, 1815, 86, 1817, 86, 1816, - 86, 1820, 86, 86, 1818, 86, 86, 86, 1825, 86, - 1826, 86, 86, 1821, 86, 1827, 1830, 86, 1823, 1828, - 1824, 1822, 1834, 1831, 1829, 86, 86, 1838, 86, 1835, - 1836, 1839, 1833, 86, 86, 86, 1832, 86, 86, 160, - 86, 1837, 1844, 86, 86, 1847, 1848, 86, 1849, 86, - 86, 1842, 86, 1841, 1840, 1851, 86, 1845, 1843, 1846, - 86, 1852, 86, 1855, 86, 86, 1857, 86, 86, 1856, - 1850, 1858, 86, 1853, 1859, 1861, 86, 1864, 86, 86, - 86, 86, 1863, 1854, 86, 1860, 86, 1865, 1867, 1866, - 86, 86, 86, 1874, 86, 86, 86, 86, 86, 86, + 1818, 86, 86, 1820, 86, 1819, 86, 1822, 1823, 1824, + 86, 1821, 86, 86, 86, 1826, 86, 86, 1829, 1827, + 86, 86, 86, 86, 1825, 86, 86, 1832, 1833, 86, + 86, 1837, 86, 86, 1834, 86, 86, 1828, 1830, 1831, + 1841, 1835, 1838, 86, 86, 1836, 86, 1842, 1843, 1845, + 86, 1844, 1840, 1846, 86, 1839, 86, 86, 86, 86, + 1852, 86, 86, 86, 1855, 1847, 1849, 1856, 86, 1857, + 86, 86, 1850, 1848, 1859, 86, 1853, 1851, 1854, 86, + 1860, 1858, 86, 1863, 86, 86, 86, 1865, 86, 1864, + 1867, 1866, 1861, 86, 1869, 86, 86, 86, 86, 86, - 1876, 1862, 1868, 1869, 1870, 1877, 86, 86, 1880, 1871, - 1878, 1872, 1873, 1881, 86, 1875, 1879, 1882, 86, 86, - 1886, 86, 86, 86, 86, 1888, 86, 1883, 1885, 86, - 86, 1891, 1892, 86, 86, 1894, 86, 86, 86, 1884, - 86, 86, 86, 86, 1899, 86, 1889, 1896, 1887, 1897, - 86, 1890, 1900, 86, 1893, 86, 1902, 86, 86, 86, - 1906, 86, 1895, 1898, 1901, 1903, 1904, 86, 1910, 86, - 1913, 1905, 1909, 86, 86, 86, 86, 1908, 1914, 86, - 1912, 1907, 1915, 86, 86, 86, 86, 86, 1917, 1911, - 1916, 86, 86, 86, 1921, 1918, 86, 1924, 1925, 1920, + 86, 1871, 1874, 1862, 1868, 1872, 86, 86, 1873, 1875, + 86, 1876, 1877, 1878, 86, 86, 1882, 86, 1879, 1884, + 1870, 86, 86, 86, 1885, 86, 86, 86, 1887, 86, + 1880, 86, 1891, 1890, 1881, 1886, 86, 1883, 1888, 86, + 1894, 86, 86, 86, 1889, 86, 1896, 86, 86, 1899, + 86, 1892, 1900, 86, 1902, 86, 86, 1893, 86, 86, + 1907, 86, 86, 1897, 1908, 86, 86, 1904, 1895, 1898, + 1901, 1905, 86, 86, 86, 86, 86, 86, 1914, 86, + 1906, 1903, 1909, 1911, 1912, 86, 1918, 1910, 86, 86, + 1917, 1921, 86, 1923, 86, 1916, 1920, 86, 1922, 1913, - 1926, 86, 86, 86, 86, 1919, 86, 1929, 86, 86, - 1922, 86, 1934, 86, 86, 86, 1933, 1928, 86, 1923, - 86, 1927, 86, 1930, 1938, 86, 86, 86, 1931, 86, - 1936, 1932, 1939, 1935, 1940, 1941, 86, 1937, 86, 86, - 1943, 1948, 1942, 1945, 86, 1944, 86, 86, 1946, 86, - 1952, 1949, 86, 1947, 86, 86, 86, 1954, 1955, 86, - 86, 1956, 86, 1958, 86, 86, 1957, 1950, 86, 1951, - 1953, 1962, 86, 1963, 86, 1959, 1964, 1966, 1967, 86, - 1960, 1965, 86, 86, 86, 1961, 86, 86, 86, 1971, - 86, 1969, 86, 86, 1968, 86, 1973, 1976, 86, 1970, + 1915, 86, 86, 86, 86, 86, 1924, 86, 1919, 86, + 86, 1925, 1929, 86, 86, 1932, 1933, 86, 86, 1928, + 1934, 86, 86, 1926, 1927, 1937, 86, 86, 1930, 86, + 86, 1942, 86, 1936, 86, 1941, 86, 1935, 86, 1931, + 86, 1938, 86, 86, 86, 1948, 1946, 1939, 1950, 1947, + 86, 1940, 86, 1943, 86, 1944, 86, 1945, 1949, 86, + 86, 1951, 1953, 86, 86, 1957, 1952, 86, 1955, 86, + 1960, 86, 86, 1954, 1962, 1956, 86, 1963, 86, 86, + 1964, 86, 86, 1967, 1958, 1965, 1961, 1959, 1968, 86, + 86, 1966, 1970, 86, 1971, 86, 1972, 1974, 1975, 86, - 1972, 1978, 1974, 86, 1975, 167, 86, 86, 86, 86, - 1979, 86, 1985, 86, 1983, 1977, 1984, 1982, 1980, 86, - 1981, 1986, 86, 1987, 86, 1989, 86, 86, 86, 86, - 158, 86, 1990, 1991, 86, 1992, 1993, 86, 86, 1988, - 86, 1995, 1994, 86, 1997, 86, 1996, 86, 86, 2001, - 86, 86, 1998, 2000, 86, 86, 2002, 1999, 86, 2003, - 2004, 2005, 2006, 86, 86, 86, 86, 86, 86, 86, - 2013, 2007, 2011, 2008, 2012, 86, 86, 86, 86, 86, - 2018, 2017, 86, 2009, 86, 2010, 2015, 86, 86, 86, - 2022, 2019, 86, 2014, 86, 86, 2016, 2021, 86, 2024, + 86, 1973, 86, 86, 86, 1977, 1979, 86, 86, 1969, + 86, 1978, 86, 86, 1981, 1984, 1976, 86, 1986, 1980, + 1982, 86, 167, 86, 86, 86, 86, 1987, 86, 86, + 86, 1993, 1992, 1991, 86, 1988, 3147, 1989, 1983, 1985, + 1994, 86, 1995, 86, 1997, 1990, 86, 86, 86, 86, + 86, 86, 1998, 1999, 1996, 2000, 2001, 86, 86, 86, + 2005, 2003, 2002, 2004, 86, 86, 86, 2009, 86, 86, + 86, 2008, 2014, 86, 86, 2011, 2006, 2007, 2010, 2012, + 86, 86, 86, 2013, 86, 86, 86, 86, 2021, 86, + 2019, 2016, 2020, 86, 86, 86, 86, 86, 86, 2026, - 2020, 2023, 86, 2026, 86, 2025, 86, 2027, 2028, 86, - 86, 2030, 86, 2029, 86, 2034, 86, 2036, 2031, 2032, - 2033, 86, 86, 86, 2037, 2038, 86, 86, 86, 2035, - 86, 2039, 86, 2043, 2040, 86, 2041, 86, 86, 2044, - 86, 86, 86, 86, 86, 86, 86, 86, 2042, 2046, - 2047, 2051, 2048, 2055, 86, 86, 2045, 2050, 2054, 86, - 86, 86, 2056, 2053, 2052, 86, 2059, 2049, 2058, 86, - 86, 86, 2062, 86, 2061, 2057, 2064, 86, 2063, 2060, - 2065, 86, 86, 86, 86, 86, 2066, 2070, 86, 86, - 2072, 2068, 86, 2074, 86, 2069, 86, 86, 86, 2067, + 86, 2015, 2017, 86, 2018, 2023, 3147, 2022, 86, 2025, + 2027, 2024, 2029, 86, 2030, 2028, 86, 2031, 86, 86, + 2033, 2034, 86, 86, 2035, 2037, 86, 2032, 86, 86, + 86, 2038, 86, 86, 2043, 2036, 86, 2045, 86, 2039, + 86, 86, 86, 2046, 2042, 2040, 2048, 2041, 2047, 86, + 2044, 86, 86, 86, 2052, 86, 86, 86, 2049, 86, + 86, 86, 86, 86, 2050, 2053, 86, 86, 86, 2055, + 86, 2056, 2051, 2057, 2060, 86, 2054, 2059, 2063, 2064, + 86, 86, 86, 2062, 2067, 2065, 2058, 2061, 86, 86, + 2066, 86, 86, 2068, 2070, 2069, 86, 2073, 2071, 86, - 2077, 2076, 2078, 2071, 86, 86, 2073, 86, 2082, 2079, - 86, 86, 86, 86, 86, 2075, 2083, 86, 2085, 2088, - 86, 86, 2089, 2080, 86, 2084, 86, 2081, 2092, 86, - 86, 2087, 2086, 86, 86, 2093, 86, 86, 2094, 2090, - 86, 2096, 2098, 86, 86, 2100, 2091, 2095, 86, 2097, - 86, 2101, 2099, 86, 86, 2104, 86, 2102, 2103, 86, - 86, 2107, 2109, 2105, 86, 86, 2106, 2110, 86, 2111, - 86, 86, 86, 86, 86, 86, 2112, 2108, 2114, 2115, - 86, 2118, 2113, 86, 2116, 2117, 2119, 86, 86, 86, - 86, 86, 86, 2120, 86, 86, 86, 2128, 2121, 2122, + 2072, 86, 86, 86, 86, 86, 2074, 2079, 86, 2076, + 2075, 2077, 86, 86, 2081, 2078, 2083, 86, 86, 86, + 2086, 86, 2082, 2080, 2085, 86, 2087, 86, 86, 2091, + 2088, 86, 86, 86, 86, 86, 2092, 86, 86, 2084, + 2094, 2097, 86, 86, 2098, 2089, 2093, 86, 2090, 2101, + 86, 2096, 86, 2095, 86, 86, 2103, 2102, 2100, 86, + 2107, 86, 2099, 86, 86, 86, 2109, 2105, 2104, 86, + 2110, 86, 2111, 86, 86, 2106, 2108, 86, 2112, 2116, + 86, 86, 2118, 2114, 86, 86, 2115, 2119, 86, 2113, + 2120, 86, 86, 86, 86, 86, 2121, 2122, 2123, 2124, - 2129, 86, 2123, 2125, 2124, 2130, 2126, 2131, 86, 86, - 2127, 86, 86, 86, 2133, 86, 2139, 86, 86, 167, - 2132, 2141, 86, 86, 2138, 86, 2135, 2140, 86, 2143, - 2136, 86, 2134, 2144, 2147, 86, 86, 2149, 2137, 2148, - 86, 2146, 2142, 86, 2145, 2150, 86, 86, 2191, 2151, - 86, 86, 2154, 86, 86, 2152, 2153, 86, 2155, 2158, - 2159, 86, 86, 2160, 86, 2163, 2161, 86, 86, 86, - 2165, 86, 2156, 2164, 2166, 86, 86, 86, 2168, 86, - 86, 2167, 2162, 2157, 86, 86, 86, 2170, 86, 2169, - 2171, 86, 86, 2174, 86, 86, 86, 2172, 86, 2177, + 86, 2117, 2128, 86, 2125, 86, 86, 86, 86, 2127, + 86, 86, 2126, 2129, 86, 86, 86, 86, 86, 86, + 2134, 2132, 2131, 2130, 2137, 2133, 2135, 86, 86, 86, + 86, 2136, 2138, 2144, 2145, 2140, 2142, 2139, 2143, 86, + 86, 86, 2146, 2148, 86, 2150, 86, 86, 2141, 2147, + 2149, 2152, 86, 86, 167, 2156, 2158, 2153, 2151, 2159, + 2157, 86, 86, 86, 86, 86, 2154, 2160, 86, 2163, + 86, 2161, 86, 2164, 86, 3147, 2155, 2168, 86, 86, + 2169, 86, 86, 2167, 2172, 86, 86, 2165, 2162, 2178, + 86, 2173, 86, 2170, 86, 2174, 2175, 86, 2166, 86, - 86, 2183, 86, 2175, 2173, 2181, 2176, 86, 86, 86, - 2178, 2179, 2184, 86, 2186, 86, 2180, 86, 86, 86, - 2182, 86, 2185, 2190, 2193, 86, 86, 2188, 86, 2194, - 86, 86, 86, 86, 86, 86, 2189, 2192, 86, 2187, - 2204, 86, 86, 2205, 86, 2195, 2201, 2196, 86, 86, - 86, 2199, 2206, 2197, 2200, 2198, 2202, 2203, 2208, 86, - 2210, 2207, 86, 2209, 2211, 86, 2212, 86, 86, 86, - 2215, 86, 2218, 86, 86, 86, 86, 2213, 86, 2219, - 2216, 2214, 86, 2217, 2224, 86, 86, 2220, 2225, 86, - 2223, 2227, 86, 86, 86, 2221, 2222, 2229, 86, 86, + 2171, 2177, 86, 86, 2176, 86, 2180, 86, 86, 86, + 86, 86, 2179, 2183, 86, 86, 2186, 86, 86, 2190, + 86, 2192, 86, 2181, 86, 2185, 86, 86, 2193, 86, + 2182, 86, 2184, 2187, 2188, 86, 2195, 2189, 86, 86, + 86, 2194, 2191, 86, 2200, 2197, 86, 2198, 2199, 2203, + 86, 86, 86, 2196, 2204, 86, 2201, 86, 2202, 86, + 86, 86, 86, 2214, 86, 86, 3147, 86, 2216, 86, + 2205, 2206, 86, 2211, 2215, 86, 3147, 86, 2207, 2209, + 2210, 2208, 2213, 2212, 86, 2217, 86, 2220, 86, 2218, + 2219, 2221, 86, 2222, 86, 86, 2225, 86, 86, 2223, - 2232, 86, 2233, 86, 2231, 2226, 86, 86, 86, 2230, - 86, 2228, 86, 2239, 86, 86, 2235, 2238, 2241, 86, - 2234, 86, 2236, 86, 86, 86, 2244, 86, 2245, 2237, - 2243, 2247, 86, 86, 2240, 86, 2251, 86, 86, 2242, - 86, 86, 86, 2246, 2248, 86, 2255, 86, 2249, 2256, - 86, 86, 2258, 86, 2250, 86, 2254, 86, 2252, 2261, - 86, 86, 86, 2253, 2257, 86, 2259, 86, 2260, 2263, - 86, 2264, 86, 2268, 86, 2262, 86, 2271, 86, 2265, - 2270, 86, 2274, 2266, 86, 2269, 2275, 86, 86, 2276, - 86, 86, 2272, 2267, 2273, 86, 2280, 86, 86, 86, + 86, 2224, 2228, 86, 86, 2229, 2226, 86, 86, 2227, + 2234, 86, 2230, 2235, 86, 86, 2237, 86, 2231, 86, + 2233, 2239, 86, 86, 2232, 86, 2242, 86, 2243, 86, + 2241, 86, 86, 86, 2236, 86, 86, 2238, 2240, 86, + 86, 2245, 2249, 86, 2248, 2244, 86, 2246, 2251, 86, + 86, 86, 2253, 2254, 2247, 2250, 86, 2255, 2252, 2257, + 86, 86, 86, 2261, 86, 86, 86, 86, 86, 86, + 2258, 86, 2256, 2265, 2266, 86, 2259, 86, 86, 2271, + 86, 2260, 2264, 2268, 86, 2262, 2269, 2267, 86, 2263, + 86, 86, 2270, 86, 86, 2273, 86, 2278, 86, 86, - 2285, 2278, 2282, 2283, 86, 86, 86, 2287, 86, 86, - 2288, 2279, 2277, 86, 2284, 86, 86, 86, 86, 2292, - 2289, 2281, 2291, 86, 86, 2286, 2293, 2294, 86, 2298, - 2299, 86, 2295, 2290, 3136, 86, 86, 2296, 2297, 86, - 86, 86, 2303, 2300, 2304, 86, 2305, 167, 86, 2302, - 86, 2301, 2307, 86, 2306, 86, 2312, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 3136, 2319, 2308, 2310, - 2309, 2311, 2314, 2313, 2315, 2316, 2317, 2318, 86, 86, - 2321, 2323, 86, 2320, 86, 2324, 2325, 86, 86, 86, - 2328, 2322, 2326, 2327, 2329, 86, 86, 2331, 86, 86, + 86, 2280, 86, 86, 2272, 2274, 2281, 2279, 2275, 86, + 86, 2276, 2284, 86, 2285, 2286, 86, 86, 86, 86, + 2277, 2282, 2290, 2283, 2292, 86, 2288, 2287, 86, 2295, + 2293, 86, 2297, 86, 86, 86, 86, 2289, 86, 2298, + 86, 2299, 86, 2294, 2291, 2302, 86, 86, 86, 86, + 86, 86, 2296, 2301, 2308, 2303, 2304, 2305, 2300, 2306, + 86, 2309, 86, 2307, 86, 86, 2310, 86, 86, 2313, + 2314, 2311, 167, 2312, 86, 2315, 86, 2317, 86, 86, + 2322, 86, 86, 2316, 86, 2318, 86, 2319, 86, 86, + 86, 86, 86, 2324, 2320, 2321, 86, 2323, 2325, 2329, - 86, 86, 2333, 86, 2330, 86, 86, 86, 2337, 86, - 2338, 86, 86, 2332, 86, 2334, 86, 2340, 2341, 2335, - 2345, 86, 86, 2339, 2342, 2336, 2343, 86, 86, 86, - 86, 2348, 86, 2344, 2347, 86, 86, 86, 86, 86, - 86, 2350, 2346, 2354, 86, 86, 86, 2357, 2349, 2351, - 2356, 86, 2353, 86, 86, 86, 86, 2352, 2360, 2362, - 2355, 2358, 2359, 2363, 2364, 86, 86, 2361, 2365, 86, - 86, 2367, 86, 86, 86, 2368, 86, 2370, 2371, 2366, - 2372, 86, 2374, 86, 86, 86, 86, 2376, 86, 86, - 86, 86, 86, 2373, 2375, 86, 2380, 2384, 86, 2369, + 86, 2328, 86, 86, 2326, 2327, 2336, 2330, 2333, 86, + 2370, 2331, 2332, 86, 2334, 2335, 86, 86, 2338, 2339, + 86, 86, 2337, 86, 86, 86, 2341, 86, 86, 2340, + 86, 2343, 86, 86, 2347, 2342, 2348, 2345, 86, 86, + 2344, 86, 86, 86, 2350, 2351, 2352, 2353, 86, 86, + 86, 2346, 2349, 86, 2354, 2355, 86, 86, 86, 2356, + 86, 2358, 2359, 86, 86, 2361, 86, 86, 86, 86, + 86, 2360, 2365, 2357, 2368, 2367, 86, 86, 86, 2374, + 86, 2364, 2369, 86, 2362, 86, 2363, 86, 2373, 2366, + 2371, 86, 86, 2372, 2376, 2375, 86, 2378, 86, 86, - 2382, 86, 2377, 2378, 86, 2386, 2379, 2385, 86, 2383, - 86, 86, 86, 2387, 86, 86, 86, 2388, 2381, 2390, - 2393, 86, 86, 2395, 86, 86, 2398, 86, 2392, 86, - 86, 2394, 2389, 2399, 2391, 86, 86, 86, 86, 2402, - 2397, 2404, 2396, 2403, 86, 86, 86, 86, 86, 86, - 2408, 2407, 86, 86, 2400, 2401, 2406, 86, 86, 86, - 3136, 2411, 2412, 2405, 2414, 86, 2409, 2410, 2415, 86, - 2416, 86, 2417, 86, 2418, 86, 86, 2419, 2413, 86, - 86, 2422, 86, 2423, 2421, 86, 86, 86, 86, 2428, - 86, 86, 2430, 86, 2420, 2431, 86, 2424, 2425, 86, + 86, 2379, 86, 2381, 2382, 2377, 2383, 86, 2385, 86, + 86, 86, 86, 2387, 86, 86, 86, 86, 86, 2384, + 2386, 86, 2391, 2395, 86, 2380, 2393, 86, 2388, 2389, + 86, 2397, 2390, 2396, 86, 2394, 86, 86, 86, 2398, + 86, 86, 86, 2399, 2392, 2401, 2404, 86, 86, 2406, + 86, 86, 2409, 86, 2403, 86, 86, 2405, 2400, 2410, + 2402, 86, 86, 86, 86, 2413, 2408, 2415, 2407, 2414, + 86, 86, 86, 86, 86, 86, 2419, 2418, 86, 86, + 2411, 2412, 2417, 86, 86, 86, 3147, 2422, 2423, 2416, + 2425, 86, 2420, 2421, 2426, 86, 2427, 86, 2428, 86, - 86, 86, 86, 86, 2427, 86, 2434, 2426, 86, 86, - 2429, 2432, 86, 2433, 2435, 2440, 86, 2437, 2441, 86, - 86, 86, 86, 2436, 86, 2438, 86, 167, 2439, 86, - 2448, 86, 86, 86, 2444, 2449, 86, 86, 2446, 2447, - 2443, 86, 86, 3136, 2455, 2442, 2445, 2450, 2451, 2452, - 86, 86, 86, 2459, 86, 2457, 2456, 2458, 2453, 86, - 2454, 2460, 86, 86, 2461, 86, 2462, 86, 2463, 2464, - 2465, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 2474, 86, 86, 86, 2496, 2472, 2467, 86, 2478, - 2466, 86, 2469, 2468, 2479, 86, 2471, 2470, 2473, 86, + 2429, 86, 86, 2430, 2424, 86, 86, 2433, 86, 2434, + 2432, 86, 86, 86, 86, 2439, 86, 86, 2441, 86, + 2431, 2442, 86, 2435, 2436, 86, 86, 86, 86, 86, + 2438, 86, 2445, 2437, 86, 86, 2440, 2443, 86, 2444, + 2446, 2451, 86, 2448, 2452, 86, 86, 86, 86, 2447, + 86, 2449, 86, 167, 2450, 86, 2459, 86, 86, 86, + 2455, 2460, 86, 86, 2457, 2458, 2454, 86, 86, 3147, + 2466, 2453, 2456, 2461, 2462, 2463, 86, 86, 86, 2470, + 86, 2468, 2467, 2469, 2464, 86, 2465, 2471, 86, 86, + 2472, 86, 2473, 86, 2474, 2475, 2476, 86, 86, 86, - 2475, 2476, 2477, 86, 2480, 2482, 86, 86, 2481, 2484, - 86, 86, 2483, 86, 86, 86, 86, 86, 86, 86, - 2487, 2493, 86, 2494, 86, 2485, 2495, 86, 86, 2486, - 2488, 86, 2489, 2491, 2490, 86, 2500, 2492, 2499, 86, - 86, 86, 86, 2504, 2505, 86, 2497, 2503, 86, 86, - 2498, 2506, 2507, 86, 86, 86, 86, 86, 86, 2501, - 2502, 86, 86, 2509, 86, 86, 2513, 2508, 2511, 86, - 2518, 86, 2517, 86, 2510, 2521, 86, 2512, 2514, 86, - 2519, 2515, 86, 2522, 2516, 86, 2525, 86, 86, 2524, - 86, 2520, 86, 86, 2530, 86, 86, 2523, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 2485, 86, 86, + 86, 2507, 2483, 2478, 86, 2489, 2477, 86, 2480, 2479, + 2490, 86, 2482, 2481, 2484, 86, 2486, 2487, 2488, 86, + 2491, 2493, 86, 86, 2492, 2495, 86, 86, 2494, 86, + 86, 86, 86, 86, 86, 86, 2498, 2504, 86, 2505, + 86, 2496, 2506, 86, 86, 2497, 2499, 86, 2500, 2502, + 2501, 86, 2511, 2503, 2510, 86, 86, 86, 86, 2515, + 2516, 86, 2508, 2514, 86, 86, 2509, 2517, 2518, 86, + 86, 86, 86, 86, 86, 2512, 2513, 86, 86, 2520, + 86, 86, 2524, 2519, 2522, 86, 2529, 86, 2528, 86, - 86, 2526, 86, 2533, 86, 2527, 86, 2532, 2531, 2534, - 86, 2537, 2528, 2529, 2536, 86, 86, 86, 2539, 2535, - 2541, 86, 86, 2542, 86, 2538, 2543, 2544, 86, 2540, - 86, 86, 86, 2549, 86, 86, 86, 2545, 2551, 86, - 2547, 2548, 86, 2546, 86, 86, 86, 2552, 86, 2553, - 2550, 2555, 86, 86, 86, 2557, 2556, 86, 86, 2554, - 86, 2558, 2559, 2561, 86, 2562, 2564, 86, 2560, 2565, - 86, 2567, 2563, 2566, 167, 86, 86, 86, 2571, 3136, - 2568, 86, 86, 2573, 86, 86, 2572, 86, 2576, 86, - 2577, 86, 2575, 86, 2569, 2570, 2579, 86, 86, 2581, + 2521, 2532, 86, 2523, 2525, 86, 2530, 2526, 86, 2533, + 2527, 86, 2536, 86, 86, 2535, 86, 2531, 86, 86, + 2541, 86, 86, 2534, 86, 86, 86, 2537, 86, 2544, + 86, 2538, 86, 2543, 2542, 2545, 86, 2548, 2539, 2540, + 2547, 86, 86, 86, 2550, 2546, 2552, 86, 86, 2553, + 86, 2549, 2554, 2555, 86, 2551, 86, 86, 86, 2560, + 86, 86, 86, 2556, 2562, 86, 2558, 2559, 86, 2557, + 86, 86, 86, 2563, 86, 2564, 2561, 2566, 86, 86, + 86, 2568, 2567, 86, 86, 2565, 86, 2569, 2570, 2572, + 86, 2573, 2575, 86, 2571, 2576, 86, 2578, 2574, 2577, - 2574, 2580, 86, 86, 2582, 86, 2578, 2583, 2584, 86, - 2586, 86, 86, 86, 86, 2587, 86, 2588, 86, 86, - 86, 2593, 2589, 2585, 2594, 2595, 2591, 86, 86, 2590, - 86, 86, 86, 2597, 86, 2598, 86, 86, 86, 86, - 2592, 2600, 2601, 2596, 86, 86, 2599, 86, 2606, 86, - 86, 86, 2603, 2604, 2605, 86, 2602, 86, 2607, 2611, - 86, 86, 86, 2615, 86, 86, 86, 86, 86, 2608, - 2613, 2609, 2619, 86, 2610, 3136, 2612, 2614, 2620, 86, - 2622, 2617, 2623, 2624, 2616, 86, 86, 2618, 86, 86, - 2625, 86, 86, 2626, 86, 86, 86, 2627, 2621, 86, + 167, 86, 86, 86, 2582, 3147, 2579, 86, 86, 2584, + 86, 86, 2583, 86, 2587, 86, 2588, 86, 2586, 86, + 2580, 2581, 2590, 86, 86, 2592, 2585, 2591, 86, 86, + 2593, 86, 2589, 2594, 2595, 86, 2597, 86, 86, 86, + 86, 2598, 86, 2599, 86, 86, 86, 2604, 2600, 2596, + 2605, 2606, 2602, 86, 86, 2601, 86, 86, 86, 2608, + 86, 2609, 86, 86, 86, 86, 2603, 2611, 2612, 2607, + 86, 86, 2610, 86, 2617, 86, 86, 86, 2614, 2615, + 2616, 86, 2613, 86, 2618, 2622, 86, 86, 86, 2626, + 86, 86, 86, 86, 86, 2619, 2624, 2620, 2630, 86, - 2630, 86, 86, 2628, 86, 2633, 2635, 86, 2629, 2636, - 86, 2637, 86, 2631, 86, 86, 2632, 86, 2638, 86, - 2634, 86, 2639, 2640, 86, 86, 2642, 2644, 86, 2647, - 86, 2643, 2645, 86, 86, 2641, 2648, 86, 2649, 86, - 86, 86, 86, 2650, 86, 2646, 86, 2651, 2652, 2654, - 86, 86, 2655, 2656, 86, 2658, 86, 2657, 86, 2659, - 2662, 2653, 2660, 2663, 86, 86, 86, 86, 2665, 2664, - 86, 86, 2661, 2666, 86, 86, 2670, 2671, 86, 86, - 86, 2674, 86, 86, 2673, 86, 86, 86, 86, 2677, - 2667, 2668, 2675, 2676, 86, 2669, 86, 2679, 86, 2680, + 2621, 3147, 2623, 2625, 2631, 86, 2633, 2628, 2634, 2635, + 2627, 86, 86, 2629, 86, 86, 2636, 86, 86, 2637, + 86, 86, 86, 2638, 2632, 86, 2641, 86, 86, 2639, + 86, 2644, 2646, 86, 2640, 2647, 86, 2648, 86, 2642, + 86, 86, 2643, 86, 2649, 86, 2645, 86, 2650, 2651, + 86, 86, 2653, 2655, 86, 2658, 86, 2654, 2656, 86, + 86, 2652, 2659, 86, 2660, 86, 86, 86, 86, 2661, + 86, 2657, 86, 2662, 2663, 2665, 86, 86, 2666, 2667, + 86, 2669, 86, 2668, 86, 2670, 2673, 2664, 2671, 2674, + 86, 86, 86, 86, 2676, 2675, 86, 86, 2672, 2677, - 86, 2683, 86, 2672, 2678, 2681, 2682, 86, 2687, 86, - 86, 86, 86, 86, 86, 2689, 86, 2710, 2684, 86, - 3136, 2686, 2685, 2690, 2688, 2691, 86, 2693, 2694, 2697, - 86, 86, 2692, 2695, 86, 2696, 86, 2698, 86, 2699, - 86, 2700, 86, 2701, 86, 86, 2704, 2702, 86, 2703, - 86, 86, 86, 2709, 86, 2712, 86, 2706, 86, 2714, - 86, 86, 2716, 86, 86, 2713, 2715, 86, 86, 2711, - 2707, 2705, 2708, 2717, 86, 3136, 2718, 2719, 2721, 86, - 86, 86, 86, 2725, 2722, 86, 86, 86, 2726, 86, - 2723, 2729, 2720, 86, 86, 2728, 86, 2724, 2727, 2730, + 86, 86, 2681, 2682, 86, 86, 86, 2685, 86, 86, + 2684, 86, 86, 86, 86, 2688, 2678, 2679, 2686, 2687, + 86, 2680, 86, 2690, 86, 2691, 86, 2694, 86, 2683, + 2689, 2692, 2693, 86, 2698, 86, 86, 86, 86, 86, + 86, 2700, 86, 2721, 2695, 86, 3147, 2697, 2696, 2701, + 2699, 2702, 86, 2704, 2705, 2708, 86, 86, 2703, 2706, + 86, 2707, 86, 2709, 86, 2710, 86, 2711, 86, 2712, + 86, 86, 2715, 2713, 86, 2714, 86, 86, 86, 2720, + 86, 2723, 86, 2717, 86, 2725, 86, 86, 2727, 86, + 86, 2724, 2726, 86, 86, 2722, 2718, 2716, 2719, 2728, - 2731, 86, 2732, 86, 86, 86, 86, 2733, 86, 86, - 86, 2741, 86, 86, 2736, 86, 3136, 86, 2737, 2739, - 2744, 2734, 2735, 86, 2742, 86, 2746, 86, 2745, 2740, - 86, 2751, 86, 2738, 2743, 2748, 2747, 86, 2749, 2752, - 86, 2750, 2753, 86, 86, 86, 86, 86, 2758, 86, - 86, 2757, 86, 2754, 86, 2759, 86, 2760, 2761, 86, - 86, 86, 86, 86, 86, 2755, 2756, 2762, 2763, 2765, - 2767, 2769, 86, 86, 86, 86, 86, 2770, 86, 2766, - 2771, 2764, 2774, 2772, 86, 2773, 86, 2768, 86, 2775, - 2777, 86, 86, 86, 86, 86, 86, 2780, 86, 86, + 86, 3147, 2729, 2730, 2732, 86, 86, 86, 86, 2736, + 2733, 86, 86, 86, 2737, 86, 2734, 2740, 2731, 86, + 86, 2739, 86, 2735, 2738, 2741, 2742, 86, 2743, 86, + 86, 86, 86, 2744, 86, 86, 86, 2752, 86, 86, + 2747, 86, 3147, 86, 2748, 2750, 2755, 2745, 2746, 86, + 2753, 86, 2757, 86, 2756, 2751, 86, 2762, 86, 2749, + 2754, 2759, 2758, 86, 2760, 2763, 86, 2761, 2764, 86, + 86, 86, 86, 86, 2769, 86, 86, 2768, 86, 2765, + 86, 2770, 86, 2771, 2772, 86, 86, 86, 86, 86, + 86, 2766, 2767, 2773, 2774, 2776, 2778, 2780, 86, 86, - 86, 2778, 86, 2781, 86, 2779, 2776, 2784, 3136, 2785, - 86, 2782, 2787, 86, 86, 2783, 2789, 86, 86, 2788, - 2790, 86, 86, 2791, 2786, 2792, 86, 86, 2797, 86, - 2793, 86, 2796, 2799, 2794, 86, 86, 2801, 2795, 86, - 86, 2804, 86, 86, 2806, 86, 86, 86, 2809, 86, - 86, 2798, 2807, 2802, 2800, 2810, 86, 2812, 86, 2803, - 86, 86, 86, 2805, 86, 86, 2811, 2808, 2817, 86, - 2815, 2814, 2821, 86, 86, 86, 86, 2813, 2822, 86, - 2823, 2819, 2816, 2818, 86, 2820, 2826, 2829, 2824, 2827, - 86, 86, 86, 86, 2828, 86, 86, 2832, 86, 86, + 86, 86, 86, 2781, 86, 2777, 2782, 2775, 2785, 2783, + 86, 2784, 86, 2779, 86, 2786, 2788, 86, 86, 86, + 86, 86, 86, 2791, 86, 86, 86, 2789, 86, 2792, + 86, 2790, 2787, 2795, 3147, 2796, 86, 2793, 2798, 86, + 86, 2794, 2800, 86, 86, 2799, 2801, 86, 86, 2802, + 2797, 2803, 86, 86, 2808, 86, 2804, 86, 2807, 2810, + 2805, 86, 86, 2812, 2806, 86, 86, 2815, 86, 86, + 2817, 86, 86, 86, 2820, 86, 86, 2809, 2818, 2813, + 2811, 2821, 86, 2823, 86, 2814, 86, 86, 86, 2816, + 86, 86, 2822, 2819, 2828, 86, 2826, 2825, 2832, 86, - 86, 2831, 2835, 86, 2825, 2833, 2838, 86, 86, 86, - 86, 86, 86, 2830, 2843, 86, 86, 86, 2834, 86, - 2836, 2837, 2839, 2846, 86, 2842, 2845, 2840, 2847, 86, - 2851, 86, 86, 2849, 86, 2844, 2841, 2848, 86, 2850, - 2852, 86, 2853, 86, 86, 2855, 86, 86, 86, 2854, - 86, 86, 2860, 2861, 86, 86, 86, 2856, 2867, 86, - 2865, 86, 2866, 86, 86, 2864, 86, 86, 86, 2857, - 2858, 86, 2859, 2862, 3136, 2863, 2870, 2871, 86, 2872, - 86, 2874, 86, 86, 2875, 86, 2868, 2869, 2873, 86, - 86, 2878, 86, 2877, 2876, 86, 86, 86, 86, 86, + 86, 86, 86, 2824, 2833, 86, 2834, 2830, 2827, 2829, + 86, 2831, 2837, 2840, 2835, 2838, 86, 86, 86, 86, + 2839, 86, 86, 2843, 86, 86, 86, 2842, 2846, 86, + 2836, 2844, 2849, 86, 86, 86, 86, 86, 86, 2841, + 2854, 86, 86, 86, 2845, 86, 2847, 2848, 2850, 2857, + 86, 2853, 2856, 2851, 2858, 86, 2862, 86, 86, 2860, + 86, 2855, 2852, 2859, 86, 2861, 2863, 86, 2864, 86, + 86, 2866, 86, 86, 86, 2865, 86, 86, 2871, 2872, + 86, 86, 86, 2867, 2878, 86, 2876, 86, 2877, 86, + 86, 2875, 86, 86, 86, 2868, 2869, 86, 2870, 2873, - 2879, 86, 2882, 86, 86, 2884, 86, 86, 86, 2880, - 2883, 2885, 86, 86, 86, 86, 2881, 86, 86, 2894, - 2886, 2897, 2895, 2898, 2887, 2889, 2888, 86, 2890, 2893, - 2891, 2892, 86, 86, 86, 2896, 2901, 86, 2902, 86, - 86, 2904, 86, 2923, 2903, 86, 2900, 2905, 86, 2912, - 2906, 2907, 2899, 86, 2908, 2909, 86, 86, 2910, 2911, - 86, 86, 2913, 86, 86, 86, 86, 2919, 86, 86, - 86, 2918, 86, 86, 2914, 86, 2922, 2921, 2915, 3136, - 2916, 86, 86, 2927, 86, 2917, 2928, 86, 2924, 86, - 2926, 2929, 86, 2925, 2920, 86, 86, 2934, 2932, 2930, + 3147, 2874, 2881, 2882, 86, 2883, 86, 2885, 86, 86, + 2886, 86, 2879, 2880, 2884, 86, 86, 2889, 86, 2888, + 2887, 86, 86, 86, 86, 86, 2890, 86, 2893, 86, + 86, 2895, 86, 86, 86, 2891, 2894, 2896, 86, 86, + 86, 86, 2892, 86, 86, 2905, 2897, 2908, 2906, 2909, + 2898, 2900, 2899, 86, 2901, 2904, 2902, 2903, 86, 86, + 86, 2907, 2912, 86, 2913, 86, 86, 2915, 86, 2934, + 2914, 86, 2911, 2916, 86, 2923, 2917, 2918, 2910, 86, + 2919, 2920, 86, 86, 2921, 2922, 86, 86, 2924, 86, + 86, 86, 86, 2930, 86, 86, 86, 2929, 86, 86, - 2931, 2933, 2935, 86, 2936, 86, 86, 86, 86, 86, - 86, 2944, 2940, 2941, 2943, 86, 86, 86, 2946, 86, - 2938, 2937, 2945, 2947, 86, 86, 86, 2939, 2942, 2971, - 2948, 2949, 86, 2950, 86, 2951, 86, 2952, 86, 2953, - 86, 2954, 86, 2955, 86, 2956, 86, 86, 2958, 86, - 86, 86, 86, 86, 86, 86, 2957, 2963, 86, 2959, - 86, 86, 86, 2960, 86, 2967, 86, 2966, 2964, 2969, - 86, 86, 2961, 2962, 2965, 2968, 86, 2973, 86, 2976, - 2970, 2975, 86, 86, 86, 86, 86, 86, 2978, 2974, - 86, 86, 2972, 2982, 86, 86, 2977, 86, 2985, 86, + 2925, 86, 2933, 2932, 2926, 3147, 2927, 86, 86, 2938, + 86, 2928, 2939, 86, 2935, 86, 2937, 2940, 86, 2936, + 2931, 86, 86, 2945, 2943, 2941, 2942, 2944, 2946, 86, + 2947, 86, 86, 86, 86, 86, 86, 2955, 2951, 2952, + 2954, 86, 86, 86, 2957, 86, 2949, 2948, 2956, 2958, + 86, 86, 86, 2950, 2953, 2982, 2959, 2960, 86, 2961, + 86, 2962, 86, 2963, 86, 2964, 86, 2965, 86, 2966, + 86, 2967, 86, 86, 2969, 86, 86, 86, 86, 86, + 86, 86, 2968, 2974, 86, 2970, 86, 86, 86, 2971, + 86, 2978, 86, 2977, 2975, 2980, 86, 86, 2972, 2973, - 2983, 2987, 86, 2979, 2980, 86, 2981, 2988, 86, 2984, - 2986, 2989, 86, 86, 2991, 86, 86, 2992, 86, 86, - 86, 86, 2990, 2998, 2997, 86, 86, 3000, 86, 86, - 2994, 2996, 86, 86, 86, 2993, 86, 86, 86, 86, - 2999, 2995, 3001, 86, 86, 86, 3007, 3002, 86, 3004, - 3003, 3006, 86, 3011, 3015, 3008, 3014, 86, 3010, 3005, - 3009, 3016, 86, 86, 3013, 86, 3012, 86, 3017, 3018, - 86, 3019, 86, 86, 86, 86, 3022, 86, 86, 3023, - 3024, 3027, 3020, 86, 86, 3021, 86, 86, 86, 3032, - 86, 3030, 86, 3026, 86, 86, 3029, 3028, 3035, 86, + 2976, 2979, 86, 2984, 86, 2987, 2981, 2986, 86, 86, + 86, 86, 86, 86, 2989, 2985, 86, 86, 2983, 2993, + 86, 86, 2988, 86, 2996, 86, 2994, 2998, 86, 2990, + 2991, 86, 2992, 2999, 86, 2995, 2997, 3000, 86, 86, + 3002, 86, 86, 3003, 86, 86, 86, 86, 3001, 3009, + 3008, 86, 86, 3011, 86, 86, 3005, 3007, 86, 86, + 86, 3004, 86, 86, 86, 86, 3010, 3006, 3012, 86, + 86, 86, 3018, 3013, 86, 3015, 3014, 3017, 86, 3022, + 3026, 3019, 3025, 86, 3021, 3016, 3020, 3027, 86, 86, + 3024, 86, 3023, 86, 3028, 3029, 86, 3030, 86, 86, - 86, 86, 3025, 3038, 86, 86, 3039, 3033, 3031, 3040, - 3036, 86, 86, 3034, 3042, 3043, 86, 86, 3037, 86, - 86, 86, 3048, 86, 3047, 86, 3044, 3049, 86, 3045, - 3041, 86, 86, 86, 86, 86, 3046, 86, 3053, 86, - 3055, 86, 86, 86, 86, 86, 3050, 3052, 3060, 3061, - 86, 3051, 3054, 86, 3057, 3058, 3056, 3068, 3059, 3062, - 86, 3066, 86, 86, 86, 3063, 86, 3069, 3064, 3067, - 86, 86, 3065, 86, 86, 3070, 3071, 3074, 3072, 3075, - 86, 86, 86, 86, 3077, 86, 3076, 86, 86, 86, - 86, 3078, 3083, 3073, 86, 3080, 86, 86, 86, 86, + 86, 86, 3033, 86, 86, 3034, 3035, 3038, 3031, 86, + 86, 3032, 86, 86, 86, 3043, 86, 3041, 86, 3037, + 86, 86, 3040, 3039, 3046, 86, 86, 86, 3036, 3049, + 86, 86, 3050, 3044, 3042, 3051, 3047, 86, 86, 3045, + 3053, 3054, 86, 86, 3048, 86, 86, 86, 3059, 86, + 3058, 86, 3055, 3060, 86, 3056, 3052, 86, 86, 86, + 86, 86, 3057, 86, 3064, 86, 3066, 86, 86, 86, + 86, 86, 3061, 3063, 3071, 3072, 86, 3062, 3065, 86, + 3068, 3069, 3067, 3079, 3070, 3073, 86, 3077, 86, 86, + 86, 3074, 86, 3080, 3075, 3078, 86, 86, 3076, 86, - 3086, 3079, 3087, 86, 86, 86, 86, 86, 3081, 3082, - 3085, 3090, 86, 3084, 3088, 3091, 86, 3089, 86, 3094, - 3093, 3095, 86, 3092, 86, 3096, 86, 3098, 86, 3100, - 86, 3101, 86, 86, 86, 3105, 86, 3102, 3136, 86, - 3103, 3108, 86, 3099, 3106, 86, 86, 3107, 3097, 86, - 86, 86, 86, 3104, 86, 86, 3109, 3110, 86, 3112, - 3114, 86, 86, 3116, 86, 3111, 86, 3117, 86, 3120, - 3113, 3115, 3121, 86, 3118, 86, 86, 3124, 3125, 86, - 86, 3127, 86, 3119, 86, 3122, 86, 3126, 3128, 86, - 86, 3129, 86, 86, 3123, 3130, 3136, 3131, 3134, 86, + 86, 3081, 3082, 3085, 3083, 3086, 86, 86, 86, 86, + 3088, 86, 3087, 86, 86, 86, 86, 3089, 3094, 3084, + 86, 3091, 86, 86, 86, 86, 3097, 3090, 3098, 86, + 86, 86, 86, 86, 3092, 3093, 3096, 3101, 86, 3095, + 3099, 3102, 86, 3100, 86, 3105, 3104, 3106, 86, 3103, + 86, 3107, 86, 3109, 86, 3111, 86, 3112, 86, 86, + 86, 3116, 86, 3113, 3147, 86, 3114, 3119, 86, 3110, + 3117, 86, 86, 3118, 3108, 86, 86, 86, 86, 3115, + 86, 86, 3120, 3121, 86, 3123, 3125, 86, 86, 3127, + 86, 3122, 86, 3128, 86, 3131, 3124, 3126, 3132, 86, - 3135, 86, 3136, 3136, 3136, 3132, 3136, 3136, 3136, 3136, - 3136, 3136, 3133, 47, 47, 47, 47, 47, 47, 47, - 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, - 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, - 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, - 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, - 80, 80, 89, 89, 3136, 89, 89, 89, 89, 157, - 157, 3136, 3136, 3136, 157, 157, 159, 159, 3136, 3136, - 159, 3136, 159, 161, 3136, 3136, 3136, 3136, 3136, 161, - 164, 164, 3136, 3136, 3136, 164, 164, 166, 3136, 3136, + 3129, 86, 86, 3135, 3136, 86, 86, 3138, 86, 3130, + 86, 3133, 86, 3137, 3139, 86, 86, 3140, 86, 86, + 3134, 3141, 3147, 3142, 3145, 86, 3146, 86, 3147, 3147, + 3147, 3143, 3147, 3147, 3147, 3147, 3147, 3147, 3144, 47, + 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, + 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, + 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, + 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, + 3147, 89, 89, 89, 89, 157, 157, 3147, 3147, 3147, + + 157, 157, 159, 159, 3147, 3147, 159, 3147, 159, 161, + 3147, 3147, 3147, 3147, 3147, 161, 164, 164, 3147, 3147, + 3147, 164, 164, 166, 3147, 3147, 3147, 3147, 3147, 166, + 168, 168, 3147, 168, 168, 168, 168, 171, 3147, 3147, + 3147, 3147, 3147, 171, 174, 174, 3147, 3147, 3147, 174, + 174, 90, 90, 3147, 90, 90, 90, 90, 17, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147 - 3136, 3136, 3136, 166, 168, 168, 3136, 168, 168, 168, - 168, 171, 3136, 3136, 3136, 3136, 3136, 171, 174, 174, - 3136, 3136, 3136, 174, 174, 90, 90, 3136, 90, 90, - 90, 90, 17, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136 } ; -static const flex_int16_t yy_chk[6174] = +static const flex_int16_t yy_chk[6200] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2147,7 +2153,7 @@ static const flex_int16_t yy_chk[6174] = 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, 3144, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3155, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, @@ -2159,7 +2165,7 @@ static const flex_int16_t yy_chk[6174] = 43, 43, 40, 43, 25, 28, 31, 87, 30, 32, 28, 87, 43, 32, 28, 94, 32, 28, 43, 28, 28, 56, 94, 32, 56, 32, 36, 36, 37, 37, - 28, 45, 45, 37, 2566, 36, 45, 39, 41, 41, + 28, 45, 45, 37, 2577, 36, 45, 39, 41, 41, 45, 36, 39, 41, 124, 36, 39, 67, 67, 37, 73, 124, 39, 41, 41, 39, 41, 44, 42, 84, @@ -2183,7 +2189,7 @@ static const flex_int16_t yy_chk[6174] = 136, 140, 147, 141, 138, 144, 149, 151, 144, 145, 152, 146, 150, 148, 150, 152, 153, 156, 154, 151, - 155, 147, 149, 150, 1041, 155, 158, 158, 153, 160, + 155, 147, 149, 150, 1044, 155, 158, 158, 153, 160, 182, 156, 160, 165, 165, 150, 154, 162, 182, 162, 162, 167, 162, 167, 167, 168, 167, 168, 168, 170, 168, 172, 170, 172, 172, 176, 172, 168, 175, 175, @@ -2235,8 +2241,8 @@ static const flex_int16_t yy_chk[6174] = 359, 362, 360, 361, 361, 366, 362, 365, 367, 363, 368, 357, 363, 369, 357, 372, 357, 371, 363, 375, 371, 378, 363, 367, 374, 368, 366, 369, 375, 372, - 363, 364, 364, 380, 364, 376, 371, 377, 667, 374, - 376, 376, 378, 377, 379, 382, 384, 364, 380, 667, + 363, 364, 364, 380, 364, 376, 371, 377, 668, 374, + 376, 376, 378, 377, 379, 382, 384, 364, 380, 668, 364, 381, 364, 383, 364, 373, 385, 373, 373, 383, 381, 386, 388, 379, 382, 391, 389, 373, 390, 373, @@ -2244,580 +2250,583 @@ static const flex_int16_t yy_chk[6174] = 391, 394, 392, 387, 396, 388, 389, 394, 390, 395, 395, 397, 398, 393, 399, 400, 401, 402, 403, 403, 399, 403, 402, 397, 396, 404, 398, 405, 406, 408, - 481, 408, 401, 407, 409, 410, 409, 411, 413, 410, - 400, 411, 415, 405, 406, 404, 414, 407, 412, 412, - 416, 417, 481, 418, 409, 419, 411, 413, 415, 421, - 422, 414, 418, 421, 419, 417, 420, 424, 416, 422, + 159, 408, 401, 407, 409, 410, 409, 409, 411, 410, + 400, 413, 411, 405, 406, 404, 414, 407, 412, 412, + 415, 416, 424, 417, 409, 418, 419, 411, 420, 429, + 413, 414, 422, 420, 418, 419, 415, 417, 421, 416, - 423, 420, 425, 418, 429, 418, 423, 426, 425, 427, - 428, 426, 427, 430, 430, 428, 431, 433, 424, 432, - 432, 434, 433, 438, 429, 435, 435, 436, 437, 431, - 439, 440, 437, 436, 434, 441, 440, 443, 438, 444, - 441, 442, 442, 445, 446, 447, 449, 451, 447, 443, - 442, 439, 451, 448, 450, 450, 446, 448, 449, 444, - 452, 445, 453, 453, 456, 456, 457, 458, 459, 460, - 461, 464, 463, 466, 465, 458, 467, 459, 468, 466, - 470, 452, 461, 472, 468, 467, 472, 457, 465, 460, - 463, 464, 463, 469, 470, 471, 473, 474, 469, 475, + 423, 422, 421, 424, 425, 418, 423, 418, 426, 429, + 425, 427, 426, 428, 427, 430, 430, 431, 428, 432, + 432, 433, 434, 435, 435, 436, 433, 438, 437, 439, + 431, 436, 437, 440, 441, 434, 442, 442, 440, 441, + 443, 444, 438, 446, 445, 442, 447, 448, 449, 447, + 439, 448, 443, 450, 450, 446, 452, 457, 451, 461, + 449, 444, 445, 451, 453, 453, 456, 456, 458, 460, + 459, 461, 463, 464, 465, 466, 458, 452, 457, 459, + 468, 466, 467, 470, 476, 157, 468, 471, 465, 460, + 463, 467, 463, 464, 469, 471, 473, 470, 471, 469, - 476, 477, 478, 471, 477, 475, 471, 479, 478, 480, - 473, 482, 474, 483, 480, 485, 488, 483, 484, 486, - 476, 479, 487, 484, 486, 492, 478, 489, 493, 494, - 485, 495, 482, 494, 505, 488, 496, 505, 487, 499, - 489, 490, 490, 493, 497, 492, 500, 490, 497, 490, - 495, 500, 496, 498, 499, 490, 501, 490, 498, 502, - 490, 490, 498, 503, 504, 506, 507, 490, 502, 503, - 508, 508, 501, 509, 503, 501, 510, 510, 511, 512, - 504, 513, 514, 515, 516, 517, 507, 518, 506, 516, - 522, 512, 519, 511, 517, 526, 513, 520, 509, 522, + 472, 474, 475, 472, 476, 478, 477, 479, 475, 477, + 473, 478, 480, 481, 483, 482, 474, 480, 483, 484, + 486, 479, 485, 487, 484, 486, 488, 489, 492, 478, + 505, 495, 728, 505, 493, 481, 482, 485, 494, 487, + 489, 496, 494, 728, 499, 488, 490, 490, 492, 493, + 495, 497, 490, 504, 490, 497, 500, 496, 498, 499, + 490, 500, 490, 498, 501, 490, 490, 498, 502, 504, + 503, 506, 490, 507, 508, 508, 503, 502, 509, 512, + 501, 503, 511, 501, 510, 510, 513, 514, 515, 517, + 516, 512, 518, 507, 506, 516, 520, 511, 517, 519, - 523, 514, 524, 520, 523, 515, 518, 519, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 534, 533, 531, - 533, 525, 535, 535, 537, 534, 528, 536, 529, 532, - 527, 538, 530, 536, 539, 540, 537, 538, 540, 541, - 542, 544, 543, 545, 544, 546, 539, 543, 549, 549, - 548, 547, 545, 541, 551, 542, 547, 547, 556, 545, - 551, 546, 545, 548, 550, 550, 552, 552, 553, 553, - 554, 557, 555, 559, 557, 558, 554, 555, 555, 556, - 558, 560, 561, 562, 563, 561, 564, 565, 562, 560, - 566, 565, 559, 567, 568, 569, 566, 567, 570, 572, + 522, 513, 520, 509, 523, 525, 514, 524, 523, 522, + 515, 518, 526, 524, 519, 527, 528, 525, 529, 530, + 531, 533, 532, 533, 531, 535, 535, 526, 534, 537, + 528, 539, 536, 529, 527, 532, 534, 530, 536, 538, + 541, 537, 542, 539, 540, 538, 543, 540, 546, 544, + 545, 543, 544, 558, 541, 547, 558, 542, 548, 545, + 547, 547, 549, 549, 546, 556, 545, 550, 550, 545, + 551, 548, 552, 552, 553, 553, 551, 554, 557, 555, + 560, 561, 559, 554, 555, 555, 556, 559, 562, 561, + 557, 562, 563, 564, 565, 567, 566, 563, 568, 560, - 569, 573, 571, 575, 572, 564, 577, 563, 571, 576, - 576, 574, 568, 578, 574, 573, 581, 579, 570, 574, - 580, 575, 579, 574, 577, 580, 582, 584, 585, 578, - 581, 586, 587, 584, 586, 588, 587, 585, 590, 589, - 588, 582, 589, 590, 591, 592, 593, 595, 594, 596, - 597, 597, 595, 593, 599, 598, 600, 601, 587, 602, - 591, 594, 603, 592, 598, 159, 601, 609, 603, 596, - 604, 602, 600, 599, 605, 610, 604, 605, 606, 606, - 607, 606, 608, 607, 611, 609, 612, 608, 613, 610, - 611, 612, 614, 615, 613, 614, 616, 617, 615, 618, + 566, 567, 568, 569, 570, 571, 572, 595, 574, 570, + 573, 575, 572, 565, 575, 573, 564, 576, 578, 575, + 595, 569, 574, 575, 579, 571, 577, 577, 580, 581, + 582, 583, 585, 580, 581, 576, 578, 588, 585, 586, + 579, 588, 587, 592, 582, 587, 583, 589, 586, 591, + 590, 593, 589, 590, 591, 594, 596, 597, 599, 592, + 600, 596, 594, 588, 598, 598, 601, 599, 604, 593, + 605, 602, 603, 610, 604, 606, 605, 597, 606, 600, + 602, 611, 601, 85, 603, 607, 607, 608, 607, 609, + 608, 610, 612, 614, 609, 611, 613, 615, 612, 614, - 619, 616, 616, 620, 621, 619, 622, 624, 623, 620, - 617, 626, 618, 623, 629, 622, 625, 625, 626, 619, - 619, 627, 628, 621, 627, 630, 629, 624, 628, 631, - 630, 632, 632, 633, 631, 631, 634, 635, 634, 627, - 636, 637, 636, 638, 639, 640, 641, 642, 643, 647, - 645, 644, 643, 642, 646, 648, 635, 650, 633, 637, - 644, 638, 639, 649, 640, 645, 641, 647, 652, 646, - 651, 653, 650, 654, 648, 649, 651, 655, 658, 657, - 656, 659, 652, 653, 656, 660, 661, 663, 662, 664, - 664, 665, 654, 662, 658, 665, 655, 657, 666, 659, + 615, 613, 616, 617, 618, 619, 620, 616, 617, 617, + 621, 620, 622, 623, 624, 625, 621, 618, 619, 624, + 626, 626, 623, 627, 628, 620, 620, 628, 629, 630, + 627, 622, 631, 632, 629, 625, 634, 631, 632, 632, + 636, 630, 628, 633, 633, 635, 637, 635, 637, 638, + 639, 640, 641, 642, 643, 645, 648, 646, 644, 636, + 643, 634, 644, 647, 645, 649, 651, 638, 639, 640, + 650, 641, 646, 642, 648, 653, 654, 652, 647, 655, + 656, 651, 650, 652, 649, 658, 657, 660, 654, 653, + 657, 659, 661, 662, 664, 663, 665, 665, 655, 656, - 668, 663, 669, 660, 660, 661, 670, 669, 671, 673, - 672, 678, 675, 674, 668, 676, 673, 666, 674, 675, - 676, 677, 670, 672, 679, 680, 677, 671, 681, 678, - 682, 679, 683, 684, 680, 687, 689, 685, 684, 682, - 685, 686, 681, 688, 683, 686, 690, 691, 697, 687, - 695, 689, 688, 692, 692, 693, 693, 694, 694, 695, - 690, 699, 700, 698, 693, 701, 700, 697, 691, 698, - 702, 703, 704, 706, 705, 707, 708, 701, 704, 709, - 706, 699, 705, 712, 719, 718, 715, 724, 724, 703, - 719, 721, 722, 707, 718, 702, 723, 721, 712, 709, + 663, 667, 666, 658, 669, 660, 666, 659, 664, 670, + 661, 661, 662, 671, 670, 672, 674, 673, 669, 675, + 667, 676, 677, 674, 675, 679, 678, 677, 676, 671, + 673, 678, 680, 681, 672, 682, 683, 686, 684, 680, + 686, 685, 681, 679, 687, 683, 685, 688, 687, 682, + 684, 689, 690, 692, 691, 693, 693, 694, 694, 698, + 689, 688, 695, 695, 696, 699, 694, 690, 691, 700, + 702, 699, 701, 696, 692, 703, 701, 704, 698, 705, + 706, 708, 702, 707, 709, 705, 710, 713, 706, 700, + 707, 716, 719, 726, 726, 704, 723, 720, 722, 708, - 723, 708, 710, 715, 710, 725, 725, 710, 722, 726, - 727, 710, 728, 729, 710, 735, 733, 730, 739, 739, - 726, 710, 710, 730, 710, 732, 728, 734, 727, 736, - 732, 157, 736, 729, 731, 731, 731, 733, 731, 740, - 735, 731, 737, 738, 742, 734, 731, 737, 737, 742, - 738, 748, 731, 731, 740, 741, 741, 743, 744, 747, - 743, 745, 745, 744, 746, 749, 746, 750, 752, 749, - 748, 747, 751, 753, 753, 754, 752, 757, 755, 756, - 756, 758, 759, 760, 762, 762, 85, 750, 781, 760, - 754, 751, 755, 758, 761, 757, 763, 781, 765, 761, + 703, 719, 713, 720, 722, 723, 710, 724, 716, 709, + 711, 730, 711, 725, 735, 711, 729, 725, 731, 711, + 727, 727, 711, 724, 736, 730, 734, 732, 737, 711, + 711, 734, 711, 732, 729, 735, 741, 741, 731, 733, + 733, 733, 736, 733, 738, 740, 733, 738, 742, 739, + 80, 733, 740, 737, 739, 739, 744, 733, 733, 743, + 743, 744, 745, 742, 746, 745, 747, 747, 748, 746, + 748, 749, 750, 751, 752, 756, 753, 751, 754, 755, + 755, 759, 757, 749, 758, 758, 754, 761, 760, 75, + 756, 750, 762, 781, 752, 753, 757, 763, 762, 759, - 766, 763, 763, 765, 759, 767, 766, 768, 769, 771, - 770, 767, 768, 770, 769, 771, 772, 773, 773, 774, - 774, 775, 776, 777, 772, 778, 779, 782, 777, 775, - 780, 780, 778, 783, 784, 782, 788, 786, 787, 783, - 776, 790, 794, 789, 793, 779, 786, 787, 789, 791, - 790, 792, 791, 784, 795, 796, 792, 799, 793, 797, - 788, 798, 798, 795, 797, 797, 800, 794, 796, 801, - 802, 803, 799, 805, 803, 805, 806, 806, 801, 807, - 809, 808, 803, 810, 811, 800, 808, 812, 813, 814, - 815, 816, 817, 818, 802, 816, 819, 820, 814, 821, + 760, 765, 763, 764, 764, 767, 765, 765, 768, 761, + 767, 769, 781, 770, 768, 771, 772, 769, 770, 772, + 773, 771, 774, 775, 775, 777, 773, 776, 776, 778, + 774, 779, 780, 777, 782, 782, 779, 783, 785, 780, + 784, 786, 788, 789, 785, 790, 783, 778, 784, 791, + 792, 788, 789, 793, 791, 796, 793, 794, 795, 792, + 786, 797, 794, 798, 800, 800, 801, 802, 799, 790, + 797, 804, 795, 799, 799, 803, 798, 808, 808, 805, + 796, 801, 805, 807, 803, 807, 802, 809, 810, 811, + 805, 812, 813, 810, 814, 804, 816, 815, 817, 818, - 807, 809, 819, 810, 811, 822, 820, 823, 813, 812, - 817, 821, 818, 815, 824, 825, 828, 826, 827, 827, - 824, 823, 826, 829, 822, 830, 831, 832, 833, 825, - 834, 835, 829, 836, 831, 837, 828, 839, 838, 836, - 840, 837, 841, 839, 844, 830, 80, 832, 841, 834, - 833, 835, 838, 842, 843, 845, 846, 847, 843, 842, - 840, 846, 849, 844, 848, 848, 850, 845, 849, 850, - 851, 852, 854, 853, 859, 845, 855, 855, 847, 853, - 856, 857, 862, 860, 852, 858, 857, 860, 851, 859, - 858, 858, 854, 861, 861, 863, 864, 865, 856, 867, + 819, 820, 823, 818, 824, 816, 822, 821, 809, 830, + 811, 812, 813, 821, 823, 822, 814, 815, 819, 825, + 820, 817, 826, 824, 827, 828, 829, 829, 826, 830, + 828, 831, 832, 825, 833, 834, 835, 836, 827, 837, + 831, 838, 833, 839, 841, 842, 840, 838, 843, 839, + 841, 844, 832, 846, 843, 834, 836, 844, 835, 837, + 840, 847, 845, 848, 849, 842, 845, 854, 848, 850, + 850, 851, 846, 847, 853, 852, 855, 851, 852, 856, + 854, 847, 855, 857, 857, 849, 858, 861, 859, 860, + 863, 863, 853, 859, 860, 860, 862, 864, 865, 856, - 868, 864, 870, 871, 862, 873, 873, 874, 876, 876, - 877, 874, 875, 878, 868, 863, 865, 878, 879, 889, - 898, 898, 870, 867, 871, 872, 880, 875, 872, 882, - 872, 889, 881, 879, 872, 877, 872, 881, 884, 883, - 880, 872, 885, 882, 883, 883, 872, 884, 886, 890, - 887, 892, 886, 888, 890, 891, 885, 893, 888, 902, - 895, 894, 901, 75, 886, 887, 895, 896, 888, 891, - 894, 893, 892, 896, 897, 903, 899, 900, 902, 905, - 897, 899, 906, 900, 901, 907, 908, 906, 909, 909, - 913, 905, 910, 903, 904, 904, 911, 910, 908, 907, + 862, 866, 861, 867, 858, 869, 866, 870, 872, 873, + 875, 875, 876, 878, 878, 74, 876, 877, 865, 864, + 879, 870, 867, 880, 881, 901, 901, 880, 872, 869, + 873, 874, 877, 883, 874, 882, 874, 884, 883, 881, + 874, 886, 874, 887, 891, 879, 889, 874, 885, 882, + 886, 884, 874, 885, 885, 888, 891, 887, 890, 888, + 892, 889, 893, 890, 894, 892, 895, 898, 896, 897, + 904, 888, 898, 890, 902, 897, 893, 896, 899, 902, + 895, 900, 903, 905, 899, 894, 906, 900, 903, 908, + 909, 911, 904, 910, 913, 909, 912, 912, 915, 913, - 904, 912, 904, 914, 911, 915, 915, 916, 904, 913, - 917, 916, 919, 904, 904, 912, 920, 921, 919, 920, - 904, 922, 914, 923, 925, 934, 924, 932, 927, 923, - 917, 924, 928, 929, 922, 933, 921, 927, 930, 931, - 933, 928, 935, 925, 930, 934, 932, 936, 931, 929, - 937, 938, 939, 940, 941, 946, 935, 942, 944, 940, - 938, 939, 937, 942, 947, 949, 948, 936, 950, 946, - 952, 941, 951, 953, 944, 952, 956, 960, 953, 949, - 957, 956, 958, 958, 947, 948, 950, 951, 959, 957, - 960, 962, 963, 967, 959, 964, 964, 963, 963, 964, + 914, 908, 905, 911, 906, 907, 907, 910, 914, 916, + 917, 907, 915, 907, 918, 918, 919, 920, 68, 907, + 919, 922, 924, 923, 907, 907, 923, 922, 916, 917, + 925, 907, 926, 928, 927, 930, 931, 920, 926, 927, + 932, 924, 933, 925, 930, 931, 934, 935, 933, 936, + 937, 938, 928, 939, 936, 934, 932, 940, 941, 942, + 947, 944, 950, 953, 951, 938, 935, 941, 942, 940, + 937, 943, 949, 939, 945, 952, 947, 943, 944, 954, + 945, 953, 950, 951, 63, 955, 949, 956, 959, 952, + 955, 960, 956, 959, 954, 961, 961, 962, 963, 965, - 965, 966, 968, 965, 969, 971, 970, 962, 972, 973, - 974, 975, 976, 967, 972, 966, 974, 976, 968, 970, - 971, 977, 969, 980, 979, 981, 975, 979, 982, 973, - 981, 983, 984, 982, 985, 977, 986, 984, 989, 985, - 988, 992, 992, 990, 980, 991, 988, 983, 986, 990, - 993, 991, 994, 995, 989, 997, 995, 996, 996, 993, - 998, 999, 1000, 1001, 1004, 1000, 1002, 1009, 1003, 1004, - 994, 1010, 1002, 997, 1003, 1005, 1001, 1006, 1007, 998, - 1005, 999, 1006, 1011, 1007, 1009, 1014, 1012, 1015, 1011, - 1016, 1010, 1012, 1013, 1013, 1014, 1017, 1015, 1018, 1019, + 960, 966, 969, 962, 967, 967, 966, 966, 967, 968, + 970, 963, 968, 971, 972, 965, 969, 975, 973, 974, + 976, 977, 978, 975, 980, 983, 58, 977, 979, 971, + 970, 973, 972, 979, 974, 986, 982, 978, 980, 982, + 976, 989, 984, 985, 987, 988, 983, 984, 985, 987, + 988, 986, 991, 989, 992, 993, 994, 996, 991, 995, + 995, 993, 994, 997, 998, 1000, 996, 998, 999, 999, + 992, 1001, 1002, 1003, 1004, 1007, 1003, 1008, 1005, 1006, + 1007, 997, 1008, 1000, 1005, 1006, 1009, 1004, 1010, 1012, + 1001, 1009, 1002, 1013, 1010, 1014, 1017, 1015, 1016, 1016, - 1020, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1016, 1027, - 1026, 1020, 1024, 1025, 1027, 1017, 1022, 1028, 1028, 1029, - 1030, 1021, 1032, 1031, 1023, 1026, 1032, 1033, 1034, 1035, - 1036, 1038, 1039, 1039, 1030, 1031, 1040, 1034, 1029, 1042, - 1044, 1045, 1043, 1047, 1047, 1033, 1045, 1048, 1035, 1046, - 1038, 74, 1044, 1042, 1049, 1036, 1040, 1043, 1046, 1050, - 1049, 1051, 1052, 1053, 1052, 1050, 1051, 1048, 1053, 1054, - 1055, 1056, 1057, 1058, 1059, 1060, 1056, 1061, 1063, 1063, - 1064, 1059, 1065, 1054, 1055, 1067, 1066, 1057, 1068, 68, - 1060, 1067, 1058, 1069, 1064, 1071, 1061, 1075, 1069, 1071, + 1018, 1014, 1015, 1019, 1020, 1017, 1023, 1012, 1021, 1018, + 1024, 1021, 1022, 1013, 1025, 1022, 1026, 1023, 1027, 1028, + 1032, 1019, 1029, 1020, 1027, 1028, 1025, 1030, 1024, 1031, + 1031, 1033, 1030, 1036, 1034, 1026, 1035, 1029, 1037, 1032, + 1035, 1038, 1039, 1041, 1043, 1033, 1034, 1037, 1042, 1042, + 1046, 1036, 1045, 1048, 1049, 1051, 1047, 1055, 1048, 1055, + 1038, 57, 1041, 1049, 1043, 1046, 1045, 1039, 1047, 1050, + 1050, 1052, 1053, 1057, 1054, 1051, 1056, 1052, 1053, 1054, + 1058, 1056, 1060, 1059, 1061, 1062, 1063, 1057, 1059, 1064, + 1066, 1066, 1062, 1067, 1058, 1068, 1069, 1060, 1070, 1071, - 1065, 1066, 1072, 1072, 1075, 1073, 1076, 1069, 1068, 1069, - 1073, 1078, 1069, 1074, 1074, 1077, 1079, 1080, 1077, 1081, - 1076, 1082, 1084, 1083, 1081, 1085, 1080, 1084, 1086, 1091, - 1078, 1088, 1088, 1089, 1079, 1083, 1085, 1090, 1089, 1092, - 1082, 1093, 1090, 1094, 1092, 1093, 1095, 1086, 1096, 1091, - 1097, 1099, 1094, 1098, 1102, 1100, 1101, 1103, 1104, 1106, - 1107, 1095, 1100, 1096, 1105, 1098, 1099, 1108, 1101, 1097, - 1105, 1111, 1109, 1102, 1106, 1112, 1104, 1111, 1103, 1113, - 1107, 1109, 1115, 1114, 1116, 1117, 1119, 1108, 1121, 1116, - 1112, 1114, 1120, 1113, 1118, 1122, 1122, 1117, 1124, 1118, + 1076, 1063, 1074, 1061, 1070, 1076, 1074, 1067, 1064, 1072, + 1079, 1069, 1081, 1068, 1072, 1075, 1075, 1077, 1077, 1071, + 1078, 1082, 1086, 1072, 1079, 1072, 1080, 1078, 1072, 1080, + 1084, 1081, 1083, 1085, 1086, 1084, 1088, 1087, 1089, 1082, + 1090, 1083, 1087, 1092, 1092, 1095, 1093, 1098, 1094, 1089, + 1088, 1093, 1085, 1094, 1097, 1096, 1098, 1099, 1097, 1090, + 1096, 1100, 1101, 1102, 1103, 1095, 1104, 1106, 1105, 1107, + 1108, 1109, 1099, 1104, 1110, 1102, 1100, 1109, 1111, 1103, + 1105, 1101, 1112, 1113, 1116, 1115, 1106, 1117, 1108, 1110, + 1107, 1115, 1113, 1119, 1121, 1118, 1123, 1124, 1111, 1116, - 1118, 1121, 1115, 1126, 1125, 1119, 1120, 1123, 1179, 1126, - 1179, 1124, 1123, 1125, 1128, 1123, 1123, 1127, 1127, 1128, - 1123, 1130, 1129, 1131, 1132, 1134, 1123, 1130, 1131, 1132, - 1123, 1129, 1133, 1133, 1135, 1135, 1136, 1137, 1138, 1136, - 1139, 1136, 1140, 1141, 1142, 1143, 1134, 1144, 1141, 1139, - 1146, 1149, 1149, 1144, 1145, 1146, 1138, 1137, 1142, 1148, - 1145, 1147, 1140, 1143, 1155, 1147, 1150, 1150, 1148, 1150, - 1151, 1154, 1153, 1148, 1156, 1148, 1153, 1148, 1158, 1148, - 1159, 1151, 1155, 1156, 1157, 1161, 1154, 1158, 1160, 1157, - 1157, 1162, 1163, 1160, 1164, 1165, 1169, 1166, 1168, 1161, + 1120, 1117, 1112, 1118, 1122, 1120, 1121, 1125, 1146, 1122, + 1122, 1124, 1128, 1119, 1129, 1123, 1126, 1126, 1130, 52, + 1125, 1127, 1146, 1129, 1130, 1128, 1127, 1131, 1131, 1127, + 1127, 1132, 1133, 1134, 1127, 1138, 1132, 1135, 1136, 1134, + 1127, 1133, 1135, 1136, 1127, 1137, 1137, 1139, 1139, 1140, + 1141, 1142, 1140, 1143, 1140, 1144, 1138, 1217, 1145, 1147, + 1148, 1149, 1143, 1145, 1217, 1152, 1148, 1149, 1150, 1142, + 1141, 1155, 1151, 1150, 1152, 1144, 1151, 1147, 1158, 1152, + 1157, 1152, 1155, 1152, 1157, 1152, 1153, 1153, 1154, 1154, + 1159, 1154, 1160, 1158, 1161, 1162, 1163, 1164, 1165, 1161, - 1162, 1171, 1159, 1166, 1167, 1167, 1168, 1170, 1172, 1165, - 1169, 1163, 1170, 1164, 1173, 1171, 1174, 1172, 1175, 1176, - 1176, 1177, 1182, 1175, 1178, 1178, 1181, 1182, 1183, 1181, - 1184, 1186, 1173, 1185, 1185, 1189, 1177, 1187, 1187, 1184, - 1189, 1174, 1188, 1188, 1190, 1191, 1199, 1183, 1192, 1192, - 1193, 1186, 1194, 1195, 1196, 1194, 1203, 1202, 1197, 1196, - 1198, 1203, 1198, 1204, 1199, 1190, 1191, 1197, 1201, 1205, - 1193, 1201, 1202, 1195, 1205, 1206, 1207, 1204, 1211, 1208, - 1214, 1207, 1210, 1206, 1208, 1209, 1209, 1210, 1212, 1216, - 1213, 1224, 1217, 1214, 1212, 1216, 1211, 1213, 1217, 1218, + 1161, 1160, 1164, 1167, 1162, 1166, 1168, 1169, 1159, 1170, + 1171, 1171, 1165, 1173, 1166, 1170, 1172, 1175, 1163, 1177, + 1176, 1169, 1167, 1174, 1172, 1168, 1178, 1173, 1174, 1176, + 1179, 1175, 1180, 1180, 1181, 1179, 1187, 1177, 1182, 1182, + 1183, 1185, 1183, 1186, 1185, 1188, 1189, 1189, 1186, 1181, + 1190, 1178, 1191, 1191, 1188, 1187, 1192, 1192, 1193, 1194, + 1195, 1196, 1196, 1193, 1197, 1198, 1199, 1200, 1198, 1201, + 1190, 1202, 1200, 1202, 1203, 1206, 1205, 1207, 1201, 1205, + 1194, 1195, 1207, 1208, 1197, 1215, 1199, 1210, 1209, 1211, + 1206, 1212, 1203, 1209, 1211, 1210, 1212, 1208, 1213, 1213, - 1219, 1220, 1221, 1222, 1218, 1226, 1219, 1223, 1223, 1227, - 1220, 1224, 1228, 1229, 1222, 1236, 1230, 1231, 1233, 1229, - 1226, 1221, 1230, 1231, 1233, 1234, 1235, 1236, 1237, 1227, - 1238, 1239, 1239, 1240, 1241, 1228, 1242, 1245, 1243, 1234, - 1244, 1244, 1237, 1243, 1246, 1234, 1235, 1248, 1238, 1246, - 1249, 1250, 1251, 1240, 1242, 1249, 1249, 1252, 1253, 1241, - 1245, 1251, 1254, 1255, 1263, 1252, 1248, 63, 1256, 1250, - 1257, 1259, 1253, 1256, 1265, 1263, 1256, 1254, 1255, 1257, - 1258, 1255, 1258, 1261, 1262, 1259, 1264, 1266, 1262, 1261, - 1267, 1264, 1264, 1265, 1268, 1269, 1270, 1271, 1272, 1268, + 1214, 1216, 1218, 1215, 1220, 1214, 1221, 1216, 1222, 1224, + 1220, 1223, 1221, 1222, 1225, 1218, 1226, 1223, 1224, 1227, + 1227, 1228, 1230, 1231, 1232, 1233, 1234, 1226, 1235, 1237, + 1238, 1233, 1234, 1225, 1235, 1237, 1239, 1230, 1241, 1240, + 1242, 1228, 1244, 1231, 1238, 1243, 1243, 1232, 1245, 1246, + 1238, 1240, 1241, 1249, 1247, 1252, 1239, 1254, 1242, 1247, + 1248, 1248, 1244, 1250, 1253, 1257, 1258, 1246, 1250, 1253, + 1253, 1255, 1259, 1245, 1252, 1254, 1249, 1256, 1260, 1257, + 1255, 1258, 1261, 1260, 1263, 1256, 1260, 1259, 1267, 1265, + 1259, 1261, 1262, 1266, 1262, 1265, 1268, 1266, 1263, 1267, - 1269, 1274, 1271, 1275, 1276, 1277, 1277, 1278, 1267, 1279, - 1280, 1278, 1282, 1266, 1270, 1274, 1283, 1281, 1272, 1284, - 1287, 1275, 1276, 1281, 1282, 1285, 1286, 1279, 1291, 1280, - 1289, 1288, 1294, 1284, 1296, 1283, 1288, 1289, 1290, 1287, - 1285, 1286, 1292, 1290, 1293, 1293, 1291, 1294, 1295, 1297, - 1296, 1292, 1298, 1299, 1295, 1300, 1305, 1298, 1307, 1299, - 1305, 1300, 1301, 1301, 1302, 1302, 1304, 1304, 1306, 1308, - 1297, 1309, 1310, 1311, 1311, 1312, 1307, 1306, 1315, 1310, - 1313, 1316, 1314, 1308, 1317, 1319, 1309, 1314, 1313, 1317, - 1317, 1318, 1315, 1320, 1320, 1312, 1318, 1318, 1321, 1322, + 1269, 1268, 1268, 1270, 1271, 1272, 1273, 1274, 1275, 1276, + 1272, 1273, 1277, 1279, 1276, 1280, 1281, 1282, 1282, 1269, + 1283, 1284, 1271, 1285, 1283, 1274, 1287, 1279, 1275, 1270, + 1286, 1288, 1277, 1280, 1281, 1289, 1286, 1290, 1287, 1284, + 1291, 1292, 1285, 1293, 1294, 1296, 1302, 1297, 1293, 1289, + 1288, 1294, 1290, 1295, 1299, 1291, 1297, 1301, 1295, 1300, + 1292, 1298, 1298, 1296, 1304, 1300, 1303, 1302, 1305, 1299, + 1304, 1303, 1312, 1301, 1305, 1306, 1306, 1307, 1307, 1309, + 1309, 1310, 1311, 1313, 1314, 1310, 1315, 1316, 1316, 1317, + 1312, 1311, 1318, 1315, 1320, 1321, 1319, 1313, 1322, 1314, - 1316, 1323, 1324, 1325, 1326, 1319, 1328, 1324, 1327, 1329, - 1323, 1330, 1328, 1331, 1329, 1332, 1335, 1321, 1322, 1331, - 1336, 1333, 1325, 1334, 1326, 1337, 1327, 1333, 1338, 1334, - 1340, 1339, 1348, 1341, 1332, 1335, 1348, 1330, 1344, 1336, - 1342, 1342, 1354, 1343, 1337, 1339, 1343, 1338, 1341, 1349, - 1344, 1340, 1345, 1345, 1346, 1346, 1347, 1350, 1351, 1355, - 1354, 1347, 1349, 1352, 1355, 1352, 1350, 1357, 1356, 1352, - 1358, 1351, 1359, 1359, 1360, 1361, 1362, 1363, 1367, 1360, - 1364, 1361, 1352, 1356, 1365, 1364, 1358, 1357, 1365, 1366, - 1363, 1362, 1368, 1366, 1369, 1370, 1371, 1371, 1367, 1373, + 1318, 1319, 1324, 1322, 1322, 1323, 1325, 1325, 1320, 1317, + 1323, 1323, 1326, 1327, 1321, 1328, 1329, 1330, 1331, 1332, + 1333, 1329, 1324, 1334, 1328, 1335, 1333, 1336, 1334, 1337, + 1340, 1326, 1327, 1336, 1338, 1339, 1330, 1332, 1331, 1341, + 1338, 1339, 1342, 1343, 1345, 1344, 1347, 1347, 1337, 1340, + 1348, 1335, 1346, 1348, 1349, 1350, 1350, 47, 1341, 1344, + 1359, 1342, 1343, 1351, 1351, 1345, 1349, 1346, 1352, 1354, + 1353, 1355, 1356, 1352, 1353, 1357, 1361, 1357, 1359, 1360, + 1355, 1357, 1354, 1362, 1360, 1356, 1363, 1364, 1364, 1367, + 1365, 1361, 1366, 1368, 1357, 1365, 1369, 1372, 1366, 1374, - 1375, 1370, 1376, 1377, 1377, 1378, 1379, 1376, 1381, 1381, - 1368, 1378, 1383, 1385, 1369, 1383, 1386, 1373, 1384, 1384, - 1388, 1375, 1389, 1388, 1390, 1392, 1379, 1391, 1391, 1385, - 1393, 1394, 1386, 1390, 1395, 1396, 1397, 1397, 1398, 1395, - 1392, 1399, 1389, 1400, 1401, 1402, 1402, 1398, 1403, 1396, - 1394, 1393, 1404, 1406, 1409, 1405, 1407, 1407, 1400, 1399, - 1405, 1408, 1403, 1410, 1410, 1408, 1411, 1412, 1406, 1401, - 1404, 1413, 1414, 1418, 1409, 1413, 1415, 1419, 1412, 1417, - 1417, 1415, 1420, 1421, 1422, 1423, 1424, 1424, 1411, 1418, - 1428, 1414, 1425, 1426, 1427, 1419, 1420, 1425, 1422, 1428, + 1373, 1369, 1363, 1362, 1367, 1370, 1368, 1371, 1375, 1370, + 1378, 1371, 1376, 1376, 1375, 1380, 1381, 1372, 1373, 1374, + 1383, 1381, 1382, 1382, 1384, 1390, 1383, 1391, 1378, 1386, + 1386, 1388, 1389, 1389, 1388, 1393, 1380, 1394, 1393, 1395, + 1397, 1390, 1398, 1391, 1384, 1396, 1396, 1399, 1395, 1400, + 1401, 1402, 1402, 1403, 1400, 1397, 1404, 1394, 1405, 1406, + 1407, 1407, 1403, 1398, 1401, 1408, 1399, 1409, 1411, 1414, + 1410, 1412, 1412, 1405, 1404, 1410, 1413, 1415, 1415, 1408, + 1413, 1416, 1417, 1411, 1406, 1409, 1418, 1419, 1423, 1414, + 1418, 1420, 1424, 1417, 1422, 1422, 1420, 1425, 1426, 1427, - 1429, 1430, 1421, 1421, 1431, 1429, 1431, 1432, 1434, 1433, - 1423, 1435, 1432, 1426, 1427, 1433, 1437, 1435, 1438, 1438, - 1439, 1430, 1442, 1440, 1443, 1444, 1444, 1442, 1434, 1440, - 1437, 1445, 1445, 1446, 1447, 1448, 1451, 1449, 1453, 1439, - 1449, 1450, 1450, 1452, 1456, 1455, 1471, 1446, 1443, 1456, - 1448, 1455, 1447, 1454, 1451, 1452, 1454, 1457, 1453, 1454, - 1457, 1459, 1460, 1461, 1471, 1462, 1472, 1460, 1462, 1464, - 1459, 1454, 1463, 1463, 1465, 1464, 1457, 1466, 1466, 1465, - 1467, 1467, 1469, 1468, 1470, 1472, 1473, 1469, 1461, 1468, - 1474, 1477, 1475, 1474, 1476, 1478, 1477, 1470, 1475, 1479, + 1428, 1429, 1429, 1416, 1423, 1433, 1419, 1430, 1431, 1432, + 1424, 1425, 1430, 1427, 1433, 1434, 1435, 1426, 1426, 1436, + 1434, 1436, 1437, 1439, 1438, 1428, 1440, 1437, 1431, 1432, + 1438, 1442, 1440, 1443, 1443, 1444, 1435, 1447, 1445, 1448, + 1449, 1449, 1447, 1439, 1445, 1442, 1450, 1450, 1451, 1452, + 1453, 1456, 1454, 1458, 1444, 1454, 1455, 1455, 1457, 1461, + 1460, 1477, 1451, 1448, 1461, 1453, 1460, 1452, 1459, 1456, + 1457, 1459, 1462, 1458, 1459, 1462, 1464, 1465, 1466, 1477, + 1467, 18, 1465, 1467, 1469, 1464, 1459, 1468, 1468, 1470, + 1469, 1462, 1471, 1472, 1472, 1470, 1474, 1471, 1473, 1473, - 1476, 1478, 1480, 1481, 1481, 1482, 1473, 1480, 1483, 1484, - 1482, 1485, 1488, 1486, 1487, 1491, 1492, 1493, 1489, 1490, - 1494, 1491, 1479, 1495, 1488, 1498, 1483, 1486, 1487, 1484, - 1489, 1485, 1490, 1501, 1494, 1499, 1492, 1493, 1497, 1497, - 1499, 1500, 1500, 1502, 1495, 1498, 1503, 1504, 1501, 1505, - 1513, 1506, 1507, 1509, 58, 1508, 1511, 1502, 1505, 1507, - 1514, 1515, 1515, 1514, 1508, 1504, 1506, 1508, 1517, 1509, - 1503, 1511, 1516, 1516, 1518, 1513, 1511, 1521, 1519, 1522, - 1517, 1519, 1520, 1520, 1523, 1525, 1524, 1526, 1527, 1523, - 1521, 1524, 1518, 1528, 1533, 1531, 1529, 1527, 1522, 1535, + 1475, 1476, 1474, 1466, 1478, 1475, 1479, 1480, 1483, 1481, + 1480, 1482, 1484, 1483, 1476, 1481, 1485, 1482, 1484, 1486, + 1487, 1487, 1488, 1478, 1486, 1489, 1479, 1488, 1490, 1491, + 1492, 1493, 1497, 1498, 1494, 1495, 1499, 1496, 1497, 1485, + 1500, 1501, 1507, 1489, 1492, 1493, 1494, 1495, 1490, 1491, + 1496, 1503, 1503, 1498, 1500, 1504, 1499, 1507, 1505, 1506, + 1506, 1509, 1501, 1505, 1508, 1510, 1512, 1511, 1515, 1519, + 1513, 1520, 1517, 17, 1520, 1504, 1511, 1513, 1508, 1514, + 1527, 1512, 1524, 1510, 1515, 1509, 1523, 1517, 1514, 1521, + 1521, 1514, 1517, 1527, 1519, 1522, 1522, 1528, 1523, 1525, - 1530, 1531, 1534, 1526, 1525, 1529, 1532, 1532, 1529, 1530, - 1536, 1537, 1528, 1538, 1533, 1534, 1541, 1535, 1542, 1543, - 1543, 1544, 1545, 1546, 1536, 1538, 1548, 1537, 1546, 1547, - 1547, 1545, 1550, 1551, 1549, 1548, 1542, 1544, 1548, 1549, - 1552, 1541, 1553, 1555, 1547, 1556, 1557, 1553, 1553, 1559, - 1550, 1558, 1560, 1562, 1551, 1559, 1558, 1555, 1552, 1562, - 1556, 1561, 1561, 1567, 1563, 1564, 1565, 1568, 1557, 1563, - 1560, 1564, 1565, 1569, 1570, 1571, 1572, 1574, 1571, 1569, - 1576, 1568, 1572, 1567, 1571, 1574, 1577, 1570, 1578, 1579, - 1580, 1581, 1582, 1583, 1584, 1584, 1578, 1587, 1579, 1576, + 1524, 1529, 1525, 1526, 1526, 1530, 1529, 1531, 1532, 1533, + 1530, 1534, 1536, 1535, 1537, 1539, 1528, 1542, 1533, 1540, + 1537, 1536, 1535, 1541, 1532, 1535, 1531, 1538, 1538, 1543, + 1534, 1542, 1540, 1547, 1544, 1539, 1548, 1549, 1549, 1550, + 1551, 1541, 1552, 1555, 1554, 1543, 1544, 1552, 1555, 1551, + 1553, 1553, 1556, 1554, 1548, 1550, 1554, 1557, 1547, 1558, + 1561, 1559, 1563, 1564, 1562, 1553, 1559, 1559, 1564, 1565, + 1556, 1566, 1567, 1567, 1561, 1565, 1568, 1558, 1557, 1562, + 1569, 1570, 1568, 1573, 1563, 1569, 1571, 1570, 1574, 1566, + 1575, 1576, 1571, 1578, 1582, 1583, 1575, 1577, 1586, 1578, - 1588, 1588, 1585, 1580, 1581, 1577, 1582, 1583, 1585, 1586, - 1587, 1589, 1590, 1591, 1592, 1586, 1584, 1593, 1594, 1595, - 1596, 1598, 1598, 1593, 1599, 1600, 1605, 1592, 1601, 1600, - 1590, 1589, 1591, 1601, 1602, 1595, 1603, 1604, 1596, 1602, - 1594, 1603, 1607, 1608, 1599, 1610, 1604, 1609, 1609, 1605, - 1611, 1612, 1613, 1613, 1607, 1614, 1615, 1618, 1608, 1616, - 1617, 1619, 1611, 1615, 1610, 1621, 1622, 1620, 1623, 1614, - 1612, 1616, 1617, 1620, 1623, 57, 1618, 1621, 1624, 1624, - 1625, 1619, 1628, 1625, 1622, 1626, 1626, 1628, 1629, 1630, - 1631, 1631, 1632, 1635, 1633, 1630, 1633, 1629, 1634, 1636, + 1577, 1580, 1574, 1573, 1576, 1587, 1577, 1584, 1585, 1580, + 1588, 1586, 1589, 1582, 1583, 1584, 1591, 1585, 1587, 1590, + 1590, 1592, 1591, 1593, 1588, 1595, 1589, 1592, 1594, 1594, + 1596, 1597, 1599, 1598, 1600, 1601, 1593, 1602, 1599, 1604, + 1604, 1590, 1605, 1606, 1607, 1595, 1598, 1606, 1596, 1607, + 1597, 1601, 1608, 1609, 1610, 1602, 1600, 1608, 1609, 1611, + 1613, 1614, 1605, 1610, 1615, 1615, 1616, 1617, 1618, 1619, + 1619, 1621, 1613, 1625, 1620, 1624, 1614, 1622, 1621, 1617, + 1623, 1628, 1611, 1627, 1626, 1616, 0, 1618, 1620, 1622, + 1626, 1629, 1623, 1625, 1624, 1627, 1642, 1629, 1635, 1628, - 1637, 1634, 1638, 1639, 1632, 1640, 1641, 1642, 1639, 1643, - 1640, 1644, 1646, 1635, 1645, 1641, 1644, 1647, 1637, 1642, - 1638, 1636, 1647, 1645, 1643, 1648, 1649, 1650, 1650, 1647, - 1648, 1651, 1646, 1652, 1654, 1655, 1645, 1651, 1656, 52, - 1657, 1649, 1657, 1658, 1659, 1659, 1660, 1660, 1661, 1661, - 1662, 1655, 1665, 1654, 1652, 1663, 1663, 1658, 1656, 1658, - 1664, 1664, 1666, 1667, 1667, 1668, 1669, 1673, 1670, 1668, - 1662, 1670, 1669, 1665, 1672, 1674, 1675, 1677, 1677, 1676, - 1672, 1674, 1676, 1666, 1679, 1673, 1678, 1678, 1680, 1679, - 1681, 1682, 1683, 1684, 1680, 1685, 1688, 1690, 1691, 1684, + 1630, 1630, 1631, 1632, 1632, 1631, 1634, 1635, 1636, 1637, + 1637, 1634, 1638, 1639, 1636, 1639, 1640, 1641, 1642, 1640, + 1643, 1644, 1645, 1646, 1638, 1647, 1650, 1645, 1646, 1648, + 1649, 1650, 1652, 1651, 1647, 1653, 1655, 1641, 1643, 1644, + 1653, 1648, 1651, 1654, 1658, 1649, 1661, 1653, 1654, 1656, + 1656, 1655, 1652, 1657, 1660, 1651, 1662, 1663, 1664, 1657, + 1664, 1669, 1665, 1666, 1666, 1658, 1661, 1667, 1667, 1668, + 1668, 1672, 1662, 1660, 1670, 1670, 1665, 1663, 1665, 1671, + 1671, 1669, 1673, 1674, 1674, 1675, 1680, 1676, 1677, 1675, + 1679, 1677, 1672, 1676, 1681, 1682, 1679, 1686, 1683, 1688, - 1687, 1675, 1681, 1681, 1681, 1687, 1687, 1695, 1690, 1681, - 1688, 1682, 1683, 1691, 1689, 1685, 1689, 1692, 1693, 1694, - 1696, 1696, 1697, 1692, 1698, 1698, 1699, 1693, 1695, 1700, - 1701, 1701, 1702, 1702, 1703, 1706, 1706, 1707, 1708, 1694, - 1710, 1715, 1711, 1714, 1712, 1718, 1699, 1708, 1697, 1710, - 1712, 1700, 1713, 1713, 1703, 1720, 1715, 1717, 1716, 1719, - 1719, 1721, 1707, 1711, 1714, 1716, 1717, 1723, 1724, 1725, - 1727, 1718, 1723, 1726, 1724, 1732, 1727, 1721, 1728, 1731, - 1726, 1720, 1729, 1729, 1728, 1730, 1733, 1734, 1731, 1725, - 1730, 1735, 1736, 1737, 1735, 1732, 1738, 1738, 1739, 1734, + 1681, 1683, 1686, 1673, 1680, 1684, 1684, 1685, 1685, 1687, + 1689, 1688, 1688, 1688, 1690, 1687, 1691, 1692, 1688, 1694, + 1682, 1695, 1691, 1700, 1694, 1694, 1696, 1697, 1696, 1698, + 1689, 1701, 1700, 1699, 1690, 1695, 1702, 1692, 1697, 1699, + 1703, 1703, 1704, 1706, 1698, 1705, 1705, 1707, 1708, 1708, + 1710, 1701, 1709, 1709, 1713, 1713, 1714, 1702, 1715, 1718, + 1719, 1721, 1717, 1706, 1720, 1720, 1719, 1715, 1704, 1707, + 1710, 1717, 1722, 1725, 1727, 1724, 1723, 1726, 1726, 1728, + 1718, 1714, 1721, 1723, 1724, 1730, 1731, 1722, 1732, 1733, + 1730, 1734, 1731, 1736, 1736, 1728, 1733, 1734, 1735, 1725, - 1740, 1741, 1742, 1743, 1739, 1733, 1740, 1743, 1745, 1746, - 1736, 1747, 1748, 1748, 1749, 1750, 1747, 1742, 1752, 1737, - 1753, 1741, 1762, 1743, 1753, 1755, 1754, 1760, 1745, 1758, - 1750, 1746, 1754, 1749, 1755, 1756, 1756, 1752, 1757, 1761, - 1758, 1762, 1757, 1759, 1759, 1758, 1763, 1764, 1760, 1765, - 1766, 1763, 1768, 1761, 1773, 1767, 1766, 1768, 1769, 1769, - 1770, 1770, 1771, 1773, 1774, 1775, 1771, 1764, 1782, 1765, - 1767, 1776, 1776, 1778, 1778, 1774, 1779, 1780, 1781, 1790, - 1774, 1779, 1779, 1780, 1781, 1775, 1783, 1784, 1787, 1785, - 1789, 1783, 1788, 1792, 1782, 1785, 1788, 1791, 1798, 1784, + 1727, 1737, 1738, 1739, 1735, 1740, 1737, 1741, 1732, 1742, + 1743, 1738, 1742, 1744, 1745, 1745, 1746, 1748, 1749, 1741, + 1747, 1750, 1746, 1739, 1740, 1750, 1747, 1752, 1743, 1753, + 1754, 1755, 1755, 1749, 1756, 1754, 1762, 1748, 1759, 1744, + 1757, 1750, 1760, 1761, 1764, 1762, 1760, 1752, 1764, 1761, + 1765, 1753, 1767, 1756, 1768, 1757, 1769, 1759, 1763, 1763, + 1770, 1765, 1766, 1766, 1771, 1770, 1765, 1772, 1768, 1775, + 1773, 1774, 1781, 1767, 1775, 1769, 1773, 1776, 1776, 1777, + 1777, 1778, 1780, 1781, 1771, 1778, 1774, 1772, 1781, 1782, + 1789, 1780, 1783, 1783, 1785, 1785, 1786, 1787, 1788, 1791, - 1787, 1793, 1789, 1791, 1790, 1794, 1795, 1793, 1797, 1799, - 1794, 1802, 1802, 1801, 1799, 1792, 1801, 1798, 1795, 1805, - 1797, 1803, 1803, 1804, 1804, 1806, 1807, 1810, 1808, 1809, - 47, 1806, 1807, 1808, 1815, 1809, 1810, 1812, 1814, 1805, - 1818, 1814, 1812, 1816, 1816, 1819, 1815, 1822, 1820, 1821, - 1821, 1827, 1818, 1820, 1823, 1824, 1822, 1819, 1825, 1823, - 1824, 1825, 1826, 1826, 1828, 1829, 1830, 1837, 1831, 1832, - 1833, 1827, 1831, 1828, 1832, 1834, 1833, 1835, 1836, 1839, - 1839, 1837, 1840, 1829, 1845, 1830, 1835, 1844, 1841, 1842, - 1842, 1839, 1843, 1834, 1847, 1853, 1836, 1841, 1846, 1844, + 1790, 1786, 1786, 1787, 1788, 1790, 1792, 1794, 1796, 1782, + 1795, 1791, 1792, 1797, 1795, 1798, 1789, 1799, 1800, 1794, + 1796, 1798, 1801, 1802, 1800, 1804, 1805, 1801, 1806, 1808, + 1809, 1809, 1808, 1806, 1812, 1802, 0, 1804, 1797, 1799, + 1810, 1810, 1811, 1811, 1813, 1805, 1814, 1817, 1815, 1816, + 1813, 1822, 1814, 1815, 1812, 1816, 1817, 1819, 1821, 1823, + 1823, 1821, 1819, 1822, 1825, 1826, 1827, 1828, 1828, 1829, + 1830, 1827, 1833, 1833, 1831, 1830, 1825, 1826, 1829, 1831, + 1832, 1834, 1835, 1832, 1836, 1837, 1838, 1839, 1840, 1841, + 1838, 1835, 1839, 1843, 1840, 1844, 1842, 1847, 1846, 1846, - 1840, 1843, 1854, 1846, 1856, 1845, 1857, 1847, 1850, 1850, - 1852, 1853, 1859, 1852, 1866, 1858, 1860, 1860, 1854, 1856, - 1857, 1858, 1861, 1863, 1861, 1862, 1862, 1865, 1867, 1859, - 1869, 1863, 1868, 1868, 1865, 1870, 1866, 1871, 1872, 1869, - 1873, 1874, 1875, 1878, 1881, 1876, 1879, 18, 1867, 1871, - 1872, 1876, 1873, 1880, 1880, 1882, 1870, 1875, 1879, 1885, - 1889, 1884, 1881, 1878, 1876, 1883, 1884, 1874, 1883, 1887, - 1888, 1890, 1888, 1891, 1887, 1882, 1890, 1893, 1889, 1885, - 1891, 1895, 1896, 1897, 1899, 1898, 1893, 1898, 1901, 1904, - 1901, 1896, 1902, 1903, 1903, 1897, 1905, 1907, 1906, 1895, + 1853, 1834, 1836, 1848, 1837, 1842, 0, 1841, 1852, 1844, + 1846, 1843, 1848, 1849, 1849, 1847, 1850, 1850, 1851, 1854, + 1852, 1853, 1855, 1861, 1854, 1858, 1858, 1851, 1860, 1862, + 1865, 1860, 1864, 1867, 1866, 1855, 1868, 1868, 1871, 1861, + 1866, 1869, 1874, 1869, 1865, 1862, 1871, 1864, 1870, 1870, + 1867, 1873, 1875, 1876, 1876, 1878, 1877, 1879, 1873, 1880, + 1882, 1881, 1883, 1886, 1874, 1877, 1887, 1889, 1884, 1879, + 1890, 1880, 1875, 1881, 1884, 1893, 1878, 1883, 1887, 1888, + 1888, 1891, 1897, 1886, 1891, 1889, 1882, 1884, 1892, 1895, + 1890, 1903, 1898, 1892, 1895, 1893, 1896, 1898, 1896, 1899, - 1906, 1905, 1907, 1899, 1908, 1909, 1902, 1910, 1911, 1908, - 1914, 1912, 1913, 1916, 1911, 1904, 1912, 1917, 1914, 1918, - 1918, 1919, 1919, 1909, 1920, 1913, 1921, 1910, 1922, 1925, - 1923, 1917, 1916, 1926, 1922, 1923, 1924, 1933, 1924, 1920, - 1928, 1926, 1927, 1927, 1929, 1929, 1921, 1925, 1931, 1926, - 1930, 1930, 1928, 1932, 1935, 1933, 1937, 1931, 1932, 1936, - 1939, 1936, 1938, 1935, 1940, 1947, 1935, 1938, 1938, 1939, - 1942, 1946, 1948, 1943, 1944, 1950, 1940, 1937, 1943, 1944, - 1951, 1948, 1942, 1952, 1946, 1947, 1949, 1949, 1953, 1954, - 1958, 1956, 1959, 1950, 1957, 1960, 1961, 1959, 1951, 1952, + 1897, 1901, 1904, 1905, 1907, 1906, 1899, 1906, 1910, 1903, + 1901, 1904, 1909, 1912, 1909, 1905, 1911, 1911, 1914, 1913, + 1914, 1915, 1910, 1907, 1913, 1916, 1915, 1917, 1918, 1919, + 1916, 1920, 1922, 1921, 1924, 1919, 1920, 1925, 1929, 1912, + 1922, 1926, 1926, 1927, 1927, 1917, 1921, 1928, 1918, 1930, + 1933, 1925, 1931, 1924, 1932, 1930, 1932, 1931, 1929, 1934, + 1935, 1935, 1928, 1939, 1936, 1937, 1937, 1934, 1933, 1938, + 1938, 1941, 1939, 1940, 1943, 1934, 1936, 1944, 1940, 1944, + 1945, 1947, 1946, 1943, 1948, 1950, 1943, 1946, 1946, 1941, + 1947, 1954, 1955, 1951, 1952, 1958, 1948, 1950, 1951, 1952, - 1960, 1964, 1953, 1956, 1954, 1961, 1957, 1964, 1966, 1967, - 1958, 1968, 1969, 1970, 1966, 1971, 1972, 1972, 1973, 1979, - 1964, 1974, 1974, 1975, 1971, 1976, 1968, 1973, 1977, 1976, - 1969, 1978, 1967, 1977, 1980, 2025, 1985, 1981, 1970, 1980, - 1980, 1979, 1975, 1981, 1978, 1982, 1983, 1984, 2025, 1983, - 1990, 1982, 1988, 1988, 1993, 1984, 1985, 1989, 1989, 1990, - 1991, 1991, 1992, 1992, 1994, 1995, 1993, 2003, 1996, 1997, - 1997, 1995, 1989, 1996, 1998, 1998, 1999, 2005, 2000, 2007, - 2009, 1999, 1994, 1989, 2000, 2002, 2004, 2003, 2008, 2002, - 2004, 2010, 2012, 2008, 2011, 2013, 2014, 2005, 2016, 2011, + 1956, 1945, 1957, 1957, 1954, 1959, 1960, 1961, 1964, 1956, + 1962, 1966, 1955, 1958, 1965, 1975, 1977, 1978, 1976, 1967, + 1964, 1961, 1960, 1959, 1967, 1962, 1965, 1968, 1969, 1972, + 1974, 1966, 1968, 1976, 1977, 1972, 1974, 1969, 1975, 1983, + 1979, 1981, 1978, 1980, 1980, 1982, 1982, 1984, 1972, 1979, + 1981, 1984, 1985, 1986, 1987, 1988, 1989, 1985, 1983, 1990, + 1988, 1988, 1989, 1992, 1991, 1990, 1986, 1991, 1993, 1996, + 1996, 1992, 1997, 1997, 1998, 0, 1987, 1999, 1999, 2000, + 2000, 2001, 2002, 1998, 2003, 2010, 2004, 1997, 1993, 2010, + 2003, 2004, 2011, 2001, 2005, 2005, 2006, 2006, 1997, 2007, - 2015, 2017, 2017, 2009, 2007, 2015, 2010, 2019, 2018, 2020, - 2012, 2013, 2018, 2021, 2020, 2022, 2014, 2023, 2024, 2026, - 2016, 2029, 2019, 2024, 2027, 2027, 2030, 2022, 2031, 2029, - 2032, 2033, 2034, 2035, 2036, 2037, 2023, 2026, 2041, 2021, - 2040, 2040, 2039, 2041, 2044, 2030, 2036, 2031, 2043, 2042, - 2045, 2034, 2042, 2032, 2035, 2033, 2037, 2039, 2044, 2046, - 2046, 2043, 2049, 2045, 2047, 2047, 2048, 2048, 2050, 2051, - 2051, 2052, 2053, 2053, 2054, 2057, 2058, 2049, 2059, 2054, - 2052, 2050, 2056, 2052, 2060, 2060, 2062, 2056, 2061, 2061, - 2059, 2063, 2063, 2064, 2066, 2057, 2058, 2065, 2065, 2067, + 2002, 2008, 2012, 2013, 2007, 2015, 2012, 2008, 2016, 2017, + 2018, 2019, 2011, 2016, 2023, 2020, 2019, 2022, 2021, 2023, + 2024, 2025, 2025, 2013, 2026, 2018, 2027, 2029, 2026, 2032, + 2015, 2028, 2017, 2020, 2021, 2031, 2028, 2022, 2030, 2033, + 2035, 2027, 2024, 2034, 2033, 2030, 2038, 2031, 2032, 2036, + 2036, 2039, 2040, 2029, 2038, 2041, 2034, 2042, 2035, 2044, + 2043, 2045, 2046, 2049, 2049, 2051, 0, 2048, 2051, 2050, + 2039, 2040, 2052, 2045, 2050, 2053, 0, 2054, 2041, 2043, + 2044, 2042, 2048, 2046, 2058, 2052, 2055, 2055, 2059, 2053, + 2054, 2056, 2056, 2057, 2057, 2060, 2060, 2061, 2066, 2058, - 2068, 2068, 2069, 2069, 2067, 2062, 2070, 2071, 2072, 2066, - 2073, 2064, 2075, 2076, 2076, 2077, 2071, 2075, 2078, 2078, - 2070, 2079, 2072, 2081, 2080, 2084, 2081, 2082, 2082, 2073, - 2080, 2083, 2083, 2085, 2077, 2086, 2087, 2087, 2089, 2079, - 2090, 2091, 2092, 2082, 2084, 2094, 2092, 2095, 2085, 2093, - 2093, 2096, 2095, 2097, 2086, 2100, 2091, 2102, 2089, 2099, - 2099, 2103, 2101, 2090, 2094, 2104, 2096, 2105, 2097, 2101, - 2111, 2102, 2106, 2106, 2109, 2100, 2107, 2109, 2108, 2103, - 2108, 2112, 2111, 2104, 2113, 2107, 2112, 2114, 2115, 2113, - 2116, 2117, 2109, 2105, 2109, 2118, 2117, 2120, 2121, 2122, + 2063, 2059, 2062, 2062, 2067, 2063, 2061, 2065, 2068, 2061, + 2069, 2069, 2065, 2070, 2070, 2071, 2072, 2072, 2066, 2073, + 2068, 2074, 2074, 2075, 2067, 2076, 2077, 2077, 2078, 2078, + 2076, 2079, 2080, 2081, 2071, 2082, 2086, 2073, 2075, 2084, + 2088, 2080, 2085, 2085, 2084, 2079, 2089, 2081, 2087, 2087, + 2090, 2093, 2089, 2090, 2082, 2086, 2091, 2091, 2088, 2092, + 2092, 2094, 2095, 2096, 2096, 2098, 2099, 2100, 2103, 2101, + 2093, 2105, 2091, 2101, 2102, 2102, 2094, 2106, 2104, 2108, + 2108, 2095, 2100, 2104, 2109, 2098, 2105, 2103, 2110, 2099, + 2112, 2111, 2106, 2113, 2114, 2110, 2115, 2115, 2116, 2117, - 2123, 2115, 2120, 2121, 2124, 2126, 2123, 2125, 2128, 2129, - 2126, 2116, 2114, 2125, 2122, 2127, 2130, 2131, 2132, 2130, - 2127, 2118, 2129, 2133, 2135, 2124, 2131, 2132, 2134, 2136, - 2137, 2140, 2133, 2128, 17, 2136, 2137, 2134, 2135, 2138, - 2142, 2143, 2143, 2138, 2144, 2145, 2145, 2146, 2147, 2142, - 2144, 2140, 2146, 2149, 2145, 2150, 2151, 2151, 2152, 2156, - 2162, 2157, 2155, 2153, 2160, 2158, 0, 2160, 2147, 2149, - 2147, 2150, 2153, 2152, 2155, 2156, 2157, 2158, 2161, 2163, - 2162, 2164, 2164, 2161, 2165, 2165, 2167, 2167, 2169, 2168, - 2170, 2163, 2168, 2169, 2171, 2172, 2170, 2173, 2173, 2174, + 2120, 2117, 2123, 2118, 2109, 2111, 2118, 2116, 2112, 2121, + 2122, 2113, 2120, 2124, 2121, 2122, 2125, 2126, 2127, 2129, + 2114, 2118, 2126, 2118, 2129, 2130, 2124, 2123, 2131, 2132, + 2130, 2133, 2134, 2137, 2135, 2132, 2136, 2125, 2134, 2135, + 2138, 2136, 2139, 2131, 2127, 2139, 2140, 2141, 2142, 2144, + 2143, 2149, 2133, 2138, 2145, 2140, 2141, 2142, 2137, 2143, + 2145, 2146, 2147, 2144, 2151, 2156, 2147, 2146, 2152, 2152, + 2153, 2149, 2155, 2151, 2154, 2154, 2153, 2155, 2158, 2159, + 2160, 2160, 2161, 2154, 2162, 2156, 2164, 2156, 2165, 2167, + 2166, 2171, 2213, 2162, 2158, 2159, 2169, 2161, 2164, 2169, - 2171, 2175, 2175, 2176, 2172, 2177, 2178, 2179, 2179, 2181, - 2180, 2188, 2182, 2174, 2184, 2176, 2180, 2182, 2184, 2177, - 2188, 2185, 2189, 2181, 2185, 2178, 2186, 2186, 2187, 2195, - 2190, 2191, 2191, 2187, 2190, 2192, 2194, 2196, 2197, 2198, - 2199, 2194, 2189, 2198, 2203, 2200, 2205, 2201, 2192, 2195, - 2200, 2206, 2197, 2201, 2207, 2202, 2209, 2196, 2205, 2207, - 2199, 2202, 2203, 2208, 2209, 2213, 2210, 2206, 2210, 2208, - 2214, 2214, 2215, 2216, 2219, 2215, 2217, 2217, 2219, 2213, - 2220, 2221, 2222, 2222, 2228, 2223, 2220, 2226, 2226, 2230, - 2231, 2234, 2235, 2221, 2223, 2236, 2234, 2238, 2238, 2216, + 2172, 2167, 2170, 2177, 2165, 2166, 2177, 2170, 2173, 2173, + 2213, 2171, 2172, 2174, 2174, 2176, 2176, 2178, 2179, 2180, + 2181, 2183, 2178, 2186, 2179, 2180, 2182, 2182, 2185, 2181, + 2184, 2184, 2187, 2188, 2188, 2183, 2189, 2186, 2190, 2191, + 2185, 2193, 2189, 2194, 2191, 2193, 2194, 2195, 2195, 2196, + 2198, 2187, 2190, 2199, 2196, 2197, 2197, 2200, 2202, 2198, + 2204, 2200, 2201, 2201, 2205, 2204, 2206, 2207, 2208, 2209, + 2210, 2202, 2208, 2199, 2211, 2210, 2212, 2216, 2215, 2218, + 2211, 2207, 2212, 2217, 2205, 2218, 2206, 2219, 2217, 2209, + 2215, 2223, 2220, 2216, 2220, 2219, 2224, 2224, 2225, 2226, - 2236, 2244, 2228, 2230, 2237, 2242, 2231, 2240, 2240, 2237, - 2245, 2242, 2243, 2243, 2246, 2248, 2249, 2244, 2235, 2246, - 2250, 2250, 2252, 2253, 2254, 2255, 2257, 2257, 2249, 2253, - 2258, 2252, 2245, 2258, 2248, 2259, 2264, 2260, 2262, 2262, - 2255, 2264, 2254, 2263, 2263, 2265, 2267, 2266, 2268, 2271, - 2268, 2267, 2269, 2270, 2259, 2260, 2266, 2272, 2273, 2274, - 0, 2271, 2272, 2265, 2274, 2279, 2269, 2270, 2275, 2275, - 2276, 2276, 2277, 2277, 2278, 2278, 2280, 2279, 2273, 2281, - 2282, 2282, 2283, 2283, 2281, 2284, 2285, 2286, 2287, 2288, - 2288, 2289, 2290, 2290, 2280, 2291, 2291, 2284, 2285, 2294, + 2229, 2225, 2227, 2227, 2229, 2223, 2230, 2231, 2232, 2232, + 2238, 2233, 2230, 2236, 2236, 2240, 2241, 2244, 2245, 2231, + 2233, 2246, 2244, 2248, 2248, 2226, 2246, 2254, 2238, 2240, + 2247, 2252, 2241, 2250, 2250, 2247, 2255, 2252, 2253, 2253, + 2256, 2258, 2259, 2254, 2245, 2256, 2260, 2260, 2262, 2263, + 2264, 2265, 2267, 2267, 2259, 2263, 2268, 2262, 2255, 2268, + 2258, 2269, 2274, 2270, 2272, 2272, 2265, 2274, 2264, 2273, + 2273, 2275, 2277, 2276, 2278, 2281, 2278, 2277, 2279, 2280, + 2269, 2270, 2276, 2282, 2283, 2284, 0, 2281, 2282, 2275, + 2284, 2289, 2279, 2280, 2285, 2285, 2286, 2286, 2287, 2287, - 2292, 2293, 2295, 2296, 2287, 2298, 2294, 2286, 2299, 2301, - 2289, 2292, 2297, 2293, 2295, 2300, 2300, 2297, 2301, 2302, - 2303, 2304, 2305, 2296, 2306, 2298, 2309, 2307, 2299, 2308, - 2308, 2313, 2310, 2311, 2304, 2309, 2314, 2315, 2306, 2307, - 2303, 2316, 2317, 0, 2316, 2302, 2305, 2310, 2311, 2313, - 2318, 2327, 2319, 2320, 2320, 2318, 2317, 2319, 2314, 2328, - 2315, 2321, 2321, 2322, 2322, 2324, 2324, 2326, 2326, 2327, - 2328, 2329, 2330, 2332, 2333, 2334, 2335, 2336, 2337, 2338, - 2339, 2338, 2345, 2340, 2341, 2362, 2336, 2330, 2342, 2342, - 2329, 2362, 2333, 2332, 2344, 2344, 2335, 2334, 2337, 2346, + 2288, 2288, 2290, 2289, 2283, 2291, 2292, 2292, 2293, 2293, + 2291, 2294, 2295, 2296, 2297, 2298, 2298, 2299, 2300, 2300, + 2290, 2301, 2301, 2294, 2295, 2304, 2302, 2303, 2305, 2306, + 2297, 2308, 2304, 2296, 2309, 2311, 2299, 2302, 2307, 2303, + 2305, 2310, 2310, 2307, 2311, 2312, 2313, 2314, 2315, 2306, + 2316, 2308, 2319, 2317, 2309, 2318, 2318, 2323, 2320, 2321, + 2314, 2319, 2324, 2325, 2316, 2317, 2313, 2326, 2327, 0, + 2326, 2312, 2315, 2320, 2321, 2323, 2328, 2337, 2329, 2330, + 2330, 2328, 2327, 2329, 2324, 2338, 2325, 2331, 2331, 2332, + 2332, 2334, 2334, 2336, 2336, 2337, 2338, 2339, 2340, 2342, - 2339, 2340, 2341, 2349, 2345, 2347, 2347, 2351, 2346, 2350, - 2350, 2352, 2349, 2353, 2355, 2354, 2356, 2357, 2358, 2365, - 2353, 2359, 2359, 2360, 2360, 2351, 2361, 2361, 2363, 2352, - 2354, 2366, 2355, 2357, 2356, 2364, 2366, 2358, 2365, 2367, - 2368, 2370, 2369, 2370, 2371, 2371, 2363, 2369, 2375, 2372, - 2364, 2372, 2373, 2373, 2377, 2378, 2379, 2380, 2382, 2367, - 2368, 2381, 2383, 2377, 2386, 2389, 2381, 2375, 2379, 2387, - 2388, 2388, 2387, 2390, 2378, 2391, 2391, 2380, 2382, 2392, - 2389, 2383, 2394, 2392, 2386, 2395, 2396, 2396, 2397, 2395, - 2399, 2390, 2400, 2401, 2402, 2402, 2404, 2394, 2405, 2406, + 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2348, 2356, 2350, + 2351, 2373, 2346, 2340, 2352, 2352, 2339, 2373, 2343, 2342, + 2354, 2354, 2345, 2344, 2347, 2357, 2349, 2350, 2351, 2360, + 2356, 2358, 2358, 2362, 2357, 2361, 2361, 2363, 2360, 2364, + 2366, 2365, 2367, 2368, 2369, 2376, 2364, 2370, 2370, 2371, + 2371, 2362, 2372, 2372, 2374, 2363, 2365, 2377, 2366, 2368, + 2367, 2375, 2377, 2369, 2376, 2378, 2379, 2381, 2380, 2381, + 2382, 2382, 2374, 2380, 2386, 2383, 2375, 2383, 2384, 2384, + 2388, 2389, 2390, 2391, 2393, 2378, 2379, 2392, 2394, 2388, + 2397, 2400, 2392, 2386, 2390, 2398, 2399, 2399, 2398, 2401, - 2408, 2397, 2412, 2406, 2420, 2399, 2410, 2405, 2404, 2407, - 2407, 2410, 2400, 2401, 2409, 2409, 2411, 2413, 2412, 2408, - 2414, 2414, 2419, 2419, 2422, 2411, 2420, 2421, 2421, 2413, - 2423, 2424, 2425, 2426, 2426, 2427, 2437, 2422, 2429, 2429, - 2424, 2425, 2432, 2423, 2433, 2434, 2435, 2432, 2436, 2433, - 2427, 2435, 2438, 2441, 2439, 2437, 2436, 2444, 2442, 2434, - 2443, 2438, 2439, 2442, 2448, 2443, 2445, 2445, 2441, 2446, - 2446, 2448, 2444, 2447, 2447, 2449, 2450, 2451, 2452, 0, - 2449, 2453, 2454, 2454, 2452, 2455, 2453, 2456, 2457, 2457, - 2458, 2458, 2456, 2461, 2450, 2451, 2462, 2462, 2463, 2464, + 2389, 2402, 2402, 2391, 2393, 2403, 2400, 2394, 2405, 2403, + 2397, 2406, 2407, 2407, 2408, 2406, 2410, 2401, 2411, 2412, + 2413, 2413, 2415, 2405, 2416, 2417, 2419, 2408, 2423, 2417, + 2431, 2410, 2421, 2416, 2415, 2418, 2418, 2421, 2411, 2412, + 2420, 2420, 2422, 2424, 2423, 2419, 2425, 2425, 2430, 2430, + 2433, 2422, 2431, 2432, 2432, 2424, 2434, 2435, 2436, 2437, + 2437, 2438, 2448, 2433, 2440, 2440, 2435, 2436, 2443, 2434, + 2444, 2445, 2446, 2443, 2447, 2444, 2438, 2446, 2449, 2452, + 2450, 2448, 2447, 2455, 2453, 2445, 2454, 2449, 2450, 2453, + 2459, 2454, 2456, 2456, 2452, 2457, 2457, 2459, 2455, 2458, - 2455, 2463, 2465, 2466, 2464, 2464, 2461, 2465, 2466, 2467, - 2468, 2469, 2470, 2471, 2472, 2469, 2468, 2470, 2473, 2474, - 2477, 2475, 2471, 2467, 2476, 2477, 2473, 2475, 2480, 2472, - 2476, 2478, 2481, 2480, 2483, 2481, 2485, 2486, 2487, 2488, - 2474, 2485, 2486, 2478, 2489, 2490, 2483, 2491, 2491, 2492, - 2496, 2497, 2488, 2489, 2490, 2498, 2487, 2500, 2492, 2499, - 2499, 2501, 2502, 2503, 2503, 2504, 2506, 2508, 2509, 2496, - 2501, 2497, 2509, 2511, 2498, 0, 2500, 2502, 2510, 2510, - 2512, 2506, 2513, 2514, 2504, 2516, 2512, 2508, 2513, 2514, - 2515, 2515, 2517, 2516, 2519, 2520, 2522, 2517, 2511, 2523, + 2458, 2460, 2461, 2462, 2463, 0, 2460, 2464, 2465, 2465, + 2463, 2466, 2464, 2467, 2468, 2468, 2469, 2469, 2467, 2472, + 2461, 2462, 2473, 2473, 2474, 2475, 2466, 2474, 2476, 2477, + 2475, 2475, 2472, 2476, 2477, 2478, 2479, 2480, 2481, 2482, + 2483, 2480, 2479, 2481, 2484, 2485, 2488, 2486, 2482, 2478, + 2487, 2488, 2484, 2486, 2491, 2483, 2487, 2489, 2492, 2491, + 2494, 2492, 2496, 2497, 2498, 2499, 2485, 2496, 2497, 2489, + 2500, 2501, 2494, 2502, 2502, 2503, 2507, 2508, 2499, 2500, + 2501, 2509, 2498, 2511, 2503, 2510, 2510, 2512, 2513, 2514, + 2514, 2515, 2517, 2519, 2520, 2507, 2512, 2508, 2520, 2522, - 2522, 2524, 2527, 2519, 2526, 2526, 2528, 2528, 2520, 2529, - 2529, 2531, 2531, 2523, 2532, 2537, 2524, 2533, 2532, 2539, - 2527, 2538, 2533, 2535, 2535, 2542, 2538, 2540, 2543, 2543, - 2550, 2539, 2540, 2540, 2548, 2537, 2545, 2545, 2546, 2546, - 2547, 2552, 2556, 2547, 2559, 2542, 2558, 2548, 2550, 2553, - 2553, 2554, 2554, 2555, 2555, 2557, 2557, 2556, 2560, 2558, - 2561, 2552, 2559, 2562, 2562, 2563, 2561, 2568, 2567, 2563, - 2571, 2569, 2560, 2567, 2567, 2570, 2571, 2572, 2573, 2583, - 2574, 2575, 2575, 2572, 2574, 2580, 2581, 2578, 2586, 2581, - 2568, 2569, 2578, 2580, 2584, 2570, 2587, 2584, 2585, 2585, + 2509, 0, 2511, 2513, 2521, 2521, 2523, 2517, 2524, 2525, + 2515, 2527, 2523, 2519, 2524, 2525, 2526, 2526, 2528, 2527, + 2530, 2531, 2533, 2528, 2522, 2534, 2533, 2535, 2538, 2530, + 2537, 2537, 2539, 2539, 2531, 2540, 2540, 2542, 2542, 2534, + 2543, 2548, 2535, 2544, 2543, 2550, 2538, 2549, 2544, 2546, + 2546, 2553, 2549, 2551, 2554, 2554, 2561, 2550, 2551, 2551, + 2559, 2548, 2556, 2556, 2557, 2557, 2558, 2563, 2567, 2558, + 2570, 2553, 2569, 2559, 2561, 2564, 2564, 2565, 2565, 2566, + 2566, 2568, 2568, 2567, 2571, 2569, 2572, 2563, 2570, 2573, + 2573, 2574, 2572, 2579, 2578, 2574, 2582, 2580, 2571, 2578, - 2588, 2587, 2589, 2573, 2583, 2586, 2586, 2590, 2591, 2591, - 2592, 2594, 2593, 2595, 2613, 2593, 2598, 2613, 2588, 2596, - 0, 2590, 2589, 2593, 2592, 2594, 2606, 2596, 2597, 2599, - 2599, 2604, 2595, 2597, 2597, 2598, 2600, 2600, 2601, 2601, - 2602, 2602, 2603, 2603, 2605, 2607, 2606, 2604, 2608, 2605, - 2609, 2614, 2610, 2612, 2612, 2616, 2616, 2608, 2617, 2618, - 2618, 2619, 2621, 2621, 2622, 2617, 2619, 2623, 2624, 2614, - 2609, 2607, 2610, 2622, 2626, 0, 2623, 2624, 2627, 2627, - 2628, 2629, 2630, 2631, 2628, 2632, 2633, 2634, 2631, 2631, - 2629, 2634, 2626, 2642, 2638, 2633, 2643, 2630, 2632, 2638, + 2578, 2581, 2582, 2583, 2584, 2594, 2585, 2586, 2586, 2583, + 2585, 2591, 2592, 2589, 2597, 2592, 2579, 2580, 2589, 2591, + 2595, 2581, 2598, 2595, 2596, 2596, 2599, 2598, 2600, 2584, + 2594, 2597, 2597, 2601, 2602, 2602, 2603, 2605, 2604, 2606, + 2624, 2604, 2609, 2624, 2599, 2607, 0, 2601, 2600, 2604, + 2603, 2605, 2617, 2607, 2608, 2610, 2610, 2615, 2606, 2608, + 2608, 2609, 2611, 2611, 2612, 2612, 2613, 2613, 2614, 2614, + 2616, 2618, 2617, 2615, 2619, 2616, 2620, 2625, 2621, 2623, + 2623, 2627, 2627, 2619, 2628, 2629, 2629, 2630, 2632, 2632, + 2633, 2628, 2630, 2634, 2635, 2625, 2620, 2618, 2621, 2633, - 2639, 2639, 2641, 2641, 2644, 2646, 2647, 2642, 2650, 2652, - 2651, 2653, 2655, 2657, 2646, 2659, 0, 2653, 2647, 2651, - 2659, 2643, 2644, 2660, 2655, 2661, 2661, 2662, 2660, 2652, - 2664, 2667, 2667, 2650, 2657, 2664, 2662, 2665, 2665, 2668, - 2668, 2665, 2669, 2669, 2670, 2671, 2673, 2672, 2675, 2679, - 2676, 2673, 2677, 2670, 2675, 2676, 2680, 2677, 2678, 2678, - 2681, 2683, 2685, 2692, 2682, 2671, 2672, 2679, 2680, 2682, - 2684, 2686, 2686, 2688, 2693, 2689, 2684, 2688, 2690, 2683, - 2689, 2681, 2692, 2690, 2691, 2691, 2694, 2685, 2698, 2693, - 2696, 2696, 2699, 2700, 2701, 2702, 2703, 2700, 2706, 2704, + 2637, 0, 2634, 2635, 2638, 2638, 2639, 2640, 2641, 2642, + 2639, 2643, 2644, 2645, 2642, 2642, 2640, 2645, 2637, 2653, + 2649, 2644, 2654, 2641, 2643, 2649, 2650, 2650, 2652, 2652, + 2655, 2657, 2658, 2653, 2661, 2663, 2662, 2664, 2666, 2668, + 2657, 2670, 0, 2664, 2658, 2662, 2670, 2654, 2655, 2671, + 2666, 2672, 2672, 2673, 2671, 2663, 2675, 2678, 2678, 2661, + 2668, 2675, 2673, 2676, 2676, 2679, 2679, 2676, 2680, 2680, + 2681, 2682, 2684, 2683, 2686, 2690, 2687, 2684, 2688, 2681, + 2686, 2687, 2691, 2688, 2689, 2689, 2692, 2694, 2696, 2703, + 2693, 2682, 2683, 2690, 2691, 2693, 2695, 2697, 2697, 2699, - 2708, 2698, 2713, 2701, 2705, 2699, 2694, 2704, 0, 2705, - 2724, 2702, 2707, 2707, 2717, 2703, 2710, 2710, 2718, 2708, - 2711, 2711, 2719, 2713, 2706, 2715, 2715, 2720, 2722, 2722, - 2717, 2723, 2720, 2724, 2718, 2725, 2727, 2727, 2719, 2728, - 2729, 2730, 2730, 2733, 2734, 2736, 2739, 2735, 2737, 2737, - 2734, 2723, 2735, 2728, 2725, 2738, 2738, 2740, 2740, 2729, - 2741, 2742, 2743, 2733, 2745, 2747, 2739, 2736, 2744, 2746, - 2742, 2741, 2748, 2748, 2744, 2749, 2754, 2740, 2749, 2750, - 2750, 2746, 2743, 2745, 2755, 2747, 2756, 2759, 2754, 2757, - 2757, 2758, 2756, 2759, 2758, 2760, 2762, 2763, 2763, 2765, + 2704, 2700, 2695, 2699, 2701, 2694, 2700, 2692, 2703, 2701, + 2702, 2702, 2705, 2696, 2709, 2704, 2707, 2707, 2710, 2711, + 2712, 2713, 2714, 2711, 2717, 2715, 2719, 2709, 2724, 2712, + 2716, 2710, 2705, 2715, 0, 2716, 2735, 2713, 2718, 2718, + 2728, 2714, 2721, 2721, 2729, 2719, 2722, 2722, 2730, 2724, + 2717, 2726, 2726, 2731, 2733, 2733, 2728, 2734, 2731, 2735, + 2729, 2736, 2738, 2738, 2730, 2739, 2740, 2741, 2741, 2744, + 2745, 2747, 2750, 2746, 2748, 2748, 2745, 2734, 2746, 2739, + 2736, 2749, 2749, 2751, 2751, 2740, 2752, 2753, 2754, 2744, + 2756, 2758, 2750, 2747, 2755, 2757, 2753, 2752, 2759, 2759, - 2764, 2762, 2766, 2767, 2755, 2764, 2768, 2768, 2766, 2771, - 2770, 2772, 2773, 2760, 2774, 2774, 2775, 2776, 2765, 2781, - 2767, 2767, 2770, 2778, 2778, 2773, 2776, 2771, 2779, 2779, - 2783, 2783, 2780, 2781, 2782, 2775, 2772, 2780, 2791, 2782, - 2784, 2784, 2785, 2785, 2786, 2788, 2788, 2793, 2794, 2786, - 2795, 2796, 2796, 2798, 2798, 2800, 2801, 2791, 2805, 2799, - 2802, 2802, 2803, 2803, 2805, 2801, 2806, 2815, 2807, 2793, - 2794, 2808, 2795, 2799, 0, 2800, 2808, 2811, 2811, 2813, - 2813, 2815, 2817, 2814, 2816, 2818, 2806, 2807, 2814, 2822, - 2816, 2819, 2819, 2818, 2817, 2820, 2823, 2824, 2825, 2826, + 2755, 2760, 2765, 2751, 2760, 2761, 2761, 2757, 2754, 2756, + 2766, 2758, 2767, 2770, 2765, 2768, 2768, 2769, 2767, 2770, + 2769, 2771, 2773, 2774, 2774, 2776, 2775, 2773, 2777, 2778, + 2766, 2775, 2779, 2779, 2777, 2782, 2781, 2783, 2784, 2771, + 2785, 2785, 2786, 2787, 2776, 2792, 2778, 2778, 2781, 2789, + 2789, 2784, 2787, 2782, 2790, 2790, 2794, 2794, 2791, 2792, + 2793, 2786, 2783, 2791, 2802, 2793, 2795, 2795, 2796, 2796, + 2797, 2799, 2799, 2804, 2805, 2797, 2806, 2807, 2807, 2809, + 2809, 2811, 2812, 2802, 2816, 2810, 2813, 2813, 2814, 2814, + 2816, 2812, 2817, 2826, 2818, 2804, 2805, 2819, 2806, 2810, - 2820, 2829, 2824, 2828, 2830, 2826, 2831, 2833, 2836, 2822, - 2825, 2828, 2834, 2835, 2837, 2840, 2823, 2839, 2842, 2837, - 2829, 2841, 2839, 2842, 2830, 2833, 2831, 2841, 2834, 2836, - 2835, 2835, 2844, 2845, 2876, 2840, 2848, 2848, 2849, 2849, - 2850, 2854, 2854, 2876, 2850, 2860, 2845, 2856, 2856, 2860, - 2857, 2857, 2844, 2857, 2858, 2858, 2863, 2858, 2859, 2859, - 2867, 2859, 2862, 2862, 2864, 2868, 2869, 2870, 2870, 2873, - 2874, 2869, 2875, 2877, 2863, 2879, 2875, 2874, 2864, 0, - 2867, 2880, 2881, 2881, 2884, 2868, 2882, 2882, 2877, 2886, - 2880, 2883, 2883, 2879, 2873, 2885, 2889, 2887, 2886, 2884, + 0, 2811, 2819, 2822, 2822, 2824, 2824, 2826, 2828, 2825, + 2827, 2829, 2817, 2818, 2825, 2833, 2827, 2830, 2830, 2829, + 2828, 2831, 2834, 2835, 2836, 2837, 2831, 2840, 2835, 2839, + 2841, 2837, 2842, 2844, 2847, 2833, 2836, 2839, 2845, 2846, + 2848, 2851, 2834, 2850, 2853, 2848, 2840, 2852, 2850, 2853, + 2841, 2844, 2842, 2852, 2845, 2847, 2846, 2846, 2855, 2856, + 2887, 2851, 2859, 2859, 2860, 2860, 2861, 2865, 2865, 2887, + 2861, 2871, 2856, 2867, 2867, 2871, 2868, 2868, 2855, 2868, + 2869, 2869, 2874, 2869, 2870, 2870, 2878, 2870, 2873, 2873, + 2875, 2879, 2880, 2881, 2881, 2884, 2885, 2880, 2886, 2888, - 2885, 2886, 2887, 2887, 2888, 2890, 2891, 2892, 2893, 2894, - 2888, 2896, 2892, 2893, 2895, 2895, 2897, 2896, 2898, 2898, - 2890, 2889, 2897, 2899, 2899, 2900, 2931, 2891, 2894, 2931, - 2900, 2903, 2903, 2906, 2906, 2907, 2907, 2908, 2908, 2909, - 2909, 2910, 2910, 2911, 2911, 2912, 2912, 2914, 2915, 2915, - 2916, 2917, 2918, 2922, 2920, 2924, 2914, 2921, 2921, 2916, - 2926, 2923, 2930, 2917, 2925, 2925, 2932, 2924, 2922, 2927, - 2927, 2934, 2918, 2920, 2923, 2926, 2933, 2933, 2936, 2937, - 2930, 2936, 2938, 2939, 2940, 2937, 2941, 2944, 2939, 2934, - 2942, 2945, 2932, 2944, 2948, 2957, 2938, 2959, 2957, 2964, + 2874, 2890, 2886, 2885, 2875, 0, 2878, 2891, 2892, 2892, + 2895, 2879, 2893, 2893, 2888, 2897, 2891, 2894, 2894, 2890, + 2884, 2896, 2900, 2898, 2897, 2895, 2896, 2897, 2898, 2898, + 2899, 2901, 2902, 2903, 2904, 2905, 2899, 2907, 2903, 2904, + 2906, 2906, 2908, 2907, 2909, 2909, 2901, 2900, 2908, 2910, + 2910, 2911, 2942, 2902, 2905, 2942, 2911, 2914, 2914, 2917, + 2917, 2918, 2918, 2919, 2919, 2920, 2920, 2921, 2921, 2922, + 2922, 2923, 2923, 2925, 2926, 2926, 2927, 2928, 2929, 2933, + 2931, 2935, 2925, 2932, 2932, 2927, 2937, 2934, 2941, 2928, + 2936, 2936, 2943, 2935, 2933, 2938, 2938, 2945, 2929, 2931, - 2945, 2960, 2960, 2940, 2941, 2965, 2942, 2961, 2961, 2948, - 2959, 2962, 2962, 2966, 2965, 2967, 2968, 2966, 2970, 2972, - 2971, 2973, 2964, 2973, 2972, 2974, 2975, 2975, 2977, 2976, - 2968, 2971, 2978, 2979, 2980, 2967, 2981, 2982, 2985, 2984, - 2974, 2970, 2976, 2983, 2991, 2993, 2982, 2977, 2986, 2979, - 2978, 2981, 2990, 2986, 2993, 2983, 2992, 2992, 2985, 2980, - 2984, 2994, 2994, 2998, 2991, 2999, 2990, 2995, 2995, 2996, - 2996, 2997, 2997, 3000, 3001, 3002, 3000, 3003, 3004, 3001, - 3002, 3005, 2998, 3006, 3007, 2999, 3008, 3005, 3009, 3010, - 3010, 3008, 3011, 3004, 3012, 3015, 3007, 3006, 3013, 3013, + 2934, 2937, 2944, 2944, 2947, 2948, 2941, 2947, 2949, 2950, + 2951, 2948, 2952, 2955, 2950, 2945, 2953, 2956, 2943, 2955, + 2959, 2968, 2949, 2970, 2968, 2975, 2956, 2971, 2971, 2951, + 2952, 2976, 2953, 2972, 2972, 2959, 2970, 2973, 2973, 2977, + 2976, 2978, 2979, 2977, 2981, 2983, 2982, 2984, 2975, 2984, + 2983, 2985, 2986, 2986, 2988, 2987, 2979, 2982, 2989, 2990, + 2991, 2978, 2992, 2993, 2996, 2995, 2985, 2981, 2987, 2994, + 3002, 3004, 2993, 2988, 2997, 2990, 2989, 2992, 3001, 2997, + 3004, 2994, 3003, 3003, 2996, 2991, 2995, 3005, 3005, 3009, + 3002, 3010, 3001, 3006, 3006, 3007, 3007, 3008, 3008, 3011, - 3017, 3022, 3003, 3020, 3020, 3021, 3021, 3011, 3009, 3022, - 3015, 3023, 3026, 3012, 3024, 3025, 3027, 3028, 3017, 3029, - 3024, 3025, 3030, 3030, 3029, 3033, 3026, 3031, 3031, 3027, - 3023, 3034, 3039, 3036, 3037, 3040, 3028, 3041, 3037, 3044, - 3040, 3042, 3043, 3045, 3046, 3050, 3033, 3036, 3045, 3046, - 3051, 3034, 3039, 3052, 3042, 3043, 3041, 3055, 3044, 3047, - 3047, 3053, 3053, 3055, 3054, 3050, 3056, 3056, 3051, 3054, - 3057, 3058, 3052, 3059, 3060, 3057, 3058, 3061, 3059, 3063, - 3063, 3064, 3068, 3061, 3065, 3065, 3064, 3067, 3069, 3070, - 3071, 3067, 3072, 3060, 3073, 3069, 3081, 3074, 3072, 3076, + 3012, 3013, 3011, 3014, 3015, 3012, 3013, 3016, 3009, 3017, + 3018, 3010, 3019, 3016, 3020, 3021, 3021, 3019, 3022, 3015, + 3023, 3026, 3018, 3017, 3024, 3024, 3028, 3033, 3014, 3031, + 3031, 3032, 3032, 3022, 3020, 3033, 3026, 3034, 3037, 3023, + 3035, 3036, 3038, 3039, 3028, 3040, 3035, 3036, 3041, 3041, + 3040, 3044, 3037, 3042, 3042, 3038, 3034, 3045, 3050, 3047, + 3048, 3051, 3039, 3052, 3048, 3055, 3051, 3053, 3054, 3056, + 3057, 3061, 3044, 3047, 3056, 3057, 3062, 3045, 3050, 3063, + 3053, 3054, 3052, 3066, 3055, 3058, 3058, 3064, 3064, 3066, + 3065, 3061, 3067, 3067, 3062, 3065, 3068, 3069, 3063, 3070, - 3076, 3068, 3078, 3078, 3082, 3079, 3080, 3083, 3070, 3071, - 3074, 3080, 3086, 3073, 3079, 3081, 3085, 3079, 3084, 3084, - 3083, 3085, 3088, 3082, 3090, 3086, 3089, 3089, 3091, 3091, - 3092, 3092, 3093, 3094, 3095, 3096, 3096, 3093, 0, 3097, - 3094, 3099, 3099, 3090, 3097, 3098, 3102, 3098, 3088, 3100, - 3101, 3104, 3107, 3095, 3103, 3111, 3100, 3101, 3109, 3103, - 3106, 3106, 3110, 3109, 3112, 3102, 3116, 3110, 3113, 3113, - 3104, 3107, 3115, 3115, 3111, 3117, 3118, 3118, 3119, 3119, - 3120, 3122, 3122, 3112, 3124, 3116, 3130, 3120, 3123, 3123, - 3126, 3124, 3129, 3131, 3117, 3126, 0, 3129, 3132, 3132, + 3071, 3068, 3069, 3072, 3070, 3074, 3074, 3075, 3079, 3072, + 3076, 3076, 3075, 3078, 3080, 3081, 3082, 3078, 3083, 3071, + 3084, 3080, 3092, 3085, 3083, 3087, 3087, 3079, 3089, 3089, + 3093, 3090, 3091, 3094, 3081, 3082, 3085, 3091, 3097, 3084, + 3090, 3092, 3096, 3090, 3095, 3095, 3094, 3096, 3099, 3093, + 3101, 3097, 3100, 3100, 3102, 3102, 3103, 3103, 3104, 3105, + 3106, 3107, 3107, 3104, 0, 3108, 3105, 3110, 3110, 3101, + 3108, 3109, 3113, 3109, 3099, 3111, 3112, 3115, 3118, 3106, + 3114, 3122, 3111, 3112, 3120, 3114, 3117, 3117, 3121, 3120, + 3123, 3113, 3127, 3121, 3124, 3124, 3115, 3118, 3126, 3126, - 3133, 3133, 0, 0, 0, 3130, 0, 0, 0, 0, - 0, 0, 3131, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - 3138, 3138, 3138, 3138, 3138, 3138, 3138, 3139, 3139, 3139, - 3139, 3139, 3139, 3139, 3140, 3140, 3140, 3140, 3140, 3140, - 3140, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3142, 3142, - 3142, 3142, 3142, 3142, 3142, 3143, 3143, 3143, 3143, 3143, - 3143, 3143, 3145, 3145, 0, 3145, 3145, 3145, 3145, 3146, - 3146, 0, 0, 0, 3146, 3146, 3147, 3147, 0, 0, - 3147, 0, 3147, 3148, 0, 0, 0, 0, 0, 3148, - 3149, 3149, 0, 0, 0, 3149, 3149, 3150, 0, 0, + 3122, 3128, 3129, 3129, 3130, 3130, 3131, 3133, 3133, 3123, + 3135, 3127, 3141, 3131, 3134, 3134, 3137, 3135, 3140, 3142, + 3128, 3137, 0, 3140, 3143, 3143, 3144, 3144, 0, 0, + 0, 3141, 0, 0, 0, 0, 0, 0, 3142, 3148, + 3148, 3148, 3148, 3148, 3148, 3148, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3156, 3156, + 0, 3156, 3156, 3156, 3156, 3157, 3157, 0, 0, 0, + + 3157, 3157, 3158, 3158, 0, 0, 3158, 0, 3158, 3159, + 0, 0, 0, 0, 0, 3159, 3160, 3160, 0, 0, + 0, 3160, 3160, 3161, 0, 0, 0, 0, 0, 3161, + 3162, 3162, 0, 3162, 3162, 3162, 3162, 3163, 0, 0, + 0, 0, 0, 3163, 3164, 3164, 0, 0, 0, 3164, + 3164, 3165, 3165, 0, 3165, 3165, 3165, 3165, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147 - 0, 0, 0, 3150, 3151, 3151, 0, 3151, 3151, 3151, - 3151, 3152, 0, 0, 0, 0, 0, 3152, 3153, 3153, - 0, 0, 0, 3153, 3153, 3154, 3154, 0, 3154, 3154, - 3154, 3154, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136 } ; static yy_state_type yy_last_accepting_state; @@ -3023,7 +3032,7 @@ static void config_end_include(void) } #endif -#line 3024 "" +#line 3034 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3032,9 +3041,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3033 "" +#line 3043 "" -#line 3035 "" +#line 3045 "" #define INITIAL 0 #define quotedstring 1 @@ -3258,7 +3267,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3259 "" +#line 3269 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3291,13 +3300,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 >= 3137 ) + if ( yy_current_state >= 3148 ) 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] != 6133 ); + while ( yy_base[yy_current_state] != 6159 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4806,40 +4815,45 @@ YY_RULE_SETUP { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 295: -/* rule 295 can match eol */ YY_RULE_SETUP #line 520 "./util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } + YY_BREAK +case 296: +/* rule 296 can match eol */ +YY_RULE_SETUP +#line 521 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 296: +case 297: YY_RULE_SETUP -#line 523 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 297: -YY_RULE_SETUP -#line 529 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 298: -/* rule 298 can match eol */ YY_RULE_SETUP #line 530 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 299: +/* rule 299 can match eol */ +YY_RULE_SETUP +#line 531 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 299: +case 300: YY_RULE_SETUP -#line 532 "./util/configlexer.lex" +#line 533 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4852,34 +4866,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 300: +case 301: YY_RULE_SETUP -#line 544 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 301: -YY_RULE_SETUP -#line 550 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 302: -/* rule 302 can match eol */ YY_RULE_SETUP #line 551 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 303: +/* rule 303 can match eol */ +YY_RULE_SETUP +#line 552 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 303: +case 304: YY_RULE_SETUP -#line 553 "./util/configlexer.lex" +#line 554 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4892,38 +4906,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 304: +case 305: YY_RULE_SETUP -#line 565 "./util/configlexer.lex" +#line 566 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 567 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 305: -YY_RULE_SETUP -#line 571 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 306: -/* rule 306 can match eol */ YY_RULE_SETUP #line 572 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 307: +/* rule 307 can match eol */ YY_RULE_SETUP #line 573 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 308: YY_RULE_SETUP #line 574 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 309: +YY_RULE_SETUP +#line 575 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -4931,27 +4945,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 309: -YY_RULE_SETUP -#line 583 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 310: -/* rule 310 can match eol */ YY_RULE_SETUP #line 584 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 311: +/* rule 311 can match eol */ +YY_RULE_SETUP +#line 585 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 586 "./util/configlexer.lex" +#line 587 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4961,7 +4975,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4976,39 +4990,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 312: +case 313: YY_RULE_SETUP -#line 606 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 609 "./util/configlexer.lex" +#line 610 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 313: -YY_RULE_SETUP -#line 613 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 314: -/* rule 314 can match eol */ YY_RULE_SETUP #line 614 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 315: +/* rule 315 can match eol */ YY_RULE_SETUP #line 615 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 316: YY_RULE_SETUP #line 616 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 617 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5017,29 +5031,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 622 "./util/configlexer.lex" +#line 623 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 317: -YY_RULE_SETUP -#line 626 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 318: -/* rule 318 can match eol */ YY_RULE_SETUP #line 627 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 319: +/* rule 319 can match eol */ +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 319: +case 320: YY_RULE_SETUP -#line 631 "./util/configlexer.lex" +#line 632 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5048,33 +5062,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 320: +case 321: YY_RULE_SETUP -#line 639 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 321: +case 322: YY_RULE_SETUP -#line 643 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 322: +case 323: YY_RULE_SETUP -#line 647 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 323: +case 324: YY_RULE_SETUP -#line 651 "./util/configlexer.lex" +#line 652 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5075 "" +#line 5090 "" case YY_END_OF_BUFFER: { @@ -5369,7 +5383,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 >= 3137 ) + if ( yy_current_state >= 3148 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5397,11 +5411,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 >= 3137 ) + if ( yy_current_state >= 3148 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3136); + yy_is_jam = (yy_current_state == 3147); return yy_is_jam ? 0 : yy_current_state; } @@ -6040,6 +6054,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 651 "./util/configlexer.lex" +#line 652 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 83cea4b99..79a0edcad 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -517,6 +517,7 @@ name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) } name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 2c9af619a..1d5be9fa0 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -431,7 +431,8 @@ extern int yydebug; VAR_RPZ_LOG = 543, VAR_RPZ_LOG_NAME = 544, VAR_DYNLIB = 545, - VAR_DYNLIB_FILE = 546 + VAR_DYNLIB_FILE = 546, + VAR_EDNS_CLIENT_TAG = 547 }; #endif /* Tokens. */ @@ -724,6 +725,7 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 544 #define VAR_DYNLIB 545 #define VAR_DYNLIB_FILE 546 +#define VAR_EDNS_CLIENT_TAG 547 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -733,7 +735,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.c" +#line 739 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -1052,19 +1054,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 620 +#define YYLAST 622 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 292 +#define YYNTOKENS 293 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 317 +#define YYNNTS 318 /* YYNRULES -- Number of rules. */ -#define YYNRULES 610 +#define YYNRULES 612 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 905 +#define YYNSTATES 909 #define YYUNDEFTOK 2 -#define YYMAXUTOK 546 +#define YYMAXUTOK 547 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1130,7 +1132,7 @@ static const yytype_int16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291 + 285, 286, 287, 288, 289, 290, 291, 292 }; #if YYDEBUG @@ -1158,47 +1160,47 @@ static const yytype_int16 yyrline[] = 273, 273, 273, 274, 274, 274, 275, 275, 275, 276, 276, 277, 278, 278, 279, 279, 280, 280, 281, 281, 282, 282, 282, 283, 283, 283, 284, 284, 284, 285, - 285, 286, 286, 287, 287, 288, 290, 302, 303, 304, - 304, 304, 304, 304, 305, 305, 307, 319, 320, 321, - 321, 321, 321, 322, 322, 324, 338, 339, 340, 340, - 340, 340, 341, 341, 341, 343, 360, 361, 362, 362, - 362, 362, 363, 363, 363, 364, 367, 386, 403, 411, - 421, 429, 446, 447, 448, 448, 448, 448, 448, 449, - 449, 449, 450, 450, 452, 461, 470, 481, 490, 499, - 508, 519, 528, 540, 554, 569, 580, 597, 614, 631, - 648, 663, 678, 691, 706, 715, 724, 733, 742, 751, - 760, 769, 778, 787, 796, 805, 814, 823, 832, 845, - 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, - 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, - 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, - 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, - 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, - 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, - 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, - 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, - 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, - 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, - 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, - 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, - 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, - 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, - 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, - 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, - 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, - 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, - 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, - 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, - 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, - 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, - 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, - 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, - 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, - 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, - 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, - 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, - 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, - 3238 + 285, 286, 286, 287, 287, 288, 288, 290, 302, 303, + 304, 304, 304, 304, 304, 305, 305, 307, 319, 320, + 321, 321, 321, 321, 322, 322, 324, 338, 339, 340, + 340, 340, 340, 341, 341, 341, 343, 360, 361, 362, + 362, 362, 362, 363, 363, 363, 364, 367, 386, 403, + 411, 421, 429, 446, 447, 448, 448, 448, 448, 448, + 449, 449, 449, 450, 450, 452, 461, 470, 481, 490, + 499, 508, 519, 528, 540, 554, 569, 580, 597, 614, + 631, 648, 663, 678, 691, 706, 715, 724, 733, 742, + 751, 760, 769, 778, 787, 796, 805, 814, 823, 832, + 845, 854, 867, 876, 885, 894, 901, 908, 917, 924, + 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, + 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, + 1120, 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, + 1203, 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, + 1295, 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, + 1395, 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, + 1489, 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, + 1580, 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, + 1691, 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, + 1789, 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, + 1885, 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, + 2015, 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, + 2133, 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, + 2251, 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, + 2354, 2366, 2380, 2392, 2406, 2421, 2431, 2438, 2445, 2454, + 2463, 2473, 2483, 2493, 2500, 2507, 2516, 2525, 2535, 2545, + 2552, 2559, 2566, 2574, 2584, 2594, 2604, 2614, 2653, 2663, + 2671, 2679, 2694, 2703, 2708, 2709, 2710, 2710, 2710, 2711, + 2711, 2711, 2712, 2712, 2714, 2724, 2733, 2740, 2747, 2754, + 2761, 2768, 2775, 2780, 2781, 2782, 2782, 2782, 2783, 2783, + 2783, 2784, 2785, 2785, 2786, 2786, 2787, 2787, 2788, 2789, + 2790, 2791, 2792, 2793, 2795, 2804, 2814, 2821, 2828, 2837, + 2844, 2851, 2858, 2865, 2874, 2883, 2890, 2897, 2907, 2917, + 2927, 2937, 2947, 2957, 2962, 2963, 2964, 2966, 2972, 2977, + 2978, 2979, 2981, 2987, 2997, 3004, 3013, 3021, 3026, 3027, + 3029, 3029, 3029, 3030, 3030, 3031, 3032, 3033, 3034, 3035, + 3037, 3047, 3056, 3063, 3072, 3079, 3088, 3096, 3109, 3117, + 3130, 3135, 3136, 3137, 3137, 3138, 3138, 3138, 3139, 3141, + 3153, 3165, 3177, 3192, 3205, 3218, 3229, 3234, 3235, 3236, + 3236, 3238, 3253 }; #endif @@ -1314,17 +1316,17 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "$accept", "toplevelvars", - "toplevelvar", "force_toplevel", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", "$accept", + "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", + "contents_server", "content_server", "stubstart", "contents_stub", + "content_stub", "forwardstart", "contents_forward", "content_forward", + "viewstart", "contents_view", "content_view", "authstart", + "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", + "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", + "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "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", @@ -1403,11 +1405,12 @@ static const char *const yytname[] = "server_qname_minimisation_strict", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", + "server_ipsecmod_strict", "server_edns_client_tag", "stub_name", + "stub_host", "stub_addr", "stub_first", "stub_no_cache", + "stub_ssl_upstream", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "forward_no_cache", + "forward_ssl_upstream", "auth_name", "auth_zonefile", "auth_master", + "auth_url", "auth_allow_notify", "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", "view_name", "view_local_zone", "view_response_ip", "view_response_ip_data", "view_local_data", "view_local_data_ptr", "view_first", "rcstart", @@ -1477,7 +1480,7 @@ static const yytype_int16 yytoknum[] = 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 + 545, 546, 547 }; # endif @@ -1518,7 +1521,7 @@ static const yytype_int16 yypact[] = 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, 272, - 273, 275, 276, 277, 279, 313, 314, 315, 316, -285, + 273, 275, 276, 277, 279, 313, 314, 315, 316, 320, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, @@ -1538,54 +1541,54 @@ static const yytype_int16 yypact[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 320, 321, 322, 364, 365, 366, - 367, -285, -285, -285, -285, -285, -285, -285, -285, 368, - 369, 370, 371, 372, 376, -285, -285, -285, -285, -285, - -285, -285, 380, 381, 406, 407, 408, 410, 421, -285, - -285, -285, -285, -285, -285, -285, -285, 422, 423, 424, - 425, 426, 427, 428, 429, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 430, 431, 432, 433, 434, -285, + -285, -285, -285, -285, -285, -285, 321, 322, 364, 365, + 366, 367, 368, -285, -285, -285, -285, -285, -285, -285, + -285, 369, 370, 371, 372, 376, 380, -285, -285, -285, + -285, -285, -285, -285, 381, 406, 407, 408, 410, 421, + 422, -285, -285, -285, -285, -285, -285, -285, -285, 423, + 424, 425, 426, 427, 428, 429, 430, -285, -285, -285, + -285, -285, -285, -285, -285, -285, 431, 432, 433, 434, + 435, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, 436, 437, 438, 439, 440, 480, 482, 498, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 508, 515, + 516, 517, 518, 519, 520, 521, 523, 524, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 435, 436, 437, 438, 439, 440, 480, 482, -285, -285, - -285, -285, -285, -285, -285, -285, -285, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 515, 516, - 517, 518, 519, 520, 521, 523, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, 524, -285, -285, 525, - -285, -285, 526, 527, 528, 529, 532, 535, 538, 539, - 548, 549, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, 550, 552, 553, 554, 555, 556, -285, - -285, -285, -285, -285, -285, -285, 557, 558, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, 525, -285, + -285, 526, -285, -285, 527, 528, 529, 532, 535, 538, + 539, 548, 549, 550, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, 552, 553, 554, 555, 556, + 557, -285, -285, -285, -285, -285, -285, -285, 558, 559, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 559, 560, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, 561, 562, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, 561, 562, - 563, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 564, 565, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, 566, 567, 568, 569, 570, 571, -285, -285, + 563, 564, 565, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, 566, 567, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, 568, 569, 570, 571, 572, 573, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, 572, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, 574, -285, -285, + -285, -285, -285, -285, -285, -285, -285, 575, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 573, - -285, -285, 574, 575, -285, -285, -285, -285, -285, -285, + -285, -285, 576, -285, -285, 577, 578, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 576, 577, 578, -285, -285, -285, - -285, -285, -285, -285, -285 + -285, -285, -285, -285, -285, -285, -285, 579, 580, 581, + -285, -285, -285, -285, -285, -285, -285, -285, -285 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1593,10 +1596,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 216, 226, 491, 551, 510, - 235, 565, 588, 245, 604, 261, 556, 3, 17, 21, - 218, 228, 237, 247, 263, 493, 512, 553, 558, 567, - 590, 606, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 217, 227, 493, 553, 512, + 236, 567, 590, 246, 606, 262, 558, 3, 17, 21, + 219, 229, 238, 248, 264, 495, 514, 555, 560, 569, + 592, 608, 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, @@ -1616,74 +1619,74 @@ 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 86, 89, 98, 186, 187, 24, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 37, 77, - 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 35, 36, 121, 198, 122, - 124, 125, 126, 200, 205, 201, 212, 213, 214, 215, - 182, 87, 76, 102, 119, 120, 210, 207, 123, 38, - 39, 40, 41, 42, 78, 92, 93, 108, 64, 74, - 65, 190, 191, 103, 58, 59, 189, 60, 61, 112, - 116, 130, 139, 165, 142, 211, 113, 71, 43, 44, - 45, 100, 131, 132, 133, 46, 47, 49, 50, 52, - 53, 51, 137, 54, 55, 56, 62, 81, 117, 95, - 138, 88, 161, 96, 97, 114, 115, 208, 101, 57, - 79, 82, 63, 66, 104, 105, 80, 162, 106, 67, - 68, 69, 199, 118, 175, 176, 177, 178, 179, 180, - 188, 107, 75, 109, 110, 111, 163, 72, 73, 94, - 83, 84, 99, 127, 128, 209, 129, 134, 135, 136, - 166, 167, 169, 171, 172, 170, 173, 183, 140, 141, - 145, 146, 143, 144, 147, 148, 150, 149, 202, 204, - 203, 164, 174, 192, 194, 193, 195, 196, 197, 168, - 181, 184, 185, 206, 0, 0, 0, 0, 0, 0, - 0, 217, 219, 220, 221, 223, 224, 225, 222, 0, - 0, 0, 0, 0, 0, 227, 229, 230, 231, 232, - 233, 234, 0, 0, 0, 0, 0, 0, 0, 236, - 238, 239, 242, 243, 240, 244, 241, 0, 0, 0, - 0, 0, 0, 0, 0, 246, 248, 249, 250, 251, - 255, 252, 253, 254, 0, 0, 0, 0, 0, 266, - 270, 271, 272, 273, 262, 264, 265, 267, 268, 269, - 0, 0, 0, 0, 0, 0, 0, 0, 492, 494, - 496, 495, 501, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 511, 513, 515, 514, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 0, 552, 554, 0, - 557, 559, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 566, 568, 569, 570, 572, 573, 571, 574, - 575, 576, 577, 0, 0, 0, 0, 0, 0, 589, - 591, 592, 593, 594, 595, 596, 0, 0, 605, 607, - 608, 275, 274, 281, 294, 292, 304, 300, 301, 305, - 302, 303, 306, 307, 308, 309, 310, 333, 334, 335, - 336, 337, 362, 363, 364, 369, 370, 297, 371, 372, - 375, 373, 374, 377, 378, 379, 393, 348, 349, 351, - 352, 380, 396, 342, 344, 397, 403, 404, 405, 298, - 361, 421, 422, 343, 416, 326, 293, 338, 394, 400, - 381, 0, 0, 425, 299, 276, 325, 385, 277, 295, - 296, 339, 340, 423, 383, 387, 388, 278, 426, 365, - 392, 327, 347, 398, 399, 402, 415, 341, 419, 417, - 418, 353, 360, 389, 390, 354, 355, 382, 407, 328, - 329, 332, 311, 313, 314, 315, 316, 317, 427, 428, - 430, 366, 367, 368, 376, 431, 432, 433, 0, 0, - 0, 384, 356, 358, 561, 442, 446, 444, 443, 447, - 445, 0, 0, 450, 451, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 386, 401, 420, 455, 456, - 357, 434, 0, 0, 0, 0, 0, 0, 408, 409, - 410, 411, 412, 413, 414, 562, 350, 345, 406, 324, - 279, 280, 346, 457, 459, 458, 460, 461, 462, 312, - 319, 452, 454, 453, 318, 0, 331, 391, 429, 330, - 359, 320, 321, 323, 322, 463, 464, 465, 469, 468, - 466, 467, 470, 471, 472, 473, 475, 474, 484, 0, - 488, 489, 0, 0, 490, 476, 482, 477, 478, 479, - 481, 483, 480, 256, 257, 258, 259, 260, 502, 504, - 503, 506, 507, 508, 509, 505, 532, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 533, 543, 544, 545, - 546, 547, 548, 549, 550, 555, 560, 578, 579, 580, - 583, 581, 582, 584, 585, 586, 587, 597, 598, 599, - 600, 601, 602, 609, 610, 395, 424, 441, 563, 564, - 448, 449, 435, 436, 0, 0, 0, 440, 603, 485, - 486, 487, 439, 437, 438 + 20, 22, 23, 86, 89, 98, 186, 187, 24, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 35, 36, 121, 198, + 122, 124, 125, 126, 200, 205, 201, 212, 213, 214, + 215, 182, 87, 76, 102, 119, 120, 210, 207, 123, + 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, + 74, 65, 190, 191, 103, 58, 59, 189, 60, 61, + 112, 116, 130, 139, 165, 142, 211, 113, 71, 43, + 44, 45, 100, 131, 132, 133, 46, 47, 49, 50, + 52, 53, 51, 137, 54, 55, 56, 62, 81, 117, + 95, 138, 88, 161, 96, 97, 114, 115, 208, 101, + 57, 79, 82, 63, 66, 104, 105, 80, 162, 106, + 67, 68, 69, 199, 118, 175, 176, 177, 178, 179, + 180, 188, 107, 75, 109, 110, 111, 163, 72, 73, + 94, 83, 84, 99, 127, 128, 209, 129, 134, 135, + 136, 166, 167, 169, 171, 172, 170, 173, 183, 140, + 141, 145, 146, 143, 144, 147, 148, 150, 149, 202, + 204, 203, 164, 174, 192, 194, 193, 195, 196, 197, + 216, 168, 181, 184, 185, 206, 0, 0, 0, 0, + 0, 0, 0, 218, 220, 221, 222, 224, 225, 226, + 223, 0, 0, 0, 0, 0, 0, 228, 230, 231, + 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, + 0, 237, 239, 240, 243, 244, 241, 245, 242, 0, + 0, 0, 0, 0, 0, 0, 0, 247, 249, 250, + 251, 252, 256, 253, 254, 255, 0, 0, 0, 0, + 0, 267, 271, 272, 273, 274, 263, 265, 266, 268, + 269, 270, 0, 0, 0, 0, 0, 0, 0, 0, + 494, 496, 498, 497, 503, 499, 500, 501, 502, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 513, 515, + 517, 516, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 0, 554, + 556, 0, 559, 561, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 568, 570, 571, 572, 574, 575, + 573, 576, 577, 578, 579, 0, 0, 0, 0, 0, + 0, 591, 593, 594, 595, 596, 597, 598, 0, 0, + 607, 609, 610, 276, 275, 282, 295, 293, 305, 301, + 302, 306, 303, 304, 307, 308, 309, 310, 311, 334, + 335, 336, 337, 338, 363, 364, 365, 370, 371, 298, + 372, 373, 376, 374, 375, 378, 379, 380, 394, 349, + 350, 352, 353, 381, 397, 343, 345, 398, 404, 405, + 406, 299, 362, 422, 423, 344, 417, 327, 294, 339, + 395, 401, 382, 0, 0, 426, 300, 277, 326, 386, + 278, 296, 297, 340, 341, 424, 384, 388, 389, 279, + 427, 366, 393, 328, 348, 399, 400, 403, 416, 342, + 420, 418, 419, 354, 361, 390, 391, 355, 356, 383, + 408, 329, 330, 333, 312, 314, 315, 316, 317, 318, + 428, 429, 431, 367, 368, 369, 377, 432, 433, 434, + 0, 0, 0, 385, 357, 359, 563, 443, 447, 445, + 444, 448, 446, 0, 0, 451, 452, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 387, 402, 421, + 456, 457, 358, 435, 0, 0, 0, 0, 0, 0, + 409, 410, 411, 412, 413, 414, 415, 564, 351, 346, + 407, 325, 280, 281, 347, 458, 460, 459, 461, 462, + 463, 313, 320, 453, 455, 454, 319, 0, 332, 392, + 430, 331, 360, 321, 322, 324, 323, 0, 465, 466, + 467, 471, 470, 468, 469, 472, 473, 474, 475, 477, + 476, 486, 0, 490, 491, 0, 0, 492, 478, 484, + 479, 480, 481, 483, 485, 482, 257, 258, 259, 260, + 261, 504, 506, 505, 508, 509, 510, 511, 507, 534, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 535, + 545, 546, 547, 548, 549, 550, 551, 552, 557, 562, + 580, 581, 582, 585, 583, 584, 586, 587, 588, 589, + 599, 600, 601, 602, 603, 604, 611, 612, 396, 425, + 442, 565, 566, 449, 450, 436, 437, 0, 0, 0, + 441, 605, 464, 487, 488, 489, 440, 438, 439 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1711,8 +1714,8 @@ static const yytype_int16 yypgoto[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 579, - 580, 581, 582, 583, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 560, 582, 583, 584, 585, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, @@ -1720,44 +1723,44 @@ static const yytype_int16 yypgoto[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285 + -285, -285, -285, -285, -285, -285, -285, -285 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 239, 20, 33, 441, - 21, 34, 455, 22, 35, 469, 23, 36, 485, 499, - 500, 501, 502, 503, 24, 37, 504, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 442, 443, 444, 445, - 446, 447, 448, 456, 457, 458, 459, 460, 461, 486, - 487, 488, 489, 490, 491, 492, 493, 470, 471, 472, - 473, 474, 475, 476, 25, 38, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 26, 39, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 27, 40, 567, - 568, 28, 41, 570, 571, 429, 430, 431, 432, 29, - 42, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 30, 43, 599, 600, 601, 602, 603, 604, - 605, 433, 31, 44, 608, 609, 610 + -1, 1, 17, 18, 19, 32, 240, 20, 33, 443, + 21, 34, 457, 22, 35, 471, 23, 36, 487, 501, + 502, 503, 504, 505, 24, 37, 506, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 444, 445, 446, + 447, 448, 449, 450, 458, 459, 460, 461, 462, 463, + 488, 489, 490, 491, 492, 493, 494, 495, 472, 473, + 474, 475, 476, 477, 478, 25, 38, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 26, 39, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 27, 40, + 569, 570, 28, 41, 572, 573, 431, 432, 433, 434, + 29, 42, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 30, 43, 601, 602, 603, 604, 605, + 606, 607, 435, 31, 44, 610, 611, 612 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1765,69 +1768,69 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 477, 462, 434, 566, 435, 436, 569, 449, 606, - 607, 3, 4, 611, 612, 613, 450, 451, 593, 594, - 595, 596, 597, 598, 477, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 614, 615, 616, 463, 464, - 617, 618, 619, 620, 621, 622, 5, 623, 624, 625, - 626, 627, 6, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 465, 638, 639, 437, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 510, 511, 512, 513, - 514, 515, 516, 517, 640, 641, 7, 438, 642, 643, - 439, 452, 644, 453, 645, 646, 647, 648, 649, 650, - 651, 652, 8, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 466, 467, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 9, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, - 707, 468, 708, 709, 710, 711, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 10, 479, 480, 481, 748, 749, 750, 751, - 752, 753, 754, 484, 755, 756, 757, 758, 759, 440, - 11, 760, 761, 454, 478, 762, 479, 480, 481, 482, - 483, 494, 495, 496, 497, 498, 484, 12, 763, 764, - 765, 766, 767, 768, 769, 770, 13, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 14, 794, 795, 796, 15, 797, 798, 799, 0, 800, + 2, 479, 464, 436, 568, 437, 438, 571, 451, 608, + 609, 3, 4, 613, 614, 615, 452, 453, 595, 596, + 597, 598, 599, 600, 479, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 616, 617, 618, 465, 466, + 619, 620, 621, 622, 623, 624, 5, 625, 626, 627, + 628, 629, 6, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 467, 640, 641, 439, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 512, 513, 514, 515, + 516, 517, 518, 519, 642, 643, 7, 440, 644, 645, + 441, 454, 646, 455, 647, 648, 649, 650, 651, 652, + 653, 654, 8, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 468, 469, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, + 690, 691, 692, 9, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, + 709, 470, 710, 711, 712, 713, 714, 715, 716, 717, + 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, + 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 10, 481, 482, 483, 750, 751, 752, 753, + 754, 755, 756, 486, 757, 758, 759, 760, 761, 442, + 11, 762, 763, 456, 480, 764, 481, 482, 483, 484, + 485, 496, 497, 498, 499, 500, 486, 12, 765, 766, + 767, 768, 769, 770, 771, 772, 13, 773, 774, 775, + 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 14, 796, 797, 798, 15, 799, 800, 801, 0, 802, 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, 801, 802, 803, 804, 77, 78, 79, - 805, 806, 807, 80, 81, 82, 83, 84, 85, 86, + 74, 75, 76, 803, 804, 805, 806, 77, 78, 79, + 807, 808, 809, 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, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 121, 122, 123, 817, 124, 125, 126, - 818, 819, 127, 128, 129, 130, 131, 132, 133, 134, + 117, 118, 119, 120, 810, 811, 812, 813, 814, 815, + 816, 817, 818, 121, 122, 123, 819, 124, 125, 126, + 820, 821, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 820, 821, 822, 151, - 823, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 145, 146, 147, 148, 149, 150, 822, 823, 824, 151, + 825, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 826, 827, 828, 829, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 844, 201, 845, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 217, - 218, 219, 220, 221, 222, 857, 858, 859, 860, 861, - 862, 863, 223, 864, 865, 866, 867, 868, 869, 870, - 224, 225, 871, 226, 227, 872, 228, 229, 873, 874, - 230, 231, 232, 233, 234, 235, 236, 237, 875, 876, - 877, 238, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, 904, 0, + 846, 201, 847, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 858, 217, + 218, 219, 220, 221, 222, 859, 860, 861, 862, 863, + 864, 865, 223, 866, 867, 868, 869, 870, 871, 872, + 224, 225, 873, 226, 227, 874, 228, 229, 875, 876, + 230, 231, 232, 233, 234, 235, 236, 237, 877, 878, + 879, 238, 880, 881, 882, 883, 884, 885, 886, 887, + 239, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, + 907, 908, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 505, 506, 507, 508, - 509 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, + 509, 510, 511 }; static const yytype_int16 yycheck[] = @@ -1889,23 +1892,23 @@ static const yytype_int16 yycheck[] = 262, 263, 10, 265, 266, 10, 268, 269, 10, 10, 272, 273, 274, 275, 276, 277, 278, 279, 10, 10, 10, 283, 10, 10, 10, 10, 10, 10, 10, 10, + 292, 10, 10, 10, 10, 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, + 10, 10, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -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, -1, -1, -1, 37, + 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 293, 0, 11, 12, 46, 52, 96, 112, 153, - 212, 230, 247, 256, 280, 284, 290, 294, 295, 296, - 299, 302, 305, 308, 316, 536, 547, 569, 573, 581, - 594, 604, 297, 300, 303, 306, 309, 317, 537, 548, - 570, 574, 582, 595, 605, 13, 14, 15, 16, 17, + 0, 294, 0, 11, 12, 46, 52, 96, 112, 153, + 212, 230, 247, 256, 280, 284, 290, 295, 296, 297, + 300, 303, 306, 309, 317, 538, 549, 571, 575, 583, + 596, 606, 298, 301, 304, 307, 310, 318, 539, 550, + 572, 576, 584, 597, 607, 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, @@ -1924,8 +1927,8 @@ static const yytype_int16 yystos[] = 211, 213, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 241, 242, 243, 244, 245, 246, 254, 262, 263, 265, 266, 268, 269, - 272, 273, 274, 275, 276, 277, 278, 279, 283, 298, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 272, 273, 274, 275, 276, 277, 278, 279, 283, 292, + 299, 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, @@ -1943,26 +1946,26 @@ static const yytype_int16 yystos[] = 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, 577, - 578, 579, 580, 603, 45, 47, 48, 108, 139, 142, - 271, 301, 508, 509, 510, 511, 512, 513, 514, 45, - 53, 54, 138, 140, 270, 304, 515, 516, 517, 518, - 519, 520, 45, 81, 82, 106, 174, 175, 214, 307, - 529, 530, 531, 532, 533, 534, 535, 45, 255, 257, - 258, 259, 260, 261, 267, 310, 521, 522, 523, 524, - 525, 526, 527, 528, 285, 286, 287, 288, 289, 311, - 312, 313, 314, 315, 318, 521, 522, 523, 524, 525, - 97, 98, 99, 100, 101, 102, 103, 104, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 549, 550, 551, 552, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 579, 580, 581, 582, 605, 45, 47, 48, 108, + 139, 142, 271, 302, 510, 511, 512, 513, 514, 515, + 516, 45, 53, 54, 138, 140, 270, 305, 517, 518, + 519, 520, 521, 522, 45, 81, 82, 106, 174, 175, + 214, 308, 531, 532, 533, 534, 535, 536, 537, 45, + 255, 257, 258, 259, 260, 261, 267, 311, 523, 524, + 525, 526, 527, 528, 529, 530, 285, 286, 287, 288, + 289, 312, 313, 314, 315, 316, 319, 523, 524, 525, + 526, 527, 97, 98, 99, 100, 101, 102, 103, 104, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 113, 571, 572, 291, - 575, 576, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 248, 249, 250, 251, 252, 253, 596, - 597, 598, 599, 600, 601, 602, 281, 282, 606, 607, - 608, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 563, 564, 565, 566, 567, 568, 569, 570, 113, 573, + 574, 291, 577, 578, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 248, 249, 250, 251, 252, + 253, 598, 599, 600, 601, 602, 603, 604, 281, 282, + 608, 609, 610, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1991,40 +1994,40 @@ 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 292, 293, 293, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 295, 296, - 297, 297, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 299, 300, 300, 301, - 301, 301, 301, 301, 301, 301, 302, 303, 303, 304, - 304, 304, 304, 304, 304, 305, 306, 306, 307, 307, - 307, 307, 307, 307, 307, 308, 309, 309, 310, 310, - 310, 310, 310, 310, 310, 310, 311, 312, 313, 314, - 315, 316, 317, 317, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 319, 320, 321, 322, 323, 324, + 0, 293, 294, 294, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 296, 297, + 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 300, 301, 301, + 302, 302, 302, 302, 302, 302, 302, 303, 304, 304, + 305, 305, 305, 305, 305, 305, 306, 307, 307, 308, + 308, 308, 308, 308, 308, 308, 309, 310, 310, 311, + 311, 311, 311, 311, 311, 311, 311, 312, 313, 314, + 315, 316, 317, 318, 318, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 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, @@ -2046,19 +2049,19 @@ static const yytype_int16 yyr1[] = 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, 537, 538, 538, 538, 538, 538, 538, - 538, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 548, 549, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, - 549, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 535, 536, 537, 538, 539, 539, 540, 540, 540, 540, + 540, 540, 540, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 550, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, - 568, 569, 570, 570, 571, 572, 573, 574, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 582, 583, 583, - 583, 583, 583, 583, 583, 583, 583, 583, 584, 585, + 568, 569, 570, 571, 572, 572, 573, 574, 575, 576, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 584, + 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 595, 596, 596, 596, 596, 596, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 605, 606, 606, 607, - 608 + 596, 597, 597, 598, 598, 598, 598, 598, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 607, 608, + 608, 609, 610 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2085,13 +2088,13 @@ 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, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2103,29 +2106,29 @@ 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, + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, + 4, 3, 3, 2, 2, 2, 2, 2, 2, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, - 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2272,7 +2275,7 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2450,7 +2453,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; @@ -2825,7 +2828,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2829 "util/configparser.c" +#line 2832 "util/configparser.c" break; case 19: @@ -2833,10 +2836,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2837 "util/configparser.c" +#line 2840 "util/configparser.c" break; - case 216: + case 217: #line 291 "./util/configparser.y" { struct config_stub* s; @@ -2848,10 +2851,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2855 "util/configparser.c" break; - case 226: + case 227: #line 308 "./util/configparser.y" { struct config_stub* s; @@ -2863,10 +2866,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2867 "util/configparser.c" +#line 2870 "util/configparser.c" break; - case 235: + case 236: #line 325 "./util/configparser.y" { struct config_view* s; @@ -2880,10 +2883,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2887 "util/configparser.c" break; - case 245: + case 246: #line 344 "./util/configparser.y" { struct config_auth* s; @@ -2900,10 +2903,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2904 "util/configparser.c" +#line 2907 "util/configparser.c" break; - case 256: + case 257: #line 368 "./util/configparser.y" { uint8_t* bitlist; @@ -2921,10 +2924,10 @@ yyreduce: } } -#line 2925 "util/configparser.c" +#line 2928 "util/configparser.c" break; - case 257: + case 258: #line 387 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2940,20 +2943,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2944 "util/configparser.c" +#line 2947 "util/configparser.c" break; - case 258: + case 259: #line 404 "./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 2954 "util/configparser.c" +#line 2957 "util/configparser.c" break; - case 259: + case 260: #line 412 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2962,20 +2965,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2966 "util/configparser.c" +#line 2969 "util/configparser.c" break; - case 260: + case 261: #line 422 "./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 2976 "util/configparser.c" +#line 2979 "util/configparser.c" break; - case 261: + case 262: #line 430 "./util/configparser.y" { struct config_auth* s; @@ -2992,10 +2995,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2996 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 274: + case 275: #line 453 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -3004,10 +3007,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 275: + case 276: #line 462 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3016,10 +3019,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 3023 "util/configparser.c" break; - case 276: + case 277: #line 471 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3030,10 +3033,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 3037 "util/configparser.c" break; - case 277: + case 278: #line 482 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3042,10 +3045,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3049 "util/configparser.c" break; - case 278: + case 279: #line 491 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3054,10 +3057,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3061 "util/configparser.c" break; - case 279: + case 280: #line 500 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3066,10 +3069,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 3073 "util/configparser.c" break; - case 280: + case 281: #line 509 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3080,10 +3083,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 3087 "util/configparser.c" break; - case 281: + case 282: #line 520 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3092,10 +3095,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3099 "util/configparser.c" break; - case 282: + case 283: #line 529 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3107,10 +3110,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3111 "util/configparser.c" +#line 3114 "util/configparser.c" break; - case 283: + case 284: #line 541 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3123,10 +3126,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3127 "util/configparser.c" +#line 3130 "util/configparser.c" break; - case 284: + case 285: #line 555 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3141,10 +3144,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3148 "util/configparser.c" break; - case 285: + case 286: #line 570 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3155,10 +3158,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3159 "util/configparser.c" +#line 3162 "util/configparser.c" break; - case 286: + case 287: #line 581 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3175,10 +3178,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3179 "util/configparser.c" +#line 3182 "util/configparser.c" break; - case 287: + case 288: #line 598 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3195,10 +3198,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3199 "util/configparser.c" +#line 3202 "util/configparser.c" break; - case 288: + case 289: #line 615 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3215,10 +3218,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3219 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 289: + case 290: #line 632 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3235,10 +3238,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 290: + case 291: #line 649 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3253,10 +3256,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3260 "util/configparser.c" break; - case 291: + case 292: #line 664 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3271,10 +3274,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" +#line 3278 "util/configparser.c" break; - case 292: + case 293: #line 679 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3287,10 +3290,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3291 "util/configparser.c" +#line 3294 "util/configparser.c" break; - case 293: + case 294: #line 692 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3305,10 +3308,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3309 "util/configparser.c" +#line 3312 "util/configparser.c" break; - case 294: + case 295: #line 707 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3317,10 +3320,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3321 "util/configparser.c" +#line 3324 "util/configparser.c" break; - case 295: + case 296: #line 716 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3329,10 +3332,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3333 "util/configparser.c" +#line 3336 "util/configparser.c" break; - case 296: + case 297: #line 725 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3341,10 +3344,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3345 "util/configparser.c" +#line 3348 "util/configparser.c" break; - case 297: + case 298: #line 734 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3353,10 +3356,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3357 "util/configparser.c" +#line 3360 "util/configparser.c" break; - case 298: + case 299: #line 743 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3365,10 +3368,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3369 "util/configparser.c" +#line 3372 "util/configparser.c" break; - case 299: + case 300: #line 752 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3377,10 +3380,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3384 "util/configparser.c" break; - case 300: + case 301: #line 761 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3389,10 +3392,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3396 "util/configparser.c" break; - case 301: + case 302: #line 770 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3401,10 +3404,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3405 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 302: + case 303: #line 779 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3413,10 +3416,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3417 "util/configparser.c" +#line 3420 "util/configparser.c" break; - case 303: + case 304: #line 788 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3425,10 +3428,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3429 "util/configparser.c" +#line 3432 "util/configparser.c" break; - case 304: + case 305: #line 797 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3437,10 +3440,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3444 "util/configparser.c" break; - case 305: + case 306: #line 806 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3449,10 +3452,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3456 "util/configparser.c" break; - case 306: + case 307: #line 815 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3461,10 +3464,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3465 "util/configparser.c" +#line 3468 "util/configparser.c" break; - case 307: + case 308: #line 824 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3473,10 +3476,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3480 "util/configparser.c" break; - case 308: + case 309: #line 833 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3489,10 +3492,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3496 "util/configparser.c" break; - case 309: + case 310: #line 846 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3501,10 +3504,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3508 "util/configparser.c" break; - case 310: + case 311: #line 855 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3517,10 +3520,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3521 "util/configparser.c" +#line 3524 "util/configparser.c" break; - case 311: + case 312: #line 868 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3529,10 +3532,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3533 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 312: + case 313: #line 877 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3541,10 +3544,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3545 "util/configparser.c" +#line 3548 "util/configparser.c" break; - case 313: + case 314: #line 886 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3553,30 +3556,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" +#line 3560 "util/configparser.c" break; - case 314: + case 315: #line 895 "./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 3567 "util/configparser.c" +#line 3570 "util/configparser.c" break; - case 315: + case 316: #line 902 "./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 3577 "util/configparser.c" +#line 3580 "util/configparser.c" break; - case 316: + case 317: #line 909 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3585,20 +3588,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3589 "util/configparser.c" +#line 3592 "util/configparser.c" break; - case 317: + case 318: #line 918 "./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 3599 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 318: + case 319: #line 925 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3607,10 +3610,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3614 "util/configparser.c" break; - case 319: + case 320: #line 934 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3618,30 +3621,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3622 "util/configparser.c" +#line 3625 "util/configparser.c" break; - case 320: + case 321: #line 942 "./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 3632 "util/configparser.c" +#line 3635 "util/configparser.c" break; - case 321: + case 322: #line 949 "./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 3642 "util/configparser.c" +#line 3645 "util/configparser.c" break; - case 322: + case 323: #line 956 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3649,10 +3652,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3653 "util/configparser.c" +#line 3656 "util/configparser.c" break; - case 323: + case 324: #line 964 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3661,10 +3664,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3665 "util/configparser.c" +#line 3668 "util/configparser.c" break; - case 324: + case 325: #line 973 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3673,10 +3676,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3677 "util/configparser.c" +#line 3680 "util/configparser.c" break; - case 325: + case 326: #line 982 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3685,10 +3688,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" +#line 3692 "util/configparser.c" break; - case 326: + case 327: #line 991 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3702,10 +3705,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 3709 "util/configparser.c" break; - case 327: + case 328: #line 1005 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3714,10 +3717,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3718 "util/configparser.c" +#line 3721 "util/configparser.c" break; - case 328: + case 329: #line 1014 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3726,10 +3729,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3733 "util/configparser.c" break; - case 329: + case 330: #line 1023 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3738,10 +3741,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3742 "util/configparser.c" +#line 3745 "util/configparser.c" break; - case 330: + case 331: #line 1032 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3750,10 +3753,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3754 "util/configparser.c" +#line 3757 "util/configparser.c" break; - case 331: + case 332: #line 1041 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3762,10 +3765,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3766 "util/configparser.c" +#line 3769 "util/configparser.c" break; - case 332: + case 333: #line 1050 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3774,30 +3777,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3778 "util/configparser.c" +#line 3781 "util/configparser.c" break; - case 333: + case 334: #line 1059 "./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 3788 "util/configparser.c" +#line 3791 "util/configparser.c" break; - case 334: + case 335: #line 1066 "./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 3798 "util/configparser.c" +#line 3801 "util/configparser.c" break; - case 335: + case 336: #line 1073 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3823,10 +3826,10 @@ yyreduce: } } } -#line 3827 "util/configparser.c" +#line 3830 "util/configparser.c" break; - case 336: + case 337: #line 1099 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3834,50 +3837,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3838 "util/configparser.c" +#line 3841 "util/configparser.c" break; - case 337: + case 338: #line 1107 "./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 3848 "util/configparser.c" +#line 3851 "util/configparser.c" break; - case 338: + case 339: #line 1114 "./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 3858 "util/configparser.c" +#line 3861 "util/configparser.c" break; - case 339: + case 340: #line 1121 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3868 "util/configparser.c" +#line 3871 "util/configparser.c" break; - case 340: + case 341: #line 1128 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3878 "util/configparser.c" +#line 3881 "util/configparser.c" break; - case 341: + case 342: #line 1135 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3885,10 +3888,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3889 "util/configparser.c" +#line 3892 "util/configparser.c" break; - case 342: + case 343: #line 1143 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3896,10 +3899,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3900 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 343: + case 344: #line 1151 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -3907,20 +3910,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3911 "util/configparser.c" +#line 3914 "util/configparser.c" break; - case 344: + case 345: #line 1159 "./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 3921 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 345: + case 346: #line 1166 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -3931,10 +3934,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3935 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 346: + case 347: #line 1177 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -3945,20 +3948,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3949 "util/configparser.c" +#line 3952 "util/configparser.c" break; - case 347: + case 348: #line 1188 "./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 3959 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 348: + case 349: #line 1195 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -3967,10 +3970,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3974 "util/configparser.c" break; - case 349: + case 350: #line 1204 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -3979,10 +3982,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 350: + case 351: #line 1213 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -3991,30 +3994,30 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 351: + case 352: #line 1222 "./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 4005 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 352: + case 353: #line 1229 "./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 4015 "util/configparser.c" +#line 4018 "util/configparser.c" break; - case 353: + case 354: #line 1236 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4022,10 +4025,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 354: + case 355: #line 1244 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4033,10 +4036,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4037 "util/configparser.c" +#line 4040 "util/configparser.c" break; - case 355: + case 356: #line 1252 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4046,10 +4049,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4050 "util/configparser.c" +#line 4053 "util/configparser.c" break; - case 356: + case 357: #line 1262 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4059,10 +4062,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" +#line 4066 "util/configparser.c" break; - case 357: + case 358: #line 1272 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4072,10 +4075,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4076 "util/configparser.c" +#line 4079 "util/configparser.c" break; - case 358: + case 359: #line 1282 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4089,10 +4092,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 359: + case 360: #line 1296 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4100,10 +4103,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4107 "util/configparser.c" break; - case 360: + case 361: #line 1304 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4116,10 +4119,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4120 "util/configparser.c" +#line 4123 "util/configparser.c" break; - case 361: + case 362: #line 1317 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4130,10 +4133,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4137 "util/configparser.c" break; - case 362: + case 363: #line 1328 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4141,10 +4144,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4145 "util/configparser.c" +#line 4148 "util/configparser.c" break; - case 363: + case 364: #line 1336 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4157,10 +4160,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4164 "util/configparser.c" break; - case 364: + case 365: #line 1349 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4169,10 +4172,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4176 "util/configparser.c" break; - case 365: + case 366: #line 1358 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4181,10 +4184,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4185 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 366: + case 367: #line 1367 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4193,10 +4196,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4197 "util/configparser.c" +#line 4200 "util/configparser.c" break; - case 367: + case 368: #line 1376 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4206,10 +4209,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4213 "util/configparser.c" break; - case 368: + case 369: #line 1386 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4219,10 +4222,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4226 "util/configparser.c" break; - case 369: + case 370: #line 1396 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -4230,10 +4233,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4237 "util/configparser.c" break; - case 370: + case 371: #line 1404 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4246,10 +4249,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" +#line 4253 "util/configparser.c" break; - case 371: + case 372: #line 1417 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -4258,10 +4261,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4265 "util/configparser.c" break; - case 372: + case 373: #line 1426 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -4269,10 +4272,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" +#line 4276 "util/configparser.c" break; - case 373: + case 374: #line 1434 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -4281,10 +4284,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4285 "util/configparser.c" +#line 4288 "util/configparser.c" break; - case 374: + case 375: #line 1443 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -4292,10 +4295,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4296 "util/configparser.c" +#line 4299 "util/configparser.c" break; - case 375: + case 376: #line 1451 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4308,10 +4311,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 4315 "util/configparser.c" break; - case 376: + case 377: #line 1464 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -4320,20 +4323,20 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4327 "util/configparser.c" break; - case 377: + case 378: #line 1473 "./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 4334 "util/configparser.c" +#line 4337 "util/configparser.c" break; - case 378: + case 379: #line 1480 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); @@ -4343,10 +4346,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4347 "util/configparser.c" +#line 4350 "util/configparser.c" break; - case 379: + case 380: #line 1490 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); @@ -4356,10 +4359,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 4363 "util/configparser.c" break; - case 380: + case 381: #line 1500 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); @@ -4369,10 +4372,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4376 "util/configparser.c" break; - case 381: + case 382: #line 1510 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); @@ -4382,10 +4385,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" +#line 4389 "util/configparser.c" break; - case 382: + case 383: #line 1520 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); @@ -4395,10 +4398,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 383: + case 384: #line 1530 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); @@ -4408,10 +4411,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4415 "util/configparser.c" break; - case 384: + case 385: #line 1540 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); @@ -4421,10 +4424,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4425 "util/configparser.c" +#line 4428 "util/configparser.c" break; - case 385: + case 386: #line 1550 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); @@ -4434,40 +4437,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4438 "util/configparser.c" +#line 4441 "util/configparser.c" break; - case 386: + case 387: #line 1560 "./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 4448 "util/configparser.c" +#line 4451 "util/configparser.c" break; - case 387: + case 388: #line 1567 "./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 4458 "util/configparser.c" +#line 4461 "util/configparser.c" break; - case 388: + case 389: #line 1574 "./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 4468 "util/configparser.c" +#line 4471 "util/configparser.c" break; - case 389: + case 390: #line 1581 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); @@ -4476,10 +4479,10 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4480 "util/configparser.c" +#line 4483 "util/configparser.c" break; - case 390: + case 391: #line 1590 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); @@ -4488,10 +4491,10 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 4495 "util/configparser.c" break; - case 391: + case 392: #line 1599 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); @@ -4500,10 +4503,10 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4507 "util/configparser.c" break; - case 392: + case 393: #line 1608 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); @@ -4512,20 +4515,20 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 393: + case 394: #line 1617 "./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 4526 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 394: + case 395: #line 1624 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); @@ -4535,10 +4538,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" +#line 4542 "util/configparser.c" break; - case 395: + case 396: #line 1634 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4558,20 +4561,20 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4562 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 396: + case 397: #line 1654 "./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 4572 "util/configparser.c" +#line 4575 "util/configparser.c" break; - case 397: + case 398: #line 1661 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); @@ -4589,10 +4592,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4596 "util/configparser.c" break; - case 398: + case 399: #line 1679 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); @@ -4605,10 +4608,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 399: + case 400: #line 1692 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); @@ -4621,10 +4624,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4628 "util/configparser.c" break; - case 400: + case 401: #line 1705 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); @@ -4633,10 +4636,10 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4640 "util/configparser.c" break; - case 401: + case 402: #line 1714 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); @@ -4645,10 +4648,10 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4652 "util/configparser.c" break; - case 402: + case 403: #line 1723 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); @@ -4657,10 +4660,10 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4664 "util/configparser.c" break; - case 403: + case 404: #line 1732 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); @@ -4669,10 +4672,10 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4676 "util/configparser.c" break; - case 404: + case 405: #line 1741 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); @@ -4682,10 +4685,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4686 "util/configparser.c" +#line 4689 "util/configparser.c" break; - case 405: + case 406: #line 1751 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -4695,10 +4698,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4702 "util/configparser.c" break; - case 406: + case 407: #line 1761 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); @@ -4709,10 +4712,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4713 "util/configparser.c" +#line 4716 "util/configparser.c" break; - case 407: + case 408: #line 1772 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); @@ -4721,10 +4724,10 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4728 "util/configparser.c" break; - case 408: + case 409: #line 1781 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); @@ -4733,10 +4736,10 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4740 "util/configparser.c" break; - case 409: + case 410: #line 1790 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); @@ -4745,10 +4748,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4752 "util/configparser.c" break; - case 410: + case 411: #line 1799 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); @@ -4757,10 +4760,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4764 "util/configparser.c" break; - case 411: + case 412: #line 1808 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); @@ -4769,10 +4772,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4776 "util/configparser.c" break; - case 412: + case 413: #line 1817 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); @@ -4781,10 +4784,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4788 "util/configparser.c" break; - case 413: + case 414: #line 1826 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); @@ -4797,10 +4800,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4804 "util/configparser.c" break; - case 414: + case 415: #line 1839 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); @@ -4813,10 +4816,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4817 "util/configparser.c" +#line 4820 "util/configparser.c" break; - case 415: + case 416: #line 1852 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); @@ -4825,20 +4828,20 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4832 "util/configparser.c" break; - case 416: + case 417: #line 1861 "./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 4839 "util/configparser.c" +#line 4842 "util/configparser.c" break; - case 417: + case 418: #line 1868 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); @@ -4847,10 +4850,10 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 418: + case 419: #line 1877 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); @@ -4859,10 +4862,10 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4866 "util/configparser.c" break; - case 419: + case 420: #line 1886 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); @@ -4871,10 +4874,10 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 420: + case 421: #line 1895 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); @@ -4884,10 +4887,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" +#line 4891 "util/configparser.c" break; - case 421: + case 422: #line 1904 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); @@ -4895,10 +4898,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 422: + case 423: #line 1912 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4911,10 +4914,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4918 "util/configparser.c" break; - case 423: + case 424: #line 1925 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4922,10 +4925,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4926 "util/configparser.c" +#line 4929 "util/configparser.c" break; - case 424: + case 425: #line 1933 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4966,20 +4969,20 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4970 "util/configparser.c" +#line 4973 "util/configparser.c" break; - case 425: + case 426: #line 1974 "./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 4980 "util/configparser.c" +#line 4983 "util/configparser.c" break; - case 426: + case 427: #line 1981 "./util/configparser.y" { char* ptr; @@ -4994,10 +4997,10 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4998 "util/configparser.c" +#line 5001 "util/configparser.c" break; - case 427: + case 428: #line 1996 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); @@ -5007,10 +5010,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 428: + case 429: #line 2006 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); @@ -5020,40 +5023,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5024 "util/configparser.c" +#line 5027 "util/configparser.c" break; - case 429: + case 430: #line 2016 "./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 5034 "util/configparser.c" +#line 5037 "util/configparser.c" break; - case 430: + case 431: #line 2023 "./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 5044 "util/configparser.c" +#line 5047 "util/configparser.c" break; - case 431: + case 432: #line 2030 "./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 5054 "util/configparser.c" +#line 5057 "util/configparser.c" break; - case 432: + case 433: #line 2037 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); @@ -5062,10 +5065,10 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" +#line 5069 "util/configparser.c" break; - case 433: + case 434: #line 2046 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); @@ -5073,10 +5076,10 @@ yyreduce: (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5077 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 434: + case 435: #line 2054 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); @@ -5090,10 +5093,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5097 "util/configparser.c" break; - case 435: + case 436: #line 2068 "./util/configparser.y" { size_t len = 0; @@ -5114,10 +5117,10 @@ yyreduce: } } } -#line 5118 "util/configparser.c" +#line 5121 "util/configparser.c" break; - case 436: + case 437: #line 2089 "./util/configparser.y" { size_t len = 0; @@ -5138,10 +5141,10 @@ yyreduce: } } } -#line 5142 "util/configparser.c" +#line 5145 "util/configparser.c" break; - case 437: + case 438: #line 2110 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5153,10 +5156,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5157 "util/configparser.c" +#line 5160 "util/configparser.c" break; - case 438: + case 439: #line 2122 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5168,10 +5171,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5172 "util/configparser.c" +#line 5175 "util/configparser.c" break; - case 439: + case 440: #line 2134 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5183,10 +5186,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5187 "util/configparser.c" +#line 5190 "util/configparser.c" break; - case 440: + case 441: #line 2146 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5195,10 +5198,10 @@ yyreduce: yyerror("out of memory"); } } -#line 5199 "util/configparser.c" +#line 5202 "util/configparser.c" break; - case 441: + case 442: #line 2155 "./util/configparser.y" { size_t len = 0; @@ -5219,10 +5222,10 @@ yyreduce: } } } -#line 5223 "util/configparser.c" +#line 5226 "util/configparser.c" break; - case 442: + case 443: #line 2176 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5231,10 +5234,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5235 "util/configparser.c" +#line 5238 "util/configparser.c" break; - case 443: + case 444: #line 2186 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5243,10 +5246,10 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5247 "util/configparser.c" +#line 5250 "util/configparser.c" break; - case 444: + case 445: #line 2195 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5254,10 +5257,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5261 "util/configparser.c" break; - case 445: + case 446: #line 2203 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5265,10 +5268,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5272 "util/configparser.c" break; - case 446: + case 447: #line 2211 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5281,10 +5284,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 5288 "util/configparser.c" break; - case 447: + case 448: #line 2224 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5297,10 +5300,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5304 "util/configparser.c" break; - case 448: + case 449: #line 2237 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5315,10 +5318,10 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5319 "util/configparser.c" +#line 5322 "util/configparser.c" break; - case 449: + case 450: #line 2252 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5333,10 +5336,10 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5337 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 450: + case 451: #line 2267 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5345,10 +5348,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5352 "util/configparser.c" break; - case 451: + case 452: #line 2276 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5357,19 +5360,19 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 5364 "util/configparser.c" break; - case 452: + case 453: #line 2285 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5373 "util/configparser.c" break; - case 453: + case 454: #line 2291 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); @@ -5378,10 +5381,10 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5382 "util/configparser.c" +#line 5385 "util/configparser.c" break; - case 454: + case 455: #line 2300 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); @@ -5390,10 +5393,10 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 455: + case 456: #line 2309 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); @@ -5403,10 +5406,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5407 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 456: + case 457: #line 2319 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); @@ -5416,10 +5419,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5420 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 457: + case 458: #line 2329 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5432,10 +5435,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 5439 "util/configparser.c" break; - case 458: + case 459: #line 2342 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5448,10 +5451,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5452 "util/configparser.c" +#line 5455 "util/configparser.c" break; - case 459: + case 460: #line 2355 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5463,10 +5466,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5467 "util/configparser.c" +#line 5470 "util/configparser.c" break; - case 460: + case 461: #line 2367 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5480,10 +5483,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5484 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 461: + case 462: #line 2381 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5495,10 +5498,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5499 "util/configparser.c" +#line 5502 "util/configparser.c" break; - case 462: + case 463: #line 2393 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5512,11 +5515,29 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5516 "util/configparser.c" +#line 5519 "util/configparser.c" break; - case 463: + case 464: #line 2407 "./util/configparser.y" + { + int tag_data; + OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + tag_data = atoi((yyvsp[0].str)); + if(tag_data > 65535 || tag_data < 0 || + (tag_data == 0 && (strlen((yyvsp[0].str)) != 1 || (yyvsp[0].str)[0] != '0'))) + yyerror("edns-client-tag data invalid, needs to be a " + "number from 0 to 65535"); + if(!cfg_str2list_insert( + &cfg_parser->cfg->edns_client_tags, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding " + "edns-client-tag"); + } +#line 5537 "util/configparser.c" + break; + + case 465: +#line 2422 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5525,31 +5546,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5529 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 464: -#line 2417 "./util/configparser.y" + case 466: +#line 2432 "./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 5539 "util/configparser.c" +#line 5560 "util/configparser.c" break; - case 465: -#line 2424 "./util/configparser.y" + case 467: +#line 2439 "./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 5549 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 466: -#line 2431 "./util/configparser.y" + case 468: +#line 2446 "./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) @@ -5557,11 +5578,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5561 "util/configparser.c" +#line 5582 "util/configparser.c" break; - case 467: -#line 2440 "./util/configparser.y" + case 469: +#line 2455 "./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) @@ -5569,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 468: -#line 2449 "./util/configparser.y" + case 470: +#line 2464 "./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) @@ -5582,11 +5603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5586 "util/configparser.c" +#line 5607 "util/configparser.c" break; - case 469: -#line 2459 "./util/configparser.y" + case 471: +#line 2474 "./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) @@ -5595,11 +5616,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5599 "util/configparser.c" +#line 5620 "util/configparser.c" break; - case 470: -#line 2469 "./util/configparser.y" + case 472: +#line 2484 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5608,31 +5629,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5612 "util/configparser.c" +#line 5633 "util/configparser.c" break; - case 471: -#line 2479 "./util/configparser.y" + case 473: +#line 2494 "./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 5622 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 472: -#line 2486 "./util/configparser.y" + case 474: +#line 2501 "./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 5632 "util/configparser.c" +#line 5653 "util/configparser.c" break; - case 473: -#line 2493 "./util/configparser.y" + case 475: +#line 2508 "./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) @@ -5640,11 +5661,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5665 "util/configparser.c" break; - case 474: -#line 2502 "./util/configparser.y" + case 476: +#line 2517 "./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) @@ -5652,11 +5673,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5677 "util/configparser.c" break; - case 475: -#line 2511 "./util/configparser.y" + case 477: +#line 2526 "./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) @@ -5665,11 +5686,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5669 "util/configparser.c" +#line 5690 "util/configparser.c" break; - case 476: -#line 2521 "./util/configparser.y" + case 478: +#line 2536 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5678,45 +5699,24 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5682 "util/configparser.c" +#line 5703 "util/configparser.c" break; - case 477: -#line 2531 "./util/configparser.y" + case 479: +#line 2546 "./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 5692 "util/configparser.c" - break; - - case 478: -#line 2538 "./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 5702 "util/configparser.c" - break; - - case 479: -#line 2545 "./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 5712 "util/configparser.c" +#line 5713 "util/configparser.c" break; case 480: -#line 2552 "./util/configparser.y" +#line 2553 "./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))) + 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 5723 "util/configparser.c" @@ -5724,6 +5724,27 @@ yyreduce: case 481: #line 2560 "./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 5733 "util/configparser.c" + break; + + case 482: +#line 2567 "./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 5744 "util/configparser.c" + break; + + case 483: +#line 2575 "./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) @@ -5732,11 +5753,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5757 "util/configparser.c" break; - case 482: -#line 2570 "./util/configparser.y" + case 484: +#line 2585 "./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) @@ -5745,11 +5766,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5749 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 483: -#line 2580 "./util/configparser.y" + case 485: +#line 2595 "./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) @@ -5758,11 +5779,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" +#line 5783 "util/configparser.c" break; - case 484: -#line 2590 "./util/configparser.y" + case 486: +#line 2605 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5771,11 +5792,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5775 "util/configparser.c" +#line 5796 "util/configparser.c" break; - case 485: -#line 2600 "./util/configparser.y" + case 487: +#line 2615 "./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 && @@ -5813,11 +5834,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5817 "util/configparser.c" +#line 5838 "util/configparser.c" break; - case 486: -#line 2639 "./util/configparser.y" + case 488: +#line 2654 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5826,33 +5847,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5830 "util/configparser.c" +#line 5851 "util/configparser.c" break; - case 487: -#line 2649 "./util/configparser.y" + case 489: +#line 2664 "./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 5841 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 488: -#line 2657 "./util/configparser.y" + case 490: +#line 2672 "./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 5852 "util/configparser.c" +#line 5873 "util/configparser.c" break; - case 489: -#line 2665 "./util/configparser.y" + case 491: +#line 2680 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5866,11 +5887,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5870 "util/configparser.c" +#line 5891 "util/configparser.c" break; - case 490: -#line 2680 "./util/configparser.y" + case 492: +#line 2695 "./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) @@ -5878,19 +5899,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5903 "util/configparser.c" break; - case 491: -#line 2689 "./util/configparser.y" + case 493: +#line 2704 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5890 "util/configparser.c" +#line 5911 "util/configparser.c" break; - case 502: -#line 2700 "./util/configparser.y" + case 504: +#line 2715 "./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) @@ -5899,11 +5920,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5924 "util/configparser.c" break; - case 503: -#line 2710 "./util/configparser.y" + case 505: +#line 2725 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5911,79 +5932,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5936 "util/configparser.c" break; - case 504: -#line 2719 "./util/configparser.y" + case 506: +#line 2734 "./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 5925 "util/configparser.c" +#line 5946 "util/configparser.c" break; - case 505: -#line 2726 "./util/configparser.y" + case 507: +#line 2741 "./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 5935 "util/configparser.c" +#line 5956 "util/configparser.c" break; - case 506: -#line 2733 "./util/configparser.y" + case 508: +#line 2748 "./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 5945 "util/configparser.c" +#line 5966 "util/configparser.c" break; - case 507: -#line 2740 "./util/configparser.y" + case 509: +#line 2755 "./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 5955 "util/configparser.c" +#line 5976 "util/configparser.c" break; - case 508: -#line 2747 "./util/configparser.y" + case 510: +#line 2762 "./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 5965 "util/configparser.c" +#line 5986 "util/configparser.c" break; - case 509: -#line 2754 "./util/configparser.y" + case 511: +#line 2769 "./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 5975 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 510: -#line 2761 "./util/configparser.y" + case 512: +#line 2776 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5983 "util/configparser.c" +#line 6004 "util/configparser.c" break; - case 532: -#line 2781 "./util/configparser.y" + case 534: +#line 2796 "./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) @@ -5991,11 +6012,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5995 "util/configparser.c" +#line 6016 "util/configparser.c" break; - case 533: -#line 2790 "./util/configparser.y" + case 535: +#line 2805 "./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) @@ -6004,31 +6025,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6008 "util/configparser.c" +#line 6029 "util/configparser.c" break; - case 534: -#line 2800 "./util/configparser.y" + case 536: +#line 2815 "./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 6018 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 535: -#line 2807 "./util/configparser.y" + case 537: +#line 2822 "./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 6028 "util/configparser.c" +#line 6049 "util/configparser.c" break; - case 536: -#line 2814 "./util/configparser.y" + case 538: +#line 2829 "./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) @@ -6036,51 +6057,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6040 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 537: -#line 2823 "./util/configparser.y" + case 539: +#line 2838 "./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 6050 "util/configparser.c" +#line 6071 "util/configparser.c" break; - case 538: -#line 2830 "./util/configparser.y" + case 540: +#line 2845 "./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 6060 "util/configparser.c" +#line 6081 "util/configparser.c" break; - case 539: -#line 2837 "./util/configparser.y" + case 541: +#line 2852 "./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 6070 "util/configparser.c" +#line 6091 "util/configparser.c" break; - case 540: -#line 2844 "./util/configparser.y" + case 542: +#line 2859 "./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 6080 "util/configparser.c" +#line 6101 "util/configparser.c" break; - case 541: -#line 2851 "./util/configparser.y" + case 543: +#line 2866 "./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) @@ -6088,11 +6109,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6092 "util/configparser.c" +#line 6113 "util/configparser.c" break; - case 542: -#line 2860 "./util/configparser.y" + case 544: +#line 2875 "./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) @@ -6100,31 +6121,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6104 "util/configparser.c" +#line 6125 "util/configparser.c" break; - case 543: -#line 2869 "./util/configparser.y" + case 545: +#line 2884 "./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 6114 "util/configparser.c" +#line 6135 "util/configparser.c" break; - case 544: -#line 2876 "./util/configparser.y" + case 546: +#line 2891 "./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 6124 "util/configparser.c" +#line 6145 "util/configparser.c" break; - case 545: -#line 2883 "./util/configparser.y" + case 547: +#line 2898 "./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) @@ -6133,11 +6154,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 546: -#line 2893 "./util/configparser.y" + case 548: +#line 2908 "./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) @@ -6146,11 +6167,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6171 "util/configparser.c" break; - case 547: -#line 2903 "./util/configparser.y" + case 549: +#line 2918 "./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) @@ -6159,11 +6180,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6163 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 548: -#line 2913 "./util/configparser.y" + case 550: +#line 2928 "./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) @@ -6172,11 +6193,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6197 "util/configparser.c" break; - case 549: -#line 2923 "./util/configparser.y" + case 551: +#line 2938 "./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) @@ -6185,11 +6206,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6210 "util/configparser.c" break; - case 550: -#line 2933 "./util/configparser.y" + case 552: +#line 2948 "./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) @@ -6198,47 +6219,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6223 "util/configparser.c" break; - case 551: -#line 2943 "./util/configparser.y" + case 553: +#line 2958 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6210 "util/configparser.c" +#line 6231 "util/configparser.c" break; - case 555: -#line 2952 "./util/configparser.y" + case 557: +#line 2967 "./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 6220 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 556: -#line 2958 "./util/configparser.y" + case 558: +#line 2973 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6228 "util/configparser.c" +#line 6249 "util/configparser.c" break; - case 560: -#line 2967 "./util/configparser.y" + case 562: +#line 2982 "./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 6238 "util/configparser.c" +#line 6259 "util/configparser.c" break; - case 561: -#line 2973 "./util/configparser.y" + case 563: +#line 2988 "./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) @@ -6247,21 +6268,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6251 "util/configparser.c" +#line 6272 "util/configparser.c" break; - case 562: -#line 2983 "./util/configparser.y" + case 564: +#line 2998 "./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 6261 "util/configparser.c" +#line 6282 "util/configparser.c" break; - case 563: -#line 2990 "./util/configparser.y" + case 565: +#line 3005 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6269,30 +6290,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6273 "util/configparser.c" +#line 6294 "util/configparser.c" break; - case 564: -#line 2999 "./util/configparser.y" + case 566: +#line 3014 "./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 6284 "util/configparser.c" +#line 6305 "util/configparser.c" break; - case 565: -#line 3007 "./util/configparser.y" + case 567: +#line 3022 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6292 "util/configparser.c" +#line 6313 "util/configparser.c" break; - case 578: -#line 3023 "./util/configparser.y" + case 580: +#line 3038 "./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) @@ -6300,11 +6321,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6304 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 579: -#line 3033 "./util/configparser.y" + case 581: +#line 3048 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6312,21 +6333,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 580: -#line 3042 "./util/configparser.y" + case 582: +#line 3057 "./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 6326 "util/configparser.c" +#line 6347 "util/configparser.c" break; - case 581: -#line 3049 "./util/configparser.y" + case 583: +#line 3064 "./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))) @@ -6334,21 +6355,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 6338 "util/configparser.c" +#line 6359 "util/configparser.c" break; - case 582: -#line 3058 "./util/configparser.y" + case 584: +#line 3073 "./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 6348 "util/configparser.c" +#line 6369 "util/configparser.c" break; - case 583: -#line 3065 "./util/configparser.y" + case 585: +#line 3080 "./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))) @@ -6356,22 +6377,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 6360 "util/configparser.c" +#line 6381 "util/configparser.c" break; - case 584: -#line 3074 "./util/configparser.y" + case 586: +#line 3089 "./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 6371 "util/configparser.c" +#line 6392 "util/configparser.c" break; - case 585: -#line 3082 "./util/configparser.y" + case 587: +#line 3097 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6383,22 +6404,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 6408 "util/configparser.c" break; - case 586: -#line 3095 "./util/configparser.y" + case 588: +#line 3110 "./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 6398 "util/configparser.c" +#line 6419 "util/configparser.c" break; - case 587: -#line 3103 "./util/configparser.y" + case 589: +#line 3118 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6410,19 +6431,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6435 "util/configparser.c" break; - case 588: -#line 3116 "./util/configparser.y" + case 590: +#line 3131 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6422 "util/configparser.c" +#line 6443 "util/configparser.c" break; - case 597: -#line 3127 "./util/configparser.y" + case 599: +#line 3142 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6433,11 +6454,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6437 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 598: -#line 3139 "./util/configparser.y" + case 600: +#line 3154 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6448,11 +6469,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6452 "util/configparser.c" +#line 6473 "util/configparser.c" break; - case 599: -#line 3151 "./util/configparser.y" + case 601: +#line 3166 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6463,11 +6484,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6467 "util/configparser.c" +#line 6488 "util/configparser.c" break; - case 600: -#line 3163 "./util/configparser.y" + case 602: +#line 3178 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6481,11 +6502,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6485 "util/configparser.c" +#line 6506 "util/configparser.c" break; - case 601: -#line 3178 "./util/configparser.y" + case 603: +#line 3193 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6497,11 +6518,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6501 "util/configparser.c" +#line 6522 "util/configparser.c" break; - case 602: -#line 3191 "./util/configparser.y" + case 604: +#line 3206 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6513,11 +6534,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6517 "util/configparser.c" +#line 6538 "util/configparser.c" break; - case 603: -#line 3204 "./util/configparser.y" + case 605: +#line 3219 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6527,19 +6548,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6531 "util/configparser.c" +#line 6552 "util/configparser.c" break; - case 604: -#line 3215 "./util/configparser.y" + case 606: +#line 3230 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6539 "util/configparser.c" +#line 6560 "util/configparser.c" break; - case 609: -#line 3224 "./util/configparser.y" + case 611: +#line 3239 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6553,11 +6574,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6557 "util/configparser.c" +#line 6578 "util/configparser.c" break; - case 610: -#line 3239 "./util/configparser.y" + case 612: +#line 3254 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6571,11 +6592,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6575 "util/configparser.c" +#line 6596 "util/configparser.c" break; -#line 6579 "util/configparser.c" +#line 6600 "util/configparser.c" default: break; } @@ -6794,7 +6815,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6807,7 +6828,7 @@ yyreturn: #endif return yyresult; } -#line 3253 "./util/configparser.y" +#line 3268 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 2a86ce512..2083891f9 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -337,7 +337,8 @@ extern int yydebug; VAR_RPZ_LOG = 543, VAR_RPZ_LOG_NAME = 544, VAR_DYNLIB = 545, - VAR_DYNLIB_FILE = 546 + VAR_DYNLIB_FILE = 546, + VAR_EDNS_CLIENT_TAG = 547 }; #endif /* Tokens. */ @@ -630,6 +631,7 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 544 #define VAR_DYNLIB 545 #define VAR_DYNLIB_FILE 546 +#define VAR_EDNS_CLIENT_TAG 547 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -639,7 +641,7 @@ union YYSTYPE char* str; -#line 643 "util/configparser.h" +#line 645 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index fe600a999..1d0e86580 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,7 +175,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME -%token VAR_DYNLIB VAR_DYNLIB_FILE +%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -285,7 +285,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_unknown_server_time_limit | server_log_tag_queryreply | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | - server_tls_use_sni + server_tls_use_sni | server_edns_client_tag ; stubstart: VAR_STUB_ZONE { @@ -2403,6 +2403,21 @@ server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG #endif } ; +server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG + { + int tag_data; + OUTYY(("P(server_edns_client_tag:%s %s)\n", $2, $3)); + tag_data = atoi($3); + if(tag_data > 65535 || tag_data < 0 || + (tag_data == 0 && (strlen($3) != 1 || $3[0] != '0'))) + yyerror("edns-client-tag data invalid, needs to be a " + "number from 0 to 65535"); + if(!cfg_str2list_insert( + &cfg_parser->cfg->edns_client_tags, $2, $3)) + fatal_exit("out of memory adding " + "edns-client-tag"); + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); diff --git a/util/edns.c b/util/edns.c index 0ab00cf7c..341b7f90a 100644 --- a/util/edns.c +++ b/util/edns.c @@ -75,6 +75,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags, /* TODO walk over config, create and insert node. */ + addr_tree_init_parents(&edns_tags->client_tags); return 1; } From 2fe398f4bf04dbb66b4224c72e61d916a3948990 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 24 Jul 2020 16:00:13 +0200 Subject: [PATCH 138/394] EDNS client tags - insert configured tags into tree --- services/outside_network.c | 2 +- util/edns.c | 44 +++++++++++++++++++++++++++++++++++--- util/edns.h | 2 +- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index b7ac5ef60..67eca05ed 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2118,7 +2118,7 @@ outnet_serviced_query(struct outside_network* outnet, qstate, qstate->region)) return NULL; - if((client_tag_addr = edns_tag_addr_lookup(env->edns_tags->client_tags, + if((client_tag_addr = edns_tag_addr_lookup(&env->edns_tags->client_tags, addr, addrlen))) { uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, diff --git a/util/edns.c b/util/edns.c index 341b7f90a..db33212c0 100644 --- a/util/edns.c +++ b/util/edns.c @@ -43,6 +43,7 @@ #include "util/edns.h" #include "util/config_file.h" #include "util/netevent.h" +#include "util/net_help.h" #include "util/regional.h" #include "util/data/msgparse.h" #include "util/data/msgreply.h" @@ -67,23 +68,60 @@ void edns_tags_delete(struct edns_tags* edns_tags) free(edns_tags); } +static int +edns_tags_client_insert(struct edns_tags* edns_tags, + struct sockaddr_storage* addr, socklen_t addrlen, int net, + uint16_t tag_data) +{ + struct edns_tag_addr* eta = regional_alloc_zero(edns_tags->region, + sizeof(struct edns_tag_addr)); + if(!eta) + return 0; + eta->tag_data = tag_data; + if(!addr_tree_insert(&edns_tags->client_tags, &eta->node, addr, addrlen, + net)) { + verbose(VERB_QUERY, "duplicate EDNS client tag ignored."); + } + return 1; +} + int edns_tags_apply_cfg(struct edns_tags* edns_tags, struct config_file* config) { + struct config_str2list* c; regional_free_all(edns_tags->region); addr_tree_init(&edns_tags->client_tags); - /* TODO walk over config, create and insert node. */ + for(c=config->edns_client_tags; c; c=c->next) { + struct sockaddr_storage addr; + socklen_t addrlen; + int net; + uint16_t tag_data; + log_assert(c->str && c->str2); + + if(!netblockstrtoaddr(c->str, UNBOUND_DNS_PORT, &addr, &addrlen, + &net)) { + log_err("cannot parse EDNS client tag IP netblock: %s", + c->str); + return 0; + } + tag_data = atoi(c->str2); /* validated in config parser */ + if(!edns_tags_client_insert(edns_tags, &addr, addrlen, net, + tag_data)) { + log_err("out of memory while adding EDNS tags"); + return 0; + } + } addr_tree_init_parents(&edns_tags->client_tags); return 1; } struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, +edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen) { - return (struct edns_tag_addr*)addr_tree_lookup(&tree, addr, addrlen); + return (struct edns_tag_addr*)addr_tree_lookup(tree, addr, addrlen); } static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, diff --git a/util/edns.h b/util/edns.h index 310ba1cd2..ee0e3de54 100644 --- a/util/edns.h +++ b/util/edns.h @@ -99,7 +99,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags, * @return: matching tree node, NULL otherwise */ struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, +edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); /** From d201a11a673206b9f93f45649e80aba6767a8408 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 12:10:28 +0200 Subject: [PATCH 139/394] - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 3 +++ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/configure b/configure index ed66e8530..a976189e5 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.11.0. +# Generated by GNU Autoconf 2.69 for unbound 1.11.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.11.0' -PACKAGE_STRING='unbound 1.11.0' +PACKAGE_VERSION='1.11.1' +PACKAGE_STRING='unbound 1.11.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1458,7 +1458,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.11.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.11.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.11.0:";; + short | recursive ) echo "Configuration of unbound 1.11.1:";; esac cat <<\_ACEOF @@ -1750,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.11.0 +unbound configure 1.11.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2459,7 +2459,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.11.0, which was +It was created by unbound $as_me 1.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2811,11 +2811,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=11 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=9 +LIBUNBOUND_REVISION=10 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2892,6 +2892,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 +# 1.11.1 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21619,7 +21620,7 @@ _ACEOF -version=1.11.0 +version=1.11.1 date=`date +'%b %e, %Y'` @@ -22138,7 +22139,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.11.0, which was +This file was extended by unbound $as_me 1.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22204,7 +22205,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.11.0 +unbound config.status 1.11.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 1d16dce72..22319b5a9 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[11]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=9 +LIBUNBOUND_REVISION=10 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -95,6 +95,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 +# 1.11.1 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 3339e77b3..6de5831d7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +27 July 2020: Wouter + - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. + 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. From 4bd97633a1599195a9aa68bc6295e76197742376 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 27 Jul 2020 12:14:08 +0200 Subject: [PATCH 140/394] =?UTF-8?q?-=20Merge=20PR=20#269,=20Fix=20python?= =?UTF-8?q?=20module=20len()=20implementations,=20by=20Torbj=C3=B6rn=20L?= =?UTF-8?q?=C3=B6nnemark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6de5831d7..1fa8d631d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 July 2020: Ralph + - Merge PR #269, Fix python module len() implementations, by Torbjörn + Lönnemark + 27 July 2020: Wouter - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. From e4b702ef4f8ac89f147cf3dc3d749f98fa75b1a1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 13:02:47 +0200 Subject: [PATCH 141/394] Changelog note for PR #270 - Merge PR #270 from cgzones: munin plugin: always exit 0 in autoconf --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 1fa8d631d..6494e04d2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 27 July 2020: Wouter - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. + - Merge PR #270 from cgzones: munin plugin: always exit 0 in autoconf 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the From fa892b2456020b41a7e077cdd4ea5b3e8f2d201d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 27 Jul 2020 15:54:43 +0200 Subject: [PATCH 142/394] - Add EDNS client tag test --- testcode/fake_event.c | 14 +++- testdata/edns_client_tag.rpl | 151 +++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 testdata/edns_client_tag.rpl diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d89eedce8..59df27f57 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -52,6 +52,7 @@ #include "util/data/msgreply.h" #include "util/data/msgencode.h" #include "util/data/dname.h" +#include "util/edns.h" #include "util/config_file.h" #include "services/listen_dnsport.h" #include "services/outside_network.h" @@ -1180,7 +1181,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* qstate, comm_point_callback_type* callback, void* callback_arg, sldns_buffer* ATTR_UNUSED(buff), - struct module_env* ATTR_UNUSED(env)) + struct module_env* env) { struct replay_runtime* runtime = (struct replay_runtime*)outnet->base; struct fake_pending* pend = (struct fake_pending*)calloc(1, @@ -1209,6 +1210,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sldns_buffer_flip(pend->buffer); if(1) { struct edns_data edns; + struct edns_tag_addr* client_tag_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) { free(pend); @@ -1220,9 +1222,17 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits = 0; - edns.opt_list = qstate->edns_opts_back_out; if(dnssec) edns.bits = EDNS_DO; + if((client_tag_addr = edns_tag_addr_lookup( + &env->edns_tags->client_tags, + addr, addrlen))) { + uint16_t client_tag = htons(client_tag_addr->tag_data); + edns_opt_list_append(&qstate->edns_opts_back_out, + LDNS_EDNS_CLIENT_TAG, 2, + (uint8_t*)&client_tag, qstate->region); + } + edns.opt_list = qstate->edns_opts_back_out; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/testdata/edns_client_tag.rpl b/testdata/edns_client_tag.rpl new file mode 100644 index 000000000..767652c26 --- /dev/null +++ b/testdata/edns_client_tag.rpl @@ -0,0 +1,151 @@ +; config options +server: + edns-client-tag: 10.0.0.0/24 1234 + edns-client-tag: 10.0.0.10/32 5678 + +stub-zone: + name: "tag1234." + stub-addr: 10.0.0.1 + +stub-zone: + name: "tag5678." + stub-addr: 10.0.0.10 + +stub-zone: + name: "notag." + stub-addr: 10.10.0.1 + +CONFIG_END + +SCENARIO_BEGIN Test EDNS client tag option + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +tag1234. IN A +SECTION ANSWER +tag1234. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +tag5678. IN A +SECTION ANSWER +tag5678. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.10.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +tag1234. IN A +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +tag1234. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 10 ; Opcode 16 + 00 02 ; Length 2 + 04 d2 ; 1234 + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +tag1234. IN A +SECTION ANSWER +tag1234. IN A 10.20.30.40 +ENTRY_END + +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +tag5678. IN A +ENTRY_END + +STEP 120 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +tag5678. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 10 ; Opcode 16 + 00 02 ; Length 2 + 16 2e ; 5678 + HEX_EDNSDATA_END +ENTRY_END + +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +tag5678. IN A +SECTION ANSWER +tag5678. IN A 10.20.30.40 +ENTRY_END + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +notag. IN A +ENTRY_END + +STEP 220 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +notag. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + HEX_EDNSDATA_END +ENTRY_END + +STEP 230 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END From 2932d530c10b7519af03c43e8f00beb23fa38c8c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 16:59:46 +0200 Subject: [PATCH 143/394] stream reuse, send queries one by one when upstream refuses multiple queries, by closing the connection. --- services/outside_network.c | 93 +++++++++++++++++++++++++++++--------- services/outside_network.h | 2 + 2 files changed, 74 insertions(+), 21 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index c7c0743b8..0ef1dcb4c 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -759,6 +759,75 @@ use_free_buffer(struct outside_network* outnet) } } +/** add waiting_tcp element to the outnet tcp waiting list */ +static void +outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) +{ + struct timeval tv; + w->next_waiting = NULL; + if(outnet->tcp_wait_last) + outnet->tcp_wait_last->next_waiting = w; + else outnet->tcp_wait_first = w; + outnet->tcp_wait_last = w; + w->on_tcp_waiting_list = 1; +#ifndef S_SPLINT_S + tv.tv_sec = w->timeout/1000; + tv.tv_usec = (w->timeout%1000)*1000; +#endif + comm_timer_set(w->timer, &tv); +} + +/** delete element from tree by id */ +static void +reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) +{ + log_assert(w->id_node.key != NULL); + rbtree_delete(&reuse->tree_by_id, w); + w->id_node.key = NULL; +} + +/** more writewait list to go for another connection. */ +static void +reuse_move_writewait_away(struct outside_network* outnet, + struct pending_tcp* pend) +{ + /* the writewait list has not been written yet, so if the + * stream was closed, they have not actually been failed, only + * the queries written. Other queries can get written to another + * stream. For upstreams that do not support multiple queries + * and answers, the stream can get closed, and then the queries + * can get written on a new socket */ + struct waiting_tcp* w; + if(pend->query && pend->query->error_count == 0 && + pend->c->tcp_write_pkt == pend->query->pkt && + pend->c->tcp_write_pkt_len == pend->query->pkt_len) { + /* since the current query is not written, it can also + * move to a free buffer */ + verbose(5, "reuse_move_writewait_away current %d done", + (int)pend->c->tcp_write_byte_count); + pend->c->tcp_write_pkt = NULL; + pend->c->tcp_write_pkt_len = 0; + pend->c->tcp_write_and_read = 0; + pend->c->tcp_more_read_again = 0; + pend->c->tcp_more_write_again = 0; + pend->c->tcp_is_reading = 1; + w = pend->query; + pend->query = NULL; + /* increase error count, so that if the next socket fails too + * the server selection is run again with this query failed + * and it can select a different server (if possible), or + * fail the query */ + w->error_count ++; + reuse_tree_by_id_delete(&pend->reuse, w); + outnet_add_tcp_waiting(outnet, w); + } + while((w = reuse_write_wait_pop(&pend->reuse)) != NULL) { + verbose(5, "reuse_move_writewait_away item"); + reuse_tree_by_id_delete(&pend->reuse, w); + outnet_add_tcp_waiting(outnet, w); + } +} + /** remove reused element from tree and lru list */ static void reuse_tcp_remove_tree_list(struct outside_network* outnet, @@ -874,15 +943,6 @@ static void reuse_cb_and_decommission(struct outside_network* outnet, reuse_del_readwait(&store); } -/** delete element from tree by id */ -static void -reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) -{ - log_assert(w->id_node.key != NULL); - rbtree_delete(&reuse->tree_by_id, w); - w->id_node.key = NULL; -} - /** set timeout on tcp fd and setup read event to catch incoming dns msgs */ static void reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp) @@ -958,6 +1018,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, return 0; } else if(error != NETEVENT_NOERROR) { verbose(VERB_QUERY, "outnettcp got tcp error %d", error); + reuse_move_writewait_away(outnet, pend); /* pass error below and exit */ } else { /* check ID */ @@ -2009,6 +2070,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, w->write_wait_prev = NULL; w->write_wait_next = NULL; w->write_wait_queued = 0; + w->error_count = 0; if(pend) { /* we have a buffer available right now */ if(reuse) { @@ -2047,19 +2109,8 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* queue up */ /* waiting for a buffer on the outside network buffer wait * list */ - struct timeval tv; verbose(5, "pending_tcp_query: queue to wait"); - w->next_waiting = NULL; - if(sq->outnet->tcp_wait_last) - sq->outnet->tcp_wait_last->next_waiting = w; - else sq->outnet->tcp_wait_first = w; - sq->outnet->tcp_wait_last = w; - w->on_tcp_waiting_list = 1; -#ifndef S_SPLINT_S - tv.tv_sec = timeout/1000; - tv.tv_usec = (timeout%1000)*1000; -#endif - comm_timer_set(w->timer, &tv); + outnet_add_tcp_waiting(sq->outnet, w); } #ifdef USE_DNSTAP if(sq->outnet->dtenv && diff --git a/services/outside_network.h b/services/outside_network.h index 9ebbabe9c..26705c56d 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -386,6 +386,8 @@ struct waiting_tcp { int ssl_upstream; /** ref to the tls_auth_name from the serviced_query */ char* tls_auth_name; + /** the packet was involved in an error, to stop looping errors */ + int error_count; }; /** From 444681af9d881700da24ed1fd30b265912d56f5e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 17:12:23 +0200 Subject: [PATCH 144/394] stream reuse, defensible wait add and debug log with details for requeue. --- services/outside_network.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 0ef1dcb4c..acbc28eaf 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -764,6 +764,8 @@ static void outnet_add_tcp_waiting(struct outside_network* outnet, struct waiting_tcp* w) { struct timeval tv; + if(w->on_tcp_waiting_list) + return; w->next_waiting = NULL; if(outnet->tcp_wait_last) outnet->tcp_wait_last->next_waiting = w; @@ -786,7 +788,7 @@ reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp* w) w->id_node.key = NULL; } -/** more writewait list to go for another connection. */ +/** move writewait list to go for another connection. */ static void reuse_move_writewait_away(struct outside_network* outnet, struct pending_tcp* pend) @@ -803,8 +805,13 @@ reuse_move_writewait_away(struct outside_network* outnet, pend->c->tcp_write_pkt_len == pend->query->pkt_len) { /* since the current query is not written, it can also * move to a free buffer */ - verbose(5, "reuse_move_writewait_away current %d done", - (int)pend->c->tcp_write_byte_count); + if(verbosity >= 5 && pend->query->pkt_len > 12+2+2 && + dname_valid(pend->query->pkt+12, pend->query->pkt_len-12)) { + char buf[LDNS_MAX_DOMAINLEN+1]; + dname_str(pend->query->pkt+12, buf); + verbose(5, "reuse_move_writewait_away current %s %d bytes were written", + buf, (int)pend->c->tcp_write_byte_count); + } pend->c->tcp_write_pkt = NULL; pend->c->tcp_write_pkt_len = 0; pend->c->tcp_write_and_read = 0; @@ -822,7 +829,12 @@ reuse_move_writewait_away(struct outside_network* outnet, outnet_add_tcp_waiting(outnet, w); } while((w = reuse_write_wait_pop(&pend->reuse)) != NULL) { - verbose(5, "reuse_move_writewait_away item"); + if(verbosity >= 5 && w->pkt_len > 12+2+2 && + dname_valid(w->pkt+12, w->pkt_len-12)) { + char buf[LDNS_MAX_DOMAINLEN+1]; + dname_str(w->pkt+12, buf); + verbose(5, "reuse_move_writewait_away item %s", buf); + } reuse_tree_by_id_delete(&pend->reuse, w); outnet_add_tcp_waiting(outnet, w); } From 506dad946b7388786f11435ebcbd667388d1da9f Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:26:42 +0000 Subject: [PATCH 145/394] Ensure packet_rrset_data is always initialised to zero upon allocation --- dns64/dns64.c | 2 +- respip/respip.c | 2 +- util/data/msgencode.c | 4 ++-- util/data/msgreply.c | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index 5c70119a5..39fd8778c 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -722,7 +722,7 @@ dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, *dd_out = NULL; return; /* integer overflow protection in alloc */ } - if (!(dd = *dd_out = regional_alloc(region, + if (!(dd = *dd_out = regional_alloc_zero(region, sizeof(struct packed_rrset_data) + fd->count * (sizeof(size_t) + sizeof(time_t) + sizeof(uint8_t*) + 2 + 16)))) { diff --git a/respip/respip.c b/respip/respip.c index 6fa4f1885..dd0bed8be 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -523,7 +523,7 @@ copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region) return NULL; /* guard against integer overflow */ dsize += data->rr_len[i]; } - d = regional_alloc(region, dsize); + d = regional_alloc_zero(region, dsize); if(!d) return NULL; *d = *data; diff --git a/util/data/msgencode.c b/util/data/msgencode.c index 5de9379a1..6798b1799 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -486,7 +486,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, if(data->rr_ttl[j] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); + else sldns_buffer_write_u32(pkt, data->rr_ttl[j]-adjust); if(c) { if((r=compress_rdata(pkt, data->rr_data[j], data->rr_len[j], region, tree, c)) @@ -523,7 +523,7 @@ packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer* pkt, if(data->rr_ttl[i] < adjust) sldns_buffer_write_u32(pkt, SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0); - else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); + else sldns_buffer_write_u32(pkt, data->rr_ttl[i]-adjust); /* rrsig rdata cannot be compressed, perform 100+ byte * memcopy. */ sldns_buffer_write(pkt, data->rr_data[i], diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 5a6c1f853..6fce9a732 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -323,8 +323,8 @@ parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset, (sizeof(size_t)+sizeof(uint8_t*)+sizeof(time_t)) + pset->size; if(region) - *data = regional_alloc(region, s); - else *data = malloc(s); + *data = regional_alloc_zero(region, s); + else *data = calloc(1, s); if(!*data) return 0; /* copy & decompress */ From 21f175b1acc8e8766060e71e84a0c1913fc38c23 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:27:15 +0000 Subject: [PATCH 146/394] Adjust semantics of TTL adjustment after feedback from @wcawijngaards --- cachedb/cachedb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cachedb/cachedb.c b/cachedb/cachedb.c index 6a2b735aa..e948a6b0d 100644 --- a/cachedb/cachedb.c +++ b/cachedb/cachedb.c @@ -465,7 +465,7 @@ packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t subtract) data->rr_ttl[i] -= subtract; else data->rr_ttl[i] = 0; } - data->ttl_add = 0; + data->ttl_add = (subtract < data->ttl_add) ? (data->ttl_add - subtract) : 0; } /* Adjust the TTL of a DNS message and its RRs by 'adjust'. If 'adjust' is From 027884aad26796d810299c1d3c32ba3814f0ff65 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 29 Jul 2020 15:52:58 +0000 Subject: [PATCH 147/394] Disable enforcing of min/max TTL when serving original TTL --- doc/unbound.conf.5.in | 11 ++++++----- util/data/msgreply.c | 4 ++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 5e826bbf6..8c029411a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1126,14 +1126,15 @@ behavior. Default is 0. .TP .B serve\-original\-ttl: \fI If enabled, unbound will always return the original TTL as received from -the upstream authoritative name server rather than the decrementing TTL as +the upstream name server rather than the decrementing TTL as stored in the cache. This feature may be useful if unbound serves as a front-end to a hidden authoritative name server. Enabling this feature does not impact cache expiry, it only changes the TTL unbound embeds in responses to -queries. Note that the returned TTL is still subject to the -configured maximum TTL as set using \fBcache\-max\-ttl\fR (defaults to -86400 seconds). If you wish to return higher original TTL values, you may -need to explicitly adjust the setting for \fBcache\-max\-ttl\fR. +queries. Note that enabling this feature implicitly disables enforcement of +the configured minimum and maximum TTL, as it is assumed users who enable this +feature do not want unbound to change the TTL obtained from an upstream server. +Thus, the values set using \fBcache\-min\-ttl\fR and \fBcache\-max\-ttl\fR are +ignored. Default is "no". .TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 6fce9a732..072a69b33 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -199,9 +199,9 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, if(*rr_ttl > MAX_NEG_TTL) *rr_ttl = MAX_NEG_TTL; } - if(*rr_ttl < MIN_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl < MIN_TTL)) *rr_ttl = MIN_TTL; - if(*rr_ttl > MAX_TTL) + if(!SERVE_ORIGINAL_TTL && (*rr_ttl > MAX_TTL)) *rr_ttl = MAX_TTL; if(*rr_ttl < data->ttl) data->ttl = *rr_ttl; From 12d880ad47c90aa22b2c6a6becedad0a78e10efc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 30 Jul 2020 16:41:28 +0200 Subject: [PATCH 148/394] stream reuse, add a test for close by upstream server after timeout. --- testdata/tcp_reuse.tdir/tcp_reuse.conf2 | 2 ++ testdata/tcp_reuse.tdir/tcp_reuse.pre | 2 +- testdata/tcp_reuse.tdir/tcp_reuse.test | 30 +++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 index 6cb1e6122..55985c83f 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.conf2 +++ b/testdata/tcp_reuse.tdir/tcp_reuse.conf2 @@ -10,6 +10,7 @@ server: chroot: "" username: "" do-not-query-localhost: no + tcp-idle-timeout: 10000 log-queries: yes log-replies: yes @@ -24,6 +25,7 @@ server: local-data: "www4.example.com A 10.20.30.44" local-data: "www5.example.com A 10.20.30.45" local-data: "www6.example.com A 10.20.30.46" + local-data: "www7.example.com A 10.20.30.47" local-zone: "drop.net" deny local-zone: "refuse.net" refuse diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.pre b/testdata/tcp_reuse.tdir/tcp_reuse.pre index 30dbdc96f..ada38271a 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.pre +++ b/testdata/tcp_reuse.tdir/tcp_reuse.pre @@ -25,7 +25,7 @@ wait_unbound_up unbound.log sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf2 > ub2.conf # start upstream unbound in the background #$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & -$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +valgrind $PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & UPSTREAM_PID=$! echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test wait_unbound_up unbound2.log diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index 5541ed7f9..5f0844890 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -213,6 +213,36 @@ for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do fi done +# make the server timeout to drop the upstream connection +echo "> sleep 20" +sleep 15 +# see if we are still up. +echo "> query a7.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a7.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +for x in a7.more.net; do + if grep "$x" outfile | grep "10.20.30.40"; then + echo "content OK for $x" + else + echo "result contents not OK, for $x" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for $x" + exit 1 + fi +done + # dropconn.drop.net make the server drop the connection. echo "> query a11.more.net a12.more.net dropconn.drop.net a14.more.net a15.more.net" $PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a11.more.net A IN a12.more.net A IN dropconn.drop.net A IN a14.more.net A IN a15.more.net A IN >outfile 2>&1 From 7a211e5a07365e2ecb52312ab88c4dbf8036f15b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 30 Jul 2020 17:51:13 +0200 Subject: [PATCH 149/394] stream reuse, fix tls close by upstream after timeout write event handling. --- services/outside_network.c | 1 + 1 file changed, 1 insertion(+) diff --git a/services/outside_network.c b/services/outside_network.c index acbc28eaf..0b0b928b0 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -543,6 +543,7 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, pend->c->tcp_write_pkt_len = w->pkt_len; pend->c->tcp_write_and_read = 1; pend->c->tcp_write_byte_count = 0; + pend->c->tcp_is_reading = 0; comm_point_start_listening(pend->c, s, -1); /* set timer on the waiting_tcp entry, this is the write timeout * for the written packet. The timer on pend->c is the timer From 1116bf640098645894dc437f4b559e04e7904407 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 30 Jul 2020 17:51:49 +0200 Subject: [PATCH 150/394] stream reuse, add tls test for stream reuse. --- testdata/ssl_reuse.tdir/ssl_reuse.conf | 18 ++ testdata/ssl_reuse.tdir/ssl_reuse.conf2 | 43 +++ testdata/ssl_reuse.tdir/ssl_reuse.dsc | 16 + testdata/ssl_reuse.tdir/ssl_reuse.post | 19 ++ testdata/ssl_reuse.tdir/ssl_reuse.pre | 34 +++ testdata/ssl_reuse.tdir/ssl_reuse.test | 308 ++++++++++++++++++++ testdata/ssl_reuse.tdir/unbound_control.key | 39 +++ testdata/ssl_reuse.tdir/unbound_control.pem | 22 ++ testdata/ssl_reuse.tdir/unbound_server.key | 39 +++ testdata/ssl_reuse.tdir/unbound_server.pem | 22 ++ 10 files changed, 560 insertions(+) create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.conf create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.conf2 create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.dsc create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.post create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.pre create mode 100644 testdata/ssl_reuse.tdir/ssl_reuse.test create mode 100644 testdata/ssl_reuse.tdir/unbound_control.key create mode 100644 testdata/ssl_reuse.tdir/unbound_control.pem create mode 100644 testdata/ssl_reuse.tdir/unbound_server.key create mode 100644 testdata/ssl_reuse.tdir/unbound_server.pem diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.conf b/testdata/ssl_reuse.tdir/ssl_reuse.conf new file mode 100644 index 000000000..52857ca37 --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.conf @@ -0,0 +1,18 @@ +server: + verbosity: 5 + # num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + tls-cert-bundle: "unbound_server.pem" + ssl-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@#unbound" diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.conf2 b/testdata/ssl_reuse.tdir/ssl_reuse.conf2 new file mode 100644 index 000000000..0b452558d --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.conf2 @@ -0,0 +1,43 @@ +# this is the upstream server that has pipelining and responds to queries. +server: + verbosity: 1 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound2.pid" + chroot: "" + username: "" + do-not-query-localhost: no + tls-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + tcp-idle-timeout: 10000 + + log-queries: yes + log-replies: yes + log-identity: "upstream" + + local-zone: "." refuse + local-zone: "example.com" static + local-data: "www.example.com A 10.20.30.40" + local-data: "www1.example.com A 10.20.30.41" + local-data: "www2.example.com A 10.20.30.42" + local-data: "www3.example.com A 10.20.30.43" + local-data: "www4.example.com A 10.20.30.44" + local-data: "www5.example.com A 10.20.30.45" + local-data: "www6.example.com A 10.20.30.46" + local-data: "www7.example.com A 10.20.30.47" + + local-zone: "drop.net" deny + local-zone: "refuse.net" refuse + + local-zone: "more.net" redirect + local-data: "more.net A 10.20.30.40" + +# if queries escape, send them to localhost +forward-zone: + name: "." + forward-tls-upstream: yes + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.dsc b/testdata/ssl_reuse.tdir/ssl_reuse.dsc new file mode 100644 index 000000000..ab2b67f66 --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.dsc @@ -0,0 +1,16 @@ +BaseName: ssl_reuse +Version: 1.0 +Description: Test ssl stream reuse. +CreationDate: Wed Jun 30 16:37:00 CET 2020 +Maintainer: Wouter Wijngaards +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: ssl_reuse.pre +Post: ssl_reuse.post +Test: ssl_reuse.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.post b/testdata/ssl_reuse.tdir/ssl_reuse.post new file mode 100644 index 000000000..4337af204 --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.post @@ -0,0 +1,19 @@ +# #-- ssl_reuse.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid `cat unbound2.pid` +if test -f unbound2.log; then + echo ">>> upstream log" + cat unbound2.log +fi +#kill_pid $UNBOUND_PID +kill_pid `cat unbound.pid` +if test -f unbound.log; then + echo ">>> unbound log" + cat unbound.log +fi diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.pre b/testdata/ssl_reuse.tdir/ssl_reuse.pre new file mode 100644 index 000000000..cc2248608 --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.pre @@ -0,0 +1,34 @@ +# #-- ssl_reuse.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +get_random_port 2 +UNBOUND_PORT=$RND_PORT +UPSTREAM_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < ssl_reuse.conf > ub.conf +# start unbound in the background +#$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +valgrind $PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test +wait_unbound_up unbound.log + +# make upstream config file +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < ssl_reuse.conf2 > ub2.conf +# start upstream unbound in the background +#$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & +valgrind $PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +UPSTREAM_PID=$! +echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test +wait_unbound_up unbound2.log + +cat .tpkg.var.test + diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.test b/testdata/ssl_reuse.tdir/ssl_reuse.test new file mode 100644 index 000000000..d0106c17e --- /dev/null +++ b/testdata/ssl_reuse.tdir/ssl_reuse.test @@ -0,0 +1,308 @@ +# #-- ssl_reuse.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh + +get_make +(cd $PRE; $MAKE streamtcp) + +echo "> query www1.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www1.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.com" outfile | grep "10.20.30.41"; then + echo "content OK" +else + echo "result contents not OK, for www1.example.com" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www1.example.com" + exit 1 +fi +echo "OK" +echo "" + +# this should be reused on the same tcp stream: +echo "> query www2.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www2.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK, for www2.example.com" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www2.example.com" + exit 1 +fi + +echo "> query refuse.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT refuse.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile; then + echo "content OK" +else + echo "result contents not OK, for refuse.net" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for refuse.net" + exit 1 +fi + +echo "> query www3.example.com." +echo "> query www4.example.com." +echo "> query www5.example.com." +echo "> query www6.example.com." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www3.example.com. A IN >outfile3 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www4.example.com. A IN >outfile4 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www5.example.com. A IN >outfile5 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT www6.example.com. A IN >outfile6 2>&1 & +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.com" outfile3 | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK, for www3.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www3.example.com" + exit 1 +fi +if grep "www4.example.com" outfile4 | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK, for www4.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www4.example.com" + exit 1 +fi +if grep "www5.example.com" outfile5 | grep "10.20.30.45"; then + echo "content OK" +else + echo "result contents not OK, for www5.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www5.example.com" + exit 1 +fi +if grep "www6.example.com" outfile6 | grep "10.20.30.46"; then + echo "content OK" +else + echo "result contents not OK, for www6.example.com" + echo "> cat logfiles" + cat outfile3 + cat outfile4 + cat outfile5 + cat outfile6 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for www6.example.com" + exit 1 +fi + +echo "> query a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a1.more.net A IN a2.more.net A IN a3.more.net A IN a4.more.net A IN a5.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do + if grep "$x" outfile | grep "10.20.30.40"; then + echo "content OK for $x" + else + echo "result contents not OK, for $x" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for $x" + exit 1 + fi +done + +# make the server timeout to drop the upstream connection +echo "> sleep 20" +sleep 15 +# see if we are still up. +echo "> query a7.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a7.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +for x in a7.more.net; do + if grep "$x" outfile | grep "10.20.30.40"; then + echo "content OK for $x" + else + echo "result contents not OK, for $x" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for $x" + exit 1 + fi +done + +# dropconn.drop.net make the server drop the connection. +echo "> query a11.more.net a12.more.net dropconn.drop.net a14.more.net a15.more.net" +$PRE/streamtcp -a -f 127.0.0.1@$UNBOUND_PORT a11.more.net A IN a12.more.net A IN dropconn.drop.net A IN a14.more.net A IN a15.more.net A IN >outfile 2>&1 +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile +# cannot really check outfile, because it may or may not have answers depending +# on how fast the other server responds or the drop happens, but there are +# a bunch of connection drops, whilst resolving the other queries. + +echo "> query drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT drop.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile; then + echo "content OK" +else + echo "result contents not OK, for drop.net" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for drop.net" + exit 1 +fi + +# timeouts at the end. (so that the server is not marked as failed for +# the other tests). +echo "> query q1.drop.net." +echo "> query q2.drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q1.drop.net. A IN >outfile1 2>&1 & +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT q2.drop.net. A IN >outfile2 2>&1 & +wait +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +cat outfile1 +cat outfile2 +if grep "rcode: SERVFAIL" outfile1; then + echo "content OK" +else + echo "result contents not OK, for q1.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q1.drop.net" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile2; then + echo "content OK" +else + echo "result contents not OK, for q2.drop.net" + echo "> cat logfiles" + cat outfile1 + cat outfile2 + cat unbound2.log + cat unbound.log + echo "result contents not OK, for q2.drop.net" + exit 1 +fi + +echo "OK" +exit 0 diff --git a/testdata/ssl_reuse.tdir/unbound_control.key b/testdata/ssl_reuse.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/ssl_reuse.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= +-----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_reuse.tdir/unbound_control.pem b/testdata/ssl_reuse.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/ssl_reuse.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/ssl_reuse.tdir/unbound_server.key b/testdata/ssl_reuse.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/ssl_reuse.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== +-----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_reuse.tdir/unbound_server.pem b/testdata/ssl_reuse.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/ssl_reuse.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- From d973b756a0fcedcfafbd1354b43c3ece8c4d9e73 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 30 Jul 2020 17:52:57 +0200 Subject: [PATCH 151/394] stream reuse, disable debug in test --- testdata/ssl_reuse.tdir/ssl_reuse.pre | 2 +- testdata/tcp_reuse.tdir/tcp_reuse.pre | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.pre b/testdata/ssl_reuse.tdir/ssl_reuse.pre index cc2248608..048ca6813 100644 --- a/testdata/ssl_reuse.tdir/ssl_reuse.pre +++ b/testdata/ssl_reuse.tdir/ssl_reuse.pre @@ -25,7 +25,7 @@ wait_unbound_up unbound.log sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < ssl_reuse.conf2 > ub2.conf # start upstream unbound in the background #$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & -valgrind $PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & UPSTREAM_PID=$! echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test wait_unbound_up unbound2.log diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.pre b/testdata/tcp_reuse.tdir/tcp_reuse.pre index ada38271a..30dbdc96f 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.pre +++ b/testdata/tcp_reuse.tdir/tcp_reuse.pre @@ -25,7 +25,7 @@ wait_unbound_up unbound.log sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf2 > ub2.conf # start upstream unbound in the background #$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & -valgrind $PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & UPSTREAM_PID=$! echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test wait_unbound_up unbound2.log From e855d5779a6e0bd07681bb2db5a189b14039ae90 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 31 Jul 2020 09:10:40 +0200 Subject: [PATCH 152/394] - Fix doxygen comment for no ssl for tls session ticket key callback routine. --- doc/Changelog | 4 ++++ util/net_help.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 3ee202c62..8f768952b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +31 July 2020: Wouter + - Fix doxygen comment for no ssl for tls session ticket key callback + routine. + 27 July 2020: George - Merge PR #268, draft-ietf-dnsop-serve-stale-10 has become RFC 8767 on March 2020, by and0x000. diff --git a/util/net_help.c b/util/net_help.c index f59a4d653..7d81d47be 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -82,6 +82,7 @@ static struct tls_session_ticket_key { unsigned char *hmac_key; } *ticket_keys; +#ifdef HAVE_SSL /** * callback TLS session ticket encrypt and decrypt * For use with SSL_CTX_set_tlsext_ticket_key_cb or @@ -97,7 +98,6 @@ static struct tls_session_ticket_key { * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket * (the ticket is decrypt only). and <0 for failures. */ -#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB From d684bee4b0a84cd0ec9070a7dcbfa0d21c9f87a4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 31 Jul 2020 09:32:19 +0200 Subject: [PATCH 153/394] stream reuse, move drop in tcp_reuse test to timeout section of test. --- testdata/tcp_reuse.tdir/tcp_reuse.test | 48 +++++++++++++------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index 5f0844890..e98afe0e6 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -61,30 +61,6 @@ else exit 1 fi -echo "> query drop.net." -$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT drop.net. A IN >outfile 2>&1 -cat outfile -if test "$?" -ne 0; then - echo "exit status not OK" - echo "> cat logfiles" - cat outfile - cat unbound2.log - cat unbound.log - echo "Not OK" - exit 1 -fi -if grep "rcode: SERVFAIL" outfile; then - echo "content OK" -else - echo "result contents not OK, for drop.net" - echo "> cat logfiles" - cat outfile - cat unbound2.log - cat unbound.log - echo "result contents not OK, for drop.net" - exit 1 -fi - echo "> query refuse.net." $PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT refuse.net. A IN >outfile 2>&1 cat outfile @@ -260,6 +236,30 @@ cat outfile # on how fast the other server responds or the drop happens, but there are # a bunch of connection drops, whilst resolving the other queries. +echo "> query drop.net." +$PRE/streamtcp -f 127.0.0.1@$UNBOUND_PORT drop.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "rcode: SERVFAIL" outfile; then + echo "content OK" +else + echo "result contents not OK, for drop.net" + echo "> cat logfiles" + cat outfile + cat unbound2.log + cat unbound.log + echo "result contents not OK, for drop.net" + exit 1 +fi + # timeouts at the end. (so that the server is not marked as failed for # the other tests). From 61100b646305a5a87ea83311f786ad444bec0e9e Mon Sep 17 00:00:00 2001 From: Vitezslav Cizek Date: Fri, 31 Jul 2020 14:44:05 +0200 Subject: [PATCH 154/394] net_help: Rename EVP_MAC_set_ctx_params to EVP_MAC_CTX_set_params This fixes build with OpenSSL 3.0.0 Alpha 5. EVP_MAC_set_ctx_params got renamed back to EVP_MAC_CTX_set_params in https://github.com/openssl/openssl/pull/12186 --- util/net_help.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/net_help.c b/util/net_help.c index 7d81d47be..ce1bc0c15 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1478,7 +1478,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); - EVP_MAC_set_ctx_params(hmac_ctx, params); + EVP_MAC_CTX_set_params(hmac_ctx, params); #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); @@ -1509,7 +1509,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); - EVP_MAC_set_ctx_params(hmac_ctx, params); + EVP_MAC_CTX_set_params(hmac_ctx, params); #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); From 9bc30967d29dd13441eca2a003048ee7975181f7 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Mon, 3 Aug 2020 14:37:00 -0400 Subject: [PATCH 155/394] Make tvOS & watchOS checks verify truthiness as well as definedness. --- daemon/unbound.c | 2 +- libunbound/libworker.c | 2 +- smallapp/unbound-control.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index 3f96603c4..cd0fd69f2 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -92,7 +92,7 @@ #include #endif -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) #undef HAVE_FORK #endif diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 44b8d7905..bd42462e1 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -78,7 +78,7 @@ #include #endif -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) #undef HAVE_FORK #endif diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index c2b42e951..4662c7cb6 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -886,7 +886,7 @@ int main(int argc, char* argv[]) if(argc == 0) usage(); if(argc >= 1 && strcmp(argv[0], "start")==0) { -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) fatal_exit("could not exec unbound: %s", strerror(ENOSYS)); #else From fc55345dcbbb653083489b17a91d81338bc487ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 08:14:25 +0200 Subject: [PATCH 156/394] - Fix mini_event.h on OpenBSD cannot find fd_set. --- config.h.in | 3 +++ configure | 2 +- configure.ac | 2 +- doc/Changelog | 3 +++ util/mini_event.h | 4 ++++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index f7a4095ed..6b106d8de 100644 --- a/config.h.in +++ b/config.h.in @@ -573,6 +573,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SHA2_H diff --git a/configure b/configure index a976189e5..2510b2bfc 100755 --- a/configure +++ b/configure @@ -14726,7 +14726,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default diff --git a/configure.ac b/configure.ac index 22319b5a9..59a075086 100644 --- a/configure.ac +++ b/configure.ac @@ -399,7 +399,7 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) diff --git a/doc/Changelog b/doc/Changelog index 8f768952b..9638d242f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 August 2020: Wouter + - Fix mini_event.h on OpenBSD cannot find fd_set. + 31 July 2020: Wouter - Fix doxygen comment for no ssl for tls session ticket key callback routine. diff --git a/util/mini_event.h b/util/mini_event.h index 1734ca574..fa71ca3d1 100644 --- a/util/mini_event.h +++ b/util/mini_event.h @@ -54,6 +54,10 @@ #if defined(USE_MINI_EVENT) && !defined(USE_WINSOCK) +#ifdef HAVE_SYS_SELECT_H +/* for fd_set on OpenBSD */ +#include +#endif #include #ifndef HAVE_EVENT_BASE_FREE From c0c722cd9755541dd087dfef133a9b7c35281f71 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 09:05:09 +0200 Subject: [PATCH 157/394] DLV removal --- doc/example.conf.in | 5 - doc/unbound.conf.5.in | 15 - pythonmod/doc/modules/config.rst | 8 - services/cache/dns.c | 5 +- smallapp/unbound-checkconf.c | 2 - util/config_file.c | 8 - util/config_file.h | 4 - util/configparser.c | 1922 ++++++++++++++---------------- util/configparser.h | 2 +- util/configparser.y | 6 +- validator/val_anchor.c | 33 - validator/val_anchor.h | 2 - validator/val_neg.c | 102 -- validator/val_neg.h | 20 - validator/val_nsec.c | 83 -- validator/val_nsec.h | 13 - validator/validator.h | 23 - 17 files changed, 920 insertions(+), 1333 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 3af4420c6..03d22d381 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -509,11 +509,6 @@ server: # Root key trust anchor sentinel (draft-ietf-dnsop-kskroll-sentinel) # root-key-sentinel: yes - # File with DLV trusted keys. Same format as trust-anchor-file. - # There can be only one DLV configured, it is trusted from root down. - # DLV is going to be decommissioned. Please do not use it any more. - # dlv-anchor-file: "dlv.isc.org.key" - # File with trusted keys for validation. Specify more than one file # with several entries, one file per entry. # Zone file format, with DS and DNSKEY entries. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 4920a0b2d..23895d808 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1010,21 +1010,6 @@ Send RFC8145 key tag query after trust anchor priming. Default is yes. .B root\-key\-sentinel: \fI Root key trust anchor sentinel. Default is yes. .TP -.B dlv\-anchor\-file: \fI -This option was used during early days DNSSEC deployment when no parent-side -DS record registrations were easily available. Nowadays, it is best to have -DS records registered with the parent zone (many top level zones are signed). -File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and -DNSKEY entries can be used in the file, in the same format as for -\fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more -would be slow. The DLV configured is used as a root trusted DLV, this -means that it is a lookaside for the root. Default is "", or no dlv anchor -file. DLV is going to be decommissioned. Please do not use it any more. -.TP -.B dlv\-anchor: \fI<"Resource Record"> -Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline. -DLV is going to be decommissioned. Please do not use it any more. -.TP .B domain\-insecure: \fI Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the diff --git a/pythonmod/doc/modules/config.rst b/pythonmod/doc/modules/config.rst index 43333bdae..89afbef8a 100644 --- a/pythonmod/doc/modules/config.rst +++ b/pythonmod/doc/modules/config.rst @@ -256,14 +256,6 @@ config_file Files with trusted DNSKEYs in named.conf format, list. - .. attribute:: dlv_anchor_file - - DLV anchor file. - - .. attribute:: dlv_anchor_list - - DLV anchor inline. - .. attribute:: max_ttl The number of seconds maximal TTL used for RRsets and messages. diff --git a/services/cache/dns.c b/services/cache/dns.c index 7b6e142c9..f3149b614 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -890,9 +890,8 @@ dns_cache_lookup(struct module_env* env, lock_rw_unlock(&rrset->entry.lock); } - /* construct DS, DNSKEY, DLV messages from rrset cache. */ - if((qtype == LDNS_RR_TYPE_DS || qtype == LDNS_RR_TYPE_DNSKEY || - qtype == LDNS_RR_TYPE_DLV) && + /* construct DS, DNSKEY messages from rrset cache. */ + if((qtype == LDNS_RR_TYPE_DS || qtype == LDNS_RR_TYPE_DNSKEY) && (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen, qtype, qclass, 0, now, 0))) { /* if the rrset is from the additional section, and the diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 0cf348add..b1b7ae7ef 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -624,8 +624,6 @@ morechecks(struct config_file* cfg) cfg->auto_trust_anchor_file_list, cfg->chrootdir, cfg); check_chroot_filelist_wild("trusted-keys-file", cfg->trusted_keys_file_list, cfg->chrootdir, cfg); - check_chroot_string("dlv-anchor-file", &cfg->dlv_anchor_file, - cfg->chrootdir, cfg); #ifdef USE_IPSECMOD if(cfg->ipsecmod_enabled && strstr(cfg->module_conf, "ipsecmod")) { /* only check hook if enabled */ diff --git a/util/config_file.c b/util/config_file.c index 0e9ee471b..0460c28b0 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -233,8 +233,6 @@ config_create(void) cfg->trusted_keys_file_list = NULL; cfg->trust_anchor_signaling = 1; cfg->root_key_sentinel = 1; - cfg->dlv_anchor_file = NULL; - cfg->dlv_anchor_list = NULL; cfg->domain_insecure = NULL; cfg->val_date_override = 0; cfg->val_sig_skew_min = 3600; /* at least daylight savings trouble */ @@ -581,8 +579,6 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STRLIST("trusted-keys-file:", trusted_keys_file_list) else S_YNO("trust-anchor-signaling:", trust_anchor_signaling) else S_YNO("root-key-sentinel:", root_key_sentinel) - else S_STR("dlv-anchor-file:", dlv_anchor_file) - else S_STRLIST("dlv-anchor:", dlv_anchor_list) else S_STRLIST("domain-insecure:", domain_insecure) else S_NUMBER_OR_ZERO("val-bogus-ttl:", bogus_ttl) else S_YNO("val-clean-additional:", val_clean_additional) @@ -998,7 +994,6 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "unwanted-reply-threshold", unwanted_threshold) else O_YNO(opt, "do-not-query-localhost", donotquery_localhost) else O_STR(opt, "module-config", module_conf) - else O_STR(opt, "dlv-anchor-file", dlv_anchor_file) else O_DEC(opt, "val-bogus-ttl", bogus_ttl) else O_YNO(opt, "val-clean-additional", val_clean_additional) else O_DEC(opt, "val-log-level", val_log_level) @@ -1036,7 +1031,6 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LST(opt, "trusted-keys-file", trusted_keys_file_list) else O_YNO(opt, "trust-anchor-signaling", trust_anchor_signaling) else O_YNO(opt, "root-key-sentinel", root_key_sentinel) - else O_LST(opt, "dlv-anchor", dlv_anchor_list) else O_LST(opt, "control-interface", control_ifs.first) else O_LST(opt, "domain-insecure", domain_insecure) else O_UNS(opt, "val-override-date", val_date_override) @@ -1462,8 +1456,6 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->trusted_keys_file_list); config_delstrlist(cfg->trust_anchor_list); config_delstrlist(cfg->domain_insecure); - free(cfg->dlv_anchor_file); - config_delstrlist(cfg->dlv_anchor_list); config_deldblstrlist(cfg->acls); config_deldblstrlist(cfg->tcp_connection_limits); free(cfg->val_nsec3_key_iterations); diff --git a/util/config_file.h b/util/config_file.h index 66e5025d0..db80abc7e 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -331,10 +331,6 @@ struct config_file { struct config_strlist* auto_trust_anchor_file_list; /** files with trusted DNSKEYs in named.conf format, list */ struct config_strlist* trusted_keys_file_list; - /** DLV anchor file */ - char* dlv_anchor_file; - /** DLV anchor inline */ - struct config_strlist* dlv_anchor_list; /** insecure domain list */ struct config_strlist* domain_insecure; /** send key tag query */ diff --git a/util/configparser.c b/util/configparser.c index 2c9af619a..5f8c70bd0 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,15 +97,6 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -733,7 +724,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.c" +#line 728 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -754,83 +745,36 @@ int yyparse (void); # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -838,19 +782,7 @@ typedef int yytype_uint16; # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -864,20 +796,22 @@ typedef int yy_state_fast_t; # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ @@ -889,11 +823,11 @@ typedef int yy_state_fast_t; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -906,18 +840,6 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - #define YY_ASSERT(E) ((void) (0 && (E))) @@ -996,17 +918,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -1019,11 +941,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -1035,12 +957,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -1066,15 +988,14 @@ union yyalloc #define YYUNDEFTOK 2 #define YYMAXUTOK 546 - /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_int16 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1135,7 +1056,7 @@ static const yytype_int16 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint16 yyrline[] = { 0, 181, 181, 181, 182, 182, 183, 183, 184, 184, 184, 185, 185, 186, 186, 187, 187, 188, 190, 196, @@ -1171,34 +1092,34 @@ static const yytype_int16 yyrline[] = 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, - 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, - 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, - 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, - 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, - 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, - 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, - 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, - 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, - 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, - 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, - 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, - 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, - 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, - 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, - 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, - 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, - 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, - 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, - 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, - 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, - 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, - 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, - 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, - 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, - 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, - 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, - 3238 + 1126, 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, + 1210, 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, + 1301, 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, + 1401, 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, + 1497, 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, + 1587, 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, + 1702, 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, + 1796, 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, + 1892, 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, + 2020, 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, + 2143, 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, + 2264, 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, + 2364, 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, + 2466, 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, + 2549, 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, + 2677, 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, + 2695, 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, + 2758, 2763, 2764, 2765, 2765, 2765, 2766, 2766, 2766, 2767, + 2768, 2768, 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, + 2775, 2776, 2778, 2787, 2797, 2804, 2811, 2820, 2827, 2834, + 2841, 2848, 2857, 2866, 2873, 2880, 2890, 2900, 2910, 2920, + 2930, 2940, 2945, 2946, 2947, 2949, 2955, 2960, 2961, 2962, + 2964, 2970, 2980, 2987, 2996, 3004, 3009, 3010, 3012, 3012, + 3012, 3013, 3013, 3014, 3015, 3016, 3017, 3018, 3020, 3030, + 3039, 3046, 3055, 3062, 3071, 3079, 3092, 3100, 3113, 3118, + 3119, 3120, 3120, 3121, 3121, 3121, 3122, 3124, 3136, 3148, + 3160, 3175, 3188, 3201, 3212, 3217, 3218, 3219, 3219, 3221, + 3236 }; #endif @@ -1446,7 +1367,7 @@ static const char *const yytname[] = # 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[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1481,14 +1402,14 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-285) +#define YYPACT_NINF -285 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-285))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1591,7 +1512,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int16 yydefact[] = +static const yytype_uint16 yydefact[] = { 2, 0, 1, 18, 19, 216, 226, 491, 551, 510, 235, 565, 588, 245, 604, 261, 556, 3, 17, 21, @@ -1763,7 +1684,7 @@ static const yytype_int16 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_uint16 yytable[] = { 2, 477, 462, 434, 566, 435, 436, 569, 449, 606, 607, 3, 4, 611, 612, 613, 450, 451, 593, 594, @@ -1899,7 +1820,7 @@ static const yytype_int16 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +static const yytype_uint16 yystos[] = { 0, 293, 0, 11, 12, 46, 52, 96, 112, 153, 212, 230, 247, 256, 280, 284, 290, 294, 295, 296, @@ -1995,7 +1916,7 @@ static const yytype_int16 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = +static const yytype_uint16 yyr1[] = { 0, 292, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 296, @@ -2062,7 +1983,7 @@ static const yytype_int16 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2211,9 +2132,7 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2237,7 +2156,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2260,12 +2179,12 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) @@ -2317,13 +2236,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# define yystrlen strlen # else /* Return the length of YYSTR. */ -static YYPTRDIFF_T +static YYSIZE_T yystrlen (const char *yystr) { - YYPTRDIFF_T yylen; + YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2359,12 +2278,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYPTRDIFF_T +static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYPTRDIFF_T yyn = 0; + YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2395,10 +2314,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else + if (! yyres) return yystrlen (yystr); + + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2411,19 +2330,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ + /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2451,8 +2370,6 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2477,8 +2394,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2505,9 +2421,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2537,8 +2451,8 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } else { - ++yyp; - ++yyformat; + yyp++; + yyformat++; } } return 0; @@ -2581,7 +2495,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2593,16 +2507,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYPTRDIFF_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -2616,7 +2530,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2648,14 +2562,12 @@ yynewstate: /*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | +| yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2663,23 +2575,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2693,10 +2605,9 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2710,10 +2621,8 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2779,13 +2688,14 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -2822,23 +2732,23 @@ yyreduce: { case 18: #line 191 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2829 "util/configparser.c" +#line 2739 "util/configparser.c" break; case 19: #line 197 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2837 "util/configparser.c" +#line 2747 "util/configparser.c" break; case 216: #line 291 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2848,12 +2758,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2762 "util/configparser.c" break; case 226: #line 308 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2863,12 +2773,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2867 "util/configparser.c" +#line 2777 "util/configparser.c" break; case 235: #line 325 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2880,12 +2790,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2794 "util/configparser.c" break; case 245: #line 344 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2900,12 +2810,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2904 "util/configparser.c" +#line 2814 "util/configparser.c" break; case 256: #line 368 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2921,12 +2831,12 @@ yyreduce: } } -#line 2925 "util/configparser.c" +#line 2835 "util/configparser.c" break; case 257: #line 387 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2940,44 +2850,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2944 "util/configparser.c" +#line 2854 "util/configparser.c" break; case 258: #line 404 "./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 2954 "util/configparser.c" +#line 2864 "util/configparser.c" break; case 259: #line 412 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2966 "util/configparser.c" +#line 2876 "util/configparser.c" break; case 260: #line 422 "./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 2976 "util/configparser.c" +#line 2886 "util/configparser.c" break; case 261: #line 430 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2992,36 +2902,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2996 "util/configparser.c" +#line 2906 "util/configparser.c" break; case 274: #line 453 "./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) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 2918 "util/configparser.c" break; case 275: #line 462 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 2930 "util/configparser.c" break; case 276: #line 471 "./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) cfg_parser->cfg->stat_interval = 0; @@ -3030,48 +2940,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 2944 "util/configparser.c" break; case 277: #line 482 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 2956 "util/configparser.c" break; case 278: #line 491 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 2968 "util/configparser.c" break; case 279: #line 500 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 2980 "util/configparser.c" break; case 280: #line 509 "./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) cfg_parser->cfg->shm_key = 0; @@ -3080,24 +2990,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 2994 "util/configparser.c" break; case 281: #line 520 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3006 "util/configparser.c" break; case 282: #line 529 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3107,12 +3017,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3111 "util/configparser.c" +#line 3021 "util/configparser.c" break; case 283: #line 541 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3123,12 +3033,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3127 "util/configparser.c" +#line 3037 "util/configparser.c" break; case 284: #line 555 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3141,12 +3051,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3055 "util/configparser.c" break; case 285: #line 570 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3155,12 +3065,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3159 "util/configparser.c" +#line 3069 "util/configparser.c" break; case 286: #line 581 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3175,12 +3085,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3179 "util/configparser.c" +#line 3089 "util/configparser.c" break; case 287: #line 598 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3195,12 +3105,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3199 "util/configparser.c" +#line 3109 "util/configparser.c" break; case 288: #line 615 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3215,12 +3125,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3219 "util/configparser.c" +#line 3129 "util/configparser.c" break; case 289: #line 632 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3235,12 +3145,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" +#line 3149 "util/configparser.c" break; case 290: #line 649 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,12 +3163,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3167 "util/configparser.c" break; case 291: #line 664 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3271,12 +3181,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" +#line 3185 "util/configparser.c" break; case 292: #line 679 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3287,12 +3197,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3291 "util/configparser.c" +#line 3201 "util/configparser.c" break; case 293: #line 692 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3305,180 +3215,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3309 "util/configparser.c" +#line 3219 "util/configparser.c" break; case 294: #line 707 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3321 "util/configparser.c" +#line 3231 "util/configparser.c" break; case 295: #line 716 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3333 "util/configparser.c" +#line 3243 "util/configparser.c" break; case 296: #line 725 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3345 "util/configparser.c" +#line 3255 "util/configparser.c" break; case 297: #line 734 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3357 "util/configparser.c" +#line 3267 "util/configparser.c" break; case 298: #line 743 "./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) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3369 "util/configparser.c" +#line 3279 "util/configparser.c" break; case 299: #line 752 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3291 "util/configparser.c" break; case 300: #line 761 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3303 "util/configparser.c" break; case 301: #line 770 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3405 "util/configparser.c" +#line 3315 "util/configparser.c" break; case 302: #line 779 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3417 "util/configparser.c" +#line 3327 "util/configparser.c" break; case 303: #line 788 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3429 "util/configparser.c" +#line 3339 "util/configparser.c" break; case 304: #line 797 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3351 "util/configparser.c" break; case 305: #line 806 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3363 "util/configparser.c" break; case 306: #line 815 "./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) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3465 "util/configparser.c" +#line 3375 "util/configparser.c" break; case 307: #line 824 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3387 "util/configparser.c" break; case 308: #line 833 "./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) yyerror("number expected"); @@ -3489,24 +3399,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3403 "util/configparser.c" break; case 309: #line 846 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3415 "util/configparser.c" break; case 310: #line 855 "./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) yyerror("number expected"); @@ -3517,180 +3427,180 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3521 "util/configparser.c" +#line 3431 "util/configparser.c" break; case 311: #line 868 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3533 "util/configparser.c" +#line 3443 "util/configparser.c" break; case 312: #line 877 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3545 "util/configparser.c" +#line 3455 "util/configparser.c" break; case 313: #line 886 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" +#line 3467 "util/configparser.c" break; case 314: #line 895 "./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 3567 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 315: #line 902 "./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 3577 "util/configparser.c" +#line 3487 "util/configparser.c" break; case 316: #line 909 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3589 "util/configparser.c" +#line 3499 "util/configparser.c" break; case 317: #line 918 "./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 3599 "util/configparser.c" +#line 3509 "util/configparser.c" break; case 318: #line 925 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3521 "util/configparser.c" break; case 319: #line 934 "./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 3622 "util/configparser.c" +#line 3532 "util/configparser.c" break; case 320: #line 942 "./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 3632 "util/configparser.c" +#line 3542 "util/configparser.c" break; case 321: #line 949 "./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 3642 "util/configparser.c" +#line 3552 "util/configparser.c" break; case 322: #line 956 "./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 3653 "util/configparser.c" +#line 3563 "util/configparser.c" break; case 323: #line 964 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3665 "util/configparser.c" +#line 3575 "util/configparser.c" break; case 324: #line 973 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3677 "util/configparser.c" +#line 3587 "util/configparser.c" break; case 325: #line 982 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" +#line 3599 "util/configparser.c" break; case 326: #line 991 "./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) yyerror("expected yes or no."); @@ -3702,104 +3612,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 327: #line 1005 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3718 "util/configparser.c" +#line 3628 "util/configparser.c" break; case 328: #line 1014 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3640 "util/configparser.c" break; case 329: #line 1023 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3742 "util/configparser.c" +#line 3652 "util/configparser.c" break; case 330: #line 1032 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3754 "util/configparser.c" +#line 3664 "util/configparser.c" break; case 331: #line 1041 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3766 "util/configparser.c" +#line 3676 "util/configparser.c" break; case 332: #line 1050 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3778 "util/configparser.c" +#line 3688 "util/configparser.c" break; case 333: #line 1059 "./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 3788 "util/configparser.c" +#line 3698 "util/configparser.c" break; case 334: #line 1066 "./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 3798 "util/configparser.c" +#line 3708 "util/configparser.c" break; case 335: #line 1073 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3823,106 +3733,104 @@ yyreduce: } } } -#line 3827 "util/configparser.c" +#line 3737 "util/configparser.c" break; case 336: #line 1099 "./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 3838 "util/configparser.c" +#line 3748 "util/configparser.c" break; case 337: #line 1107 "./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 3848 "util/configparser.c" +#line 3758 "util/configparser.c" break; case 338: #line 1114 "./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 3858 "util/configparser.c" +#line 3768 "util/configparser.c" break; case 339: #line 1121 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); + log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); } -#line 3868 "util/configparser.c" +#line 3777 "util/configparser.c" break; case 340: -#line 1128 "./util/configparser.y" - { +#line 1127 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); + log_warn("option dlv-anchor ignored: DLV is decommissioned"); } -#line 3878 "util/configparser.c" +#line 3786 "util/configparser.c" break; case 341: -#line 1135 "./util/configparser.y" - { +#line 1133 "./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 3889 "util/configparser.c" +#line 3797 "util/configparser.c" break; case 342: -#line 1143 "./util/configparser.y" - { +#line 1141 "./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 3900 "util/configparser.c" +#line 3808 "util/configparser.c" break; case 343: -#line 1151 "./util/configparser.y" - { +#line 1149 "./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 3911 "util/configparser.c" +#line 3819 "util/configparser.c" break; case 344: -#line 1159 "./util/configparser.y" - { +#line 1157 "./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 3921 "util/configparser.c" +#line 3829 "util/configparser.c" break; case 345: -#line 1166 "./util/configparser.y" - { +#line 1164 "./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) yyerror("expected yes or no."); @@ -3931,12 +3839,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3935 "util/configparser.c" +#line 3843 "util/configparser.c" break; case 346: -#line 1177 "./util/configparser.y" - { +#line 1175 "./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) yyerror("expected yes or no."); @@ -3945,99 +3853,99 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3949 "util/configparser.c" +#line 3857 "util/configparser.c" break; case 347: -#line 1188 "./util/configparser.y" - { +#line 1186 "./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 3959 "util/configparser.c" +#line 3867 "util/configparser.c" break; case 348: -#line 1195 "./util/configparser.y" - { +#line 1193 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3879 "util/configparser.c" break; case 349: -#line 1204 "./util/configparser.y" - { +#line 1202 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" +#line 3891 "util/configparser.c" break; case 350: -#line 1213 "./util/configparser.y" - { +#line 1211 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3903 "util/configparser.c" break; case 351: -#line 1222 "./util/configparser.y" - { +#line 1220 "./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 4005 "util/configparser.c" +#line 3913 "util/configparser.c" break; case 352: -#line 1229 "./util/configparser.y" - { +#line 1227 "./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 4015 "util/configparser.c" +#line 3923 "util/configparser.c" break; case 353: -#line 1236 "./util/configparser.y" - { +#line 1234 "./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 4026 "util/configparser.c" +#line 3934 "util/configparser.c" break; case 354: -#line 1244 "./util/configparser.y" - { +#line 1242 "./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 4037 "util/configparser.c" +#line 3945 "util/configparser.c" break; case 355: -#line 1252 "./util/configparser.y" +#line 1250 "./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) @@ -4046,11 +3954,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4050 "util/configparser.c" +#line 3958 "util/configparser.c" break; case 356: -#line 1262 "./util/configparser.y" +#line 1260 "./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) @@ -4059,11 +3967,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" +#line 3971 "util/configparser.c" break; case 357: -#line 1272 "./util/configparser.y" +#line 1270 "./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) @@ -4072,12 +3980,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4076 "util/configparser.c" +#line 3984 "util/configparser.c" break; case 358: -#line 1282 "./util/configparser.y" - { +#line 1280 "./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) yyerror("number expected"); @@ -4089,23 +3997,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4001 "util/configparser.c" break; case 359: -#line 1296 "./util/configparser.y" - { +#line 1294 "./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 4104 "util/configparser.c" +#line 4012 "util/configparser.c" break; case 360: -#line 1304 "./util/configparser.y" - { +#line 1302 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4116,12 +4024,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4120 "util/configparser.c" +#line 4028 "util/configparser.c" break; case 361: -#line 1317 "./util/configparser.y" - { +#line 1315 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4130,23 +4038,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4042 "util/configparser.c" break; case 362: -#line 1328 "./util/configparser.y" - { +#line 1326 "./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 4145 "util/configparser.c" +#line 4053 "util/configparser.c" break; case 363: -#line 1336 "./util/configparser.y" - { +#line 1334 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4157,48 +4065,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4069 "util/configparser.c" break; case 364: -#line 1349 "./util/configparser.y" - { +#line 1347 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4081 "util/configparser.c" break; case 365: -#line 1358 "./util/configparser.y" - { +#line 1356 "./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) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4185 "util/configparser.c" +#line 4093 "util/configparser.c" break; case 366: -#line 1367 "./util/configparser.y" - { +#line 1365 "./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) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4197 "util/configparser.c" +#line 4105 "util/configparser.c" break; case 367: -#line 1376 "./util/configparser.y" - { +#line 1374 "./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) yyerror("expected yes or no."); @@ -4206,12 +4114,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4118 "util/configparser.c" break; case 368: -#line 1386 "./util/configparser.y" - { +#line 1384 "./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) yyerror("expected yes or no."); @@ -4219,23 +4127,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4131 "util/configparser.c" break; case 369: -#line 1396 "./util/configparser.y" - { +#line 1394 "./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 4234 "util/configparser.c" +#line 4142 "util/configparser.c" break; case 370: -#line 1404 "./util/configparser.y" - { +#line 1402 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4246,58 +4154,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" +#line 4158 "util/configparser.c" break; case 371: -#line 1417 "./util/configparser.y" - { +#line 1415 "./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) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4170 "util/configparser.c" break; case 372: -#line 1426 "./util/configparser.y" - { +#line 1424 "./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 4273 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 373: -#line 1434 "./util/configparser.y" - { +#line 1432 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4285 "util/configparser.c" +#line 4193 "util/configparser.c" break; case 374: -#line 1443 "./util/configparser.y" - { +#line 1441 "./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 4296 "util/configparser.c" +#line 4204 "util/configparser.c" break; case 375: -#line 1451 "./util/configparser.y" - { +#line 1449 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4308,34 +4216,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 4220 "util/configparser.c" break; case 376: -#line 1464 "./util/configparser.y" - { +#line 1462 "./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) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4232 "util/configparser.c" break; case 377: -#line 1473 "./util/configparser.y" - { +#line 1471 "./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 4334 "util/configparser.c" +#line 4242 "util/configparser.c" break; case 378: -#line 1480 "./util/configparser.y" - { +#line 1478 "./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) yyerror("expected yes or no."); @@ -4343,12 +4251,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4347 "util/configparser.c" +#line 4255 "util/configparser.c" break; case 379: -#line 1490 "./util/configparser.y" - { +#line 1488 "./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) yyerror("expected yes or no."); @@ -4356,12 +4264,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 4268 "util/configparser.c" break; case 380: -#line 1500 "./util/configparser.y" - { +#line 1498 "./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) yyerror("expected yes or no."); @@ -4369,12 +4277,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4281 "util/configparser.c" break; case 381: -#line 1510 "./util/configparser.y" - { +#line 1508 "./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) yyerror("expected yes or no."); @@ -4382,12 +4290,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" +#line 4294 "util/configparser.c" break; case 382: -#line 1520 "./util/configparser.y" - { +#line 1518 "./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) yyerror("expected yes or no."); @@ -4395,12 +4303,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4307 "util/configparser.c" break; case 383: -#line 1530 "./util/configparser.y" - { +#line 1528 "./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) yyerror("expected yes or no."); @@ -4408,12 +4316,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4320 "util/configparser.c" break; case 384: -#line 1540 "./util/configparser.y" - { +#line 1538 "./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) yyerror("expected yes or no."); @@ -4421,12 +4329,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4425 "util/configparser.c" +#line 4333 "util/configparser.c" break; case 385: -#line 1550 "./util/configparser.y" - { +#line 1548 "./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) yyerror("expected yes or no."); @@ -4434,100 +4342,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4438 "util/configparser.c" +#line 4346 "util/configparser.c" break; case 386: -#line 1560 "./util/configparser.y" - { +#line 1558 "./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 4448 "util/configparser.c" +#line 4356 "util/configparser.c" break; case 387: -#line 1567 "./util/configparser.y" - { +#line 1565 "./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 4458 "util/configparser.c" +#line 4366 "util/configparser.c" break; case 388: -#line 1574 "./util/configparser.y" - { +#line 1572 "./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 4468 "util/configparser.c" +#line 4376 "util/configparser.c" break; case 389: -#line 1581 "./util/configparser.y" - { +#line 1579 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4480 "util/configparser.c" +#line 4388 "util/configparser.c" break; case 390: -#line 1590 "./util/configparser.y" - { +#line 1588 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 4400 "util/configparser.c" break; case 391: -#line 1599 "./util/configparser.y" - { +#line 1597 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4412 "util/configparser.c" break; case 392: -#line 1608 "./util/configparser.y" - { +#line 1606 "./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) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4424 "util/configparser.c" break; case 393: -#line 1617 "./util/configparser.y" - { +#line 1615 "./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 4526 "util/configparser.c" +#line 4434 "util/configparser.c" break; case 394: -#line 1624 "./util/configparser.y" - { +#line 1622 "./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) yyerror("expected yes or no."); @@ -4535,12 +4443,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" +#line 4447 "util/configparser.c" break; case 395: -#line 1634 "./util/configparser.y" - { +#line 1632 "./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 && @@ -4558,22 +4466,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4562 "util/configparser.c" +#line 4470 "util/configparser.c" break; case 396: -#line 1654 "./util/configparser.y" - { +#line 1652 "./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 4572 "util/configparser.c" +#line 4480 "util/configparser.c" break; case 397: -#line 1661 "./util/configparser.y" - { +#line 1659 "./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) { cfg_parser->cfg->val_date_override = 0; @@ -4589,12 +4497,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4501 "util/configparser.c" break; case 398: -#line 1679 "./util/configparser.y" - { +#line 1677 "./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) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4605,12 +4513,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4517 "util/configparser.c" break; case 399: -#line 1692 "./util/configparser.y" - { +#line 1690 "./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) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4621,60 +4529,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4533 "util/configparser.c" break; case 400: -#line 1705 "./util/configparser.y" - { +#line 1703 "./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) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4545 "util/configparser.c" break; case 401: -#line 1714 "./util/configparser.y" - { +#line 1712 "./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) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4557 "util/configparser.c" break; case 402: -#line 1723 "./util/configparser.y" - { +#line 1721 "./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) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4569 "util/configparser.c" break; case 403: -#line 1732 "./util/configparser.y" - { +#line 1730 "./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) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4581 "util/configparser.c" break; case 404: -#line 1741 "./util/configparser.y" - { +#line 1739 "./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) yyerror("expected yes or no."); @@ -4682,12 +4590,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4686 "util/configparser.c" +#line 4594 "util/configparser.c" break; case 405: -#line 1751 "./util/configparser.y" - { +#line 1749 "./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) yyerror("expected yes or no."); @@ -4695,12 +4603,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4607 "util/configparser.c" break; case 406: -#line 1761 "./util/configparser.y" - { +#line 1759 "./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) yyerror("expected yes or no."); @@ -4709,84 +4617,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4713 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 407: -#line 1772 "./util/configparser.y" - { +#line 1770 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 408: -#line 1781 "./util/configparser.y" - { +#line 1779 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4645 "util/configparser.c" break; case 409: -#line 1790 "./util/configparser.y" - { +#line 1788 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 410: -#line 1799 "./util/configparser.y" - { +#line 1797 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4669 "util/configparser.c" break; case 411: -#line 1808 "./util/configparser.y" - { +#line 1806 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4681 "util/configparser.c" break; case 412: -#line 1817 "./util/configparser.y" - { +#line 1815 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4693 "util/configparser.c" break; case 413: -#line 1826 "./util/configparser.y" - { +#line 1824 "./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) yyerror("expected yes or no."); @@ -4797,12 +4705,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4709 "util/configparser.c" break; case 414: -#line 1839 "./util/configparser.y" - { +#line 1837 "./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) yyerror("expected yes or no."); @@ -4813,70 +4721,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4817 "util/configparser.c" +#line 4725 "util/configparser.c" break; case 415: -#line 1852 "./util/configparser.y" - { +#line 1850 "./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) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4737 "util/configparser.c" break; case 416: -#line 1861 "./util/configparser.y" - { +#line 1859 "./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 4839 "util/configparser.c" +#line 4747 "util/configparser.c" break; case 417: -#line 1868 "./util/configparser.y" - { +#line 1866 "./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) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4759 "util/configparser.c" break; case 418: -#line 1877 "./util/configparser.y" - { +#line 1875 "./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) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4771 "util/configparser.c" break; case 419: -#line 1886 "./util/configparser.y" - { +#line 1884 "./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) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4783 "util/configparser.c" break; case 420: -#line 1895 "./util/configparser.y" - { +#line 1893 "./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) yyerror("expected yes or no."); @@ -4884,23 +4792,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" +#line 4796 "util/configparser.c" break; case 421: -#line 1904 "./util/configparser.y" - { +#line 1902 "./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 4899 "util/configparser.c" +#line 4807 "util/configparser.c" break; case 422: -#line 1912 "./util/configparser.y" - { +#line 1910 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4911,23 +4819,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4823 "util/configparser.c" break; case 423: -#line 1925 "./util/configparser.y" - { +#line 1923 "./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 4926 "util/configparser.c" +#line 4834 "util/configparser.c" break; case 424: -#line 1933 "./util/configparser.y" - { +#line 1931 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -4966,22 +4874,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4970 "util/configparser.c" +#line 4878 "util/configparser.c" break; case 425: -#line 1974 "./util/configparser.y" - { +#line 1972 "./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 4980 "util/configparser.c" +#line 4888 "util/configparser.c" break; case 426: -#line 1981 "./util/configparser.y" - { +#line 1979 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -4994,12 +4902,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4998 "util/configparser.c" +#line 4906 "util/configparser.c" break; case 427: -#line 1996 "./util/configparser.y" - { +#line 1994 "./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) yyerror("expected yes or no."); @@ -5007,12 +4915,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 428: -#line 2006 "./util/configparser.y" - { +#line 2004 "./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) yyerror("expected yes or no."); @@ -5020,65 +4928,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5024 "util/configparser.c" +#line 4932 "util/configparser.c" break; case 429: -#line 2016 "./util/configparser.y" - { +#line 2014 "./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 5034 "util/configparser.c" +#line 4942 "util/configparser.c" break; case 430: -#line 2023 "./util/configparser.y" - { +#line 2021 "./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 5044 "util/configparser.c" +#line 4952 "util/configparser.c" break; case 431: -#line 2030 "./util/configparser.y" - { +#line 2028 "./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 5054 "util/configparser.c" +#line 4962 "util/configparser.c" break; case 432: -#line 2037 "./util/configparser.y" - { +#line 2035 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" +#line 4974 "util/configparser.c" break; case 433: -#line 2046 "./util/configparser.y" - { +#line 2044 "./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 5077 "util/configparser.c" +#line 4985 "util/configparser.c" break; case 434: -#line 2054 "./util/configparser.y" - { +#line 2052 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5090,12 +4998,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5002 "util/configparser.c" break; case 435: -#line 2068 "./util/configparser.y" - { +#line 2066 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5114,12 +5022,12 @@ yyreduce: } } } -#line 5118 "util/configparser.c" +#line 5026 "util/configparser.c" break; case 436: -#line 2089 "./util/configparser.y" - { +#line 2087 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5138,12 +5046,12 @@ yyreduce: } } } -#line 5142 "util/configparser.c" +#line 5050 "util/configparser.c" break; case 437: -#line 2110 "./util/configparser.y" - { +#line 2108 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5153,12 +5061,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5157 "util/configparser.c" +#line 5065 "util/configparser.c" break; case 438: -#line 2122 "./util/configparser.y" - { +#line 2120 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5168,12 +5076,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5172 "util/configparser.c" +#line 5080 "util/configparser.c" break; case 439: -#line 2134 "./util/configparser.y" - { +#line 2132 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5183,24 +5091,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5187 "util/configparser.c" +#line 5095 "util/configparser.c" break; case 440: -#line 2146 "./util/configparser.y" - { +#line 2144 "./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, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5199 "util/configparser.c" +#line 5107 "util/configparser.c" break; case 441: -#line 2155 "./util/configparser.y" - { +#line 2153 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5219,58 +5127,58 @@ yyreduce: } } } -#line 5223 "util/configparser.c" +#line 5131 "util/configparser.c" break; case 442: -#line 2176 "./util/configparser.y" - { +#line 2174 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5235 "util/configparser.c" +#line 5143 "util/configparser.c" break; case 443: -#line 2186 "./util/configparser.y" - { +#line 2184 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5247 "util/configparser.c" +#line 5155 "util/configparser.c" break; case 444: -#line 2195 "./util/configparser.y" - { +#line 2193 "./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 5258 "util/configparser.c" +#line 5166 "util/configparser.c" break; case 445: -#line 2203 "./util/configparser.y" - { +#line 2201 "./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 5269 "util/configparser.c" +#line 5177 "util/configparser.c" break; case 446: -#line 2211 "./util/configparser.y" - { +#line 2209 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5281,12 +5189,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 5193 "util/configparser.c" break; case 447: -#line 2224 "./util/configparser.y" - { +#line 2222 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5297,12 +5205,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5209 "util/configparser.c" break; case 448: -#line 2237 "./util/configparser.y" - { +#line 2235 "./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) { yyerror("number expected"); @@ -5315,12 +5223,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5319 "util/configparser.c" +#line 5227 "util/configparser.c" break; case 449: -#line 2252 "./util/configparser.y" - { +#line 2250 "./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) { yyerror("number expected"); @@ -5333,69 +5241,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5337 "util/configparser.c" +#line 5245 "util/configparser.c" break; case 450: -#line 2267 "./util/configparser.y" - { +#line 2265 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5257 "util/configparser.c" break; case 451: -#line 2276 "./util/configparser.y" - { +#line 2274 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 5269 "util/configparser.c" break; case 452: -#line 2285 "./util/configparser.y" - { +#line 2283 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5278 "util/configparser.c" break; case 453: -#line 2291 "./util/configparser.y" - { +#line 2289 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5382 "util/configparser.c" +#line 5290 "util/configparser.c" break; case 454: -#line 2300 "./util/configparser.y" - { +#line 2298 "./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) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 5302 "util/configparser.c" break; case 455: -#line 2309 "./util/configparser.y" - { +#line 2307 "./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) yyerror("expected yes or no."); @@ -5403,12 +5311,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5407 "util/configparser.c" +#line 5315 "util/configparser.c" break; case 456: -#line 2319 "./util/configparser.y" - { +#line 2317 "./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) yyerror("expected yes or no."); @@ -5416,12 +5324,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5420 "util/configparser.c" +#line 5328 "util/configparser.c" break; case 457: -#line 2329 "./util/configparser.y" - { +#line 2327 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5432,12 +5340,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 5344 "util/configparser.c" break; case 458: -#line 2342 "./util/configparser.y" - { +#line 2340 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5448,12 +5356,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5452 "util/configparser.c" +#line 5360 "util/configparser.c" break; case 459: -#line 2355 "./util/configparser.y" - { +#line 2353 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5463,12 +5371,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5467 "util/configparser.c" +#line 5375 "util/configparser.c" break; case 460: -#line 2367 "./util/configparser.y" - { +#line 2365 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5480,12 +5388,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5484 "util/configparser.c" +#line 5392 "util/configparser.c" break; case 461: -#line 2381 "./util/configparser.y" - { +#line 2379 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5495,12 +5403,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5499 "util/configparser.c" +#line 5407 "util/configparser.c" break; case 462: -#line 2393 "./util/configparser.y" - { +#line 2391 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5512,12 +5420,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5516 "util/configparser.c" +#line 5424 "util/configparser.c" break; case 463: -#line 2407 "./util/configparser.y" - { +#line 2405 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5525,56 +5433,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5529 "util/configparser.c" +#line 5437 "util/configparser.c" break; case 464: -#line 2417 "./util/configparser.y" - { +#line 2415 "./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 5539 "util/configparser.c" +#line 5447 "util/configparser.c" break; case 465: -#line 2424 "./util/configparser.y" - { +#line 2422 "./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 5549 "util/configparser.c" +#line 5457 "util/configparser.c" break; case 466: -#line 2431 "./util/configparser.y" - { +#line 2429 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5561 "util/configparser.c" +#line 5469 "util/configparser.c" break; case 467: -#line 2440 "./util/configparser.y" - { +#line 2438 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 5481 "util/configparser.c" break; case 468: -#line 2449 "./util/configparser.y" - { +#line 2447 "./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) yyerror("expected yes or no."); @@ -5582,12 +5490,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5586 "util/configparser.c" +#line 5494 "util/configparser.c" break; case 469: -#line 2459 "./util/configparser.y" - { +#line 2457 "./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) yyerror("expected yes or no."); @@ -5595,12 +5503,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5599 "util/configparser.c" +#line 5507 "util/configparser.c" break; case 470: -#line 2469 "./util/configparser.y" - { +#line 2467 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5608,56 +5516,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5612 "util/configparser.c" +#line 5520 "util/configparser.c" break; case 471: -#line 2479 "./util/configparser.y" - { +#line 2477 "./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 5622 "util/configparser.c" +#line 5530 "util/configparser.c" break; case 472: -#line 2486 "./util/configparser.y" - { +#line 2484 "./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 5632 "util/configparser.c" +#line 5540 "util/configparser.c" break; case 473: -#line 2493 "./util/configparser.y" - { +#line 2491 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5552 "util/configparser.c" break; case 474: -#line 2502 "./util/configparser.y" - { +#line 2500 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5564 "util/configparser.c" break; case 475: -#line 2511 "./util/configparser.y" - { +#line 2509 "./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) yyerror("expected yes or no."); @@ -5665,12 +5573,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5669 "util/configparser.c" +#line 5577 "util/configparser.c" break; case 476: -#line 2521 "./util/configparser.y" - { +#line 2519 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5678,53 +5586,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5682 "util/configparser.c" +#line 5590 "util/configparser.c" break; case 477: -#line 2531 "./util/configparser.y" - { +#line 2529 "./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 5692 "util/configparser.c" +#line 5600 "util/configparser.c" break; case 478: -#line 2538 "./util/configparser.y" - { +#line 2536 "./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 5702 "util/configparser.c" +#line 5610 "util/configparser.c" break; case 479: -#line 2545 "./util/configparser.y" - { +#line 2543 "./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 5712 "util/configparser.c" +#line 5620 "util/configparser.c" break; case 480: -#line 2552 "./util/configparser.y" - { +#line 2550 "./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 5723 "util/configparser.c" +#line 5631 "util/configparser.c" break; case 481: -#line 2560 "./util/configparser.y" - { +#line 2558 "./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) yyerror("expected yes or no."); @@ -5732,12 +5640,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5644 "util/configparser.c" break; case 482: -#line 2570 "./util/configparser.y" - { +#line 2568 "./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) yyerror("expected yes or no."); @@ -5745,12 +5653,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5749 "util/configparser.c" +#line 5657 "util/configparser.c" break; case 483: -#line 2580 "./util/configparser.y" - { +#line 2578 "./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) yyerror("expected yes or no."); @@ -5758,12 +5666,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" +#line 5670 "util/configparser.c" break; case 484: -#line 2590 "./util/configparser.y" - { +#line 2588 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5771,12 +5679,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5775 "util/configparser.c" +#line 5683 "util/configparser.c" break; case 485: -#line 2600 "./util/configparser.y" - { +#line 2598 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5813,12 +5721,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5817 "util/configparser.c" +#line 5725 "util/configparser.c" break; case 486: -#line 2639 "./util/configparser.y" - { +#line 2637 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5826,34 +5734,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5830 "util/configparser.c" +#line 5738 "util/configparser.c" break; case 487: -#line 2649 "./util/configparser.y" - { +#line 2647 "./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 5841 "util/configparser.c" +#line 5749 "util/configparser.c" break; case 488: -#line 2657 "./util/configparser.y" - { +#line 2655 "./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 5852 "util/configparser.c" +#line 5760 "util/configparser.c" break; case 489: -#line 2665 "./util/configparser.y" - { +#line 2663 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5866,32 +5774,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5870 "util/configparser.c" +#line 5778 "util/configparser.c" break; case 490: -#line 2680 "./util/configparser.y" - { +#line 2678 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5790 "util/configparser.c" break; case 491: -#line 2689 "./util/configparser.y" - { +#line 2687 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 5890 "util/configparser.c" +#line 5798 "util/configparser.c" break; case 502: -#line 2700 "./util/configparser.y" - { +#line 2698 "./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) yyerror("expected yes or no."); @@ -5899,104 +5807,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5811 "util/configparser.c" break; case 503: -#line 2710 "./util/configparser.y" - { +#line 2708 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5823 "util/configparser.c" break; case 504: -#line 2719 "./util/configparser.y" - { +#line 2717 "./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 5925 "util/configparser.c" +#line 5833 "util/configparser.c" break; case 505: -#line 2726 "./util/configparser.y" - { +#line 2724 "./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 5935 "util/configparser.c" +#line 5843 "util/configparser.c" break; case 506: -#line 2733 "./util/configparser.y" - { +#line 2731 "./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 5945 "util/configparser.c" +#line 5853 "util/configparser.c" break; case 507: -#line 2740 "./util/configparser.y" - { +#line 2738 "./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 5955 "util/configparser.c" +#line 5863 "util/configparser.c" break; case 508: -#line 2747 "./util/configparser.y" - { +#line 2745 "./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 5965 "util/configparser.c" +#line 5873 "util/configparser.c" break; case 509: -#line 2754 "./util/configparser.y" - { +#line 2752 "./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 5975 "util/configparser.c" +#line 5883 "util/configparser.c" break; case 510: -#line 2761 "./util/configparser.y" - { +#line 2759 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 5983 "util/configparser.c" +#line 5891 "util/configparser.c" break; case 532: -#line 2781 "./util/configparser.y" - { +#line 2779 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5995 "util/configparser.c" +#line 5903 "util/configparser.c" break; case 533: -#line 2790 "./util/configparser.y" - { +#line 2788 "./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) yyerror("expected yes or no."); @@ -6004,128 +5912,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6008 "util/configparser.c" +#line 5916 "util/configparser.c" break; case 534: -#line 2800 "./util/configparser.y" - { +#line 2798 "./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 6018 "util/configparser.c" +#line 5926 "util/configparser.c" break; case 535: -#line 2807 "./util/configparser.y" - { +#line 2805 "./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 6028 "util/configparser.c" +#line 5936 "util/configparser.c" break; case 536: -#line 2814 "./util/configparser.y" - { +#line 2812 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6040 "util/configparser.c" +#line 5948 "util/configparser.c" break; case 537: -#line 2823 "./util/configparser.y" - { +#line 2821 "./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 6050 "util/configparser.c" +#line 5958 "util/configparser.c" break; case 538: -#line 2830 "./util/configparser.y" - { +#line 2828 "./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 6060 "util/configparser.c" +#line 5968 "util/configparser.c" break; case 539: -#line 2837 "./util/configparser.y" - { +#line 2835 "./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 6070 "util/configparser.c" +#line 5978 "util/configparser.c" break; case 540: -#line 2844 "./util/configparser.y" - { +#line 2842 "./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 6080 "util/configparser.c" +#line 5988 "util/configparser.c" break; case 541: -#line 2851 "./util/configparser.y" - { +#line 2849 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6092 "util/configparser.c" +#line 6000 "util/configparser.c" break; case 542: -#line 2860 "./util/configparser.y" - { +#line 2858 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6104 "util/configparser.c" +#line 6012 "util/configparser.c" break; case 543: -#line 2869 "./util/configparser.y" - { +#line 2867 "./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 6114 "util/configparser.c" +#line 6022 "util/configparser.c" break; case 544: -#line 2876 "./util/configparser.y" - { +#line 2874 "./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 6124 "util/configparser.c" +#line 6032 "util/configparser.c" break; case 545: -#line 2883 "./util/configparser.y" - { +#line 2881 "./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) yyerror("expected yes or no."); @@ -6133,12 +6041,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 6045 "util/configparser.c" break; case 546: -#line 2893 "./util/configparser.y" - { +#line 2891 "./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) yyerror("expected yes or no."); @@ -6146,12 +6054,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6058 "util/configparser.c" break; case 547: -#line 2903 "./util/configparser.y" - { +#line 2901 "./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) yyerror("expected yes or no."); @@ -6159,12 +6067,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6163 "util/configparser.c" +#line 6071 "util/configparser.c" break; case 548: -#line 2913 "./util/configparser.y" - { +#line 2911 "./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) yyerror("expected yes or no."); @@ -6172,12 +6080,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6084 "util/configparser.c" break; case 549: -#line 2923 "./util/configparser.y" - { +#line 2921 "./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) yyerror("expected yes or no."); @@ -6185,12 +6093,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6097 "util/configparser.c" break; case 550: -#line 2933 "./util/configparser.y" - { +#line 2931 "./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) yyerror("expected yes or no."); @@ -6198,48 +6106,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6110 "util/configparser.c" break; case 551: -#line 2943 "./util/configparser.y" - { +#line 2941 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6210 "util/configparser.c" +#line 6118 "util/configparser.c" break; case 555: -#line 2952 "./util/configparser.y" - { +#line 2950 "./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 6220 "util/configparser.c" +#line 6128 "util/configparser.c" break; case 556: -#line 2958 "./util/configparser.y" - { +#line 2956 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6228 "util/configparser.c" +#line 6136 "util/configparser.c" break; case 560: -#line 2967 "./util/configparser.y" - { +#line 2965 "./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 6238 "util/configparser.c" +#line 6146 "util/configparser.c" break; case 561: -#line 2973 "./util/configparser.y" - { +#line 2971 "./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) yyerror("expected yes or no."); @@ -6247,132 +6155,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6251 "util/configparser.c" +#line 6159 "util/configparser.c" break; case 562: -#line 2983 "./util/configparser.y" - { +#line 2981 "./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 6261 "util/configparser.c" +#line 6169 "util/configparser.c" break; case 563: -#line 2990 "./util/configparser.y" - { +#line 2988 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6273 "util/configparser.c" +#line 6181 "util/configparser.c" break; case 564: -#line 2999 "./util/configparser.y" - { +#line 2997 "./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 6284 "util/configparser.c" +#line 6192 "util/configparser.c" break; case 565: -#line 3007 "./util/configparser.y" - { +#line 3005 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6292 "util/configparser.c" +#line 6200 "util/configparser.c" break; case 578: -#line 3023 "./util/configparser.y" - { +#line 3021 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6304 "util/configparser.c" +#line 6212 "util/configparser.c" break; case 579: -#line 3033 "./util/configparser.y" - { +#line 3031 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 580: -#line 3042 "./util/configparser.y" - { +#line 3040 "./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 6326 "util/configparser.c" +#line 6234 "util/configparser.c" break; case 581: -#line 3049 "./util/configparser.y" - { +#line 3047 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6338 "util/configparser.c" +#line 6246 "util/configparser.c" break; case 582: -#line 3058 "./util/configparser.y" - { +#line 3056 "./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 6348 "util/configparser.c" +#line 6256 "util/configparser.c" break; case 583: -#line 3065 "./util/configparser.y" - { +#line 3063 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6360 "util/configparser.c" +#line 6268 "util/configparser.c" break; case 584: -#line 3074 "./util/configparser.y" - { +#line 3072 "./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 6371 "util/configparser.c" +#line 6279 "util/configparser.c" break; case 585: -#line 3082 "./util/configparser.y" - { +#line 3080 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6383,23 +6291,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 6295 "util/configparser.c" break; case 586: -#line 3095 "./util/configparser.y" - { +#line 3093 "./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 6398 "util/configparser.c" +#line 6306 "util/configparser.c" break; case 587: -#line 3103 "./util/configparser.y" - { +#line 3101 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6410,20 +6318,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6322 "util/configparser.c" break; case 588: -#line 3116 "./util/configparser.y" - { +#line 3114 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6422 "util/configparser.c" +#line 6330 "util/configparser.c" break; case 597: -#line 3127 "./util/configparser.y" - { +#line 3125 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6433,12 +6341,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6437 "util/configparser.c" +#line 6345 "util/configparser.c" break; case 598: -#line 3139 "./util/configparser.y" - { +#line 3137 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6448,12 +6356,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6452 "util/configparser.c" +#line 6360 "util/configparser.c" break; case 599: -#line 3151 "./util/configparser.y" - { +#line 3149 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6463,12 +6371,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6467 "util/configparser.c" +#line 6375 "util/configparser.c" break; case 600: -#line 3163 "./util/configparser.y" - { +#line 3161 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6481,12 +6389,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6485 "util/configparser.c" +#line 6393 "util/configparser.c" break; case 601: -#line 3178 "./util/configparser.y" - { +#line 3176 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6497,12 +6405,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6501 "util/configparser.c" +#line 6409 "util/configparser.c" break; case 602: -#line 3191 "./util/configparser.y" - { +#line 3189 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6513,12 +6421,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6517 "util/configparser.c" +#line 6425 "util/configparser.c" break; case 603: -#line 3204 "./util/configparser.y" - { +#line 3202 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6527,20 +6435,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6531 "util/configparser.c" +#line 6439 "util/configparser.c" break; case 604: -#line 3215 "./util/configparser.y" - { +#line 3213 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6539 "util/configparser.c" +#line 6447 "util/configparser.c" break; case 609: -#line 3224 "./util/configparser.y" - { +#line 3222 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6553,12 +6461,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6557 "util/configparser.c" +#line 6465 "util/configparser.c" break; case 610: -#line 3239 "./util/configparser.y" - { +#line 3237 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6571,11 +6479,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6575 "util/configparser.c" +#line 6483 "util/configparser.c" break; -#line 6579 "util/configparser.c" +#line 6487 "util/configparser.c" default: break; } @@ -6639,7 +6547,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; @@ -6807,7 +6715,7 @@ yyreturn: #endif return yyresult; } -#line 3253 "./util/configparser.y" +#line 3251 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 2a86ce512..4d3381fa3 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C diff --git a/util/configparser.y b/util/configparser.y index fe600a999..52ec8251c 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1120,15 +1120,13 @@ server_root_hints: VAR_ROOT_HINTS STRING_ARG server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG { OUTYY(("P(server_dlv_anchor_file:%s)\n", $2)); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = $2; + log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); } ; server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG { OUTYY(("P(server_dlv_anchor:%s)\n", $2)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, $2)) - yyerror("out of memory"); + log_warn("option dlv-anchor ignored: DLV is decommissioned"); } ; server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG diff --git a/validator/val_anchor.c b/validator/val_anchor.c index 7224f00a2..9b6574c5d 100644 --- a/validator/val_anchor.c +++ b/validator/val_anchor.c @@ -1030,8 +1030,6 @@ anchors_assemble_rrsets(struct val_anchors* anchors) ")", b); (void)rbtree_delete(anchors->tree, &ta->node); lock_basic_unlock(&ta->lock); - if(anchors->dlv_anchor == ta) - anchors->dlv_anchor = NULL; anchors_delfunc(&ta->node, NULL); ta = next; continue; @@ -1103,37 +1101,6 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) return 0; } } - if(cfg->dlv_anchor_file && cfg->dlv_anchor_file[0] != 0) { - struct trust_anchor* dlva; - nm = cfg->dlv_anchor_file; - if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, - cfg->chrootdir, strlen(cfg->chrootdir)) == 0) - nm += strlen(cfg->chrootdir); - if(!(dlva = anchor_read_file(anchors, parsebuf, - nm, 1))) { - log_err("error reading dlv-anchor-file: %s", - cfg->dlv_anchor_file); - sldns_buffer_free(parsebuf); - return 0; - } - lock_basic_lock(&anchors->lock); - anchors->dlv_anchor = dlva; - lock_basic_unlock(&anchors->lock); - } - for(f = cfg->dlv_anchor_list; f; f = f->next) { - struct trust_anchor* dlva; - if(!f->str || f->str[0] == 0) /* empty "" */ - continue; - if(!(dlva = anchor_store_str( - anchors, parsebuf, f->str))) { - log_err("error in dlv-anchor: \"%s\"", f->str); - sldns_buffer_free(parsebuf); - return 0; - } - lock_basic_lock(&anchors->lock); - anchors->dlv_anchor = dlva; - lock_basic_unlock(&anchors->lock); - } /* do autr last, so that it sees what anchors are filled by other * means can can print errors about double config for the name */ for(f = cfg->auto_trust_anchor_file_list; f; f = f->next) { diff --git a/validator/val_anchor.h b/validator/val_anchor.h index a2a795d09..1597a7d62 100644 --- a/validator/val_anchor.h +++ b/validator/val_anchor.h @@ -67,8 +67,6 @@ struct val_anchors { * contents of type trust_anchor. */ rbtree_type* tree; - /** The DLV trust anchor (if one is configured, else NULL) */ - struct trust_anchor* dlv_anchor; /** Autotrust global data, anchors sorted by next probe time */ struct autr_global_data* autr; }; diff --git a/validator/val_neg.c b/validator/val_neg.c index 4c08e6bbc..67699b1f7 100644 --- a/validator/val_neg.c +++ b/validator/val_neg.c @@ -965,108 +965,6 @@ static int neg_closest_data(struct val_neg_zone* zone, } } -int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, - uint16_t qclass, struct rrset_cache* rrset_cache, time_t now) -{ - /* lookup closest zone */ - struct val_neg_zone* zone; - struct val_neg_data* data; - int labs; - struct ub_packed_rrset_key* nsec; - struct packed_rrset_data* d; - uint32_t flags; - uint8_t* wc; - struct query_info qinfo; - if(!neg) return 0; - - log_nametypeclass(VERB_ALGO, "negcache dlvlookup", qname, - LDNS_RR_TYPE_DLV, qclass); - - labs = dname_count_labels(qname); - lock_basic_lock(&neg->lock); - zone = neg_closest_zone_parent(neg, qname, len, labs, qclass); - while(zone && !zone->in_use) - zone = zone->parent; - if(!zone) { - lock_basic_unlock(&neg->lock); - return 0; - } - log_nametypeclass(VERB_ALGO, "negcache zone", zone->name, 0, - zone->dclass); - - /* DLV is defined to use NSEC only */ - if(zone->nsec3_hash) { - lock_basic_unlock(&neg->lock); - return 0; - } - - /* lookup closest data record */ - (void)neg_closest_data(zone, qname, len, labs, &data); - while(data && !data->in_use) - data = data->parent; - if(!data) { - lock_basic_unlock(&neg->lock); - return 0; - } - log_nametypeclass(VERB_ALGO, "negcache rr", data->name, - LDNS_RR_TYPE_NSEC, zone->dclass); - - /* lookup rrset in rrset cache */ - flags = 0; - if(query_dname_compare(data->name, zone->name) == 0) - flags = PACKED_RRSET_NSEC_AT_APEX; - nsec = rrset_cache_lookup(rrset_cache, data->name, data->len, - LDNS_RR_TYPE_NSEC, zone->dclass, flags, now, 0); - - /* check if secure and TTL ok */ - if(!nsec) { - lock_basic_unlock(&neg->lock); - return 0; - } - d = (struct packed_rrset_data*)nsec->entry.data; - if(!d || now > d->ttl) { - lock_rw_unlock(&nsec->entry.lock); - /* delete data record if expired */ - neg_delete_data(neg, data); - lock_basic_unlock(&neg->lock); - return 0; - } - if(d->security != sec_status_secure) { - lock_rw_unlock(&nsec->entry.lock); - neg_delete_data(neg, data); - lock_basic_unlock(&neg->lock); - return 0; - } - verbose(VERB_ALGO, "negcache got secure rrset"); - - /* check NSEC security */ - /* check if NSEC proves no DLV type exists */ - /* check if NSEC proves NXDOMAIN for qname */ - qinfo.qname = qname; - qinfo.qtype = LDNS_RR_TYPE_DLV; - qinfo.qclass = qclass; - qinfo.local_alias = NULL; - if(!nsec_proves_nodata(nsec, &qinfo, &wc) && - !val_nsec_proves_name_error(nsec, qname)) { - /* the NSEC is not a denial for the DLV */ - lock_rw_unlock(&nsec->entry.lock); - lock_basic_unlock(&neg->lock); - verbose(VERB_ALGO, "negcache not proven"); - return 0; - } - /* so the NSEC was a NODATA proof, or NXDOMAIN proof. */ - - /* no need to check for wildcard NSEC; no wildcards in DLV repos */ - /* no need to lookup SOA record for client; no response message */ - - lock_rw_unlock(&nsec->entry.lock); - /* if OK touch the LRU for neg_data element */ - neg_lru_touch(neg, data); - lock_basic_unlock(&neg->lock); - verbose(VERB_ALGO, "negcache DLV denial proven"); - return 1; -} - void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info* rep, uint8_t* zone_name) { diff --git a/validator/val_neg.h b/validator/val_neg.h index 877f5c944..5643ca331 100644 --- a/validator/val_neg.h +++ b/validator/val_neg.h @@ -218,26 +218,6 @@ void val_neg_addreply(struct val_neg_cache* neg, struct reply_info* rep); void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info* rep, uint8_t* zone); -/** - * Perform a DLV style lookup - * During the lookup, we could find out that data has expired. In that - * case the neg_cache entries are removed, and lookup fails. - * - * @param neg: negative cache. - * @param qname: name to look for - * @param len: length of qname. - * @param qclass: class to look in. - * @param rrset_cache: the rrset cache, for NSEC lookups. - * @param now: current time for ttl checks. - * @return - * 0 on error - * 0 if no proof of negative - * 1 if indeed negative was proven - * thus, qname DLV qclass does not exist. - */ -int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, - uint16_t qclass, struct rrset_cache* rrset_cache, time_t now); - /** * For the given query, try to get a reply out of the negative cache. * The reply still needs to be validated. diff --git a/validator/val_nsec.c b/validator/val_nsec.c index a795e7733..032d2ae03 100644 --- a/validator/val_nsec.c +++ b/validator/val_nsec.c @@ -541,86 +541,3 @@ val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, } return 0; } - -/** - * Find shared topdomain that exists - */ -static void -dlv_topdomain(struct ub_packed_rrset_key* nsec, uint8_t* qname, - uint8_t** nm, size_t* nm_len) -{ - /* make sure reply is part of nm */ - /* take shared topdomain with left of NSEC. */ - - /* because, if empty nonterminal, then right is subdomain of qname. - * and any shared topdomain would be empty nonterminals. - * - * If nxdomain, then the right is bigger, and could have an - * interesting shared topdomain, but if it does have one, it is - * an empty nonterminal. An empty nonterminal shared with the left - * one. */ - int n; - uint8_t* common = dname_get_shared_topdomain(qname, nsec->rk.dname); - n = dname_count_labels(*nm) - dname_count_labels(common); - dname_remove_labels(nm, nm_len, n); -} - -int val_nsec_check_dlv(struct query_info* qinfo, - struct reply_info* rep, uint8_t** nm, size_t* nm_len) -{ - uint8_t* next; - size_t i, nlen; - int c; - /* we should now have a NOERROR/NODATA or NXDOMAIN message */ - if(rep->an_numrrsets != 0) { - return 0; - } - /* is this NOERROR ? */ - if(FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NOERROR) { - /* it can be a plain NSEC match - go up one more level. */ - /* or its an empty nonterminal - go up to nonempty level */ - for(i=0; ins_numrrsets; i++) { - if(htons(rep->rrsets[i]->rk.type)!=LDNS_RR_TYPE_NSEC || - !nsec_get_next(rep->rrsets[i], &next, &nlen)) - continue; - c = dname_canonical_compare( - rep->rrsets[i]->rk.dname, qinfo->qname); - if(c == 0) { - /* plain match */ - if(nsec_has_type(rep->rrsets[i], - LDNS_RR_TYPE_DLV)) - return 0; - dname_remove_label(nm, nm_len); - return 1; - } else if(c < 0 && - dname_strict_subdomain_c(next, qinfo->qname)) { - /* ENT */ - dlv_topdomain(rep->rrsets[i], qinfo->qname, - nm, nm_len); - return 1; - } - } - return 0; - } - - /* is this NXDOMAIN ? */ - if(FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN) { - /* find the qname denial NSEC record. It can tell us - * a closest encloser name; or that we not need bother */ - for(i=0; ins_numrrsets; i++) { - if(htons(rep->rrsets[i]->rk.type) != LDNS_RR_TYPE_NSEC) - continue; - if(val_nsec_proves_name_error(rep->rrsets[i], - qinfo->qname)) { - log_nametypeclass(VERB_ALGO, "topdomain on", - rep->rrsets[i]->rk.dname, - ntohs(rep->rrsets[i]->rk.type), 0); - dlv_topdomain(rep->rrsets[i], qinfo->qname, - nm, nm_len); - return 1; - } - } - return 0; - } - return 0; -} diff --git a/validator/val_nsec.h b/validator/val_nsec.h index 4e71257bc..7117809d6 100644 --- a/validator/val_nsec.h +++ b/validator/val_nsec.h @@ -158,19 +158,6 @@ uint8_t* nsec_closest_encloser(uint8_t* qname, int val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, size_t qnamelen); -/** - * Determine the DLV result, what to do with NSEC DLV reply. - * @param qinfo: what was queried for. - * @param rep: the nonpositive reply. - * @param nm: dlv lookup name, to adjust for new lookup name (if needed). - * @param nm_len: length of lookup name. - * @return 0 on error, 1 if a higher point is found. - * If the higher point is above the dlv repo anchor, the qname does - * not exist. - */ -int val_nsec_check_dlv(struct query_info* qinfo, - struct reply_info* rep, uint8_t** nm, size_t* nm_len); - /** * Determine if an nsec proves an insecure delegation towards the qname. * @param nsec: nsec rrset. diff --git a/validator/validator.h b/validator/validator.h index 9e4c8a941..35da1920a 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -137,8 +137,6 @@ enum val_state { VAL_VALIDATE_STATE, /** finish up */ VAL_FINISHED_STATE, - /** DLV lookup state, processing DLV queries */ - VAL_DLVLOOKUP_STATE }; /** @@ -217,27 +215,6 @@ struct val_qstate { /** true if this state is waiting to prime a trust anchor */ int wait_prime_ta; - - /** have we already checked the DLV? */ - int dlv_checked; - /** The name for which the DLV is looked up. For the current message - * or for the current RRset (for CNAME, REFERRAL types). - * If there is signer name, that may be it, else a domain name */ - uint8_t* dlv_lookup_name; - /** length of dlv lookup name */ - size_t dlv_lookup_name_len; - /** Name at which chain of trust stopped with insecure, starting DLV - * DLV must result in chain going further down */ - uint8_t* dlv_insecure_at; - /** length of dlv insecure point name */ - size_t dlv_insecure_at_len; - /** status of DLV lookup. Indication to VAL_DLV_STATE what to do */ - enum dlv_status { - dlv_error, /* server failure */ - dlv_success, /* got a DLV */ - dlv_ask_higher, /* ask again */ - dlv_there_is_no_dlv /* got no DLV, sure of it */ - } dlv_status; }; /** From f78f6a3b2909e1368946bc93db328b95cb86e163 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 09:15:45 +0200 Subject: [PATCH 158/394] dlv removal, remove from tests and validator state machine --- testdata/dlv_anchor.rpl | 279 ------------------ testdata/dlv_ask_higher.rpl | 354 ----------------------- testdata/dlv_below_ta.rpl | 355 ----------------------- testdata/dlv_delegation.rpl | 335 ---------------------- testdata/dlv_ds_lookup.rpl | 281 ------------------ testdata/dlv_insecure.rpl | 254 ----------------- testdata/dlv_insecure_negcache.rpl | 311 -------------------- testdata/dlv_keyretry.rpl | 287 ------------------- testdata/dlv_negnx.rpl | 405 -------------------------- testdata/dlv_optout.rpl | 440 ----------------------------- testdata/dlv_remove.rpl | 198 ------------- testdata/dlv_remove_empty.rpl | 272 ------------------ testdata/dlv_remove_nodel.rpl | 276 ------------------ testdata/dlv_remove_pos.rpl | 167 ----------- testdata/dlv_unused.rpl | 277 ------------------ testdata/domain_insec_dlv.rpl | 277 ------------------ testdata/fwddlv_parse.rpl | 134 --------- testdata/val_unalgo_dlv.rpl | 284 ------------------- validator/validator.c | 369 ------------------------ 19 files changed, 5555 deletions(-) delete mode 100644 testdata/dlv_anchor.rpl delete mode 100644 testdata/dlv_ask_higher.rpl delete mode 100644 testdata/dlv_below_ta.rpl delete mode 100644 testdata/dlv_delegation.rpl delete mode 100644 testdata/dlv_ds_lookup.rpl delete mode 100644 testdata/dlv_insecure.rpl delete mode 100644 testdata/dlv_insecure_negcache.rpl delete mode 100644 testdata/dlv_keyretry.rpl delete mode 100644 testdata/dlv_negnx.rpl delete mode 100644 testdata/dlv_optout.rpl delete mode 100644 testdata/dlv_remove.rpl delete mode 100644 testdata/dlv_remove_empty.rpl delete mode 100644 testdata/dlv_remove_nodel.rpl delete mode 100644 testdata/dlv_remove_pos.rpl delete mode 100644 testdata/dlv_unused.rpl delete mode 100644 testdata/domain_insec_dlv.rpl delete mode 100644 testdata/fwddlv_parse.rpl delete mode 100644 testdata/val_unalgo_dlv.rpl diff --git a/testdata/dlv_anchor.rpl b/testdata/dlv_anchor.rpl deleted file mode 100644 index 81547454e..000000000 --- a/testdata/dlv_anchor.rpl +++ /dev/null @@ -1,279 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_ask_higher.rpl b/testdata/dlv_ask_higher.rpl deleted file mode 100644 index fad8355c8..000000000 --- a/testdata/dlv_ask_higher.rpl +++ /dev/null @@ -1,354 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV where it needs to ask higher up in dlv. -; at first negative DLV response, it needs to ask higher. -; the SOA record in that negative response has a big span (if interpreted as NSEC) -; then a positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; failed DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NXDOMAIN -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.net.example.com IN NSEC not.example.com. RRSIG NSEC DLV -example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AKz/e6KOw8gCx6wnpIatBwKb0WOPBTWmNNMg91XR/wlJQ9Z2+qICPmA= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. nM5HAlRsrLurc5mUNKwCye5X6LSH53pLgSeyni4wb6Jd2J48ZRWwrVvy7IpyvI75+Wlu3aGOjv/kEyVaizChRQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. 3600 IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. 3600 IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_below_ta.rpl b/testdata/dlv_below_ta.rpl deleted file mode 100644 index f5d630dfb..000000000 --- a/testdata/dlv_below_ta.rpl +++ /dev/null @@ -1,355 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, use DLV for nonDSed zone below trustanchor. -; DLV example.com. -; trust anchor at example.net but no secure delegation to -; sub.example.net signed with DLV but not by parent. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; no DS to sub.example.net, securely insecure. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DS -SECTION ANSWER -SECTION AUTHORITY -example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} -sub.example.net. IN NSEC tut.example.net. NS NSEC -sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} -SECTION ADDITIONAL -ENTRY_END - -; delegation to sub.example.net, securely insecure. -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. IN NSEC tut.example.net. NS NSEC -sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS is -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_delegation.rpl b/testdata/dlv_delegation.rpl deleted file mode 100644 index 53074c8e2..000000000 --- a/testdata/dlv_delegation.rpl +++ /dev/null @@ -1,335 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with delegation in DLV repository -; positive response for DLV. -; but the DLV repository has a (secure) delegation inside it. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; referral to the net.example.com DLV server -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN DS 2854 3 1 24d80cd822bc4083cf491b7f055890345a77dd9b ; xenat-myfat-memir-sabym-fefig-nakol-zucyh-megef-gakel-lolyn-ruxox -net.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AA0APyTN12wzj1XmDEZe+wrPE1hkLAINKT8cT9zGup7zX3O8R4Ki2N8= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AJEvfI+tX6Y1OF0h1CNHERJjXaaTsmLWTMLgXk4UYJl8JjAikCpsf9Q= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.net.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN NS -SECTION ANSWER -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DNSKEY -SECTION ANSWER -net.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -net.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926134150 20070829134150 2854 net.example.com. ADgKDV1Yi2iFOXFUN1XkvBU7KW/rdtGcOEdc9VMIxfIKDo5h24E5fqs= ;{id = 2854} -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -; DLV apex -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -net.example.com. SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -net.example.com. 3600 IN RRSIG SOA 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AKAjedAeGWRHaqhDhNhbTvVUQMgCspiD4GNC7dMVbEZSd87AFcqwg1Y= ;{id = 2854} -net.example.com. NSEC example.net.example.com. SOA NS DNSKEY RRSIG NSEC -net.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AAHqj3xDqng7ZuNFn89sTjTo2qfuXTv0yR6v8mZ1+L5mCsOwjpGXrJw= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -; DLV of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AIZmoTbAlXYwLknm84i7sbglbHr1Iq7t0yyTENO/MsPj7K/mvEQAI/g= ;{id = 2854} -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_ds_lookup.rpl b/testdata/dlv_ds_lookup.rpl deleted file mode 100644 index 663cd9c36..000000000 --- a/testdata/dlv_ds_lookup.rpl +++ /dev/null @@ -1,281 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor for a DS lookup. -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DS -SECTION AUTHORITY -net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -example.net. IN DS -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -example.net. IN DS -SECTION AUTHORITY -net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_insecure.rpl b/testdata/dlv_insecure.rpl deleted file mode 100644 index e6515a9fb..000000000 --- a/testdata/dlv_insecure.rpl +++ /dev/null @@ -1,254 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - harden-referral-path: no - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with insecure zone with no DLV - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -; could be picked out of the negative cache due to NS queries in between. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_insecure_negcache.rpl b/testdata/dlv_insecure_negcache.rpl deleted file mode 100644 index 8408870b9..000000000 --- a/testdata/dlv_insecure_negcache.rpl +++ /dev/null @@ -1,311 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - harden-referral-path: no - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with insecure zone, no DLV from negative cache - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 300 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -; could be picked out of the negative cache due to NS queries in between. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV -zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV -zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC frump.aqua.example.com. SOA NS RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AAscY9DfNm3Uy8f8Q4WX6AzR0flHYNSr3fKfgQ0Xc20fzj1lGP9ebfk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 300 - ADDRESS 1.2.3.5 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -STEP 150 TIME_PASSES ELAPSE 30 - -; no more DLV authority reachable -STEP 200 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -STEP 210 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -STEP 220 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -net. IN NS -ENTRY_END - -STEP 230 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_keyretry.rpl b/testdata/dlv_keyretry.rpl deleted file mode 100644 index 8d477b5a5..000000000 --- a/testdata/dlv_keyretry.rpl +++ /dev/null @@ -1,287 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor and subsequently key retries -; positive response for DLV. But the DNSKEY for the target fails validation. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -; expired signature -example.net. 3600 IN RRSIG DNSKEY 5 2 3600 20050926134150 20050829134150 30899 example.net. ydM0/eWMqFn4RxMTbscdSLU7bJNoPuzjCa0eI7HSV/r/54slSGvkl0fmwqrROl1tpc0YMV6kAzgB1T5lJbvdsA== ;{id = 30899} -; good signature: -;example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; AAAA for nameserver (for dnssec retry) query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -ns.example.net. IN AAAA -SECTION AUTHORITY -example.net. IN SOA . . 2007091300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. MrpP4svNpbN/YKhuYRlNbvNg0yVxn4ywW1tyEFA9v6F7BR6k1pP8iPfN5XV+XWPAmbss9h3fwKq8zNs4F/SPkg== ;{id = 30899} -ns.example.net. IN NSEC ppp.example.net. A RRSIG NSEC -ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. freWP6rXWsU5iyRE2gIM9rICuBxCYlQSW01GkLPez5czqtEL0hHN8vtjTlfoNxjJjiZj3vAavZDIQGgOOOMIsA== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_negnx.rpl b/testdata/dlv_negnx.rpl deleted file mode 100644 index 03edf1a47..000000000 --- a/testdata/dlv_negnx.rpl +++ /dev/null @@ -1,405 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor for negcache nxdomain proof -; put a DLV in the negcache. -; then test ask-higher with that in the cache. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; under example.net in DLV -ENTRY_BEGIN -MATCH opcode qtype subdomain -ADJUST copy_id copy_query -REPLY QR NXDOMAIN -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.net.example.com. 3600 IN NSEC fru.net.example.com. RRSIG NSEC DLV -example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AI6NNKt4dGcAdCrW73GYwyoqelsdj1dd8mBNPpHRQIL0yp7yYFZ7kXU= ;{id = 2854} -example.com. IN SOA . . 1 2 3 4 5 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AIkRPbv+kZaiG61pH/wQy8fX2UqQS5YRwHaxe4yjEUXk59fgO71Db3s= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -; have it flushed out of the cache quickly. -example.net. 0 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 0 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; subzone -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub1.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub1.example.net. 3600 IN DS 30899 5 1 8916603e54c6f7edcfd885602e3b7b8dc475ba5c ; xodec-komif-vehis-kotav-tefot-mecyk-biryf-rivym-ticol-huvyh-saxox -sub1.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. A3vVrEY3+oIUqdbAa3tkKaU3o47eBD01hVXfAEAue1M+Uci2PA5YyiulLzStyiP75XUXkvubLQ2+ltKMTtfdag== ;{id = 30899} -sub1.example.net. IN NS ns.sub1.example.net. -SECTION ADDITIONAL -ns.sub1.example.net. IN A 1.2.3.10 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub2.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub2.example.net. 3600 IN DS 30899 5 1 627f7a51f1545133fec3ecbd19b85b92b15679c9 ; ximil-zovah-casuh-gygef-fyzas-farir-tikir-mukon-disih-kavus-nyxex -sub2.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. azMXKt4VPHj2hk5MDU6h8E/HOtNnHnIVS6Le3BV43wtJcHG5wlCxOksOZBOpXMkpbWLvbCJOOMPOnh31nlbjgg== ;{id = 30899} -sub2.example.net. IN NS ns.sub2.example.net. -SECTION ADDITIONAL -ns.sub2.example.net. IN A 1.2.3.12 -ENTRY_END -RANGE_END - -; sub1.example.net. -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.10 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub1.example.net. IN DNSKEY -SECTION ANSWER -sub1.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub1.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub1.example.net. E200eTdRnkL7/fk54i1nXEE9a/rC2GxZfVkWMU044tpwV6d4XRxVhlFBzY4FytbRFFBUDhz7L3B0qC6BXJM8rg== ;{id = 30899} -ENTRY_END - -; www query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub1.example.net. IN A -SECTION ANSWER -www.sub1.example.net. IN A 192.168.1.1 -www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} -ENTRY_END - -RANGE_END - -; sub2.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.12 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub2.example.net. IN DNSKEY -SECTION ANSWER -sub2.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub2.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub2.example.net. VcNaPuz9Mmjj5ofZqOa4FsixBomFJTjd/9wxhZOVdxf1LsNR5L++8k09gQvnjtCvqSPfNer/uv0xl+9sRr8Wmw== ;{id = 30899} -ENTRY_END - -; www query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub2.example.net. IN A -SECTION ANSWER -www.sub2.example.net. IN A 192.168.1.12 -www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} -ENTRY_END - -RANGE_END - - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub1.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub1.example.net. IN A -SECTION ANSWER -www.sub1.example.net. IN A 192.168.1.1 -www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; have example.net DNSKEY time out -STEP 14 TIME_PASSES ELAPSE 1.0 - -STEP 20 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub2.example.net. IN A -ENTRY_END - -STEP 30 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub2.example.net. IN A -SECTION ANSWER -www.sub2.example.net. IN A 192.168.1.12 -www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - - -SCENARIO_END diff --git a/testdata/dlv_optout.rpl b/testdata/dlv_optout.rpl deleted file mode 100644 index e5a8fdd62..000000000 --- a/testdata/dlv_optout.rpl +++ /dev/null @@ -1,440 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, DLV to zone below optout, check negative cache. -; DLV example.com. -; trust anchor at example.net but no secure delegation to -; sub.example.net signed with DLV but not by parent. -; parent uses optout NSEC3. -; then a signed delegation to down.sub.example.net. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -down.sub.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -sub.example.net.example.com. IN NSEC zzz.example.net.example.com. RRSIG NSEC DLV -sub.example.net.example.com. 3600 IN RRSIG NSEC 3 5 3600 20070926134150 20070829134150 2854 example.com. AG/M+H/lex1CMTIuO+JpdmTjCzt7XBsLtRLPDfYTykhxnnECzZwkMnQ= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; no DS to sub.example.net, optout NSEC3. -; NSEC3PARAM 1 1 31 DE15C001 -; example.net. -> hk4jq0lg6q3bt992urc88dqten1k2be8. -; sub.example.net. -> ecs17hqd0kf7dk9g1cjvevj25pginrf2. -; *.example.net. -> 1tgbedpeeuubbsejh2dqvso62f8n4dk1. -; down.sub.example.net. -> 9j1r8re9b1238vd907tilclgat1i0fre. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DS -SECTION ANSWER -SECTION AUTHORITY -example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} -; CE is example.net -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} -; NC covers sub.example.net -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} -SECTION ADDITIONAL -ENTRY_END - -; delegation to sub.example.net, optout NSEC3. -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS is -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; DS for down.sub.example.net -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -down.sub.example.net. IN DS -SECTION ANSWER -down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 -down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; delegation to down.sub.example.net -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -down.sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -down.sub.example.net. IN NS ns.down.sub.example.net. -; the DS record is not given (like it was parent and child hosted on the same -; server) -;down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 -;down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} -SECTION ADDITIONAL -ns.down.sub.example.net. IN A 1.2.3.7 -ENTRY_END - -RANGE_END - -; ns.down.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.7 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -down.sub.example.net. IN DNSKEY -SECTION ANSWER -down.sub.example.net. 3600 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} -down.sub.example.net. 3600 IN RRSIG DNSKEY 5 4 3600 20070926134150 20070829134150 60946 down.sub.example.net. lK5HNva/IPw0CS9BfBd16fqm5y9bgCSwGsBLBAA1d5SCcKep6AVrv6NFuXl12d1G3MdQ4ruHi6eDDO5dhtkfrw== ;{id = 60946} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; www.down.sub.example.net. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.down.sub.example.net. IN A -SECTION ANSWER -www.down.sub.example.net. IN A 10.20.30.44 -www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.down.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.down.sub.example.net. IN A -SECTION ANSWER -www.down.sub.example.net. IN A 10.20.30.44 -www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove.rpl b/testdata/dlv_remove.rpl deleted file mode 100644 index d503148c7..000000000 --- a/testdata/dlv_remove.rpl +++ /dev/null @@ -1,198 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor but DLV domain is down -; so DLV has been decommissioned. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 - -ENTRY_BEGIN -MATCH opcode -ADJUST copy_id copy_query -REPLY QR SERVFAIL -SECTION QUESTION -example.com. IN NS -ENTRY_END -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_empty.rpl b/testdata/dlv_remove_empty.rpl deleted file mode 100644 index 11b825bc2..000000000 --- a/testdata/dlv_remove_empty.rpl +++ /dev/null @@ -1,272 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV and DLV repository is empty. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query, everything is NXDOMAIN -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR AA NXDOMAIN -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_nodel.rpl b/testdata/dlv_remove_nodel.rpl deleted file mode 100644 index 1abe5a32f..000000000 --- a/testdata/dlv_remove_nodel.rpl +++ /dev/null @@ -1,276 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "dlv.example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV and DLV is removed and not delegated -; so the response is that the dlv domain itself does not exist, but it's -; parent domain does exist (securely). - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query, everything is NXDOMAIN -; thus, no delegation to the dlv repository in dlv.example.com -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR AA NXDOMAIN -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_pos.rpl b/testdata/dlv_remove_pos.rpl deleted file mode 100644 index 892ffa3c0..000000000 --- a/testdata/dlv_remove_pos.rpl +++ /dev/null @@ -1,167 +0,0 @@ -; config options -; The island of trust is at example.com -server: - dlv-anchor: "dlv.example.net. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV removed for positive anchored response -; So the destination has a valid DNSSEC chain of trust to the root, -; but the configured dlv anchor fails. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -; this covers dlv.example.net and thus makes it servfail (unusable). -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR SERVFAIL -SECTION QUESTION -net. IN NS -ENTRY_END - -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to query of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -www.example.com. IN A 10.20.30.40 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} -ENTRY_END -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -www.example.com. IN A 10.20.30.40 -www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_unused.rpl b/testdata/dlv_unused.rpl deleted file mode 100644 index aa7d04c1e..000000000 --- a/testdata/dlv_unused.rpl +++ /dev/null @@ -1,277 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, DLV anchor unused because trustanchor works. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/domain_insec_dlv.rpl b/testdata/domain_insec_dlv.rpl deleted file mode 100644 index c8bd98344..000000000 --- a/testdata/domain_insec_dlv.rpl +++ /dev/null @@ -1,277 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - domain-insecure: "example.net" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with domain-insecure below a DLV -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/fwddlv_parse.rpl b/testdata/fwddlv_parse.rpl deleted file mode 100644 index 8b8a9613f..000000000 --- a/testdata/fwddlv_parse.rpl +++ /dev/null @@ -1,134 +0,0 @@ -; config options -; The island of trust is at example.com -server: - trust-anchor: "dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw==" - val-override-date: "20090617133009" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test parse of packet when forwarding and dlv are in use - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -org. IN NS -SECTION AUTHORITY -org. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. (for ORG) -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -org. IN NS -SECTION ANSWER -org. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -dlv.isc.org. IN NS -SECTION AUTHORITY -dlv.isc.org. IN NS ns.org. -SECTION ADDITIONAL -ns.org. IN A 1.2.3.4 -ENTRY_END -RANGE_END - -; ns.org for dlv.isc.org -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -dlv.isc.org. IN DNSKEY -SECTION ANSWER -dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw== ;{id = 64263 (zsk), size = 1024b} -dlv.isc.org. 5072 IN DNSKEY 257 3 5 BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URkY62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboMQKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VStTDN0YUuWrBNh ;{id = 19297 (ksk), size = 2048b} -dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 19297 dlv.isc.org. iqGOzsIQKFHcPLbJHLb/kNzcm7TlHiyT4kzTknCjKsC7DCB86YCOhnZZjvZQyA+D0N0KDgNWY8v5czbyX57qR6qORciT2zmPSTGj7CIOe4zrq60n8HzsChKgvk+RSYQrzf6vRfnZhce6Y1waXQd4wh1buPAUw/l46Ovt74ALXzcWSgfMNyx6PBz7rbusuePKeSv0GZL9+M2qhXKe9LJmnzD9uCwnbV/Y5yu+xLfxLdm9q4IKp6Rn50CeHYKf3tO2jI9dkWqFR94XHSTNGfhC02i5UsfP1HRPnk49bX7OMstuuCq9zMX+qTt602MVFYdTSHTy/5+Yw5DvOA9JgOqO4w== ;{id = 19297} -dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 64263 dlv.isc.org. W1KX1PagXsaWWmxkaOfnLetnw1hhSw7ym91S4rSu14QfFbYi5iN9ZkSuKa21M7Do52S9om/2hDllMF7EFfnv9l4e4/rMOc59vKGVojpHOvZyRVhIiMyh1H9NfLTYUovORRvKO0Cnp65gBXspVf1WhzoY3pC1NZ+5pscPWLeD1rw= ;{id = 64263} -ENTRY_END - -; response to query of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -SECTION ANSWER -SECTION AUTHORITY -dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 -dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV -ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} -ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV -SECTION ADDITIONAL -ENTRY_END -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NXDOMAIN -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -SECTION ANSWER -SECTION AUTHORITY -dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 -dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV -seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} -ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV -ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} -ENTRY_END - -SCENARIO_END diff --git a/testdata/val_unalgo_dlv.rpl b/testdata/val_unalgo_dlv.rpl deleted file mode 100644 index 142beae8d..000000000 --- a/testdata/val_unalgo_dlv.rpl +++ /dev/null @@ -1,284 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with unknown algorithm DLV anchor -; positive response for DLV. -; but only has unknown algos -; have to treat zone as insecure - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -; algo 208 is unknown -example.net.example.com. 3600 IN DLV 30899 208 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. AFBU1dN/KstcLfQQzy7ZKvPq+2hQg7D6QynqgwI3f8envPQGj782/NA= ;{id = 2854} -;example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -;example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/validator/validator.c b/validator/validator.c index c3ca0a27d..ab0698012 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1603,7 +1603,6 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, val_mark_insecure(vq->chase_reply, anchor->name, qstate->env->rrset_cache, qstate->env); lock_basic_unlock(&anchor->lock); - vq->dlv_checked=1; /* skip DLV check */ /* go to finished state to cache this result */ vq->state = VAL_FINISHED_STATE; return 1; @@ -1985,148 +1984,6 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, return 1; } -/** - * Init DLV check. - * DLV is going to be decommissioned, but the code is still here for some time. - * - * Called when a query is determined by other trust anchors to be insecure - * (or indeterminate). Then we look if there is a key in the DLV. - * Performs aggressive negative cache check to see if there is no key. - * Otherwise, spawns a DLV query, and changes to the DLV wait state. - * - * @param qstate: query state. - * @param vq: validator query state. - * @param ve: validator shared global environment. - * @param id: module id. - * @return true if there is no DLV. - * false: processing is finished for the validator operate(). - * This function may exit in three ways: - * o no DLV (aggressive cache), so insecure. (true) - * o error - stop processing (false) - * o DLV lookup was started, stop processing (false) - */ -static int -val_dlv_init(struct module_qstate* qstate, struct val_qstate* vq, - struct val_env* ve, int id) -{ - uint8_t* nm; - size_t nm_len; - struct module_qstate* newq = NULL; - /* there must be a DLV configured */ - log_assert(qstate->env->anchors->dlv_anchor); - /* this bool is true to avoid looping in the DLV checks */ - log_assert(vq->dlv_checked); - - /* init the DLV lookup variables */ - vq->dlv_lookup_name = NULL; - vq->dlv_lookup_name_len = 0; - vq->dlv_insecure_at = NULL; - vq->dlv_insecure_at_len = 0; - - /* Determine the name for which we want to lookup DLV. - * This name is for the current message, or - * for the current RRset for CNAME, referral subtypes. - * If there is a signer, use that, otherwise the domain name */ - if(vq->signer_name) { - nm = vq->signer_name; - nm_len = vq->signer_len; - } else { - /* use qchase */ - nm = vq->qchase.qname; - nm_len = vq->qchase.qname_len; - if(vq->qchase.qtype == LDNS_RR_TYPE_DS) - dname_remove_label(&nm, &nm_len); - } - log_nametypeclass(VERB_ALGO, "DLV init look", nm, LDNS_RR_TYPE_DS, - vq->qchase.qclass); - log_assert(nm && nm_len); - /* sanity check: no DLV lookups below the DLV anchor itself. - * Like, an securely insecure delegation there makes no sense. */ - if(dname_subdomain_c(nm, qstate->env->anchors->dlv_anchor->name)) { - verbose(VERB_ALGO, "DLV lookup within DLV repository denied"); - return 1; - } - /* concat name (minus root label) + dlv name */ - vq->dlv_lookup_name_len = nm_len - 1 + - qstate->env->anchors->dlv_anchor->namelen; - vq->dlv_lookup_name = regional_alloc(qstate->region, - vq->dlv_lookup_name_len); - if(!vq->dlv_lookup_name) { - log_err("Out of memory preparing DLV lookup"); - return val_error(qstate, id); - } - memmove(vq->dlv_lookup_name, nm, nm_len-1); - memmove(vq->dlv_lookup_name+nm_len-1, - qstate->env->anchors->dlv_anchor->name, - qstate->env->anchors->dlv_anchor->namelen); - log_nametypeclass(VERB_ALGO, "DLV name", vq->dlv_lookup_name, - LDNS_RR_TYPE_DLV, vq->qchase.qclass); - - /* determine where the insecure point was determined, the DLV must - * be equal or below that to continue building the trust chain - * down. May be NULL if no trust chain was built yet */ - nm = NULL; - if(vq->key_entry && key_entry_isnull(vq->key_entry)) { - nm = vq->key_entry->name; - nm_len = vq->key_entry->namelen; - } - if(nm) { - vq->dlv_insecure_at_len = nm_len - 1 + - qstate->env->anchors->dlv_anchor->namelen; - vq->dlv_insecure_at = regional_alloc(qstate->region, - vq->dlv_insecure_at_len); - if(!vq->dlv_insecure_at) { - log_err("Out of memory preparing DLV lookup"); - return val_error(qstate, id); - } - memmove(vq->dlv_insecure_at, nm, nm_len-1); - memmove(vq->dlv_insecure_at+nm_len-1, - qstate->env->anchors->dlv_anchor->name, - qstate->env->anchors->dlv_anchor->namelen); - log_nametypeclass(VERB_ALGO, "insecure_at", - vq->dlv_insecure_at, 0, vq->qchase.qclass); - } - - /* If we can find the name in the aggressive negative cache, - * give up; insecure is the answer */ - while(val_neg_dlvlookup(ve->neg_cache, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, vq->qchase.qclass, - qstate->env->rrset_cache, *qstate->env->now)) { - /* go up */ - dname_remove_label(&vq->dlv_lookup_name, - &vq->dlv_lookup_name_len); - /* too high? */ - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - verbose(VERB_ALGO, "ask above dlv repo"); - return 1; /* Above the repo is insecure */ - } - /* above chain of trust? */ - if(vq->dlv_insecure_at && !dname_subdomain_c( - vq->dlv_lookup_name, vq->dlv_insecure_at)) { - verbose(VERB_ALGO, "ask above insecure endpoint"); - return 1; - } - } - - /* perform a lookup for the DLV; with validation */ - vq->state = VAL_DLVLOOKUP_STATE; - if(!generate_request(qstate, id, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0, &newq, 0)) { - return val_error(qstate, id); - } - - /* Find the closest encloser DLV from the repository. - * then that is used to build another chain of trust - * This may first require a query 'too low' that has NSECs in - * the answer, from which we determine the closest encloser DLV. - * When determine the closest encloser, skip empty nonterminals, - * since we want a nonempty node in the DLV repository. */ - - return 0; -} - /** * The Finished state. The validation status (good or bad) has been determined. * @@ -2145,16 +2002,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, qstate->query_flags, &qstate->qinfo, &vq->qchase, vq->orig_msg->rep, vq->rrset_skip); - /* if the result is insecure or indeterminate and we have not - * checked the DLV yet, check the DLV */ - if((vq->chase_reply->security == sec_status_insecure || - vq->chase_reply->security == sec_status_indeterminate) && - qstate->env->anchors->dlv_anchor && !vq->dlv_checked) { - vq->dlv_checked = 1; - if(!val_dlv_init(qstate, vq, ve, id)) - return 0; - } - /* store overall validation result in orig_msg */ if(vq->rrset_skip == 0) vq->orig_msg->rep->security = vq->chase_reply->security; @@ -2177,7 +2024,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, /* and restart for this rrset */ verbose(VERB_ALGO, "validator: go to next rrset"); vq->chase_reply->security = sec_status_unchecked; - vq->dlv_checked = 0; /* can do DLV for this RR */ vq->state = VAL_INIT_STATE; return 1; } @@ -2195,7 +2041,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, log_query_info(VERB_ALGO, "validator: chased to", &vq->qchase); vq->chase_reply->security = sec_status_unchecked; - vq->dlv_checked = 0; /* can do DLV for this RR */ vq->state = VAL_INIT_STATE; return 1; } @@ -2321,119 +2166,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, return 0; } -/** - * The DLVLookup state. Process DLV lookups. - * - * @param qstate: query state. - * @param vq: validator query state. - * @param ve: validator shared global environment. - * @param id: module id. - * @return true if the event should be processed further on return, false if - * not. - */ -static int -processDLVLookup(struct module_qstate* qstate, struct val_qstate* vq, - struct val_env* ve, int id) -{ - struct module_qstate* newq = NULL; - /* see if this we are ready to continue normal resolution */ - /* we may need more DLV lookups */ - if(vq->dlv_status==dlv_error) - verbose(VERB_ALGO, "DLV woke up with status dlv_error"); - else if(vq->dlv_status==dlv_success) - verbose(VERB_ALGO, "DLV woke up with status dlv_success"); - else if(vq->dlv_status==dlv_ask_higher) - verbose(VERB_ALGO, "DLV woke up with status dlv_ask_higher"); - else if(vq->dlv_status==dlv_there_is_no_dlv) - verbose(VERB_ALGO, "DLV woke up with status dlv_there_is_no_dlv"); - else verbose(VERB_ALGO, "DLV woke up with status unknown"); - - if(vq->dlv_status == dlv_error) { - verbose(VERB_QUERY, "failed DLV lookup"); - errinf(qstate, "failed DLV lookup"); - return val_error(qstate, id); - } else if(vq->dlv_status == dlv_success) { - uint8_t* nm; - size_t nmlen; - /* chain continues with DNSKEY, continue in FINDKEY */ - vq->state = VAL_FINDKEY_STATE; - - /* strip off the DLV suffix from the name; could result in . */ - log_assert(dname_subdomain_c(vq->ds_rrset->rk.dname, - qstate->env->anchors->dlv_anchor->name)); - nmlen = vq->ds_rrset->rk.dname_len - - qstate->env->anchors->dlv_anchor->namelen + 1; - nm = regional_alloc_init(qstate->region, - vq->ds_rrset->rk.dname, nmlen); - if(!nm) { - log_err("Out of memory in DLVLook"); - return val_error(qstate, id); - } - nm[nmlen-1] = 0; - - vq->ds_rrset->rk.dname = nm; - vq->ds_rrset->rk.dname_len = nmlen; - - /* create a nullentry for the key so the dnskey lookup - * can be retried after a validation failure for it */ - vq->key_entry = key_entry_create_null(qstate->region, - nm, nmlen, vq->qchase.qclass, 0, 0); - if(!vq->key_entry) { - log_err("Out of memory in DLVLook"); - return val_error(qstate, id); - } - - if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, - vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD, &newq, 0)) { - verbose(VERB_ALGO, "error generating DNSKEY request"); - return val_error(qstate, id); - } - return 0; - } else if(vq->dlv_status == dlv_there_is_no_dlv) { - /* continue with the insecure result we got */ - vq->state = VAL_FINISHED_STATE; - return 1; - } - log_assert(vq->dlv_status == dlv_ask_higher); - - /* ask higher, make sure we stay in DLV repo, below dlv_at */ - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - /* just like, there is no DLV */ - verbose(VERB_ALGO, "ask above dlv repo"); - vq->state = VAL_FINISHED_STATE; - return 1; - } - if(vq->dlv_insecure_at && !dname_subdomain_c(vq->dlv_lookup_name, - vq->dlv_insecure_at)) { - /* already checked a chain lower than dlv_lookup_name */ - verbose(VERB_ALGO, "ask above insecure endpoint"); - log_nametypeclass(VERB_ALGO, "enpt", vq->dlv_insecure_at, 0, 0); - vq->state = VAL_FINISHED_STATE; - return 1; - } - - /* check negative cache before making new request */ - if(val_neg_dlvlookup(ve->neg_cache, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, vq->qchase.qclass, - qstate->env->rrset_cache, *qstate->env->now)) { - /* does not exist, go up one (go higher). */ - dname_remove_label(&vq->dlv_lookup_name, - &vq->dlv_lookup_name_len); - /* limit number of labels, limited number of recursion */ - return processDLVLookup(qstate, vq, ve, id); - } - - if(!generate_request(qstate, id, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0, &newq, 0)) { - return val_error(qstate, id); - } - - return 0; -} - /** * Handle validator state. * If a method returns true, the next state is started. If false, then @@ -2464,9 +2196,6 @@ val_handle(struct module_qstate* qstate, struct val_qstate* vq, case VAL_FINISHED_STATE: cont = processFinished(qstate, vq, ve, id); break; - case VAL_DLVLOOKUP_STATE: - cont = processDLVLookup(qstate, vq, ve, id); - break; default: log_warn("validator: invalid state %d", vq->state); @@ -3105,99 +2834,6 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, /* the qstate will be reactivated after inform_super is done */ } -/** - * Process DLV response. Called from inform_supers. - * Because it is in inform_supers, the mesh itself is busy doing callbacks - * for a state that is to be deleted soon; don't touch the mesh; instead - * set a state in the super, as the super will be reactivated soon. - * Perform processing to determine what state to set in the super. - * - * @param qstate: query state that is validating and asked for a DLV. - * @param vq: validator query state - * @param id: module id. - * @param rcode: rcode result value. - * @param msg: result message (if rcode is OK). - * @param qinfo: from the sub query state, query info. - */ -static void -process_dlv_response(struct module_qstate* qstate, struct val_qstate* vq, - int id, int rcode, struct dns_msg* msg, struct query_info* qinfo) -{ - struct val_env* ve = (struct val_env*)qstate->env->modinfo[id]; - - verbose(VERB_ALGO, "process dlv response to super"); - if(rcode != LDNS_RCODE_NOERROR) { - /* lookup failed, set in vq to give up */ - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "response is error"); - return; - } - if(msg->rep->security != sec_status_secure) { - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "response is not secure, %s", - sec_status_to_string(msg->rep->security)); - return; - } - /* was the lookup a success? validated DLV? */ - if(FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_NOERROR && - msg->rep->an_numrrsets == 1 && - msg->rep->security == sec_status_secure && - ntohs(msg->rep->rrsets[0]->rk.type) == LDNS_RR_TYPE_DLV && - ntohs(msg->rep->rrsets[0]->rk.rrset_class) == qinfo->qclass && - query_dname_compare(msg->rep->rrsets[0]->rk.dname, - vq->dlv_lookup_name) == 0) { - /* yay! it is just like a DS */ - vq->ds_rrset = (struct ub_packed_rrset_key*) - regional_alloc_init(qstate->region, - msg->rep->rrsets[0], sizeof(*vq->ds_rrset)); - if(!vq->ds_rrset) { - log_err("out of memory in process_dlv"); - return; - } - vq->ds_rrset->entry.key = vq->ds_rrset; - vq->ds_rrset->rk.dname = (uint8_t*)regional_alloc_init( - qstate->region, vq->ds_rrset->rk.dname, - vq->ds_rrset->rk.dname_len); - if(!vq->ds_rrset->rk.dname) { - log_err("out of memory in process_dlv"); - vq->dlv_status = dlv_error; - return; - } - vq->ds_rrset->entry.data = regional_alloc_init(qstate->region, - vq->ds_rrset->entry.data, - packed_rrset_sizeof(vq->ds_rrset->entry.data)); - if(!vq->ds_rrset->entry.data) { - log_err("out of memory in process_dlv"); - vq->dlv_status = dlv_error; - return; - } - packed_rrset_ptr_fixup(vq->ds_rrset->entry.data); - /* make vq do a DNSKEY query next up */ - vq->dlv_status = dlv_success; - return; - } - /* store NSECs into negative cache */ - val_neg_addreply(ve->neg_cache, msg->rep); - - /* was the lookup a failure? - * if we have to go up into the DLV for a higher DLV anchor - * then set this in the vq, so it can make queries when activated. - * See if the NSECs indicate that we should look for higher DLV - * or, that there is no DLV securely */ - if(!val_nsec_check_dlv(qinfo, msg->rep, &vq->dlv_lookup_name, - &vq->dlv_lookup_name_len)) { - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "nsec error"); - return; - } - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - vq->dlv_status = dlv_there_is_no_dlv; - return; - } - vq->dlv_status = dlv_ask_higher; -} - /* * inform validator super. * @@ -3233,10 +2869,6 @@ val_inform_super(struct module_qstate* qstate, int id, qstate->return_msg, &qstate->qinfo, qstate->reply_origin); return; - } else if(qstate->qinfo.qtype == LDNS_RR_TYPE_DLV) { - process_dlv_response(super, vq, id, qstate->return_rcode, - qstate->return_msg, &qstate->qinfo); - return; } log_err("internal error in validator: no inform_supers possible"); } @@ -3284,7 +2916,6 @@ val_state_to_string(enum val_state state) case VAL_FINDKEY_STATE: return "VAL_FINDKEY_STATE"; case VAL_VALIDATE_STATE: return "VAL_VALIDATE_STATE"; case VAL_FINISHED_STATE: return "VAL_FINISHED_STATE"; - case VAL_DLVLOOKUP_STATE: return "VAL_DLVLOOKUP_STATE"; } return "UNKNOWN VALIDATOR STATE"; } From 764a0dc765c96310c611bde80c14893b0814163d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 4 Aug 2020 12:49:43 +0200 Subject: [PATCH 159/394] - Improve error log message when inserting rpz RR. --- doc/Changelog | 3 +++ services/rpz.c | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9638d242f..f673908c3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 August 2020: George + - Improve error log message when inserting rpz RR. + 4 August 2020: Wouter - Fix mini_event.h on OpenBSD cannot find fd_set. diff --git a/services/rpz.c b/services/rpz.c index 105f238d0..ba5dd186d 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -597,8 +597,18 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, uint8_t* policydname; if(!dname_subdomain_c(dname, azname)) { - log_err("RPZ: name of record to insert into RPZ is not a " - "subdomain of the configured name of the RPZ zone"); + char* dname_str = sldns_wire2str_dname(dname, dnamelen); + char* azname_str = sldns_wire2str_dname(azname, aznamelen); + if(dname_str && azname_str) { + log_err("RPZ: name of record (%s) to insert into RPZ is not a " + "subdomain of the configured name of the RPZ zone (%s)", + dname_str, azname_str); + } else { + log_err("RPZ: name of record to insert into RPZ is not a " + "subdomain of the configured name of the RPZ zone"); + } + free(dname_str); + free(azname_str); return 0; } From dd59521e520cf82a15c3496f607009a20540c793 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 17:17:48 +0200 Subject: [PATCH 160/394] dlv removal, remove from comments and unused code in iterator and validator --- iterator/iterator.c | 2 +- validator/validator.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 23b07ea90..99d020117 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3191,7 +3191,7 @@ processPrimeResponse(struct module_qstate* qstate, int id) /* validate the root or stub after priming (if enabled). * This is the same query as the prime query, but with validation. * Now that we are primed, the additional queries that validation - * may need can be resolved, such as DLV. */ + * may need can be resolved. */ if(qstate->env->cfg->harden_referral_path) { struct module_qstate* subq = NULL; log_nametypeclass(VERB_ALGO, "schedule prime validation", diff --git a/validator/validator.c b/validator/validator.c index ab0698012..e12180b4b 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -390,10 +390,8 @@ generate_request(struct module_qstate* qstate, int id, uint8_t* name, ask.local_alias = NULL; log_query_info(VERB_ALGO, "generate request", &ask); /* enable valrec flag to avoid recursion to the same validation - * routine, this lookup is simply a lookup. DLVs need validation */ - if(qtype == LDNS_RR_TYPE_DLV) - valrec = 0; - else valrec = 1; + * routine, this lookup is simply a lookup. */ + valrec = 1; fptr_ok(fptr_whitelist_modenv_detect_cycle(qstate->env->detect_cycle)); if((*qstate->env->detect_cycle)(qstate, &ask, @@ -1585,7 +1583,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, vq->key_entry = key_cache_obtain(ve->kcache, lookup_name, lookup_len, vq->qchase.qclass, qstate->region, *qstate->env->now); - /* there is no key(from DLV) and no trust anchor */ + /* there is no key and no trust anchor */ if(vq->key_entry == NULL && anchor == NULL) { /*response isn't under a trust anchor, so we cannot validate.*/ vq->chase_reply->security = sec_status_indeterminate; @@ -1678,9 +1676,8 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) /* We know that state.key_entry is not 0 or bad key -- if it were, * then previous processing should have directed this event to * a different state. - * It could be an isnull key, which signals that a DLV was just - * done and the DNSKEY after the DLV failed with dnssec-retry state - * and the DNSKEY has to be performed again. */ + * It could be an isnull key, which signals the DNSKEY failed + * with retry and has to be looked up again. */ log_assert(vq->key_entry && !key_entry_isbad(vq->key_entry)); if(key_entry_isnull(vq->key_entry)) { if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, From 8f2b9b461b53e191e625fac7497f236b59e8068a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Aug 2020 10:25:56 +0200 Subject: [PATCH 161/394] dlv removal, remove DLV references from man page and pythonmod interface. --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- pythonmod/interface.i | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 03d22d381..5ed15397e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -622,7 +622,7 @@ server: # more slabs reduce lock contention, but fragment memory usage. # key-cache-slabs: 4 - # the amount of memory to use for the negative cache (used for DLV). + # the amount of memory to use for the negative cache. # plain value in bytes or you can append k, m or G. default is "1Mb". # neg-cache-size: 1m diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 23895d808..7acb54b06 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1014,7 +1014,7 @@ Root key trust anchor sentinel. Default is yes. Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the domain secure with a DS record, such a DS record is then ignored. -Also keys from DLV are ignored for the domain. Can be given multiple times +Can be given multiple times to specify multiple domains that are treated as if unsigned. If you set trust anchors for the domain they override this setting (and the domain is secured). diff --git a/pythonmod/interface.i b/pythonmod/interface.i index f08b575d7..71f2bf774 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -992,8 +992,6 @@ struct config_file { struct config_strlist* trust_anchor_file_list; struct config_strlist* trust_anchor_list; struct config_strlist* trusted_keys_file_list; - char* dlv_anchor_file; - struct config_strlist* dlv_anchor_list; int max_ttl; int32_t val_date_override; int bogus_ttl; From 70c8d09edd5f7009988160defe901158eb1cb463 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 5 Aug 2020 15:56:45 +0200 Subject: [PATCH 162/394] - Process EDNS client tag review feedback --- util/edns.h | 2 +- util/module.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/util/edns.h b/util/edns.h index ee0e3de54..c92b1ba5e 100644 --- a/util/edns.h +++ b/util/edns.h @@ -77,7 +77,7 @@ struct edns_tag_addr { */ struct edns_tags* edns_tags_create(void); -/** Delete ENDS tags structure +/** Delete EDNS tags structure * @param edns_tags: struct to delete */ void edns_tags_delete(struct edns_tags* edns_tags); diff --git a/util/module.h b/util/module.h index 1d696ed0a..1eed21300 100644 --- a/util/module.h +++ b/util/module.h @@ -520,6 +520,7 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; + /** EDNS client tag information */ struct edns_tags* edns_tags; /* Make every mesh state unique, do not aggregate mesh states. */ From ce0b39007de4c4cf8203b7bfcc9b48541bb22d26 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 5 Aug 2020 16:10:10 +0200 Subject: [PATCH 163/394] - Changelog entry for EDNS client tag functionality --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4dd1f15e6..9cd6df49f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 August 2020: Ralph + - Merge PR #272: Add EDNS client tag functionality. + 4 August 2020: George - Improve error log message when inserting rpz RR. - Merge PR #280, Make tvOS & watchOS checks verify truthiness as well as From 50091d49eae537f6fd328e852bc5818193633164 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Aug 2020 16:33:48 +0200 Subject: [PATCH 164/394] - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. --- contrib/aaaa-filter-iterator.patch | 164 ++++++++++++++--------------- doc/Changelog | 4 + 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index 9881bde89..f51de2a40 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -1,10 +1,10 @@ -Index: trunk/doc/unbound.conf.5.in -=================================================================== ---- trunk/doc/unbound.conf.5.in (revision 4357) -+++ trunk/doc/unbound.conf.5.in (working copy) -@@ -701,6 +701,13 @@ +diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in +index f426ac5f..147fbfa9 100644 +--- a/doc/unbound.conf.5.in ++++ b/doc/unbound.conf.5.in +@@ -872,6 +872,13 @@ potentially broken nameservers. A lot of domains will not be resolvable when this option in enabled. Only use if you know what you are doing. - This option only has effect when qname-minimisation is enabled. Default is off. + This option only has effect when qname-minimisation is enabled. Default is no. .TP +.B aaaa\-filter: \fI +Activate behavior similar to BIND's AAAA-filter. @@ -16,14 +16,15 @@ Index: trunk/doc/unbound.conf.5.in .B aggressive\-nsec: \fI Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN and other denials, using information from previous NXDOMAINs answers. -Index: trunk/iterator/iter_scrub.c -=================================================================== ---- trunk/iterator/iter_scrub.c (revision 4357) -+++ trunk/iterator/iter_scrub.c (working copy) -@@ -617,6 +617,32 @@ +diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c +index aae934dd..55c55de0 100644 +--- a/iterator/iter_scrub.c ++++ b/iterator/iter_scrub.c +@@ -667,6 +667,32 @@ static int sanitize_nsec_is_overreach(struct rrset_parse* rrset, + return 0; } - /** ++/** + * ASN: Lookup A records from rrset cache. + * @param qinfo: the question originally asked. + * @param env: module environment with config and cache. @@ -49,11 +50,10 @@ Index: trunk/iterator/iter_scrub.c + return 0; +} + -+/** + /** * Given a response event, remove suspect RRsets from the response. * "Suspect" rrsets are potentially poison. Note that this routine expects - * the response to be in a "normalized" state -- that is, all "irrelevant" -@@ -635,6 +661,7 @@ +@@ -686,6 +712,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, struct query_info* qinfo, uint8_t* zonename, struct module_env* env, struct iter_env* ie) { @@ -61,7 +61,7 @@ Index: trunk/iterator/iter_scrub.c int del_addi = 0; /* if additional-holding rrsets are deleted, we do not trust the normalized additional-A-AAAA any more */ struct rrset_parse* rrset, *prev; -@@ -670,6 +697,13 @@ +@@ -721,6 +748,13 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = rrset->rrset_all_next; } @@ -75,11 +75,10 @@ Index: trunk/iterator/iter_scrub.c /* At this point, we brutally remove ALL rrsets that aren't * children of the originating zone. The idea here is that, * as far as we know, the server that we contacted is ONLY -@@ -680,6 +714,24 @@ - prev = NULL; +@@ -732,6 +766,24 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = msg->rrset_first; while(rrset) { -+ + + /* ASN: For AAAA records only... */ + if((ie->aaaa_filter) && (rrset->type == LDNS_RR_TYPE_AAAA)) { + /* ASN: If this is not a AAAA query, then remove AAAA @@ -97,14 +96,15 @@ Index: trunk/iterator/iter_scrub.c + LDNS_RR_TYPE_AAAA, qinfo->qclass); + } + /* ASN: End of added code */ - ++ /* remove private addresses */ if( (rrset->type == LDNS_RR_TYPE_A || -Index: trunk/iterator/iter_utils.c -=================================================================== ---- trunk/iterator/iter_utils.c (revision 4357) -+++ trunk/iterator/iter_utils.c (working copy) -@@ -175,6 +175,7 @@ + rrset->type == LDNS_RR_TYPE_AAAA)) { +diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c +index 7bc67da6..e10f547a 100644 +--- a/iterator/iter_utils.c ++++ b/iterator/iter_utils.c +@@ -175,6 +175,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; @@ -112,11 +112,11 @@ Index: trunk/iterator/iter_utils.c return 1; } -Index: trunk/iterator/iterator.c -=================================================================== ---- trunk/iterator/iterator.c (revision 4357) -+++ trunk/iterator/iterator.c (working copy) -@@ -1847,6 +1847,53 @@ +diff --git a/iterator/iterator.c b/iterator/iterator.c +index 23b07ea9..ca29b48c 100644 +--- a/iterator/iterator.c ++++ b/iterator/iterator.c +@@ -2127,6 +2127,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) return 0; } @@ -170,7 +170,7 @@ Index: trunk/iterator/iterator.c /** * This is the request event state where the request will be sent to one of -@@ -1894,6 +1941,13 @@ +@@ -2186,6 +2233,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -184,7 +184,7 @@ Index: trunk/iterator/iterator.c /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ if(!iq->dp) { -@@ -3095,6 +3149,61 @@ +@@ -3574,6 +3628,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } @@ -246,7 +246,7 @@ Index: trunk/iterator/iterator.c /* * Return priming query results to interested super querystates. * -@@ -3114,6 +3223,9 @@ +@@ -3593,6 +3702,9 @@ iter_inform_super(struct module_qstate* qstate, int id, else if(super->qinfo.qtype == LDNS_RR_TYPE_DS && ((struct iter_qstate*) super->minfo[id])->state == DSNS_FIND_STATE) processDSNSResponse(qstate, id, super); @@ -256,7 +256,7 @@ Index: trunk/iterator/iterator.c else if(qstate->return_rcode != LDNS_RCODE_NOERROR) error_supers(qstate, id, super); else if(qstate->is_priming) -@@ -3151,6 +3263,9 @@ +@@ -3630,6 +3742,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, case INIT_REQUEST_3_STATE: cont = processInitRequest3(qstate, iq, id); break; @@ -266,7 +266,7 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE: cont = processQueryTargets(qstate, iq, ie, id); break; -@@ -3460,6 +3575,8 @@ +@@ -3961,6 +4076,8 @@ iter_state_to_string(enum iter_state state) return "INIT REQUEST STATE (stage 2)"; case INIT_REQUEST_3_STATE: return "INIT REQUEST STATE (stage 3)"; @@ -275,7 +275,7 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE : return "QUERY TARGETS STATE"; case PRIME_RESP_STATE : -@@ -3484,6 +3601,7 @@ +@@ -3985,6 +4102,7 @@ iter_state_is_responsestate(enum iter_state s) case INIT_REQUEST_STATE : case INIT_REQUEST_2_STATE : case INIT_REQUEST_3_STATE : @@ -283,11 +283,11 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE : case COLLECT_CLASS_STATE : return 0; -Index: trunk/iterator/iterator.h -=================================================================== ---- trunk/iterator/iterator.h (revision 4357) -+++ trunk/iterator/iterator.h (working copy) -@@ -130,6 +130,9 @@ +diff --git a/iterator/iterator.h b/iterator/iterator.h +index 342ac207..731948d1 100644 +--- a/iterator/iterator.h ++++ b/iterator/iterator.h +@@ -135,6 +135,9 @@ struct iter_env { */ int* target_fetch_policy; @@ -297,10 +297,11 @@ Index: trunk/iterator/iterator.h /** lock on ratelimit counter */ lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ -@@ -182,6 +185,14 @@ +@@ -186,6 +189,14 @@ enum iter_state { + */ INIT_REQUEST_3_STATE, - /** ++ /** + * This state is responsible for intercepting AAAA queries, + * and launch a A subquery on the same target, to populate the + * cache with A records, so the AAAA filter scrubbing logic can @@ -308,29 +309,28 @@ Index: trunk/iterator/iterator.h + */ + ASN_FETCH_A_FOR_AAAA_STATE, + -+ /** + /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. - * This state is responsible for iterating through a list of -@@ -364,6 +375,13 @@ - * be used when creating the state. A higher one will be attempted. +@@ -375,6 +386,13 @@ struct iter_qstate { */ int refetch_glue; -+ + + /** + * ASN: This is a flag that, if true, means that this query is + * for fetching A records to populate cache and determine if we must + * return AAAA records or not. + */ + int fetch_a_for_aaaa; - ++ /** list of pending queries to authoritative servers. */ struct outbound_list outlist; -Index: trunk/pythonmod/interface.i -=================================================================== ---- trunk/pythonmod/interface.i (revision 4357) -+++ trunk/pythonmod/interface.i (working copy) -@@ -851,6 +851,7 @@ + +diff --git a/pythonmod/interface.i b/pythonmod/interface.i +index f08b575d..47f1bb2e 100644 +--- a/pythonmod/interface.i ++++ b/pythonmod/interface.i +@@ -975,6 +975,7 @@ struct config_file { int harden_dnssec_stripped; int harden_referral_path; int use_caps_bits_for_id; @@ -338,11 +338,11 @@ Index: trunk/pythonmod/interface.i struct config_strlist* private_address; struct config_strlist* private_domain; size_t unwanted_threshold; -Index: trunk/util/config_file.c -=================================================================== ---- trunk/util/config_file.c (revision 4357) -+++ trunk/util/config_file.c (working copy) -@@ -195,6 +195,7 @@ +diff --git a/util/config_file.c b/util/config_file.c +index 0ab8614a..729fb147 100644 +--- a/util/config_file.c ++++ b/util/config_file.c +@@ -218,6 +218,7 @@ config_create(void) cfg->harden_referral_path = 0; cfg->harden_algo_downgrade = 0; cfg->use_caps_bits_for_id = 0; @@ -350,11 +350,11 @@ Index: trunk/util/config_file.c cfg->caps_whitelist = NULL; cfg->private_address = NULL; cfg->private_domain = NULL; -Index: trunk/util/config_file.h -=================================================================== ---- trunk/util/config_file.h (revision 4357) -+++ trunk/util/config_file.h (working copy) -@@ -209,6 +209,8 @@ +diff --git a/util/config_file.h b/util/config_file.h +index e61257a3..dabaa7bb 100644 +--- a/util/config_file.h ++++ b/util/config_file.h +@@ -260,6 +260,8 @@ struct config_file { int harden_algo_downgrade; /** use 0x20 bits in query as random ID bits */ int use_caps_bits_for_id; @@ -363,11 +363,11 @@ Index: trunk/util/config_file.h /** 0x20 whitelist, domains that do not use capsforid */ struct config_strlist* caps_whitelist; /** strip away these private addrs from answers, no DNS Rebinding */ -Index: trunk/util/configlexer.lex -=================================================================== ---- trunk/util/configlexer.lex (revision 4357) -+++ trunk/util/configlexer.lex (working copy) -@@ -279,6 +279,7 @@ +diff --git a/util/configlexer.lex b/util/configlexer.lex +index 79a0edca..4eaec678 100644 +--- a/util/configlexer.lex ++++ b/util/configlexer.lex +@@ -304,6 +304,7 @@ harden-algo-downgrade{COLON} { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } @@ -375,11 +375,11 @@ Index: trunk/util/configlexer.lex private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } prefetch-key{COLON} { YDVAR(1, VAR_PREFETCH_KEY) } -Index: trunk/util/configparser.y -=================================================================== ---- trunk/util/configparser.y (revision 4357) -+++ trunk/util/configparser.y (working copy) -@@ -95,6 +95,7 @@ +diff --git a/util/configparser.y b/util/configparser.y +index 1d0e8658..f284dd43 100644 +--- a/util/configparser.y ++++ b/util/configparser.y +@@ -97,6 +97,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT %token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %token VAR_NEG_CACHE_SIZE VAR_HARDEN_REFERRAL_PATH VAR_PRIVATE_ADDRESS @@ -387,7 +387,7 @@ Index: trunk/util/configparser.y %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -@@ -203,6 +204,7 @@ +@@ -233,6 +234,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | server_private_domain | server_extended_statistics | @@ -395,12 +395,10 @@ Index: trunk/util/configparser.y server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | -@@ -1183,6 +1185,15 @@ - OUTYY(("P(server_caps_whitelist:%s)\n", $2)); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2)) +@@ -1563,6 +1565,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG yyerror("out of memory"); -+ } -+ ; + } + ; +server_aaaa_filter: VAR_AAAA_FILTER STRING_ARG + { + OUTYY(("P(server_aaaa_filter:%s)\n", $2)); @@ -408,6 +406,8 @@ Index: trunk/util/configparser.y + yyerror("expected yes or no."); + else cfg_parser->cfg->aaaa_filter = (strcmp($2, "yes")==0); + free($2); - } - ; ++ } ++ ; server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG + { + OUTYY(("P(server_private_address:%s)\n", $2)); diff --git a/doc/Changelog b/doc/Changelog index 9cd6df49f..763bf51a6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +5 August 2020: Wouter + - contrib/aaaa-filter-iterator.patch file renewed diff content to + apply cleanly to the current coderepo for the current code version. + 5 August 2020: Ralph - Merge PR #272: Add EDNS client tag functionality. From 4ec55910c4ba9b40c95b80c83da8dab33cff3ecf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 08:14:14 +0200 Subject: [PATCH 165/394] dlv removal, free unused variable. --- util/configparser.c | 904 ++++++++++++++++++++++---------------------- util/configparser.y | 2 + 2 files changed, 455 insertions(+), 451 deletions(-) diff --git a/util/configparser.c b/util/configparser.c index 5f8c70bd0..63badad61 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1092,34 +1092,34 @@ static const yytype_uint16 yyrline[] = 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1126, 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, - 1210, 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, - 1301, 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, - 1401, 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, - 1497, 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, - 1587, 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, - 1702, 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, - 1796, 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, - 1892, 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, - 2020, 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, - 2143, 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, - 2264, 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, - 2364, 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, - 2466, 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, - 2549, 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, - 2677, 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, - 2695, 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, - 2758, 2763, 2764, 2765, 2765, 2765, 2766, 2766, 2766, 2767, - 2768, 2768, 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, - 2775, 2776, 2778, 2787, 2797, 2804, 2811, 2820, 2827, 2834, - 2841, 2848, 2857, 2866, 2873, 2880, 2890, 2900, 2910, 2920, - 2930, 2940, 2945, 2946, 2947, 2949, 2955, 2960, 2961, 2962, - 2964, 2970, 2980, 2987, 2996, 3004, 3009, 3010, 3012, 3012, - 3012, 3013, 3013, 3014, 3015, 3016, 3017, 3018, 3020, 3030, - 3039, 3046, 3055, 3062, 3071, 3079, 3092, 3100, 3113, 3118, - 3119, 3120, 3120, 3121, 3121, 3121, 3122, 3124, 3136, 3148, - 3160, 3175, 3188, 3201, 3212, 3217, 3218, 3219, 3219, 3221, - 3236 + 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, + 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, + 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, + 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, + 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, + 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, + 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, + 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, + 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, + 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, + 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, + 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, + 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, + 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, + 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, + 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, + 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, + 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, + 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, + 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, + 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, + 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, + 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, + 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, + 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, + 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, + 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, + 3238 }; #endif @@ -3772,64 +3772,66 @@ yyreduce: { 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 3777 "util/configparser.c" +#line 3778 "util/configparser.c" break; case 340: -#line 1127 "./util/configparser.y" +#line 1128 "./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 3786 "util/configparser.c" +#line 3788 "util/configparser.c" break; case 341: -#line 1133 "./util/configparser.y" +#line 1135 "./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 3797 "util/configparser.c" +#line 3799 "util/configparser.c" break; case 342: -#line 1141 "./util/configparser.y" +#line 1143 "./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 3808 "util/configparser.c" +#line 3810 "util/configparser.c" break; case 343: -#line 1149 "./util/configparser.y" +#line 1151 "./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 3819 "util/configparser.c" +#line 3821 "util/configparser.c" break; case 344: -#line 1157 "./util/configparser.y" +#line 1159 "./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 3829 "util/configparser.c" +#line 3831 "util/configparser.c" break; case 345: -#line 1164 "./util/configparser.y" +#line 1166 "./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) @@ -3839,11 +3841,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3843 "util/configparser.c" +#line 3845 "util/configparser.c" break; case 346: -#line 1175 "./util/configparser.y" +#line 1177 "./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) @@ -3853,21 +3855,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3859 "util/configparser.c" break; case 347: -#line 1186 "./util/configparser.y" +#line 1188 "./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 3867 "util/configparser.c" +#line 3869 "util/configparser.c" break; case 348: -#line 1193 "./util/configparser.y" +#line 1195 "./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) @@ -3875,11 +3877,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3879 "util/configparser.c" +#line 3881 "util/configparser.c" break; case 349: -#line 1202 "./util/configparser.y" +#line 1204 "./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) @@ -3887,11 +3889,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3891 "util/configparser.c" +#line 3893 "util/configparser.c" break; case 350: -#line 1211 "./util/configparser.y" +#line 1213 "./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) @@ -3899,53 +3901,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3905 "util/configparser.c" break; case 351: -#line 1220 "./util/configparser.y" +#line 1222 "./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 3913 "util/configparser.c" +#line 3915 "util/configparser.c" break; case 352: -#line 1227 "./util/configparser.y" +#line 1229 "./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 3923 "util/configparser.c" +#line 3925 "util/configparser.c" break; case 353: -#line 1234 "./util/configparser.y" +#line 1236 "./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 3934 "util/configparser.c" +#line 3936 "util/configparser.c" break; case 354: -#line 1242 "./util/configparser.y" +#line 1244 "./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 3945 "util/configparser.c" +#line 3947 "util/configparser.c" break; case 355: -#line 1250 "./util/configparser.y" +#line 1252 "./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) @@ -3954,11 +3956,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3958 "util/configparser.c" +#line 3960 "util/configparser.c" break; case 356: -#line 1260 "./util/configparser.y" +#line 1262 "./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) @@ -3967,11 +3969,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3973 "util/configparser.c" break; case 357: -#line 1270 "./util/configparser.y" +#line 1272 "./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) @@ -3980,11 +3982,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3984 "util/configparser.c" +#line 3986 "util/configparser.c" break; case 358: -#line 1280 "./util/configparser.y" +#line 1282 "./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) @@ -3997,22 +3999,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4003 "util/configparser.c" break; case 359: -#line 1294 "./util/configparser.y" +#line 1296 "./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 4012 "util/configparser.c" +#line 4014 "util/configparser.c" break; case 360: -#line 1302 "./util/configparser.y" +#line 1304 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4024,11 +4026,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 4030 "util/configparser.c" break; case 361: -#line 1315 "./util/configparser.y" +#line 1317 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4038,22 +4040,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4044 "util/configparser.c" break; case 362: -#line 1326 "./util/configparser.y" +#line 1328 "./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 4053 "util/configparser.c" +#line 4055 "util/configparser.c" break; case 363: -#line 1334 "./util/configparser.y" +#line 1336 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4065,11 +4067,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4069 "util/configparser.c" +#line 4071 "util/configparser.c" break; case 364: -#line 1347 "./util/configparser.y" +#line 1349 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4077,11 +4079,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4081 "util/configparser.c" +#line 4083 "util/configparser.c" break; case 365: -#line 1356 "./util/configparser.y" +#line 1358 "./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) @@ -4089,11 +4091,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4095 "util/configparser.c" break; case 366: -#line 1365 "./util/configparser.y" +#line 1367 "./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) @@ -4101,11 +4103,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4105 "util/configparser.c" +#line 4107 "util/configparser.c" break; case 367: -#line 1374 "./util/configparser.y" +#line 1376 "./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) @@ -4114,11 +4116,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4118 "util/configparser.c" +#line 4120 "util/configparser.c" break; case 368: -#line 1384 "./util/configparser.y" +#line 1386 "./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) @@ -4127,22 +4129,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4133 "util/configparser.c" break; case 369: -#line 1394 "./util/configparser.y" +#line 1396 "./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 4142 "util/configparser.c" +#line 4144 "util/configparser.c" break; case 370: -#line 1402 "./util/configparser.y" +#line 1404 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4154,11 +4156,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" +#line 4160 "util/configparser.c" break; case 371: -#line 1415 "./util/configparser.y" +#line 1417 "./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) @@ -4166,22 +4168,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4170 "util/configparser.c" +#line 4172 "util/configparser.c" break; case 372: -#line 1424 "./util/configparser.y" +#line 1426 "./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 4181 "util/configparser.c" +#line 4183 "util/configparser.c" break; case 373: -#line 1432 "./util/configparser.y" +#line 1434 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4189,22 +4191,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4195 "util/configparser.c" break; case 374: -#line 1441 "./util/configparser.y" +#line 1443 "./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 4204 "util/configparser.c" +#line 4206 "util/configparser.c" break; case 375: -#line 1449 "./util/configparser.y" +#line 1451 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4216,11 +4218,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4220 "util/configparser.c" +#line 4222 "util/configparser.c" break; case 376: -#line 1462 "./util/configparser.y" +#line 1464 "./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) @@ -4228,21 +4230,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4232 "util/configparser.c" +#line 4234 "util/configparser.c" break; case 377: -#line 1471 "./util/configparser.y" +#line 1473 "./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 4242 "util/configparser.c" +#line 4244 "util/configparser.c" break; case 378: -#line 1478 "./util/configparser.y" +#line 1480 "./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) @@ -4251,11 +4253,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4255 "util/configparser.c" +#line 4257 "util/configparser.c" break; case 379: -#line 1488 "./util/configparser.y" +#line 1490 "./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) @@ -4264,11 +4266,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4268 "util/configparser.c" +#line 4270 "util/configparser.c" break; case 380: -#line 1498 "./util/configparser.y" +#line 1500 "./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) @@ -4277,11 +4279,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4281 "util/configparser.c" +#line 4283 "util/configparser.c" break; case 381: -#line 1508 "./util/configparser.y" +#line 1510 "./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) @@ -4290,11 +4292,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4294 "util/configparser.c" +#line 4296 "util/configparser.c" break; case 382: -#line 1518 "./util/configparser.y" +#line 1520 "./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) @@ -4303,11 +4305,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4307 "util/configparser.c" +#line 4309 "util/configparser.c" break; case 383: -#line 1528 "./util/configparser.y" +#line 1530 "./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) @@ -4316,11 +4318,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 4322 "util/configparser.c" break; case 384: -#line 1538 "./util/configparser.y" +#line 1540 "./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) @@ -4329,11 +4331,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 4335 "util/configparser.c" break; case 385: -#line 1548 "./util/configparser.y" +#line 1550 "./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) @@ -4342,41 +4344,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4346 "util/configparser.c" +#line 4348 "util/configparser.c" break; case 386: -#line 1558 "./util/configparser.y" +#line 1560 "./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 4356 "util/configparser.c" +#line 4358 "util/configparser.c" break; case 387: -#line 1565 "./util/configparser.y" +#line 1567 "./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 4366 "util/configparser.c" +#line 4368 "util/configparser.c" break; case 388: -#line 1572 "./util/configparser.y" +#line 1574 "./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 4376 "util/configparser.c" +#line 4378 "util/configparser.c" break; case 389: -#line 1579 "./util/configparser.y" +#line 1581 "./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) @@ -4384,11 +4386,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4388 "util/configparser.c" +#line 4390 "util/configparser.c" break; case 390: -#line 1588 "./util/configparser.y" +#line 1590 "./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) @@ -4396,11 +4398,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4400 "util/configparser.c" +#line 4402 "util/configparser.c" break; case 391: -#line 1597 "./util/configparser.y" +#line 1599 "./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) @@ -4408,11 +4410,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 392: -#line 1606 "./util/configparser.y" +#line 1608 "./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) @@ -4420,21 +4422,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4424 "util/configparser.c" +#line 4426 "util/configparser.c" break; case 393: -#line 1615 "./util/configparser.y" +#line 1617 "./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 4434 "util/configparser.c" +#line 4436 "util/configparser.c" break; case 394: -#line 1622 "./util/configparser.y" +#line 1624 "./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) @@ -4443,11 +4445,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4447 "util/configparser.c" +#line 4449 "util/configparser.c" break; case 395: -#line 1632 "./util/configparser.y" +#line 1634 "./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 && @@ -4466,21 +4468,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4470 "util/configparser.c" +#line 4472 "util/configparser.c" break; case 396: -#line 1652 "./util/configparser.y" +#line 1654 "./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 4480 "util/configparser.c" +#line 4482 "util/configparser.c" break; case 397: -#line 1659 "./util/configparser.y" +#line 1661 "./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) { @@ -4497,11 +4499,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4501 "util/configparser.c" +#line 4503 "util/configparser.c" break; case 398: -#line 1677 "./util/configparser.y" +#line 1679 "./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) { @@ -4513,11 +4515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" +#line 4519 "util/configparser.c" break; case 399: -#line 1690 "./util/configparser.y" +#line 1692 "./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) { @@ -4529,11 +4531,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4533 "util/configparser.c" +#line 4535 "util/configparser.c" break; case 400: -#line 1703 "./util/configparser.y" +#line 1705 "./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) @@ -4541,11 +4543,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4545 "util/configparser.c" +#line 4547 "util/configparser.c" break; case 401: -#line 1712 "./util/configparser.y" +#line 1714 "./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) @@ -4553,11 +4555,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4557 "util/configparser.c" +#line 4559 "util/configparser.c" break; case 402: -#line 1721 "./util/configparser.y" +#line 1723 "./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) @@ -4565,11 +4567,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4569 "util/configparser.c" +#line 4571 "util/configparser.c" break; case 403: -#line 1730 "./util/configparser.y" +#line 1732 "./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) @@ -4577,11 +4579,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 4583 "util/configparser.c" break; case 404: -#line 1739 "./util/configparser.y" +#line 1741 "./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) @@ -4590,11 +4592,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4596 "util/configparser.c" break; case 405: -#line 1749 "./util/configparser.y" +#line 1751 "./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) @@ -4603,11 +4605,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4607 "util/configparser.c" +#line 4609 "util/configparser.c" break; case 406: -#line 1759 "./util/configparser.y" +#line 1761 "./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) @@ -4617,11 +4619,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4623 "util/configparser.c" break; case 407: -#line 1770 "./util/configparser.y" +#line 1772 "./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) @@ -4629,11 +4631,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4635 "util/configparser.c" break; case 408: -#line 1779 "./util/configparser.y" +#line 1781 "./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) @@ -4641,11 +4643,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4645 "util/configparser.c" +#line 4647 "util/configparser.c" break; case 409: -#line 1788 "./util/configparser.y" +#line 1790 "./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) @@ -4653,11 +4655,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4657 "util/configparser.c" +#line 4659 "util/configparser.c" break; case 410: -#line 1797 "./util/configparser.y" +#line 1799 "./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) @@ -4665,11 +4667,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4669 "util/configparser.c" +#line 4671 "util/configparser.c" break; case 411: -#line 1806 "./util/configparser.y" +#line 1808 "./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) @@ -4677,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4681 "util/configparser.c" +#line 4683 "util/configparser.c" break; case 412: -#line 1815 "./util/configparser.y" +#line 1817 "./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) @@ -4689,11 +4691,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4693 "util/configparser.c" +#line 4695 "util/configparser.c" break; case 413: -#line 1824 "./util/configparser.y" +#line 1826 "./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) @@ -4705,11 +4707,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4709 "util/configparser.c" +#line 4711 "util/configparser.c" break; case 414: -#line 1837 "./util/configparser.y" +#line 1839 "./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) @@ -4721,11 +4723,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 415: -#line 1850 "./util/configparser.y" +#line 1852 "./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) @@ -4733,21 +4735,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4739 "util/configparser.c" break; case 416: -#line 1859 "./util/configparser.y" +#line 1861 "./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 4747 "util/configparser.c" +#line 4749 "util/configparser.c" break; case 417: -#line 1866 "./util/configparser.y" +#line 1868 "./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) @@ -4755,11 +4757,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4759 "util/configparser.c" +#line 4761 "util/configparser.c" break; case 418: -#line 1875 "./util/configparser.y" +#line 1877 "./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) @@ -4767,11 +4769,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4771 "util/configparser.c" +#line 4773 "util/configparser.c" break; case 419: -#line 1884 "./util/configparser.y" +#line 1886 "./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) @@ -4779,11 +4781,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4783 "util/configparser.c" +#line 4785 "util/configparser.c" break; case 420: -#line 1893 "./util/configparser.y" +#line 1895 "./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) @@ -4792,22 +4794,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4798 "util/configparser.c" break; case 421: -#line 1902 "./util/configparser.y" +#line 1904 "./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 4807 "util/configparser.c" +#line 4809 "util/configparser.c" break; case 422: -#line 1910 "./util/configparser.y" +#line 1912 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4819,22 +4821,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4823 "util/configparser.c" +#line 4825 "util/configparser.c" break; case 423: -#line 1923 "./util/configparser.y" +#line 1925 "./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 4834 "util/configparser.c" +#line 4836 "util/configparser.c" break; case 424: -#line 1931 "./util/configparser.y" +#line 1933 "./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 && @@ -4874,21 +4876,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4878 "util/configparser.c" +#line 4880 "util/configparser.c" break; case 425: -#line 1972 "./util/configparser.y" +#line 1974 "./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 4888 "util/configparser.c" +#line 4890 "util/configparser.c" break; case 426: -#line 1979 "./util/configparser.y" +#line 1981 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4902,11 +4904,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4906 "util/configparser.c" +#line 4908 "util/configparser.c" break; case 427: -#line 1994 "./util/configparser.y" +#line 1996 "./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) @@ -4915,11 +4917,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" +#line 4921 "util/configparser.c" break; case 428: -#line 2004 "./util/configparser.y" +#line 2006 "./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) @@ -4928,41 +4930,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4934 "util/configparser.c" break; case 429: -#line 2014 "./util/configparser.y" +#line 2016 "./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 4942 "util/configparser.c" +#line 4944 "util/configparser.c" break; case 430: -#line 2021 "./util/configparser.y" +#line 2023 "./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 4952 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 431: -#line 2028 "./util/configparser.y" +#line 2030 "./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 4962 "util/configparser.c" +#line 4964 "util/configparser.c" break; case 432: -#line 2035 "./util/configparser.y" +#line 2037 "./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) @@ -4970,22 +4972,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4974 "util/configparser.c" +#line 4976 "util/configparser.c" break; case 433: -#line 2044 "./util/configparser.y" +#line 2046 "./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 4985 "util/configparser.c" +#line 4987 "util/configparser.c" break; case 434: -#line 2052 "./util/configparser.y" +#line 2054 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4998,11 +5000,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5002 "util/configparser.c" +#line 5004 "util/configparser.c" break; case 435: -#line 2066 "./util/configparser.y" +#line 2068 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5022,11 +5024,11 @@ yyreduce: } } } -#line 5026 "util/configparser.c" +#line 5028 "util/configparser.c" break; case 436: -#line 2087 "./util/configparser.y" +#line 2089 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5046,11 +5048,11 @@ yyreduce: } } } -#line 5050 "util/configparser.c" +#line 5052 "util/configparser.c" break; case 437: -#line 2108 "./util/configparser.y" +#line 2110 "./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, @@ -5061,11 +5063,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5065 "util/configparser.c" +#line 5067 "util/configparser.c" break; case 438: -#line 2120 "./util/configparser.y" +#line 2122 "./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, @@ -5076,11 +5078,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5080 "util/configparser.c" +#line 5082 "util/configparser.c" break; case 439: -#line 2132 "./util/configparser.y" +#line 2134 "./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, @@ -5091,11 +5093,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5095 "util/configparser.c" +#line 5097 "util/configparser.c" break; case 440: -#line 2144 "./util/configparser.y" +#line 2146 "./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, @@ -5103,11 +5105,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5107 "util/configparser.c" +#line 5109 "util/configparser.c" break; case 441: -#line 2153 "./util/configparser.y" +#line 2155 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5127,11 +5129,11 @@ yyreduce: } } } -#line 5131 "util/configparser.c" +#line 5133 "util/configparser.c" break; case 442: -#line 2174 "./util/configparser.y" +#line 2176 "./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) @@ -5139,11 +5141,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5143 "util/configparser.c" +#line 5145 "util/configparser.c" break; case 443: -#line 2184 "./util/configparser.y" +#line 2186 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5151,33 +5153,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5155 "util/configparser.c" +#line 5157 "util/configparser.c" break; case 444: -#line 2193 "./util/configparser.y" +#line 2195 "./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 5166 "util/configparser.c" +#line 5168 "util/configparser.c" break; case 445: -#line 2201 "./util/configparser.y" +#line 2203 "./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 5177 "util/configparser.c" +#line 5179 "util/configparser.c" break; case 446: -#line 2209 "./util/configparser.y" +#line 2211 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5189,11 +5191,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5193 "util/configparser.c" +#line 5195 "util/configparser.c" break; case 447: -#line 2222 "./util/configparser.y" +#line 2224 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5205,11 +5207,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5209 "util/configparser.c" +#line 5211 "util/configparser.c" break; case 448: -#line 2235 "./util/configparser.y" +#line 2237 "./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) { @@ -5223,11 +5225,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5227 "util/configparser.c" +#line 5229 "util/configparser.c" break; case 449: -#line 2250 "./util/configparser.y" +#line 2252 "./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) { @@ -5241,11 +5243,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5245 "util/configparser.c" +#line 5247 "util/configparser.c" break; case 450: -#line 2265 "./util/configparser.y" +#line 2267 "./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) @@ -5253,11 +5255,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5257 "util/configparser.c" +#line 5259 "util/configparser.c" break; case 451: -#line 2274 "./util/configparser.y" +#line 2276 "./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) @@ -5265,20 +5267,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5271 "util/configparser.c" break; case 452: -#line 2283 "./util/configparser.y" +#line 2285 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5278 "util/configparser.c" +#line 5280 "util/configparser.c" break; case 453: -#line 2289 "./util/configparser.y" +#line 2291 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5286,11 +5288,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5290 "util/configparser.c" +#line 5292 "util/configparser.c" break; case 454: -#line 2298 "./util/configparser.y" +#line 2300 "./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) @@ -5298,11 +5300,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5302 "util/configparser.c" +#line 5304 "util/configparser.c" break; case 455: -#line 2307 "./util/configparser.y" +#line 2309 "./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) @@ -5311,11 +5313,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5315 "util/configparser.c" +#line 5317 "util/configparser.c" break; case 456: -#line 2317 "./util/configparser.y" +#line 2319 "./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) @@ -5324,11 +5326,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5328 "util/configparser.c" +#line 5330 "util/configparser.c" break; case 457: -#line 2327 "./util/configparser.y" +#line 2329 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5340,11 +5342,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5344 "util/configparser.c" +#line 5346 "util/configparser.c" break; case 458: -#line 2340 "./util/configparser.y" +#line 2342 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5356,11 +5358,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5360 "util/configparser.c" +#line 5362 "util/configparser.c" break; case 459: -#line 2353 "./util/configparser.y" +#line 2355 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5371,11 +5373,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5375 "util/configparser.c" +#line 5377 "util/configparser.c" break; case 460: -#line 2365 "./util/configparser.y" +#line 2367 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5388,11 +5390,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5392 "util/configparser.c" +#line 5394 "util/configparser.c" break; case 461: -#line 2379 "./util/configparser.y" +#line 2381 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5403,11 +5405,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5407 "util/configparser.c" +#line 5409 "util/configparser.c" break; case 462: -#line 2391 "./util/configparser.y" +#line 2393 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5420,11 +5422,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5424 "util/configparser.c" +#line 5426 "util/configparser.c" break; case 463: -#line 2405 "./util/configparser.y" +#line 2407 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5433,31 +5435,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5437 "util/configparser.c" +#line 5439 "util/configparser.c" break; case 464: -#line 2415 "./util/configparser.y" +#line 2417 "./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 5447 "util/configparser.c" +#line 5449 "util/configparser.c" break; case 465: -#line 2422 "./util/configparser.y" +#line 2424 "./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 5457 "util/configparser.c" +#line 5459 "util/configparser.c" break; case 466: -#line 2429 "./util/configparser.y" +#line 2431 "./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) @@ -5465,11 +5467,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5469 "util/configparser.c" +#line 5471 "util/configparser.c" break; case 467: -#line 2438 "./util/configparser.y" +#line 2440 "./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) @@ -5477,11 +5479,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5481 "util/configparser.c" +#line 5483 "util/configparser.c" break; case 468: -#line 2447 "./util/configparser.y" +#line 2449 "./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) @@ -5490,11 +5492,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5494 "util/configparser.c" +#line 5496 "util/configparser.c" break; case 469: -#line 2457 "./util/configparser.y" +#line 2459 "./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) @@ -5503,11 +5505,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5507 "util/configparser.c" +#line 5509 "util/configparser.c" break; case 470: -#line 2467 "./util/configparser.y" +#line 2469 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5516,31 +5518,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5520 "util/configparser.c" +#line 5522 "util/configparser.c" break; case 471: -#line 2477 "./util/configparser.y" +#line 2479 "./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 5530 "util/configparser.c" +#line 5532 "util/configparser.c" break; case 472: -#line 2484 "./util/configparser.y" +#line 2486 "./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 5540 "util/configparser.c" +#line 5542 "util/configparser.c" break; case 473: -#line 2491 "./util/configparser.y" +#line 2493 "./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) @@ -5548,11 +5550,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5552 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 474: -#line 2500 "./util/configparser.y" +#line 2502 "./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) @@ -5560,11 +5562,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5564 "util/configparser.c" +#line 5566 "util/configparser.c" break; case 475: -#line 2509 "./util/configparser.y" +#line 2511 "./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) @@ -5573,11 +5575,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5577 "util/configparser.c" +#line 5579 "util/configparser.c" break; case 476: -#line 2519 "./util/configparser.y" +#line 2521 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5586,52 +5588,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5590 "util/configparser.c" +#line 5592 "util/configparser.c" break; case 477: -#line 2529 "./util/configparser.y" +#line 2531 "./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 5600 "util/configparser.c" +#line 5602 "util/configparser.c" break; case 478: -#line 2536 "./util/configparser.y" +#line 2538 "./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 5610 "util/configparser.c" +#line 5612 "util/configparser.c" break; case 479: -#line 2543 "./util/configparser.y" +#line 2545 "./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 5620 "util/configparser.c" +#line 5622 "util/configparser.c" break; case 480: -#line 2550 "./util/configparser.y" +#line 2552 "./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 5631 "util/configparser.c" +#line 5633 "util/configparser.c" break; case 481: -#line 2558 "./util/configparser.y" +#line 2560 "./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) @@ -5640,11 +5642,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 482: -#line 2568 "./util/configparser.y" +#line 2570 "./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) @@ -5653,11 +5655,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5657 "util/configparser.c" +#line 5659 "util/configparser.c" break; case 483: -#line 2578 "./util/configparser.y" +#line 2580 "./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) @@ -5666,11 +5668,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5670 "util/configparser.c" +#line 5672 "util/configparser.c" break; case 484: -#line 2588 "./util/configparser.y" +#line 2590 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5679,11 +5681,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5683 "util/configparser.c" +#line 5685 "util/configparser.c" break; case 485: -#line 2598 "./util/configparser.y" +#line 2600 "./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 && @@ -5721,11 +5723,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5725 "util/configparser.c" +#line 5727 "util/configparser.c" break; case 486: -#line 2637 "./util/configparser.y" +#line 2639 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5734,33 +5736,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5738 "util/configparser.c" +#line 5740 "util/configparser.c" break; case 487: -#line 2647 "./util/configparser.y" +#line 2649 "./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 5749 "util/configparser.c" +#line 5751 "util/configparser.c" break; case 488: -#line 2655 "./util/configparser.y" +#line 2657 "./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 5760 "util/configparser.c" +#line 5762 "util/configparser.c" break; case 489: -#line 2663 "./util/configparser.y" +#line 2665 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5774,11 +5776,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5778 "util/configparser.c" +#line 5780 "util/configparser.c" break; case 490: -#line 2678 "./util/configparser.y" +#line 2680 "./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) @@ -5786,19 +5788,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5790 "util/configparser.c" +#line 5792 "util/configparser.c" break; case 491: -#line 2687 "./util/configparser.y" +#line 2689 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5798 "util/configparser.c" +#line 5800 "util/configparser.c" break; case 502: -#line 2698 "./util/configparser.y" +#line 2700 "./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) @@ -5807,11 +5809,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5811 "util/configparser.c" +#line 5813 "util/configparser.c" break; case 503: -#line 2708 "./util/configparser.y" +#line 2710 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5819,79 +5821,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5823 "util/configparser.c" +#line 5825 "util/configparser.c" break; case 504: -#line 2717 "./util/configparser.y" +#line 2719 "./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 5833 "util/configparser.c" +#line 5835 "util/configparser.c" break; case 505: -#line 2724 "./util/configparser.y" +#line 2726 "./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 5843 "util/configparser.c" +#line 5845 "util/configparser.c" break; case 506: -#line 2731 "./util/configparser.y" +#line 2733 "./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 5853 "util/configparser.c" +#line 5855 "util/configparser.c" break; case 507: -#line 2738 "./util/configparser.y" +#line 2740 "./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 5863 "util/configparser.c" +#line 5865 "util/configparser.c" break; case 508: -#line 2745 "./util/configparser.y" +#line 2747 "./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 5873 "util/configparser.c" +#line 5875 "util/configparser.c" break; case 509: -#line 2752 "./util/configparser.y" +#line 2754 "./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 5883 "util/configparser.c" +#line 5885 "util/configparser.c" break; case 510: -#line 2759 "./util/configparser.y" +#line 2761 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5891 "util/configparser.c" +#line 5893 "util/configparser.c" break; case 532: -#line 2779 "./util/configparser.y" +#line 2781 "./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) @@ -5899,11 +5901,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5905 "util/configparser.c" break; case 533: -#line 2788 "./util/configparser.y" +#line 2790 "./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) @@ -5912,31 +5914,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5916 "util/configparser.c" +#line 5918 "util/configparser.c" break; case 534: -#line 2798 "./util/configparser.y" +#line 2800 "./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 5926 "util/configparser.c" +#line 5928 "util/configparser.c" break; case 535: -#line 2805 "./util/configparser.y" +#line 2807 "./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 5936 "util/configparser.c" +#line 5938 "util/configparser.c" break; case 536: -#line 2812 "./util/configparser.y" +#line 2814 "./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) @@ -5944,51 +5946,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5948 "util/configparser.c" +#line 5950 "util/configparser.c" break; case 537: -#line 2821 "./util/configparser.y" +#line 2823 "./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 5958 "util/configparser.c" +#line 5960 "util/configparser.c" break; case 538: -#line 2828 "./util/configparser.y" +#line 2830 "./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 5968 "util/configparser.c" +#line 5970 "util/configparser.c" break; case 539: -#line 2835 "./util/configparser.y" +#line 2837 "./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 5978 "util/configparser.c" +#line 5980 "util/configparser.c" break; case 540: -#line 2842 "./util/configparser.y" +#line 2844 "./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 5988 "util/configparser.c" +#line 5990 "util/configparser.c" break; case 541: -#line 2849 "./util/configparser.y" +#line 2851 "./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) @@ -5996,11 +5998,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6000 "util/configparser.c" +#line 6002 "util/configparser.c" break; case 542: -#line 2858 "./util/configparser.y" +#line 2860 "./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) @@ -6008,31 +6010,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6014 "util/configparser.c" break; case 543: -#line 2867 "./util/configparser.y" +#line 2869 "./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 6022 "util/configparser.c" +#line 6024 "util/configparser.c" break; case 544: -#line 2874 "./util/configparser.y" +#line 2876 "./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 6032 "util/configparser.c" +#line 6034 "util/configparser.c" break; case 545: -#line 2881 "./util/configparser.y" +#line 2883 "./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) @@ -6041,11 +6043,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6045 "util/configparser.c" +#line 6047 "util/configparser.c" break; case 546: -#line 2891 "./util/configparser.y" +#line 2893 "./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) @@ -6054,11 +6056,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6058 "util/configparser.c" +#line 6060 "util/configparser.c" break; case 547: -#line 2901 "./util/configparser.y" +#line 2903 "./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) @@ -6067,11 +6069,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6071 "util/configparser.c" +#line 6073 "util/configparser.c" break; case 548: -#line 2911 "./util/configparser.y" +#line 2913 "./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) @@ -6080,11 +6082,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 6086 "util/configparser.c" break; case 549: -#line 2921 "./util/configparser.y" +#line 2923 "./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) @@ -6093,11 +6095,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6097 "util/configparser.c" +#line 6099 "util/configparser.c" break; case 550: -#line 2931 "./util/configparser.y" +#line 2933 "./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) @@ -6106,47 +6108,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6110 "util/configparser.c" +#line 6112 "util/configparser.c" break; case 551: -#line 2941 "./util/configparser.y" +#line 2943 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6118 "util/configparser.c" +#line 6120 "util/configparser.c" break; case 555: -#line 2950 "./util/configparser.y" +#line 2952 "./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 6128 "util/configparser.c" +#line 6130 "util/configparser.c" break; case 556: -#line 2956 "./util/configparser.y" +#line 2958 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6136 "util/configparser.c" +#line 6138 "util/configparser.c" break; case 560: -#line 2965 "./util/configparser.y" +#line 2967 "./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 6146 "util/configparser.c" +#line 6148 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" +#line 2973 "./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) @@ -6155,21 +6157,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6159 "util/configparser.c" +#line 6161 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" +#line 2983 "./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 6169 "util/configparser.c" +#line 6171 "util/configparser.c" break; case 563: -#line 2988 "./util/configparser.y" +#line 2990 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6177,30 +6179,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6181 "util/configparser.c" +#line 6183 "util/configparser.c" break; case 564: -#line 2997 "./util/configparser.y" +#line 2999 "./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 6192 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 565: -#line 3005 "./util/configparser.y" +#line 3007 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6200 "util/configparser.c" +#line 6202 "util/configparser.c" break; case 578: -#line 3021 "./util/configparser.y" +#line 3023 "./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) @@ -6208,11 +6210,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6212 "util/configparser.c" +#line 6214 "util/configparser.c" break; case 579: -#line 3031 "./util/configparser.y" +#line 3033 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6220,21 +6222,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6224 "util/configparser.c" +#line 6226 "util/configparser.c" break; case 580: -#line 3040 "./util/configparser.y" +#line 3042 "./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 6234 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 581: -#line 3047 "./util/configparser.y" +#line 3049 "./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))) @@ -6242,21 +6244,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 6246 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 582: -#line 3056 "./util/configparser.y" +#line 3058 "./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 6256 "util/configparser.c" +#line 6258 "util/configparser.c" break; case 583: -#line 3063 "./util/configparser.y" +#line 3065 "./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))) @@ -6264,22 +6266,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 6268 "util/configparser.c" +#line 6270 "util/configparser.c" break; case 584: -#line 3072 "./util/configparser.y" +#line 3074 "./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 6279 "util/configparser.c" +#line 6281 "util/configparser.c" break; case 585: -#line 3080 "./util/configparser.y" +#line 3082 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6291,22 +6293,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6295 "util/configparser.c" +#line 6297 "util/configparser.c" break; case 586: -#line 3093 "./util/configparser.y" +#line 3095 "./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 6306 "util/configparser.c" +#line 6308 "util/configparser.c" break; case 587: -#line 3101 "./util/configparser.y" +#line 3103 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6318,19 +6320,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6322 "util/configparser.c" +#line 6324 "util/configparser.c" break; case 588: -#line 3114 "./util/configparser.y" +#line 3116 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6330 "util/configparser.c" +#line 6332 "util/configparser.c" break; case 597: -#line 3125 "./util/configparser.y" +#line 3127 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6341,11 +6343,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6345 "util/configparser.c" +#line 6347 "util/configparser.c" break; case 598: -#line 3137 "./util/configparser.y" +#line 3139 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6356,11 +6358,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6360 "util/configparser.c" +#line 6362 "util/configparser.c" break; case 599: -#line 3149 "./util/configparser.y" +#line 3151 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6371,11 +6373,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6375 "util/configparser.c" +#line 6377 "util/configparser.c" break; case 600: -#line 3161 "./util/configparser.y" +#line 3163 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6389,11 +6391,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6393 "util/configparser.c" +#line 6395 "util/configparser.c" break; case 601: -#line 3176 "./util/configparser.y" +#line 3178 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6405,11 +6407,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6409 "util/configparser.c" +#line 6411 "util/configparser.c" break; case 602: -#line 3189 "./util/configparser.y" +#line 3191 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6423,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6425 "util/configparser.c" +#line 6427 "util/configparser.c" break; case 603: -#line 3202 "./util/configparser.y" +#line 3204 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6435,19 +6437,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6439 "util/configparser.c" +#line 6441 "util/configparser.c" break; case 604: -#line 3213 "./util/configparser.y" +#line 3215 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6447 "util/configparser.c" +#line 6449 "util/configparser.c" break; case 609: -#line 3222 "./util/configparser.y" +#line 3224 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6461,11 +6463,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6465 "util/configparser.c" +#line 6467 "util/configparser.c" break; case 610: -#line 3237 "./util/configparser.y" +#line 3239 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6479,11 +6481,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6483 "util/configparser.c" +#line 6485 "util/configparser.c" break; -#line 6487 "util/configparser.c" +#line 6489 "util/configparser.c" default: break; } @@ -6715,7 +6717,7 @@ yyreturn: #endif return yyresult; } -#line 3251 "./util/configparser.y" +#line 3253 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index 52ec8251c..e6e26a537 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1121,12 +1121,14 @@ server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG { OUTYY(("P(server_dlv_anchor_file:%s)\n", $2)); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); + free($2); } ; server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG { OUTYY(("P(server_dlv_anchor:%s)\n", $2)); log_warn("option dlv-anchor ignored: DLV is decommissioned"); + free($2); } ; server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG From 022a716e5b5edc852e2aafcbb36fbcb5a8cac9de Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 14:18:16 +0200 Subject: [PATCH 166/394] dlv removal, remove DLV reference from unused use in test case. --- testdata/val_stub_noroot.rpl | 2 -- 1 file changed, 2 deletions(-) diff --git a/testdata/val_stub_noroot.rpl b/testdata/val_stub_noroot.rpl index 4235bcc52..07113bef7 100644 --- a/testdata/val_stub_noroot.rpl +++ b/testdata/val_stub_noroot.rpl @@ -3,8 +3,6 @@ server: target-fetch-policy: "0 0 0 0 0" trust-anchor: "lp0.eu. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" val-override-date: "20100913111500" - ; the dlv anchor is completely ignored, but here to test that. - dlv-anchor: "dlv.isc.org. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" fake-sha1: yes trust-anchor-signaling: no minimal-responses: no From f35293cabaa76b3bd980434028893078acede9fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 14:23:33 +0200 Subject: [PATCH 167/394] Changelog note for #246 and #284 - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. The DLV has been decommisioned and in unbound 1.5.4, in 2015, there was advise to stop using it. The current code base does not contain DLV code any more. The use of dlv options displays a warning. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 763bf51a6..bcc48de6e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +6 August 2020: Wouter + - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. + The DLV has been decommisioned and in unbound 1.5.4, in 2015, there + was advise to stop using it. The current code base does not contain + DLV code any more. The use of dlv options displays a warning. + 5 August 2020: Wouter - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. From a3f95d3358c75ec521bb11e73354d637b08bd0c2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 08:15:06 +0200 Subject: [PATCH 168/394] - Fix #287: doc typo: "Additionaly". --- doc/Changelog | 3 +++ doc/unbound.conf.5.in | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index bcc48de6e..4dd98012a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 August 2020: Wouter + - Fix #287: doc typo: "Additionaly". + 6 August 2020: Wouter - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. The DLV has been decommisioned and in unbound 1.5.4, in 2015, there diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 8eae10a62..951094ed1 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2101,7 +2101,7 @@ even if some data have expired in terms of DNS TTL or the Redis server has cached too much data; if necessary the Redis server must be configured to limit the cache size, preferably with some kind of least-recently-used eviction policy. -Additionaly, the \fBredis\-expire\-records\fR option can be used in order to +Additionally, the \fBredis\-expire\-records\fR option can be used in order to set the relative DNS TTL of the message as timeout to the Redis records; keep in mind that some additional memory is used per key and that the expire information is stored as absolute Unix timestamps in Redis (computer time must From 31f81adadbc7992ff98f41b556e58835432bfbc1 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 10 Aug 2020 17:29:06 +0200 Subject: [PATCH 169/394] - Check for existence 'EVP_MAC_CTX_set_params' function (openssl >= 3.0.0-alpha5) --- config.h.in | 3 + configure | 8690 +---------------------------------------------- configure.ac | 2 +- util/net_help.c | 8 + 4 files changed, 100 insertions(+), 8603 deletions(-) diff --git a/config.h.in b/config.h.in index 6b106d8de..d0cb339ad 100644 --- a/config.h.in +++ b/config.h.in @@ -507,6 +507,9 @@ function. */ #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB +/* Define to 1 if you have the `EVP_MAC_CTX_set_params` function. */ +#undef HAVE_EVP_MAC_CTX_SET_PARAMS + /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 2510b2bfc..223ed24db 100755 --- a/configure +++ b/configure @@ -198,15 +198,7 @@ test -x / || exit 1" as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" +test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else @@ -565,8 +557,6 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -SHELL=${CONFIG_SHELL-/bin/sh} - test -n "$DJDIR" || exec 7<&0 &1 @@ -722,26 +712,6 @@ LIBOBJS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -ac_ct_AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL AR host_os host_vendor @@ -808,6 +778,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -843,14 +814,6 @@ enable_debug enable_flto enable_pie enable_relro_now -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock enable_rpath enable_largefile enable_systemd @@ -909,7 +872,6 @@ CPPFLAGS CPP YACC YFLAGS -LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR @@ -956,6 +918,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1208,6 +1171,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1345,7 +1317,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1498,6 +1470,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1538,11 +1511,6 @@ Optional Features: benefit from ASLR, small performance penalty) --enable-relro-now Enable full relocation binding at load-time (RELRO NOW, to protect GOT and .dtor areas) - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath disable hardcoded rpath (default=enabled) --disable-largefile omit support for large files --enable-systemd compile with systemd support @@ -1610,14 +1578,6 @@ Optional Packages: not exist if you are content with the builtin. --with-username=user set default user that unbound changes to (default user is unbound) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). --with-pthreads use pthreads library, or --without-pthreads to disable threading support. --with-solaris-threads use solaris native thread library. @@ -1664,8 +1624,6 @@ Some influential environment variables: YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path @@ -2049,73 +2007,6 @@ fi } # ac_fn_c_try_link -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2353,6 +2244,73 @@ rm -f conftest.val } # ac_fn_c_compute_int +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR @@ -6959,7649 +6917,9 @@ if test $AR = false; then as_fn_error $? "Cannot find 'ar', please extend PATH to include it" "$LINENO" 5 fi -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: +AC_PROG_LIBTOOL @@ -15675,7 +7993,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15721,7 +8039,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15745,7 +8063,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15790,7 +8108,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15814,7 +8132,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -18341,7 +10659,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -22215,7 +14533,6 @@ gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' -AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -22319,293 +14636,6 @@ _ASBOX _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -22614,7 +14644,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "disable-rpath") CONFIG_COMMANDS="$CONFIG_COMMANDS disable-rpath" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/example.conf") CONFIG_FILES="$CONFIG_FILES doc/example.conf" ;; @@ -23183,549 +15212,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; "disable-rpath":C) sed < libtool > libtool-2 \ 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_RPATH_SED__ "/' diff --git a/configure.ac b/configure.ac index 59a075086..e488ae488 100644 --- a/configure.ac +++ b/configure.ac @@ -852,7 +852,7 @@ else AC_MSG_RESULT([no]) fi AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params]) # these check_funcs need -lssl BAKLIBS="$LIBS" diff --git a/util/net_help.c b/util/net_help.c index ce1bc0c15..4d985b66d 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1478,7 +1478,11 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); +#ifdef HAVE_EVP_MAC_CTX_SET_PARAMS EVP_MAC_CTX_set_params(hmac_ctx, params); +#else + EVP_MAC_set_ctx_params(hmac_ctx, params); +#endif #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); @@ -1509,7 +1513,11 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); +#ifdef HAVE_EVP_MAC_CTX_SET_PARAMS EVP_MAC_CTX_set_params(hmac_ctx, params); +#else + EVP_MAC_set_ctx_params(hmac_ctx, params); +#endif #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); From 59a66601f0aa7915ceaab4fd36b92a6ea943980c Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 10 Aug 2020 17:35:18 +0200 Subject: [PATCH 170/394] Add changlog entry for PR #277. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4dd98012a..346555b00 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +10 August 2020: Ralph + - Merge (modified) PR #277, use EVP_MAC_CTX_set_params if available, + by Vítězslav Čížek. + 10 August 2020: Wouter - Fix #287: doc typo: "Additionaly". From 3e86d30a508be7d368d20f790621255eedc94ad6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 17:42:41 +0200 Subject: [PATCH 171/394] Rerun autoconf and autoheader on configure.ac, with libtool --- config.h.in | 6 +- configure | 8688 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 8604 insertions(+), 90 deletions(-) diff --git a/config.h.in b/config.h.in index d0cb339ad..2ed8a461c 100644 --- a/config.h.in +++ b/config.h.in @@ -221,6 +221,9 @@ /* Define to 1 if you have the `EVP_EncryptInit_ex' function. */ #undef HAVE_EVP_ENCRYPTINIT_EX +/* Define to 1 if you have the `EVP_MAC_CTX_set_params' function. */ +#undef HAVE_EVP_MAC_CTX_SET_PARAMS + /* Define to 1 if you have the `EVP_MD_CTX_new' function. */ #undef HAVE_EVP_MD_CTX_NEW @@ -507,9 +510,6 @@ function. */ #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB -/* Define to 1 if you have the `EVP_MAC_CTX_set_params` function. */ -#undef HAVE_EVP_MAC_CTX_SET_PARAMS - /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 223ed24db..245b44380 100755 --- a/configure +++ b/configure @@ -198,7 +198,15 @@ test -x / || exit 1" as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else @@ -557,6 +565,8 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +SHELL=${CONFIG_SHELL-/bin/sh} + test -n "$DJDIR" || exec 7<&0 &1 @@ -712,6 +722,26 @@ LIBOBJS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +ac_ct_AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL AR host_os host_vendor @@ -778,7 +808,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -814,6 +843,14 @@ enable_debug enable_flto enable_pie enable_relro_now +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock enable_rpath enable_largefile enable_systemd @@ -872,6 +909,7 @@ CPPFLAGS CPP YACC YFLAGS +LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR @@ -918,7 +956,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1171,15 +1208,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1317,7 +1345,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1470,7 +1498,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1511,6 +1538,11 @@ Optional Features: benefit from ASLR, small performance penalty) --enable-relro-now Enable full relocation binding at load-time (RELRO NOW, to protect GOT and .dtor areas) + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath disable hardcoded rpath (default=enabled) --disable-largefile omit support for large files --enable-systemd compile with systemd support @@ -1578,6 +1610,14 @@ Optional Packages: not exist if you are content with the builtin. --with-username=user set default user that unbound changes to (default user is unbound) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). --with-pthreads use pthreads library, or --without-pthreads to disable threading support. --with-solaris-threads use solaris native thread library. @@ -1624,6 +1664,8 @@ Some influential environment variables: YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path @@ -2007,6 +2049,73 @@ fi } # ac_fn_c_try_link +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2244,73 +2353,6 @@ rm -f conftest.val } # ac_fn_c_compute_int -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR @@ -6917,9 +6959,7649 @@ if test $AR = false; then as_fn_error $? "Cannot find 'ar', please extend PATH to include it" "$LINENO" 5 fi +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: -AC_PROG_LIBTOOL @@ -7993,7 +15675,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8039,7 +15721,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8063,7 +15745,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8108,7 +15790,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8132,7 +15814,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -14533,6 +22215,7 @@ gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' +AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -14636,6 +22319,293 @@ _ASBOX _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -14644,6 +22614,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "disable-rpath") CONFIG_COMMANDS="$CONFIG_COMMANDS disable-rpath" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/example.conf") CONFIG_FILES="$CONFIG_FILES doc/example.conf" ;; @@ -15212,6 +23183,549 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; "disable-rpath":C) sed < libtool > libtool-2 \ 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_RPATH_SED__ "/' From b75ff25cfdfde8be471768029f38cfa818436eb6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 17:43:19 +0200 Subject: [PATCH 172/394] Changelog note. - Rerun autoconf --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 346555b00..01f2ee3c2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 10 August 2020: Wouter - Fix #287: doc typo: "Additionaly". + - Rerun autoconf 6 August 2020: Wouter - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. From 8b05dcdf8c3fd4624e1847028fd03bf041b44508 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 13 Aug 2020 14:57:21 +0200 Subject: [PATCH 173/394] - Create and init edns tags data for libunbound. --- doc/Changelog | 3 +++ libunbound/context.c | 3 +++ libunbound/libunbound.c | 13 +++++++++++++ 3 files changed, 19 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 01f2ee3c2..8bc333e0d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 August 2020: Ralph + - Create and init edns tags data for libunbound. + 10 August 2020: Ralph - Merge (modified) PR #277, use EVP_MAC_CTX_set_params if available, by Vítězslav Čížek. diff --git a/libunbound/context.c b/libunbound/context.c index 6d62e32b5..713259c71 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -50,6 +50,7 @@ #include "services/authzone.h" #include "util/data/msgreply.h" #include "util/storage/slabhash.h" +#include "util/edns.h" #include "sldns/sbuffer.h" int @@ -79,6 +80,8 @@ context_finalize(struct ub_ctx* ctx) return UB_INITFAIL; if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz)) return UB_INITFAIL; + if(!edns_tags_apply_cfg(ctx->env->edns_tags, cfg)) + return UB_INITFAIL; if(!slabhash_is_size(ctx->env->msg_cache, cfg->msg_cache_size, cfg->msg_cache_slabs)) { slabhash_delete(ctx->env->msg_cache); diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 3b30419b3..af26e5546 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -58,6 +58,7 @@ #include "util/net_help.h" #include "util/tube.h" #include "util/ub_event.h" +#include "util/edns.h" #include "services/modstack.h" #include "services/localzone.h" #include "services/cache/infra.h" @@ -153,6 +154,18 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) errno = ENOMEM; return NULL; } + ctx->env->edns_tags = edns_tags_create(); + if(!ctx->env->edns_tags) { + auth_zones_delete(ctx->env->auth_zones); + edns_known_options_delete(ctx->env); + config_delete(ctx->env->cfg); + free(ctx->env); + ub_randfree(ctx->seed_rnd); + free(ctx); + errno = ENOMEM; + return NULL; + } + ctx->env->alloc = &ctx->superalloc; ctx->env->worker = NULL; ctx->env->need_to_validate = 0; From e6ebabc0cc492bca4519111b11eb4864e602a5c6 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 20 Aug 2020 17:54:28 +0200 Subject: [PATCH 174/394] - Fix stats double count issue (#289). --- daemon/worker.c | 11 +---------- doc/Changelog | 3 +++ 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 23e3244c5..680241fff 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1219,7 +1219,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_QR_SET(sldns_buffer_begin(c->buffer)); LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_FORMERR); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.cfg->log_queries) { @@ -1237,7 +1236,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_RCODE_REFUSED); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; - server_stats_insrcode(&worker->stats, c->buffer); } goto send_reply; } @@ -1259,7 +1257,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_RCODE_FORMERR); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; - server_stats_insrcode(&worker->stats, c->buffer); } goto send_reply; } @@ -1275,7 +1272,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), &reply_edns); regional_free_all(worker->scratchpad); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(edns.edns_present) { @@ -1354,7 +1350,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.udp_size = 65535; /* max size for TCP replies */ if(qinfo.qclass == LDNS_RR_CLASS_CH && answer_chaos(worker, &qinfo, &edns, repinfo, c->buffer)) { - server_stats_insrcode(&worker->stats, c->buffer); regional_free_all(worker->scratchpad); goto send_reply; } @@ -1375,7 +1370,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, comm_point_drop_reply(repinfo); return 0; } - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.auth_zones && @@ -1387,7 +1381,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, comm_point_drop_reply(repinfo); return 0; } - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.auth_zones && @@ -1403,7 +1396,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer)) && acl != acl_deny_non_local && acl != acl_refuse_non_local) LDNS_RA_SET(sldns_buffer_begin(c->buffer)); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } @@ -1432,7 +1424,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), NULL); regional_free_all(worker->scratchpad); - server_stats_insrcode(&worker->stats, c->buffer); log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", &repinfo->addr, repinfo->addrlen); goto send_reply; @@ -1588,9 +1579,9 @@ send_reply_rc: if(is_expired_answer) { worker->stats.ans_expired++; } + server_stats_insrcode(&worker->stats, c->buffer); if(worker->stats.extended) { if(is_secure_answer) worker->stats.ans_secure++; - server_stats_insrcode(&worker->stats, repinfo->c->buffer); } #ifdef USE_DNSTAP if(worker->dtenv.log_client_response_messages) diff --git a/doc/Changelog b/doc/Changelog index 8bc333e0d..de643c8b1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +20 August 2020: Ralph + - Fix stats double count issue (#289). + 13 August 2020: Ralph - Create and init edns tags data for libunbound. From 45712de9a21ef3c704aac889b88ee0867dba5650 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 09:23:36 +0200 Subject: [PATCH 175/394] - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. --- dnstap/dtstream.c | 10 ++++++++++ doc/Changelog | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index dda3ef1ff..7c8a08604 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1873,6 +1873,11 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) if(connect(dtio->fd, (struct sockaddr*)&s, (socklen_t)sizeof(s)) == -1) { char* to = dtio->socket_path; + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) { + dtio_close_fd(dtio); + return 0; /* no log retries on low verbosity */ + } #ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", to, strerror(errno)); @@ -1916,6 +1921,11 @@ static int dtio_open_output_tcp(struct dt_io_thread* dtio) if(connect(dtio->fd, (struct sockaddr*)&addr, addrlen) == -1) { if(errno == EINPROGRESS) return 1; /* wait until connect done*/ + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) { + dtio_close_fd(dtio); + return 0; /* no log retries on low verbosity */ + } #ifndef USE_WINSOCK if(tcp_connect_errno_needs_log( (struct sockaddr *)&addr, addrlen)) { diff --git a/doc/Changelog b/doc/Changelog index de643c8b1..1923c17ad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +24 August 2020: Wouter + - Fix that dnstap reconnects do not spam the log with the repeated + attempts. Attempts on the timer are only logged on high verbosity, + if they produce a connection failure error. + 20 August 2020: Ralph - Fix stats double count issue (#289). From 45d4cbaa420d2e1ce2ea2a21a9ed3d9666655bc6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 14:55:16 +0200 Subject: [PATCH 176/394] - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. --- dnstap/dnstap.c | 10 ++++++++-- dnstap/dtstream.c | 3 ++- doc/Changelog | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index cc5449dff..bda837876 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -134,9 +134,15 @@ dt_create(struct config_file* cfg) if(cfg->dnstap && cfg->dnstap_socket_path && cfg->dnstap_socket_path[0] && (cfg->dnstap_ip==NULL || cfg->dnstap_ip[0]==0)) { + char* p = fname_after_chroot(cfg->dnstap_socket_path, cfg, 1); + if(!p) { + log_err("malloc failure"); + return NULL; + } verbose(VERB_OPS, "attempting to connect to dnstap socket %s", - cfg->dnstap_socket_path); - check_socket_file(cfg->dnstap_socket_path); + p); + check_socket_file(p); + free(p); } env = (struct dt_env *) calloc(1, sizeof(struct dt_env)); diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 7c8a08604..63d517cb8 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -279,7 +279,8 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) return 0; } free(dtio->socket_path); - dtio->socket_path = strdup(cfg->dnstap_socket_path); + dtio->socket_path = fname_after_chroot(cfg->dnstap_socket_path, + cfg, 1); if(!dtio->socket_path) { log_err("dnstap setup: malloc failure"); return 0; diff --git a/doc/Changelog b/doc/Changelog index 1923c17ad..37931d395 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. + - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. 20 August 2020: Ralph - Fix stats double count issue (#289). From aa602fdd0c9447df95cd1f18c27a33ff964d2be1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 16:13:42 +0200 Subject: [PATCH 177/394] - Change configure to use EVP_sha256 instead of HMAC_Update for openssl-3.0.0. --- acx_nlnetlabs.m4 | 37 +++++++++++++++++++------------------ config.h.in | 3 --- configure | 32 ++++++++++++++++---------------- configure.ac | 2 +- doc/Changelog | 2 ++ 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 8eccc15b0..31e43d67e 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 34 +# Version 35 +# 2020-08-24 Use EVP_sha256 instead of HMAC_Update (for openssl-3.0.0). # 2016-03-21 Check -ldl -pthread for libcrypto for ldns and openssl 1.1.0. # 2016-03-21 Use HMAC_Update instead of HMAC_CTX_Init (for openssl-1.1.0). # 2016-01-04 -D_DEFAULT_SOURCE defined with -D_BSD_SOURCE for Linux glibc 2.20 @@ -673,16 +674,16 @@ AC_DEFUN([ACX_SSL_CHECKS], [ ACX_RUNTIME_PATH_ADD([$ssldir/lib]) fi - AC_MSG_CHECKING([for HMAC_Update in -lcrypto]) + AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" AC_TRY_LINK(, [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ], [ AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) ], [ AC_MSG_RESULT(no) # check if -lwsock32 or -lgdi32 are needed. @@ -692,11 +693,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32" AC_MSG_CHECKING([if -lcrypto needs -lgdi32]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) @@ -706,11 +707,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -ldl" AC_MSG_CHECKING([if -lcrypto needs -ldl]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) @@ -720,11 +721,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread" AC_MSG_CHECKING([if -lcrypto needs -ldl -pthread]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) diff --git a/config.h.in b/config.h.in index 2ed8a461c..65c258517 100644 --- a/config.h.in +++ b/config.h.in @@ -299,9 +299,6 @@ /* Define to 1 if you have the `HMAC_Init_ex' function. */ #undef HAVE_HMAC_INIT_EX -/* If you have HMAC_Update */ -#undef HAVE_HMAC_UPDATE - /* If we have htobe64 */ #undef HAVE_HTOBE64 diff --git a/configure b/configure index 245b44380..4df378a8a 100755 --- a/configure +++ b/configure @@ -17943,8 +17943,8 @@ $as_echo "found in $ssldir" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_Update in -lcrypto" >&5 -$as_echo_n "checking for HMAC_Update in -lcrypto... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5 +$as_echo_n "checking for EVP_sha256 in -lcrypto... " >&6; } LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17954,8 +17954,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -17966,7 +17966,7 @@ if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h else @@ -17987,8 +17987,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -17997,7 +17997,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18019,8 +18019,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -18029,7 +18029,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18051,8 +18051,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -18061,7 +18061,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18246,11 +18246,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char HMAC_Update (); +char EVP_sha256 (); int main () { -return HMAC_Update (); +return EVP_sha256 (); ; return 0; } diff --git a/configure.ac b/configure.ac index e488ae488..aa38a56d2 100644 --- a/configure.ac +++ b/configure.ac @@ -832,7 +832,7 @@ AC_SUBST(PC_CRYPTO_DEPENDENCY) BAKLIBS="$LIBS" LIBS="-lssl $LIBS" AC_MSG_CHECKING([if libssl needs -lcrypt32]) -AC_TRY_LINK_FUNC([HMAC_Update], [ +AC_TRY_LINK_FUNC([EVP_sha256], [ AC_MSG_RESULT([no]) LIBS="$BAKLIBS" ], [ diff --git a/doc/Changelog b/doc/Changelog index 37931d395..946aa67fe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. + - Change configure to use EVP_sha256 instead of HMAC_Update for + openssl-3.0.0. 20 August 2020: Ralph - Fix stats double count issue (#289). From a83fc176cc0de6fc10ca16f2b54a3680eb1def44 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Aug 2020 13:16:46 +0200 Subject: [PATCH 178/394] Review fix: remove unused variables. --- services/outside_network.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 0b0b928b0..6f5ebd2f1 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -155,16 +155,14 @@ reuse_cmp_addrportssl(const void* key1, const void* key2) int reuse_cmp(const void* key1, const void* key2) { - struct reuse_tcp* r1 = (struct reuse_tcp*)key1; - struct reuse_tcp* r2 = (struct reuse_tcp*)key2; int r; r = reuse_cmp_addrportssl(key1, key2); if(r != 0) return r; /* compare ptr value */ - if(r1 < r2) return -1; - if(r1 > r2) return 1; + if(key1 < key2) return -1; + if(key1 > key2) return 1; return 0; } From 49019ba3a92eb96127004efb1b79c712b741cc1a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 25 Aug 2020 16:07:25 +0200 Subject: [PATCH 179/394] Review fix: defense check of qdcount in debug output. --- services/outside_network.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/services/outside_network.c b/services/outside_network.c index 6f5ebd2f1..5f60b847c 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -805,6 +805,7 @@ reuse_move_writewait_away(struct outside_network* outnet, /* since the current query is not written, it can also * move to a free buffer */ if(verbosity >= 5 && pend->query->pkt_len > 12+2+2 && + LDNS_QDCOUNT(pend->query->pkt) > 0 && dname_valid(pend->query->pkt+12, pend->query->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; dname_str(pend->query->pkt+12, buf); @@ -829,6 +830,7 @@ reuse_move_writewait_away(struct outside_network* outnet, } while((w = reuse_write_wait_pop(&pend->reuse)) != NULL) { if(verbosity >= 5 && w->pkt_len > 12+2+2 && + LDNS_QDCOUNT(w->pkt) > 0 && dname_valid(w->pkt+12, w->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; dname_str(w->pkt+12, buf); From a912786ca9e72dc1ccde98d5af7d23595640043b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 26 Aug 2020 11:59:09 +0200 Subject: [PATCH 180/394] - Update documentation in python example code. --- doc/Changelog | 3 +++ pythonmod/examples/avahi-resolver.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 946aa67fe..0351df5bc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 August 2020: George + - Update documentation in python example code. + 24 August 2020: Wouter - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, diff --git a/pythonmod/examples/avahi-resolver.py b/pythonmod/examples/avahi-resolver.py index b1d4e36fc..497e1e74f 100644 --- a/pythonmod/examples/avahi-resolver.py +++ b/pythonmod/examples/avahi-resolver.py @@ -59,6 +59,8 @@ # | num-threads: 32 # | cache-max-negative-ttl: 60 # | cache-max-ttl: 60 +# | python: +# | python-script: path/to/this/file # # # The plugin can also be run interactively. Provide the name and From f5d8861bbfd69fcb96640da7e130ce77bcedd641 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 27 Aug 2020 12:28:17 +0200 Subject: [PATCH 181/394] - process review feedback --- services/listen_dnsport.c | 15 +++++++++------ smallapp/unbound-control.c | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 870ffac3a..27f92a9dc 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2157,7 +2157,7 @@ static int http2_submit_rst_stream(struct http2_session* h2_session, /** * DNS response ready to be submitted to nghttp2, to be prepared for sending * out. Response is stored in c->buffer. Copy to rbuffer because the c->buffer - * might be used before this will bne send out. + * might be used before this will be sent out. * @param h2_session: http2 session, containing c->buffer which contains answer * @return 0 on error, 1 otherwise */ @@ -2194,13 +2194,16 @@ int http2_submit_dns_response(struct http2_session* h2_session) "in https-response-buffer-size"); return http2_submit_rst_stream(h2_session, h2_stream); } + http2_response_buffer_count += rlen; + lock_basic_unlock(&http2_response_buffer_count_lock); + if(!(h2_stream->rbuffer = sldns_buffer_new(rlen))) { + lock_basic_lock(&http2_response_buffer_count_lock); + http2_response_buffer_count -= rlen; lock_basic_unlock(&http2_response_buffer_count_lock); log_err("http2 submit response error: malloc failure"); return 0; } - http2_response_buffer_count += rlen; - lock_basic_unlock(&http2_response_buffer_count_lock); headers[0].name = (uint8_t*)":status"; headers[0].namelen = 7; @@ -2502,7 +2505,7 @@ static int http2_req_begin_headers_cb(nghttp2_session* session, * @param h2_stream: http2 stream * @param start: start of the base64 string * @param length: length of the base64 string - * @return: 0 on error, 1 otherwise. query will be stored in h2_stram->qbuffer, + * @return: 0 on error, 1 otherwise. query will be stored in h2_stream->qbuffer, * buffer will be NULL is unparseble. */ static int http2_buffer_uri_query(struct http2_session* h2_session, @@ -2595,10 +2598,10 @@ static int http2_req_header_cb(nghttp2_session* session, * content-length value is guaranteed to contain digits */ - if(!h2_stream->http_method && namelen == 7 && + if(!h2_stream->http_method && namelen == 7 && memcmp(":method", name, namelen) == 0) { /* Case insensitive check on :method value to be on the safe - * side. I failed to find text about case sentitivity in specs. + * side. I failed to find text about case sensitivity in specs. */ if(valuelen == 3 && strcasecmp("GET", (const char*)value) == 0) h2_stream->http_method = HTTP_METHOD_GET; diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 6c09f0106..3f3fb4f06 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -343,8 +343,8 @@ static void print_extended(struct ub_stats_info* s) PR_UL("num.query.tcpout", s->svr.qtcp_outgoing); PR_UL("num.query.tls", s->svr.qtls); PR_UL("num.query.tls_resume", s->svr.qtls_resume); - PR_UL("num.query.https", s->svr.qhttps); PR_UL("num.query.ipv6", s->svr.qipv6); + PR_UL("num.query.https", s->svr.qhttps); /* flags */ PR_UL("num.query.flags.QR", s->svr.qbit_QR); From 852a2e11051870f8aa2bd31f1c8ddef68224e8d7 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 27 Aug 2020 12:28:57 +0200 Subject: [PATCH 182/394] - Add 'DYNLIBMOD_EXTRALIBS' to dohclient in makefile --- Makefile.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.in b/Makefile.in index b10bd55e1..d2600e71f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -394,7 +394,7 @@ streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) dohclient$(EXEEXT): $(DOHCLIENT_OBJ_LINK) - $(LINK) -o $@ $(DOHCLIENT_OBJ_LINK) $(SSLLIB) $(LIBS) + $(LINK) -o $@ $(DOHCLIENT_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) perf$(EXEEXT): $(PERF_OBJ_LINK) $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) From f6a527c25ad2e60e2dc129fff3605e6ec48c30f2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 14:53:33 +0200 Subject: [PATCH 183/394] - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and uses the IP addresses for that named interface. --- config.h.in | 9 ++ configure | 4 +- configure.ac | 4 +- daemon/daemon.c | 11 ++- doc/Changelog | 5 ++ doc/unbound.conf.5.in | 3 +- services/listen_dnsport.c | 176 ++++++++++++++++++++++++++++++++++++-- services/listen_dnsport.h | 15 +++- testcode/fake_event.c | 7 ++ util/config_file.c | 4 +- util/config_file.h | 3 + 11 files changed, 225 insertions(+), 16 deletions(-) diff --git a/config.h.in b/config.h.in index 65c258517..1054ba176 100644 --- a/config.h.in +++ b/config.h.in @@ -272,6 +272,9 @@ /* Define to 1 if you have the `getentropy' function. */ #undef HAVE_GETENTROPY +/* Define to 1 if you have the `getifaddrs' function. */ +#undef HAVE_GETIFADDRS + /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H @@ -302,6 +305,9 @@ /* If we have htobe64 */ #undef HAVE_HTOBE64 +/* Define to 1 if you have the header file. */ +#undef HAVE_IFADDRS_H + /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON @@ -371,6 +377,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETTLE_EDDSA_H +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_H + /* Use libnss for crypto */ #undef HAVE_NSS diff --git a/configure b/configure index 4df378a8a..e46d7f59e 100755 --- a/configure +++ b/configure @@ -14726,7 +14726,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -20224,7 +20224,7 @@ if test "$ac_res" != no; then : fi -for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 +for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index aa38a56d2..4bb4e9463 100644 --- a/configure.ac +++ b/configure.ac @@ -399,7 +399,7 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h],,, [AC_INCLUDES_DEFAULT]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) @@ -1552,7 +1552,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([ AC_MSG_RESULT(no)) AC_SEARCH_LIBS([setusercontext], [util]) -AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4]) +AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs]) AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) diff --git a/daemon/daemon.c b/daemon/daemon.c index 34f7bfda1..f480c94e6 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -308,6 +308,8 @@ daemon_open_shared_ports(struct daemon* daemon) { log_assert(daemon); if(daemon->cfg->port != daemon->listening_port) { + char** resif = NULL; + int num_resif = 0; size_t i; struct listen_port* p0; daemon->reuseport = 0; @@ -318,15 +320,18 @@ daemon_open_shared_ports(struct daemon* daemon) free(daemon->ports); daemon->ports = NULL; } + if(!resolve_interface_names(daemon->cfg, &resif, &num_resif)) + return 0; /* see if we want to reuseport */ #ifdef SO_REUSEPORT if(daemon->cfg->so_reuseport && daemon->cfg->num_threads > 0) daemon->reuseport = 1; #endif /* try to use reuseport */ - p0 = listening_ports_open(daemon->cfg, &daemon->reuseport); + p0 = listening_ports_open(daemon->cfg, resif, num_resif, &daemon->reuseport); if(!p0) { listening_ports_free(p0); + config_del_strarray(resif, num_resif); return 0; } if(daemon->reuseport) { @@ -340,6 +345,7 @@ daemon_open_shared_ports(struct daemon* daemon) if(!(daemon->ports = (struct listen_port**)calloc( daemon->num_ports, sizeof(*daemon->ports)))) { listening_ports_free(p0); + config_del_strarray(resif, num_resif); return 0; } daemon->ports[0] = p0; @@ -348,16 +354,19 @@ daemon_open_shared_ports(struct daemon* daemon) for(i=1; inum_ports; i++) { if(!(daemon->ports[i]= listening_ports_open(daemon->cfg, + resif, num_resif, &daemon->reuseport)) || !daemon->reuseport ) { for(i=0; inum_ports; i++) listening_ports_free(daemon->ports[i]); free(daemon->ports); daemon->ports = NULL; + config_del_strarray(resif, num_resif); return 0; } } } + config_del_strarray(resif, num_resif); daemon->listening_port = daemon->cfg->port; } if(!daemon->cfg->remote_control_enable && daemon->rc_port) { diff --git a/doc/Changelog b/doc/Changelog index 0351df5bc..11e81088f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +27 August 2020: Wouter + - Similar to NSD PR#113, implement that interface names can be used, + eg. something like interface: eth0 is resolved at server start and + uses the IP addresses for that named interface. + 26 August 2020: George - Update documentation in python example code. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 951094ed1..fa4850aad 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -122,7 +122,8 @@ The port number, default 53, on which the server responds to queries. 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 -given the default is to listen to localhost. +given the default is to listen to localhost. If an interface name is used +instead of an ip address, the list of ip addresses on that interface are used. The interfaces are not changed on a reload (kill \-HUP) but only on restart. A port number can be specified with @port (without spaces between interface and port number), if not specified the default port (from diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index cc56d3fd3..63d9f0398 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -70,6 +70,13 @@ #include #endif +#ifdef HAVE_IFADDRS_H +#include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif + /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -1439,8 +1446,163 @@ listen_delete(struct listen_dnsport* front) } } +#ifdef HAVE_GETIFADDRS +static int +resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) +{ + struct ifaddrs *ifa; + int last_ip_addresses_size = *ip_addresses_size; + + for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { + sa_family_t family; + const char* atsign; +#ifdef INET6 /* | address ip | % | ifa name | @ | port | nul */ + char addr_buf[INET6_ADDRSTRLEN + 1 + IF_NAMESIZE + 1 + 16 + 1]; +#else + char addr_buf[INET_ADDRSTRLEN + 1 + 16 + 1]; +#endif + + if((atsign=strrchr(search_ifa, '@')) != NULL) { + if(strlen(ifa->ifa_name) != (size_t)(atsign-search_ifa) + || strncmp(ifa->ifa_name, search_ifa, + atsign-search_ifa) != 0) + continue; + } else { + if(strcmp(ifa->ifa_name, search_ifa) != 0) + continue; + atsign = ""; + } + + if(ifa->ifa_addr == NULL) + continue; + + family = ifa->ifa_addr->sa_family; + if(family == AF_INET) { + char a4[INET_ADDRSTRLEN + 1]; + struct sockaddr_in *in4 = (struct sockaddr_in *) + ifa->ifa_addr; + if(!inet_ntop(family, &in4->sin_addr, a4, sizeof(a4))) { + log_err("inet_ntop failed"); + return 0; + } + snprintf(addr_buf, sizeof(addr_buf), "%s%s", + a4, atsign); + } +#ifdef INET6 + else if(family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) + ifa->ifa_addr; + char a6[INET6_ADDRSTRLEN + 1]; + char if_index_name[IF_NAMESIZE + 1]; + if_index_name[0] = 0; + if(!inet_ntop(family, &in6->sin6_addr, a6, sizeof(a6))) { + log_err("inet_ntop failed"); + return 0; + } + if_indextoname(in6->sin6_scope_id, + (char *)if_index_name); + if (strlen(if_index_name) != 0) { + snprintf(addr_buf, sizeof(addr_buf), + "%s%%%s%s", a6, if_index_name, atsign); + } else { + snprintf(addr_buf, sizeof(addr_buf), "%s%s", + a6, atsign); + } + } +#endif + else { + continue; + } + verbose(4, "interface %s has address %s", search_ifa, addr_buf); + + *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!*ip_addresses) { + log_err("realloc failed: out of memory"); + return 0; + } + (*ip_addresses)[*ip_addresses_size] = strdup(addr_buf); + if(!(*ip_addresses)[*ip_addresses_size]) { + log_err("strdup failed: out of memory"); + return 0; + } + (*ip_addresses_size)++; + } + + if (*ip_addresses_size == last_ip_addresses_size) { + *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!*ip_addresses) { + log_err("realloc failed: out of memory"); + return 0; + } + (*ip_addresses)[*ip_addresses_size] = strdup(search_ifa); + if(!(*ip_addresses)[*ip_addresses_size]) { + log_err("strdup failed: out of memory"); + return 0; + } + (*ip_addresses_size)++; + } + return 1; +} +#endif /* HAVE_GETIFADDRS */ + +int resolve_interface_names(struct config_file* cfg, char*** resif, + int* num_resif) +{ +#ifdef HAVE_GETIFADDRS + int i; + struct ifaddrs *addrs; + if(cfg->num_ifs == 0) { + *resif = NULL; + *num_resif = 0; + return 1; + } + if(getifaddrs(&addrs) == -1) { + log_err("failed to list interfaces: getifaddrs: %s", + strerror(errno)); + freeifaddrs(addrs); + return 0; + } + for(i=0; inum_ifs; i++) { + if(!resolve_ifa_name(addrs, cfg->ifs[i], resif, num_resif)) { + freeifaddrs(addrs); + config_del_strarray(*resif, *num_resif); + *resif = NULL; + *num_resif = 0; + return 0; + } + } + freeifaddrs(addrs); + return 1; +#else + int i; + if(cfg->num_ifs == 0) { + *resif = NULL; + *num_resif = 0; + return 1; + } + *num_resif = cfg->num_ifs; + *resif = calloc(*num_resif, sizeof(**resif)); + if(!*resif) { + log_err("out of memory"); + return 0; + } + for(i=0; i<*num_resif; i++) { + (*resif)[i] = strdup(cfg->ifs[i]); + if(!((*resif)[i])) { + log_err("out of memory"); + config_del_strarray(*resif, *num_resif); + *resif = NULL; + *num_resif = 0; + return 0; + } + } + return 1; +#endif /* HAVE_GETIFADDRS */ +} + struct listen_port* -listening_ports_open(struct config_file* cfg, int* reuseport) +listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, + int* reuseport) { struct listen_port* list = NULL; struct addrinfo hints; @@ -1459,7 +1621,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_PASSIVE; /* no name lookups on our listening ports */ - if(cfg->num_ifs > 0) + if(num_ifs > 0) hints.ai_flags |= AI_NUMERICHOST; hints.ai_family = AF_UNSPEC; #ifndef INET6 @@ -1469,7 +1631,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) return NULL; } /* create ip4 and ip6 ports so that return addresses are nice. */ - if(do_auto || cfg->num_ifs == 0) { + if(do_auto || num_ifs == 0) { if(do_ip6) { hints.ai_family = AF_INET6; if(!ports_create_if(do_auto?"::0":"::1", @@ -1498,12 +1660,12 @@ listening_ports_open(struct config_file* cfg, int* reuseport) return NULL; } } - } else for(i = 0; inum_ifs; i++) { - if(str_is_ip6(cfg->ifs[i])) { + } else for(i = 0; iifs[i], 0, cfg->do_udp, + if(!ports_create_if(ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, @@ -1517,7 +1679,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) if(!do_ip4) continue; hints.ai_family = AF_INET; - if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, + if(!ports_create_if(ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index ddd1b63a4..680ec84bb 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -117,19 +117,32 @@ 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 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, * set to false on exit if reuseport failed to apply (because of no * kernel support). * @return: linked list of ports or NULL on error. */ struct listen_port* listening_ports_open(struct config_file* cfg, - int* reuseport); + char** ifs, int num_ifs, int* reuseport); /** * Close and delete the (list of) listening ports. */ void listening_ports_free(struct listen_port* list); +/** + * Resolve interface names in config and store result IP addresses + * @param cfg: config + * @param resif: string array (malloced array of malloced strings) with + * result. NULL if cfg has none. + * @param num_resif: length of resif. Zero if cfg has zero num_ifs. + * @return 0 on failure. + */ +int resolve_interface_names(struct config_file* cfg, char*** resif, + int* num_resif); + /** * Create commpoints with for this thread for the shared ports. * @param base: the comm_base that provides event functionality. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 59df27f57..2ffb46c3a 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1300,7 +1300,14 @@ void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg) log_info("double delete of pending serviced query"); } +int resolve_interface_names(struct config_file* ATTR_UNUSED(cfg), + char*** ATTR_UNUSED(resif), int* ATTR_UNUSED(num_resif)) +{ + return 1; +} + struct listen_port* listening_ports_open(struct config_file* ATTR_UNUSED(cfg), + char** ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs), int* ATTR_UNUSED(reuseport)) { return calloc(1, 1); diff --git a/util/config_file.c b/util/config_file.c index e1c372b0e..5f79baa7e 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1387,8 +1387,8 @@ config_delviews(struct config_view* p) p = np; } } -/** delete string array */ -static void + +void config_del_strarray(char** array, int num) { int i; diff --git a/util/config_file.h b/util/config_file.h index cdae04c23..948bd1d0d 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -969,6 +969,9 @@ void config_deldblstrlist(struct config_str2list* list); */ void config_deltrplstrlist(struct config_str3list* list); +/** delete string array */ +void config_del_strarray(char** array, int num); + /** delete stringbytelist */ void config_del_strbytelist(struct config_strbytelist* list); From b5a237424b8d4f510672f1b5010dc7391fdd86ee Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 15:12:46 +0200 Subject: [PATCH 184/394] Please doxygen, quote the characters to stop it from parsing a doxygen command. --- services/listen_dnsport.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 680ec84bb..83bdf48e8 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -117,7 +117,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 ifs: interfaces to open, array of IP addresses, ip[@port]. + * @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, * set to false on exit if reuseport failed to apply (because of no From 12c0cf7cee6a5d57cd768dd1f8e8e041ada286fe Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 15:27:05 +0200 Subject: [PATCH 185/394] - Review fix, doxygen and assign null in case of error free. --- doc/Changelog | 1 + services/listen_dnsport.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 11e81088f..10ab6efae 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and uses the IP addresses for that named interface. + - Review fix, doxygen and assign null in case of error free. 26 August 2020: George - Update documentation in python example code. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 63d9f0398..51fe39e0f 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1550,7 +1550,7 @@ int resolve_interface_names(struct config_file* cfg, char*** resif, { #ifdef HAVE_GETIFADDRS int i; - struct ifaddrs *addrs; + struct ifaddrs *addrs = NULL; if(cfg->num_ifs == 0) { *resif = NULL; *num_resif = 0; From 2460737490941695cc824436824c12aa47edf14c Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Fri, 28 Aug 2020 17:31:14 +0200 Subject: [PATCH 186/394] Add missing prototype. --- services/listen_dnsport.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 83bdf48e8..d33a5395f 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -384,5 +384,6 @@ size_t tcp_req_info_get_stream_buffer_size(void); char* set_ip_dscp(int socket, int addrfamily, int ds); char* sock_strerror(int errn); +void sock_close(int socket); #endif /* LISTEN_DNSPORT_H */ From f22ac44f898b3fc2510368e92bc7093a5fe41565 Mon Sep 17 00:00:00 2001 From: niftylettuce Date: Sat, 29 Aug 2020 20:56:19 -0500 Subject: [PATCH 187/394] docs: fixed typo lean > learn --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7120d486f..3e11ce58c 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ fast and lean and incorporates modern features based on open standards. If you have any feedback, we would love to hear from you. Don’t hesitate to [create an issue on Github](https://github.com/NLnetLabs/unbound/issues/new) or post a message on the [Unbound mailing list](https://lists.nlnetlabs.nl/mailman/listinfo/unbound-users). -You can lean more about Unbound by reading our +You can learn more about Unbound by reading our [documentation](https://nlnetlabs.nl/documentation/unbound/). ## Compiling From a6dc0743b47b909f75c7e434a6b44e6872e6c3b6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 08:41:34 +0200 Subject: [PATCH 188/394] - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. --- daemon/remote.c | 12 +-- dnstap/dtstream.c | 6 +- dnstap/unbound-dnstap-socket.c | 15 +--- doc/Changelog | 4 + services/listen_dnsport.c | 131 ++++++--------------------------- services/listen_dnsport.h | 2 - services/outside_network.c | 9 +-- smallapp/unbound-control.c | 6 +- testcode/delayer.c | 37 ++-------- testcode/perf.c | 6 +- testcode/streamtcp.c | 6 +- util/net_help.c | 28 +++++++ util/net_help.h | 6 ++ util/netevent.c | 12 +-- 14 files changed, 83 insertions(+), 197 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index aa263d074..94bc2c57e 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -348,11 +348,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, /* alloc */ n = (struct listen_port*)calloc(1, sizeof(*n)); if(!n) { -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); log_err("out of memory"); return 0; } @@ -461,11 +457,7 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, if(rc->active >= rc->max_active) { log_warn("drop incoming remote control: too many connections"); close_exit: -#ifndef USE_WINSOCK - close(newfd); -#else - closesocket(newfd); -#endif + sock_close(newfd); return 0; } diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 63d517cb8..26eac063a 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -588,11 +588,7 @@ static void dtio_del_output_event(struct dt_io_thread* dtio) /** close dtio socket and set it to -1 */ static void dtio_close_fd(struct dt_io_thread* dtio) { -#ifndef USE_WINSOCK - close(dtio->fd); -#else - closesocket(dtio->fd); -#endif + sock_close(dtio->fd); dtio->fd = -1; } diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 44a0eda95..80a117617 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -292,12 +292,11 @@ static int make_tcp_accept(char* ip) #ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #endif /* SO_REUSEADDR */ @@ -305,30 +304,24 @@ static int make_tcp_accept(char* ip) #ifndef USE_WINSOCK log_err_addr("can't bind socket", strerror(errno), &addr, len); - close(s); #else log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), &addr, len); - closesocket(s); #endif + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } if(listen(s, LISTEN_BACKLOG) == -1) { #ifndef USE_WINSOCK log_err("can't listen: %s", strerror(errno)); - close(s); #else log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } return s; diff --git a/doc/Changelog b/doc/Changelog index 10ab6efae..a7a95464a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +31 August 2020: Wouter + - Merge PR #293: Add missing prototype. Also refactor to use the new + shorthand function to clean up the code. + 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 51fe39e0f..e749147e5 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -356,13 +356,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUFFORCE, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_RCVBUFFORCE, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -373,13 +372,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUF, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_RCVBUF, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -415,13 +413,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUFFORCE, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_SNDBUFFORCE, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -432,13 +429,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUF, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_SNDBUF, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -471,13 +467,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY" ", ...) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(..., IPV6_V6ONLY" ", ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -498,13 +493,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_USE_MIN_MTU, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., IPV6_USE_MIN_MTU, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -520,12 +514,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -549,12 +542,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if (errno != EINVAL) { log_err("setsockopt(..., IP_MTU_DISCOVER, IP_PMTUDISC_OMIT...) failed: %s", strerror(errno)); - -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -571,11 +559,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, &action, (socklen_t)sizeof(action)) < 0) { log_err("setsockopt(..., IP_MTU_DISCOVER, IP_PMTUDISC_DONT...) failed: %s", strerror(errno)); -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -587,11 +571,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, &off, (socklen_t)sizeof(off)) < 0) { log_err("setsockopt(..., IP_DONTFRAG, ...) failed: %s", strerror(errno)); -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -621,7 +601,6 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, (struct sockaddr_storage*)addr, addrlen); } #endif /* EADDRINUSE */ - close(s); #else /* USE_WINSOCK */ if(WSAGetLastError() != WSAEADDRINUSE && WSAGetLastError() != WSAEADDRNOTAVAIL && @@ -630,18 +609,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr, addrlen); } - closesocket(s); #endif /* USE_WINSOCK */ + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { *noproto = 0; *inuse = 0; -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } return s; @@ -727,12 +702,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #endif /* SO_REUSEADDR */ @@ -770,12 +744,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } } @@ -822,32 +795,26 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, (struct sockaddr_storage*)addr->ai_addr, addr->ai_addrlen); } - close(s); #else log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr->ai_addr, addr->ai_addrlen); - closesocket(s); #endif + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } if(listen(s, TCP_BACKLOG) == -1) { #ifndef USE_WINSOCK log_err("can't listen: %s", strerror(errno)); - close(s); #else log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #ifdef USE_TCP_FASTOPEN @@ -902,34 +869,6 @@ set_ip_dscp(int socket, int addrfamily, int dscp) return NULL; } -# ifndef USE_WINSOCK -char* -sock_strerror(int errn) -{ - return strerror(errn); -} - -void -sock_close(int socket) -{ - close(socket); -} - -# else -char* -sock_strerror(int ATTR_UNUSED(errn)) -{ - return wsa_strerror(WSAGetLastError()); -} - -void -sock_close(int socket) -{ - closesocket(socket); -} - -# endif /* USE_WINSOCK */ - int create_local_accept_sock(const char *path, int* noproto, int use_systemd) { @@ -990,11 +929,7 @@ create_local_accept_sock(const char *path, int* noproto, int use_systemd) return s; err: -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; #ifdef HAVE_SYSTEMD @@ -1245,20 +1180,12 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } /* getting source addr packet info is highly non-portable */ if(!set_recvpktinfo(s, hints->ai_family)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } if(!port_insert(list, s, is_dnscrypt?listen_type_udpancil_dnscrypt:listen_type_udpancil)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } else if(do_udp) { @@ -1274,11 +1201,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } if(!port_insert(list, s, is_dnscrypt?listen_type_udp_dnscrypt:listen_type_udp)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } @@ -1298,11 +1221,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, verbose(VERB_ALGO, "setup TCP for SSL service"); if(!port_insert(list, s, is_ssl?listen_type_ssl: (is_dnscrypt?listen_type_tcp_dnscrypt:listen_type_tcp))) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } @@ -1700,11 +1619,7 @@ void listening_ports_free(struct listen_port* list) while(list) { nx = list->next; if(list->fd != -1) { -#ifndef USE_WINSOCK - close(list->fd); -#else - closesocket(list->fd); -#endif + sock_close(list->fd); } free(list); list = nx; diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index d33a5395f..c7daa9e75 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -383,7 +383,5 @@ int tcp_req_info_handle_read_close(struct tcp_req_info* req); size_t tcp_req_info_get_stream_buffer_size(void); char* set_ip_dscp(int socket, int addrfamily, int ds); -char* sock_strerror(int errn); -void sock_close(int socket); #endif /* LISTEN_DNSPORT_H */ diff --git a/services/outside_network.c b/services/outside_network.c index 67eca05ed..ba07444df 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -166,11 +166,7 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) if(num == 0) { log_err("no TCP outgoing interfaces of family"); log_addr(VERB_OPS, "for addr", &w->addr, w->addrlen); -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } #ifdef INET6 @@ -191,12 +187,11 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) if(bind(s, (struct sockaddr*)&pi->addr, pi->addrlen) != 0) { #ifndef USE_WINSOCK log_err("outgoing tcp: bind: %s", strerror(errno)); - close(s); #else log_err("outgoing tcp: bind: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return 0; } log_addr(VERB_ALGO, "tcp bound to src", &pi->addr, pi->addrlen); diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 4662c7cb6..5936679e6 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -824,11 +824,7 @@ go(const char* cfgfile, char* svr, int quiet, int argc, char* argv[]) ret = go_cmd(ssl, fd, quiet, argc, argv); if(ssl) SSL_free(ssl); -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); if(ctx) SSL_CTX_free(ctx); config_delete(cfg); return ret; diff --git a/testcode/delayer.c b/testcode/delayer.c index ebf883926..6562f80e6 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -550,15 +550,9 @@ tcp_proxy_delete(struct tcp_proxy* p) free(s); s = sn; } -#ifndef USE_WINSOCK - close(p->client_s); + sock_close(p->client_s); if(p->server_s != -1) - close(p->server_s); -#else - closesocket(p->client_s); - if(p->server_s != -1) - closesocket(p->server_s); -#endif + sock_close(p->server_s); free(p); } @@ -607,16 +601,14 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, #ifndef USE_WINSOCK if(errno != EINPROGRESS) { log_err("tcp connect: %s", strerror(errno)); - close(p->server_s); - close(p->client_s); #else if(WSAGetLastError() != WSAEWOULDBLOCK && WSAGetLastError() != WSAEINPROGRESS) { log_err("tcp connect: %s", wsa_strerror(WSAGetLastError())); - closesocket(p->server_s); - closesocket(p->client_s); #endif + sock_close(p->server_s); + sock_close(p->client_s); free(p); return; } @@ -769,11 +761,7 @@ service_tcp_relay(struct tcp_proxy** tcp_proxies, struct timeval* now, log_addr(1, "read tcp answer", &p->addr, p->addr_len); if(!tcp_relay_read(p->server_s, &p->answerlist, &p->answerlast, now, delay, pkt)) { -#ifndef USE_WINSOCK - close(p->server_s); -#else - closesocket(p->server_s); -#endif + sock_close(p->server_s); FD_CLR(FD_SET_T p->server_s, worig); FD_CLR(FD_SET_T p->server_s, rorig); p->server_s = -1; @@ -901,11 +889,7 @@ proxy_list_clear(struct proxy* p) "%u returned\n", i++, from, port, (int)p->numreuse+1, (unsigned)p->numwait, (unsigned)p->numsent, (unsigned)p->numreturn); -#ifndef USE_WINSOCK - close(p->s); -#else - closesocket(p->s); -#endif + sock_close(p->s); free(p); p = np; } @@ -1109,13 +1093,8 @@ service(const char* bind_str, int bindport, const char* serv_str, /* cleanup */ verbose(1, "cleanup"); -#ifndef USE_WINSOCK - close(s); - close(listen_s); -#else - closesocket(s); - closesocket(listen_s); -#endif + sock_close(s); + sock_close(listen_s); sldns_buffer_free(pkt); ring_delete(ring); } diff --git a/testcode/perf.c b/testcode/perf.c index 5b170ca57..aef69045f 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -260,11 +260,7 @@ perffree(struct perfinfo* info) if(!info) return; if(info->io) { for(i=0; iio_num; i++) { -#ifndef USE_WINSOCK - close(info->io[i].fd); -#else - closesocket(info->io[i].fd); -#endif + sock_close(info->io[i].fd); } free(info->io); } diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index c49159d33..ffdddbe9d 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -388,11 +388,7 @@ send_em(const char* svr, int udp, int usessl, int noanswer, int onarrival, SSL_free(ssl); SSL_CTX_free(ctx); } -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); sldns_buffer_free(buf); printf("orderly exit\n"); } diff --git a/util/net_help.c b/util/net_help.c index 4d985b66d..b51e0372e 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1562,3 +1562,31 @@ listen_sslctx_delete_ticket_keys(void) free(ticket_keys); ticket_keys = NULL; } + +# ifndef USE_WINSOCK +char* +sock_strerror(int errn) +{ + return strerror(errn); +} + +void +sock_close(int socket) +{ + close(socket); +} + +# else +char* +sock_strerror(int ATTR_UNUSED(errn)) +{ + return wsa_strerror(WSAGetLastError()); +} + +void +sock_close(int socket) +{ + closesocket(socket); +} + +# endif /* USE_WINSOCK */ diff --git a/util/net_help.h b/util/net_help.h index 29943ada0..45b607a43 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -496,4 +496,10 @@ void listen_sslctx_delete_ticket_keys(void); */ int netblockdnametoaddr(uint8_t* dname, size_t dnamelen, struct sockaddr_storage* addr, socklen_t* addrlen, int* net, int* af); + +/** Return strerror or wsastrerror for socket error printout */ +char* sock_strerror(int errn); +/** close the socket with close, or wsa closesocket */ +void sock_close(int socket); + #endif /* NET_HELP_H */ diff --git a/util/netevent.c b/util/netevent.c index 3e7a433e5..6172adb1f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3087,11 +3087,7 @@ comm_point_close(struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); } verbose(VERB_ALGO, "close fd %d", c->fd); -#ifndef USE_WINSOCK - close(c->fd); -#else - closesocket(c->fd); -#endif + sock_close(c->fd); } c->fd = -1; } @@ -3232,11 +3228,7 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) } if(newfd != -1) { if(c->fd != -1) { -#ifndef USE_WINSOCK - close(c->fd); -#else - closesocket(c->fd); -#endif + sock_close(c->fd); } c->fd = newfd; ub_event_set_fd(c->ev->ev, c->fd); From 47a5dc8cae9733e636da09ee84b9f108f20328c0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 09:12:01 +0200 Subject: [PATCH 189/394] - Refactor to use sock_strerr shorthand function. --- daemon/remote.c | 20 ++----- dnstap/dtstream.c | 50 ++++-------------- dnstap/unbound-dnstap-socket.c | 49 ++++------------- doc/Changelog | 1 + services/listen_dnsport.c | 96 ++++++---------------------------- services/outside_network.c | 14 +---- smallapp/unbound-control.c | 18 ++----- testcode/delayer.c | 78 ++++++--------------------- testcode/perf.c | 19 ++----- util/netevent.c | 45 +++++----------- 10 files changed, 77 insertions(+), 313 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 94bc2c57e..bd1039d06 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -566,11 +566,8 @@ ssl_print_text(RES* res, const char* text) if(r == -1) { if(errno == EAGAIN || errno == EINTR) continue; -#ifndef USE_WINSOCK - log_err("could not send: %s", strerror(errno)); -#else - log_err("could not send: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not send: %s", + sock_strerror(errno)); return 0; } at += r; @@ -627,11 +624,8 @@ ssl_read_line(RES* res, char* buf, size_t max) } if(errno == EINTR || errno == EAGAIN) continue; -#ifndef USE_WINSOCK - log_err("could not recv: %s", strerror(errno)); -#else - log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not recv: %s", + sock_strerror(errno)); return 0; } break; @@ -3108,11 +3102,7 @@ handle_req(struct daemon_remote* rc, struct rc_state* s, RES* res) if(rr == 0) return; if(errno == EINTR || errno == EAGAIN) continue; -#ifndef USE_WINSOCK - log_err("could not recv: %s", strerror(errno)); -#else - log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not recv: %s", sock_strerror(errno)); return; } r = (int)rr; diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 26eac063a..a778bb64b 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -149,15 +149,14 @@ static void dtio_wakeup(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) continue; - log_err("dnstap io wakeup: write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) continue; if(WSAGetLastError() == WSAEWOULDBLOCK) continue; - log_err("dnstap io stop: write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io wakeup: write: %s", + sock_strerror(errno)); break; } break; @@ -656,13 +655,8 @@ static int dtio_check_nb_connect(struct dt_io_thread* dtio) char* to = dtio->socket_path; if(!to) to = dtio->ip_str; if(!to) to = ""; -#ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", - to, strerror(error)); -#else - log_err("dnstap io: failed to connect to \"%s\": %s", - to, wsa_strerror(error)); -#endif + to, sock_strerror(error)); return -1; /* error, close it */ } @@ -739,7 +733,6 @@ static int dtio_write_buf(struct dt_io_thread* dtio, uint8_t* buf, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 0; - log_err("dnstap io: failed send: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return 0; @@ -749,9 +742,8 @@ static int dtio_write_buf(struct dt_io_thread* dtio, uint8_t* buf, UB_EV_WRITE); return 0; } - log_err("dnstap io: failed send: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed send: %s", sock_strerror(errno)); return -1; } return ret; @@ -775,7 +767,6 @@ static int dtio_write_with_writev(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 0; - log_err("dnstap io: failed writev: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return 0; @@ -785,9 +776,8 @@ static int dtio_write_with_writev(struct dt_io_thread* dtio) UB_EV_WRITE); return 0; } - log_err("dnstap io: failed writev: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed writev: %s", sock_strerror(errno)); /* close the channel */ dtio_del_output_event(dtio); dtio_close_output(dtio); @@ -1479,15 +1469,13 @@ void dtio_cmd_cb(int fd, short ATTR_UNUSED(bits), void* arg) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return; /* ignore this */ - log_err("dnstap io: failed to read: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return; if(WSAGetLastError() == WSAEWOULDBLOCK) return; - log_err("dnstap io: failed to read: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed to read: %s", sock_strerror(errno)); /* and then fall through to quit the thread */ } else if(r == 0) { verbose(VERB_ALGO, "dnstap io: cmd channel closed"); @@ -1849,13 +1837,8 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) struct sockaddr_un s; dtio->fd = socket(AF_LOCAL, SOCK_STREAM, 0); if(dtio->fd == -1) { -#ifndef USE_WINSOCK log_err("dnstap io: failed to create socket: %s", - strerror(errno)); -#else - log_err("dnstap io: failed to create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); return 0; } memset(&s, 0, sizeof(s)); @@ -1875,13 +1858,8 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) dtio_close_fd(dtio); return 0; /* no log retries on low verbosity */ } -#ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", - to, strerror(errno)); -#else - log_err("dnstap io: failed to connect to \"%s\": %s", - to, wsa_strerror(WSAGetLastError())); -#endif + to, sock_strerror(errno)); dtio_close_fd(dtio); return 0; } @@ -1906,12 +1884,7 @@ static int dtio_open_output_tcp(struct dt_io_thread* dtio) } dtio->fd = socket(addr.ss_family, SOCK_STREAM, 0); if(dtio->fd == -1) { -#ifndef USE_WINSOCK - log_err("can't create socket: %s", strerror(errno)); -#else - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("can't create socket: %s", sock_strerror(errno)); return 0; } fd_set_nonblock(dtio->fd); @@ -2104,15 +2077,14 @@ void dt_io_thread_stop(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) continue; - log_err("dnstap io stop: write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) continue; if(WSAGetLastError() == WSAEWOULDBLOCK) continue; - log_err("dnstap io stop: write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io stop: write: %s", + sock_strerror(errno)); break; } break; diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 80a117617..ca950c8bf 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -278,36 +278,21 @@ static int make_tcp_accept(char* ip) } if((s = socket(addr.ss_family, SOCK_STREAM, 0)) == -1) { -#ifndef USE_WINSOCK - log_err("can't create socket: %s", strerror(errno)); -#else - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("can't create socket: %s", sock_strerror(errno)); return -1; } #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } #endif /* SO_REUSEADDR */ if(bind(s, (struct sockaddr*)&addr, len) != 0) { -#ifndef USE_WINSOCK - log_err_addr("can't bind socket", strerror(errno), + log_err_addr("can't bind socket", sock_strerror(errno), &addr, len); -#else - log_err_addr("can't bind socket", - wsa_strerror(WSAGetLastError()), &addr, len); -#endif sock_close(s); return -1; } @@ -316,11 +301,7 @@ static int make_tcp_accept(char* ip) return -1; } if(listen(s, LISTEN_BACKLOG) == -1) { -#ifndef USE_WINSOCK - log_err("can't listen: %s", strerror(errno)); -#else - log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("can't listen: %s", sock_strerror(errno)); sock_close(s); return -1; } @@ -647,7 +628,6 @@ static ssize_t receive_bytes(struct tap_data* data, int fd, void* buf, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return -1; - log_err("could not recv: %s", strerror(errno)); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS) return -1; @@ -655,9 +635,8 @@ static ssize_t receive_bytes(struct tap_data* data, int fd, void* buf, ub_winsock_tcp_wouldblock(data->ev, UB_EV_READ); return -1; } - log_err("could not recv: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("could not recv: %s", sock_strerror(errno)); if(verbosity) log_info("dnstap client stream closed from %s", (data->id?data->id:"")); return 0; @@ -789,12 +768,7 @@ static int reply_with_accept(struct tap_data* data) } } else { if(send(data->fd, acceptframe, len, 0) == -1) { -#ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); -#else - log_err("send failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("send failed: %s", sock_strerror(errno)); fd_set_nonblock(data->fd); free(acceptframe); return 0; @@ -827,11 +801,7 @@ static int reply_with_finish(int fd) fd_set_block(fd); if(send(fd, finishframe, len, 0) == -1) { -#ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); -#else - log_err("send failed: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("send failed: %s", sock_strerror(errno)); fd_set_nonblock(fd); free(finishframe); return 0; @@ -1087,7 +1057,6 @@ void dtio_mainfdcallback(int fd, short ATTR_UNUSED(bits), void* arg) #endif /* EPROTO */ ) return; - log_err_addr("accept failed", strerror(errno), &addr, addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) @@ -1096,9 +1065,9 @@ void dtio_mainfdcallback(int fd, short ATTR_UNUSED(bits), void* arg) ub_winsock_tcp_wouldblock(maindata->ev, UB_EV_READ); return; } - log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), - &addr, addrlen); #endif + log_err_addr("accept failed", sock_strerror(errno), &addr, + addrlen); return; } fd_set_nonblock(s); diff --git a/doc/Changelog b/doc/Changelog index a7a95464a..5a327a23f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 31 August 2020: Wouter - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. + - Refactor to use sock_strerr shorthand function. 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index e749147e5..5a7370bf6 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -228,16 +228,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, *noproto = 1; return -1; } - log_err("can't create socket: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEAFNOSUPPORT || WSAGetLastError() == WSAEPROTONOSUPPORT) { *noproto = 1; return -1; } - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("can't create socket: %s", sock_strerror(errno)); *noproto = 0; return -1; } @@ -250,9 +248,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); + sock_strerror(errno)); +#ifndef USE_WINSOCK if(errno != ENOSYS) { close(s); *noproto = 0; @@ -260,8 +258,6 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } #else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); closesocket(s); *noproto = 0; *inuse = 0; @@ -353,14 +349,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if(setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { if(errno != EPERM) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUFFORCE, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_RCVBUFFORCE, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -369,14 +359,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # endif /* SO_RCVBUFFORCE */ if(setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUF, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_RCVBUF, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -410,14 +394,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { if(errno != EPERM) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUFFORCE, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_SNDBUFFORCE, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -426,14 +404,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # endif /* SO_SNDBUFFORCE */ if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUF, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_SNDBUF, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -464,14 +436,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int val=(v6only==2)?0:1; if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&val, (socklen_t)sizeof(val)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY" - ", ...) failed: %s", strerror(errno)); -#else - log_err("setsockopt(..., IPV6_V6ONLY" - ", ...) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + ", ...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -490,14 +456,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, */ if (setsockopt(s, IPPROTO_IPV6, IPV6_USE_MIN_MTU, (void*)&on, (socklen_t)sizeof(on)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_USE_MIN_MTU, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., IPV6_USE_MIN_MTU, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -511,13 +471,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, */ if (setsockopt(s, IPPROTO_IPV6, IPV6_MTU, (void*)&mtu, (socklen_t)sizeof(mtu)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", - strerror(errno)); -# else - log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -660,29 +615,22 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, *noproto = 1; return -1; } - log_err("can't create socket: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEAFNOSUPPORT || WSAGetLastError() == WSAEPROTONOSUPPORT) { *noproto = 1; return -1; } - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("can't create socket: %s", sock_strerror(errno)); return -1; } if (mss > 0) { #if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG, (void*)&mss, (socklen_t)sizeof(mss)) < 0) { - #ifndef USE_WINSOCK log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", - strerror(errno)); - #else - log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", - wsa_strerror(WSAGetLastError())); - #endif + sock_strerror(errno)); } else { verbose(VERB_ALGO, " tcp socket mss set to %d", mss); @@ -699,13 +647,8 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } @@ -741,13 +684,8 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, if(addr->ai_family == AF_INET6 && v6only) { if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } @@ -809,11 +747,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, return -1; } if(listen(s, TCP_BACKLOG) == -1) { -#ifndef USE_WINSOCK - log_err("can't listen: %s", strerror(errno)); -#else - log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("can't listen: %s", sock_strerror(errno)); sock_close(s); return -1; } diff --git a/services/outside_network.c b/services/outside_network.c index ba07444df..085d0e6ae 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -185,12 +185,7 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) ((struct sockaddr_in6*)&pi->addr)->sin6_port = 0; else ((struct sockaddr_in*)&pi->addr)->sin_port = 0; if(bind(s, (struct sockaddr*)&pi->addr, pi->addrlen) != 0) { -#ifndef USE_WINSOCK - log_err("outgoing tcp: bind: %s", strerror(errno)); -#else - log_err("outgoing tcp: bind: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("outgoing tcp: bind: %s", sock_strerror(errno)); sock_close(s); return 0; } @@ -221,13 +216,8 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); } if(s == -1) { -#ifndef USE_WINSOCK - log_err_addr("outgoing tcp: socket", strerror(errno), + log_err_addr("outgoing tcp: socket", sock_strerror(errno), addr, addrlen); -#else - log_err_addr("outgoing tcp: socket", - wsa_strerror(WSAGetLastError()), addr, addrlen); -#endif return -1; } diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 5936679e6..9ec137635 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -593,11 +593,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) addrfamily = addr_is_ip6(&addr, addrlen)?PF_INET6:PF_INET; fd = socket(addrfamily, SOCK_STREAM, proto); if(fd == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } if(connect(fd, (struct sockaddr*)&addr, addrlen) < 0) { #ifndef USE_WINSOCK @@ -681,11 +677,7 @@ remote_read(SSL* ssl, int fd, char* buf, size_t len) /* EOF */ return 0; } -#ifndef USE_WINSOCK - fatal_exit("could not recv: %s", strerror(errno)); -#else - fatal_exit("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("could not recv: %s", sock_strerror(errno)); } buf[rr] = 0; } @@ -701,11 +693,7 @@ remote_write(SSL* ssl, int fd, const char* buf, size_t len) ssl_err("could not SSL_write"); } else { if(send(fd, buf, len, 0) < (ssize_t)len) { -#ifndef USE_WINSOCK - fatal_exit("could not send: %s", strerror(errno)); -#else - fatal_exit("could not send: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("could not send: %s", sock_strerror(errno)); } } } diff --git a/testcode/delayer.c b/testcode/delayer.c index 6562f80e6..54175dbe3 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -372,11 +372,7 @@ service_send(struct ringbuf* ring, struct timeval* now, sldns_buffer* pkt, sldns_buffer_limit(pkt), 0, (struct sockaddr*)srv_addr, srv_len); if(sent == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } else if(sent != (ssize_t)sldns_buffer_limit(pkt)) { log_err("sendto: partial send"); } @@ -398,13 +394,12 @@ do_proxy(struct proxy* p, int retsock, sldns_buffer* pkt) #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - log_err("recv: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK) return; - log_err("recv: %s", wsa_strerror(WSAGetLastError())); #endif + log_err("recv: %s", sock_strerror(errno)); return; } sldns_buffer_set_limit(pkt, (size_t)r); @@ -414,11 +409,7 @@ do_proxy(struct proxy* p, int retsock, sldns_buffer* pkt) r = sendto(retsock, (void*)sldns_buffer_begin(pkt), (size_t)r, 0, (struct sockaddr*)&p->addr, p->addr_len); if(r == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } } } @@ -469,11 +460,7 @@ find_create_proxy(struct sockaddr_storage* from, socklen_t from_len, if(!p) fatal_exit("out of memory"); p->s = socket(serv_ip6?AF_INET6:AF_INET, SOCK_DGRAM, 0); if(p->s == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } fd_set_nonblock(p->s); memmove(&p->addr, from, from_len); @@ -507,14 +494,12 @@ service_recv(int s, struct ringbuf* ring, sldns_buffer* pkt, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - fatal_exit("recvfrom: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS) return; - fatal_exit("recvfrom: %s", - wsa_strerror(WSAGetLastError())); #endif + fatal_exit("recvfrom: %s", sock_strerror(errno)); } sldns_buffer_set_limit(pkt, (size_t)len); /* find its proxy element */ @@ -571,14 +556,13 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - fatal_exit("accept: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) return; - fatal_exit("accept: %s", wsa_strerror(WSAGetLastError())); #endif + fatal_exit("accept: %s", sock_strerror(errno)); } p = (struct tcp_proxy*)calloc(1, sizeof(*p)); if(!p) fatal_exit("out of memory"); @@ -589,11 +573,7 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, p->server_s = socket(addr_is_ip6(srv_addr, srv_len)?AF_INET6:AF_INET, SOCK_STREAM, 0); if(p->server_s == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp socket: %s", strerror(errno)); -#else - fatal_exit("tcp socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp socket: %s", sock_strerror(errno)); } fd_set_nonblock(p->client_s); fd_set_nonblock(p->server_s); @@ -642,13 +622,12 @@ tcp_relay_read(int s, struct tcp_send_list** first, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err("tcp read: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK) return 1; - log_err("tcp read: %s", wsa_strerror(WSAGetLastError())); #endif + log_err("tcp read: %s", sock_strerror(errno)); return 0; } else if(r == 0) { /* connection closed */ @@ -700,14 +679,12 @@ tcp_relay_write(int s, struct tcp_send_list** first, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return 1; - log_err("tcp write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS) return 1; - log_err("tcp write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("tcp write: %s", sock_strerror(errno)); return 0; } else if(r == 0) { /* closed */ @@ -1018,11 +995,7 @@ service(const char* bind_str, int bindport, const char* serv_str, /* bind UDP port */ if((s = socket(str_is_ip6(bind_str)?AF_INET6:AF_INET, SOCK_DGRAM, 0)) == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } i=0; if(bindport == 0) { @@ -1035,11 +1008,7 @@ service(const char* bind_str, int bindport, const char* serv_str, exit(1); } if(bind(s, (struct sockaddr*)&bind_addr, bind_len) == -1) { -#ifndef USE_WINSOCK - log_err("bind: %s", strerror(errno)); -#else - log_err("bind: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("bind: %s", sock_strerror(errno)); if(i--==0) fatal_exit("cannot bind any port"); bindport = 1024 + ((int)arc4random())%64000; @@ -1049,39 +1018,22 @@ service(const char* bind_str, int bindport, const char* serv_str, /* and TCP port */ if((listen_s = socket(str_is_ip6(bind_str)?AF_INET6:AF_INET, SOCK_STREAM, 0)) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp socket: %s", strerror(errno)); -#else - fatal_exit("tcp socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp socket: %s", sock_strerror(errno)); } #ifdef SO_REUSEADDR if(1) { int on = 1; if(setsockopt(listen_s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) -#ifndef USE_WINSOCK fatal_exit("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - fatal_exit("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); } #endif if(bind(listen_s, (struct sockaddr*)&bind_addr, bind_len) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp bind: %s", strerror(errno)); -#else - fatal_exit("tcp bind: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp bind: %s", sock_strerror(errno)); } if(listen(listen_s, 5) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp listen: %s", strerror(errno)); -#else - fatal_exit("tcp listen: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp listen: %s", sock_strerror(errno)); } fd_set_nonblock(listen_s); printf("listening on port: %d\n", bindport); diff --git a/testcode/perf.c b/testcode/perf.c index aef69045f..b13eca6d3 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -233,12 +233,7 @@ perfsetup(struct perfinfo* info) addr_is_ip6(&info->dest, info->destlen)? AF_INET6:AF_INET, SOCK_DGRAM, 0); if(info->io[i].fd == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } if(info->io[i].fd > info->maxfd) info->maxfd = info->io[i].fd; @@ -281,11 +276,7 @@ perfsend(struct perfinfo* info, size_t n, struct timeval* now) /*log_hex("send", info->qlist_data[info->qlist_idx], info->qlist_len[info->qlist_idx]);*/ if(r == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } else if(r != (ssize_t)info->qlist_len[info->qlist_idx]) { log_err("partial sendto"); } @@ -305,11 +296,7 @@ perfreply(struct perfinfo* info, size_t n, struct timeval* now) r = recv(info->io[n].fd, (void*)sldns_buffer_begin(info->buf), sldns_buffer_capacity(info->buf), 0); if(r == -1) { -#ifndef USE_WINSOCK - log_err("recv: %s", strerror(errno)); -#else - log_err("recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("recv: %s", sock_strerror(errno)); } else { info->by_rcode[LDNS_RCODE_WIRE(sldns_buffer_begin( info->buf))]++; diff --git a/util/netevent.c b/util/netevent.c index 6172adb1f..d6b9d87a2 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -373,12 +373,7 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, if(sent == -1) { if(!udp_send_errno_needs_log(addr, addrlen)) return 0; -#ifndef USE_WINSOCK - verbose(VERB_OPS, "sendto failed: %s", strerror(errno)); -#else - verbose(VERB_OPS, "sendto failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + verbose(VERB_OPS, "sendto failed: %s", sock_strerror(errno)); log_addr(VERB_OPS, "remote address is", (struct sockaddr_storage*)addr, addrlen); return 0; @@ -845,7 +840,6 @@ int comm_point_perform_accept(struct comm_point* c, return -1; } #endif - log_err_addr("accept failed", strerror(errno), addr, *addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) @@ -854,9 +848,9 @@ int comm_point_perform_accept(struct comm_point* c, ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return -1; } - log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), - addr, *addrlen); #endif + log_err_addr("accept failed", sock_strerror(errno), addr, + *addrlen); return -1; } if(c->tcp_conn_limit && c->type == comm_tcp_accept) { @@ -1435,8 +1429,6 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif - log_err_addr("read (in tcp s)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1447,10 +1439,9 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) UB_EV_READ); return 1; } - log_err_addr("read (in tcp s)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in tcp s)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } c->tcp_byte_count += r; @@ -1483,8 +1474,6 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("read (in tcp r)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1494,10 +1483,9 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; } - log_err_addr("read (in tcp r)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in tcp r)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -1716,8 +1704,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif - log_err_addr("tcp send r", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else if(WSAGetLastError() == WSAEINPROGRESS) return 1; @@ -1727,9 +1713,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ - log_err_addr("tcp send r", wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("tcp send r", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(buffer, r); @@ -1914,8 +1900,6 @@ http_read_more(int fd, struct comm_point* c) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("read (in http r)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1925,10 +1909,9 @@ http_read_more(int fd, struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; } - log_err_addr("read (in http r)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in http r)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -2364,8 +2347,6 @@ http_write_more(int fd, struct comm_point* c) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("http send r", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else if(WSAGetLastError() == WSAEINPROGRESS) return 1; @@ -2373,9 +2354,9 @@ http_write_more(int fd, struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; } - log_err_addr("http send r", wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("http send r", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); From afbc7bb4fec5026f6a1a1487e643b94b2ba1d694 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 11:50:11 +0200 Subject: [PATCH 190/394] - Fix #296: systemd nss-lookup.target is reached before unbound can successfully answer queries. Changed contrib/unbound.service.in. --- contrib/unbound.service.in | 6 +++--- doc/Changelog | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index 8ebe529c9..c95ab94b3 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -42,9 +42,9 @@ [Unit] Description=Validating, recursive, and caching DNS resolver Documentation=man:unbound(8) -After=network.target -Before=network-online.target nss-lookup.target -Wants=nss-lookup.target +After=network-online.target +Before=nss-lookup.target +Wants=network-online.target nss-lookup.target [Install] WantedBy=multi-user.target diff --git a/doc/Changelog b/doc/Changelog index 5a327a23f..110da7f2b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. - Refactor to use sock_strerr shorthand function. + - Fix #296: systemd nss-lookup.target is reached before unbound can + successfully answer queries. Changed contrib/unbound.service.in. 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, From 82f2ee63c562bb8e0c64392ac22de79f5dd1d172 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 9 Sep 2020 11:44:44 +0200 Subject: [PATCH 191/394] - Fix num.expired statistics output. --- daemon/stats.c | 1 + doc/Changelog | 3 +++ 2 files changed, 4 insertions(+) diff --git a/daemon/stats.c b/daemon/stats.c index a568ba070..cb956ddd5 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -271,6 +271,7 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.ans_secure += (long long)worker->env.mesh->ans_secure; s->svr.ans_bogus += (long long)worker->env.mesh->ans_bogus; s->svr.ans_rcode_nodata += (long long)worker->env.mesh->ans_nodata; + s->svr.ans_expired += (long long)worker->env.mesh->ans_expired; for(i=0; isvr.ans_rcode[i] += (long long)worker->env.mesh->ans_rcode[i]; for(i=0; i Date: Thu, 10 Sep 2020 12:27:37 +0200 Subject: [PATCH 192/394] Ignore base64 padding for strings that are supposed to be unpadded. --- sldns/parseutil.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sldns/parseutil.c b/sldns/parseutil.c index f5d45823f..9f289d359 100644 --- a/sldns/parseutil.c +++ b/sldns/parseutil.c @@ -735,9 +735,12 @@ static int sldns_b64_pton_base(char const *src, size_t srcsize, uint8_t *target, d = 63; else if(base64url && d == '_') d = 63; - else if(!base64url && d == '=') + else if(d == '=') { + if(!check_padding) + continue; d = 64; - else continue; + } else continue; + in[incount++] = (uint8_t)d; /* work on block of 4, unless padding is not used and there are * less than 4 chars left */ From a3be2b73b64c2d6cce131ba7dd70b2647cd7a5f7 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 10 Sep 2020 13:05:55 +0200 Subject: [PATCH 193/394] Properly handle http_endpoint malloc failure. --- util/netevent.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/util/netevent.c b/util/netevent.c index 49ad08a4d..be3b740b5 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3152,11 +3152,19 @@ comm_point_create_http_handler(struct comm_base *base, if(harden_large_queries && bufsize > 512) c->http2_stream_max_qbuffer_size = 512; c->http2_max_streams = http_max_streams; - c->http_endpoint = strdup(http_endpoint); + if(!(c->http_endpoint = strdup(http_endpoint))) { + log_err("could not strdup http_endpoint"); + sldns_buffer_free(c->buffer); + free(c->timeout); + free(c->ev); + free(c); + return NULL; + } c->alpn_h2 = 0; #ifdef HAVE_NGHTTP2 if(!(c->h2_session = http2_session_create(c))) { log_err("could not create http2 session"); + free(c->http_endpoint); sldns_buffer_free(c->buffer); free(c->timeout); free(c->ev); @@ -3166,6 +3174,7 @@ comm_point_create_http_handler(struct comm_base *base, if(!(c->h2_session->callbacks = http2_req_callbacks_create())) { log_err("could not create http2 callbacks"); http2_session_delete(c->h2_session); + free(c->http_endpoint); sldns_buffer_free(c->buffer); free(c->timeout); free(c->ev); From 291ac5988812736bc70498d608f2b445fe64435c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Sep 2020 14:08:10 +0200 Subject: [PATCH 194/394] - Remove x file mode on ipset/ipset.c and h files. --- doc/Changelog | 3 +++ ipset/ipset.c | 0 ipset/ipset.h | 0 3 files changed, 3 insertions(+) mode change 100755 => 100644 ipset/ipset.c mode change 100755 => 100644 ipset/ipset.h diff --git a/doc/Changelog b/doc/Changelog index 9fb230cf8..e2ea4c7d8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +11 September 2020: Wouter + - Remove x file mode on ipset/ipset.c and h files. + 9 September 2020: Wouter - Fix num.expired statistics output. diff --git a/ipset/ipset.c b/ipset/ipset.c old mode 100755 new mode 100644 diff --git a/ipset/ipset.h b/ipset/ipset.h old mode 100755 new mode 100644 From 0ce77697194f280e699fc64fd1d27ff02b8b4294 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 15 Sep 2020 12:45:22 +0200 Subject: [PATCH 195/394] - Introduce test for statistics. --- doc/Changelog | 3 + testdata/stat_values.tdir/stat_values.conf | 31 ++ testdata/stat_values.tdir/stat_values.dsc | 16 + testdata/stat_values.tdir/stat_values.post | 14 + testdata/stat_values.tdir/stat_values.pre | 41 ++ testdata/stat_values.tdir/stat_values.test | 411 ++++++++++++++++++ .../stat_values.testexpiredns | 13 + testdata/stat_values.tdir/stat_values.testns | 23 + testdata/stat_values.tdir/unbound_control.key | 39 ++ testdata/stat_values.tdir/unbound_control.pem | 22 + testdata/stat_values.tdir/unbound_server.key | 39 ++ testdata/stat_values.tdir/unbound_server.pem | 22 + 12 files changed, 674 insertions(+) create mode 100644 testdata/stat_values.tdir/stat_values.conf create mode 100644 testdata/stat_values.tdir/stat_values.dsc create mode 100644 testdata/stat_values.tdir/stat_values.post create mode 100644 testdata/stat_values.tdir/stat_values.pre create mode 100644 testdata/stat_values.tdir/stat_values.test create mode 100644 testdata/stat_values.tdir/stat_values.testexpiredns create mode 100644 testdata/stat_values.tdir/stat_values.testns create mode 100644 testdata/stat_values.tdir/unbound_control.key create mode 100644 testdata/stat_values.tdir/unbound_control.pem create mode 100644 testdata/stat_values.tdir/unbound_server.key create mode 100644 testdata/stat_values.tdir/unbound_server.pem diff --git a/doc/Changelog b/doc/Changelog index e2ea4c7d8..593b57971 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 September 2020: George + - Introduce test for statistics. + 11 September 2020: Wouter - Remove x file mode on ipset/ipset.c and h files. diff --git a/testdata/stat_values.tdir/stat_values.conf b/testdata/stat_values.tdir/stat_values.conf new file mode 100644 index 000000000..aaef81d4f --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.conf @@ -0,0 +1,31 @@ +server: + verbosity: 5 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + extended-statistics: yes + identity: "stat_values" + + local-zone: local.zone static + local-data: "www.local.zone A 192.0.2.1" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" +forward-zone: + name: "expired." + forward-addr: "127.0.0.1@@EXPIREDPORT@" diff --git a/testdata/stat_values.tdir/stat_values.dsc b/testdata/stat_values.tdir/stat_values.dsc new file mode 100644 index 000000000..5112dbcf9 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.dsc @@ -0,0 +1,16 @@ +BaseName: stat_values +Version: 1.0 +Description: Test unbound statistics +CreationDate: Mon Sep 09 14:48:03 CEST 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stat_values.pre +Post: stat_values.post +Test: stat_values.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/stat_values.tdir/stat_values.post b/testdata/stat_values.tdir/stat_values.post new file mode 100644 index 000000000..8656b599f --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.post @@ -0,0 +1,14 @@ +# #-- stat_values.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill $FWD_EXPIRED_PID >/dev/null 2>&1 # This is killed during testing. +# it was stopped with unbound-control (if the test succeeded) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 +exit 0 diff --git a/testdata/stat_values.tdir/stat_values.pre b/testdata/stat_values.tdir/stat_values.pre new file mode 100644 index 000000000..2db4a17e0 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.pre @@ -0,0 +1,41 @@ +# #-- stat_values.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 4 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +FWD_EXPIRED_PORT=$(($RND_PORT + 2)) +CONTROL_PORT=$(($RND_PORT + 3)) +FWD_EXPIRED_PORT=$(($RND_PORT + 4)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "FWD_EXPIRED_PORT=$FWD_EXPIRED_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stat_values.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start expired forwarder +$LDNS_TESTNS -p $FWD_EXPIRED_PORT stat_values.testexpiredns >fwd_expired.log 2>&1 & +FWD_EXPIRED_PID=$! +echo "FWD_EXPIRED_PID=$FWD_EXPIRED_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@EXPIREDPORT\@/'$FWD_EXPIRED_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < stat_values.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_ldns_testns_up fwd_expired.log +wait_unbound_up unbound.log diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test new file mode 100644 index 000000000..5c72708a6 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.test @@ -0,0 +1,411 @@ +# #-- stat_values.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +# We need kill_pid for the serve-expired-client-timeour test +. ../common.sh + +PRE="../.." + +# Individual thread stats. +STATS_IGNORE_THREAD="\ +^thread" + +# Histogram stats. +STATS_IGNORE_HISTOGRAM="\ +^histogram" + +# Time dependent stats. +STATS_IGNORE_TIME_SPECIFIC="\ +^total.recursion.time.avg= +^total.recursion.time.median= +^time.now= +^time.up= +^time.elapsed=" + +# Usage dependent stats. +STATS_IGNORE_USAGE_SPECIFIC="\ +^total.requestlist.avg= +^total.requestlist.max= +^total.requestlist.overwritten= +^total.requestlist.exceeded= +^total.requestlist.current.all= +^total.requestlist.current.user= +^total.tcpusage= +^mem\." + +# Stats to ignore by default. +STATS_IGNORE_DEFAULT="\ +$STATS_IGNORE_THREAD +$STATS_IGNORE_HISTOGRAM +$STATS_IGNORE_TIME_SPECIFIC +$STATS_IGNORE_USAGE_SPECIFIC" + +# Various files to be used while testing. +STATS_FILE=stats.$$ +EXPECTED_STATS_FILE=expected_stats.$$ +IGNORE_REGEX_FILE=ignore_regex.$$ +FILTERED_STATS_FILE=filtered_stats.$$ +FOUND_STATS_FILE=found_stats.$$ +REST_STATS_FILE=rest_stats.$$ + +DEBUG=0 + +# Write stats to $STATS_FILE. +# Call this when you want to get stats from unbound. +get_stats () { + echo "> Getting stats" + echo "$PRE/unbound-control -c ub.conf stats" + $PRE/unbound-control -c ub.conf stats > $STATS_FILE + if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 + fi +} + +# Set the expected stat values by writing to $EXPECTED_STATS_FILE. +# sort is used for proper diff later. +set_expected_stats () { + echo "$1" | sort > $EXPECTED_STATS_FILE +} + +# Set the regex to ignore stats by writing to $IGNORE_REGEX_FILE. +set_ignore_regex_stats () { + echo "$1" > $IGNORE_REGEX_FILE +} + +# Filter the stats by removing any matched regex from $IGNORE_REGEX_FILE, +# sorts and writes the left over stats to $FILTERED_STATS_FILE. +filter_stats () { + grep -v -f $IGNORE_REGEX_FILE $STATS_FILE | sort > $FILTERED_STATS_FILE +} + +# Check that the stats in $FILTERED_STATS_FILE include the expected stats in +# $EXPECTED_STATS_FILE. +check_expected_stats () { + echo "> Checking expected stats" + grep -F -x -f $EXPECTED_STATS_FILE $FILTERED_STATS_FILE > $FOUND_STATS_FILE + if test $DEBUG -ne 0; then + echo "Found:" + cat $FOUND_STATS_FILE + fi + if diff $EXPECTED_STATS_FILE $FOUND_STATS_FILE; then + echo "OK" + else + echo "! bad expected stats:" + cat $FILTERED_STATS_FILE + exit 1 + fi +} + +# Check that the rest (unspecified) stats are all 0 (no surprises). +check_rest_stats () { + echo "> Checking rest stats" + grep -F -x -v -f $EXPECTED_STATS_FILE $FILTERED_STATS_FILE > $REST_STATS_FILE + if test $DEBUG -ne 0; then + echo "Rest:" + cat $REST_STATS_FILE + fi + if grep -v "=0$" $REST_STATS_FILE; then + echo "! bad rest stats" + exit 1 + else + echo "OK" + fi +} + +# Main function to check stats by: +# - Getting stats from unbound +# - Filtering out the stats we are not interested in +# - Checking that the expected stats are part of the filtered stats +# - The rest of the stats have 0 values. +check_stats () { + set_expected_stats "$1" + if test $DEBUG -ne 0; then + echo "Expected:" + cat $EXPECTED_STATS_FILE + fi + get_stats + filter_stats + if test $DEBUG -ne 0; then + echo "Filtered:" + cat $FILTERED_STATS_FILE + fi + check_expected_stats + check_rest_stats +} + +# Convenient function to set an option through unbound-control. +set_ub_option () { + name=$1 + value=$2 + echo "$PRE/unbound-control -c ub.conf set_option $name: $value" + $PRE/unbound-control -c ub.conf set_option $name: $value + if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 + fi +} + +# Convenient function to exit the test. +end () { + echo "> cat logfiles" + cat fwd.log + cat unbound.log + if test $1 -eq 1; then + echo "Not OK" + else + echo "> OK" + fi + exit $1 +} + +# Ignore all run specific stats. +set_ignore_regex_stats "$STATS_IGNORE_DEFAULT" + +# Check if the server is up. +echo "> dig 1ttl.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 1ttl.example.com. | tee outfile +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + end 1 +fi + +echo +echo "[ Check initial stats based on first query. ]" +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1 +num.answer.rcode.NOERROR=1" + +echo +echo "[ Check stat reset. ]" +check_stats "\ +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1" + + +echo +echo "[ Enable serve-expired and check. ]" +set_ub_option serve-expired yes +sleep 2 # make sure the TTL has expired. +echo "> dig 1ttl.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 1ttl.example.com. | tee outfile +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.expired=1 +total.num.cachehits=1 +total.num.prefetch=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1" + + +echo +echo "[ Enable serve-expired-client-timeout and check. ]" +set_ub_option serve-expired-client-timeout 1 +echo "> dig servfail.expired." +dig @127.0.0.1 -p $UNBOUND_PORT servfail.expired. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2 +num.answer.rcode.NOERROR=1" +kill_pid $FWD_EXPIRED_PID # kill the expired forwarder to force a servfail from upstream. +sleep 2 # make sure the TTL has expired. +echo "> dig servfail.expired." +dig @127.0.0.1 -p $UNBOUND_PORT servfail.expired. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.expired=1 +total.num.recursivereplies=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.cachemiss=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2" + + +# Disable serve-expired +set_ub_option serve-expired no + + +echo +echo "[ Check REFUSED; try without RD flag. ]" +echo "> dig somethingelse.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT +nordflag somethingelse.example.com. | tee outfile +echo "> check answer" +if grep "REFUSED" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.REFUSED=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2" + + +echo +echo "[ Check the AD flag. ]" +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT +noadflag www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.query.flags.AD=0 +total.num.cachemiss=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +total.num.recursivereplies=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + +echo +echo "[ Check local zone. ]" +echo "> dig www.local.zone." +dig @127.0.0.1 -p $UNBOUND_PORT www.local.zone. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.NOERROR=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +echo +echo "[ Check NXDOMAIN (with local data). ]" +echo "> dig mail.local.zone." +dig @127.0.0.1 -p $UNBOUND_PORT mail.local.zone. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.NXDOMAIN=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +echo +echo "[ Check CHAOS. ]" +echo "> dig id.server. ch txt" +dig @127.0.0.1 -p $UNBOUND_PORT id.server. ch txt | tee outfile +echo "> check answer" +if grep "stat_values" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.query.class.CH=1 +total.num.cachehits=1 +num.answer.rcode.NOERROR=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.TXT=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +end 0 diff --git a/testdata/stat_values.tdir/stat_values.testexpiredns b/testdata/stat_values.tdir/stat_values.testexpiredns new file mode 100644 index 000000000..a737a4a79 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.testexpiredns @@ -0,0 +1,13 @@ +; nameserver test file +$ORIGIN expired. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +servfail IN A +SECTION ANSWER +servfail 1 IN A 192.0.2.1 +ENTRY_END diff --git a/testdata/stat_values.tdir/stat_values.testns b/testdata/stat_values.tdir/stat_values.testns new file mode 100644 index 000000000..6691b0199 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.testns @@ -0,0 +1,23 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +1ttl IN A +SECTION ANSWER +1ttl 1 IN A 1.1.1.1 +ENTRY_END diff --git a/testdata/stat_values.tdir/unbound_control.key b/testdata/stat_values.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= +-----END RSA PRIVATE KEY----- diff --git a/testdata/stat_values.tdir/unbound_control.pem b/testdata/stat_values.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/stat_values.tdir/unbound_server.key b/testdata/stat_values.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== +-----END RSA PRIVATE KEY----- diff --git a/testdata/stat_values.tdir/unbound_server.pem b/testdata/stat_values.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- From 1a568a1b8c2b49c257ae3b20afd6b520b9b683de Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 15 Sep 2020 12:48:01 +0200 Subject: [PATCH 196/394] - Reduce unbound verbosity on test; higher during development. --- testdata/stat_values.tdir/stat_values.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/stat_values.tdir/stat_values.conf b/testdata/stat_values.tdir/stat_values.conf index aaef81d4f..5cec691f5 100644 --- a/testdata/stat_values.tdir/stat_values.conf +++ b/testdata/stat_values.tdir/stat_values.conf @@ -1,5 +1,5 @@ server: - verbosity: 5 + verbosity: 2 num-threads: 1 interface: 127.0.0.1 port: @PORT@ From 4cc559d7eb29438b193355f7d2661cd9ca70a9f6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 15 Sep 2020 13:32:30 +0200 Subject: [PATCH 197/394] - Spelling fix. --- doc/Changelog | 3 +++ testdata/stat_values.tdir/stat_values.test | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 593b57971..db4b27a2c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 15 September 2020: George - Introduce test for statistics. +15 September 2020: Wouter + - Spelling fix. + 11 September 2020: Wouter - Remove x file mode on ipset/ipset.c and h files. diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test index 5c72708a6..1cd19fa2b 100644 --- a/testdata/stat_values.tdir/stat_values.test +++ b/testdata/stat_values.tdir/stat_values.test @@ -3,7 +3,7 @@ [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test -# We need kill_pid for the serve-expired-client-timeour test +# We need kill_pid for the serve-expired-client-timeout test . ../common.sh PRE="../.." From 42a35ac26ec902af99ed7df19656f5b4cbe594b0 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 16 Sep 2020 18:25:02 +0200 Subject: [PATCH 198/394] - Final round of DoH review feedback processing. --- services/listen_dnsport.c | 18 ++++++++++++------ services/mesh.c | 6 +++--- testcode/dohclient.c | 11 +++++++++-- .../doh_downstream.tdir/doh_downstream.test | 13 ++++--------- .../doh_downstream_endpoint.test | 2 +- .../doh_downstream_post.test | 12 ++++-------- util/configparser.y | 4 +++- util/netevent.c | 10 +++++----- util/netevent.h | 4 ++-- 9 files changed, 43 insertions(+), 37 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 27f92a9dc..7833497b1 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2227,7 +2227,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) sldns_buffer_write(h2_stream->rbuffer, sldns_buffer_current(h2_session->c->buffer), - sldns_buffer_remaining(h2_stream->rbuffer)); + sldns_buffer_remaining(h2_session->c->buffer)); sldns_buffer_flip(h2_stream->rbuffer); data_prd.source.ptr = h2_session; @@ -2540,14 +2540,16 @@ static int http2_buffer_uri_query(struct http2_session* h2_session, "in http2-query-buffer-size"); return http2_submit_rst_stream(h2_session, h2_stream); } + http2_query_buffer_count += expectb64len; + lock_basic_unlock(&http2_query_buffer_count_lock); if(!(h2_stream->qbuffer = sldns_buffer_new(expectb64len))) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= expectb64len; lock_basic_unlock(&http2_query_buffer_count_lock); log_err("http2_req_header fail, qbuffer " "malloc failure"); return 0; } - http2_query_buffer_count += expectb64len; - lock_basic_unlock(&http2_query_buffer_count_lock); if(!(b64len = sldns_b64url_pton( (char const *)start, length, @@ -2627,7 +2629,7 @@ static int http2_req_header_cb(nghttp2_session* session, * stream. */ #define HTTP_QUERY_PARAM "?dns=" size_t el = strlen(h2_session->c->http_endpoint); - size_t qpl = sizeof(HTTP_QUERY_PARAM) - 1; + size_t qpl = strlen(HTTP_QUERY_PARAM); if(valuelen < el || memcmp(h2_session->c->http_endpoint, value, el) != 0) { @@ -2727,9 +2729,13 @@ static int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), "in http2-query-buffer-size"); return http2_submit_rst_stream(h2_session, h2_stream); } - if((h2_stream->qbuffer = sldns_buffer_new(qlen))) - http2_query_buffer_count += qlen; + http2_query_buffer_count += qlen; lock_basic_unlock(&http2_query_buffer_count_lock); + if(!(h2_stream->qbuffer = sldns_buffer_new(qlen))) { + lock_basic_lock(&http2_query_buffer_count_lock); + http2_query_buffer_count -= qlen; + lock_basic_unlock(&http2_query_buffer_count_lock); + } } if(!h2_stream->qbuffer || diff --git a/services/mesh.c b/services/mesh.c index c2afdbf82..ffb6d092a 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -551,7 +551,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, goto servfail_mem; } } - if(rep->c->alpn_h2) { + if(rep->c->use_h2) { http2_stream_add_meshstate(rep->c->h2_stream, mesh, s); } /* add serve expired timer if required and not already there */ @@ -1210,7 +1210,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; - if(r->query_reply.c->alpn_h2) { + if(r->query_reply.c->use_h2) { r->query_reply.c->h2_stream = r->h2_stream; /* Mesh reply won't exist for long anymore. Make it impossible * for HTTP/2 stream to refer to mesh state, in case @@ -1498,7 +1498,7 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, s->s.qinfo.qname_len); if(!r->qname) return 0; - if(rep->c->alpn_h2) + if(rep->c->use_h2) r->h2_stream = rep->c->h2_stream; /* Data related to local alias stored in 'qinfo' (if any) is ephemeral diff --git a/testcode/dohclient.c b/testcode/dohclient.c index 060d71ee4..adcc7d831 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -171,8 +171,9 @@ submit_query(struct http2_session* h2_session, struct sldns_buffer* buf) h2_stream->path = malloc(strlen( h2_session->endpoint)+strlen("?dns=")+qb64_size+1); if(!h2_stream->path) fatal_exit("out of memory"); - sprintf(h2_stream->path, "%s?dns=%s", h2_session->endpoint, - qb64); + snprintf(h2_stream->path, strlen(h2_session->endpoint)+ + strlen("?dns=")+qb64_size+1, "%s?dns=%s", + h2_session->endpoint, qb64); free(qb64); } @@ -328,6 +329,11 @@ static int http2_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session), return 0; } + if(sldns_buffer_remaining(h2_stream->buf) < len) { + log_err("received data chunck does not fit into buffer"); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + sldns_buffer_write(h2_stream->buf, data, len); return 0; @@ -575,5 +581,6 @@ int main(int argc, char** argv) int main(int ATTR_UNUSED(argc), char** ATTR_UNUSED(argv)) { printf("Compiled without nghttp2, cannot run test.\n"); + return 1; } #endif /* HAVE_NGHTTP2 */ diff --git a/testdata/doh_downstream.tdir/doh_downstream.test b/testdata/doh_downstream.tdir/doh_downstream.test index 98a54af26..78e2e84eb 100644 --- a/testdata/doh_downstream.tdir/doh_downstream.test +++ b/testdata/doh_downstream.tdir/doh_downstream.test @@ -323,17 +323,12 @@ if test "$?" -ne 0; then echo "Not OK" exit 1 fi -grep "a.example.com. IN A" outfile - -echo "" -echo "> query www5.example.net. www3.example.net. www.drop.net." -$PRE/dohclient -s 127.0.0.1 -p $UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>&1 -cat outfile -if test "$?" -ne 0; then - echo "exit status not OK" +num_ans=$(grep -B 3 "a.example.com. IN A" outfile | grep "rcode: NOERROR" | wc -l ) +if test "$num_ans" -ne 90; then + echo "number of answers not OK" echo "> cat logfiles" cat outfile - cat fwd.log + cat fwd.log cat unbound.log echo "Not OK" exit 1 diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test index 0e25a47f6..d788e3667 100644 --- a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test @@ -33,7 +33,7 @@ else fi echo "OK" -echo "> query www.example.net. endpoint /dns-query" +echo "> query www.example.net. endpoint /abc" $PRE/dohclient -e /abc -s 127.0.0.1 -p $UNBOUND_PORT www.example.net. A IN >outfile 2>&1 cat outfile if test "$?" -ne 0; then diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.test b/testdata/doh_downstream_post.tdir/doh_downstream_post.test index 4a49c8b51..d6a512ae3 100644 --- a/testdata/doh_downstream_post.tdir/doh_downstream_post.test +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.test @@ -323,17 +323,13 @@ if test "$?" -ne 0; then echo "Not OK" exit 1 fi -grep "a.example.com. IN A" outfile -echo "" -echo "> query www5.example.net. www3.example.net. www.drop.net." -$PRE/dohclient -P -s 127.0.0.1 -p $UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>&1 -cat outfile -if test "$?" -ne 0; then - echo "exit status not OK" +num_ans=$(grep -B 3 "a.example.com. IN A" outfile | grep "rcode: NOERROR" | wc -l ) +if test "$num_ans" -ne 90; then + echo "number of answers not OK" echo "> cat logfiles" cat outfile - cat fwd.log + cat fwd.log cat unbound.log echo "Not OK" exit 1 diff --git a/util/configparser.y b/util/configparser.y index 6ef42628c..ffc8813ff 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -982,8 +982,10 @@ server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG free(cfg_parser->cfg->http_endpoint); if($2 && $2[0] != '/') { cfg_parser->cfg->http_endpoint = malloc(strlen($2)+2); + if(!cfg_parser->cfg->http_endpoint) + yyerror("out of memory"); cfg_parser->cfg->http_endpoint[0] = '/'; - memcpy(cfg_parser->cfg->http_endpoint+1, $2, + memmove(cfg_parser->cfg->http_endpoint+1, $2, strlen($2)+1); free($2); } else { diff --git a/util/netevent.c b/util/netevent.c index be3b740b5..2171e3e6d 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1228,7 +1228,7 @@ ssl_handshake(struct comm_point* c) if(alpnlen == 2 && memcmp("h2", alpn, 2) == 0) { /* connection upgraded to HTTP2 */ c->tcp_do_toggle_rw = 0; - c->alpn_h2 = 1; + c->use_h2 = 1; } } @@ -2472,7 +2472,7 @@ comm_point_http_handle_read(int fd, struct comm_point* c) if(!c->tcp_is_reading) return 1; - if(c->alpn_h2) { + if(c->use_h2) { return comm_point_http2_handle_read(fd, c); } @@ -2766,7 +2766,7 @@ comm_point_http_handle_write(int fd, struct comm_point* c) if(c->tcp_is_reading) return 1; - if(c->alpn_h2) { + if(c->use_h2) { return comm_point_http2_handle_write(fd, c); } @@ -3160,7 +3160,7 @@ comm_point_create_http_handler(struct comm_base *base, free(c); return NULL; } - c->alpn_h2 = 0; + c->use_h2 = 0; #ifdef HAVE_NGHTTP2 if(!(c->h2_session = http2_session_create(c))) { log_err("could not create http2 session"); @@ -3676,7 +3676,7 @@ comm_point_send_reply(struct comm_reply *repinfo) #endif if(repinfo->c->tcp_req_info) { tcp_req_info_send_reply(repinfo->c->tcp_req_info); - } else if(repinfo->c->alpn_h2) { + } else if(repinfo->c->use_h2) { if(!http2_submit_dns_response(repinfo->c->h2_session)) { comm_point_drop_reply(repinfo); return; diff --git a/util/netevent.h b/util/netevent.h index 68f4c1297..6986f881b 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -236,8 +236,8 @@ struct comm_point { /* -------- HTTP/2 ------- */ /** http2 session */ struct http2_session* h2_session; - /** set to 1 if h2 is negatiated using alpn */ - int alpn_h2; + /** set to 1 if h2 is negotiated to be used (using alpn) */ + int use_h2; /** stream currently being handled */ struct http2_stream* h2_stream; /** maximum allowed query buffer size, per stream */ From 2541ccbb1bc5d675aafce7f876db90ae8aa422b2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 18 Sep 2020 09:56:38 +0200 Subject: [PATCH 199/394] - Fix that prefer-ip4 and prefer-ip6 can be get and set with unbound-control, with libunbound and the unbound-checkconf option output function. --- doc/Changelog | 5 +++++ util/config_file.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index db4b27a2c..d9aeec1c8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +18 September 2020: Wouter + - Fix that prefer-ip4 and prefer-ip6 can be get and set with + unbound-control, with libunbound and the unbound-checkconf option + output function. + 15 September 2020: George - Introduce test for statistics. diff --git a/util/config_file.c b/util/config_file.c index 5f79baa7e..a2fb4c429 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -489,6 +489,8 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("do-ip6:", do_ip6) else S_YNO("do-udp:", do_udp) else S_YNO("do-tcp:", do_tcp) + else S_YNO("prefer-ip4:", prefer_ip4) + else S_YNO("prefer-ip6:", prefer_ip6) else S_YNO("tcp-upstream:", tcp_upstream) else S_YNO("udp-upstream-without-downstream:", udp_upstream_without_downstream) @@ -947,6 +949,8 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "do-ip6", do_ip6) else O_YNO(opt, "do-udp", do_udp) else O_YNO(opt, "do-tcp", do_tcp) + else O_YNO(opt, "prefer-ip4", prefer_ip4) + else O_YNO(opt, "prefer-ip6", prefer_ip6) else O_YNO(opt, "tcp-upstream", tcp_upstream) else O_YNO(opt, "udp-upstream-without-downstream", udp_upstream_without_downstream) else O_DEC(opt, "tcp-mss", tcp_mss) From 6ea24c5c86c5409fd49da719eb8d653598b2df9d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 18 Sep 2020 13:43:16 +0200 Subject: [PATCH 200/394] - iana portlist updated. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d9aeec1c8..31edfa144 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that prefer-ip4 and prefer-ip6 can be get and set with unbound-control, with libunbound and the unbound-checkconf option output function. + - iana portlist updated. 15 September 2020: George - Introduce test for statistics. diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 79488f49a..70a95ee12 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4516,6 +4516,7 @@ 6679, 6689, 6696, +6699, 6701, 6702, 6703, From 56e0e5b9afb9749e8c2a24d51add097f9d814a58 Mon Sep 17 00:00:00 2001 From: "L. Merino" Date: Sat, 19 Sep 2020 09:48:09 +0200 Subject: [PATCH 201/394] fix: return error when malloc fails in inplace_cb_register_wrapped() --- dynlibmod/dynlibmod.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index f9751d8c6..2bd4a28c1 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -242,6 +242,8 @@ int inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, struct module_env* env, int id) { struct cb_pair* cb_pair = malloc(sizeof(struct cb_pair)); + if(cb_pair == NULL) + return 0; cb_pair->cb = cb; cb_pair->cb_arg = cbarg; if(type >= inplace_cb_reply && type <= inplace_cb_reply_servfail) { From 41ab788cab98255c681c5e33ba0a67dc6815ec7a Mon Sep 17 00:00:00 2001 From: "L. Merino" Date: Sat, 19 Sep 2020 09:48:42 +0200 Subject: [PATCH 202/394] fix: avoid leaking cb_pair in inplace_cb_register_wrapped() --- dynlibmod/dynlibmod.c | 1 + 1 file changed, 1 insertion(+) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 2bd4a28c1..10ae143a4 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -255,6 +255,7 @@ inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbar } else if(type == inplace_cb_edns_back_parsed) { return inplace_cb_register(&dynlib_inplace_cb_edns_back_parsed, type, (void*) cb_pair, env, id); } else { + free(cb_pair); return 0; } } From 9d78ad6898b9c580093c3898a16c78094e47859e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 21 Sep 2020 10:13:19 +0200 Subject: [PATCH 203/394] - Merge PR #311 by luismerino: Dynlibmod leak. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 31edfa144..fe5b8da16 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 September 2020: Wouter + - Merge PR #311 by luismerino: Dynlibmod leak. + 18 September 2020: Wouter - Fix that prefer-ip4 and prefer-ip6 can be get and set with unbound-control, with libunbound and the unbound-checkconf option From 1175269bbdc7df20e6f80740688f29357a592ff3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 21 Sep 2020 10:20:10 +0200 Subject: [PATCH 204/394] - Error message is logged for dynlibmod malloc failures. --- doc/Changelog | 1 + dynlibmod/dynlibmod.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index fe5b8da16..45baef30f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 21 September 2020: Wouter - Merge PR #311 by luismerino: Dynlibmod leak. + - Error message is logged for dynlibmod malloc failures. 18 September 2020: Wouter - Fix that prefer-ip4 and prefer-ip6 can be get and set with diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 10ae143a4..3bf9d1acb 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -242,8 +242,10 @@ int inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type type, void* cbarg, struct module_env* env, int id) { struct cb_pair* cb_pair = malloc(sizeof(struct cb_pair)); - if(cb_pair == NULL) + if(cb_pair == NULL) { + log_err("dynlibmod[%d]: malloc failure", id); return 0; + } cb_pair->cb = cb; cb_pair->cb_arg = cbarg; if(type >= inplace_cb_reply && type <= inplace_cb_reply_servfail) { From c5f0ec36bb94f458f34c1bb02079d9dee7fd89cc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 21 Sep 2020 11:38:20 +0200 Subject: [PATCH 205/394] - iana portlist updated. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 45baef30f..8a368f6cc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 21 September 2020: Wouter - Merge PR #311 by luismerino: Dynlibmod leak. - Error message is logged for dynlibmod malloc failures. + - iana portlist updated. 18 September 2020: Wouter - Fix that prefer-ip4 and prefer-ip6 can be get and set with diff --git a/util/iana_ports.inc b/util/iana_ports.inc index 70a95ee12..fa25869d3 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -4745,6 +4745,7 @@ 8023, 8025, 8026, +8027, 8032, 8033, 8034, From 00fe4b03062c2e9adacb95ade9418b759c1238ca Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 21 Sep 2020 17:17:30 +0200 Subject: [PATCH 206/394] - Fix #304: dnstap logging not recovering after dnstap process restarts --- dnstap/dtstream.c | 2 ++ doc/Changelog | 3 +++ 2 files changed, 5 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index a778bb64b..6a9e9b890 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1102,6 +1102,8 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) goto close_connection; } dtio->accept_frame_received = 1; + if(!dtio_add_output_event_write(dtio)) + goto close_connection; return 1; } else { /* unknow content type */ diff --git a/doc/Changelog b/doc/Changelog index 8a368f6cc..7e6455da8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +21 September 2020: Ralph + - Fix #304: dnstap logging not recovering after dnstap process restarts + 21 September 2020: Wouter - Merge PR #311 by luismerino: Dynlibmod leak. - Error message is logged for dynlibmod malloc failures. From 9e9810ab8bec0756a89d956d63d9c897adf74439 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 23 Sep 2020 10:05:39 +0200 Subject: [PATCH 207/394] - Fix edns-client-tags get_option typo --- doc/Changelog | 3 +++ util/config_file.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 7e6455da8..cd61733be 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +23 September 2020: Ralph + - Fix edns-client-tags get_option typo + 21 September 2020: Ralph - Fix #304: dnstap logging not recovering after dnstap process restarts diff --git a/util/config_file.c b/util/config_file.c index a20b1f9c9..8fd3bcffe 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1149,7 +1149,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) - else O_LS2(opt, "edns_client_tags", edns_client_tags) + else O_LS2(opt, "edns-client-tags", edns_client_tags) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) From 48a56751e97655843572244fb6bb6ced3dcfe071 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Sep 2020 11:13:52 +0200 Subject: [PATCH 208/394] - Fix #305: dnstap logging significantly affects unbound performance (regression in 1.11). --- daemon/worker.c | 16 +++++----- dnstap/dnstap.c | 4 +-- dnstap/dnstap.h | 3 +- dnstap/dtstream.c | 80 ++++++++++++++++++++++++++++++++++++++++++++--- dnstap/dtstream.h | 15 ++++++++- doc/Changelog | 4 +++ util/fptr_wlist.c | 1 + 7 files changed, 106 insertions(+), 17 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 695a4cfe5..5ad8ce4e4 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1717,14 +1717,6 @@ worker_create(struct daemon* daemon, int id, int* ports, int n) return NULL; } explicit_bzero(&seed, sizeof(seed)); -#ifdef USE_DNSTAP - if(daemon->cfg->dnstap) { - log_assert(daemon->dtenv != NULL); - memcpy(&worker->dtenv, daemon->dtenv, sizeof(struct dt_env)); - if(!dt_init(&worker->dtenv)) - fatal_exit("dt_init failed"); - } -#endif return worker; } @@ -1783,6 +1775,14 @@ worker_init(struct worker* worker, struct config_file *cfg, } else { /* !do_sigs */ worker->comsig = NULL; } +#ifdef USE_DNSTAP + if(cfg->dnstap) { + log_assert(worker->daemon->dtenv != NULL); + memcpy(&worker->dtenv, worker->daemon->dtenv, sizeof(struct dt_env)); + if(!dt_init(&worker->dtenv, worker->base)) + fatal_exit("dt_init failed"); + } +#endif worker->front = listen_create(worker->base, ports, cfg->msg_buffer_size, (int)cfg->incoming_num_tcp, cfg->do_tcp_keepalive diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index bda837876..0c8c6c4d4 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -246,9 +246,9 @@ dt_apply_cfg(struct dt_env *env, struct config_file *cfg) } int -dt_init(struct dt_env *env) +dt_init(struct dt_env *env, struct comm_base* base) { - env->msgqueue = dt_msg_queue_create(); + env->msgqueue = dt_msg_queue_create(base); if(!env->msgqueue) { log_err("malloc failure"); return 0; diff --git a/dnstap/dnstap.h b/dnstap/dnstap.h index cfef6fc42..783b8c514 100644 --- a/dnstap/dnstap.h +++ b/dnstap/dnstap.h @@ -101,10 +101,11 @@ dt_apply_cfg(struct dt_env *env, struct config_file *cfg); /** * Initialize per-worker state in dnstap environment object. * @param env: dnstap environment object to initialize, created with dt_create(). + * @param base: event base for wakeup timer. * @return: true on success, false on failure. */ int -dt_init(struct dt_env *env); +dt_init(struct dt_env *env, struct comm_base* base); /** * Deletes the per-worker state created by dt_init diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 6a9e9b890..b0586d1ba 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -68,6 +68,8 @@ #define DTIO_RECONNECT_TIMEOUT_MAX 1000 /** the msec to wait for reconnect slow, to stop busy spinning on reconnect */ #define DTIO_RECONNECT_TIMEOUT_SLOW 1000 +/** number of messages before wakeup of thread */ +#define DTIO_MSG_FOR_WAKEUP 32 /** maximum length of received frame */ #define DTIO_RECV_FRAME_MAX_LEN 1000 @@ -99,13 +101,18 @@ static int dtio_enable_brief_write(struct dt_io_thread* dtio); #endif struct dt_msg_queue* -dt_msg_queue_create(void) +dt_msg_queue_create(struct comm_base* base) { struct dt_msg_queue* mq = calloc(1, sizeof(*mq)); if(!mq) return NULL; mq->maxsize = 1*1024*1024; /* set max size of buffer, per worker, about 1 M should contain 64K messages with some overhead, or a whole bunch smaller ones */ + mq->wakeup_timer = comm_timer_create(base, mq_wakeup_cb, mq); + if(!mq->wakeup_timer) { + free(mq); + return NULL; + } lock_basic_init(&mq->lock); lock_protect(&mq->lock, mq, sizeof(*mq)); return mq; @@ -125,6 +132,7 @@ dt_msg_queue_clear(struct dt_msg_queue* mq) mq->first = NULL; mq->last = NULL; mq->cursize = 0; + mq->msgcount = 0; } void @@ -133,6 +141,7 @@ dt_msg_queue_delete(struct dt_msg_queue* mq) if(!mq) return; lock_basic_destroy(&mq->lock); dt_msg_queue_clear(mq); + comm_timer_delete(mq->wakeup_timer); free(mq); } @@ -163,10 +172,57 @@ static void dtio_wakeup(struct dt_io_thread* dtio) } } +void +mq_wakeup_cb(void* arg) +{ + struct dt_msg_queue* mq = (struct dt_msg_queue*)arg; + /* even if the dtio is already active, because perhaps much + * traffic suddenly, we leave the timer running to save on + * managing it, the once a second timer is less work then + * starting and stopping the timer frequently */ + lock_basic_lock(&mq->dtio->wakeup_timer_lock); + mq->dtio->wakeup_timer_enabled = 0; + lock_basic_unlock(&mq->dtio->wakeup_timer_lock); + dtio_wakeup(mq->dtio); +} + +/** start timer to wakeup dtio because there is content in the queue */ +static void +dt_msg_queue_start_timer(struct dt_msg_queue* mq) +{ + struct timeval tv; + /* Start a timer to process messages to be logged. + * If we woke up the dtio thread for every message, the wakeup + * messages take up too much processing power. If the queue + * fills up the wakeup happens immediately. The timer wakes it up + * if there are infrequent messages to log. */ + + /* we cannot start a timer in dtio thread, because it is a different + * thread and its event base is in use by the other thread, it would + * give race conditions if we tried to modify its event base, + * and locks would wait until it woke up, and this is what we do. */ + + /* do not start the timer if a timer already exists, perhaps + * in another worker. So this variable is protected by a lock in + * dtio */ + lock_basic_lock(&mq->dtio->wakeup_timer_lock); + if(mq->dtio->wakeup_timer_enabled) { + lock_basic_unlock(&mq->dtio->wakeup_timer_lock); + return; + } + mq->dtio->wakeup_timer_enabled = 1; /* we are going to start one */ + lock_basic_unlock(&mq->dtio->wakeup_timer_lock); + + /* start the timer, in mq, in the event base of our worker */ + tv.tv_sec = 1; + tv.tv_usec = 0; + comm_timer_set(mq->wakeup_timer, &tv); +} + void dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) { - int wakeup = 0; + int wakeupnow = 0, wakeupstarttimer = 0; struct dt_msg_entry* entry; /* check conditions */ @@ -197,9 +253,14 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) /* aqcuire lock */ lock_basic_lock(&mq->lock); - /* list was empty, wakeup dtio */ + /* if list was empty, start timer for (eventual) wakeup */ if(mq->first == NULL) - wakeup = 1; + wakeupstarttimer = 1; + /* if list contains more than wakeupnum elements, wakeup now, + * or if list is (going to be) almost full */ + if(mq->msgcount+1 > DTIO_MSG_FOR_WAKEUP || + mq->cursize+len >= mq->maxsize * 9 / 10) + wakeupnow = 1; /* see if it is going to fit */ if(mq->cursize + len > mq->maxsize) { /* buffer full, or congested. */ @@ -210,6 +271,7 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) return; } mq->cursize += len; + mq->msgcount ++; /* append to list */ if(mq->last) { mq->last->next = entry; @@ -220,13 +282,19 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) /* release lock */ lock_basic_unlock(&mq->lock); - if(wakeup) + if(wakeupnow) { dtio_wakeup(mq->dtio); + } else if(wakeupstarttimer) { + dt_msg_queue_start_timer(mq); + } } struct dt_io_thread* dt_io_thread_create(void) { struct dt_io_thread* dtio = calloc(1, sizeof(*dtio)); + lock_basic_init(&dtio->wakeup_timer_lock); + lock_protect(&dtio->wakeup_timer_lock, &dtio->wakeup_timer_enabled, + sizeof(dtio->wakeup_timer_enabled)); return dtio; } @@ -234,6 +302,7 @@ void dt_io_thread_delete(struct dt_io_thread* dtio) { struct dt_io_list_item* item, *nextitem; if(!dtio) return; + lock_basic_destroy(&dtio->wakeup_timer_lock); item=dtio->io_list; while(item) { nextitem = item->next; @@ -416,6 +485,7 @@ static int dt_msg_queue_pop(struct dt_msg_queue* mq, void** buf, mq->first = entry->next; if(!entry->next) mq->last = NULL; mq->cursize -= entry->len; + mq->msgcount --; lock_basic_unlock(&mq->lock); *buf = entry->buf; diff --git a/dnstap/dtstream.h b/dnstap/dtstream.h index ede491f30..f87d6dc8d 100644 --- a/dnstap/dtstream.h +++ b/dnstap/dtstream.h @@ -49,6 +49,7 @@ struct dt_msg_entry; struct dt_io_list_item; struct dt_io_thread; struct config_file; +struct comm_base; /** * A message buffer with dnstap messages queued up. It is per-worker. @@ -68,11 +69,15 @@ struct dt_msg_queue { /** current size of the buffer, in bytes. data bytes of messages. * If a new message make it more than maxsize, the buffer is full */ size_t cursize; + /** number of messages in the queue */ + int msgcount; /** list of messages. The messages are added to the back and taken * out from the front. */ struct dt_msg_entry* first, *last; /** reference to the io thread to wakeup */ struct dt_io_thread* dtio; + /** the wakeup timer for dtio, on worker event base */ + struct comm_timer* wakeup_timer; }; /** @@ -166,6 +171,10 @@ struct dt_io_thread { * for the current message length that precedes the frame */ size_t cur_msg_len_done; + /** lock on wakeup_timer_enabled */ + lock_basic_type wakeup_timer_lock; + /** if wakeup timer is enabled in some thread */ + int wakeup_timer_enabled; /** command pipe that stops the pipe if closed. Used to quit * the program. [0] is read, [1] is written to. */ int commandpipe[2]; @@ -233,9 +242,10 @@ struct dt_io_list_item { /** * Create new (empty) worker message queue. Limit set to default on max. + * @param base: event base for wakeup timer. * @return NULL on malloc failure or a new queue (not locked). */ -struct dt_msg_queue* dt_msg_queue_create(void); +struct dt_msg_queue* dt_msg_queue_create(struct comm_base* base); /** * Delete a worker message queue. It has to be unlinked from access, @@ -258,6 +268,9 @@ void dt_msg_queue_delete(struct dt_msg_queue* mq); */ void dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len); +/** timer callback to wakeup dtio thread to process messages */ +void mq_wakeup_cb(void* arg); + /** * Create IO thread. * @return new io thread object. not yet started. or NULL malloc failure. diff --git a/doc/Changelog b/doc/Changelog index 7e6455da8..9188da015 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +23 September 2020: Wouter + - Fix #305: dnstap logging significantly affects unbound performance + (regression in 1.11). + 21 September 2020: Ralph - Fix #304: dnstap logging not recovering after dnstap process restarts diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index aa275ed53..241d9e540 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -138,6 +138,7 @@ fptr_whitelist_comm_timer(void (*fptr)(void*)) else if(fptr == &auth_xfer_probe_timer_callback) return 1; else if(fptr == &auth_xfer_transfer_timer_callback) return 1; else if(fptr == &mesh_serve_expired_callback) return 1; + else if(fptr == &mq_wakeup_cb) return 1; return 0; } From 7da369e85ae545a9fd1453784d77dd23dd512530 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 23 Sep 2020 12:09:48 +0200 Subject: [PATCH 209/394] - Add edns-client-tag-opcode option --- doc/Changelog | 1 + doc/unbound.conf.5.in | 4 + services/outside_network.c | 2 +- testcode/fake_event.c | 2 +- util/config_file.c | 1 + util/config_file.h | 2 + util/configlexer.c | 2614 ++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 2499 +++++++++++++++++----------------- util/configparser.h | 6 +- util/configparser.y | 16 +- util/edns.c | 1 + util/edns.h | 2 + 13 files changed, 2603 insertions(+), 2548 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 06deb58f9..e316ea99f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 23 September 2020: Ralph - Fix edns-client-tags get_option typo + - Add edns-client-tag-opcode option 21 September 2020: Ralph - Fix #304: dnstap logging not recovering after dnstap process restarts diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index c2b6d6eb7..f4586b1d1 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1538,6 +1538,10 @@ Include an edns-client-tag option in queries with destination address matching the configured IP netblock. This configuration option can be used multiple times. The most specific match will be used. The tag data is configured in decimal format, from 0 to 65535. +.TP 5 +.B edns\-client\-tag\-opcode: \fI +EDNS0 option code for the edns-client-tag option, from 0 to 65535. Default is +16, as assigned by IANA. .SS "Remote Control Options" In the .B remote\-control: diff --git a/services/outside_network.c b/services/outside_network.c index 085d0e6ae..41a1d83f1 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2107,7 +2107,7 @@ outnet_serviced_query(struct outside_network* outnet, addr, addrlen))) { uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, - LDNS_EDNS_CLIENT_TAG, 2, + env->edns_tags->client_tag_opcode, 2, (uint8_t*)&client_tag, qstate->region); } diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 674069afc..d8df76492 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1232,7 +1232,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, addr, addrlen))) { uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, - LDNS_EDNS_CLIENT_TAG, 2, + env->edns_tags->client_tag_opcode, 2, (uint8_t*)&client_tag, qstate->region); } edns.opt_list = qstate->edns_opts_back_out; diff --git a/util/config_file.c b/util/config_file.c index 8fd3bcffe..f590a36cf 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -322,6 +322,7 @@ config_create(void) cfg->shm_enable = 0; cfg->shm_key = 11777; cfg->edns_client_tags = NULL; + cfg->edns_client_tag_opcode = LDNS_EDNS_CLIENT_TAG; cfg->dnscrypt = 0; cfg->dnscrypt_port = 0; cfg->dnscrypt_provider = NULL; diff --git a/util/config_file.h b/util/config_file.h index 3148dd016..7750eaa0e 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -564,6 +564,8 @@ struct config_file { /** list of EDNS client tag entries, linked list */ struct config_str2list* edns_client_tags; + /** EDNS opcode to use for EDNS client tags */ + uint16_t edns_client_tag_opcode; /** DNSCrypt */ /** true to enable dnscrypt */ diff --git a/util/configlexer.c b/util/configlexer.c index 16158e472..36b4a2eca 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 330 -#define YY_END_OF_BUFFER 331 +#define YY_NUM_RULES 331 +#define YY_END_OF_BUFFER 332 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,363 +363,364 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3227] = +static const flex_int16_t yy_accept[3235] = { 0, - 1, 1, 304, 304, 308, 308, 312, 312, 316, 316, - 1, 1, 320, 320, 324, 324, 331, 328, 1, 302, - 302, 329, 2, 329, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 304, 305, 305, 306, - 329, 308, 309, 309, 310, 329, 315, 312, 313, 313, - 314, 329, 316, 317, 317, 318, 329, 327, 303, 2, - 307, 329, 327, 323, 320, 321, 321, 322, 329, 324, - 325, 325, 326, 329, 328, 0, 1, 2, 2, 2, - 2, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 1, 1, 305, 305, 309, 309, 313, 313, 317, 317, + 1, 1, 321, 321, 325, 325, 332, 329, 1, 303, + 303, 330, 2, 330, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 305, 306, 306, 307, + 330, 309, 310, 310, 311, 330, 316, 313, 314, 314, + 315, 330, 317, 318, 318, 319, 330, 328, 304, 2, + 308, 330, 328, 324, 321, 322, 322, 323, 330, 325, + 326, 326, 327, 330, 329, 0, 1, 2, 2, 2, + 2, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 304, 0, 308, - 0, 315, 0, 312, 316, 0, 327, 0, 2, 2, - 327, 323, 0, 320, 324, 0, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 305, 0, 309, + 0, 316, 0, 313, 317, 0, 328, 0, 2, 2, + 328, 324, 0, 321, 325, 0, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 327, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 328, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 121, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 129, 328, 328, 328, 328, 328, 328, 328, - 327, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 121, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 129, 329, 329, 329, 329, 329, 329, 329, + 328, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 105, - 328, 328, 328, 328, 328, 328, 8, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 122, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 105, + 329, 329, 329, 329, 329, 329, 8, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 122, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 134, 328, 327, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 296, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 134, 329, 328, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 296, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 327, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 328, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 63, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 233, 328, 14, 15, 328, 19, 18, 328, - 328, 217, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 128, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 63, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 233, 329, 14, 15, 329, 19, 18, 329, + 329, 217, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 128, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 215, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 3, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 327, 328, 328, 328, - 328, 328, 328, 328, 290, 328, 328, 289, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 215, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 3, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 328, 329, 329, 329, + 329, 329, 329, 329, 290, 329, 329, 289, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 311, 328, 328, 328, 328, 328, 328, - 328, 62, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 66, 328, - 264, 328, 328, 328, 328, 328, 328, 328, 328, 297, - 298, 328, 328, 328, 328, 328, 67, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 312, 329, 329, 329, 329, 329, 329, + 329, 62, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 66, 329, + 264, 329, 329, 329, 329, 329, 329, 329, 329, 297, + 298, 329, 329, 329, 329, 329, 67, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 125, 328, 328, 328, 328, 328, 328, - 328, 328, 204, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 21, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 153, 328, 328, 327, 311, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 103, 328, 328, - 328, 328, 328, 328, 328, 272, 328, 328, 328, 328, + 329, 329, 329, 125, 329, 329, 329, 329, 329, 329, + 329, 329, 204, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 21, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 153, 329, 329, 328, 312, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 103, 329, 329, + 329, 329, 329, 329, 329, 272, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 176, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 152, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 102, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 176, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 152, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 102, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 32, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 33, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 64, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 127, 327, 328, - 328, 328, 328, 328, 120, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 65, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 237, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 32, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 33, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 64, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 127, 328, 329, + 329, 329, 329, 329, 120, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 65, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 237, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 177, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 53, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 255, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 177, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 53, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 255, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 57, 328, 58, 328, 328, 328, 328, 328, 106, - 328, 107, 328, 328, 328, 328, 104, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 7, 328, 327, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 226, 328, 328, 328, 328, - 155, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 238, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 57, 329, 58, 329, 329, 329, 329, 329, 106, + 329, 107, 329, 329, 329, 329, 104, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 7, 329, 328, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 226, 329, 329, 329, 329, + 155, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 238, 329, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 45, 328, 328, 328, 328, 328, 328, - 328, 328, 54, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 196, 328, 195, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 16, 17, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 45, 329, 329, 329, 329, 329, 329, + 329, 329, 54, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 196, 329, 195, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 16, 17, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 68, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 203, 328, 328, 328, 328, 328, 328, 109, - 328, 108, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 187, 328, 328, 328, 328, 328, 328, - 328, 328, 135, 327, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 87, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 216, + 68, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 203, 329, 329, 329, 329, 329, 329, 109, + 329, 108, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 187, 329, 329, 329, 329, 329, 329, + 329, 329, 135, 328, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 87, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 216, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 91, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 61, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 190, 191, 328, 328, - 328, 266, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 6, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 270, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 91, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 61, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 190, 191, 329, 329, + 329, 266, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 6, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 270, 329, 329, 329, - 328, 328, 328, 291, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 42, 328, 328, 328, 328, 44, - 328, 328, 328, 328, 328, 328, 328, 328, 51, 328, - 328, 328, 328, 328, 328, 328, 327, 328, 183, 328, - 328, 328, 130, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 208, 328, 184, 328, 328, 328, 223, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 52, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 291, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 42, 329, 329, 329, 329, 44, + 329, 329, 329, 329, 329, 329, 329, 329, 51, 329, + 329, 329, 329, 329, 329, 329, 328, 329, 183, 329, + 329, 329, 130, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 208, 329, 184, 329, 329, 329, 223, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 52, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 132, 114, 328, 115, 328, 328, 328, 113, 328, - 328, 328, 328, 328, 328, 328, 328, 150, 328, 328, - 50, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 254, 328, 328, 328, 328, - 328, 328, 328, 328, 185, 328, 328, 328, 328, 328, - 188, 328, 194, 328, 328, 328, 328, 328, 222, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 101, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 126, 328, 328, 328, 328, 328, 328, 59, + 329, 132, 114, 329, 115, 329, 329, 329, 113, 329, + 329, 329, 329, 329, 329, 329, 329, 150, 329, 329, + 50, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 254, 329, 329, 329, 329, + 329, 329, 329, 329, 185, 329, 329, 329, 329, 329, + 188, 329, 194, 329, 329, 329, 329, 329, 222, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 101, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 126, 329, 329, 329, 329, 329, 329, 59, - 328, 328, 328, 26, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 20, 328, 328, 328, 328, 328, 328, - 27, 36, 328, 160, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 327, 328, 328, - 328, 328, 328, 328, 76, 78, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 274, - 328, 328, 328, 328, 234, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 116, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 149, 328, 46, + 329, 329, 329, 26, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 20, 329, 329, 329, 329, 329, 329, + 27, 36, 329, 160, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 328, 329, 329, + 329, 329, 329, 329, 76, 78, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 274, + 329, 329, 329, 329, 234, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 116, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 149, 329, 46, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 285, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 154, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 214, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 294, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 171, 328, 328, 328, 328, 328, 328, - 328, 328, 110, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 285, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 154, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 214, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 294, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 171, 329, 329, 329, 329, 329, 329, + 329, 329, 110, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 166, 328, 178, 328, 328, 328, 328, 327, - 328, 138, 328, 328, 328, 328, 328, 97, 328, 328, - 328, 328, 206, 328, 328, 328, 328, 328, 328, 224, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 246, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 131, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 170, 328, 328, 328, 328, 328, 328, 79, 80, - 328, 328, 328, 328, 328, 60, 328, 328, 328, 328, - 328, 86, 179, 328, 197, 328, 227, 328, 328, 189, + 329, 329, 166, 329, 178, 329, 329, 329, 329, 328, + 329, 138, 329, 329, 329, 329, 329, 97, 329, 329, + 329, 329, 206, 329, 329, 329, 329, 329, 329, 224, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 246, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 131, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 170, 329, 329, 329, 329, 329, 329, 79, 80, + 329, 329, 329, 329, 329, 60, 329, 329, 329, 329, + 329, 86, 179, 329, 197, 329, 227, 329, 329, 189, - 267, 328, 328, 328, 328, 328, 72, 328, 181, 328, - 328, 328, 328, 328, 9, 328, 328, 328, 100, 328, - 328, 328, 328, 259, 328, 328, 328, 328, 205, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 327, 328, 328, 328, 328, 169, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 156, 328, 273, 328, 328, 328, 328, 328, 245, 328, + 267, 329, 329, 329, 329, 329, 72, 329, 181, 329, + 329, 329, 329, 329, 9, 329, 329, 329, 100, 329, + 329, 329, 329, 259, 329, 329, 329, 329, 205, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 328, 329, 329, 329, 329, 169, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 156, 329, 273, 329, 329, 329, 329, 329, 245, 329, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 218, 328, 301, 328, 328, 328, 265, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 288, 328, 180, 328, 328, - 328, 328, 328, 328, 328, 71, 73, 328, 328, 328, - 328, 328, 328, 328, 99, 328, 328, 328, 328, 257, - 328, 328, 328, 328, 269, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 210, 34, 28, 30, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 35, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 218, 329, 329, 301, 329, 329, 329, 265, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 288, 329, 180, 329, + 329, 329, 329, 329, 329, 329, 71, 73, 329, 329, + 329, 329, 329, 329, 329, 99, 329, 329, 329, 329, + 257, 329, 329, 329, 329, 269, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 210, 34, 28, + 30, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 29, 31, 328, 328, 328, 328, 328, 328, 328, - 328, 96, 328, 328, 328, 328, 328, 328, 327, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 212, 209, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 70, 328, 328, 133, 328, 117, 328, 328, 328, 328, - 328, 328, 328, 328, 151, 47, 328, 328, 319, 13, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 283, - 328, 286, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 12, 328, 328, 22, 328, 328, 328, 263, + 35, 329, 29, 31, 329, 329, 329, 329, 329, 329, + 329, 329, 96, 329, 329, 329, 329, 329, 329, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 212, 209, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 70, 329, 329, 329, 133, 329, 117, 329, 329, + 329, 329, 329, 329, 329, 329, 151, 47, 329, 329, + 320, 13, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 283, 329, 286, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 12, 329, 329, 22, 329, 329, - 328, 328, 328, 328, 271, 328, 328, 328, 74, 328, - 220, 328, 328, 328, 328, 211, 328, 328, 69, 328, - 328, 328, 328, 23, 328, 43, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 165, 164, - 319, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 213, 207, 328, 225, 328, 328, 275, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 81, 328, 328, - 328, 258, 328, 328, 328, 328, 193, 328, 328, 328, + 329, 263, 329, 329, 329, 329, 271, 329, 329, 329, + 74, 329, 220, 329, 329, 329, 329, 211, 329, 329, + 69, 329, 329, 329, 329, 23, 329, 43, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 165, 164, 320, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 213, 207, 329, 225, 329, 329, 275, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 81, 329, 329, 329, 258, 329, 329, 329, 329, 193, - 328, 219, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 292, 293, 162, 328, 328, 75, 328, 328, 328, - 328, 172, 328, 328, 111, 112, 328, 328, 328, 328, - 157, 328, 159, 328, 198, 328, 328, 328, 328, 163, - 328, 328, 228, 328, 328, 328, 328, 328, 328, 328, - 140, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 236, 328, 328, 328, 328, 328, 328, - 328, 24, 328, 268, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 199, 328, 328, - 256, 328, 287, 328, 192, 328, 328, 328, 328, 55, + 329, 329, 329, 329, 219, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 292, 293, 162, 329, 329, 75, + 329, 329, 329, 329, 172, 329, 329, 111, 112, 329, + 329, 329, 329, 157, 329, 159, 329, 198, 329, 329, + 329, 329, 163, 329, 329, 228, 329, 329, 329, 329, + 329, 329, 329, 140, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 236, 329, 329, 329, + 329, 329, 329, 329, 329, 24, 329, 268, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 199, 329, 329, 256, 329, 287, 329, 192, 329, - 328, 328, 328, 328, 4, 328, 328, 328, 328, 124, - 139, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 231, - 37, 38, 328, 328, 328, 328, 328, 328, 328, 276, - 328, 328, 328, 328, 328, 328, 328, 244, 328, 328, - 328, 328, 328, 328, 328, 202, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 84, 328, 56, - 262, 328, 232, 328, 328, 328, 328, 11, 328, 328, - 328, 328, 328, 328, 123, 328, 328, 328, 328, 200, - 88, 328, 40, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 55, 329, 329, 329, 329, 4, 329, + 329, 329, 329, 124, 139, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 231, 37, 38, 329, 329, 329, 329, + 329, 329, 329, 276, 329, 329, 329, 329, 329, 329, + 329, 244, 329, 329, 329, 329, 329, 329, 329, 329, + 202, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 84, 329, 56, 262, 329, 232, 329, 329, + 329, 329, 11, 329, 329, 329, 329, 329, 329, 123, + 329, 329, 329, 329, 200, 88, 329, 40, 329, 329, - 328, 168, 328, 328, 328, 328, 328, 142, 328, 328, - 328, 328, 235, 328, 328, 328, 328, 328, 243, 328, - 328, 328, 328, 136, 328, 328, 118, 119, 328, 328, - 328, 90, 94, 89, 328, 328, 328, 82, 328, 328, - 328, 328, 328, 10, 328, 328, 328, 260, 295, 328, - 328, 328, 328, 300, 39, 328, 328, 328, 328, 328, - 167, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 95, 93, 328, 328, 328, 83, 284, - 328, 328, 328, 328, 328, 328, 328, 186, 328, 328, + 329, 329, 329, 329, 329, 329, 168, 329, 329, 329, + 329, 329, 142, 329, 329, 329, 329, 235, 329, 329, + 329, 329, 329, 243, 329, 329, 329, 329, 136, 329, + 329, 329, 118, 119, 329, 329, 329, 90, 94, 89, + 329, 329, 329, 82, 329, 329, 329, 329, 329, 10, + 329, 329, 329, 260, 295, 329, 329, 329, 329, 300, + 39, 329, 329, 329, 329, 329, 167, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 95, 93, 329, 329, 329, 83, 284, 329, 329, 329, - 328, 328, 328, 201, 328, 328, 328, 328, 328, 328, - 328, 328, 158, 77, 328, 328, 328, 328, 328, 277, - 328, 328, 328, 328, 328, 328, 328, 240, 328, 328, - 239, 137, 328, 92, 48, 328, 143, 144, 147, 148, - 145, 146, 85, 328, 261, 328, 328, 328, 328, 161, - 328, 328, 328, 328, 328, 230, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 174, 173, 41, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, + 329, 329, 329, 329, 186, 329, 329, 329, 329, 329, + 201, 329, 329, 329, 329, 329, 329, 329, 329, 158, + 77, 329, 329, 329, 329, 329, 277, 329, 329, 329, + 329, 329, 329, 329, 240, 329, 329, 239, 137, 302, + 329, 92, 48, 329, 143, 144, 147, 148, 145, 146, + 85, 329, 261, 329, 329, 329, 329, 161, 329, 329, + 329, 329, 329, 230, 329, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 329, 329, 174, 173, 41, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 98, 328, 229, 328, 253, 281, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 49, 5, 328, 328, 221, 328, 328, 282, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 241, 25, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 242, 328, 328, 328, 141, 328, 328, 328, 328, - 328, 328, 328, 328, 175, 328, 182, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 278, 328, 328, 328, - 328, 328, 328, 328, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 299, 328, 328, 249, 328, 328, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 98, 329, 229, 329, 253, 281, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 49, 5, + 329, 329, 221, 329, 329, 282, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 241, 25, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 242, + 329, 329, 329, 141, 329, 329, 329, 329, 329, 329, + 329, 329, 175, 329, 182, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 278, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 328, 328, 328, 279, 328, 328, 328, 328, 328, 328, - 280, 328, 328, 328, 247, 328, 250, 251, 328, 328, - 328, 328, 328, 248, 252, 0 + 329, 329, 299, 329, 329, 249, 329, 329, 329, 329, + 329, 279, 329, 329, 329, 329, 329, 329, 280, 329, + 329, 329, 247, 329, 250, 251, 329, 329, 329, 329, + 329, 248, 252, 0 } ; static const YY_CHAR yy_ec[256] = @@ -762,17 +763,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[3245] = +static const flex_int16_t yy_base[3253] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4264, 3883, 81, 6299, - 6299, 6299, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 4264, 3883, 81, 6320, + 6320, 6320, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3532, 6299, 6299, 6299, - 107, 3462, 6299, 6299, 6299, 154, 3335, 2925, 6299, 6299, - 6299, 226, 2336, 6299, 6299, 6299, 163, 2298, 6299, 238, - 6299, 242, 148, 1838, 1641, 6299, 6299, 6299, 246, 1331, - 6299, 6299, 6299, 250, 1145, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3532, 6320, 6320, 6320, + 107, 3462, 6320, 6320, 6320, 154, 3335, 2925, 6320, 6320, + 6320, 226, 2336, 6320, 6320, 6320, 163, 2298, 6320, 238, + 6320, 242, 148, 1838, 1641, 6320, 6320, 6320, 246, 1331, + 6320, 6320, 6320, 250, 1145, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -802,9 +803,9 @@ static const flex_int16_t yy_base[3245] = 739, 741, 752, 747, 748, 761, 754, 756, 757, 764, 755, 771, 765, 786, 793, 772, 782, 768, 791, 794, 796, 801, 797, 790, 804, 807, 808, 810, 811, 818, - 813, 6299, 815, 817, 829, 828, 831, 834, 824, 840, + 813, 6320, 815, 817, 829, 828, 831, 834, 824, 840, 832, 820, 850, 846, 847, 851, 873, 848, 849, 862, - 863, 853, 6299, 866, 857, 897, 865, 875, 887, 882, + 863, 853, 6320, 866, 857, 897, 865, 875, 887, 882, 858, 883, 890, 895, 891, 907, 893, 898, 903, 920, 906, 908, 915, 921, 922, 923, 931, 932, 926, 930, @@ -813,22 +814,22 @@ static const flex_int16_t yy_base[3245] = 975, 986, 983, 985, 988, 978, 996, 1007, 998, 1002, 1006, 1009, 1011, 1013, 1014, 1017, 1021, 1018, 1022, 1024, 1032, 1027, 1028, 1029, 1034, 1036, 1037, 1040, 1042, 1045, - 1044, 1048, 1049, 1047, 1054, 1060, 1057, 1066, 1058, 6299, - 1068, 1061, 1064, 1070, 1071, 1073, 6299, 1074, 1075, 1076, + 1044, 1048, 1049, 1047, 1054, 1060, 1057, 1066, 1058, 6320, + 1068, 1061, 1064, 1070, 1071, 1073, 6320, 1074, 1075, 1076, 1083, 1084, 1087, 1096, 1086, 1097, 1099, 1089, 1098, 1110, 1106, 1109, 1117, 1107, 1114, 1115, 1118, 1116, 1122, 1123, - 1124, 1125, 1128, 1130, 1148, 6299, 1131, 1140, 1132, 1133, + 1124, 1125, 1128, 1130, 1148, 6320, 1131, 1140, 1132, 1133, 1134, 1142, 1160, 1144, 1153, 1157, 1161, 1172, 1163, 1175, 1171, 1180, 1181, 1183, 1184, 1186, 1187, 1188, 1190, 1189, - 1191, 1193, 1195, 1192, 1198, 6299, 1197, 1212, 1219, 1205, + 1191, 1193, 1195, 1192, 1198, 6320, 1197, 1212, 1219, 1205, 1210, 1215, 1218, 1220, 1221, 1222, 1223, 1227, 1230, 1241, 1237, 1233, 1248, 1243, 1244, 1246, 1249, 1251, 1250, 1252, 1254, 1263, 1259, 1266, 1274, 1275, 1277, 1279, 1286, 1288, 1281, 1283, 1289, 1285, 1284, 1291, 1293, 1300, 1294, 1297, 1224, 1304, 1306, 1301, 1307, 1308, 1313, 1309, 1311, 1315, 1318, 1321, 1329, 1325, 1326, 1335, 1327, 1336, 1328, 1333, - 1339, 1348, 1342, 1350, 6299, 1357, 1258, 1352, 1354, 1359, + 1339, 1348, 1342, 1350, 6320, 1357, 1258, 1352, 1354, 1359, 1360, 1361, 1362, 1367, 1368, 1369, 1371, 1370, 1373, 1374, 1377, 1379, 1384, 1386, 1387, 1388, 1389, 1402, 1401, 1403, @@ -841,650 +842,652 @@ static const flex_int16_t yy_base[3245] = 1528, 1527, 1529, 1531, 1534, 1530, 1539, 1540, 1542, 1536, 1549, 1550, 1551, 1552, 1555, 1553, 1557, 1562, 1563, 1564, - 1568, 1570, 1569, 1572, 1578, 1575, 1576, 6299, 1580, 1588, + 1568, 1570, 1569, 1572, 1578, 1575, 1576, 6320, 1580, 1588, 1581, 1589, 1586, 1591, 1592, 1600, 1595, 1597, 1596, 1602, - 1605, 1628, 6299, 1606, 6299, 6299, 315, 6299, 6299, 1608, - 1607, 6299, 1609, 1611, 1618, 1619, 1631, 1635, 1638, 1624, + 1605, 1628, 6320, 1606, 6320, 6320, 315, 6320, 6320, 1608, + 1607, 6320, 1609, 1611, 1618, 1619, 1631, 1635, 1638, 1624, 1612, 1639, 1651, 1660, 1641, 1622, 1652, 1653, 1644, 1654, 1666, 1655, 1665, 1656, 1673, 1683, 1684, 1685, 1675, 1687, 1689, 1692, 1693, 1697, 1699, 1700, 1702, 1703, 1704, 1706, 1705, 1708, 1711, 1714, 1715, 1717, 1710, 1718, 1669, 1727, - 1720, 1737, 6299, 1729, 1739, 1744, 1741, 1748, 1747, 1743, + 1720, 1737, 6320, 1729, 1739, 1744, 1741, 1748, 1747, 1743, 1745, 1752, 1755, 1756, 1757, 1758, 1723, 1759, 1761, 1762, - 1765, 1772, 1767, 6299, 1768, 1770, 1769, 1776, 1774, 1782, + 1765, 1772, 1767, 6320, 1768, 1770, 1769, 1776, 1774, 1782, 1784, 1780, 1787, 1788, 1790, 1801, 1791, 1796, 1798, 1799, - 1802, 1804, 6299, 1814, 1806, 1809, 1813, 1810, 1819, 1820, + 1802, 1804, 6320, 1814, 1806, 1809, 1813, 1810, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1827, 1833, 1834, 1835, 1836, 1837, 1841, 1851, 1846, 1849, 1859, 1850, 1853, 1861, 1863, 1864, 1865, 1866, 1868, 1873, 1875, 1872, 1880, 1876, 1883, 1895, 1878, 1879, 1890, 1892, 1891, 1893, 1905, 1900, 1901, 1904, 1913, 1906, 1909, 1911, 1915, 1922, 1918, 1923, 1924, - 1914, 1928, 1930, 1931, 6299, 1932, 1937, 6299, 1934, 1938, + 1914, 1928, 1930, 1931, 6320, 1932, 1937, 6320, 1934, 1938, 1960, 1939, 1941, 1942, 1944, 1947, 1949, 1946, 1952, 1962, 1964, 1974, 1970, 1975, 1980, 1977, 1982, 1983, 1985, 1986, 1988, 1991, 1993, 1998, 1994, 2007, 2012, 2011, 2008, 2019, 2014, 2015, 2017, 2037, 2016, 2018, 2025, 2020, 2021, 2024, 2033, 2026, 2027, 2030, 2031, 2048, 2050, 2044, 2052, 2053, - 2059, 2060, 2054, 6299, 2067, 1955, 2065, 2066, 2075, 2072, - 2070, 6299, 2073, 2076, 2078, 2086, 2081, 2083, 2087, 2088, - 2091, 2093, 2095, 2097, 2100, 2098, 2099, 2117, 6299, 2096, - 6299, 2101, 2103, 2110, 2114, 2118, 2119, 2120, 2121, 6299, - 6299, 2122, 2124, 2130, 2138, 2135, 6299, 2137, 2145, 2142, + 2059, 2060, 2054, 6320, 2067, 1955, 2065, 2066, 2075, 2072, + 2070, 6320, 2073, 2076, 2078, 2086, 2081, 2083, 2087, 2088, + 2091, 2093, 2095, 2097, 2100, 2098, 2099, 2117, 6320, 2096, + 6320, 2101, 2103, 2110, 2114, 2118, 2119, 2120, 2121, 6320, + 6320, 2122, 2124, 2130, 2138, 2135, 6320, 2137, 2145, 2142, 2147, 2140, 2141, 2149, 2151, 2155, 2152, 2162, 2157, 2164, - 2159, 2166, 2170, 6299, 2160, 2172, 2173, 2175, 2176, 2181, - 2182, 2179, 6299, 2183, 2185, 2188, 2196, 2198, 2195, 2199, + 2159, 2166, 2170, 6320, 2160, 2172, 2173, 2175, 2176, 2181, + 2182, 2179, 6320, 2183, 2185, 2188, 2196, 2198, 2195, 2199, 2200, 2205, 2202, 2207, 2208, 2209, 2210, 2219, 2221, 2211, - 2222, 2224, 2231, 6299, 2214, 2218, 2236, 2234, 2241, 2233, + 2222, 2224, 2231, 6320, 2214, 2218, 2236, 2234, 2241, 2233, 2235, 2237, 2243, 2245, 2246, 2247, 2250, 2251, 2252, 2259, 2260, 2257, 2256, 2265, 2266, 2267, 2270, 2273, 2274, 2275, - 2276, 2277, 6299, 2278, 2280, 2283, 171, 2286, 2289, 2287, + 2276, 2277, 6320, 2278, 2280, 2283, 171, 2286, 2289, 2287, 2288, 2296, 2291, 2294, 2307, 2312, 2308, 2309, 2310, 2316, - 2317, 2318, 2319, 2320, 2321, 2322, 2324, 6299, 2326, 2327, - 2329, 2333, 2332, 2335, 2340, 6299, 2342, 2349, 2352, 2361, + 2317, 2318, 2319, 2320, 2321, 2322, 2324, 6320, 2326, 2327, + 2329, 2333, 2332, 2335, 2340, 6320, 2342, 2349, 2352, 2361, 2344, 2353, 2362, 2358, 2363, 2364, 2366, 2368, 2370, 2369, - 2372, 2378, 2375, 6299, 2380, 2383, 2385, 2376, 2392, 2391, + 2372, 2378, 2375, 6320, 2380, 2383, 2385, 2376, 2392, 2391, 2384, 2398, 2399, 2400, 2403, 2401, 2402, 2405, 2404, 2406, 2407, 2412, 2411, 2408, 2410, 2420, 2421, 2422, 2431, 2424, - 2432, 2433, 6299, 2440, 2435, 2437, 2438, 2439, 2452, 2442, + 2432, 2433, 6320, 2440, 2435, 2437, 2438, 2439, 2452, 2442, 2461, 2444, 2448, 2445, 2464, 2466, 2456, 2467, 2478, 2480, 2468, 2477, 2488, 2487, 2490, 2483, 2470, 2493, 2496, 2497, 2498, 2500, 2502, 2503, 2504, 2505, 2512, 2513, 2510, 2520, - 2519, 2525, 2532, 2527, 6299, 2536, 2531, 2534, 2541, 2548, + 2519, 2525, 2532, 2527, 6320, 2536, 2531, 2534, 2541, 2548, 2544, 2521, 2549, 2545, 2551, 2555, 2556, 2557, 2564, 2561, 2565, 2563, 2567, 2566, 2569, 2568, 2570, 2576, 2583, 2579, - 2585, 2587, 6299, 2511, 2588, 2590, 2591, 2597, 2592, 2599, + 2585, 2587, 6320, 2511, 2588, 2590, 2591, 2597, 2592, 2599, 2601, 2603, 2604, 2605, 2607, 2610, 2611, 2613, 2615, 2618, - 2617, 2616, 6299, 2621, 2622, 2623, 2629, 2631, 2632, 2639, - 2641, 2647, 2645, 2635, 2649, 2651, 2652, 6299, 2660, 2662, - 2659, 2663, 2661, 2666, 2667, 2669, 2671, 6299, 2672, 2673, - 2674, 2681, 2682, 2677, 6299, 2686, 2684, 2679, 2688, 2689, - 2690, 2694, 2692, 2696, 2701, 2702, 2706, 2709, 2710, 6299, + 2617, 2616, 6320, 2621, 2622, 2623, 2629, 2631, 2632, 2639, + 2641, 2647, 2645, 2635, 2649, 2651, 2652, 6320, 2660, 2662, + 2659, 2663, 2661, 2666, 2667, 2669, 2671, 6320, 2672, 2673, + 2674, 2681, 2682, 2677, 6320, 2686, 2684, 2679, 2688, 2689, + 2690, 2694, 2692, 2696, 2701, 2702, 2706, 2709, 2710, 6320, 2711, 2723, 2713, 2716, 2718, 2714, 2720, 2724, 2729, 2727, - 2738, 2733, 6299, 2749, 2638, 2741, 2751, 2744, 2746, 2748, + 2738, 2733, 6320, 2749, 2638, 2741, 2751, 2744, 2746, 2748, - 2753, 2754, 2755, 2756, 2757, 2760, 6299, 2761, 2764, 2765, + 2753, 2754, 2755, 2756, 2757, 2760, 6320, 2761, 2764, 2765, 2767, 2770, 2769, 2771, 2784, 2777, 2779, 2781, 2785, 2786, 2788, 2791, 2792, 2797, 2793, 2794, 2804, 2806, 2808, 2809, 2812, 2816, 2814, 2819, 2820, 2815, 2822, 2825, 2833, 2838, - 2823, 2834, 6299, 2837, 2840, 2839, 2841, 2842, 2845, 2846, + 2823, 2834, 6320, 2837, 2840, 2839, 2841, 2842, 2845, 2846, 2849, 2847, 2854, 2852, 2851, 2855, 2864, 2872, 2861, 2868, 2870, 2873, 2875, 2877, 2876, 2878, 2879, 2886, 2883, 2885, 2893, 2890, 2894, 2902, 2891, 2899, 2901, 2903, 2905, 2904, 2906, 2907, 2912, 2914, 2917, 2924, 2927, 2929, 2928, 2930, - 2931, 2934, 6299, 2937, 2938, 2935, 2942, 2945, 2947, 2949, + 2931, 2934, 6320, 2937, 2938, 2935, 2942, 2945, 2947, 2949, 2957, 2948, 2952, 2959, 2956, 2966, 2958, 2967, 2968, 2975, - 2972, 6299, 2973, 6299, 2974, 2976, 2979, 2983, 2982, 6299, - 2987, 6299, 2989, 2994, 2984, 2990, 6299, 2996, 2997, 2998, + 2972, 6320, 2973, 6320, 2974, 2976, 2979, 2983, 2982, 6320, + 2987, 6320, 2989, 2994, 2984, 2990, 6320, 2996, 2997, 2998, 3003, 3001, 3005, 3008, 3009, 3010, 3011, 3013, 3015, 3019, 3018, 3020, 3023, 3028, 3025, 3029, 3032, 3035, 3036, 3040, - 3038, 3042, 3045, 3047, 3050, 6299, 3052, 3048, 3054, 3057, + 3038, 3042, 3045, 3047, 3050, 6320, 3052, 3048, 3054, 3057, 3058, 3059, 3061, 3062, 3065, 3067, 3068, 3074, 3075, 3069, - 3079, 3085, 3082, 3084, 3097, 6299, 3092, 3094, 3095, 3096, - 6299, 3098, 3099, 3100, 3107, 3105, 3109, 3110, 3112, 3116, - 3111, 3118, 3113, 3128, 3126, 3132, 3121, 6299, 3135, 3136, + 3079, 3085, 3082, 3084, 3097, 6320, 3092, 3094, 3095, 3096, + 6320, 3098, 3099, 3100, 3107, 3105, 3109, 3110, 3112, 3116, + 3111, 3118, 3113, 3128, 3126, 3132, 3121, 6320, 3135, 3136, 3122, 3139, 3149, 3151, 3156, 3138, 3152, 3154, 3163, 3159, 3158, 3160, 3161, 3162, 3165, 3172, 3173, 3169, 3176, 3175, 3179, 3186, 3183, 3177, 3181, 3187, 3189, 3190, 3191, 3192, - 3193, 3194, 3197, 6299, 3199, 3200, 3202, 3214, 3206, 3209, - 3213, 3217, 6299, 3220, 3221, 3223, 3224, 3222, 3230, 3231, - 3232, 3233, 3234, 3236, 3239, 3240, 6299, 3245, 6299, 3246, + 3193, 3194, 3197, 6320, 3199, 3200, 3202, 3214, 3206, 3209, + 3213, 3217, 6320, 3220, 3221, 3223, 3224, 3222, 3230, 3231, + 3232, 3233, 3234, 3236, 3239, 3240, 6320, 3245, 6320, 3246, 3254, 3253, 3259, 3235, 3261, 3263, 3268, 3262, 3264, 3269, 3272, 3270, 3276, 3273, 3278, 3281, 3285, 3286, 3288, 3284, - 3295, 3291, 3296, 3298, 3299, 6299, 6299, 3300, 3301, 3302, + 3295, 3291, 3296, 3298, 3299, 6320, 6320, 3300, 3301, 3302, 3305, 3306, 3307, 3316, 3318, 3323, 3320, 3313, 3322, 3342, - 6299, 3329, 3324, 3326, 3332, 3350, 3333, 3346, 3353, 3349, - 3358, 3355, 6299, 3356, 3357, 3365, 3360, 3363, 3368, 6299, - 3367, 6299, 3364, 3369, 3370, 3377, 3374, 3379, 3380, 3381, + 6320, 3329, 3324, 3326, 3332, 3350, 3333, 3346, 3353, 3349, + 3358, 3355, 6320, 3356, 3357, 3365, 3360, 3363, 3368, 6320, + 3367, 6320, 3364, 3369, 3370, 3377, 3374, 3379, 3380, 3381, 3385, 3396, 3397, 3389, 3399, 3393, 3382, 3401, 3403, 3410, - 3405, 3407, 3408, 6299, 3412, 3409, 3414, 3417, 3419, 3425, - 3428, 3415, 6299, 3421, 3431, 3435, 3432, 3436, 3439, 3441, + 3405, 3407, 3408, 6320, 3412, 3409, 3414, 3417, 3419, 3425, + 3428, 3415, 6320, 3421, 3431, 3435, 3432, 3436, 3439, 3441, 3442, 3443, 3445, 3447, 3444, 3449, 3460, 3452, 3453, 3455, - 3466, 3467, 3473, 6299, 3474, 3468, 3481, 3483, 3476, 3478, + 3466, 3467, 3473, 6320, 3474, 3468, 3481, 3483, 3476, 3478, 3484, 3485, 3486, 3489, 3491, 3490, 3492, 3493, 3494, 3496, - 3498, 3501, 3499, 3512, 3513, 3500, 3521, 3522, 3504, 6299, + 3498, 3501, 3499, 3512, 3513, 3500, 3521, 3522, 3504, 6320, 3514, 3526, 3527, 3528, 3529, 3535, 3536, 3539, 3541, 3530, - 3545, 3552, 3534, 3542, 3557, 3554, 3565, 3561, 6299, 3566, + 3545, 3552, 3534, 3542, 3557, 3554, 3565, 3561, 6320, 3566, 3562, 3573, 3547, 3568, 3570, 3574, 3576, 3578, 3575, 3579, - 3582, 3585, 3592, 3587, 3588, 3589, 3597, 3593, 6299, 3604, + 3582, 3585, 3592, 3587, 3588, 3589, 3597, 3593, 6320, 3604, 3602, 3605, 3610, 3611, 3618, 3614, 3595, 3617, 3620, 3622, - 3624, 3627, 3628, 3629, 3632, 3633, 6299, 6299, 3635, 3636, - 3637, 6299, 3640, 3639, 3651, 3642, 3643, 3644, 3655, 3654, - 3652, 3656, 3658, 3665, 6299, 3666, 3673, 3668, 3669, 3680, + 3624, 3627, 3628, 3629, 3632, 3633, 6320, 6320, 3635, 3636, + 3637, 6320, 3640, 3639, 3651, 3642, 3643, 3644, 3655, 3654, + 3652, 3656, 3658, 3665, 6320, 3666, 3673, 3668, 3669, 3680, 3683, 3686, 3670, 3682, 3672, 3679, 3687, 3690, 3689, 3694, - 3695, 3703, 3706, 3701, 3702, 3704, 6299, 3705, 3709, 3710, + 3695, 3703, 3706, 3701, 3702, 3704, 6320, 3705, 3709, 3710, - 3712, 3713, 3714, 6299, 3716, 3718, 3727, 3719, 3737, 3726, + 3712, 3713, 3714, 6320, 3716, 3718, 3727, 3719, 3737, 3726, 3723, 3741, 3738, 3742, 3743, 3744, 3745, 3746, 3753, 3748, - 3750, 3752, 3757, 3760, 6299, 3761, 3767, 3754, 3769, 6299, - 3772, 3781, 3779, 3782, 3777, 3784, 3785, 3792, 6299, 3787, - 3790, 3788, 3791, 3801, 3793, 3802, 3804, 3798, 6299, 3805, - 3806, 3807, 6299, 3808, 3813, 3819, 3821, 3822, 3829, 3824, - 3826, 3827, 3828, 6299, 3834, 6299, 3832, 3836, 3840, 6299, + 3750, 3752, 3757, 3760, 6320, 3761, 3767, 3754, 3769, 6320, + 3772, 3781, 3779, 3782, 3777, 3784, 3785, 3792, 6320, 3787, + 3790, 3788, 3791, 3801, 3793, 3802, 3804, 3798, 6320, 3805, + 3806, 3807, 6320, 3808, 3813, 3819, 3821, 3822, 3829, 3824, + 3826, 3827, 3828, 6320, 3834, 6320, 3832, 3836, 3840, 6320, 3838, 3843, 3844, 3846, 3847, 3852, 3853, 3851, 3860, 3861, 3862, 3864, 3865, 3863, 3868, 3872, 3869, 3870, 3874, 3875, - 6299, 3876, 3878, 3885, 3890, 3897, 3886, 3893, 3880, 3899, + 6320, 3876, 3878, 3885, 3890, 3897, 3886, 3893, 3880, 3899, - 3900, 6299, 6299, 3903, 6299, 3906, 3907, 3908, 6299, 3910, - 3912, 3917, 3914, 3915, 3918, 3922, 3919, 6299, 3929, 3932, - 6299, 3930, 3940, 3935, 3937, 3938, 3943, 3939, 3941, 3945, - 3949, 3951, 3946, 3950, 3947, 6299, 3954, 3952, 3956, 3960, - 3967, 3968, 3970, 3969, 6299, 3976, 3977, 3973, 3980, 3983, - 6299, 3984, 6299, 3982, 3986, 3992, 3994, 3988, 6299, 3997, + 3900, 6320, 6320, 3903, 6320, 3906, 3907, 3908, 6320, 3910, + 3912, 3917, 3914, 3915, 3918, 3922, 3919, 6320, 3929, 3932, + 6320, 3930, 3940, 3935, 3937, 3938, 3943, 3939, 3941, 3945, + 3949, 3951, 3946, 3950, 3947, 6320, 3954, 3952, 3956, 3960, + 3967, 3968, 3970, 3969, 6320, 3976, 3977, 3973, 3980, 3983, + 6320, 3984, 6320, 3982, 3986, 3992, 3994, 3988, 6320, 3997, 3998, 4002, 4003, 4005, 4006, 4009, 4011, 4013, 4015, 4023, - 4019, 4020, 4018, 6299, 4021, 4022, 4028, 4037, 4030, 4032, + 4019, 4020, 4018, 6320, 4021, 4022, 4028, 4037, 4030, 4032, 4047, 4034, 4042, 4025, 4046, 4049, 4051, 4055, 4057, 4050, - 4060, 4053, 6299, 4061, 4064, 4067, 4075, 4068, 4072, 6299, + 4060, 4053, 6320, 4061, 4064, 4067, 4075, 4068, 4072, 6320, - 4078, 4076, 4080, 6299, 4079, 4082, 4086, 4094, 4083, 4087, - 4091, 4089, 4096, 6299, 4097, 4098, 4099, 4108, 4112, 4106, - 6299, 6299, 4114, 6299, 4116, 4100, 4121, 4124, 4104, 4118, + 4078, 4076, 4080, 6320, 4079, 4082, 4086, 4094, 4083, 4087, + 4091, 4089, 4096, 6320, 4097, 4098, 4099, 4108, 4112, 4106, + 6320, 6320, 4114, 6320, 4116, 4100, 4121, 4124, 4104, 4118, 4126, 4128, 4131, 4132, 4134, 4135, 4139, 4141, 4149, 4150, - 4153, 4154, 4156, 4145, 6299, 6299, 4159, 4160, 4146, 4167, - 4168, 4162, 4170, 4177, 4173, 4179, 4182, 4184, 4191, 6299, - 4172, 4183, 4190, 4187, 6299, 4192, 4193, 4195, 4196, 4197, + 4153, 4154, 4156, 4145, 6320, 6320, 4159, 4160, 4146, 4167, + 4168, 4162, 4170, 4177, 4173, 4179, 4182, 4184, 4191, 6320, + 4172, 4183, 4190, 4187, 6320, 4192, 4193, 4195, 4196, 4197, 4201, 4199, 4200, 4204, 4205, 4213, 4206, 4208, 4216, 4214, - 4222, 4224, 4225, 4226, 4228, 4230, 4233, 6299, 4234, 4235, - 4237, 4238, 4239, 4243, 4245, 4246, 4247, 6299, 4249, 6299, + 4222, 4224, 4225, 4226, 4228, 4230, 4233, 6320, 4234, 4235, + 4237, 4238, 4239, 4243, 4245, 4246, 4247, 6320, 4249, 6320, 4252, 4251, 4253, 4260, 4267, 4270, 4269, 4271, 4274, 4275, - 4278, 4280, 4281, 4284, 4288, 4283, 4291, 4293, 6299, 4294, + 4278, 4280, 4281, 4284, 4288, 4283, 4291, 4293, 6320, 4294, 4286, 4300, 4301, 4303, 4305, 4307, 4309, 4310, 4312, 4314, - 4316, 4318, 4323, 4319, 4315, 4325, 4327, 6299, 4330, 4332, + 4316, 4318, 4323, 4319, 4315, 4325, 4327, 6320, 4330, 4332, 4334, 4337, 4338, 4341, 4340, 4344, 4349, 4342, 4350, 4351, - 4355, 6299, 4352, 4357, 4358, 4359, 4367, 4362, 4364, 4368, - 4371, 6299, 4375, 4376, 4377, 4378, 4379, 4382, 4385, 4387, - 4389, 4391, 4399, 6299, 4394, 4390, 4403, 4401, 4405, 4404, - 4407, 4409, 6299, 4410, 4416, 4413, 4420, 4422, 4429, 4427, + 4355, 6320, 4352, 4357, 4358, 4359, 4367, 4362, 4364, 4368, + 4371, 6320, 4375, 4376, 4377, 4378, 4379, 4382, 4385, 4387, + 4389, 4391, 4399, 6320, 4394, 4390, 4403, 4401, 4405, 4404, + 4407, 4409, 6320, 4410, 4416, 4413, 4420, 4422, 4429, 4427, 4431, 4424, 4433, 4434, 4430, 4438, 4441, 4442, 4440, 4458, - 4459, 4444, 6299, 4445, 6299, 4455, 4456, 4466, 4461, 4463, - 4467, 6299, 4469, 4472, 4474, 4471, 4475, 6299, 4478, 4476, - 4479, 4481, 6299, 4477, 4491, 4482, 4483, 4498, 4499, 6299, + 4459, 4444, 6320, 4445, 6320, 4455, 4456, 4466, 4461, 4463, + 4467, 6320, 4469, 4472, 4474, 4471, 4475, 6320, 4478, 4476, + 4479, 4481, 6320, 4477, 4491, 4482, 4483, 4498, 4499, 6320, 4504, 4505, 4501, 4513, 4515, 4510, 4512, 4514, 4516, 4518, - 4520, 4521, 4522, 4531, 4524, 4527, 6299, 4529, 4536, 4542, - 4543, 4545, 4526, 4537, 4546, 4552, 4547, 6299, 4549, 4553, - 4555, 4556, 4558, 4559, 4561, 4569, 4565, 4564, 4567, 4572, - 4568, 6299, 4576, 4574, 4578, 4587, 4584, 4591, 6299, 6299, - 4580, 4595, 4597, 4585, 4598, 6299, 4601, 4608, 4603, 4607, - 4604, 6299, 6299, 4610, 6299, 4612, 6299, 4614, 4616, 6299, + 4520, 4521, 4522, 4531, 4524, 4527, 6320, 4529, 4536, 4542, + 4543, 4550, 4526, 4537, 4547, 4546, 4552, 6320, 4553, 4554, + 4555, 4556, 4559, 4560, 4561, 4568, 4567, 4564, 4569, 4571, + 4572, 6320, 4577, 4578, 4579, 4587, 4583, 4590, 6320, 6320, + 4585, 4595, 4597, 4586, 4601, 6320, 4603, 4604, 4605, 4609, + 4606, 6320, 6320, 4611, 6320, 4613, 6320, 4614, 4616, 6320, - 6299, 4617, 4618, 4619, 4620, 4627, 6299, 4634, 6299, 4629, - 4635, 4621, 4631, 4638, 6299, 4639, 4640, 4642, 6299, 4645, - 4655, 4646, 4647, 6299, 4651, 4656, 4648, 4657, 6299, 4660, - 4666, 4663, 4669, 4670, 4671, 4672, 4677, 4678, 4673, 4681, - 4680, 4683, 4690, 4694, 4696, 4698, 4699, 4684, 4701, 4703, - 4707, 4705, 4709, 4710, 4712, 4714, 4715, 4719, 4723, 4716, - 4720, 4724, 4725, 4726, 4733, 4729, 4735, 4740, 4736, 4741, - 4742, 4743, 4744, 4747, 4748, 4750, 4754, 4757, 4758, 6299, - 4752, 4753, 4759, 4766, 4764, 4771, 4774, 4781, 4784, 4785, - 6299, 4787, 6299, 4789, 4777, 4791, 4792, 4793, 6299, 4794, + 6320, 4618, 4619, 4620, 4621, 4630, 6320, 4634, 6320, 4641, + 4636, 4622, 4624, 4639, 6320, 4640, 4642, 4648, 6320, 4643, + 4655, 4650, 4651, 6320, 4657, 4658, 4653, 4660, 6320, 4662, + 4665, 4669, 4667, 4670, 4671, 4673, 4677, 4680, 4681, 4682, + 4683, 4684, 4696, 4698, 4700, 4702, 4692, 4688, 4705, 4707, + 4711, 4709, 4713, 4714, 4715, 4717, 4718, 4720, 4723, 4724, + 4726, 4729, 4727, 4728, 4740, 4730, 4732, 4742, 4744, 4733, + 4743, 4747, 4746, 4751, 4749, 4754, 4757, 4756, 4758, 6320, + 4762, 4764, 4767, 4769, 4768, 4774, 4776, 4778, 4784, 4787, + 6320, 4791, 6320, 4793, 4785, 4789, 4795, 4796, 6320, 4797, - 4797, 4796, 4799, 4798, 4800, 4801, 4804, 4805, 4809, 4812, - 6299, 4817, 6299, 4806, 4821, 4826, 6299, 4822, 4833, 4829, - 4834, 4835, 4836, 4837, 4838, 4841, 4839, 4844, 4846, 4848, - 4853, 4850, 4861, 4868, 4854, 4863, 4864, 4865, 4867, 4869, - 4871, 4873, 4880, 4882, 4886, 6299, 4874, 6299, 4881, 4877, - 4888, 4891, 4892, 4894, 4898, 6299, 6299, 4895, 4899, 4904, - 4901, 4905, 4907, 4908, 6299, 4909, 4918, 4920, 4913, 6299, - 4910, 4921, 4927, 4929, 6299, 4930, 4931, 4932, 4934, 4935, - 4938, 4939, 4943, 4945, 4946, 4949, 6299, 6299, 6299, 6299, - 4950, 4953, 4956, 4957, 4959, 4960, 4962, 4964, 4965, 6299, + 4798, 4799, 4802, 4801, 4804, 4805, 4806, 4809, 4812, 4818, + 6320, 4829, 4808, 6320, 4813, 4825, 4832, 6320, 4833, 4837, + 4820, 4839, 4840, 4841, 4843, 4844, 4848, 4846, 4850, 4852, + 4845, 4853, 4855, 4867, 4874, 4858, 4860, 4869, 4872, 4870, + 4871, 4873, 4879, 4883, 4884, 4893, 6320, 4880, 6320, 4885, + 4887, 4889, 4895, 4897, 4896, 4898, 6320, 6320, 4900, 4904, + 4909, 4903, 4905, 4911, 4686, 6320, 4912, 4921, 4914, 4919, + 6320, 4922, 4924, 4926, 4929, 6320, 4930, 4931, 4934, 4936, + 4933, 4948, 4945, 4949, 4939, 4941, 4957, 6320, 6320, 6320, + 6320, 4959, 4943, 4962, 4951, 4954, 4963, 4966, 4969, 4970, - 4967, 6299, 6299, 4968, 4974, 4976, 4977, 4978, 4981, 4983, - 4985, 6299, 4984, 4989, 4991, 4987, 4998, 5004, 5006, 4988, - 5007, 5001, 5008, 5015, 5011, 5013, 5010, 5017, 5021, 5024, - 6299, 6299, 5018, 5028, 5029, 5036, 5033, 5034, 5037, 5046, - 5041, 5042, 5043, 5044, 5048, 5049, 5060, 5061, 5053, 5050, - 6299, 5063, 5064, 6299, 5057, 6299, 5066, 5072, 5065, 5073, - 5075, 5076, 5078, 5080, 6299, 6299, 5087, 5082, 6299, 6299, - 5074, 5090, 5092, 5095, 5096, 5091, 5097, 5099, 5101, 6299, - 5102, 6299, 5103, 5104, 5106, 5107, 5119, 5122, 5124, 5126, - 5121, 5109, 6299, 5127, 5128, 6299, 5130, 5131, 5133, 6299, + 6320, 4974, 6320, 6320, 4971, 4977, 4978, 4979, 4980, 4981, + 4986, 4983, 6320, 4987, 4989, 4993, 4990, 4997, 5004, 5007, + 5001, 5009, 4999, 5010, 5018, 5011, 5019, 5015, 5021, 5023, + 5025, 6320, 6320, 5027, 5032, 5033, 5035, 5037, 5038, 5039, + 5047, 5044, 5045, 5046, 5049, 5051, 5052, 5060, 5062, 5058, + 5057, 6320, 5061, 5065, 5068, 6320, 5066, 6320, 5067, 5074, + 5075, 5076, 5081, 5082, 5083, 5085, 6320, 6320, 5086, 5092, + 6320, 6320, 5087, 5088, 5095, 5097, 5099, 5100, 5101, 5103, + 5104, 6320, 5105, 6320, 5107, 5111, 5113, 5110, 5125, 5128, + 5130, 5132, 5121, 5133, 6320, 5117, 5134, 6320, 5136, 5137, - 5137, 5135, 5140, 5143, 6299, 5147, 5150, 5144, 6299, 5152, - 6299, 5155, 5156, 5157, 5164, 6299, 5159, 5165, 6299, 5168, - 5171, 5173, 5172, 6299, 5160, 6299, 5162, 5181, 5183, 5187, - 5174, 5191, 5188, 5177, 5192, 5199, 5197, 5194, 6299, 6299, - 135, 5208, 5200, 5204, 5205, 5203, 5216, 5211, 5213, 5215, - 6299, 6299, 5221, 6299, 5212, 5219, 6299, 5218, 5227, 5228, - 5231, 5232, 5233, 5234, 5238, 5240, 5241, 5242, 5244, 5246, - 5256, 5263, 5247, 5260, 5267, 5269, 5271, 5273, 5261, 5275, - 5276, 5278, 5279, 5281, 5282, 5283, 5285, 6299, 5288, 5289, - 5284, 6299, 5294, 5290, 5300, 5301, 6299, 5308, 5309, 5310, + 5139, 6320, 5141, 5143, 5145, 5149, 6320, 5153, 5146, 5155, + 6320, 5157, 6320, 5158, 5159, 5162, 5169, 6320, 5165, 5166, + 6320, 5171, 5173, 5176, 5175, 6320, 5177, 6320, 5180, 5182, + 5183, 5187, 5189, 5191, 5192, 5193, 5194, 5202, 5198, 5199, + 6320, 6320, 135, 5207, 5209, 5210, 5213, 5212, 5220, 5215, + 5217, 5223, 6320, 6320, 5219, 6320, 5226, 5225, 6320, 5216, + 5235, 5236, 5227, 5242, 5231, 5239, 5229, 5251, 5246, 5252, + 5248, 5253, 5256, 5254, 5267, 5258, 5269, 5270, 5273, 5275, + 5278, 5265, 5280, 5282, 5283, 5284, 5286, 5287, 5288, 5290, + 6320, 5293, 5294, 5289, 6320, 5299, 5304, 5301, 5312, 6320, - 5311, 6299, 5295, 5315, 5312, 5317, 5235, 5328, 5321, 5323, - 5325, 6299, 6299, 6299, 5330, 5337, 6299, 5339, 5331, 5324, - 5333, 6299, 5341, 5340, 6299, 6299, 5342, 5344, 5343, 5354, - 6299, 5346, 6299, 5347, 6299, 5355, 5356, 5364, 5357, 6299, - 5369, 5371, 6299, 5377, 5379, 5381, 5373, 5370, 5383, 5384, - 6299, 5391, 5387, 5388, 5395, 5386, 5396, 5397, 5398, 5399, - 5406, 5401, 5410, 6299, 5407, 5414, 5415, 5412, 5405, 5416, - 5421, 6299, 5423, 6299, 5425, 5427, 5428, 5430, 5429, 5433, - 5434, 5443, 5435, 5436, 5437, 5447, 5449, 6299, 5451, 5456, - 6299, 5453, 6299, 5458, 6299, 5459, 5460, 5461, 5462, 6299, + 5306, 5313, 5314, 5315, 6320, 5316, 5319, 5321, 5320, 5326, + 5333, 5330, 5328, 5331, 6320, 6320, 6320, 5339, 5346, 6320, + 5348, 5336, 5338, 5340, 6320, 5342, 5349, 6320, 6320, 5352, + 5353, 5354, 5365, 6320, 5355, 6320, 5357, 6320, 5364, 5366, + 5372, 5370, 6320, 5375, 5381, 6320, 5384, 5387, 5389, 5390, + 5356, 5391, 5392, 6320, 5400, 5393, 5396, 5403, 5395, 5404, + 5405, 5406, 5407, 5414, 5409, 5418, 6320, 5415, 5422, 5423, + 5420, 5412, 5424, 5429, 5430, 6320, 5433, 6320, 5435, 5436, + 5437, 5438, 5440, 5442, 5360, 5446, 5443, 5445, 5453, 5455, + 5457, 6320, 5459, 5465, 6320, 5460, 6320, 5467, 6320, 5462, - 5465, 5466, 5469, 5470, 6299, 5471, 5473, 5478, 5480, 6299, - 6299, 5481, 5488, 5485, 5483, 5494, 5496, 5484, 5499, 5491, - 5500, 5503, 5512, 5507, 5508, 5510, 5514, 5359, 5515, 6299, - 6299, 6299, 5517, 5511, 5525, 5522, 5524, 5534, 5532, 6299, - 5533, 5536, 5537, 5539, 5546, 5543, 5545, 6299, 5541, 5547, - 5548, 5549, 5552, 5555, 5554, 6299, 5557, 5567, 5559, 5568, - 5570, 5572, 5577, 5579, 5569, 5586, 5583, 6299, 5585, 6299, - 6299, 5581, 6299, 5587, 5589, 5590, 5591, 6299, 5594, 5596, - 5597, 5598, 5602, 5604, 6299, 5605, 5606, 5608, 5613, 6299, - 6299, 5615, 6299, 5620, 5616, 5622, 5629, 5625, 5624, 5631, + 5468, 5469, 5470, 6320, 5472, 5473, 5474, 5477, 6320, 5482, + 5480, 5486, 5488, 6320, 6320, 5489, 5498, 5490, 5491, 5500, + 5502, 5503, 5507, 5504, 5508, 5510, 5518, 5514, 5516, 5511, + 5520, 5521, 5534, 6320, 6320, 6320, 5525, 5522, 5538, 5540, + 5541, 5549, 5527, 6320, 5546, 5548, 5550, 5552, 5559, 5556, + 5558, 6320, 5554, 5560, 5536, 5562, 5564, 5565, 5568, 5567, + 6320, 5570, 5580, 5577, 5581, 5583, 5586, 5590, 5592, 5587, + 5599, 5596, 6320, 5598, 6320, 6320, 5600, 6320, 5594, 5602, + 5603, 5604, 6320, 5607, 5608, 5609, 5611, 5615, 5618, 6320, + 5627, 5610, 5612, 5623, 6320, 6320, 5633, 6320, 5635, 5636, - 5628, 6299, 5634, 5635, 5638, 5639, 5640, 6299, 5641, 5642, - 5644, 5645, 6299, 5648, 5647, 5650, 5652, 5653, 6299, 5657, - 5656, 5675, 5672, 6299, 5659, 5670, 6299, 6299, 5681, 5685, - 5674, 6299, 6299, 6299, 5682, 5671, 5689, 6299, 5692, 5696, - 5700, 5704, 5695, 6299, 5706, 5703, 5708, 6299, 6299, 5707, - 5709, 5710, 5712, 6299, 6299, 5713, 5716, 5714, 5717, 5719, - 6299, 5724, 5728, 5730, 5733, 5736, 5725, 5739, 5741, 5749, - 5751, 5746, 5747, 5752, 5754, 5755, 5756, 5758, 5767, 5763, - 5765, 5777, 5774, 6299, 6299, 5781, 5783, 5778, 6299, 6299, - 5785, 5789, 5791, 5793, 5795, 5797, 5799, 6299, 5800, 5802, + 5626, 5643, 5638, 5639, 5645, 5646, 6320, 5642, 5648, 5649, + 5652, 5653, 6320, 5655, 5656, 5657, 5658, 6320, 5661, 5660, + 5665, 5666, 5667, 6320, 5669, 5670, 5686, 5684, 6320, 5671, + 5688, 5681, 6320, 6320, 5696, 5698, 5699, 6320, 6320, 6320, + 5700, 5673, 5702, 6320, 5707, 5711, 5715, 5719, 5710, 6320, + 5721, 5704, 5718, 6320, 6320, 5723, 5724, 5725, 5727, 6320, + 6320, 5728, 5729, 5731, 5733, 5734, 6320, 5737, 5738, 5739, + 5746, 5751, 5741, 5752, 5754, 5765, 5767, 5748, 5760, 5758, + 5769, 5771, 5762, 5778, 5786, 5782, 5784, 5790, 5792, 5793, + 6320, 6320, 5795, 5797, 5799, 6320, 6320, 5801, 5803, 5805, - 5803, 5804, 5766, 6299, 5805, 5807, 5808, 5813, 5810, 5814, - 5817, 5819, 6299, 6299, 5811, 5825, 5660, 5820, 5827, 6299, - 5830, 5837, 5834, 5835, 5836, 5838, 5841, 6299, 5843, 5842, - 6299, 6299, 5839, 6299, 6299, 5844, 6299, 6299, 6299, 6299, - 6299, 6299, 6299, 5847, 6299, 5846, 5853, 5861, 5863, 6299, - 5858, 5864, 5768, 5865, 5866, 6299, 5867, 5868, 5869, 5875, - 5871, 5882, 5876, 5872, 5878, 5884, 5887, 5888, 5892, 5893, - 5894, 5897, 5898, 5899, 6299, 6299, 6299, 5895, 5906, 5908, - 5910, 5914, 5916, 5921, 5923, 5911, 5924, 5925, 5927, 5929, - 5931, 5933, 5941, 5936, 5937, 5938, 5939, 5946, 5952, 5940, + 5807, 5810, 5812, 5814, 6320, 5815, 5817, 5818, 5819, 5820, + 6320, 5768, 5822, 5770, 5823, 5825, 5828, 5826, 5833, 6320, + 6320, 5830, 5835, 5834, 5842, 5839, 6320, 5844, 5851, 5849, + 5850, 5846, 5852, 5853, 6320, 5856, 5858, 6320, 6320, 6320, + 5859, 6320, 6320, 5854, 6320, 6320, 6320, 6320, 6320, 6320, + 6320, 5861, 6320, 5866, 5872, 5876, 5878, 6320, 5868, 5873, + 5881, 5883, 5884, 6320, 5886, 5888, 5887, 5893, 5889, 5896, + 5894, 5900, 5890, 5901, 5902, 5905, 5906, 5910, 5911, 5913, + 5914, 5916, 6320, 6320, 6320, 5912, 5923, 5925, 5928, 5930, + 5935, 5939, 5941, 5931, 5933, 5942, 5944, 5946, 5947, 5948, - 5942, 5954, 6299, 5947, 6299, 5957, 6299, 6299, 5964, 5965, - 5960, 5958, 5973, 5976, 5969, 5971, 5972, 5974, 5981, 5986, - 6299, 6299, 5978, 5982, 6299, 5987, 5988, 6299, 5989, 5990, - 5993, 5994, 5997, 5996, 5998, 6000, 6014, 6299, 6299, 6004, - 6008, 6006, 6017, 6018, 6027, 6019, 6028, 6029, 6030, 6022, - 6037, 6299, 6039, 6040, 6043, 6299, 6032, 6044, 6046, 6047, - 6048, 6055, 6050, 6051, 6299, 6056, 6299, 6059, 6061, 6060, - 6052, 6062, 6072, 6074, 6077, 6076, 6299, 6054, 6078, 6068, - 6083, 6090, 6088, 6092, 6086, 6095, 6096, 6098, 6103, 6097, - 6106, 6107, 6109, 6108, 6299, 6111, 6112, 6299, 6115, 6116, + 5958, 5954, 5955, 5956, 5957, 5960, 5965, 5966, 5969, 5971, + 6320, 5974, 6320, 5962, 6320, 6320, 5976, 5978, 5982, 5973, + 5991, 5993, 5983, 5986, 5984, 5995, 6002, 6005, 6320, 6320, + 5994, 5996, 6320, 5998, 6006, 6320, 6007, 6008, 6009, 6011, + 6017, 6014, 6018, 6020, 6022, 6320, 6320, 6019, 6026, 6029, + 6032, 6035, 6042, 6037, 6041, 6045, 6047, 6034, 6049, 6320, + 6055, 6051, 6058, 6320, 6059, 6060, 6061, 6062, 6064, 6071, + 6066, 6067, 6320, 6069, 6320, 6073, 6075, 6077, 6074, 6076, + 6078, 6088, 6092, 6086, 6320, 6090, 6100, 6094, 6102, 6104, + 6106, 6107, 6096, 6109, 6112, 6118, 6122, 6119, 6123, 6110, - 6117, 6118, 6122, 6299, 6125, 6119, 6128, 6129, 6133, 6134, - 6299, 6140, 6143, 6144, 6299, 6145, 6299, 6299, 6148, 6135, - 6146, 6156, 6158, 6299, 6299, 6299, 6179, 6186, 6193, 6200, - 6207, 6214, 6221, 88, 6228, 6235, 6242, 6249, 6256, 6263, - 6270, 6277, 6284, 6291 + 6127, 6124, 6320, 6134, 6125, 6320, 6131, 6135, 6128, 6137, + 6138, 6320, 6142, 6145, 6146, 6148, 6151, 6152, 6320, 6154, + 6158, 6155, 6320, 6161, 6320, 6320, 6163, 6160, 6167, 6170, + 6172, 6320, 6320, 6320, 6200, 6207, 6214, 6221, 6228, 6235, + 6242, 88, 6249, 6256, 6263, 6270, 6277, 6284, 6291, 6298, + 6305, 6312 } ; -static const flex_int16_t yy_def[3245] = +static const flex_int16_t yy_def[3253] = { 0, - 3226, 1, 3227, 3227, 3228, 3228, 3229, 3229, 3230, 3230, - 3231, 3231, 3232, 3232, 3233, 3233, 3226, 3234, 3226, 3226, - 3226, 3226, 3235, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3236, 3226, 3226, 3226, - 3236, 3237, 3226, 3226, 3226, 3237, 3238, 3226, 3226, 3226, - 3226, 3238, 3239, 3226, 3226, 3226, 3239, 3240, 3226, 3241, - 3226, 3240, 3240, 3242, 3226, 3226, 3226, 3226, 3242, 3243, - 3226, 3226, 3226, 3243, 3234, 3234, 3226, 3244, 3235, 3244, - 3235, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 1, 3235, 3235, 3236, 3236, 3237, 3237, 3238, 3238, + 3239, 3239, 3240, 3240, 3241, 3241, 3234, 3242, 3234, 3234, + 3234, 3234, 3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3244, 3234, 3234, 3234, + 3244, 3245, 3234, 3234, 3234, 3245, 3246, 3234, 3234, 3234, + 3234, 3246, 3247, 3234, 3234, 3234, 3247, 3248, 3234, 3249, + 3234, 3248, 3248, 3250, 3234, 3234, 3234, 3234, 3250, 3251, + 3234, 3234, 3234, 3251, 3242, 3242, 3234, 3252, 3243, 3252, + 3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3236, 3236, 3237, - 3237, 3238, 3238, 3226, 3239, 3239, 3240, 3240, 3241, 3241, - 3240, 3242, 3242, 3226, 3243, 3243, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3244, 3244, 3245, + 3245, 3246, 3246, 3234, 3247, 3247, 3248, 3248, 3249, 3249, + 3248, 3250, 3250, 3234, 3251, 3251, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3240, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3240, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3226, 3226, 3234, 3226, 3226, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3234, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3240, 3240, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3248, 3248, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3240, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3248, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3240, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3240, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3226, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3234, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3226, 3226, 3234, 3226, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226, + 3242, 3234, 3234, 3242, 3234, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3240, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3226, 3226, 3234, 3226, 3234, 3226, 3234, 3234, 3226, + 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3248, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3234, 3234, 3242, 3234, 3242, 3234, 3242, 3242, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3240, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, + 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3226, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3226, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3234, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3240, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3226, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234, 3234, 3226, + 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3248, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, + 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3234, - 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, - 3240, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3226, 3234, 3226, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, + 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3226, 3226, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, - 3226, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3226, 3234, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3242, + 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3226, - 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242, - 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3226, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3226, 3234, 3234, - 3234, 3226, 3226, 3226, 3234, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3226, 3226, 3234, - 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3226, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3234, 3234, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3234, + 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3234, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3226, 3226, 3234, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, - 3226, 3226, 3234, 3226, 3226, 3234, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3234, 3226, 3234, 3234, 3234, 3234, 3226, - 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3226, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3234, + 3242, 3234, 3234, 3242, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3226, 3234, 3226, 3234, 3226, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3226, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3226, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3226, 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3226, 3234, 3234, 3226, 3234, 3234, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3234, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, + 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3234, 3226, 3234, 3234, 3234, 3234, 3234, 3234, - 3226, 3234, 3234, 3234, 3226, 3234, 3226, 3226, 3234, 3234, - 3234, 3234, 3234, 3226, 3226, 0, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226 + 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, + 3242, 3234, 3234, 0, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234 } ; -static const flex_int16_t yy_nxt[6340] = +static const flex_int16_t yy_nxt[6361] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1954,7 +1957,7 @@ static const flex_int16_t yy_nxt[6340] = 2237, 2239, 2242, 2244, 2250, 86, 2249, 86, 86, 86, 2246, 86, 2252, 86, 2255, 2258, 86, 86, 86, 2253, 86, 86, 86, 2251, 2256, 2259, 86, 2254, 86, 86, - 86, 2257, 86, 3226, 86, 86, 86, 2260, 2271, 2261, + 86, 2257, 86, 3234, 86, 86, 86, 2260, 2271, 2261, 2270, 2266, 2272, 86, 2262, 2264, 2263, 2268, 2269, 2265, 86, 2267, 86, 86, 86, 2273, 2274, 86, 86, 2278, 2279, 86, 2280, 86, 86, 2275, 86, 86, 2276, 86, @@ -1985,207 +1988,209 @@ static const flex_int16_t yy_nxt[6340] = 2391, 86, 86, 2392, 86, 2389, 2393, 86, 86, 2395, 2396, 2394, 2397, 86, 2399, 86, 86, 86, 86, 86, 2401, 86, 2398, 86, 86, 86, 2405, 86, 2406, 86, - 86, 2400, 86, 2402, 86, 2408, 2409, 2403, 2414, 86, - 86, 2407, 2410, 2404, 2411, 86, 86, 2413, 86, 86, - 86, 2412, 86, 2416, 2417, 86, 86, 2419, 86, 86, - 2415, 86, 86, 2418, 86, 2423, 2426, 86, 86, 2425, - 86, 86, 86, 2422, 2427, 86, 2420, 86, 2421, 86, - 2430, 86, 2424, 86, 2435, 2428, 2434, 86, 86, 2429, + 86, 2400, 86, 2402, 86, 2408, 2409, 2403, 2415, 86, + 86, 2407, 2410, 2404, 2411, 86, 86, 2413, 2418, 86, + 86, 2412, 2414, 86, 2417, 86, 86, 86, 86, 86, + 2416, 2420, 86, 86, 86, 2427, 2424, 86, 2419, 2426, + 86, 86, 86, 2423, 86, 86, 2428, 2421, 2422, 2431, + 86, 86, 86, 2425, 2436, 2429, 86, 2435, 86, 86, - 86, 2432, 2431, 2433, 86, 2436, 2437, 2438, 86, 2439, - 86, 86, 2442, 2440, 86, 2444, 86, 86, 2443, 2446, - 86, 86, 2448, 86, 2441, 86, 2447, 86, 2445, 86, - 86, 86, 86, 86, 86, 2452, 2458, 2454, 2455, 2456, - 86, 2450, 86, 2449, 86, 2451, 2457, 86, 86, 2459, - 2460, 86, 86, 86, 2465, 86, 2462, 2453, 86, 86, - 86, 86, 2467, 2470, 86, 2464, 2461, 2466, 86, 86, - 86, 2463, 2471, 86, 2474, 2469, 86, 2468, 2475, 86, - 2472, 2476, 86, 86, 86, 86, 86, 2480, 2473, 2479, - 86, 86, 2478, 86, 86, 3226, 86, 86, 2483, 2484, + 86, 2430, 2433, 86, 2437, 2438, 2432, 2434, 86, 2440, + 86, 2445, 2439, 2441, 86, 2443, 86, 86, 86, 86, + 2444, 2447, 86, 2449, 86, 2442, 86, 86, 2448, 86, + 2446, 86, 86, 86, 86, 86, 2453, 86, 2455, 2456, + 3234, 2451, 2457, 86, 2450, 2452, 2458, 86, 2459, 86, + 2460, 2461, 86, 86, 86, 86, 86, 2463, 2454, 2462, + 2466, 86, 2468, 86, 86, 2467, 86, 2465, 86, 2471, + 86, 86, 2464, 86, 2472, 86, 2475, 2476, 86, 2470, + 86, 2469, 86, 86, 86, 2473, 86, 2477, 2481, 2480, + 86, 2474, 2479, 86, 86, 86, 86, 86, 2478, 86, - 2477, 2486, 2487, 86, 2481, 2482, 2488, 86, 2489, 86, - 2490, 86, 86, 2485, 86, 2492, 86, 2494, 86, 2493, - 86, 2495, 86, 86, 2491, 86, 2500, 86, 86, 86, - 2496, 2502, 86, 86, 2497, 2503, 86, 86, 86, 86, - 2504, 2499, 86, 2498, 2506, 2505, 86, 2501, 86, 86, - 2507, 2509, 2512, 86, 86, 86, 86, 86, 2513, 2508, - 86, 168, 2510, 86, 2520, 86, 86, 86, 2511, 2516, - 86, 86, 86, 2519, 2518, 2515, 2521, 86, 3226, 86, - 2514, 2517, 2527, 2524, 86, 2522, 2523, 86, 2525, 2529, - 86, 2528, 2530, 2531, 86, 2526, 2532, 86, 86, 2533, + 2485, 86, 2487, 2599, 2482, 86, 2484, 2483, 2488, 86, + 2489, 86, 2490, 86, 2491, 86, 2486, 2492, 86, 2493, + 86, 2495, 86, 2494, 86, 2496, 86, 86, 86, 2501, + 86, 86, 2503, 86, 2497, 2504, 86, 86, 2498, 86, + 86, 86, 86, 86, 2500, 86, 86, 2499, 2505, 2507, + 2502, 2506, 2508, 86, 2513, 86, 86, 86, 2510, 86, + 86, 2509, 168, 2511, 86, 2512, 2514, 86, 2521, 86, + 86, 86, 2515, 2517, 2520, 86, 2516, 86, 2519, 2522, + 86, 86, 86, 2518, 2523, 2528, 2524, 86, 3234, 86, + 2532, 86, 2530, 2525, 2531, 2529, 2533, 86, 86, 2526, - 86, 2534, 86, 2535, 86, 86, 86, 86, 2536, 86, - 86, 86, 86, 86, 86, 2537, 2546, 86, 86, 86, - 2544, 2539, 86, 3226, 2538, 86, 2550, 2540, 2541, 2551, - 86, 2542, 2543, 2545, 86, 86, 2548, 2547, 2554, 86, - 2549, 2552, 86, 2553, 2555, 2556, 86, 86, 86, 86, - 86, 86, 86, 3226, 86, 2559, 2565, 86, 2566, 86, - 2557, 86, 2569, 86, 2560, 2558, 86, 86, 2561, 2562, - 2563, 2564, 2568, 2570, 86, 2571, 86, 86, 86, 2567, - 86, 86, 86, 2575, 86, 2572, 86, 86, 2579, 2578, - 86, 2573, 2580, 86, 86, 86, 2574, 2581, 2582, 86, + 86, 2534, 86, 2527, 86, 2535, 86, 2536, 86, 86, + 86, 86, 86, 2538, 86, 86, 2537, 86, 86, 86, + 2547, 86, 86, 2545, 2540, 86, 86, 2539, 3234, 2542, + 2541, 86, 2551, 86, 2543, 2544, 2553, 2546, 86, 2548, + 2549, 2552, 86, 2550, 2556, 86, 86, 2555, 2554, 2558, + 86, 2559, 86, 86, 86, 2557, 86, 86, 86, 86, + 2561, 86, 2567, 86, 2568, 86, 86, 2571, 86, 2562, + 2560, 86, 2570, 86, 2563, 2564, 2569, 2565, 2566, 2572, + 86, 2573, 86, 86, 86, 86, 86, 86, 2575, 2574, + 2577, 2580, 86, 86, 2581, 2582, 86, 86, 86, 2583, - 2576, 86, 2577, 2584, 86, 86, 2583, 86, 86, 2585, - 2588, 86, 86, 2586, 86, 2592, 2593, 86, 86, 2596, - 86, 86, 86, 86, 2587, 2597, 86, 2589, 2591, 2594, - 2590, 86, 2600, 86, 86, 2599, 2595, 2598, 2602, 2601, - 86, 2605, 86, 86, 86, 86, 2609, 86, 86, 2608, - 2611, 86, 86, 2607, 2603, 2606, 86, 2612, 86, 86, - 2604, 2616, 86, 86, 2617, 2613, 86, 2610, 2619, 86, - 86, 2615, 86, 86, 2614, 86, 2624, 86, 86, 2626, - 86, 86, 2622, 2620, 2623, 2621, 2627, 86, 2618, 86, - 86, 86, 2628, 2625, 86, 2630, 86, 86, 86, 2631, + 86, 2576, 86, 2578, 2579, 2584, 86, 2586, 86, 86, + 86, 86, 2585, 86, 2588, 2590, 86, 86, 86, 2587, + 2594, 2595, 86, 2598, 86, 86, 2602, 86, 2589, 2591, + 2592, 2596, 86, 2593, 86, 86, 2597, 86, 2601, 86, + 2600, 2607, 86, 86, 86, 2603, 86, 86, 2611, 86, + 2604, 2610, 86, 2609, 86, 2608, 86, 2605, 86, 2606, + 2613, 86, 86, 2614, 86, 2612, 2617, 86, 2616, 2618, + 86, 2615, 86, 2619, 2621, 86, 86, 2622, 2620, 86, + 2623, 2626, 86, 86, 86, 2624, 2628, 86, 2625, 2629, + 86, 86, 86, 86, 86, 2630, 86, 2632, 2627, 86, - 86, 86, 86, 2629, 86, 2633, 2634, 2636, 2642, 2637, - 2639, 86, 2635, 2632, 86, 2638, 2640, 86, 2641, 168, - 86, 86, 2646, 86, 86, 2643, 86, 2648, 86, 2647, - 86, 86, 2644, 2651, 86, 2650, 2652, 86, 2649, 2645, - 2654, 86, 86, 2656, 2653, 2655, 86, 86, 2657, 86, - 86, 2658, 2659, 2661, 86, 86, 86, 86, 2662, 86, - 2663, 86, 86, 86, 2660, 2664, 86, 2668, 2669, 2666, - 86, 2670, 2665, 86, 86, 2671, 86, 86, 86, 86, - 2673, 2672, 2674, 2667, 2675, 86, 86, 86, 86, 86, - 2676, 86, 2681, 86, 2683, 86, 2677, 2679, 2680, 2678, + 86, 2633, 86, 86, 2636, 2631, 86, 2638, 2635, 2641, + 86, 2639, 86, 2634, 86, 2637, 2642, 86, 2640, 2643, + 168, 2644, 86, 86, 86, 2648, 3234, 2645, 86, 2649, + 2646, 86, 86, 2650, 86, 2653, 86, 2654, 86, 2652, + 86, 2647, 2658, 2651, 2656, 86, 86, 2659, 86, 2657, + 86, 86, 86, 2655, 2663, 2660, 2661, 86, 86, 86, + 86, 2664, 86, 2665, 86, 86, 2662, 2670, 2666, 2671, + 86, 86, 2668, 86, 86, 86, 2672, 2667, 86, 86, + 86, 86, 2673, 2675, 2676, 2678, 2669, 86, 86, 86, + 2674, 2677, 2679, 2686, 86, 86, 86, 2684, 86, 86, - 86, 2684, 2682, 86, 86, 86, 2685, 2688, 86, 86, - 86, 2692, 86, 2690, 86, 86, 86, 86, 2697, 86, - 86, 2696, 86, 2686, 2687, 2691, 2699, 2704, 2689, 2700, - 2694, 2701, 86, 2693, 86, 86, 2695, 86, 2702, 86, - 86, 86, 2703, 86, 86, 2698, 86, 2707, 86, 2705, - 86, 2710, 2712, 86, 2706, 2713, 86, 86, 2708, 2714, - 86, 2709, 2716, 86, 2717, 86, 2711, 2715, 86, 86, - 86, 2721, 86, 86, 2719, 86, 2722, 86, 86, 2724, - 2725, 86, 2720, 2726, 86, 86, 86, 86, 2718, 2727, - 86, 2729, 2723, 2731, 86, 2730, 86, 2732, 2728, 2733, + 86, 86, 2681, 2682, 2683, 86, 2680, 2685, 86, 2691, + 86, 2687, 86, 86, 86, 2695, 86, 86, 86, 2688, + 86, 2689, 2693, 86, 86, 2700, 86, 2690, 2699, 2694, + 86, 2692, 2702, 2697, 86, 2703, 2696, 2704, 86, 2708, + 2698, 86, 2706, 86, 2705, 86, 86, 86, 2701, 86, + 86, 2707, 86, 2710, 86, 2713, 86, 2715, 86, 86, + 2709, 2716, 86, 2718, 2711, 2717, 86, 2712, 86, 2720, + 86, 86, 86, 2719, 2714, 86, 2724, 2722, 86, 86, + 2727, 2725, 86, 2728, 86, 2729, 86, 2723, 86, 86, + 86, 2721, 2730, 86, 2734, 86, 86, 2735, 2726, 2736, - 86, 86, 2734, 2735, 86, 86, 2739, 86, 2737, 2740, - 86, 2741, 86, 86, 2736, 2742, 86, 86, 86, 2738, - 2743, 86, 2747, 2748, 86, 86, 86, 2751, 86, 86, - 2750, 86, 86, 2753, 86, 2754, 2744, 2745, 2746, 2752, - 86, 86, 2757, 2756, 86, 86, 86, 86, 86, 2749, - 2760, 86, 2764, 86, 86, 86, 2755, 86, 2766, 86, - 86, 2758, 2759, 2803, 2761, 2763, 2767, 2762, 2765, 86, - 2771, 2768, 2774, 86, 86, 2772, 86, 2770, 2769, 2773, - 86, 2775, 86, 2776, 86, 2777, 86, 2778, 86, 86, - 2779, 86, 86, 2780, 86, 86, 86, 86, 86, 2784, + 86, 2731, 86, 2738, 86, 86, 86, 86, 2732, 2742, + 2743, 86, 86, 2733, 2745, 86, 2744, 2737, 2739, 2746, + 86, 2741, 86, 86, 2740, 86, 86, 2751, 86, 86, + 86, 2750, 86, 86, 2753, 2754, 86, 2755, 86, 86, + 86, 2757, 86, 2748, 86, 2747, 2749, 2756, 86, 86, + 2760, 2759, 86, 2752, 2758, 86, 2766, 2761, 2762, 86, + 2763, 86, 2764, 2767, 86, 86, 86, 86, 2769, 86, + 2774, 86, 2765, 2768, 2775, 2771, 2770, 2773, 86, 2776, + 86, 2778, 86, 86, 2779, 2772, 86, 2780, 86, 2781, + 2777, 86, 2782, 86, 2783, 86, 86, 86, 2784, 86, - 2788, 86, 86, 86, 2785, 2789, 2791, 86, 86, 2781, - 2792, 2783, 2793, 86, 86, 2790, 2786, 2782, 2787, 2794, - 2795, 86, 86, 86, 86, 86, 2799, 2800, 86, 2801, - 86, 2796, 2797, 2798, 86, 2804, 86, 86, 86, 2802, - 2805, 86, 2808, 86, 86, 2807, 86, 2806, 2809, 2810, - 86, 2811, 86, 86, 86, 86, 86, 86, 2812, 86, - 86, 2820, 2813, 2815, 2814, 2816, 2818, 86, 86, 86, - 86, 2821, 86, 2823, 2824, 2903, 2819, 86, 2825, 2826, - 2817, 2822, 86, 86, 86, 2828, 86, 2827, 2829, 2830, - 86, 2831, 86, 2832, 86, 2833, 86, 86, 2837, 86, + 86, 86, 86, 86, 2788, 2792, 86, 86, 3234, 2789, + 2793, 2795, 86, 2797, 86, 2785, 2787, 86, 2799, 86, + 2794, 2790, 2786, 2791, 2796, 86, 86, 86, 86, 86, + 2798, 2804, 86, 86, 86, 2800, 2801, 2802, 2805, 86, + 2808, 86, 2806, 86, 86, 2809, 86, 2803, 2812, 86, + 2811, 86, 86, 86, 2807, 86, 2810, 2813, 2814, 86, + 2815, 86, 86, 2816, 2819, 86, 86, 86, 86, 86, + 86, 2818, 2824, 86, 2820, 2822, 2817, 86, 86, 86, + 2825, 2868, 2827, 86, 2828, 86, 2829, 2823, 86, 2838, + 2821, 2826, 2830, 2831, 86, 2832, 2834, 86, 2833, 2835, - 86, 86, 2836, 2834, 86, 2838, 2839, 2840, 86, 86, - 86, 86, 86, 2846, 86, 2835, 2844, 2841, 86, 86, - 86, 2842, 2848, 86, 2849, 86, 2852, 86, 86, 86, - 2845, 2843, 2850, 2851, 86, 2856, 86, 2853, 86, 2847, - 86, 86, 86, 86, 2854, 2859, 86, 86, 86, 86, - 86, 2857, 2860, 2858, 2855, 2863, 86, 2865, 2861, 2868, - 86, 2864, 86, 2870, 86, 2862, 86, 2866, 2871, 86, - 2873, 86, 86, 86, 86, 86, 2867, 2878, 86, 86, - 2877, 2869, 86, 86, 86, 2882, 86, 2872, 2874, 2875, - 2876, 86, 2885, 86, 86, 2887, 86, 86, 86, 2879, + 86, 2836, 86, 86, 86, 86, 86, 2841, 86, 86, + 2840, 2842, 2837, 86, 2843, 2844, 86, 86, 86, 86, + 86, 2850, 86, 2839, 2848, 86, 2845, 86, 86, 2846, + 2852, 86, 2853, 86, 2856, 86, 86, 86, 2849, 2847, + 2854, 2855, 86, 86, 2857, 2861, 86, 2851, 86, 86, + 86, 86, 2858, 86, 2864, 86, 86, 2859, 86, 86, + 2865, 2862, 2863, 2860, 2869, 2870, 86, 2873, 86, 2866, + 86, 2875, 86, 86, 2867, 86, 2871, 2876, 86, 2878, + 86, 86, 86, 86, 2883, 86, 86, 86, 2882, 2874, + 86, 2879, 2872, 86, 2877, 86, 2887, 2880, 2881, 86, - 2883, 86, 2881, 2888, 86, 2880, 2890, 86, 2891, 86, - 2884, 2893, 86, 86, 2886, 2895, 86, 2892, 2889, 2898, - 86, 86, 2896, 86, 86, 86, 2902, 86, 86, 2904, - 86, 2894, 2907, 2900, 2908, 86, 2897, 86, 86, 2899, - 2909, 2910, 2905, 2901, 2906, 86, 86, 86, 2913, 86, - 86, 2912, 86, 2916, 86, 2914, 86, 2919, 86, 86, - 86, 86, 86, 2911, 2924, 86, 2920, 86, 86, 2927, - 86, 2915, 86, 2917, 2918, 2923, 2926, 2929, 2921, 2928, - 86, 86, 86, 86, 2932, 86, 2922, 2925, 2931, 2933, - 86, 2934, 86, 2936, 86, 2930, 86, 2938, 86, 86, + 2890, 86, 86, 86, 86, 2892, 2884, 2888, 2893, 2886, + 2885, 86, 2895, 86, 2896, 86, 86, 86, 2889, 2898, + 86, 86, 2891, 86, 86, 2903, 2894, 86, 2900, 86, + 2901, 86, 2907, 86, 86, 86, 2897, 2908, 86, 2899, + 86, 2905, 3234, 2902, 2906, 2912, 2904, 86, 2909, 86, + 2910, 86, 2913, 86, 86, 2911, 2915, 2914, 2916, 86, + 2918, 86, 86, 86, 2917, 86, 2921, 86, 2919, 86, + 2924, 86, 86, 86, 2927, 86, 2929, 86, 86, 2925, + 86, 86, 2933, 86, 2920, 2931, 2922, 2923, 2928, 2932, + 86, 2926, 2934, 86, 86, 2935, 86, 2930, 2938, 86, - 86, 2937, 86, 86, 86, 2943, 2944, 86, 2935, 86, - 86, 86, 2950, 2939, 2948, 86, 2949, 86, 86, 86, - 2947, 86, 2940, 2945, 2941, 2942, 86, 2954, 86, 86, - 2946, 2953, 2955, 86, 2956, 86, 2958, 86, 86, 2951, - 2952, 86, 86, 2961, 86, 2960, 2962, 86, 86, 2957, - 2959, 86, 86, 86, 86, 86, 2965, 86, 86, 2967, - 86, 86, 2968, 86, 2966, 86, 86, 2963, 2964, 86, - 86, 2977, 86, 86, 2969, 2978, 2973, 2970, 2971, 2972, - 2974, 2975, 2980, 86, 86, 86, 2976, 86, 86, 2979, - 2981, 2986, 2982, 2984, 86, 86, 2983, 2985, 86, 3059, + 86, 2937, 2939, 86, 2940, 86, 2942, 86, 2936, 86, + 2944, 86, 86, 86, 2943, 86, 86, 86, 2949, 2950, + 86, 86, 86, 86, 86, 86, 2941, 2954, 86, 2946, + 2955, 86, 2945, 2953, 2956, 2951, 86, 2947, 2948, 86, + 86, 2959, 2952, 2957, 2958, 2960, 86, 2961, 86, 86, + 2964, 86, 86, 2963, 2962, 86, 86, 2967, 86, 86, + 2966, 86, 86, 2965, 2968, 86, 86, 2971, 86, 86, + 86, 86, 2973, 86, 86, 2969, 2974, 2972, 86, 86, + 86, 2970, 86, 86, 86, 2983, 86, 2984, 2975, 2979, + 2976, 2977, 2978, 2986, 86, 2980, 2981, 86, 3234, 86, - 2987, 2989, 86, 2988, 2990, 86, 2991, 2992, 86, 86, - 2993, 2994, 2997, 86, 2995, 2996, 86, 86, 2998, 86, - 86, 86, 86, 86, 3004, 86, 86, 86, 3003, 86, - 86, 3007, 86, 3226, 2999, 3000, 3006, 86, 86, 3008, - 3001, 86, 3002, 86, 3012, 3013, 86, 3009, 3014, 86, - 3011, 3005, 86, 3015, 86, 3010, 3019, 3016, 3021, 86, - 86, 3020, 86, 3017, 86, 86, 3018, 86, 86, 86, - 3028, 86, 3025, 3026, 3029, 3023, 86, 3031, 86, 86, - 86, 86, 3030, 3226, 3022, 3080, 3024, 86, 3027, 3032, - 86, 86, 3033, 3034, 86, 3035, 86, 3037, 86, 3048, + 2982, 86, 2987, 2985, 2988, 2995, 2989, 2990, 2991, 86, + 2992, 86, 86, 86, 2996, 86, 2993, 86, 2994, 2997, + 86, 2998, 2999, 86, 86, 3000, 3001, 3004, 86, 3002, + 3003, 86, 86, 3005, 86, 3006, 86, 86, 86, 3011, + 86, 86, 86, 3010, 86, 3007, 86, 86, 3014, 3013, + 86, 86, 86, 3019, 86, 3015, 3008, 3009, 3020, 86, + 3018, 86, 3016, 3021, 86, 86, 3012, 86, 3017, 3022, + 3023, 86, 3026, 86, 3028, 86, 3024, 3027, 86, 3025, + 86, 86, 86, 86, 86, 3234, 3029, 3032, 3030, 3033, + 3035, 86, 3031, 3036, 3034, 86, 3038, 86, 3059, 86, - 3036, 3038, 86, 3039, 86, 3040, 86, 3041, 86, 3042, - 86, 3043, 86, 86, 3045, 86, 86, 86, 86, 3050, - 86, 86, 3044, 86, 86, 3046, 86, 86, 3054, 3047, - 86, 3056, 86, 86, 3060, 3053, 3051, 3049, 86, 3052, - 86, 3058, 3057, 86, 3063, 3055, 3062, 86, 86, 86, - 86, 86, 86, 3065, 86, 86, 86, 86, 3061, 86, - 86, 3064, 3069, 3073, 3070, 3075, 86, 3071, 3066, 3067, - 3068, 86, 3074, 3076, 86, 3077, 86, 86, 86, 86, - 86, 86, 86, 3072, 86, 86, 3079, 3085, 86, 86, - 3086, 86, 3084, 3082, 3078, 86, 3088, 86, 3081, 3087, + 3057, 3037, 3039, 86, 3040, 86, 86, 3042, 86, 3043, + 86, 3041, 86, 3045, 86, 3046, 86, 3047, 86, 3048, + 86, 3044, 3049, 86, 3050, 86, 3051, 86, 86, 3053, + 86, 86, 86, 86, 3058, 86, 86, 3052, 86, 86, + 3054, 86, 3062, 86, 3055, 3064, 86, 86, 86, 3060, + 3061, 3066, 86, 3056, 3063, 86, 3068, 86, 3071, 86, + 3070, 3065, 86, 86, 86, 86, 86, 86, 3073, 86, + 3069, 86, 86, 3067, 86, 3077, 3072, 3081, 3074, 86, + 3078, 86, 3076, 3075, 3083, 86, 86, 3079, 3084, 86, + 3085, 86, 3082, 3080, 86, 3087, 86, 86, 3088, 86, - 86, 86, 3089, 3083, 3090, 86, 86, 86, 86, 3091, - 86, 86, 86, 3092, 3095, 3098, 3094, 3100, 3096, 86, - 3103, 86, 3101, 86, 86, 3093, 3105, 86, 3097, 86, - 3106, 3099, 3104, 3107, 86, 3108, 86, 86, 86, 3102, - 86, 3111, 86, 3109, 86, 3112, 86, 3113, 3116, 86, - 86, 86, 86, 86, 86, 86, 3119, 3110, 3121, 86, - 86, 3115, 3118, 3117, 3122, 86, 3125, 86, 3123, 3114, - 86, 86, 3120, 86, 3124, 3126, 3128, 86, 86, 3129, - 3132, 3130, 86, 3133, 86, 86, 86, 86, 3127, 86, - 3131, 86, 3137, 3138, 86, 86, 3134, 3135, 3139, 86, + 86, 86, 86, 86, 3086, 3093, 86, 86, 3094, 86, + 3096, 3090, 3092, 86, 86, 86, 3089, 3095, 86, 86, + 3097, 3099, 3091, 86, 86, 86, 86, 86, 3103, 86, + 3100, 3106, 3098, 3102, 3108, 3104, 86, 3111, 86, 3109, + 3101, 86, 3113, 86, 86, 3105, 86, 3107, 86, 3114, + 3112, 3115, 86, 3116, 86, 86, 3110, 86, 3119, 86, + 86, 86, 3120, 3117, 3121, 3124, 3118, 86, 86, 86, + 86, 86, 3129, 86, 3127, 86, 3123, 3130, 86, 86, + 3126, 3125, 86, 3133, 86, 3122, 86, 86, 3136, 86, + 3128, 86, 3137, 3135, 3131, 86, 86, 86, 3140, 86, - 86, 86, 86, 86, 3136, 3143, 86, 86, 3145, 86, - 86, 86, 3140, 86, 3142, 3141, 3150, 86, 3151, 86, - 3147, 86, 3144, 3148, 3226, 3146, 3152, 86, 3149, 3156, - 86, 86, 86, 3159, 3158, 86, 3157, 3153, 3155, 3154, - 86, 86, 86, 86, 3164, 86, 3160, 3161, 3162, 3168, - 86, 3165, 86, 86, 3163, 3167, 86, 86, 3166, 86, - 86, 86, 3173, 86, 86, 86, 3170, 86, 86, 86, - 3176, 3177, 86, 86, 86, 86, 3169, 3175, 3180, 3171, - 3172, 86, 3174, 3178, 3181, 86, 3179, 86, 3184, 86, - 86, 86, 3188, 3187, 3182, 3185, 86, 3190, 3183, 86, + 3141, 3132, 3134, 3138, 86, 3139, 86, 86, 86, 86, + 3142, 86, 3143, 3145, 3146, 86, 3144, 3147, 86, 86, + 86, 86, 86, 3151, 86, 3150, 3153, 86, 3148, 3149, + 86, 86, 86, 86, 3160, 86, 3158, 3155, 3159, 86, + 3152, 3154, 86, 3156, 3164, 86, 3157, 86, 86, 3166, + 86, 3167, 3161, 3165, 86, 86, 3172, 3162, 86, 3168, + 86, 3163, 86, 3169, 86, 3170, 3171, 3173, 86, 3174, + 3175, 86, 86, 86, 86, 86, 3176, 86, 3181, 86, + 86, 3178, 86, 3184, 86, 3185, 86, 86, 86, 86, + 86, 86, 3177, 3183, 3179, 3188, 3180, 3186, 3182, 86, - 3189, 86, 3186, 86, 3191, 86, 3192, 3195, 86, 86, - 86, 86, 3193, 3197, 3196, 3198, 86, 3199, 3194, 86, - 86, 86, 86, 3204, 86, 86, 3200, 3202, 86, 86, - 86, 86, 86, 3206, 3207, 86, 3210, 3211, 86, 3201, - 3203, 86, 86, 3214, 3205, 3215, 86, 86, 86, 3208, - 3209, 3212, 3217, 86, 3216, 3218, 86, 86, 86, 86, - 3213, 86, 3226, 3220, 3219, 3226, 3221, 3222, 3224, 86, - 3225, 86, 3226, 3226, 3226, 3226, 3226, 3226, 3223, 47, - 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, - 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, + 3187, 86, 3192, 86, 3191, 86, 3189, 86, 3190, 86, + 3193, 3234, 3194, 86, 3196, 86, 3198, 86, 3199, 86, + 86, 3203, 86, 86, 3200, 86, 3197, 3201, 3202, 3195, + 3204, 86, 86, 3205, 3206, 86, 86, 86, 86, 3207, + 86, 86, 3209, 3208, 86, 3210, 3212, 86, 86, 3214, + 86, 86, 3218, 3215, 3219, 86, 3211, 3213, 86, 86, + 3216, 86, 3222, 3223, 86, 86, 3225, 86, 86, 3217, + 3226, 86, 3224, 86, 86, 3227, 86, 3220, 3221, 3228, + 86, 3229, 3232, 86, 3233, 86, 3234, 3234, 3234, 3234, + 3234, 3234, 3230, 3234, 3234, 3234, 3234, 3234, 3234, 3231, - 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, - 3226, 89, 89, 89, 89, 158, 158, 3226, 3226, 3226, - 158, 158, 160, 160, 3226, 3226, 160, 3226, 160, 162, - 3226, 3226, 3226, 3226, 3226, 162, 165, 165, 3226, 3226, - 3226, 165, 165, 167, 3226, 3226, 3226, 3226, 3226, 167, - 169, 169, 3226, 169, 169, 169, 169, 172, 3226, 3226, - 3226, 3226, 3226, 172, 175, 175, 3226, 3226, 3226, 175, - 175, 90, 90, 3226, 90, 90, 90, 90, 17, 3226, + 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, + 52, 52, 52, 52, 57, 57, 57, 57, 57, 57, + 57, 63, 63, 63, 63, 63, 63, 63, 68, 68, + 68, 68, 68, 68, 68, 74, 74, 74, 74, 74, + 74, 74, 80, 80, 80, 80, 80, 80, 80, 89, + 89, 3234, 89, 89, 89, 89, 158, 158, 3234, 3234, + 3234, 158, 158, 160, 160, 3234, 3234, 160, 3234, 160, + 162, 3234, 3234, 3234, 3234, 3234, 162, 165, 165, 3234, + 3234, 3234, 165, 165, 167, 3234, 3234, 3234, 3234, 3234, + 167, 169, 169, 3234, 169, 169, 169, 169, 172, 3234, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226 + 3234, 3234, 3234, 3234, 172, 175, 175, 3234, 3234, 3234, + 175, 175, 90, 90, 3234, 90, 90, 90, 90, 17, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234 } ; -static const flex_int16_t yy_chk[6340] = +static const flex_int16_t yy_chk[6361] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2195,14 +2200,14 @@ static const flex_int16_t yy_chk[6340] = 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, 3234, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3242, 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, 2641, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2643, 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, @@ -2687,203 +2692,205 @@ static const flex_int16_t yy_chk[6340] = 2234, 2232, 2235, 2236, 2237, 2237, 2234, 2238, 2235, 2239, 2239, 2240, 2236, 2241, 2242, 2243, 2243, 2245, 2244, 2253, 2246, 2238, 2248, 2240, 2244, 2246, 2248, 2241, 2253, 2249, - 2254, 2245, 2249, 2242, 2250, 2250, 2251, 2252, 2252, 2255, - 2257, 2251, 2259, 2255, 2256, 2256, 2260, 2259, 2261, 2262, - 2254, 2263, 2264, 2257, 2265, 2263, 2266, 2268, 2267, 2265, - 2269, 2271, 2266, 2262, 2267, 2270, 2260, 2274, 2261, 2273, - 2270, 2275, 2264, 2281, 2276, 2268, 2275, 2277, 2284, 2269, + 2254, 2245, 2249, 2242, 2250, 2250, 2251, 2252, 2256, 2256, + 2255, 2251, 2252, 2252, 2255, 2257, 2259, 2260, 2261, 2262, + 2254, 2259, 2263, 2264, 2265, 2266, 2263, 2268, 2257, 2265, + 2267, 2266, 2269, 2262, 2270, 2271, 2267, 2260, 2261, 2270, + 2273, 2274, 2275, 2264, 2276, 2268, 2277, 2275, 2281, 2284, - 2276, 2273, 2271, 2274, 2278, 2277, 2278, 2281, 2282, 2282, - 2283, 2285, 2285, 2283, 2287, 2288, 2289, 2291, 2287, 2290, - 2290, 2288, 2294, 2294, 2284, 2296, 2291, 2298, 2289, 2299, - 2302, 2303, 2304, 2305, 2312, 2302, 2310, 2304, 2305, 2306, - 2306, 2298, 2310, 2296, 2313, 2299, 2308, 2308, 2311, 2311, - 2312, 2314, 2316, 2317, 2318, 2318, 2314, 2303, 2320, 2322, - 2323, 2327, 2321, 2325, 2325, 2317, 2313, 2320, 2321, 2326, - 2328, 2316, 2326, 2330, 2330, 2323, 2332, 2322, 2331, 2331, - 2327, 2332, 2333, 2334, 2335, 2336, 2339, 2336, 2328, 2335, - 2337, 2338, 2334, 2341, 2340, 0, 2342, 2348, 2339, 2340, + 2276, 2269, 2273, 2278, 2277, 2278, 2271, 2274, 2282, 2282, + 2283, 2288, 2281, 2283, 2285, 2285, 2287, 2288, 2289, 2291, + 2287, 2290, 2290, 2294, 2294, 2284, 2296, 2298, 2291, 2299, + 2289, 2302, 2303, 2304, 2305, 2312, 2302, 2313, 2304, 2305, + 0, 2298, 2306, 2306, 2296, 2299, 2308, 2308, 2310, 2311, + 2311, 2312, 2314, 2316, 2310, 2317, 2320, 2314, 2303, 2313, + 2318, 2318, 2321, 2322, 2323, 2320, 2327, 2317, 2321, 2325, + 2325, 2326, 2316, 2328, 2326, 2330, 2330, 2331, 2331, 2323, + 2333, 2322, 2332, 2334, 2335, 2327, 2336, 2332, 2336, 2335, + 2337, 2328, 2334, 2338, 2339, 2340, 2341, 2342, 2333, 2465, - 2333, 2342, 2343, 2343, 2337, 2338, 2344, 2344, 2345, 2345, - 2346, 2346, 2347, 2341, 2349, 2348, 2350, 2350, 2352, 2349, - 2351, 2351, 2353, 2354, 2347, 2355, 2356, 2356, 2357, 2360, - 2352, 2358, 2358, 2361, 2353, 2359, 2359, 2362, 2363, 2364, - 2360, 2355, 2366, 2354, 2362, 2361, 2365, 2357, 2367, 2369, - 2363, 2365, 2368, 2368, 2370, 2371, 2372, 2373, 2369, 2364, - 2374, 2375, 2366, 2376, 2376, 2381, 2382, 2377, 2367, 2372, - 2378, 2379, 2383, 2375, 2374, 2371, 2377, 2385, 0, 2384, - 2370, 2373, 2384, 2381, 2386, 2378, 2379, 2387, 2382, 2386, - 2395, 2385, 2387, 2388, 2388, 2383, 2389, 2389, 2390, 2390, + 2340, 2348, 2342, 2465, 2337, 2347, 2339, 2338, 2343, 2343, + 2344, 2344, 2345, 2345, 2346, 2346, 2341, 2347, 2349, 2348, + 2350, 2350, 2352, 2349, 2351, 2351, 2353, 2354, 2355, 2356, + 2356, 2357, 2358, 2358, 2352, 2359, 2359, 2360, 2353, 2361, + 2363, 2364, 2362, 2366, 2355, 2367, 2370, 2354, 2360, 2362, + 2357, 2361, 2363, 2365, 2368, 2368, 2371, 2369, 2365, 2373, + 2372, 2364, 2375, 2366, 2374, 2367, 2369, 2376, 2376, 2378, + 2377, 2379, 2370, 2372, 2375, 2381, 2371, 2382, 2374, 2377, + 2383, 2385, 2384, 2373, 2378, 2384, 2379, 2386, 0, 2387, + 2388, 2388, 2386, 2381, 2387, 2385, 2389, 2389, 2395, 2382, - 2392, 2392, 2394, 2394, 2396, 2397, 2398, 2400, 2395, 2402, - 2401, 2404, 2403, 2405, 2406, 2396, 2406, 2407, 2408, 2414, - 2404, 2398, 2409, 0, 2397, 2410, 2410, 2400, 2401, 2412, - 2412, 2402, 2403, 2405, 2415, 2418, 2408, 2407, 2416, 2416, - 2409, 2414, 2420, 2415, 2418, 2419, 2419, 2421, 2422, 2423, - 2424, 2425, 2427, 0, 2426, 2422, 2428, 2428, 2429, 2429, - 2420, 2430, 2432, 2432, 2423, 2421, 2431, 2435, 2424, 2425, - 2426, 2427, 2431, 2433, 2433, 2434, 2436, 2437, 2438, 2430, - 2439, 2434, 2440, 2438, 2441, 2435, 2442, 2447, 2442, 2441, - 2450, 2436, 2443, 2443, 2449, 2444, 2437, 2444, 2445, 2445, + 2390, 2390, 2396, 2383, 2392, 2392, 2394, 2394, 2397, 2398, + 2400, 2401, 2402, 2396, 2404, 2403, 2395, 2405, 2406, 2407, + 2406, 2413, 2408, 2404, 2398, 2409, 2415, 2397, 0, 2401, + 2400, 2410, 2410, 2421, 2402, 2403, 2413, 2405, 2416, 2407, + 2408, 2412, 2412, 2409, 2417, 2417, 2419, 2416, 2415, 2420, + 2420, 2421, 2422, 2423, 2424, 2419, 2425, 2426, 2431, 2428, + 2423, 2427, 2429, 2429, 2430, 2430, 2432, 2433, 2433, 2424, + 2422, 2436, 2432, 2437, 2425, 2426, 2431, 2427, 2428, 2434, + 2434, 2435, 2438, 2440, 2441, 2439, 2442, 2435, 2437, 2436, + 2439, 2442, 2443, 2448, 2443, 2444, 2444, 2445, 2450, 2445, - 2439, 2451, 2440, 2449, 2452, 2453, 2447, 2454, 2458, 2450, - 2453, 2455, 2459, 2451, 2461, 2459, 2460, 2460, 2462, 2463, - 2463, 2464, 2466, 2471, 2452, 2464, 2469, 2454, 2458, 2461, - 2455, 2467, 2468, 2468, 2472, 2467, 2462, 2466, 2471, 2469, - 2473, 2474, 2474, 2476, 2477, 2478, 2479, 2479, 2480, 2478, - 2481, 2481, 2482, 2477, 2472, 2476, 2483, 2482, 2484, 2485, - 2473, 2486, 2486, 2491, 2491, 2483, 2492, 2480, 2493, 2493, - 2494, 2485, 2495, 2496, 2484, 2497, 2498, 2498, 2499, 2501, - 2501, 2504, 2496, 2494, 2497, 2495, 2504, 2505, 2492, 2506, - 2507, 2508, 2505, 2499, 2509, 2507, 2510, 2513, 2511, 2508, + 2451, 2438, 2452, 2440, 2441, 2446, 2446, 2450, 2453, 2455, + 2454, 2456, 2448, 2459, 2452, 2454, 2462, 2460, 2463, 2451, + 2460, 2461, 2461, 2464, 2464, 2467, 2469, 2469, 2453, 2455, + 2456, 2462, 2470, 2459, 2468, 2472, 2463, 2473, 2468, 2474, + 2467, 2475, 2475, 2477, 2478, 2470, 2481, 2479, 2480, 2480, + 2472, 2479, 2485, 2478, 2486, 2477, 2493, 2473, 2483, 2474, + 2482, 2482, 2484, 2483, 2495, 2481, 2486, 2496, 2485, 2487, + 2487, 2484, 2492, 2492, 2494, 2494, 2497, 2495, 2493, 2498, + 2496, 2499, 2499, 2500, 2505, 2497, 2502, 2502, 2498, 2505, + 2506, 2507, 2508, 2509, 2510, 2506, 2512, 2508, 2500, 2511, - 2516, 2520, 2514, 2506, 2515, 2510, 2511, 2514, 2520, 2515, - 2517, 2517, 2513, 2509, 2522, 2516, 2518, 2518, 2519, 2519, - 2521, 2523, 2524, 2527, 2525, 2521, 2526, 2526, 2524, 2525, - 2528, 2533, 2522, 2529, 2529, 2528, 2530, 2530, 2527, 2523, - 2534, 2534, 2535, 2536, 2533, 2535, 2537, 2538, 2536, 2536, - 2539, 2537, 2538, 2540, 2541, 2542, 2543, 2544, 2541, 2540, - 2542, 2545, 2546, 2550, 2539, 2543, 2549, 2547, 2548, 2545, - 2555, 2549, 2544, 2547, 2548, 2550, 2552, 2553, 2559, 2557, - 2553, 2552, 2555, 2546, 2557, 2558, 2560, 2571, 2561, 2562, - 2558, 2563, 2563, 2564, 2567, 2568, 2559, 2561, 2562, 2560, + 2514, 2509, 2515, 2517, 2512, 2507, 2516, 2515, 2511, 2518, + 2518, 2516, 2523, 2510, 2521, 2514, 2519, 2519, 2517, 2520, + 2520, 2521, 2522, 2524, 2526, 2525, 0, 2522, 2528, 2526, + 2523, 2525, 2527, 2527, 2529, 2530, 2530, 2531, 2531, 2529, + 2534, 2524, 2537, 2528, 2535, 2535, 2536, 2537, 2537, 2536, + 2538, 2539, 2540, 2534, 2541, 2538, 2539, 2542, 2543, 2544, + 2541, 2542, 2545, 2543, 2546, 2547, 2540, 2548, 2544, 2549, + 2551, 2550, 2546, 2548, 2553, 2549, 2550, 2545, 2554, 2557, + 2559, 2555, 2551, 2554, 2555, 2559, 2547, 2560, 2561, 2562, + 2553, 2557, 2560, 2569, 2563, 2564, 2565, 2565, 2566, 2569, - 2567, 2568, 2564, 2572, 2576, 2573, 2571, 2574, 2574, 2575, - 2577, 2578, 2578, 2576, 2579, 2581, 2583, 2584, 2585, 2585, - 2586, 2584, 2592, 2572, 2573, 2577, 2587, 2592, 2575, 2588, - 2581, 2589, 2587, 2579, 2591, 2588, 2583, 2589, 2590, 2590, - 2594, 2595, 2591, 2597, 2598, 2586, 2599, 2597, 2602, 2594, - 2601, 2601, 2603, 2603, 2595, 2604, 2604, 2608, 2598, 2606, - 2606, 2599, 2608, 2607, 2610, 2610, 2602, 2607, 2612, 2613, - 2614, 2615, 2617, 2625, 2613, 2627, 2615, 2615, 2618, 2618, - 2620, 2620, 2614, 2621, 2621, 2623, 2622, 2631, 2612, 2622, - 2634, 2625, 2617, 2628, 2628, 2627, 2629, 2629, 2623, 2630, + 2573, 2574, 2562, 2563, 2564, 2570, 2561, 2566, 2575, 2576, + 2576, 2570, 2577, 2578, 2579, 2580, 2580, 2581, 2583, 2573, + 2585, 2574, 2578, 2588, 2586, 2587, 2587, 2575, 2586, 2579, + 2596, 2577, 2589, 2583, 2593, 2590, 2581, 2591, 2589, 2596, + 2585, 2590, 2593, 2591, 2592, 2592, 2594, 2597, 2588, 2599, + 2600, 2594, 2601, 2599, 2603, 2603, 2604, 2605, 2605, 2609, + 2597, 2606, 2606, 2609, 2600, 2608, 2608, 2601, 2610, 2612, + 2612, 2614, 2615, 2610, 2604, 2616, 2617, 2615, 2619, 2620, + 2620, 2617, 2617, 2622, 2622, 2623, 2623, 2616, 2625, 2624, + 2627, 2614, 2624, 2629, 2630, 2630, 2631, 2631, 2619, 2632, - 2630, 2633, 2631, 2632, 2632, 2635, 2636, 2638, 2634, 2637, - 2637, 2638, 2636, 2643, 2633, 2642, 2646, 2644, 2645, 2635, - 2642, 2642, 2646, 2647, 2648, 2655, 2649, 2650, 2650, 2647, - 2649, 2658, 2656, 2655, 2653, 2656, 2643, 2644, 2645, 2653, - 2659, 2660, 2660, 2659, 2661, 2662, 2663, 2664, 2707, 2648, - 2662, 2665, 2666, 2666, 2667, 2668, 2658, 2669, 2668, 2670, - 2673, 2661, 2661, 2707, 2663, 2665, 2668, 2664, 2667, 2671, - 2672, 2669, 2674, 2674, 2679, 2672, 2672, 2671, 2670, 2673, - 2675, 2675, 2676, 2676, 2677, 2677, 2678, 2678, 2680, 2681, - 2679, 2682, 2683, 2680, 2684, 2685, 2686, 2691, 2687, 2684, + 2632, 2625, 2633, 2634, 2634, 2635, 2636, 2637, 2627, 2638, + 2639, 2639, 2640, 2629, 2644, 2638, 2640, 2633, 2635, 2644, + 2644, 2637, 2645, 2646, 2636, 2648, 2647, 2649, 2650, 2660, + 2651, 2648, 2655, 2649, 2651, 2652, 2652, 2655, 2658, 2657, + 2663, 2658, 2667, 2646, 2665, 2645, 2647, 2657, 2661, 2662, + 2662, 2661, 2666, 2650, 2660, 2664, 2667, 2663, 2663, 2669, + 2664, 2671, 2665, 2668, 2668, 2670, 2672, 2674, 2670, 2673, + 2674, 2676, 2666, 2669, 2675, 2671, 2670, 2673, 2682, 2675, + 2675, 2677, 2677, 2678, 2678, 2672, 2679, 2679, 2680, 2680, + 2676, 2681, 2681, 2683, 2682, 2684, 2685, 2686, 2683, 2687, - 2689, 2689, 2690, 2694, 2685, 2690, 2693, 2693, 2703, 2681, - 2694, 2683, 2695, 2695, 2696, 2691, 2686, 2682, 2687, 2696, - 2698, 2698, 2699, 2700, 2701, 2705, 2703, 2704, 2704, 2705, - 2706, 2699, 2700, 2701, 2709, 2708, 2710, 2720, 2711, 2706, - 2708, 2708, 2711, 2715, 2719, 2710, 2721, 2709, 2715, 2716, - 2716, 2718, 2718, 2724, 2723, 2727, 2729, 2728, 2719, 2732, - 2734, 2730, 2720, 2723, 2721, 2724, 2728, 2730, 2736, 2737, - 2739, 2732, 2828, 2736, 2737, 2828, 2729, 2738, 2738, 2739, - 2727, 2734, 2741, 2748, 2742, 2742, 2747, 2741, 2742, 2744, - 2744, 2745, 2745, 2746, 2746, 2747, 2749, 2750, 2752, 2756, + 2688, 2689, 2694, 2690, 2687, 2692, 2692, 2693, 0, 2688, + 2693, 2696, 2696, 2698, 2698, 2684, 2686, 2697, 2701, 2701, + 2694, 2689, 2685, 2690, 2697, 2699, 2702, 2703, 2704, 2706, + 2699, 2707, 2707, 2709, 2708, 2702, 2703, 2704, 2708, 2710, + 2711, 2713, 2709, 2712, 2714, 2711, 2711, 2706, 2714, 2722, + 2713, 2723, 2718, 2724, 2710, 2726, 2712, 2718, 2719, 2719, + 2721, 2721, 2727, 2722, 2726, 2730, 2731, 2732, 2735, 2751, + 2737, 2724, 2733, 2785, 2727, 2731, 2723, 2739, 2733, 2740, + 2735, 2785, 2739, 2742, 2740, 2741, 2741, 2732, 2744, 2751, + 2730, 2737, 2742, 2744, 2745, 2745, 2747, 2747, 2745, 2748, - 2753, 2754, 2750, 2748, 2752, 2753, 2754, 2755, 2755, 2757, - 2758, 2759, 2760, 2761, 2762, 2749, 2759, 2756, 2769, 2761, - 2765, 2757, 2763, 2763, 2765, 2768, 2768, 2766, 2767, 2770, - 2760, 2758, 2766, 2767, 2771, 2773, 2773, 2769, 2775, 2762, - 2776, 2777, 2779, 2778, 2770, 2777, 2780, 2781, 2783, 2784, - 2785, 2775, 2778, 2776, 2771, 2781, 2782, 2783, 2779, 2786, - 2786, 2782, 2787, 2789, 2789, 2780, 2792, 2784, 2790, 2790, - 2794, 2794, 2796, 2797, 2798, 2799, 2785, 2801, 2801, 2802, - 2799, 2787, 2803, 2804, 2806, 2806, 2807, 2792, 2796, 2797, - 2798, 2808, 2809, 2809, 2812, 2813, 2815, 2818, 2814, 2802, + 2748, 2749, 2749, 2750, 2752, 2753, 2756, 2755, 2759, 2757, + 2753, 2756, 2750, 2755, 2757, 2758, 2758, 2760, 2761, 2762, + 2763, 2764, 2765, 2752, 2762, 2772, 2759, 2764, 2768, 2760, + 2766, 2766, 2768, 2771, 2771, 2769, 2770, 2773, 2763, 2761, + 2769, 2770, 2774, 2775, 2772, 2777, 2777, 2765, 2779, 2780, + 2781, 2782, 2773, 2783, 2781, 2784, 2787, 2774, 2788, 2786, + 2782, 2779, 2780, 2775, 2786, 2787, 2789, 2790, 2790, 2783, + 2791, 2793, 2793, 2796, 2784, 2800, 2788, 2794, 2794, 2798, + 2798, 2801, 2802, 2803, 2805, 2805, 2806, 2807, 2803, 2791, + 2808, 2800, 2789, 2811, 2796, 2810, 2810, 2801, 2802, 2812, - 2807, 2813, 2804, 2814, 2820, 2803, 2816, 2816, 2817, 2817, - 2808, 2819, 2819, 2821, 2812, 2820, 2822, 2818, 2815, 2823, - 2824, 2825, 2821, 2826, 2834, 2823, 2827, 2827, 2829, 2829, - 2833, 2819, 2835, 2825, 2836, 2836, 2822, 2837, 2835, 2824, - 2837, 2838, 2833, 2826, 2834, 2839, 2841, 2838, 2842, 2842, - 2843, 2841, 2844, 2845, 2849, 2843, 2846, 2847, 2847, 2845, - 2850, 2851, 2852, 2839, 2853, 2853, 2849, 2855, 2854, 2857, - 2857, 2844, 2859, 2846, 2846, 2852, 2855, 2859, 2850, 2858, - 2858, 2860, 2865, 2861, 2862, 2862, 2851, 2854, 2861, 2863, - 2863, 2864, 2864, 2866, 2872, 2860, 2867, 2869, 2869, 2866, + 2813, 2813, 2816, 2818, 2819, 2817, 2806, 2811, 2818, 2808, + 2807, 2817, 2820, 2820, 2821, 2821, 2822, 2824, 2812, 2823, + 2823, 2825, 2816, 2826, 2830, 2827, 2819, 2828, 2824, 2829, + 2825, 2827, 2831, 2831, 2832, 2838, 2822, 2832, 2837, 2823, + 2843, 2829, 0, 2826, 2830, 2839, 2828, 2833, 2833, 2855, + 2837, 2839, 2840, 2840, 2841, 2838, 2842, 2841, 2843, 2845, + 2846, 2846, 2842, 2847, 2845, 2848, 2849, 2853, 2847, 2850, + 2851, 2851, 2849, 2854, 2855, 2856, 2857, 2857, 2858, 2853, + 2860, 2859, 2862, 2862, 2848, 2859, 2850, 2850, 2856, 2860, + 2864, 2854, 2863, 2863, 2865, 2864, 2866, 2858, 2867, 2867, - 2874, 2867, 2875, 2876, 2877, 2877, 2879, 2879, 2865, 2880, - 2881, 2882, 2886, 2872, 2883, 2883, 2884, 2884, 2886, 2887, - 2882, 2888, 2874, 2880, 2875, 2876, 2889, 2892, 2892, 2895, - 2881, 2889, 2894, 2894, 2895, 2896, 2897, 2899, 2898, 2887, - 2888, 2901, 2897, 2900, 2900, 2899, 2901, 2903, 2904, 2896, - 2898, 2905, 2906, 2907, 2909, 2910, 2905, 2911, 2912, 2907, - 2915, 2914, 2909, 2916, 2906, 2917, 2918, 2903, 2904, 2921, - 2920, 2918, 2925, 3017, 2910, 2920, 2915, 2911, 2912, 2914, - 2916, 2916, 2922, 2926, 2936, 2923, 2917, 2931, 2922, 2921, - 2923, 2931, 2925, 2929, 2929, 2935, 2926, 2930, 2930, 3017, + 2870, 2866, 2868, 2868, 2869, 2869, 2871, 2879, 2865, 2872, + 2874, 2874, 2871, 2877, 2872, 2880, 2881, 2882, 2882, 2884, + 2884, 2885, 2886, 2892, 2887, 2893, 2870, 2888, 2888, 2879, + 2889, 2889, 2877, 2887, 2891, 2885, 2894, 2880, 2881, 2901, + 2891, 2894, 2886, 2892, 2893, 2897, 2897, 2899, 2899, 2900, + 2902, 2903, 2904, 2901, 2900, 2908, 2902, 2905, 2905, 2906, + 2904, 2909, 2910, 2903, 2906, 2911, 2912, 2910, 2914, 2915, + 2916, 2917, 2912, 2920, 2919, 2908, 2914, 2911, 2921, 2922, + 2923, 2909, 2925, 2926, 2930, 2923, 2942, 2925, 2915, 2920, + 2916, 2917, 2919, 2927, 2932, 2921, 2921, 2928, 0, 2927, - 2935, 2937, 2937, 2936, 2939, 2939, 2940, 2940, 2943, 2940, - 2941, 2941, 2943, 2941, 2942, 2942, 2946, 2942, 2945, 2945, - 2950, 2947, 2951, 2952, 2953, 2953, 2956, 2958, 2952, 2957, - 2959, 2958, 2960, 0, 2946, 2947, 2957, 2962, 2967, 2959, - 2950, 2963, 2951, 2964, 2964, 2965, 2965, 2960, 2966, 2966, - 2963, 2956, 2968, 2967, 2969, 2962, 2970, 2968, 2971, 2972, - 2973, 2970, 2970, 2969, 2971, 2974, 2969, 2975, 2976, 2977, - 2978, 2978, 2975, 2976, 2979, 2973, 2980, 2981, 2981, 3003, - 2979, 3053, 2980, 0, 2972, 3053, 2974, 2983, 2977, 2982, - 2982, 2988, 2983, 2986, 2986, 2987, 2987, 2991, 2991, 3003, + 2922, 2931, 2928, 2926, 2930, 2942, 2931, 2932, 2935, 2935, + 2936, 2936, 2937, 2941, 2943, 2943, 2937, 2952, 2941, 2945, + 2945, 2946, 2946, 2949, 2946, 2947, 2947, 2949, 2947, 2948, + 2948, 2953, 2948, 2951, 2951, 2952, 2956, 2957, 2958, 2959, + 2959, 2962, 2963, 2958, 2964, 2953, 2965, 2966, 2964, 2963, + 2968, 2969, 2970, 2970, 2973, 2965, 2956, 2957, 2971, 2971, + 2969, 2978, 2966, 2972, 2972, 2974, 2962, 2975, 2968, 2973, + 2974, 2980, 2976, 2979, 2977, 2983, 2975, 2976, 2976, 2975, + 2977, 3012, 2981, 3014, 2982, 0, 2978, 2981, 2979, 2982, + 2984, 2984, 2980, 2985, 2983, 2986, 2987, 2987, 3014, 2985, - 2988, 2992, 2992, 2993, 2993, 2994, 2994, 2995, 2995, 2996, - 2996, 2997, 2997, 2999, 3000, 3000, 3001, 3002, 3005, 3006, - 3006, 3007, 2999, 3009, 3015, 3001, 3008, 3010, 3010, 3002, - 3011, 3012, 3012, 3018, 3018, 3009, 3007, 3005, 3016, 3008, - 3019, 3016, 3015, 3021, 3022, 3011, 3021, 3023, 3024, 3025, - 3022, 3026, 3033, 3024, 3027, 3030, 3029, 3036, 3019, 3046, - 3044, 3023, 3029, 3044, 3030, 3047, 3047, 3033, 3025, 3026, - 3027, 3051, 3046, 3048, 3048, 3049, 3049, 3052, 3054, 3055, - 3057, 3058, 3059, 3036, 3061, 3064, 3052, 3059, 3060, 3063, - 3060, 3065, 3058, 3055, 3051, 3062, 3062, 3066, 3054, 3061, + 3012, 2986, 2988, 2988, 2989, 2989, 2990, 2993, 2993, 2994, + 2994, 2990, 2995, 2998, 2998, 2999, 2999, 3000, 3000, 3001, + 3001, 2995, 3002, 3002, 3003, 3003, 3004, 3004, 3006, 3007, + 3007, 3008, 3009, 3010, 3013, 3013, 3015, 3006, 3016, 3018, + 3008, 3017, 3017, 3022, 3009, 3019, 3019, 3024, 3023, 3015, + 3016, 3023, 3026, 3010, 3018, 3025, 3025, 3028, 3029, 3032, + 3028, 3022, 3030, 3031, 3029, 3033, 3034, 3044, 3031, 3036, + 3026, 3037, 3041, 3024, 3052, 3036, 3030, 3052, 3032, 3054, + 3037, 3059, 3034, 3033, 3055, 3055, 3060, 3041, 3056, 3056, + 3057, 3057, 3054, 3044, 3061, 3060, 3062, 3063, 3061, 3065, - 3067, 3068, 3063, 3057, 3064, 3069, 3070, 3071, 3078, 3065, - 3072, 3073, 3074, 3066, 3069, 3072, 3068, 3074, 3070, 3079, - 3080, 3080, 3078, 3081, 3086, 3067, 3082, 3082, 3071, 3083, - 3083, 3073, 3081, 3084, 3084, 3085, 3085, 3087, 3088, 3079, - 3089, 3088, 3090, 3086, 3091, 3089, 3092, 3090, 3093, 3094, - 3095, 3096, 3097, 3100, 3093, 3101, 3096, 3087, 3098, 3098, - 3104, 3092, 3095, 3094, 3099, 3099, 3102, 3102, 3100, 3091, - 3106, 3112, 3097, 3111, 3101, 3104, 3109, 3109, 3110, 3110, - 3113, 3111, 3115, 3114, 3116, 3117, 3113, 3118, 3106, 3114, - 3112, 3123, 3118, 3119, 3119, 3124, 3115, 3116, 3120, 3120, + 3067, 3066, 3069, 3073, 3059, 3067, 3068, 3071, 3068, 3070, + 3070, 3063, 3066, 3072, 3074, 3075, 3062, 3069, 3076, 3077, + 3071, 3073, 3065, 3078, 3079, 3086, 3080, 3081, 3077, 3082, + 3074, 3080, 3072, 3076, 3082, 3078, 3087, 3088, 3088, 3086, + 3075, 3089, 3090, 3090, 3094, 3079, 3095, 3081, 3091, 3091, + 3089, 3092, 3092, 3093, 3093, 3096, 3087, 3097, 3096, 3098, + 3099, 3100, 3097, 3094, 3098, 3101, 3095, 3102, 3103, 3104, + 3105, 3101, 3106, 3106, 3104, 3114, 3100, 3107, 3107, 3108, + 3103, 3102, 3109, 3110, 3110, 3099, 3120, 3112, 3117, 3117, + 3105, 3118, 3118, 3114, 3108, 3119, 3123, 3125, 3121, 3124, - 3126, 3127, 3129, 3130, 3117, 3127, 3131, 3132, 3130, 3134, - 3133, 3135, 3123, 3136, 3126, 3124, 3135, 3140, 3136, 3142, - 3132, 3141, 3129, 3133, 0, 3131, 3137, 3137, 3134, 3143, - 3143, 3144, 3146, 3146, 3145, 3150, 3144, 3140, 3142, 3141, - 3145, 3147, 3148, 3149, 3151, 3157, 3147, 3148, 3149, 3157, - 3151, 3153, 3153, 3154, 3150, 3155, 3155, 3158, 3154, 3159, - 3160, 3161, 3162, 3163, 3164, 3171, 3159, 3178, 3162, 3166, - 3166, 3168, 3168, 3170, 3169, 3172, 3158, 3164, 3170, 3160, - 3161, 3180, 3163, 3169, 3171, 3173, 3169, 3174, 3174, 3176, - 3175, 3179, 3179, 3178, 3172, 3175, 3181, 3181, 3173, 3185, + 3122, 3109, 3112, 3119, 3121, 3120, 3122, 3131, 3126, 3132, + 3123, 3134, 3124, 3126, 3127, 3127, 3125, 3128, 3128, 3135, + 3137, 3138, 3139, 3135, 3140, 3134, 3138, 3142, 3131, 3132, + 3141, 3143, 3148, 3144, 3145, 3145, 3143, 3140, 3144, 3149, + 3137, 3139, 3150, 3141, 3151, 3151, 3142, 3158, 3152, 3153, + 3154, 3154, 3148, 3152, 3155, 3153, 3159, 3149, 3156, 3155, + 3157, 3150, 3159, 3156, 3162, 3157, 3158, 3161, 3161, 3162, + 3163, 3163, 3165, 3166, 3167, 3168, 3165, 3169, 3170, 3171, + 3172, 3167, 3174, 3174, 3170, 3176, 3176, 3179, 3177, 3180, + 3178, 3181, 3166, 3172, 3168, 3178, 3169, 3177, 3171, 3184, - 3180, 3183, 3176, 3182, 3182, 3184, 3183, 3186, 3186, 3187, - 3190, 3188, 3184, 3188, 3187, 3189, 3189, 3190, 3185, 3191, - 3192, 3194, 3193, 3196, 3196, 3197, 3191, 3193, 3199, 3200, - 3201, 3202, 3206, 3199, 3200, 3203, 3203, 3205, 3205, 3192, - 3194, 3207, 3208, 3208, 3197, 3209, 3209, 3210, 3220, 3201, - 3202, 3206, 3212, 3212, 3210, 3213, 3213, 3214, 3216, 3221, - 3207, 3219, 0, 3216, 3214, 0, 3219, 3220, 3222, 3222, - 3223, 3223, 0, 0, 0, 0, 0, 0, 3221, 3227, - 3227, 3227, 3227, 3227, 3227, 3227, 3228, 3228, 3228, 3228, - 3228, 3228, 3228, 3229, 3229, 3229, 3229, 3229, 3229, 3229, + 3177, 3182, 3182, 3186, 3181, 3183, 3179, 3188, 3180, 3193, + 3183, 0, 3184, 3187, 3187, 3189, 3189, 3190, 3190, 3191, + 3192, 3194, 3194, 3200, 3191, 3195, 3188, 3192, 3193, 3186, + 3195, 3196, 3198, 3196, 3197, 3197, 3199, 3202, 3205, 3198, + 3201, 3209, 3200, 3199, 3207, 3201, 3204, 3204, 3208, 3207, + 3210, 3211, 3211, 3208, 3213, 3213, 3202, 3205, 3214, 3215, + 3209, 3216, 3216, 3217, 3217, 3218, 3220, 3220, 3222, 3210, + 3221, 3221, 3218, 3228, 3224, 3222, 3227, 3214, 3215, 3224, + 3229, 3227, 3230, 3230, 3231, 3231, 0, 0, 0, 0, + 0, 0, 3228, 0, 0, 0, 0, 0, 0, 3229, - 3230, 3230, 3230, 3230, 3230, 3230, 3230, 3231, 3231, 3231, - 3231, 3231, 3231, 3231, 3232, 3232, 3232, 3232, 3232, 3232, - 3232, 3233, 3233, 3233, 3233, 3233, 3233, 3233, 3235, 3235, - 0, 3235, 3235, 3235, 3235, 3236, 3236, 0, 0, 0, - 3236, 3236, 3237, 3237, 0, 0, 3237, 0, 3237, 3238, - 0, 0, 0, 0, 0, 3238, 3239, 3239, 0, 0, - 0, 3239, 3239, 3240, 0, 0, 0, 0, 0, 3240, - 3241, 3241, 0, 3241, 3241, 3241, 3241, 3242, 0, 0, - 0, 0, 0, 3242, 3243, 3243, 0, 0, 0, 3243, - 3243, 3244, 3244, 0, 3244, 3244, 3244, 3244, 3226, 3226, + 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3236, 3236, 3236, + 3236, 3236, 3236, 3236, 3237, 3237, 3237, 3237, 3237, 3237, + 3237, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3239, 3239, + 3239, 3239, 3239, 3239, 3239, 3240, 3240, 3240, 3240, 3240, + 3240, 3240, 3241, 3241, 3241, 3241, 3241, 3241, 3241, 3243, + 3243, 0, 3243, 3243, 3243, 3243, 3244, 3244, 0, 0, + 0, 3244, 3244, 3245, 3245, 0, 0, 3245, 0, 3245, + 3246, 0, 0, 0, 0, 0, 3246, 3247, 3247, 0, + 0, 0, 3247, 3247, 3248, 0, 0, 0, 0, 0, + 3248, 3249, 3249, 0, 3249, 3249, 3249, 3249, 3250, 0, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, - 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226, 3226 + 0, 0, 0, 0, 3250, 3251, 3251, 0, 0, 0, + 3251, 3251, 3252, 3252, 0, 3252, 3252, 3252, 3252, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, + 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234 } ; static yy_state_type yy_last_accepting_state; @@ -3089,7 +3096,7 @@ static void config_end_include(void) } #endif -#line 3091 "" +#line 3098 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3098,9 +3105,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3100 "" +#line 3107 "" -#line 3102 "" +#line 3109 "" #define INITIAL 0 #define quotedstring 1 @@ -3324,7 +3331,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3326 "" +#line 3333 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3357,13 +3364,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 >= 3227 ) + if ( yy_current_state >= 3235 ) 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] != 6299 ); + while ( yy_base[yy_current_state] != 6320 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4907,40 +4914,45 @@ YY_RULE_SETUP { YDVAR(2, VAR_EDNS_CLIENT_TAG) } YY_BREAK case 302: -/* rule 302 can match eol */ YY_RULE_SETUP #line 527 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } + YY_BREAK +case 303: +/* rule 303 can match eol */ +YY_RULE_SETUP +#line 528 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 303: +case 304: YY_RULE_SETUP -#line 530 "./util/configlexer.lex" +#line 531 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 531 "./util/configlexer.lex" +#line 532 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 304: -YY_RULE_SETUP -#line 536 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 305: -/* rule 305 can match eol */ YY_RULE_SETUP #line 537 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 306: +/* rule 306 can match eol */ +YY_RULE_SETUP +#line 538 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 306: +case 307: YY_RULE_SETUP -#line 539 "./util/configlexer.lex" +#line 540 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4953,34 +4965,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 307: +case 308: YY_RULE_SETUP -#line 551 "./util/configlexer.lex" +#line 552 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 552 "./util/configlexer.lex" +#line 553 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 308: -YY_RULE_SETUP -#line 557 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 558 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 559 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 560 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4993,38 +5005,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 311: +case 312: YY_RULE_SETUP -#line 572 "./util/configlexer.lex" +#line 573 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 574 "./util/configlexer.lex" +#line 575 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 312: -YY_RULE_SETUP -#line 578 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 313: -/* rule 313 can match eol */ YY_RULE_SETUP #line 579 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 314: +/* rule 314 can match eol */ YY_RULE_SETUP #line 580 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 315: YY_RULE_SETUP #line 581 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 316: +YY_RULE_SETUP +#line 582 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5032,27 +5044,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 586 "./util/configlexer.lex" +#line 587 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 316: -YY_RULE_SETUP -#line 590 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 317: -/* rule 317 can match eol */ YY_RULE_SETUP #line 591 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 318: +/* rule 318 can match eol */ +YY_RULE_SETUP +#line 592 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 318: +case 319: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5062,7 +5074,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5077,39 +5089,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 319: +case 320: YY_RULE_SETUP -#line 613 "./util/configlexer.lex" +#line 614 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 616 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 320: -YY_RULE_SETUP -#line 620 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 321: -/* rule 321 can match eol */ YY_RULE_SETUP #line 621 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 322: +/* rule 322 can match eol */ YY_RULE_SETUP #line 622 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 323: YY_RULE_SETUP #line 623 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 324: +YY_RULE_SETUP +#line 624 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5118,29 +5130,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 629 "./util/configlexer.lex" +#line 630 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 324: -YY_RULE_SETUP -#line 633 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 325: -/* rule 325 can match eol */ YY_RULE_SETUP #line 634 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 326: +/* rule 326 can match eol */ +YY_RULE_SETUP +#line 635 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 326: +case 327: YY_RULE_SETUP -#line 638 "./util/configlexer.lex" +#line 639 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5149,33 +5161,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 327: +case 328: YY_RULE_SETUP -#line 646 "./util/configlexer.lex" +#line 647 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 328: +case 329: YY_RULE_SETUP -#line 650 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 329: +case 330: YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 330: +case 331: YY_RULE_SETUP -#line 658 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5177 "" +#line 5189 "" case YY_END_OF_BUFFER: { @@ -5470,7 +5482,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 >= 3227 ) + if ( yy_current_state >= 3235 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5498,11 +5510,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 >= 3227 ) + if ( yy_current_state >= 3235 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3226); + yy_is_jam = (yy_current_state == 3234); return yy_is_jam ? 0 : yy_current_state; } @@ -6141,6 +6153,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 658 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index a9b73d989..0b997a306 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -524,6 +524,7 @@ name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) } +edns-client-tag-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 7e7c3fc3f..ba5054eb4 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -438,7 +438,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553 + VAR_EDNS_CLIENT_TAG = 553, + VAR_EDNS_CLIENT_TAG_OPCODE = 554 }; #endif /* Tokens. */ @@ -738,6 +739,7 @@ extern int yydebug; #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 #define VAR_EDNS_CLIENT_TAG 553 +#define VAR_EDNS_CLIENT_TAG_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -747,7 +749,7 @@ union YYSTYPE char* str; -#line 751 "util/configparser.c" +#line 753 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -1066,19 +1068,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 634 +#define YYLAST 635 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 299 +#define YYNTOKENS 300 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 324 +#define YYNNTS 325 /* YYNRULES -- Number of rules. */ -#define YYNRULES 624 +#define YYNRULES 626 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 927 +#define YYNSTATES 930 #define YYUNDEFTOK 2 -#define YYMAXUTOK 553 +#define YYMAXUTOK 554 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1145,7 +1147,7 @@ static const yytype_int16 yytranslate[] = 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 + 295, 296, 297, 298, 299 }; #if YYDEBUG @@ -1174,47 +1176,47 @@ static const yytype_int16 yyrline[] = 280, 280, 281, 281, 281, 282, 282, 283, 284, 284, 285, 285, 286, 286, 287, 287, 288, 288, 288, 289, 289, 289, 290, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 296, 308, 309, 310, 310, 310, 310, - 310, 311, 311, 313, 325, 326, 327, 327, 327, 327, - 328, 328, 330, 344, 345, 346, 346, 346, 346, 347, - 347, 347, 349, 366, 367, 368, 368, 368, 368, 369, - 369, 369, 370, 373, 392, 409, 417, 427, 435, 452, - 453, 454, 454, 454, 454, 454, 455, 455, 455, 456, - 456, 458, 467, 476, 487, 496, 505, 514, 525, 534, - 546, 560, 575, 586, 603, 620, 637, 654, 669, 684, - 697, 712, 721, 730, 739, 748, 757, 766, 775, 784, - 793, 802, 811, 820, 829, 838, 851, 860, 873, 882, - 891, 900, 907, 914, 923, 930, 939, 947, 954, 961, - 969, 978, 985, 1001, 1009, 1017, 1025, 1033, 1042, 1051, - 1065, 1074, 1083, 1092, 1101, 1110, 1119, 1126, 1133, 1159, - 1167, 1174, 1181, 1188, 1195, 1203, 1211, 1219, 1226, 1237, - 1248, 1255, 1264, 1273, 1282, 1289, 1296, 1304, 1312, 1322, - 1332, 1342, 1356, 1364, 1377, 1388, 1396, 1409, 1418, 1427, - 1436, 1446, 1456, 1464, 1477, 1486, 1494, 1503, 1511, 1524, - 1533, 1540, 1550, 1560, 1570, 1580, 1590, 1600, 1610, 1620, - 1627, 1634, 1641, 1650, 1659, 1668, 1677, 1684, 1694, 1714, - 1721, 1739, 1752, 1765, 1774, 1783, 1792, 1801, 1811, 1821, - 1832, 1841, 1850, 1859, 1868, 1877, 1886, 1899, 1912, 1921, - 1928, 1937, 1946, 1955, 1964, 1972, 1985, 1993, 2034, 2041, - 2056, 2066, 2076, 2083, 2090, 2097, 2106, 2114, 2128, 2149, - 2170, 2182, 2194, 2206, 2215, 2236, 2246, 2255, 2263, 2271, - 2284, 2297, 2312, 2327, 2336, 2345, 2351, 2360, 2369, 2379, - 2389, 2402, 2415, 2427, 2441, 2453, 2467, 2482, 2492, 2499, - 2506, 2515, 2524, 2534, 2544, 2554, 2561, 2568, 2577, 2586, - 2596, 2606, 2613, 2620, 2627, 2635, 2645, 2655, 2665, 2675, - 2714, 2724, 2732, 2740, 2755, 2764, 2769, 2770, 2771, 2771, - 2771, 2772, 2772, 2772, 2773, 2773, 2775, 2785, 2794, 2801, - 2808, 2815, 2822, 2829, 2836, 2841, 2842, 2843, 2843, 2843, - 2844, 2844, 2844, 2845, 2846, 2846, 2847, 2847, 2848, 2848, - 2849, 2850, 2851, 2852, 2853, 2854, 2856, 2865, 2875, 2882, - 2889, 2898, 2905, 2912, 2919, 2926, 2935, 2944, 2951, 2958, - 2968, 2978, 2988, 2998, 3008, 3018, 3023, 3024, 3025, 3027, - 3033, 3038, 3039, 3040, 3042, 3048, 3058, 3065, 3074, 3082, - 3087, 3088, 3090, 3090, 3090, 3091, 3091, 3092, 3093, 3094, - 3095, 3096, 3098, 3108, 3117, 3124, 3133, 3140, 3149, 3157, - 3170, 3178, 3191, 3196, 3197, 3198, 3198, 3199, 3199, 3199, - 3200, 3202, 3214, 3226, 3238, 3253, 3266, 3279, 3290, 3295, - 3296, 3297, 3297, 3299, 3314 + 293, 294, 294, 295, 297, 309, 310, 311, 311, 311, + 311, 311, 312, 312, 314, 326, 327, 328, 328, 328, + 328, 329, 329, 331, 345, 346, 347, 347, 347, 347, + 348, 348, 348, 350, 367, 368, 369, 369, 369, 369, + 370, 370, 370, 371, 374, 393, 410, 418, 428, 436, + 453, 454, 455, 455, 455, 455, 455, 456, 456, 456, + 457, 457, 459, 468, 477, 488, 497, 506, 515, 526, + 535, 547, 561, 576, 587, 604, 621, 638, 655, 670, + 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, + 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, + 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, + 962, 970, 979, 986, 1002, 1010, 1018, 1026, 1034, 1043, + 1052, 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1127, 1134, + 1160, 1168, 1175, 1182, 1189, 1196, 1204, 1212, 1220, 1227, + 1238, 1249, 1256, 1265, 1274, 1283, 1290, 1297, 1305, 1313, + 1323, 1333, 1343, 1357, 1365, 1378, 1389, 1397, 1410, 1419, + 1428, 1437, 1447, 1457, 1465, 1478, 1487, 1495, 1504, 1512, + 1525, 1534, 1541, 1551, 1561, 1571, 1581, 1591, 1601, 1611, + 1621, 1628, 1635, 1642, 1651, 1660, 1669, 1678, 1685, 1695, + 1715, 1722, 1740, 1753, 1766, 1775, 1784, 1793, 1802, 1812, + 1822, 1833, 1842, 1851, 1860, 1869, 1878, 1887, 1900, 1913, + 1922, 1929, 1938, 1947, 1956, 1965, 1973, 1986, 1994, 2035, + 2042, 2057, 2067, 2077, 2084, 2091, 2098, 2107, 2115, 2129, + 2150, 2171, 2183, 2195, 2207, 2216, 2237, 2247, 2256, 2264, + 2272, 2285, 2298, 2313, 2328, 2337, 2346, 2352, 2361, 2370, + 2380, 2390, 2403, 2416, 2428, 2442, 2454, 2468, 2483, 2494, + 2504, 2511, 2518, 2527, 2536, 2546, 2556, 2566, 2573, 2580, + 2589, 2598, 2608, 2618, 2625, 2632, 2639, 2647, 2657, 2667, + 2677, 2687, 2726, 2736, 2744, 2752, 2767, 2776, 2781, 2782, + 2783, 2783, 2783, 2784, 2784, 2784, 2785, 2785, 2787, 2797, + 2806, 2813, 2820, 2827, 2834, 2841, 2848, 2853, 2854, 2855, + 2855, 2855, 2856, 2856, 2856, 2857, 2858, 2858, 2859, 2859, + 2860, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2868, 2877, + 2887, 2894, 2901, 2910, 2917, 2924, 2931, 2938, 2947, 2956, + 2963, 2970, 2980, 2990, 3000, 3010, 3020, 3030, 3035, 3036, + 3037, 3039, 3045, 3050, 3051, 3052, 3054, 3060, 3070, 3077, + 3086, 3094, 3099, 3100, 3102, 3102, 3102, 3103, 3103, 3104, + 3105, 3106, 3107, 3108, 3110, 3120, 3129, 3136, 3145, 3152, + 3161, 3169, 3182, 3190, 3203, 3208, 3209, 3210, 3210, 3211, + 3211, 3211, 3212, 3214, 3226, 3238, 3250, 3265, 3278, 3291, + 3302, 3307, 3308, 3309, 3309, 3311, 3326 }; #endif @@ -1333,17 +1335,18 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", "$accept", - "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", - "contents_server", "content_server", "stubstart", "contents_stub", - "content_stub", "forwardstart", "contents_forward", "content_forward", - "viewstart", "contents_view", "content_view", "authstart", - "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", - "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", - "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", - "server_statistics_interval", "server_statistics_cumulative", - "server_extended_statistics", "server_shm_enable", "server_shm_key", - "server_port", "server_send_client_subnet", "server_client_subnet_zone", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", + "VAR_EDNS_CLIENT_TAG_OPCODE", "$accept", "toplevelvars", "toplevelvar", + "force_toplevel", "serverstart", "contents_server", "content_server", + "stubstart", "contents_stub", "content_stub", "forwardstart", + "contents_forward", "content_forward", "viewstart", "contents_view", + "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", + "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", + "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", + "server_verbosity", "server_statistics_interval", + "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", @@ -1425,12 +1428,12 @@ static const char *const yytname[] = "server_qname_minimisation_strict", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "server_edns_client_tag", "stub_name", - "stub_host", "stub_addr", "stub_first", "stub_no_cache", - "stub_ssl_upstream", "stub_prime", "forward_name", "forward_host", - "forward_addr", "forward_first", "forward_no_cache", - "forward_ssl_upstream", "auth_name", "auth_zonefile", "auth_master", - "auth_url", "auth_allow_notify", "auth_for_downstream", + "server_ipsecmod_strict", "server_edns_client_tag", + "server_edns_client_tag_opcode", "stub_name", "stub_host", "stub_addr", + "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", + "forward_name", "forward_host", "forward_addr", "forward_first", + "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", + "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", "view_name", "view_local_zone", "view_response_ip", "view_response_ip_data", "view_local_data", "view_local_data_ptr", "view_first", "rcstart", @@ -1500,7 +1503,7 @@ static const yytype_int16 yytoknum[] = 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 + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554 }; # endif @@ -1542,7 +1545,7 @@ static const yytype_int16 yypact[] = 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 277, 278, 279, 281, 282, 283, - 285, 319, 320, 321, 322, 326, -288, -288, -288, -288, + 285, 319, 320, 321, 322, 326, 327, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, @@ -1562,55 +1565,55 @@ static const yytype_int16 yypact[] = -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 327, 328, - 370, 371, 372, 373, 374, -288, -288, -288, -288, -288, - -288, -288, -288, 375, 376, 377, 378, 382, 386, -288, - -288, -288, -288, -288, -288, -288, 387, 412, 413, 414, - 422, 433, 434, -288, -288, -288, -288, -288, -288, -288, - -288, 435, 436, 437, 438, 439, 440, 441, 442, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 443, 444, - 445, 446, 447, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, 448, 449, 450, 451, 452, 492, - 494, 510, -288, -288, -288, -288, -288, -288, -288, -288, - -288, 511, 512, 513, 514, 515, 516, 517, 518, 519, - 520, 527, 528, 529, 530, 531, 532, 533, 535, 536, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + 328, 370, 371, 372, 373, 374, 375, -288, -288, -288, + -288, -288, -288, -288, -288, 376, 377, 378, 382, 386, + 387, -288, -288, -288, -288, -288, -288, -288, 412, 413, + 414, 422, 433, 434, 435, -288, -288, -288, -288, -288, + -288, -288, -288, 436, 437, 438, 439, 440, 441, 442, + 443, -288, -288, -288, -288, -288, -288, -288, -288, -288, + 444, 445, 446, 447, 448, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, 449, 450, 451, 452, + 492, 494, 510, 511, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 527, 528, 529, 530, 531, 532, 533, 535, + 536, 537, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 537, -288, -288, 538, -288, -288, 539, 540, 541, 544, - 547, 550, 551, 560, 561, 562, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 564, 565, 566, - 567, 568, 569, -288, -288, -288, -288, -288, -288, -288, - 570, 571, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, 538, -288, -288, 539, -288, -288, 540, 541, + 544, 547, 550, 551, 560, 561, 562, 564, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, 565, + 566, 567, 568, 569, 570, -288, -288, -288, -288, -288, + -288, -288, 571, 574, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, 573, 574, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 575, 576, - 577, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, 578, 579, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, 580, 581, 582, 583, 584, 585, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, 586, -288, -288, -288, -288, - -288, -288, -288, -288, -288, 587, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 588, -288, -288, 589, 590, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, 575, 576, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, 591, 592, 593, -288, -288, - -288, -288, -288, -288, -288, -288, -288 + 577, 578, 579, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 580, 581, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, 582, 583, 584, 585, 586, 587, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, 588, -288, -288, + -288, -288, -288, -288, -288, -288, -288, 589, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, 590, -288, -288, 591, 592, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, -288, 593, 594, + 595, -288, -288, -288, -288, -288, -288, -288, -288, -288 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1618,10 +1621,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 223, 233, 505, 565, 524, - 242, 579, 602, 252, 618, 268, 570, 3, 17, 21, - 225, 235, 244, 254, 270, 507, 526, 567, 572, 581, - 604, 620, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 224, 234, 507, 567, 526, + 243, 581, 604, 253, 620, 269, 572, 3, 17, 21, + 226, 236, 245, 255, 271, 509, 528, 569, 574, 583, + 606, 622, 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, @@ -1642,75 +1645,75 @@ 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, - 0, 0, 0, 0, 0, 0, 20, 22, 23, 86, - 89, 98, 192, 193, 24, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 37, 77, 25, 90, 91, - 48, 70, 85, 26, 27, 30, 31, 28, 29, 32, - 33, 34, 35, 36, 121, 204, 122, 124, 125, 126, - 206, 211, 207, 218, 219, 220, 221, 127, 128, 129, - 130, 131, 132, 188, 87, 76, 102, 119, 120, 216, - 213, 123, 38, 39, 40, 41, 42, 78, 92, 93, - 108, 64, 74, 65, 196, 197, 103, 58, 59, 195, - 60, 61, 112, 116, 136, 145, 171, 148, 217, 113, - 71, 43, 44, 45, 100, 137, 138, 139, 46, 47, - 49, 50, 52, 53, 51, 143, 54, 55, 56, 62, - 81, 117, 95, 144, 88, 167, 96, 97, 114, 115, - 214, 101, 57, 79, 82, 63, 66, 104, 105, 80, - 168, 106, 67, 68, 69, 205, 118, 181, 182, 183, - 184, 185, 186, 194, 107, 75, 109, 110, 111, 169, - 72, 73, 94, 83, 84, 99, 133, 134, 215, 135, - 140, 141, 142, 172, 173, 175, 177, 178, 176, 179, - 189, 146, 147, 151, 152, 149, 150, 153, 154, 156, - 155, 208, 210, 209, 170, 180, 198, 200, 199, 201, - 202, 203, 222, 174, 187, 190, 191, 212, 0, 0, - 0, 0, 0, 0, 0, 224, 226, 227, 228, 230, - 231, 232, 229, 0, 0, 0, 0, 0, 0, 234, - 236, 237, 238, 239, 240, 241, 0, 0, 0, 0, - 0, 0, 0, 243, 245, 246, 249, 250, 247, 251, - 248, 0, 0, 0, 0, 0, 0, 0, 0, 253, - 255, 256, 257, 258, 262, 259, 260, 261, 0, 0, - 0, 0, 0, 273, 277, 278, 279, 280, 269, 271, - 272, 274, 275, 276, 0, 0, 0, 0, 0, 0, - 0, 0, 506, 508, 510, 509, 515, 511, 512, 513, - 514, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, + 86, 89, 98, 192, 193, 24, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 37, 77, 25, 90, + 91, 48, 70, 85, 26, 27, 30, 31, 28, 29, + 32, 33, 34, 35, 36, 121, 204, 122, 124, 125, + 126, 206, 211, 207, 218, 219, 220, 221, 127, 128, + 129, 130, 131, 132, 188, 87, 76, 102, 119, 120, + 216, 213, 123, 38, 39, 40, 41, 42, 78, 92, + 93, 108, 64, 74, 65, 196, 197, 103, 58, 59, + 195, 60, 61, 112, 116, 136, 145, 171, 148, 217, + 113, 71, 43, 44, 45, 100, 137, 138, 139, 46, + 47, 49, 50, 52, 53, 51, 143, 54, 55, 56, + 62, 81, 117, 95, 144, 88, 167, 96, 97, 114, + 115, 214, 101, 57, 79, 82, 63, 66, 104, 105, + 80, 168, 106, 67, 68, 69, 205, 118, 181, 182, + 183, 184, 185, 186, 194, 107, 75, 109, 110, 111, + 169, 72, 73, 94, 83, 84, 99, 133, 134, 215, + 135, 140, 141, 142, 172, 173, 175, 177, 178, 176, + 179, 189, 146, 147, 151, 152, 149, 150, 153, 154, + 156, 155, 208, 210, 209, 170, 180, 198, 200, 199, + 201, 202, 203, 222, 223, 174, 187, 190, 191, 212, + 0, 0, 0, 0, 0, 0, 0, 225, 227, 228, + 229, 231, 232, 233, 230, 0, 0, 0, 0, 0, + 0, 235, 237, 238, 239, 240, 241, 242, 0, 0, + 0, 0, 0, 0, 0, 244, 246, 247, 250, 251, + 248, 252, 249, 0, 0, 0, 0, 0, 0, 0, + 0, 254, 256, 257, 258, 259, 263, 260, 261, 262, + 0, 0, 0, 0, 0, 274, 278, 279, 280, 281, + 270, 272, 273, 275, 276, 277, 0, 0, 0, 0, + 0, 0, 0, 0, 508, 510, 512, 511, 517, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 525, 527, 529, 528, 530, 531, 532, 533, 534, 535, + 0, 0, 527, 529, 531, 530, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 0, 566, 568, 0, 571, 573, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 580, 582, 583, 584, - 586, 587, 585, 588, 589, 590, 591, 0, 0, 0, - 0, 0, 0, 603, 605, 606, 607, 608, 609, 610, - 0, 0, 619, 621, 622, 282, 281, 288, 301, 299, - 311, 307, 308, 312, 309, 310, 313, 314, 315, 316, - 317, 346, 347, 348, 349, 350, 375, 376, 377, 382, - 383, 304, 384, 385, 388, 386, 387, 390, 391, 392, - 406, 361, 362, 364, 365, 393, 409, 355, 357, 410, - 416, 417, 418, 305, 374, 434, 435, 356, 429, 339, - 300, 351, 407, 413, 394, 0, 0, 438, 306, 283, - 338, 398, 284, 302, 303, 352, 353, 436, 396, 400, - 401, 285, 439, 378, 405, 340, 360, 411, 412, 415, - 428, 354, 432, 430, 431, 366, 373, 402, 403, 367, - 368, 395, 420, 341, 342, 345, 318, 320, 321, 322, - 323, 324, 331, 332, 333, 334, 335, 336, 440, 441, - 443, 379, 380, 381, 389, 444, 445, 446, 0, 0, - 0, 397, 369, 371, 575, 455, 459, 457, 456, 460, - 458, 0, 0, 463, 464, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 399, 414, 433, 468, 469, - 370, 447, 0, 0, 0, 0, 0, 0, 421, 422, - 423, 424, 425, 426, 427, 576, 363, 358, 419, 337, - 286, 287, 359, 470, 472, 471, 473, 474, 475, 319, - 326, 465, 467, 466, 325, 0, 344, 404, 442, 343, - 372, 327, 328, 330, 329, 0, 477, 478, 479, 483, - 482, 480, 481, 484, 485, 486, 487, 489, 488, 498, - 0, 502, 503, 0, 0, 504, 490, 496, 491, 492, - 493, 495, 497, 494, 263, 264, 265, 266, 267, 516, - 518, 517, 520, 521, 522, 523, 519, 546, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 547, 557, 558, - 559, 560, 561, 562, 563, 564, 569, 574, 592, 593, - 594, 597, 595, 596, 598, 599, 600, 601, 611, 612, - 613, 614, 615, 616, 623, 624, 408, 437, 454, 577, - 578, 461, 462, 448, 449, 0, 0, 0, 453, 617, - 476, 499, 500, 501, 452, 450, 451 + 546, 547, 0, 568, 570, 0, 573, 575, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 582, 584, + 585, 586, 588, 589, 587, 590, 591, 592, 593, 0, + 0, 0, 0, 0, 0, 605, 607, 608, 609, 610, + 611, 612, 0, 0, 621, 623, 624, 283, 282, 289, + 302, 300, 312, 308, 309, 313, 310, 311, 314, 315, + 316, 317, 318, 347, 348, 349, 350, 351, 376, 377, + 378, 383, 384, 305, 385, 386, 389, 387, 388, 391, + 392, 393, 407, 362, 363, 365, 366, 394, 410, 356, + 358, 411, 417, 418, 419, 306, 375, 435, 436, 357, + 430, 340, 301, 352, 408, 414, 395, 0, 0, 439, + 307, 284, 339, 399, 285, 303, 304, 353, 354, 437, + 397, 401, 402, 286, 440, 379, 406, 341, 361, 412, + 413, 416, 429, 355, 433, 431, 432, 367, 374, 403, + 404, 368, 369, 396, 421, 342, 343, 346, 319, 321, + 322, 323, 324, 325, 332, 333, 334, 335, 336, 337, + 441, 442, 444, 380, 381, 382, 390, 445, 446, 447, + 0, 0, 0, 398, 370, 372, 577, 456, 460, 458, + 457, 461, 459, 0, 0, 464, 465, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 400, 415, 434, + 469, 470, 371, 448, 0, 0, 0, 0, 0, 0, + 422, 423, 424, 425, 426, 427, 428, 578, 364, 359, + 420, 338, 287, 288, 360, 471, 473, 472, 474, 475, + 476, 320, 327, 466, 468, 467, 326, 0, 345, 405, + 443, 344, 373, 328, 329, 331, 330, 0, 478, 479, + 480, 481, 485, 484, 482, 483, 486, 487, 488, 489, + 491, 490, 500, 0, 504, 505, 0, 0, 506, 492, + 498, 493, 494, 495, 497, 499, 496, 264, 265, 266, + 267, 268, 518, 520, 519, 522, 523, 524, 525, 521, + 548, 550, 551, 552, 553, 554, 555, 556, 557, 558, + 549, 559, 560, 561, 562, 563, 564, 565, 566, 571, + 576, 594, 595, 596, 599, 597, 598, 600, 601, 602, + 603, 613, 614, 615, 616, 617, 618, 625, 626, 409, + 438, 455, 579, 580, 462, 463, 449, 450, 0, 0, + 0, 454, 619, 477, 501, 502, 503, 453, 451, 452 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1739,8 +1742,8 @@ static const yytype_int16 yypgoto[] = -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, 572, 594, 595, 596, - 597, -288, -288, -288, -288, -288, -288, -288, -288, -288, + -288, -288, -288, -288, -288, -288, -288, 572, 573, 596, + 597, 598, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, @@ -1748,45 +1751,45 @@ static const yytype_int16 yypgoto[] = -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288 + -288, -288, -288, -288, -288 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 246, 20, 33, 455, - 21, 34, 469, 22, 35, 483, 23, 36, 499, 513, - 514, 515, 516, 517, 24, 37, 518, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, - 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 456, 457, 458, 459, 460, 461, 462, - 470, 471, 472, 473, 474, 475, 500, 501, 502, 503, - 504, 505, 506, 507, 484, 485, 486, 487, 488, 489, - 490, 25, 38, 532, 533, 534, 535, 536, 537, 538, - 539, 540, 26, 39, 560, 561, 562, 563, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 579, 27, 40, 581, 582, 28, 41, - 584, 585, 443, 444, 445, 446, 29, 42, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 30, - 43, 613, 614, 615, 616, 617, 618, 619, 447, 31, - 44, 622, 623, 624 + -1, 1, 17, 18, 19, 32, 247, 20, 33, 457, + 21, 34, 471, 22, 35, 485, 23, 36, 501, 515, + 516, 517, 518, 519, 24, 37, 520, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 458, 459, 460, 461, 462, 463, + 464, 472, 473, 474, 475, 476, 477, 502, 503, 504, + 505, 506, 507, 508, 509, 486, 487, 488, 489, 490, + 491, 492, 25, 38, 534, 535, 536, 537, 538, 539, + 540, 541, 542, 26, 39, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, + 577, 578, 579, 580, 581, 27, 40, 583, 584, 28, + 41, 586, 587, 445, 446, 447, 448, 29, 42, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 30, 43, 615, 616, 617, 618, 619, 620, 621, 449, + 31, 44, 624, 625, 626 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1794,70 +1797,70 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 491, 476, 448, 580, 449, 450, 463, 620, 621, - 583, 3, 4, 625, 626, 464, 465, 607, 608, 609, - 610, 611, 612, 627, 491, 586, 587, 588, 589, 590, - 591, 592, 593, 594, 595, 628, 629, 630, 477, 478, - 631, 632, 633, 634, 635, 636, 5, 637, 638, 639, - 640, 641, 6, 642, 643, 644, 645, 646, 647, 648, - 649, 650, 651, 479, 652, 653, 451, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 524, 525, 526, 527, - 528, 529, 530, 531, 654, 655, 7, 452, 656, 657, - 466, 658, 467, 659, 660, 661, 453, 662, 663, 664, - 665, 666, 8, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, - 684, 685, 686, 687, 688, 689, 690, 480, 481, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, - 702, 703, 704, 705, 706, 707, 708, 709, 710, 9, - 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, - 721, 722, 723, 724, 725, 726, 727, 482, 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, 757, 758, 759, - 760, 761, 762, 763, 764, 765, 766, 767, 10, 493, - 494, 495, 768, 769, 770, 771, 772, 773, 774, 498, - 775, 776, 777, 778, 779, 454, 11, 780, 468, 781, - 492, 782, 493, 494, 495, 496, 497, 508, 509, 510, - 511, 512, 498, 12, 783, 784, 785, 786, 787, 788, - 789, 790, 13, 791, 792, 793, 794, 795, 796, 797, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 808, 809, 810, 811, 812, 813, 14, 814, 815, 816, - 15, 817, 818, 819, 0, 820, 16, 45, 46, 47, + 2, 493, 478, 450, 582, 451, 452, 465, 622, 623, + 585, 3, 4, 627, 628, 466, 467, 609, 610, 611, + 612, 613, 614, 629, 493, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 630, 631, 632, 479, 480, + 633, 634, 635, 636, 637, 638, 5, 639, 640, 641, + 642, 643, 6, 644, 645, 646, 647, 648, 649, 650, + 651, 652, 653, 481, 654, 655, 453, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 556, 557, 558, 559, 560, 561, 526, 527, 528, 529, + 530, 531, 532, 533, 656, 657, 7, 454, 658, 659, + 468, 660, 469, 661, 662, 663, 455, 664, 665, 666, + 667, 668, 8, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, + 686, 687, 688, 689, 690, 691, 692, 482, 483, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 704, 705, 706, 707, 708, 709, 710, 711, 712, 9, + 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, + 723, 724, 725, 726, 727, 728, 729, 484, 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, 757, 758, 759, 760, 761, + 762, 763, 764, 765, 766, 767, 768, 769, 10, 495, + 496, 497, 770, 771, 772, 773, 774, 775, 776, 500, + 777, 778, 779, 780, 781, 456, 11, 782, 470, 783, + 494, 784, 495, 496, 497, 498, 499, 510, 511, 512, + 513, 514, 500, 12, 785, 786, 787, 788, 789, 790, + 791, 792, 13, 793, 794, 795, 796, 797, 798, 799, + 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, + 810, 811, 812, 813, 814, 815, 14, 816, 817, 818, + 15, 819, 820, 821, 0, 822, 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, 821, - 822, 823, 824, 77, 78, 79, 825, 826, 827, 80, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 823, + 824, 825, 826, 77, 78, 79, 827, 828, 829, 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, - 828, 829, 830, 831, 832, 833, 834, 835, 836, 121, - 122, 123, 837, 124, 125, 126, 838, 839, 127, 128, + 830, 831, 832, 833, 834, 835, 836, 837, 838, 121, + 122, 123, 839, 124, 125, 126, 840, 841, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 840, 841, 842, 151, 152, 153, 154, 155, - 156, 157, 843, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 844, 845, 846, 847, 848, 849, 850, - 851, 852, 853, 854, 855, 856, 857, 858, 859, 860, - 861, 862, 863, 168, 169, 170, 171, 172, 173, 174, + 149, 150, 842, 843, 844, 151, 152, 153, 154, 155, + 156, 157, 845, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 846, 847, 848, 849, 850, 851, 852, + 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, + 863, 864, 865, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 864, 207, 865, 208, 209, 210, 211, 212, + 205, 206, 866, 207, 867, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 875, - 876, 223, 224, 225, 226, 227, 228, 877, 878, 879, - 880, 881, 882, 883, 229, 884, 885, 886, 887, 888, - 889, 890, 230, 231, 891, 232, 233, 892, 234, 235, - 893, 894, 236, 237, 238, 239, 240, 241, 242, 243, - 895, 896, 897, 244, 898, 899, 900, 901, 902, 903, - 904, 905, 245, 906, 907, 908, 909, 910, 911, 912, - 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, - 923, 924, 925, 926, 0, 0, 0, 0, 0, 519, + 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, + 878, 223, 224, 225, 226, 227, 228, 879, 880, 881, + 882, 883, 884, 885, 229, 886, 887, 888, 889, 890, + 891, 892, 230, 231, 893, 232, 233, 894, 234, 235, + 895, 896, 236, 237, 238, 239, 240, 241, 242, 243, + 897, 898, 899, 244, 900, 901, 902, 903, 904, 905, + 906, 907, 245, 246, 908, 909, 910, 911, 912, 913, + 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, + 924, 925, 926, 927, 928, 929, 0, 0, 0, 521, + 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 520, 521, 522, 523 + 0, 0, 0, 523, 524, 525 }; static const yytype_int16 yycheck[] = @@ -1920,23 +1923,23 @@ static const yytype_int16 yycheck[] = 10, 10, 268, 269, 10, 271, 272, 10, 274, 275, 10, 10, 278, 279, 280, 281, 282, 283, 284, 285, 10, 10, 10, 289, 10, 10, 10, 10, 10, 10, - 10, 10, 298, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 298, 299, 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, 37, + 10, 10, 10, 10, 10, 10, -1, -1, -1, 37, + 37, -1, -1, -1, -1, -1, -1, -1, -1, -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 + -1, -1, -1, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 300, 0, 11, 12, 46, 52, 96, 112, 159, - 218, 236, 253, 262, 286, 290, 296, 301, 302, 303, - 306, 309, 312, 315, 323, 550, 561, 583, 587, 595, - 608, 618, 304, 307, 310, 313, 316, 324, 551, 562, - 584, 588, 596, 609, 619, 13, 14, 15, 16, 17, + 0, 301, 0, 11, 12, 46, 52, 96, 112, 159, + 218, 236, 253, 262, 286, 290, 296, 302, 303, 304, + 307, 310, 313, 316, 324, 552, 563, 585, 589, 597, + 610, 620, 305, 308, 311, 314, 317, 325, 553, 564, + 586, 590, 598, 611, 621, 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, @@ -1956,7 +1959,7 @@ static const yytype_int16 yystos[] = 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 247, 248, 249, 250, 251, 252, 260, 268, 269, 271, 272, 274, 275, 278, 279, 280, 281, - 282, 283, 284, 285, 289, 298, 305, 326, 327, 328, + 282, 283, 284, 285, 289, 298, 299, 306, 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, @@ -1976,25 +1979,25 @@ static const yytype_int16 yystos[] = 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, 591, 592, 593, 594, 617, 45, 47, - 48, 108, 139, 148, 277, 308, 522, 523, 524, 525, - 526, 527, 528, 45, 53, 54, 138, 140, 276, 311, - 529, 530, 531, 532, 533, 534, 45, 81, 82, 106, - 180, 181, 220, 314, 543, 544, 545, 546, 547, 548, - 549, 45, 261, 263, 264, 265, 266, 267, 273, 317, - 535, 536, 537, 538, 539, 540, 541, 542, 291, 292, - 293, 294, 295, 318, 319, 320, 321, 322, 325, 535, - 536, 537, 538, 539, 97, 98, 99, 100, 101, 102, - 103, 104, 552, 553, 554, 555, 556, 557, 558, 559, - 560, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 563, 564, 565, 566, 567, 568, 569, 570, 571, 572, + 519, 520, 521, 522, 523, 593, 594, 595, 596, 619, + 45, 47, 48, 108, 139, 148, 277, 309, 524, 525, + 526, 527, 528, 529, 530, 45, 53, 54, 138, 140, + 276, 312, 531, 532, 533, 534, 535, 536, 45, 81, + 82, 106, 180, 181, 220, 315, 545, 546, 547, 548, + 549, 550, 551, 45, 261, 263, 264, 265, 266, 267, + 273, 318, 537, 538, 539, 540, 541, 542, 543, 544, + 291, 292, 293, 294, 295, 319, 320, 321, 322, 323, + 326, 537, 538, 539, 540, 541, 97, 98, 99, 100, + 101, 102, 103, 104, 554, 555, 556, 557, 558, 559, + 560, 561, 562, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 113, 585, 586, 297, 589, 590, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 597, 598, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 254, 255, 256, - 257, 258, 259, 610, 611, 612, 613, 614, 615, 616, - 287, 288, 620, 621, 622, 10, 10, 10, 10, 10, + 583, 584, 113, 587, 588, 297, 591, 592, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 599, 600, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 254, + 255, 256, 257, 258, 259, 612, 613, 614, 615, 616, + 617, 618, 287, 288, 622, 623, 624, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -2024,41 +2027,41 @@ 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 299, 300, 300, 301, 301, 301, 301, 301, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 302, 303, - 304, 304, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 307, 308, 308, 308, 308, - 308, 308, 308, 309, 310, 310, 311, 311, 311, 311, - 311, 311, 312, 313, 313, 314, 314, 314, 314, 314, - 314, 314, 315, 316, 316, 317, 317, 317, 317, 317, - 317, 317, 317, 318, 319, 320, 321, 322, 323, 324, - 324, 325, 325, 325, 325, 325, 325, 325, 325, 325, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 300, 301, 301, 302, 302, 302, 302, 302, 302, + 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, + 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 307, 308, 308, 309, 309, 309, + 309, 309, 309, 309, 310, 311, 311, 312, 312, 312, + 312, 312, 312, 313, 314, 314, 315, 315, 315, 315, + 315, 315, 315, 316, 317, 317, 318, 318, 318, 318, + 318, 318, 318, 318, 319, 320, 321, 322, 323, 324, + 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, + 326, 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, @@ -2080,19 +2083,19 @@ static const yytype_int16 yyr1[] = 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, 551, 552, 552, - 552, 552, 552, 552, 552, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 562, 563, 563, 563, - 563, 563, 563, 563, 563, 563, 563, 563, 563, 563, - 563, 563, 563, 563, 563, 563, 564, 565, 566, 567, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 553, + 554, 554, 554, 554, 554, 554, 554, 554, 555, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, + 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 584, 585, 586, - 587, 588, 588, 589, 590, 591, 592, 593, 594, 595, - 596, 596, 597, 597, 597, 597, 597, 597, 597, 597, - 597, 597, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 609, 610, 610, 610, 610, 610, - 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, - 619, 620, 620, 621, 622 + 578, 579, 580, 581, 582, 583, 584, 585, 586, 586, + 587, 588, 589, 590, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 598, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 611, 612, 612, 612, + 612, 612, 612, 613, 614, 615, 616, 617, 618, 619, + 620, 621, 621, 622, 622, 623, 624 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2120,13 +2123,13 @@ 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, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2138,29 +2141,29 @@ 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, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, - 4, 4, 4, 3, 3, 2, 2, 2, 2, 2, - 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 3, 4, 4, 4, 3, 3, 2, 2, 2, 2, + 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, - 1, 2, 0, 1, 2, 2, 2, 3, 3, 1, - 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 3, 1, 2, - 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, + 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, + 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, + 1, 2, 0, 1, 1, 2, 2 }; @@ -2860,7 +2863,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2864 "util/configparser.c" +#line 2867 "util/configparser.c" break; case 19: @@ -2868,11 +2871,11 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2872 "util/configparser.c" +#line 2875 "util/configparser.c" break; - case 223: -#line 297 "./util/configparser.y" + case 224: +#line 298 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2883,11 +2886,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2887 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 233: -#line 314 "./util/configparser.y" + case 234: +#line 315 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2898,11 +2901,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2902 "util/configparser.c" +#line 2905 "util/configparser.c" break; - case 242: -#line 331 "./util/configparser.y" + case 243: +#line 332 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2915,11 +2918,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2919 "util/configparser.c" +#line 2922 "util/configparser.c" break; - case 252: -#line 350 "./util/configparser.y" + case 253: +#line 351 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2935,11 +2938,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2939 "util/configparser.c" +#line 2942 "util/configparser.c" break; - case 263: -#line 374 "./util/configparser.y" + case 264: +#line 375 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2956,11 +2959,11 @@ yyreduce: } } -#line 2960 "util/configparser.c" +#line 2963 "util/configparser.c" break; - case 264: -#line 393 "./util/configparser.y" + case 265: +#line 394 "./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 && @@ -2975,21 +2978,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2979 "util/configparser.c" +#line 2982 "util/configparser.c" break; - case 265: -#line 410 "./util/configparser.y" + case 266: +#line 411 "./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 2989 "util/configparser.c" +#line 2992 "util/configparser.c" break; - case 266: -#line 418 "./util/configparser.y" + case 267: +#line 419 "./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) @@ -2997,21 +3000,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3001 "util/configparser.c" +#line 3004 "util/configparser.c" break; - case 267: -#line 428 "./util/configparser.y" + case 268: +#line 429 "./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 3011 "util/configparser.c" +#line 3014 "util/configparser.c" break; - case 268: -#line 436 "./util/configparser.y" + case 269: +#line 437 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3027,11 +3030,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3031 "util/configparser.c" +#line 3034 "util/configparser.c" break; - case 281: -#line 459 "./util/configparser.y" + case 282: +#line 460 "./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) @@ -3039,11 +3042,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3043 "util/configparser.c" +#line 3046 "util/configparser.c" break; - case 282: -#line 468 "./util/configparser.y" + case 283: +#line 469 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3051,11 +3054,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3055 "util/configparser.c" +#line 3058 "util/configparser.c" break; - case 283: -#line 477 "./util/configparser.y" + case 284: +#line 478 "./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) @@ -3065,11 +3068,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3069 "util/configparser.c" +#line 3072 "util/configparser.c" break; - case 284: -#line 488 "./util/configparser.y" + case 285: +#line 489 "./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) @@ -3077,11 +3080,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3081 "util/configparser.c" +#line 3084 "util/configparser.c" break; - case 285: -#line 497 "./util/configparser.y" + case 286: +#line 498 "./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) @@ -3089,11 +3092,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3096 "util/configparser.c" break; - case 286: -#line 506 "./util/configparser.y" + case 287: +#line 507 "./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) @@ -3101,11 +3104,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3105 "util/configparser.c" +#line 3108 "util/configparser.c" break; - case 287: -#line 515 "./util/configparser.y" + case 288: +#line 516 "./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) @@ -3115,11 +3118,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3119 "util/configparser.c" +#line 3122 "util/configparser.c" break; - case 288: -#line 526 "./util/configparser.y" + case 289: +#line 527 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3127,11 +3130,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3131 "util/configparser.c" +#line 3134 "util/configparser.c" break; - case 289: -#line 535 "./util/configparser.y" + case 290: +#line 536 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3142,11 +3145,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3146 "util/configparser.c" +#line 3149 "util/configparser.c" break; - case 290: -#line 547 "./util/configparser.y" + case 291: +#line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3158,11 +3161,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3162 "util/configparser.c" +#line 3165 "util/configparser.c" break; - case 291: -#line 561 "./util/configparser.y" + case 292: +#line 562 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3176,11 +3179,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3180 "util/configparser.c" +#line 3183 "util/configparser.c" break; - case 292: -#line 576 "./util/configparser.y" + case 293: +#line 577 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3190,11 +3193,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3194 "util/configparser.c" +#line 3197 "util/configparser.c" break; - case 293: -#line 587 "./util/configparser.y" + case 294: +#line 588 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3210,11 +3213,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3217 "util/configparser.c" break; - case 294: -#line 604 "./util/configparser.y" + case 295: +#line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3230,11 +3233,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3234 "util/configparser.c" +#line 3237 "util/configparser.c" break; - case 295: -#line 621 "./util/configparser.y" + case 296: +#line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3250,11 +3253,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3254 "util/configparser.c" +#line 3257 "util/configparser.c" break; - case 296: -#line 638 "./util/configparser.y" + case 297: +#line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3270,11 +3273,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3277 "util/configparser.c" break; - case 297: -#line 655 "./util/configparser.y" + case 298: +#line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3288,11 +3291,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3292 "util/configparser.c" +#line 3295 "util/configparser.c" break; - case 298: -#line 670 "./util/configparser.y" + case 299: +#line 671 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3306,11 +3309,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3313 "util/configparser.c" break; - case 299: -#line 685 "./util/configparser.y" + case 300: +#line 686 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3322,11 +3325,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3326 "util/configparser.c" +#line 3329 "util/configparser.c" break; - case 300: -#line 698 "./util/configparser.y" + case 301: +#line 699 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3340,11 +3343,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3344 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 301: -#line 713 "./util/configparser.y" + case 302: +#line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3352,11 +3355,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3356 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 302: -#line 722 "./util/configparser.y" + case 303: +#line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3364,11 +3367,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3368 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 303: -#line 731 "./util/configparser.y" + case 304: +#line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3376,11 +3379,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3380 "util/configparser.c" +#line 3383 "util/configparser.c" break; - case 304: -#line 740 "./util/configparser.y" + case 305: +#line 741 "./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) @@ -3388,11 +3391,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3392 "util/configparser.c" +#line 3395 "util/configparser.c" break; - case 305: -#line 749 "./util/configparser.y" + case 306: +#line 750 "./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) @@ -3400,11 +3403,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3404 "util/configparser.c" +#line 3407 "util/configparser.c" break; - case 306: -#line 758 "./util/configparser.y" + case 307: +#line 759 "./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) @@ -3412,11 +3415,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3416 "util/configparser.c" +#line 3419 "util/configparser.c" break; - case 307: -#line 767 "./util/configparser.y" + case 308: +#line 768 "./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) @@ -3424,11 +3427,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3428 "util/configparser.c" +#line 3431 "util/configparser.c" break; - case 308: -#line 776 "./util/configparser.y" + case 309: +#line 777 "./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) @@ -3436,11 +3439,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3440 "util/configparser.c" +#line 3443 "util/configparser.c" break; - case 309: -#line 785 "./util/configparser.y" + case 310: +#line 786 "./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) @@ -3448,11 +3451,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3452 "util/configparser.c" +#line 3455 "util/configparser.c" break; - case 310: -#line 794 "./util/configparser.y" + case 311: +#line 795 "./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) @@ -3460,11 +3463,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3464 "util/configparser.c" +#line 3467 "util/configparser.c" break; - case 311: -#line 803 "./util/configparser.y" + case 312: +#line 804 "./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) @@ -3472,11 +3475,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3476 "util/configparser.c" +#line 3479 "util/configparser.c" break; - case 312: -#line 812 "./util/configparser.y" + case 313: +#line 813 "./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) @@ -3484,11 +3487,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3488 "util/configparser.c" +#line 3491 "util/configparser.c" break; - case 313: -#line 821 "./util/configparser.y" + case 314: +#line 822 "./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) @@ -3496,11 +3499,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3500 "util/configparser.c" +#line 3503 "util/configparser.c" break; - case 314: -#line 830 "./util/configparser.y" + case 315: +#line 831 "./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) @@ -3508,11 +3511,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3512 "util/configparser.c" +#line 3515 "util/configparser.c" break; - case 315: -#line 839 "./util/configparser.y" + case 316: +#line 840 "./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) @@ -3524,11 +3527,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3528 "util/configparser.c" +#line 3531 "util/configparser.c" break; - case 316: -#line 852 "./util/configparser.y" + case 317: +#line 853 "./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) @@ -3536,11 +3539,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3540 "util/configparser.c" +#line 3543 "util/configparser.c" break; - case 317: -#line 861 "./util/configparser.y" + case 318: +#line 862 "./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) @@ -3552,11 +3555,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3556 "util/configparser.c" +#line 3559 "util/configparser.c" break; - case 318: -#line 874 "./util/configparser.y" + case 319: +#line 875 "./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) @@ -3564,11 +3567,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3568 "util/configparser.c" +#line 3571 "util/configparser.c" break; - case 319: -#line 883 "./util/configparser.y" + case 320: +#line 884 "./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) @@ -3576,11 +3579,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3580 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 320: -#line 892 "./util/configparser.y" + case 321: +#line 893 "./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) @@ -3588,31 +3591,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3592 "util/configparser.c" +#line 3595 "util/configparser.c" break; - case 321: -#line 901 "./util/configparser.y" + case 322: +#line 902 "./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 3602 "util/configparser.c" +#line 3605 "util/configparser.c" break; - case 322: -#line 908 "./util/configparser.y" + case 323: +#line 909 "./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 3612 "util/configparser.c" +#line 3615 "util/configparser.c" break; - case 323: -#line 915 "./util/configparser.y" + case 324: +#line 916 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3620,21 +3623,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3624 "util/configparser.c" +#line 3627 "util/configparser.c" break; - case 324: -#line 924 "./util/configparser.y" + case 325: +#line 925 "./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 3634 "util/configparser.c" +#line 3637 "util/configparser.c" break; - case 325: -#line 931 "./util/configparser.y" + case 326: +#line 932 "./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) @@ -3642,53 +3645,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3646 "util/configparser.c" +#line 3649 "util/configparser.c" break; - case 326: -#line 940 "./util/configparser.y" + case 327: +#line 941 "./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 3657 "util/configparser.c" +#line 3660 "util/configparser.c" break; - case 327: -#line 948 "./util/configparser.y" + case 328: +#line 949 "./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 3667 "util/configparser.c" +#line 3670 "util/configparser.c" break; - case 328: -#line 955 "./util/configparser.y" + case 329: +#line 956 "./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 3677 "util/configparser.c" +#line 3680 "util/configparser.c" break; - case 329: -#line 962 "./util/configparser.y" + case 330: +#line 963 "./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 3688 "util/configparser.c" +#line 3691 "util/configparser.c" break; - case 330: -#line 970 "./util/configparser.y" + case 331: +#line 971 "./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) @@ -3696,22 +3699,22 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3700 "util/configparser.c" +#line 3703 "util/configparser.c" break; - case 331: -#line 979 "./util/configparser.y" + case 332: +#line 980 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); } -#line 3711 "util/configparser.c" +#line 3714 "util/configparser.c" break; - case 332: -#line 986 "./util/configparser.y" + case 333: +#line 987 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3727,11 +3730,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3731 "util/configparser.c" +#line 3734 "util/configparser.c" break; - case 333: -#line 1002 "./util/configparser.y" + case 334: +#line 1003 "./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) @@ -3739,11 +3742,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3743 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 334: -#line 1010 "./util/configparser.y" + case 335: +#line 1011 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3751,11 +3754,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3755 "util/configparser.c" +#line 3758 "util/configparser.c" break; - case 335: -#line 1018 "./util/configparser.y" + case 336: +#line 1019 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3763,11 +3766,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3767 "util/configparser.c" +#line 3770 "util/configparser.c" break; - case 336: -#line 1026 "./util/configparser.y" + case 337: +#line 1027 "./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) @@ -3775,11 +3778,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3779 "util/configparser.c" +#line 3782 "util/configparser.c" break; - case 337: -#line 1034 "./util/configparser.y" + case 338: +#line 1035 "./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) @@ -3787,11 +3790,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3791 "util/configparser.c" +#line 3794 "util/configparser.c" break; - case 338: -#line 1043 "./util/configparser.y" + case 339: +#line 1044 "./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) @@ -3799,11 +3802,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3803 "util/configparser.c" +#line 3806 "util/configparser.c" break; - case 339: -#line 1052 "./util/configparser.y" + case 340: +#line 1053 "./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) @@ -3816,11 +3819,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3820 "util/configparser.c" +#line 3823 "util/configparser.c" break; - case 340: -#line 1066 "./util/configparser.y" + case 341: +#line 1067 "./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) @@ -3828,11 +3831,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3832 "util/configparser.c" +#line 3835 "util/configparser.c" break; - case 341: -#line 1075 "./util/configparser.y" + case 342: +#line 1076 "./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) @@ -3840,11 +3843,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3844 "util/configparser.c" +#line 3847 "util/configparser.c" break; - case 342: -#line 1084 "./util/configparser.y" + case 343: +#line 1085 "./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) @@ -3852,11 +3855,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3856 "util/configparser.c" +#line 3859 "util/configparser.c" break; - case 343: -#line 1093 "./util/configparser.y" + case 344: +#line 1094 "./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) @@ -3864,11 +3867,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3868 "util/configparser.c" +#line 3871 "util/configparser.c" break; - case 344: -#line 1102 "./util/configparser.y" + case 345: +#line 1103 "./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) @@ -3876,11 +3879,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3880 "util/configparser.c" +#line 3883 "util/configparser.c" break; - case 345: -#line 1111 "./util/configparser.y" + case 346: +#line 1112 "./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) @@ -3888,31 +3891,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3892 "util/configparser.c" +#line 3895 "util/configparser.c" break; - case 346: -#line 1120 "./util/configparser.y" + case 347: +#line 1121 "./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 3902 "util/configparser.c" +#line 3905 "util/configparser.c" break; - case 347: -#line 1127 "./util/configparser.y" + case 348: +#line 1128 "./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 3912 "util/configparser.c" +#line 3915 "util/configparser.c" break; - case 348: -#line 1134 "./util/configparser.y" + case 349: +#line 1135 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3937,105 +3940,105 @@ yyreduce: } } } -#line 3941 "util/configparser.c" +#line 3944 "util/configparser.c" break; - case 349: -#line 1160 "./util/configparser.y" + case 350: +#line 1161 "./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 3952 "util/configparser.c" +#line 3955 "util/configparser.c" break; - case 350: -#line 1168 "./util/configparser.y" + case 351: +#line 1169 "./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 3962 "util/configparser.c" +#line 3965 "util/configparser.c" break; - case 351: -#line 1175 "./util/configparser.y" + case 352: +#line 1176 "./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 3972 "util/configparser.c" +#line 3975 "util/configparser.c" break; - case 352: -#line 1182 "./util/configparser.y" + case 353: +#line 1183 "./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 3982 "util/configparser.c" +#line 3985 "util/configparser.c" break; - case 353: -#line 1189 "./util/configparser.y" + case 354: +#line 1190 "./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 3992 "util/configparser.c" +#line 3995 "util/configparser.c" break; - case 354: -#line 1196 "./util/configparser.y" + case 355: +#line 1197 "./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 4003 "util/configparser.c" +#line 4006 "util/configparser.c" break; - case 355: -#line 1204 "./util/configparser.y" + case 356: +#line 1205 "./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 4014 "util/configparser.c" +#line 4017 "util/configparser.c" break; - case 356: -#line 1212 "./util/configparser.y" + case 357: +#line 1213 "./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 4025 "util/configparser.c" +#line 4028 "util/configparser.c" break; - case 357: -#line 1220 "./util/configparser.y" + case 358: +#line 1221 "./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 4035 "util/configparser.c" +#line 4038 "util/configparser.c" break; - case 358: -#line 1227 "./util/configparser.y" + case 359: +#line 1228 "./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) @@ -4045,11 +4048,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4049 "util/configparser.c" +#line 4052 "util/configparser.c" break; - case 359: -#line 1238 "./util/configparser.y" + case 360: +#line 1239 "./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) @@ -4059,21 +4062,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" +#line 4066 "util/configparser.c" break; - case 360: -#line 1249 "./util/configparser.y" + case 361: +#line 1250 "./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 4073 "util/configparser.c" +#line 4076 "util/configparser.c" break; - case 361: -#line 1256 "./util/configparser.y" + case 362: +#line 1257 "./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) @@ -4081,11 +4084,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4085 "util/configparser.c" +#line 4088 "util/configparser.c" break; - case 362: -#line 1265 "./util/configparser.y" + case 363: +#line 1266 "./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) @@ -4093,11 +4096,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4097 "util/configparser.c" +#line 4100 "util/configparser.c" break; - case 363: -#line 1274 "./util/configparser.y" + case 364: +#line 1275 "./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) @@ -4105,53 +4108,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4109 "util/configparser.c" +#line 4112 "util/configparser.c" break; - case 364: -#line 1283 "./util/configparser.y" + case 365: +#line 1284 "./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 4119 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 365: -#line 1290 "./util/configparser.y" + case 366: +#line 1291 "./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 4129 "util/configparser.c" +#line 4132 "util/configparser.c" break; - case 366: -#line 1297 "./util/configparser.y" + case 367: +#line 1298 "./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 4140 "util/configparser.c" +#line 4143 "util/configparser.c" break; - case 367: -#line 1305 "./util/configparser.y" + case 368: +#line 1306 "./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 4151 "util/configparser.c" +#line 4154 "util/configparser.c" break; - case 368: -#line 1313 "./util/configparser.y" + case 369: +#line 1314 "./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) @@ -4160,11 +4163,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4164 "util/configparser.c" +#line 4167 "util/configparser.c" break; - case 369: -#line 1323 "./util/configparser.y" + case 370: +#line 1324 "./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) @@ -4173,11 +4176,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4177 "util/configparser.c" +#line 4180 "util/configparser.c" break; - case 370: -#line 1333 "./util/configparser.y" + case 371: +#line 1334 "./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) @@ -4186,11 +4189,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4190 "util/configparser.c" +#line 4193 "util/configparser.c" break; - case 371: -#line 1343 "./util/configparser.y" + case 372: +#line 1344 "./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) @@ -4203,22 +4206,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4207 "util/configparser.c" +#line 4210 "util/configparser.c" break; - case 372: -#line 1357 "./util/configparser.y" + case 373: +#line 1358 "./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 4218 "util/configparser.c" +#line 4221 "util/configparser.c" break; - case 373: -#line 1365 "./util/configparser.y" + case 374: +#line 1366 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4230,11 +4233,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4237 "util/configparser.c" break; - case 374: -#line 1378 "./util/configparser.y" + case 375: +#line 1379 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4244,22 +4247,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4251 "util/configparser.c" break; - case 375: -#line 1389 "./util/configparser.y" + case 376: +#line 1390 "./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 4259 "util/configparser.c" +#line 4262 "util/configparser.c" break; - case 376: -#line 1397 "./util/configparser.y" + case 377: +#line 1398 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4271,11 +4274,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4275 "util/configparser.c" +#line 4278 "util/configparser.c" break; - case 377: -#line 1410 "./util/configparser.y" + case 378: +#line 1411 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4283,11 +4286,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4290 "util/configparser.c" break; - case 378: -#line 1419 "./util/configparser.y" + case 379: +#line 1420 "./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) @@ -4295,11 +4298,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4299 "util/configparser.c" +#line 4302 "util/configparser.c" break; - case 379: -#line 1428 "./util/configparser.y" + case 380: +#line 1429 "./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) @@ -4307,11 +4310,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4311 "util/configparser.c" +#line 4314 "util/configparser.c" break; - case 380: -#line 1437 "./util/configparser.y" + case 381: +#line 1438 "./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) @@ -4320,11 +4323,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4327 "util/configparser.c" break; - case 381: -#line 1447 "./util/configparser.y" + case 382: +#line 1448 "./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) @@ -4333,22 +4336,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4337 "util/configparser.c" +#line 4340 "util/configparser.c" break; - case 382: -#line 1457 "./util/configparser.y" + case 383: +#line 1458 "./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 4348 "util/configparser.c" +#line 4351 "util/configparser.c" break; - case 383: -#line 1465 "./util/configparser.y" + case 384: +#line 1466 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4360,11 +4363,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4364 "util/configparser.c" +#line 4367 "util/configparser.c" break; - case 384: -#line 1478 "./util/configparser.y" + case 385: +#line 1479 "./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) @@ -4372,22 +4375,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4376 "util/configparser.c" +#line 4379 "util/configparser.c" break; - case 385: -#line 1487 "./util/configparser.y" + case 386: +#line 1488 "./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 4387 "util/configparser.c" +#line 4390 "util/configparser.c" break; - case 386: -#line 1495 "./util/configparser.y" + case 387: +#line 1496 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4395,22 +4398,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 387: -#line 1504 "./util/configparser.y" + case 388: +#line 1505 "./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 4410 "util/configparser.c" +#line 4413 "util/configparser.c" break; - case 388: -#line 1512 "./util/configparser.y" + case 389: +#line 1513 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4422,11 +4425,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4426 "util/configparser.c" +#line 4429 "util/configparser.c" break; - case 389: -#line 1525 "./util/configparser.y" + case 390: +#line 1526 "./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) @@ -4434,21 +4437,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4438 "util/configparser.c" +#line 4441 "util/configparser.c" break; - case 390: -#line 1534 "./util/configparser.y" + case 391: +#line 1535 "./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 4448 "util/configparser.c" +#line 4451 "util/configparser.c" break; - case 391: -#line 1541 "./util/configparser.y" + case 392: +#line 1542 "./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) @@ -4457,11 +4460,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4461 "util/configparser.c" +#line 4464 "util/configparser.c" break; - case 392: -#line 1551 "./util/configparser.y" + case 393: +#line 1552 "./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) @@ -4470,11 +4473,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4477 "util/configparser.c" break; - case 393: -#line 1561 "./util/configparser.y" + case 394: +#line 1562 "./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) @@ -4483,11 +4486,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4487 "util/configparser.c" +#line 4490 "util/configparser.c" break; - case 394: -#line 1571 "./util/configparser.y" + case 395: +#line 1572 "./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) @@ -4496,11 +4499,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4500 "util/configparser.c" +#line 4503 "util/configparser.c" break; - case 395: -#line 1581 "./util/configparser.y" + case 396: +#line 1582 "./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) @@ -4509,11 +4512,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4513 "util/configparser.c" +#line 4516 "util/configparser.c" break; - case 396: -#line 1591 "./util/configparser.y" + case 397: +#line 1592 "./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) @@ -4522,11 +4525,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4526 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 397: -#line 1601 "./util/configparser.y" + case 398: +#line 1602 "./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) @@ -4535,11 +4538,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" +#line 4542 "util/configparser.c" break; - case 398: -#line 1611 "./util/configparser.y" + case 399: +#line 1612 "./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) @@ -4548,41 +4551,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4552 "util/configparser.c" +#line 4555 "util/configparser.c" break; - case 399: -#line 1621 "./util/configparser.y" + case 400: +#line 1622 "./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 4562 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 400: -#line 1628 "./util/configparser.y" + case 401: +#line 1629 "./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 4572 "util/configparser.c" +#line 4575 "util/configparser.c" break; - case 401: -#line 1635 "./util/configparser.y" + case 402: +#line 1636 "./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 4582 "util/configparser.c" +#line 4585 "util/configparser.c" break; - case 402: -#line 1642 "./util/configparser.y" + case 403: +#line 1643 "./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) @@ -4590,11 +4593,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4597 "util/configparser.c" break; - case 403: -#line 1651 "./util/configparser.y" + case 404: +#line 1652 "./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) @@ -4602,11 +4605,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4609 "util/configparser.c" break; - case 404: -#line 1660 "./util/configparser.y" + case 405: +#line 1661 "./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) @@ -4614,11 +4617,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4621 "util/configparser.c" break; - case 405: -#line 1669 "./util/configparser.y" + case 406: +#line 1670 "./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) @@ -4626,21 +4629,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4633 "util/configparser.c" break; - case 406: -#line 1678 "./util/configparser.y" + case 407: +#line 1679 "./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 4640 "util/configparser.c" +#line 4643 "util/configparser.c" break; - case 407: -#line 1685 "./util/configparser.y" + case 408: +#line 1686 "./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) @@ -4649,11 +4652,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" +#line 4656 "util/configparser.c" break; - case 408: -#line 1695 "./util/configparser.y" + case 409: +#line 1696 "./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 && @@ -4672,21 +4675,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4676 "util/configparser.c" +#line 4679 "util/configparser.c" break; - case 409: -#line 1715 "./util/configparser.y" + case 410: +#line 1716 "./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 4686 "util/configparser.c" +#line 4689 "util/configparser.c" break; - case 410: -#line 1722 "./util/configparser.y" + case 411: +#line 1723 "./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) { @@ -4703,11 +4706,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4707 "util/configparser.c" +#line 4710 "util/configparser.c" break; - case 411: -#line 1740 "./util/configparser.y" + case 412: +#line 1741 "./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) { @@ -4719,11 +4722,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4723 "util/configparser.c" +#line 4726 "util/configparser.c" break; - case 412: -#line 1753 "./util/configparser.y" + case 413: +#line 1754 "./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) { @@ -4735,11 +4738,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4742 "util/configparser.c" break; - case 413: -#line 1766 "./util/configparser.y" + case 414: +#line 1767 "./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) @@ -4747,11 +4750,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4754 "util/configparser.c" break; - case 414: -#line 1775 "./util/configparser.y" + case 415: +#line 1776 "./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) @@ -4759,11 +4762,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4763 "util/configparser.c" +#line 4766 "util/configparser.c" break; - case 415: -#line 1784 "./util/configparser.y" + case 416: +#line 1785 "./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) @@ -4771,11 +4774,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4775 "util/configparser.c" +#line 4778 "util/configparser.c" break; - case 416: -#line 1793 "./util/configparser.y" + case 417: +#line 1794 "./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) @@ -4783,11 +4786,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4787 "util/configparser.c" +#line 4790 "util/configparser.c" break; - case 417: -#line 1802 "./util/configparser.y" + case 418: +#line 1803 "./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) @@ -4796,11 +4799,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4800 "util/configparser.c" +#line 4803 "util/configparser.c" break; - case 418: -#line 1812 "./util/configparser.y" + case 419: +#line 1813 "./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) @@ -4809,11 +4812,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4813 "util/configparser.c" +#line 4816 "util/configparser.c" break; - case 419: -#line 1822 "./util/configparser.y" + case 420: +#line 1823 "./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) @@ -4823,11 +4826,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4827 "util/configparser.c" +#line 4830 "util/configparser.c" break; - case 420: -#line 1833 "./util/configparser.y" + case 421: +#line 1834 "./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) @@ -4835,11 +4838,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4839 "util/configparser.c" +#line 4842 "util/configparser.c" break; - case 421: -#line 1842 "./util/configparser.y" + case 422: +#line 1843 "./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) @@ -4847,11 +4850,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 422: -#line 1851 "./util/configparser.y" + case 423: +#line 1852 "./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) @@ -4859,11 +4862,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4866 "util/configparser.c" break; - case 423: -#line 1860 "./util/configparser.y" + case 424: +#line 1861 "./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) @@ -4871,11 +4874,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 424: -#line 1869 "./util/configparser.y" + case 425: +#line 1870 "./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) @@ -4883,11 +4886,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4887 "util/configparser.c" +#line 4890 "util/configparser.c" break; - case 425: -#line 1878 "./util/configparser.y" + case 426: +#line 1879 "./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) @@ -4895,11 +4898,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 426: -#line 1887 "./util/configparser.y" + case 427: +#line 1888 "./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) @@ -4911,11 +4914,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4918 "util/configparser.c" break; - case 427: -#line 1900 "./util/configparser.y" + case 428: +#line 1901 "./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) @@ -4927,11 +4930,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4931 "util/configparser.c" +#line 4934 "util/configparser.c" break; - case 428: -#line 1913 "./util/configparser.y" + case 429: +#line 1914 "./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) @@ -4939,21 +4942,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4943 "util/configparser.c" +#line 4946 "util/configparser.c" break; - case 429: -#line 1922 "./util/configparser.y" + case 430: +#line 1923 "./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 4953 "util/configparser.c" +#line 4956 "util/configparser.c" break; - case 430: -#line 1929 "./util/configparser.y" + case 431: +#line 1930 "./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) @@ -4961,11 +4964,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4965 "util/configparser.c" +#line 4968 "util/configparser.c" break; - case 431: -#line 1938 "./util/configparser.y" + case 432: +#line 1939 "./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) @@ -4973,11 +4976,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4977 "util/configparser.c" +#line 4980 "util/configparser.c" break; - case 432: -#line 1947 "./util/configparser.y" + case 433: +#line 1948 "./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) @@ -4985,11 +4988,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4989 "util/configparser.c" +#line 4992 "util/configparser.c" break; - case 433: -#line 1956 "./util/configparser.y" + case 434: +#line 1957 "./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) @@ -4998,22 +5001,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5002 "util/configparser.c" +#line 5005 "util/configparser.c" break; - case 434: -#line 1965 "./util/configparser.y" + case 435: +#line 1966 "./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 5013 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 435: -#line 1973 "./util/configparser.y" + case 436: +#line 1974 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5025,22 +5028,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5029 "util/configparser.c" +#line 5032 "util/configparser.c" break; - case 436: -#line 1986 "./util/configparser.y" + case 437: +#line 1987 "./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 5040 "util/configparser.c" +#line 5043 "util/configparser.c" break; - case 437: -#line 1994 "./util/configparser.y" + case 438: +#line 1995 "./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 && @@ -5080,21 +5083,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5084 "util/configparser.c" +#line 5087 "util/configparser.c" break; - case 438: -#line 2035 "./util/configparser.y" + case 439: +#line 2036 "./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 5094 "util/configparser.c" +#line 5097 "util/configparser.c" break; - case 439: -#line 2042 "./util/configparser.y" + case 440: +#line 2043 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5108,11 +5111,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5112 "util/configparser.c" +#line 5115 "util/configparser.c" break; - case 440: -#line 2057 "./util/configparser.y" + case 441: +#line 2058 "./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) @@ -5121,11 +5124,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5125 "util/configparser.c" +#line 5128 "util/configparser.c" break; - case 441: -#line 2067 "./util/configparser.y" + case 442: +#line 2068 "./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) @@ -5134,41 +5137,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5138 "util/configparser.c" +#line 5141 "util/configparser.c" break; - case 442: -#line 2077 "./util/configparser.y" + case 443: +#line 2078 "./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 5148 "util/configparser.c" +#line 5151 "util/configparser.c" break; - case 443: -#line 2084 "./util/configparser.y" + case 444: +#line 2085 "./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 5158 "util/configparser.c" +#line 5161 "util/configparser.c" break; - case 444: -#line 2091 "./util/configparser.y" + case 445: +#line 2092 "./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 5168 "util/configparser.c" +#line 5171 "util/configparser.c" break; - case 445: -#line 2098 "./util/configparser.y" + case 446: +#line 2099 "./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) @@ -5176,22 +5179,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5180 "util/configparser.c" +#line 5183 "util/configparser.c" break; - case 446: -#line 2107 "./util/configparser.y" + case 447: +#line 2108 "./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 5191 "util/configparser.c" +#line 5194 "util/configparser.c" break; - case 447: -#line 2115 "./util/configparser.y" + case 448: +#line 2116 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5204,11 +5207,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5208 "util/configparser.c" +#line 5211 "util/configparser.c" break; - case 448: -#line 2129 "./util/configparser.y" + case 449: +#line 2130 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5228,11 +5231,11 @@ yyreduce: } } } -#line 5232 "util/configparser.c" +#line 5235 "util/configparser.c" break; - case 449: -#line 2150 "./util/configparser.y" + case 450: +#line 2151 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5252,11 +5255,11 @@ yyreduce: } } } -#line 5256 "util/configparser.c" +#line 5259 "util/configparser.c" break; - case 450: -#line 2171 "./util/configparser.y" + case 451: +#line 2172 "./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, @@ -5267,11 +5270,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5271 "util/configparser.c" +#line 5274 "util/configparser.c" break; - case 451: -#line 2183 "./util/configparser.y" + case 452: +#line 2184 "./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, @@ -5282,11 +5285,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5286 "util/configparser.c" +#line 5289 "util/configparser.c" break; - case 452: -#line 2195 "./util/configparser.y" + case 453: +#line 2196 "./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, @@ -5297,11 +5300,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5301 "util/configparser.c" +#line 5304 "util/configparser.c" break; - case 453: -#line 2207 "./util/configparser.y" + case 454: +#line 2208 "./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, @@ -5309,11 +5312,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5313 "util/configparser.c" +#line 5316 "util/configparser.c" break; - case 454: -#line 2216 "./util/configparser.y" + case 455: +#line 2217 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5333,11 +5336,11 @@ yyreduce: } } } -#line 5337 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 455: -#line 2237 "./util/configparser.y" + case 456: +#line 2238 "./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) @@ -5345,11 +5348,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5352 "util/configparser.c" break; - case 456: -#line 2247 "./util/configparser.y" + case 457: +#line 2248 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5357,33 +5360,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 5364 "util/configparser.c" break; - case 457: -#line 2256 "./util/configparser.y" + case 458: +#line 2257 "./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 5372 "util/configparser.c" +#line 5375 "util/configparser.c" break; - case 458: -#line 2264 "./util/configparser.y" + case 459: +#line 2265 "./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 5383 "util/configparser.c" +#line 5386 "util/configparser.c" break; - case 459: -#line 2272 "./util/configparser.y" + case 460: +#line 2273 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5395,11 +5398,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5399 "util/configparser.c" +#line 5402 "util/configparser.c" break; - case 460: -#line 2285 "./util/configparser.y" + case 461: +#line 2286 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5411,11 +5414,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5415 "util/configparser.c" +#line 5418 "util/configparser.c" break; - case 461: -#line 2298 "./util/configparser.y" + case 462: +#line 2299 "./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) { @@ -5429,11 +5432,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5433 "util/configparser.c" +#line 5436 "util/configparser.c" break; - case 462: -#line 2313 "./util/configparser.y" + case 463: +#line 2314 "./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) { @@ -5447,11 +5450,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5451 "util/configparser.c" +#line 5454 "util/configparser.c" break; - case 463: -#line 2328 "./util/configparser.y" + case 464: +#line 2329 "./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) @@ -5459,11 +5462,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5463 "util/configparser.c" +#line 5466 "util/configparser.c" break; - case 464: -#line 2337 "./util/configparser.y" + case 465: +#line 2338 "./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) @@ -5471,20 +5474,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5475 "util/configparser.c" +#line 5478 "util/configparser.c" break; - case 465: -#line 2346 "./util/configparser.y" + case 466: +#line 2347 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5484 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 466: -#line 2352 "./util/configparser.y" + case 467: +#line 2353 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5492,11 +5495,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5496 "util/configparser.c" +#line 5499 "util/configparser.c" break; - case 467: -#line 2361 "./util/configparser.y" + case 468: +#line 2362 "./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) @@ -5504,11 +5507,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5508 "util/configparser.c" +#line 5511 "util/configparser.c" break; - case 468: -#line 2370 "./util/configparser.y" + case 469: +#line 2371 "./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) @@ -5517,11 +5520,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5521 "util/configparser.c" +#line 5524 "util/configparser.c" break; - case 469: -#line 2380 "./util/configparser.y" + case 470: +#line 2381 "./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) @@ -5530,11 +5533,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5534 "util/configparser.c" +#line 5537 "util/configparser.c" break; - case 470: -#line 2390 "./util/configparser.y" + case 471: +#line 2391 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5546,11 +5549,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5553 "util/configparser.c" break; - case 471: -#line 2403 "./util/configparser.y" + case 472: +#line 2404 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5562,11 +5565,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5566 "util/configparser.c" +#line 5569 "util/configparser.c" break; - case 472: -#line 2416 "./util/configparser.y" + case 473: +#line 2417 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5577,11 +5580,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5581 "util/configparser.c" +#line 5584 "util/configparser.c" break; - case 473: -#line 2428 "./util/configparser.y" + case 474: +#line 2429 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5594,11 +5597,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5598 "util/configparser.c" +#line 5601 "util/configparser.c" break; - case 474: -#line 2442 "./util/configparser.y" + case 475: +#line 2443 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5609,11 +5612,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5613 "util/configparser.c" +#line 5616 "util/configparser.c" break; - case 475: -#line 2454 "./util/configparser.y" + case 476: +#line 2455 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5626,11 +5629,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5630 "util/configparser.c" +#line 5633 "util/configparser.c" break; - case 476: -#line 2468 "./util/configparser.y" + case 477: +#line 2469 "./util/configparser.y" { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5644,11 +5647,25 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5648 "util/configparser.c" +#line 5651 "util/configparser.c" break; - case 477: -#line 2483 "./util/configparser.y" + case 478: +#line 2484 "./util/configparser.y" + { + OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); + if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) + yyerror("option code expected"); + else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) + yyerror("option code must be in interval [0, 65535]"); + else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); + + } +#line 5665 "util/configparser.c" + break; + + case 479: +#line 2495 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5657,31 +5674,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5661 "util/configparser.c" +#line 5678 "util/configparser.c" break; - case 478: -#line 2493 "./util/configparser.y" + case 480: +#line 2505 "./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 5671 "util/configparser.c" +#line 5688 "util/configparser.c" break; - case 479: -#line 2500 "./util/configparser.y" + case 481: +#line 2512 "./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 5681 "util/configparser.c" +#line 5698 "util/configparser.c" break; - case 480: -#line 2507 "./util/configparser.y" + case 482: +#line 2519 "./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) @@ -5689,11 +5706,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5693 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 481: -#line 2516 "./util/configparser.y" + case 483: +#line 2528 "./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) @@ -5701,11 +5718,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5705 "util/configparser.c" +#line 5722 "util/configparser.c" break; - case 482: -#line 2525 "./util/configparser.y" + case 484: +#line 2537 "./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) @@ -5714,11 +5731,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5718 "util/configparser.c" +#line 5735 "util/configparser.c" break; - case 483: -#line 2535 "./util/configparser.y" + case 485: +#line 2547 "./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) @@ -5727,11 +5744,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5731 "util/configparser.c" +#line 5748 "util/configparser.c" break; - case 484: -#line 2545 "./util/configparser.y" + case 486: +#line 2557 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5740,31 +5757,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5744 "util/configparser.c" +#line 5761 "util/configparser.c" break; - case 485: -#line 2555 "./util/configparser.y" + case 487: +#line 2567 "./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 5754 "util/configparser.c" +#line 5771 "util/configparser.c" break; - case 486: -#line 2562 "./util/configparser.y" + case 488: +#line 2574 "./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 5764 "util/configparser.c" +#line 5781 "util/configparser.c" break; - case 487: -#line 2569 "./util/configparser.y" + case 489: +#line 2581 "./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) @@ -5772,11 +5789,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5776 "util/configparser.c" +#line 5793 "util/configparser.c" break; - case 488: -#line 2578 "./util/configparser.y" + case 490: +#line 2590 "./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) @@ -5784,11 +5801,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5788 "util/configparser.c" +#line 5805 "util/configparser.c" break; - case 489: -#line 2587 "./util/configparser.y" + case 491: +#line 2599 "./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) @@ -5797,11 +5814,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5801 "util/configparser.c" +#line 5818 "util/configparser.c" break; - case 490: -#line 2597 "./util/configparser.y" + case 492: +#line 2609 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5810,52 +5827,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5814 "util/configparser.c" +#line 5831 "util/configparser.c" break; - case 491: -#line 2607 "./util/configparser.y" + case 493: +#line 2619 "./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 5824 "util/configparser.c" +#line 5841 "util/configparser.c" break; - case 492: -#line 2614 "./util/configparser.y" + case 494: +#line 2626 "./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 5834 "util/configparser.c" +#line 5851 "util/configparser.c" break; - case 493: -#line 2621 "./util/configparser.y" + case 495: +#line 2633 "./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 5844 "util/configparser.c" +#line 5861 "util/configparser.c" break; - case 494: -#line 2628 "./util/configparser.y" + case 496: +#line 2640 "./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 5855 "util/configparser.c" +#line 5872 "util/configparser.c" break; - case 495: -#line 2636 "./util/configparser.y" + case 497: +#line 2648 "./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) @@ -5864,11 +5881,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5868 "util/configparser.c" +#line 5885 "util/configparser.c" break; - case 496: -#line 2646 "./util/configparser.y" + case 498: +#line 2658 "./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) @@ -5877,11 +5894,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5881 "util/configparser.c" +#line 5898 "util/configparser.c" break; - case 497: -#line 2656 "./util/configparser.y" + case 499: +#line 2668 "./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) @@ -5890,11 +5907,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5894 "util/configparser.c" +#line 5911 "util/configparser.c" break; - case 498: -#line 2666 "./util/configparser.y" + case 500: +#line 2678 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5903,11 +5920,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5907 "util/configparser.c" +#line 5924 "util/configparser.c" break; - case 499: -#line 2676 "./util/configparser.y" + case 501: +#line 2688 "./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 && @@ -5945,11 +5962,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5949 "util/configparser.c" +#line 5966 "util/configparser.c" break; - case 500: -#line 2715 "./util/configparser.y" + case 502: +#line 2727 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5958,33 +5975,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5962 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 501: -#line 2725 "./util/configparser.y" + case 503: +#line 2737 "./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 5973 "util/configparser.c" +#line 5990 "util/configparser.c" break; - case 502: -#line 2733 "./util/configparser.y" + case 504: +#line 2745 "./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 5984 "util/configparser.c" +#line 6001 "util/configparser.c" break; - case 503: -#line 2741 "./util/configparser.y" + case 505: +#line 2753 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5998,11 +6015,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6002 "util/configparser.c" +#line 6019 "util/configparser.c" break; - case 504: -#line 2756 "./util/configparser.y" + case 506: +#line 2768 "./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) @@ -6010,19 +6027,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6014 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 505: -#line 2765 "./util/configparser.y" + case 507: +#line 2777 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6022 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 516: -#line 2776 "./util/configparser.y" + case 518: +#line 2788 "./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) @@ -6031,11 +6048,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6035 "util/configparser.c" +#line 6052 "util/configparser.c" break; - case 517: -#line 2786 "./util/configparser.y" + case 519: +#line 2798 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6043,79 +6060,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6047 "util/configparser.c" +#line 6064 "util/configparser.c" break; - case 518: -#line 2795 "./util/configparser.y" + case 520: +#line 2807 "./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 6057 "util/configparser.c" +#line 6074 "util/configparser.c" break; - case 519: -#line 2802 "./util/configparser.y" + case 521: +#line 2814 "./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 6067 "util/configparser.c" +#line 6084 "util/configparser.c" break; - case 520: -#line 2809 "./util/configparser.y" + case 522: +#line 2821 "./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 6077 "util/configparser.c" +#line 6094 "util/configparser.c" break; - case 521: -#line 2816 "./util/configparser.y" + case 523: +#line 2828 "./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 6087 "util/configparser.c" +#line 6104 "util/configparser.c" break; - case 522: -#line 2823 "./util/configparser.y" + case 524: +#line 2835 "./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 6097 "util/configparser.c" +#line 6114 "util/configparser.c" break; - case 523: -#line 2830 "./util/configparser.y" + case 525: +#line 2842 "./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 6107 "util/configparser.c" +#line 6124 "util/configparser.c" break; - case 524: -#line 2837 "./util/configparser.y" + case 526: +#line 2849 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6115 "util/configparser.c" +#line 6132 "util/configparser.c" break; - case 546: -#line 2857 "./util/configparser.y" + case 548: +#line 2869 "./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) @@ -6123,11 +6140,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6127 "util/configparser.c" +#line 6144 "util/configparser.c" break; - case 547: -#line 2866 "./util/configparser.y" + case 549: +#line 2878 "./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) @@ -6136,31 +6153,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6140 "util/configparser.c" +#line 6157 "util/configparser.c" break; - case 548: -#line 2876 "./util/configparser.y" + case 550: +#line 2888 "./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 6150 "util/configparser.c" +#line 6167 "util/configparser.c" break; - case 549: -#line 2883 "./util/configparser.y" + case 551: +#line 2895 "./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 6160 "util/configparser.c" +#line 6177 "util/configparser.c" break; - case 550: -#line 2890 "./util/configparser.y" + case 552: +#line 2902 "./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) @@ -6168,51 +6185,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6172 "util/configparser.c" +#line 6189 "util/configparser.c" break; - case 551: -#line 2899 "./util/configparser.y" + case 553: +#line 2911 "./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 6182 "util/configparser.c" +#line 6199 "util/configparser.c" break; - case 552: -#line 2906 "./util/configparser.y" + case 554: +#line 2918 "./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 6192 "util/configparser.c" +#line 6209 "util/configparser.c" break; - case 553: -#line 2913 "./util/configparser.y" + case 555: +#line 2925 "./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 6202 "util/configparser.c" +#line 6219 "util/configparser.c" break; - case 554: -#line 2920 "./util/configparser.y" + case 556: +#line 2932 "./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 6212 "util/configparser.c" +#line 6229 "util/configparser.c" break; - case 555: -#line 2927 "./util/configparser.y" + case 557: +#line 2939 "./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) @@ -6220,11 +6237,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6224 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 556: -#line 2936 "./util/configparser.y" + case 558: +#line 2948 "./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) @@ -6232,31 +6249,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6236 "util/configparser.c" +#line 6253 "util/configparser.c" break; - case 557: -#line 2945 "./util/configparser.y" + case 559: +#line 2957 "./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 6246 "util/configparser.c" +#line 6263 "util/configparser.c" break; - case 558: -#line 2952 "./util/configparser.y" + case 560: +#line 2964 "./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 6256 "util/configparser.c" +#line 6273 "util/configparser.c" break; - case 559: -#line 2959 "./util/configparser.y" + case 561: +#line 2971 "./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) @@ -6265,11 +6282,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6269 "util/configparser.c" +#line 6286 "util/configparser.c" break; - case 560: -#line 2969 "./util/configparser.y" + case 562: +#line 2981 "./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) @@ -6278,11 +6295,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6282 "util/configparser.c" +#line 6299 "util/configparser.c" break; - case 561: -#line 2979 "./util/configparser.y" + case 563: +#line 2991 "./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) @@ -6291,11 +6308,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6295 "util/configparser.c" +#line 6312 "util/configparser.c" break; - case 562: -#line 2989 "./util/configparser.y" + case 564: +#line 3001 "./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) @@ -6304,11 +6321,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6308 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 563: -#line 2999 "./util/configparser.y" + case 565: +#line 3011 "./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) @@ -6317,11 +6334,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6321 "util/configparser.c" +#line 6338 "util/configparser.c" break; - case 564: -#line 3009 "./util/configparser.y" + case 566: +#line 3021 "./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) @@ -6330,47 +6347,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6334 "util/configparser.c" +#line 6351 "util/configparser.c" break; - case 565: -#line 3019 "./util/configparser.y" + case 567: +#line 3031 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6342 "util/configparser.c" +#line 6359 "util/configparser.c" break; - case 569: -#line 3028 "./util/configparser.y" + case 571: +#line 3040 "./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 6352 "util/configparser.c" +#line 6369 "util/configparser.c" break; - case 570: -#line 3034 "./util/configparser.y" + case 572: +#line 3046 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6360 "util/configparser.c" +#line 6377 "util/configparser.c" break; - case 574: -#line 3043 "./util/configparser.y" + case 576: +#line 3055 "./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 6370 "util/configparser.c" +#line 6387 "util/configparser.c" break; - case 575: -#line 3049 "./util/configparser.y" + case 577: +#line 3061 "./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) @@ -6379,21 +6396,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6383 "util/configparser.c" +#line 6400 "util/configparser.c" break; - case 576: -#line 3059 "./util/configparser.y" + case 578: +#line 3071 "./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 6393 "util/configparser.c" +#line 6410 "util/configparser.c" break; - case 577: -#line 3066 "./util/configparser.y" + case 579: +#line 3078 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6401,30 +6418,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6405 "util/configparser.c" +#line 6422 "util/configparser.c" break; - case 578: -#line 3075 "./util/configparser.y" + case 580: +#line 3087 "./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 6416 "util/configparser.c" +#line 6433 "util/configparser.c" break; - case 579: -#line 3083 "./util/configparser.y" + case 581: +#line 3095 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6424 "util/configparser.c" +#line 6441 "util/configparser.c" break; - case 592: -#line 3099 "./util/configparser.y" + case 594: +#line 3111 "./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) @@ -6432,11 +6449,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6436 "util/configparser.c" +#line 6453 "util/configparser.c" break; - case 593: -#line 3109 "./util/configparser.y" + case 595: +#line 3121 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6444,21 +6461,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6448 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 594: -#line 3118 "./util/configparser.y" + case 596: +#line 3130 "./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 6458 "util/configparser.c" +#line 6475 "util/configparser.c" break; - case 595: -#line 3125 "./util/configparser.y" + case 597: +#line 3137 "./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))) @@ -6466,21 +6483,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 6470 "util/configparser.c" +#line 6487 "util/configparser.c" break; - case 596: -#line 3134 "./util/configparser.y" + case 598: +#line 3146 "./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 6480 "util/configparser.c" +#line 6497 "util/configparser.c" break; - case 597: -#line 3141 "./util/configparser.y" + case 599: +#line 3153 "./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))) @@ -6488,22 +6505,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 6492 "util/configparser.c" +#line 6509 "util/configparser.c" break; - case 598: -#line 3150 "./util/configparser.y" + case 600: +#line 3162 "./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 6503 "util/configparser.c" +#line 6520 "util/configparser.c" break; - case 599: -#line 3158 "./util/configparser.y" + case 601: +#line 3170 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6515,22 +6532,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6519 "util/configparser.c" +#line 6536 "util/configparser.c" break; - case 600: -#line 3171 "./util/configparser.y" + case 602: +#line 3183 "./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 6530 "util/configparser.c" +#line 6547 "util/configparser.c" break; - case 601: -#line 3179 "./util/configparser.y" + case 603: +#line 3191 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6542,19 +6559,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6546 "util/configparser.c" +#line 6563 "util/configparser.c" break; - case 602: -#line 3192 "./util/configparser.y" + case 604: +#line 3204 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6554 "util/configparser.c" +#line 6571 "util/configparser.c" break; - case 611: -#line 3203 "./util/configparser.y" + case 613: +#line 3215 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6565,11 +6582,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6569 "util/configparser.c" +#line 6586 "util/configparser.c" break; - case 612: -#line 3215 "./util/configparser.y" + case 614: +#line 3227 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6580,11 +6597,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6584 "util/configparser.c" +#line 6601 "util/configparser.c" break; - case 613: -#line 3227 "./util/configparser.y" + case 615: +#line 3239 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6595,11 +6612,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6599 "util/configparser.c" +#line 6616 "util/configparser.c" break; - case 614: -#line 3239 "./util/configparser.y" + case 616: +#line 3251 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6613,11 +6630,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6617 "util/configparser.c" +#line 6634 "util/configparser.c" break; - case 615: -#line 3254 "./util/configparser.y" + case 617: +#line 3266 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6629,11 +6646,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6633 "util/configparser.c" +#line 6650 "util/configparser.c" break; - case 616: -#line 3267 "./util/configparser.y" + case 618: +#line 3279 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6645,11 +6662,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6649 "util/configparser.c" +#line 6666 "util/configparser.c" break; - case 617: -#line 3280 "./util/configparser.y" + case 619: +#line 3292 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6659,19 +6676,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6663 "util/configparser.c" +#line 6680 "util/configparser.c" break; - case 618: -#line 3291 "./util/configparser.y" + case 620: +#line 3303 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6671 "util/configparser.c" +#line 6688 "util/configparser.c" break; - case 623: -#line 3300 "./util/configparser.y" + case 625: +#line 3312 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6685,11 +6702,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6689 "util/configparser.c" +#line 6706 "util/configparser.c" break; - case 624: -#line 3315 "./util/configparser.y" + case 626: +#line 3327 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6703,11 +6720,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6707 "util/configparser.c" +#line 6724 "util/configparser.c" break; -#line 6711 "util/configparser.c" +#line 6728 "util/configparser.c" default: break; } @@ -6939,7 +6956,7 @@ yyreturn: #endif return yyresult; } -#line 3329 "./util/configparser.y" +#line 3341 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index eb576e91d..3a5ea579d 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -344,7 +344,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553 + VAR_EDNS_CLIENT_TAG = 553, + VAR_EDNS_CLIENT_TAG_OPCODE = 554 }; #endif /* Tokens. */ @@ -644,6 +645,7 @@ extern int yydebug; #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 #define VAR_EDNS_CLIENT_TAG 553 +#define VAR_EDNS_CLIENT_TAG_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -653,7 +655,7 @@ union YYSTYPE char* str; -#line 657 "util/configparser.h" +#line 659 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 4419bbc7b..43a886f24 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -178,7 +178,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME -%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG +%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG VAR_EDNS_CLIENT_TAG_OPCODE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -291,7 +291,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_unknown_server_time_limit | server_log_tag_queryreply | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | - server_tls_use_sni | server_edns_client_tag + server_tls_use_sni | server_edns_client_tag | + server_edns_client_tag_opcode ; stubstart: VAR_STUB_ZONE { @@ -2479,6 +2480,17 @@ server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG "edns-client-tag"); } ; +server_edns_client_tag_opcode: VAR_EDNS_CLIENT_TAG_OPCODE STRING_ARG + { + OUTYY(("P(edns_client_tag_opcode:%s)\n", $2)); + if(atoi($2) == 0 && strcmp($2, "0") != 0) + yyerror("option code expected"); + else if(atoi($2) > 65535 || atoi($2) < 0) + yyerror("option code must be in interval [0, 65535]"); + else cfg_parser->cfg->edns_client_tag_opcode = atoi($2); + + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); diff --git a/util/edns.c b/util/edns.c index db33212c0..c83a4a545 100644 --- a/util/edns.c +++ b/util/edns.c @@ -112,6 +112,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags, return 0; } } + edns_tags->client_tag_opcode = config->edns_client_tag_opcode; addr_tree_init_parents(&edns_tags->client_tags); return 1; diff --git a/util/edns.h b/util/edns.h index c92b1ba5e..cf9f8707e 100644 --- a/util/edns.h +++ b/util/edns.h @@ -56,6 +56,8 @@ struct edns_tags { /** Tree of EDNS client tags to use in upstream queries, per address * prefix. Contains nodes of type edns_tag_addr. */ rbtree_type client_tags; + /** EDNS opcode to use for client tags */ + uint16_t client_tag_opcode; /** region to allocate tree nodes in */ struct regional* region; }; From ed6e3c0c663893a86a16631861ded05d8cb7672f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Sep 2020 13:20:25 +0200 Subject: [PATCH 210/394] - Fix #305: only wake up thread when threshold reached. --- dnstap/dtstream.c | 5 +++-- doc/Changelog | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index b0586d1ba..b0918c52c 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -258,8 +258,9 @@ dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t len) wakeupstarttimer = 1; /* if list contains more than wakeupnum elements, wakeup now, * or if list is (going to be) almost full */ - if(mq->msgcount+1 > DTIO_MSG_FOR_WAKEUP || - mq->cursize+len >= mq->maxsize * 9 / 10) + if(mq->msgcount == DTIO_MSG_FOR_WAKEUP || + (mq->cursize < mq->maxsize * 9 / 10 && + mq->cursize+len >= mq->maxsize * 9 / 10)) wakeupnow = 1; /* see if it is going to fit */ if(mq->cursize + len > mq->maxsize) { diff --git a/doc/Changelog b/doc/Changelog index e316ea99f..4cd9a8e78 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 23 September 2020: Wouter - Fix #305: dnstap logging significantly affects unbound performance (regression in 1.11). + - Fix #305: only wake up thread when threshold reached. 23 September 2020: Ralph - Fix edns-client-tags get_option typo From 3527171397ce1fd619fcce5ca53632fcc6a3aa38 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 23 Sep 2020 14:30:31 +0200 Subject: [PATCH 211/394] - Fix to ifdef fptr wlist item for dnstap. --- doc/Changelog | 1 + util/fptr_wlist.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4cd9a8e78..453607b62 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix #305: dnstap logging significantly affects unbound performance (regression in 1.11). - Fix #305: only wake up thread when threshold reached. + - Fix to ifdef fptr wlist item for dnstap. 23 September 2020: Ralph - Fix edns-client-tags get_option typo diff --git a/util/fptr_wlist.c b/util/fptr_wlist.c index 241d9e540..7d15d1075 100644 --- a/util/fptr_wlist.c +++ b/util/fptr_wlist.c @@ -138,7 +138,9 @@ fptr_whitelist_comm_timer(void (*fptr)(void*)) else if(fptr == &auth_xfer_probe_timer_callback) return 1; else if(fptr == &auth_xfer_transfer_timer_callback) return 1; else if(fptr == &mesh_serve_expired_callback) return 1; +#ifdef USE_DNSTAP else if(fptr == &mq_wakeup_cb) return 1; +#endif return 0; } From eb8ec9c18be040ad943b0d5e0bad8dc69c5abc09 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 23 Sep 2020 14:35:51 +0200 Subject: [PATCH 212/394] - Use inclusive language in configuration --- doc/Changelog | 1 + doc/example.conf.in | 48 +- doc/unbound.conf.5.in | 77 +- util/configlexer.c | 4935 +++++++++++++++++++++-------------------- util/configlexer.lex | 3 + 5 files changed, 2557 insertions(+), 2507 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 453607b62..c2176f785 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ 23 September 2020: Ralph - Fix edns-client-tags get_option typo - Add edns-client-tag-opcode option + - Use inclusive language in configuration 21 September 2020: Ralph - Fix #304: dnstap logging not recovering after dnstap process restarts diff --git a/doc/example.conf.in b/doc/example.conf.in index 8af853fb4..3213a8f8c 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -431,8 +431,8 @@ server: # Domains (and domains in them) without support for dns-0x20 and # the fallback fails because they keep sending different answers. - # caps-whitelist: "licdn.com" - # caps-whitelist: "senderbase.org" + # caps-exempt: "licdn.com" + # caps-exempt: "senderbase.org" # Enforce privacy of these addresses. Strips them away from answers. # It may cause DNSSEC validation to additionally mark it as bogus. @@ -861,9 +861,9 @@ server: # ipsecmod-ignore-bogus: no # # Domains for which ipsecmod will be triggered. If not defined (default) - # all domains are treated as being whitelisted. - # ipsecmod-whitelist: "example.com" - # ipsecmod-whitelist: "nlnetlabs.nl" + # all domains are treated as being allowed. + # ipsecmod-allow: "example.com" + # ipsecmod-allow: "nlnetlabs.nl" # Python config section. To enable: @@ -961,27 +961,27 @@ remote-control: # upstream (which saves a lookup to the upstream). The first example # has a copy of the root for local usage. The second serves example.org # authoritatively. zonefile: reads from file (and writes to it if you also -# download it), master: fetches with AXFR and IXFR, or url to zonefile. -# With allow-notify: you can give additional (apart from masters) sources of +# download it), primary: fetches with AXFR and IXFR, or url to zonefile. +# With allow-notify: you can give additional (apart from primaries) sources of # notifies. # auth-zone: # name: "." -# master: 199.9.14.201 # b.root-servers.net -# master: 192.33.4.12 # c.root-servers.net -# master: 199.7.91.13 # d.root-servers.net -# master: 192.5.5.241 # f.root-servers.net -# master: 192.112.36.4 # g.root-servers.net -# master: 193.0.14.129 # k.root-servers.net -# master: 192.0.47.132 # xfr.cjr.dns.icann.org -# master: 192.0.32.132 # xfr.lax.dns.icann.org -# master: 2001:500:200::b # b.root-servers.net -# master: 2001:500:2::c # c.root-servers.net -# master: 2001:500:2d::d # d.root-servers.net -# master: 2001:500:2f::f # f.root-servers.net -# master: 2001:500:12::d0d # g.root-servers.net -# master: 2001:7fd::1 # k.root-servers.net -# master: 2620:0:2830:202::132 # xfr.cjr.dns.icann.org -# master: 2620:0:2d0:202::132 # xfr.lax.dns.icann.org +# primary: 199.9.14.201 # b.root-servers.net +# primary: 192.33.4.12 # c.root-servers.net +# primary: 199.7.91.13 # d.root-servers.net +# primary: 192.5.5.241 # f.root-servers.net +# primary: 192.112.36.4 # g.root-servers.net +# primary: 193.0.14.129 # k.root-servers.net +# primary: 192.0.47.132 # xfr.cjr.dns.icann.org +# primary: 192.0.32.132 # xfr.lax.dns.icann.org +# primary: 2001:500:200::b # b.root-servers.net +# primary: 2001:500:2::c # c.root-servers.net +# primary: 2001:500:2d::d # d.root-servers.net +# primary: 2001:500:2f::f # f.root-servers.net +# primary: 2001:500:12::d0d # g.root-servers.net +# primary: 2001:7fd::1 # k.root-servers.net +# primary: 2620:0:2830:202::132 # xfr.cjr.dns.icann.org +# primary: 2620:0:2d0:202::132 # xfr.lax.dns.icann.org # fallback-enabled: yes # for-downstream: no # for-upstream: yes @@ -1101,7 +1101,7 @@ remote-control: # rpz: # name: "rpz.example.com" # zonefile: "rpz.example.com" -# master: 192.0.2.0 +# primary: 192.0.2.0 # allow-notify: 192.0.2.0/32 # url: http://www.example.com/rpz.example.org.zone # rpz-action-override: cname diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index f4586b1d1..dfdab90d5 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -884,12 +884,15 @@ authority servers and checks if the reply still has the correct casing. Disabled by default. This feature is an experimental implementation of draft dns\-0x20. .TP -.B caps\-whitelist: \fI -Whitelist the domain so that it does not receive caps\-for\-id perturbed +.B caps\-exempt: \fI +Exempt the domain so that it does not receive caps\-for\-id perturbed queries. For domains that do not support 0x20 and also fail with fallback because they keep sending different answers, like some load balancers. Can be given multiple times, for different domains. .TP +.B caps\-whitelist: \fI +Alternate syntax for \fBcaps\-exempt\fR. +.TP .B qname\-minimisation: \fI Send minimum amount of information to upstream servers to enhance privacy. Only send minimum required labels of the QNAME and set QTYPE to A when @@ -1744,16 +1747,16 @@ uses the SOA timer values and performs SOA UDP queries to detect zone changes. If the update fetch fails, the timers in the SOA record are used to time another fetch attempt. Until the SOA expiry timer is reached. Then the zone is expired. When a zone is expired, queries are SERVFAIL, and -any new serial number is accepted from the master (even if older), and if +any new serial number is accepted from the primary (even if older), and if fallback is enabled, the fallback activates to fetch from the upstream instead of the SERVFAIL. .TP .B name: \fI Name of the authority zone. .TP -.B master: \fI +.B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple -masters can be specified. They are all tried if one fails. +primaries can be specified. They are all tried if one fails. With the "ip#name" notation a AXFR over TLS can be used. If you point it at another Unbound instance, it would not work because that does not support AXFR/IXFR for the zone, but if you used \fBurl:\fR to download @@ -1762,27 +1765,31 @@ If you specify the hostname, you cannot use the domain from the zonefile, because it may not have that when retrieving that data, instead use a plain IP address to avoid a circular dependency on retrieving that IP address. .TP +.B master: \fI +Alternate syntax for \fBprimary\fR. +.TP .B url: \fI Where to download a zonefile for the zone. With http or https. An example for the url is "http://www.example.com/example.org.zone". Multiple url statements can be given, they are tried in turn. If only urls are given the SOA refresh timer is used to wait for making new downloads. If also -masters are listed, the masters are first probed with UDP SOA queries to +primaries are listed, the primaries are first probed with UDP SOA queries to see if the SOA serial number has changed, reducing the number of downloads. -If none of the urls work, the masters are tried with IXFR and AXFR. +If none of the urls work, the primaries are tried with IXFR and AXFR. For https, the \fBtls\-cert\-bundle\fR and the hostname from the url are used to authenticate the connection. If you specify a hostname in the URL, you cannot use the domain from the zonefile, because it may not have that when retrieving that data, instead use a plain IP address to avoid a circular dependency on retrieving that IP -address. Avoid dependencies on name lookups by using a notation like "http://192.0.2.1/unbound-master/example.com.zone", with an explicit IP address. +address. Avoid dependencies on name lookups by using a notation like +"http://192.0.2.1/unbound-primaries/example.com.zone", with an explicit IP address. .TP .B allow\-notify: \fI With allow\-notify you can specify additional sources of notifies. When notified, the server attempts to first probe and then zone transfer. -If the notify is from a master, it first attempts that master. Otherwise -other masters are attempted. If there are no masters, but only urls, the -file is downloaded when notified. The masters from master: statements are +If the notify is from a primary, it first attempts that primary. Otherwise +other primaries are attempted. If there are no primaries, but only urls, the +file is downloaded when notified. The primaries from primary: statements are allowed notify by default. .TP .B fallback\-enabled: \fI @@ -1810,7 +1817,7 @@ downstream clients, and use the zone data as a local copy to speed up lookups. .B zonefile: \fI The filename where the zone is stored. If not given then no zonefile is used. If the file does not exist or is empty, unbound will attempt to fetch zone -data (eg. from the master servers). +data (eg. from the primary servers). .SS "View Options" .LP There may be multiple @@ -1977,14 +1984,16 @@ The ECS module must be configured in the \fBmodule\-config:\fR "subnetcache validator iterator" directive and be compiled into the daemon to be enabled. These settings go in the \fBserver:\fR section. .LP -If the destination address is whitelisted with Unbound will add the EDNS0 -option to the query containing the relevant part of the client's address. When -an answer contains the ECS option the response and the option are placed in a -specialized cache. If the authority indicated no support, the response is +If the destination address is allowed in the configuration Unbound will add the +EDNS0 option to the query containing the relevant part of the client's address. +When an answer contains the ECS option the response and the option are placed in +a specialized cache. If the authority indicated no support, the response is stored in the regular cache. .LP Additionally, when a client includes the option in its queries, Unbound will -forward the option to the authority if present in the whitelist, or +forward the option when sending the query to addresses that are explicitly +allowed in the configuration using \fBsend\-client\-subnet\fR. The option will +always be forwarded, regardless the allowed addresses, if \fBclient\-subnet\-always\-forward\fR is set to yes. In this case the lookup in the regular cache is skipped. .LP @@ -2005,11 +2014,11 @@ given multiple times. Zones not listed will not receive edns-subnet information, unless hosted by authority specified in \fBsend\-client\-subnet\fR. .TP .B client\-subnet\-always\-forward: \fI\fR -Specify whether the ECS whitelist check (configured using +Specify whether the ECS address check (configured using \fBsend\-client\-subnet\fR) is applied for all queries, even if the triggering query contains an ECS record, or only for queries for which the ECS record is generated using the querier address (and therefore did not contain ECS data in -the client query). If enabled, the whitelist check is skipped when the client +the client query). If enabled, the address check is skipped when the client query contains an ECS record. Default is no. .TP .B max\-client\-subnet\-ipv6: \fI\fR @@ -2099,10 +2108,13 @@ to yes, the hook will be called and the A/AAAA answer will be returned to the client. If set to no, the hook will not be called and the answer to the A/AAAA query will be SERVFAIL. Mainly used for testing. Defaults to no. .TP -.B ipsecmod\-whitelist: \fI\fR -Whitelist the domain so that the module logic will be executed. Can -be given multiple times, for different domains. If the option is not -specified, all domains are treated as being whitelisted (default). +.B ipsecmod\-allow: \fI\fR +Allow the ipsecmod functionality for the domain so that the module logic will be +executed. Can be given multiple times, for different domains. If the option is +not specified, all domains are treated as being allowed (default). +.TP +.B ipsecmod\-whitelist: \fI +Alternate syntax for \fBipsecmod\-allow\fR. .SS "Cache DB Module Options" .LP The Cache DB module must be configured in the \fBmodule\-config:\fR @@ -2299,33 +2311,36 @@ are applied after .B name: \fI Name of the authority zone. .TP -.B master: \fI +.B primary: \fI Where to download a copy of the zone from, with AXFR and IXFR. Multiple -masters can be specified. They are all tried if one fails. +primaries can be specified. They are all tried if one fails. +.TP +.B master: \fI +Alternate syntax for \fBprimary\fR. .TP .B url: \fI Where to download a zonefile for the zone. With http or https. An example for the url is "http://www.example.com/example.org.zone". Multiple url statements can be given, they are tried in turn. If only urls are given the SOA refresh timer is used to wait for making new downloads. If also -masters are listed, the masters are first probed with UDP SOA queries to +primaries are listed, the primaries are first probed with UDP SOA queries to see if the SOA serial number has changed, reducing the number of downloads. -If none of the urls work, the masters are tried with IXFR and AXFR. +If none of the urls work, the primaries are tried with IXFR and AXFR. For https, the \fBtls\-cert\-bundle\fR and the hostname from the url are used to authenticate the connection. .TP .B allow\-notify: \fI With allow\-notify you can specify additional sources of notifies. When notified, the server attempts to first probe and then zone transfer. -If the notify is from a master, it first attempts that master. Otherwise -other masters are attempted. If there are no masters, but only urls, the -file is downloaded when notified. The masters from master: statements are +If the notify is from a primary, it first attempts that primary. Otherwise +other primaries are attempted. If there are no primaries, but only urls, the +file is downloaded when notified. The primaries from primary: statements are allowed notify by default. .TP .B zonefile: \fI The filename where the zone is stored. If not given then no zonefile is used. If the file does not exist or is empty, unbound will attempt to fetch zone -data (eg. from the master servers). +data (eg. from the primary servers). .TP .B rpz\-action\-override: \fI Always use this RPZ action for matching triggers from this zone. Possible action diff --git a/util/configlexer.c b/util/configlexer.c index 36b4a2eca..a00f50b74 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 331 -#define YY_END_OF_BUFFER 332 +#define YY_NUM_RULES 334 +#define YY_END_OF_BUFFER 335 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,364 +363,366 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3235] = +static const flex_int16_t yy_accept[3253] = { 0, - 1, 1, 305, 305, 309, 309, 313, 313, 317, 317, - 1, 1, 321, 321, 325, 325, 332, 329, 1, 303, - 303, 330, 2, 330, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 305, 306, 306, 307, - 330, 309, 310, 310, 311, 330, 316, 313, 314, 314, - 315, 330, 317, 318, 318, 319, 330, 328, 304, 2, - 308, 330, 328, 324, 321, 322, 322, 323, 330, 325, - 326, 326, 327, 330, 329, 0, 1, 2, 2, 2, - 2, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 1, 1, 308, 308, 312, 312, 316, 316, 320, 320, + 1, 1, 324, 324, 328, 328, 335, 332, 1, 306, + 306, 333, 2, 333, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 308, 309, 309, 310, + 333, 312, 313, 313, 314, 333, 319, 316, 317, 317, + 318, 333, 320, 321, 321, 322, 333, 331, 307, 2, + 311, 333, 331, 327, 324, 325, 325, 326, 333, 328, + 329, 329, 330, 333, 332, 0, 1, 2, 2, 2, + 2, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 305, 0, 309, - 0, 316, 0, 313, 317, 0, 328, 0, 2, 2, - 328, 324, 0, 321, 325, 0, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 308, 0, 312, + 0, 319, 0, 316, 320, 0, 331, 0, 2, 2, + 331, 327, 0, 324, 328, 0, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 328, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 331, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 121, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 129, 329, 329, 329, 329, 329, 329, 329, - 328, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 122, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 131, 332, 332, 332, 332, 332, 332, + 332, 331, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 105, - 329, 329, 329, 329, 329, 329, 8, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 122, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 106, 332, 332, 332, 332, 332, 332, 8, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 123, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 134, 329, 328, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 296, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 136, 332, 331, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 299, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 328, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 331, - 329, 329, 329, 329, 329, 329, 329, 63, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 233, 329, 14, 15, 329, 19, 18, 329, - 329, 217, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 128, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 63, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 235, 332, 14, + 15, 332, 19, 18, 332, 332, 219, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 129, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 215, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 3, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 328, 329, 329, 329, - 329, 329, 329, 329, 290, 329, 329, 289, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 217, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 3, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 331, 332, 332, 332, 332, 332, 332, 332, + 293, 332, 332, 292, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 312, 329, 329, 329, 329, 329, 329, - 329, 62, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 66, 329, - 264, 329, 329, 329, 329, 329, 329, 329, 329, 297, - 298, 329, 329, 329, 329, 329, 67, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 315, 332, 332, 332, 332, 332, 332, 332, 62, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 66, 332, 266, 332, 332, + 332, 332, 332, 332, 332, 332, 300, 301, 332, 332, + 332, 332, 332, 67, 332, 332, 130, 332, 332, 332, - 329, 329, 329, 125, 329, 329, 329, 329, 329, 329, - 329, 329, 204, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 21, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 153, 329, 329, 328, 312, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 103, 329, 329, - 329, 329, 329, 329, 329, 272, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 126, 332, 332, 332, 332, 332, 332, 332, 332, + 206, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 21, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 155, 332, 332, 331, 315, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 104, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 176, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 152, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 102, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 274, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 178, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 154, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 103, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 32, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 33, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 64, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 127, 328, 329, - 329, 329, 329, 329, 120, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 65, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 237, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 32, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 33, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 64, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 128, 331, 332, 332, + 332, 332, 332, 121, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 65, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 177, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 53, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 255, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 239, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 179, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 53, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 57, 329, 58, 329, 329, 329, 329, 329, 106, - 329, 107, 329, 329, 329, 329, 104, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 7, 329, 328, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 226, 329, 329, 329, 329, - 155, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 238, 329, 329, + 332, 332, 332, 257, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 57, 332, 58, 332, 332, 332, 332, 332, + 107, 332, 108, 332, 332, 332, 332, 105, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 7, 332, 331, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 228, 332, 332, + 332, 332, 157, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 45, 329, 329, 329, 329, 329, 329, - 329, 329, 54, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 196, 329, 195, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 16, 17, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 240, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 45, 332, 332, 332, 332, + 332, 332, 332, 332, 54, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 198, + 332, 197, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 16, 17, - 68, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 203, 329, 329, 329, 329, 329, 329, 109, - 329, 108, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 187, 329, 329, 329, 329, 329, 329, - 329, 329, 135, 328, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 87, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 216, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 68, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 205, 332, 332, 332, 332, + 332, 332, 110, 332, 109, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 189, 332, 332, 332, + 332, 332, 332, 332, 332, 137, 331, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 98, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 87, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 91, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 61, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 190, 191, 329, 329, - 329, 266, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 6, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 270, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 218, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 91, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 61, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 192, 193, 332, 332, 332, 268, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 6, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 291, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 42, 329, 329, 329, 329, 44, - 329, 329, 329, 329, 329, 329, 329, 329, 51, 329, - 329, 329, 329, 329, 329, 329, 328, 329, 183, 329, - 329, 329, 130, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 208, 329, 184, 329, 329, 329, 223, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 52, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 272, 332, 332, 332, 332, 332, 332, 294, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 42, + 332, 332, 332, 332, 44, 332, 332, 332, 332, 332, + 332, 332, 332, 51, 332, 332, 332, 332, 332, 332, + 332, 331, 332, 185, 332, 332, 332, 132, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 210, 332, + 186, 332, 332, 332, 225, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 132, 114, 329, 115, 329, 329, 329, 113, 329, - 329, 329, 329, 329, 329, 329, 329, 150, 329, 329, - 50, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 254, 329, 329, 329, 329, - 329, 329, 329, 329, 185, 329, 329, 329, 329, 329, - 188, 329, 194, 329, 329, 329, 329, 329, 222, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 101, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 126, 329, 329, 329, 329, 329, 329, 59, + 332, 332, 332, 332, 332, 52, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 134, 115, 332, 116, + 332, 332, 332, 114, 332, 332, 332, 332, 332, 332, + 332, 332, 152, 332, 332, 50, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 256, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 187, 332, 332, 332, 332, 332, 190, 332, 196, 332, + 332, 332, 332, 332, 224, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 102, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 26, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 20, 329, 329, 329, 329, 329, 329, - 27, 36, 329, 160, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 328, 329, 329, - 329, 329, 329, 329, 76, 78, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 274, - 329, 329, 329, 329, 234, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 116, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 149, 329, 46, + 332, 332, 332, 332, 332, 332, 332, 332, 127, 332, + 332, 332, 332, 332, 332, 59, 332, 332, 332, 26, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 20, + 332, 332, 332, 332, 332, 332, 27, 36, 332, 162, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 331, 332, 332, 332, 332, 332, 332, + 76, 78, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 276, 332, 332, 332, 332, + 236, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 285, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 154, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 214, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 294, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 171, 329, 329, 329, 329, 329, 329, - 329, 329, 110, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 117, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 151, 332, 46, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 287, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 156, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 216, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 297, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 173, 332, 332, 332, 332, 332, 332, 332, 332, 111, - 329, 329, 166, 329, 178, 329, 329, 329, 329, 328, - 329, 138, 329, 329, 329, 329, 329, 97, 329, 329, - 329, 329, 206, 329, 329, 329, 329, 329, 329, 224, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 246, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 131, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 170, 329, 329, 329, 329, 329, 329, 79, 80, - 329, 329, 329, 329, 329, 60, 329, 329, 329, 329, - 329, 86, 179, 329, 197, 329, 227, 329, 329, 189, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 168, + 332, 180, 332, 332, 332, 332, 331, 332, 140, 332, + 332, 332, 332, 332, 97, 332, 332, 332, 332, 208, + 332, 332, 332, 332, 332, 332, 226, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 248, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 133, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 172, 332, + 332, 332, 332, 332, 332, 79, 80, 332, 332, 332, - 267, 329, 329, 329, 329, 329, 72, 329, 181, 329, - 329, 329, 329, 329, 9, 329, 329, 329, 100, 329, - 329, 329, 329, 259, 329, 329, 329, 329, 205, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 328, 329, 329, 329, 329, 169, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 156, 329, 273, 329, 329, 329, 329, 329, 245, 329, + 332, 332, 60, 290, 332, 332, 332, 332, 332, 86, + 181, 332, 199, 332, 229, 332, 332, 191, 269, 332, + 332, 332, 332, 332, 72, 332, 183, 332, 332, 332, + 332, 332, 9, 332, 332, 332, 101, 332, 332, 332, + 332, 261, 332, 332, 332, 332, 207, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 331, 332, 332, 332, 332, 171, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 218, 329, 329, 301, 329, 329, 329, 265, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 288, 329, 180, 329, - 329, 329, 329, 329, 329, 329, 71, 73, 329, 329, - 329, 329, 329, 329, 329, 99, 329, 329, 329, 329, - 257, 329, 329, 329, 329, 269, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 210, 34, 28, - 30, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 158, 332, + 275, 332, 332, 332, 332, 332, 247, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 220, 332, + 332, 304, 332, 332, 332, 267, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 291, 332, 182, 332, 332, 332, + 332, 332, 332, 332, 71, 73, 332, 332, 332, 332, + 332, 332, 332, 100, 332, 332, 332, 332, 259, 332, + 332, 332, 332, 271, 332, 332, 332, 332, 332, 332, - 35, 329, 29, 31, 329, 329, 329, 329, 329, 329, - 329, 329, 96, 329, 329, 329, 329, 329, 329, 328, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 212, 209, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 70, 329, 329, 329, 133, 329, 117, 329, 329, - 329, 329, 329, 329, 329, 329, 151, 47, 329, 329, - 320, 13, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 283, 329, 286, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 12, 329, 329, 22, 329, 329, + 332, 332, 332, 332, 332, 212, 34, 28, 30, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 35, 332, + 29, 31, 332, 332, 332, 332, 332, 332, 332, 332, + 96, 332, 332, 332, 332, 332, 332, 331, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 214, + 211, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 70, + 332, 332, 332, 135, 332, 118, 332, 332, 332, 332, + 332, 332, 332, 332, 153, 47, 332, 332, 323, 13, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 285, - 329, 263, 329, 329, 329, 329, 271, 329, 329, 329, - 74, 329, 220, 329, 329, 329, 329, 211, 329, 329, - 69, 329, 329, 329, 329, 23, 329, 43, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 165, 164, 320, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 213, 207, 329, 225, 329, 329, 275, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 81, 329, 329, 329, 258, 329, 329, 329, 329, 193, + 332, 288, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 12, 332, 332, 22, 332, 332, 332, 265, + 332, 332, 332, 332, 273, 332, 332, 332, 74, 332, + 222, 332, 332, 332, 332, 213, 332, 332, 69, 332, + 332, 332, 332, 23, 332, 43, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 167, 166, + 323, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 215, 209, 332, 227, 332, 332, 277, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 219, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 292, 293, 162, 329, 329, 75, - 329, 329, 329, 329, 172, 329, 329, 111, 112, 329, - 329, 329, 329, 157, 329, 159, 329, 198, 329, 329, - 329, 329, 163, 329, 329, 228, 329, 329, 329, 329, - 329, 329, 329, 140, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 236, 329, 329, 329, - 329, 329, 329, 329, 329, 24, 329, 268, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 199, 329, 329, 256, 329, 287, 329, 192, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 81, 332, + 332, 332, 260, 332, 332, 332, 332, 195, 332, 332, + 332, 332, 221, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 295, 296, 164, 332, 332, 75, 332, 332, + 332, 332, 174, 332, 332, 112, 113, 332, 332, 332, + 332, 159, 332, 161, 332, 200, 332, 332, 332, 332, + 165, 332, 332, 230, 332, 332, 332, 332, 332, 332, + 332, 142, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 238, 332, 332, 332, 332, 332, + 332, 332, 332, 24, 332, 270, 332, 332, 332, 332, - 329, 329, 329, 55, 329, 329, 329, 329, 4, 329, - 329, 329, 329, 124, 139, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 231, 37, 38, 329, 329, 329, 329, - 329, 329, 329, 276, 329, 329, 329, 329, 329, 329, - 329, 244, 329, 329, 329, 329, 329, 329, 329, 329, - 202, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 84, 329, 56, 262, 329, 232, 329, 329, - 329, 329, 11, 329, 329, 329, 329, 329, 329, 123, - 329, 329, 329, 329, 200, 88, 329, 40, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 201, + 332, 332, 258, 332, 289, 332, 194, 332, 332, 332, + 332, 55, 332, 332, 332, 332, 4, 332, 332, 332, + 332, 125, 141, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 233, 37, 38, 332, 332, 332, 332, 332, 332, + 332, 278, 332, 332, 332, 332, 332, 332, 332, 246, + 332, 332, 332, 332, 332, 332, 332, 332, 204, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 84, 332, 56, 264, 332, 234, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 168, 329, 329, 329, - 329, 329, 142, 329, 329, 329, 329, 235, 329, 329, - 329, 329, 329, 243, 329, 329, 329, 329, 136, 329, - 329, 329, 118, 119, 329, 329, 329, 90, 94, 89, - 329, 329, 329, 82, 329, 329, 329, 329, 329, 10, - 329, 329, 329, 260, 295, 329, 329, 329, 329, 300, - 39, 329, 329, 329, 329, 329, 167, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 95, 93, 329, 329, 329, 83, 284, 329, 329, 329, + 11, 332, 332, 332, 332, 332, 332, 124, 332, 332, + 332, 332, 202, 88, 332, 40, 332, 332, 332, 332, + 332, 332, 332, 332, 170, 332, 332, 332, 332, 332, + 144, 332, 332, 332, 332, 237, 332, 332, 332, 332, + 332, 245, 332, 332, 332, 332, 138, 332, 332, 332, + 119, 120, 332, 332, 332, 90, 94, 89, 332, 332, + 332, 82, 332, 332, 332, 332, 332, 10, 332, 332, + 332, 262, 298, 332, 332, 332, 332, 303, 39, 332, + 332, 332, 332, 332, 169, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 186, 329, 329, 329, 329, 329, - 201, 329, 329, 329, 329, 329, 329, 329, 329, 158, - 77, 329, 329, 329, 329, 329, 277, 329, 329, 329, - 329, 329, 329, 329, 240, 329, 329, 239, 137, 302, - 329, 92, 48, 329, 143, 144, 147, 148, 145, 146, - 85, 329, 261, 329, 329, 329, 329, 161, 329, 329, - 329, 329, 329, 230, 329, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 329, 329, 174, 173, 41, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 332, 332, 332, 332, 332, 332, 332, 332, 95, 93, + 332, 332, 332, 83, 286, 332, 332, 332, 332, 332, + 332, 332, 188, 332, 332, 332, 332, 332, 203, 332, + 332, 332, 332, 332, 332, 332, 332, 160, 77, 332, + 332, 332, 332, 332, 279, 332, 332, 332, 332, 332, + 332, 332, 242, 332, 332, 241, 139, 305, 332, 92, + 48, 332, 145, 146, 149, 150, 147, 148, 85, 332, + 263, 332, 332, 332, 332, 163, 332, 332, 332, 332, + 332, 232, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, - 98, 329, 229, 329, 253, 281, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 49, 5, - 329, 329, 221, 329, 329, 282, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 241, 25, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 242, - 329, 329, 329, 141, 329, 329, 329, 329, 329, 329, - 329, 329, 175, 329, 182, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 278, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 329, 329, 329, 329, 329, + 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 99, 332, + 231, 332, 255, 283, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 49, 5, 332, 332, + 223, 332, 332, 284, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 243, 25, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 244, 332, 332, + 332, 143, 332, 332, 332, 332, 332, 332, 332, 332, + 177, 332, 184, 332, 332, 332, 332, 332, 332, 332, - 329, 329, 299, 329, 329, 249, 329, 329, 329, 329, - 329, 279, 329, 329, 329, 329, 329, 329, 280, 329, - 329, 329, 247, 329, 250, 251, 329, 329, 329, 329, - 329, 248, 252, 0 + 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 302, 332, 332, 251, 332, 332, 332, 332, 332, 281, + 332, 332, 332, 332, 332, 332, 282, 332, 332, 332, + 249, 332, 252, 253, 332, 332, 332, 332, 332, 250, + 254, 0 } ; static const YY_CHAR yy_ec[256] = @@ -763,17 +765,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3253] = +static const flex_int16_t yy_base[3271] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4264, 3883, 81, 6320, - 6320, 6320, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365, + 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3532, 6320, 6320, 6320, - 107, 3462, 6320, 6320, 6320, 154, 3335, 2925, 6320, 6320, - 6320, 226, 2336, 6320, 6320, 6320, 163, 2298, 6320, 238, - 6320, 242, 148, 1838, 1641, 6320, 6320, 6320, 246, 1331, - 6320, 6320, 6320, 250, 1145, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365, + 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365, + 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238, + 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743, + 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -781,8 +783,8 @@ static const flex_int16_t yy_base[3253] = 313, 314, 307, 323, 317, 312, 328, 326, 330, 334, 337, 340, 342, 343, 344, 346, 349, 354, 348, 356, 364, 357, 361, 359, 372, 376, 365, 360, 377, 380, - 384, 385, 387, 388, 391, 399, 389, 1088, 411, 855, - 415, 776, 422, 778, 644, 426, 406, 430, 434, 0, + 384, 385, 387, 388, 391, 399, 389, 1400, 411, 1203, + 415, 1088, 422, 1027, 689, 426, 406, 430, 434, 0, 411, 280, 438, 233, 181, 442, 430, 442, 419, 438, 439, 441, 440, 443, 444, 445, 446, 449, 463, 455, 456, 467, 471, 472, 469, 476, 474, 460, 482, 488, @@ -790,704 +792,706 @@ static const flex_int16_t yy_base[3253] = 484, 481, 491, 494, 495, 497, 502, 503, 505, 504, 506, 507, 523, 510, 499, 509, 532, 530, 534, 539, 535, 542, 544, 537, 551, 547, 554, 556, 557, 508, - 559, 546, 561, 549, 560, 562, 569, 563, 570, 573, - 576, 583, 579, 580, 586, 578, 587, 588, 597, 592, - 594, 593, 601, 602, 610, 611, 603, 614, 613, 615, - 616, 619, 627, 630, 631, 623, 632, 626, 628, 634, - 635, 636, 639, 649, 654, 651, 652, 659, 658, 660, - 661, 663, 664, 640, 675, 667, 666, 680, 685, 671, - 683, 686, 676, 678, 688, 690, 695, 696, 703, 698, + 559, 546, 561, 549, 560, 563, 569, 570, 572, 573, + 575, 583, 580, 578, 584, 581, 592, 590, 597, 593, + 594, 598, 601, 604, 612, 616, 602, 623, 607, 614, + 624, 627, 635, 636, 631, 615, 632, 622, 639, 640, + 641, 642, 643, 651, 652, 644, 654, 662, 655, 657, + 660, 663, 664, 665, 673, 676, 680, 668, 684, 674, + 685, 687, 675, 683, 693, 695, 694, 697, 707, 700, - 706, 699, 708, 707, 709, 713, 720, 721, 716, 717, - 722, 719, 723, 726, 727, 730, 725, 731, 737, 733, - 739, 741, 752, 747, 748, 761, 754, 756, 757, 764, - 755, 771, 765, 786, 793, 772, 782, 768, 791, 794, - 796, 801, 797, 790, 804, 807, 808, 810, 811, 818, - 813, 6320, 815, 817, 829, 828, 831, 834, 824, 840, - 832, 820, 850, 846, 847, 851, 873, 848, 849, 862, - 863, 853, 6320, 866, 857, 897, 865, 875, 887, 882, - 858, 883, 890, 895, 891, 907, 893, 898, 903, 920, - 906, 908, 915, 921, 922, 923, 931, 932, 926, 930, + 708, 709, 710, 712, 717, 715, 719, 727, 705, 722, + 723, 605, 728, 731, 724, 726, 732, 735, 736, 738, + 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, + 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, + 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, + 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836, + 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, + 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892, + 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, + 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, - 934, 943, 939, 940, 944, 953, 941, 947, 952, 945, - 955, 967, 954, 962, 971, 960, 965, 973, 974, 976, - 975, 986, 983, 985, 988, 978, 996, 1007, 998, 1002, - 1006, 1009, 1011, 1013, 1014, 1017, 1021, 1018, 1022, 1024, - 1032, 1027, 1028, 1029, 1034, 1036, 1037, 1040, 1042, 1045, - 1044, 1048, 1049, 1047, 1054, 1060, 1057, 1066, 1058, 6320, - 1068, 1061, 1064, 1070, 1071, 1073, 6320, 1074, 1075, 1076, - 1083, 1084, 1087, 1096, 1086, 1097, 1099, 1089, 1098, 1110, - 1106, 1109, 1117, 1107, 1114, 1115, 1118, 1116, 1122, 1123, - 1124, 1125, 1128, 1130, 1148, 6320, 1131, 1140, 1132, 1133, + 859, 935, 944, 942, 943, 946, 950, 952, 953, 955, + 956, 769, 958, 962, 964, 973, 957, 965, 963, 975, + 977, 981, 982, 992, 985, 984, 998, 988, 1010, 1005, + 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, + 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, + 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, + 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071, + 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, + 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, + 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139, - 1134, 1142, 1160, 1144, 1153, 1157, 1161, 1172, 1163, 1175, - 1171, 1180, 1181, 1183, 1184, 1186, 1187, 1188, 1190, 1189, - 1191, 1193, 1195, 1192, 1198, 6320, 1197, 1212, 1219, 1205, - 1210, 1215, 1218, 1220, 1221, 1222, 1223, 1227, 1230, 1241, - 1237, 1233, 1248, 1243, 1244, 1246, 1249, 1251, 1250, 1252, - 1254, 1263, 1259, 1266, 1274, 1275, 1277, 1279, 1286, 1288, - 1281, 1283, 1289, 1285, 1284, 1291, 1293, 1300, 1294, 1297, - 1224, 1304, 1306, 1301, 1307, 1308, 1313, 1309, 1311, 1315, - 1318, 1321, 1329, 1325, 1326, 1335, 1327, 1336, 1328, 1333, - 1339, 1348, 1342, 1350, 6320, 1357, 1258, 1352, 1354, 1359, + 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, + 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, + 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211, + 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, + 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, + 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, + 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, + 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, + 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, + 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357, - 1360, 1361, 1362, 1367, 1368, 1369, 1371, 1370, 1373, 1374, - 1377, 1379, 1384, 1386, 1387, 1388, 1389, 1402, 1401, 1403, - 1391, 1397, 1412, 1405, 1413, 1414, 1415, 1422, 1418, 1419, - 1423, 1430, 1425, 1426, 1429, 1427, 1436, 1433, 1438, 1445, - 1446, 1448, 1455, 1450, 1452, 1457, 1460, 1461, 1462, 1464, - 1465, 1466, 1467, 1474, 1469, 1472, 1471, 1475, 1470, 1476, - 1484, 1478, 1497, 1489, 1492, 1494, 1498, 1501, 1500, 1499, - 1502, 1506, 1507, 1509, 1508, 1510, 1512, 1519, 1521, 1523, - 1528, 1527, 1529, 1531, 1534, 1530, 1539, 1540, 1542, 1536, - 1549, 1550, 1551, 1552, 1555, 1553, 1557, 1562, 1563, 1564, + 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379, + 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402, + 1409, 1408, 1410, 1396, 1412, 1419, 1416, 1423, 1422, 1418, + 1424, 1433, 1428, 1431, 1430, 1440, 1420, 1436, 1437, 1438, + 1446, 1448, 1451, 1459, 1452, 1456, 1463, 1465, 1460, 1232, + 1467, 1468, 1471, 1472, 1473, 1474, 1475, 1482, 1477, 1478, + 1479, 1483, 1484, 1480, 1488, 1492, 1503, 1496, 1501, 1504, + 1505, 1508, 1509, 1506, 1511, 1514, 1515, 1516, 1517, 1518, + 1526, 1520, 1525, 1528, 1535, 1537, 1538, 1541, 1543, 1544, + 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564, - 1568, 1570, 1569, 1572, 1578, 1575, 1576, 6320, 1580, 1588, - 1581, 1589, 1586, 1591, 1592, 1600, 1595, 1597, 1596, 1602, - 1605, 1628, 6320, 1606, 6320, 6320, 315, 6320, 6320, 1608, - 1607, 6320, 1609, 1611, 1618, 1619, 1631, 1635, 1638, 1624, - 1612, 1639, 1651, 1660, 1641, 1622, 1652, 1653, 1644, 1654, - 1666, 1655, 1665, 1656, 1673, 1683, 1684, 1685, 1675, 1687, - 1689, 1692, 1693, 1697, 1699, 1700, 1702, 1703, 1704, 1706, - 1705, 1708, 1711, 1714, 1715, 1717, 1710, 1718, 1669, 1727, - 1720, 1737, 6320, 1729, 1739, 1744, 1741, 1748, 1747, 1743, - 1745, 1752, 1755, 1756, 1757, 1758, 1723, 1759, 1761, 1762, + 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588, + 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605, + 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365, + 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618, + 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664, + 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682, + 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707, + 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, + 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751, + 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757, - 1765, 1772, 1767, 6320, 1768, 1770, 1769, 1776, 1774, 1782, - 1784, 1780, 1787, 1788, 1790, 1801, 1791, 1796, 1798, 1799, - 1802, 1804, 6320, 1814, 1806, 1809, 1813, 1810, 1819, 1820, - 1821, 1822, 1823, 1824, 1825, 1827, 1833, 1834, 1835, 1836, - 1837, 1841, 1851, 1846, 1849, 1859, 1850, 1853, 1861, 1863, - 1864, 1865, 1866, 1868, 1873, 1875, 1872, 1880, 1876, 1883, - 1895, 1878, 1879, 1890, 1892, 1891, 1893, 1905, 1900, 1901, - 1904, 1913, 1906, 1909, 1911, 1915, 1922, 1918, 1923, 1924, - 1914, 1928, 1930, 1931, 6320, 1932, 1937, 6320, 1934, 1938, - 1960, 1939, 1941, 1942, 1944, 1947, 1949, 1946, 1952, 1962, + 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365, + 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801, + 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820, + 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839, + 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851, + 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879, + 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892, + 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922, + 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939, + 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955, - 1964, 1974, 1970, 1975, 1980, 1977, 1982, 1983, 1985, 1986, - 1988, 1991, 1993, 1998, 1994, 2007, 2012, 2011, 2008, 2019, - 2014, 2015, 2017, 2037, 2016, 2018, 2025, 2020, 2021, 2024, - 2033, 2026, 2027, 2030, 2031, 2048, 2050, 2044, 2052, 2053, - 2059, 2060, 2054, 6320, 2067, 1955, 2065, 2066, 2075, 2072, - 2070, 6320, 2073, 2076, 2078, 2086, 2081, 2083, 2087, 2088, - 2091, 2093, 2095, 2097, 2100, 2098, 2099, 2117, 6320, 2096, - 6320, 2101, 2103, 2110, 2114, 2118, 2119, 2120, 2121, 6320, - 6320, 2122, 2124, 2130, 2138, 2135, 6320, 2137, 2145, 2142, - 2147, 2140, 2141, 2149, 2151, 2155, 2152, 2162, 2157, 2164, + 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989, + 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010, + 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032, + 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044, + 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058, + 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090, + 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108, + 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128, + 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144, + 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157, - 2159, 2166, 2170, 6320, 2160, 2172, 2173, 2175, 2176, 2181, - 2182, 2179, 6320, 2183, 2185, 2188, 2196, 2198, 2195, 2199, - 2200, 2205, 2202, 2207, 2208, 2209, 2210, 2219, 2221, 2211, - 2222, 2224, 2231, 6320, 2214, 2218, 2236, 2234, 2241, 2233, - 2235, 2237, 2243, 2245, 2246, 2247, 2250, 2251, 2252, 2259, - 2260, 2257, 2256, 2265, 2266, 2267, 2270, 2273, 2274, 2275, - 2276, 2277, 6320, 2278, 2280, 2283, 171, 2286, 2289, 2287, - 2288, 2296, 2291, 2294, 2307, 2312, 2308, 2309, 2310, 2316, - 2317, 2318, 2319, 2320, 2321, 2322, 2324, 6320, 2326, 2327, - 2329, 2333, 2332, 2335, 2340, 6320, 2342, 2349, 2352, 2361, + 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176, + 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, + 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, + 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239, + 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, + 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271, + 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293, + 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, + 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333, + 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348, - 2344, 2353, 2362, 2358, 2363, 2364, 2366, 2368, 2370, 2369, - 2372, 2378, 2375, 6320, 2380, 2383, 2385, 2376, 2392, 2391, - 2384, 2398, 2399, 2400, 2403, 2401, 2402, 2405, 2404, 2406, - 2407, 2412, 2411, 2408, 2410, 2420, 2421, 2422, 2431, 2424, - 2432, 2433, 6320, 2440, 2435, 2437, 2438, 2439, 2452, 2442, - 2461, 2444, 2448, 2445, 2464, 2466, 2456, 2467, 2478, 2480, - 2468, 2477, 2488, 2487, 2490, 2483, 2470, 2493, 2496, 2497, - 2498, 2500, 2502, 2503, 2504, 2505, 2512, 2513, 2510, 2520, - 2519, 2525, 2532, 2527, 6320, 2536, 2531, 2534, 2541, 2548, - 2544, 2521, 2549, 2545, 2551, 2555, 2556, 2557, 2564, 2561, + 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375, + 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388, + 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408, + 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424, + 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447, + 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, + 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495, + 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510, + 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534, + 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562, - 2565, 2563, 2567, 2566, 2569, 2568, 2570, 2576, 2583, 2579, - 2585, 2587, 6320, 2511, 2588, 2590, 2591, 2597, 2592, 2599, - 2601, 2603, 2604, 2605, 2607, 2610, 2611, 2613, 2615, 2618, - 2617, 2616, 6320, 2621, 2622, 2623, 2629, 2631, 2632, 2639, - 2641, 2647, 2645, 2635, 2649, 2651, 2652, 6320, 2660, 2662, - 2659, 2663, 2661, 2666, 2667, 2669, 2671, 6320, 2672, 2673, - 2674, 2681, 2682, 2677, 6320, 2686, 2684, 2679, 2688, 2689, - 2690, 2694, 2692, 2696, 2701, 2702, 2706, 2709, 2710, 6320, - 2711, 2723, 2713, 2716, 2718, 2714, 2720, 2724, 2729, 2727, - 2738, 2733, 6320, 2749, 2638, 2741, 2751, 2744, 2746, 2748, + 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581, + 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604, + 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, + 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638, + 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, + 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675, + 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693, + 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709, + 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365, + 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753, - 2753, 2754, 2755, 2756, 2757, 2760, 6320, 2761, 2764, 2765, - 2767, 2770, 2769, 2771, 2784, 2777, 2779, 2781, 2785, 2786, - 2788, 2791, 2792, 2797, 2793, 2794, 2804, 2806, 2808, 2809, - 2812, 2816, 2814, 2819, 2820, 2815, 2822, 2825, 2833, 2838, - 2823, 2834, 6320, 2837, 2840, 2839, 2841, 2842, 2845, 2846, - 2849, 2847, 2854, 2852, 2851, 2855, 2864, 2872, 2861, 2868, - 2870, 2873, 2875, 2877, 2876, 2878, 2879, 2886, 2883, 2885, - 2893, 2890, 2894, 2902, 2891, 2899, 2901, 2903, 2905, 2904, - 2906, 2907, 2912, 2914, 2917, 2924, 2927, 2929, 2928, 2930, - 2931, 2934, 6320, 2937, 2938, 2935, 2942, 2945, 2947, 2949, + 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772, + 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789, + 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810, + 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833, + 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857, + 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870, + 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886, + 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911, + 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932, + 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955, - 2957, 2948, 2952, 2959, 2956, 2966, 2958, 2967, 2968, 2975, - 2972, 6320, 2973, 6320, 2974, 2976, 2979, 2983, 2982, 6320, - 2987, 6320, 2989, 2994, 2984, 2990, 6320, 2996, 2997, 2998, - 3003, 3001, 3005, 3008, 3009, 3010, 3011, 3013, 3015, 3019, - 3018, 3020, 3023, 3028, 3025, 3029, 3032, 3035, 3036, 3040, - 3038, 3042, 3045, 3047, 3050, 6320, 3052, 3048, 3054, 3057, - 3058, 3059, 3061, 3062, 3065, 3067, 3068, 3074, 3075, 3069, - 3079, 3085, 3082, 3084, 3097, 6320, 3092, 3094, 3095, 3096, - 6320, 3098, 3099, 3100, 3107, 3105, 3109, 3110, 3112, 3116, - 3111, 3118, 3113, 3128, 3126, 3132, 3121, 6320, 3135, 3136, + 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972, + 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983, + 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008, + 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017, + 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038, + 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055, + 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082, + 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098, + 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128, + 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141, - 3122, 3139, 3149, 3151, 3156, 3138, 3152, 3154, 3163, 3159, - 3158, 3160, 3161, 3162, 3165, 3172, 3173, 3169, 3176, 3175, - 3179, 3186, 3183, 3177, 3181, 3187, 3189, 3190, 3191, 3192, - 3193, 3194, 3197, 6320, 3199, 3200, 3202, 3214, 3206, 3209, - 3213, 3217, 6320, 3220, 3221, 3223, 3224, 3222, 3230, 3231, - 3232, 3233, 3234, 3236, 3239, 3240, 6320, 3245, 6320, 3246, - 3254, 3253, 3259, 3235, 3261, 3263, 3268, 3262, 3264, 3269, - 3272, 3270, 3276, 3273, 3278, 3281, 3285, 3286, 3288, 3284, - 3295, 3291, 3296, 3298, 3299, 6320, 6320, 3300, 3301, 3302, - 3305, 3306, 3307, 3316, 3318, 3323, 3320, 3313, 3322, 3342, + 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365, + 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188, + 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202, + 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224, + 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249, + 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260, + 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365, + 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, + 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315, + 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365, - 6320, 3329, 3324, 3326, 3332, 3350, 3333, 3346, 3353, 3349, - 3358, 3355, 6320, 3356, 3357, 3365, 3360, 3363, 3368, 6320, - 3367, 6320, 3364, 3369, 3370, 3377, 3374, 3379, 3380, 3381, - 3385, 3396, 3397, 3389, 3399, 3393, 3382, 3401, 3403, 3410, - 3405, 3407, 3408, 6320, 3412, 3409, 3414, 3417, 3419, 3425, - 3428, 3415, 6320, 3421, 3431, 3435, 3432, 3436, 3439, 3441, - 3442, 3443, 3445, 3447, 3444, 3449, 3460, 3452, 3453, 3455, - 3466, 3467, 3473, 6320, 3474, 3468, 3481, 3483, 3476, 3478, - 3484, 3485, 3486, 3489, 3491, 3490, 3492, 3493, 3494, 3496, - 3498, 3501, 3499, 3512, 3513, 3500, 3521, 3522, 3504, 6320, + 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353, + 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369, + 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383, + 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410, + 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420, + 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448, + 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467, + 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483, + 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506, + 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522, - 3514, 3526, 3527, 3528, 3529, 3535, 3536, 3539, 3541, 3530, - 3545, 3552, 3534, 3542, 3557, 3554, 3565, 3561, 6320, 3566, - 3562, 3573, 3547, 3568, 3570, 3574, 3576, 3578, 3575, 3579, - 3582, 3585, 3592, 3587, 3588, 3589, 3597, 3593, 6320, 3604, - 3602, 3605, 3610, 3611, 3618, 3614, 3595, 3617, 3620, 3622, - 3624, 3627, 3628, 3629, 3632, 3633, 6320, 6320, 3635, 3636, - 3637, 6320, 3640, 3639, 3651, 3642, 3643, 3644, 3655, 3654, - 3652, 3656, 3658, 3665, 6320, 3666, 3673, 3668, 3669, 3680, - 3683, 3686, 3670, 3682, 3672, 3679, 3687, 3690, 3689, 3694, - 3695, 3703, 3706, 3701, 3702, 3704, 6320, 3705, 3709, 3710, + 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532, + 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567, + 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586, + 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606, + 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621, + 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652, + 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666, + 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685, + 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365, + 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709, - 3712, 3713, 3714, 6320, 3716, 3718, 3727, 3719, 3737, 3726, - 3723, 3741, 3738, 3742, 3743, 3744, 3745, 3746, 3753, 3748, - 3750, 3752, 3757, 3760, 6320, 3761, 3767, 3754, 3769, 6320, - 3772, 3781, 3779, 3782, 3777, 3784, 3785, 3792, 6320, 3787, - 3790, 3788, 3791, 3801, 3793, 3802, 3804, 3798, 6320, 3805, - 3806, 3807, 6320, 3808, 3813, 3819, 3821, 3822, 3829, 3824, - 3826, 3827, 3828, 6320, 3834, 6320, 3832, 3836, 3840, 6320, - 3838, 3843, 3844, 3846, 3847, 3852, 3853, 3851, 3860, 3861, - 3862, 3864, 3865, 3863, 3868, 3872, 3869, 3870, 3874, 3875, - 6320, 3876, 3878, 3885, 3890, 3897, 3886, 3893, 3880, 3899, + 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737, + 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753, + 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776, + 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365, + 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814, + 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831, + 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849, + 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871, + 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880, + 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902, - 3900, 6320, 6320, 3903, 6320, 3906, 3907, 3908, 6320, 3910, - 3912, 3917, 3914, 3915, 3918, 3922, 3919, 6320, 3929, 3932, - 6320, 3930, 3940, 3935, 3937, 3938, 3943, 3939, 3941, 3945, - 3949, 3951, 3946, 3950, 3947, 6320, 3954, 3952, 3956, 3960, - 3967, 3968, 3970, 3969, 6320, 3976, 3977, 3973, 3980, 3983, - 6320, 3984, 6320, 3982, 3986, 3992, 3994, 3988, 6320, 3997, - 3998, 4002, 4003, 4005, 4006, 4009, 4011, 4013, 4015, 4023, - 4019, 4020, 4018, 6320, 4021, 4022, 4028, 4037, 4030, 4032, - 4047, 4034, 4042, 4025, 4046, 4049, 4051, 4055, 4057, 4050, - 4060, 4053, 6320, 4061, 4064, 4067, 4075, 4068, 4072, 6320, + 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920, + 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365, + 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951, + 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970, + 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984, + 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004, + 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017, + 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043, + 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365, + 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074, - 4078, 4076, 4080, 6320, 4079, 4082, 4086, 4094, 4083, 4087, - 4091, 4089, 4096, 6320, 4097, 4098, 4099, 4108, 4112, 4106, - 6320, 6320, 4114, 6320, 4116, 4100, 4121, 4124, 4104, 4118, - 4126, 4128, 4131, 4132, 4134, 4135, 4139, 4141, 4149, 4150, - 4153, 4154, 4156, 4145, 6320, 6320, 4159, 4160, 4146, 4167, - 4168, 4162, 4170, 4177, 4173, 4179, 4182, 4184, 4191, 6320, - 4172, 4183, 4190, 4187, 6320, 4192, 4193, 4195, 4196, 4197, - 4201, 4199, 4200, 4204, 4205, 4213, 4206, 4208, 4216, 4214, - 4222, 4224, 4225, 4226, 4228, 4230, 4233, 6320, 4234, 4235, - 4237, 4238, 4239, 4243, 4245, 4246, 4247, 6320, 4249, 6320, + 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099, + 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365, + 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365, + 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365, + 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160, + 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180, + 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215, + 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223, + 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244, + 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262, - 4252, 4251, 4253, 4260, 4267, 4270, 4269, 4271, 4274, 4275, - 4278, 4280, 4281, 4284, 4288, 4283, 4291, 4293, 6320, 4294, - 4286, 4300, 4301, 4303, 4305, 4307, 4309, 4310, 4312, 4314, - 4316, 4318, 4323, 4319, 4315, 4325, 4327, 6320, 4330, 4332, - 4334, 4337, 4338, 4341, 4340, 4344, 4349, 4342, 4350, 4351, - 4355, 6320, 4352, 4357, 4358, 4359, 4367, 4362, 4364, 4368, - 4371, 6320, 4375, 4376, 4377, 4378, 4379, 4382, 4385, 4387, - 4389, 4391, 4399, 6320, 4394, 4390, 4403, 4401, 4405, 4404, - 4407, 4409, 6320, 4410, 4416, 4413, 4420, 4422, 4429, 4427, - 4431, 4424, 4433, 4434, 4430, 4438, 4441, 4442, 4440, 4458, + 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281, + 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307, + 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320, + 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338, + 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363, + 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376, + 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390, + 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414, + 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436, + 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365, - 4459, 4444, 6320, 4445, 6320, 4455, 4456, 4466, 4461, 4463, - 4467, 6320, 4469, 4472, 4474, 4471, 4475, 6320, 4478, 4476, - 4479, 4481, 6320, 4477, 4491, 4482, 4483, 4498, 4499, 6320, - 4504, 4505, 4501, 4513, 4515, 4510, 4512, 4514, 4516, 4518, - 4520, 4521, 4522, 4531, 4524, 4527, 6320, 4529, 4536, 4542, - 4543, 4550, 4526, 4537, 4547, 4546, 4552, 6320, 4553, 4554, - 4555, 4556, 4559, 4560, 4561, 4568, 4567, 4564, 4569, 4571, - 4572, 6320, 4577, 4578, 4579, 4587, 4583, 4590, 6320, 6320, - 4585, 4595, 4597, 4586, 4601, 6320, 4603, 4604, 4605, 4609, - 4606, 6320, 6320, 4611, 6320, 4613, 6320, 4614, 4616, 6320, + 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463, + 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365, + 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507, + 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365, + 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545, + 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562, + 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579, + 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597, + 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617, + 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639, - 6320, 4618, 4619, 4620, 4621, 4630, 6320, 4634, 6320, 4641, - 4636, 4622, 4624, 4639, 6320, 4640, 4642, 4648, 6320, 4643, - 4655, 4650, 4651, 6320, 4657, 4658, 4653, 4660, 6320, 4662, - 4665, 4669, 4667, 4670, 4671, 4673, 4677, 4680, 4681, 4682, - 4683, 4684, 4696, 4698, 4700, 4702, 4692, 4688, 4705, 4707, - 4711, 4709, 4713, 4714, 4715, 4717, 4718, 4720, 4723, 4724, - 4726, 4729, 4727, 4728, 4740, 4730, 4732, 4742, 4744, 4733, - 4743, 4747, 4746, 4751, 4749, 4754, 4757, 4756, 4758, 6320, - 4762, 4764, 4767, 4769, 4768, 4774, 4776, 4778, 4784, 4787, - 6320, 4791, 6320, 4793, 4785, 4789, 4795, 4796, 6320, 4797, + 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365, + 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656, + 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666, + 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689, + 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708, + 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725, + 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747, + 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628, + 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783, + 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798, - 4798, 4799, 4802, 4801, 4804, 4805, 4806, 4809, 4812, 4818, - 6320, 4829, 4808, 6320, 4813, 4825, 4832, 6320, 4833, 4837, - 4820, 4839, 4840, 4841, 4843, 4844, 4848, 4846, 4850, 4852, - 4845, 4853, 4855, 4867, 4874, 4858, 4860, 4869, 4872, 4870, - 4871, 4873, 4879, 4883, 4884, 4893, 6320, 4880, 6320, 4885, - 4887, 4889, 4895, 4897, 4896, 4898, 6320, 6320, 4900, 4904, - 4909, 4903, 4905, 4911, 4686, 6320, 4912, 4921, 4914, 4919, - 6320, 4922, 4924, 4926, 4929, 6320, 4930, 4931, 4934, 4936, - 4933, 4948, 4945, 4949, 4939, 4941, 4957, 6320, 6320, 6320, - 6320, 4959, 4943, 4962, 4951, 4954, 4963, 4966, 4969, 4970, + 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827, + 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837, + 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856, + 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870, + 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893, + 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913, + 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929, + 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940, + 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963, + 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983, - 6320, 4974, 6320, 6320, 4971, 4977, 4978, 4979, 4980, 4981, - 4986, 4983, 6320, 4987, 4989, 4993, 4990, 4997, 5004, 5007, - 5001, 5009, 4999, 5010, 5018, 5011, 5019, 5015, 5021, 5023, - 5025, 6320, 6320, 5027, 5032, 5033, 5035, 5037, 5038, 5039, - 5047, 5044, 5045, 5046, 5049, 5051, 5052, 5060, 5062, 5058, - 5057, 6320, 5061, 5065, 5068, 6320, 5066, 6320, 5067, 5074, - 5075, 5076, 5081, 5082, 5083, 5085, 6320, 6320, 5086, 5092, - 6320, 6320, 5087, 5088, 5095, 5097, 5099, 5100, 5101, 5103, - 5104, 6320, 5105, 6320, 5107, 5111, 5113, 5110, 5125, 5128, - 5130, 5132, 5121, 5133, 6320, 5117, 5134, 6320, 5136, 5137, + 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991, + 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008, + 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025, + 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048, + 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365, + 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085, + 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365, + 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110, + 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365, + 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365, - 5139, 6320, 5141, 5143, 5145, 5149, 6320, 5153, 5146, 5155, - 6320, 5157, 6320, 5158, 5159, 5162, 5169, 6320, 5165, 5166, - 6320, 5171, 5173, 5176, 5175, 6320, 5177, 6320, 5180, 5182, - 5183, 5187, 5189, 5191, 5192, 5193, 5194, 5202, 5198, 5199, - 6320, 6320, 135, 5207, 5209, 5210, 5213, 5212, 5220, 5215, - 5217, 5223, 6320, 6320, 5219, 6320, 5226, 5225, 6320, 5216, - 5235, 5236, 5227, 5242, 5231, 5239, 5229, 5251, 5246, 5252, - 5248, 5253, 5256, 5254, 5267, 5258, 5269, 5270, 5273, 5275, - 5278, 5265, 5280, 5282, 5283, 5284, 5286, 5287, 5288, 5290, - 6320, 5293, 5294, 5289, 6320, 5299, 5304, 5301, 5312, 6320, + 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167, + 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365, + 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202, + 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216, + 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234, + 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365, + 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266, + 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278, + 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294, + 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310, - 5306, 5313, 5314, 5315, 6320, 5316, 5319, 5321, 5320, 5326, - 5333, 5330, 5328, 5331, 6320, 6320, 6320, 5339, 5346, 6320, - 5348, 5336, 5338, 5340, 6320, 5342, 5349, 6320, 6320, 5352, - 5353, 5354, 5365, 6320, 5355, 6320, 5357, 6320, 5364, 5366, - 5372, 5370, 6320, 5375, 5381, 6320, 5384, 5387, 5389, 5390, - 5356, 5391, 5392, 6320, 5400, 5393, 5396, 5403, 5395, 5404, - 5405, 5406, 5407, 5414, 5409, 5418, 6320, 5415, 5422, 5423, - 5420, 5412, 5424, 5429, 5430, 6320, 5433, 6320, 5435, 5436, - 5437, 5438, 5440, 5442, 5360, 5446, 5443, 5445, 5453, 5455, - 5457, 6320, 5459, 5465, 6320, 5460, 6320, 5467, 6320, 5462, + 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336, + 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354, + 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373, + 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379, + 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394, + 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413, + 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419, + 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449, + 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466, + 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482, - 5468, 5469, 5470, 6320, 5472, 5473, 5474, 5477, 6320, 5482, - 5480, 5486, 5488, 6320, 6320, 5489, 5498, 5490, 5491, 5500, - 5502, 5503, 5507, 5504, 5508, 5510, 5518, 5514, 5516, 5511, - 5520, 5521, 5534, 6320, 6320, 6320, 5525, 5522, 5538, 5540, - 5541, 5549, 5527, 6320, 5546, 5548, 5550, 5552, 5559, 5556, - 5558, 6320, 5554, 5560, 5536, 5562, 5564, 5565, 5568, 5567, - 6320, 5570, 5580, 5577, 5581, 5583, 5586, 5590, 5592, 5587, - 5599, 5596, 6320, 5598, 6320, 6320, 5600, 6320, 5594, 5602, - 5603, 5604, 6320, 5607, 5608, 5609, 5611, 5615, 5618, 6320, - 5627, 5610, 5612, 5623, 6320, 6320, 5633, 6320, 5635, 5636, + 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365, + 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512, + 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524, + 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536, + 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564, + 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583, + 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365, + 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614, + 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637, + 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647, - 5626, 5643, 5638, 5639, 5645, 5646, 6320, 5642, 5648, 5649, - 5652, 5653, 6320, 5655, 5656, 5657, 5658, 6320, 5661, 5660, - 5665, 5666, 5667, 6320, 5669, 5670, 5686, 5684, 6320, 5671, - 5688, 5681, 6320, 6320, 5696, 5698, 5699, 6320, 6320, 6320, - 5700, 5673, 5702, 6320, 5707, 5711, 5715, 5719, 5710, 6320, - 5721, 5704, 5718, 6320, 6320, 5723, 5724, 5725, 5727, 6320, - 6320, 5728, 5729, 5731, 5733, 5734, 6320, 5737, 5738, 5739, - 5746, 5751, 5741, 5752, 5754, 5765, 5767, 5748, 5760, 5758, - 5769, 5771, 5762, 5778, 5786, 5782, 5784, 5790, 5792, 5793, - 6320, 6320, 5795, 5797, 5799, 6320, 6320, 5801, 5803, 5805, + 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653, + 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680, + 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696, + 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710, + 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727, + 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729, + 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761, + 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746, + 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798, + 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812, - 5807, 5810, 5812, 5814, 6320, 5815, 5817, 5818, 5819, 5820, - 6320, 5768, 5822, 5770, 5823, 5825, 5828, 5826, 5833, 6320, - 6320, 5830, 5835, 5834, 5842, 5839, 6320, 5844, 5851, 5849, - 5850, 5846, 5852, 5853, 6320, 5856, 5858, 6320, 6320, 6320, - 5859, 6320, 6320, 5854, 6320, 6320, 6320, 6320, 6320, 6320, - 6320, 5861, 6320, 5866, 5872, 5876, 5878, 6320, 5868, 5873, - 5881, 5883, 5884, 6320, 5886, 5888, 5887, 5893, 5889, 5896, - 5894, 5900, 5890, 5901, 5902, 5905, 5906, 5910, 5911, 5913, - 5914, 5916, 6320, 6320, 6320, 5912, 5923, 5925, 5928, 5930, - 5935, 5939, 5941, 5931, 5933, 5942, 5944, 5946, 5947, 5948, + 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365, + 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850, + 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862, + 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870, + 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892, + 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365, + 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906, + 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913, + 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943, + 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956, - 5958, 5954, 5955, 5956, 5957, 5960, 5965, 5966, 5969, 5971, - 6320, 5974, 6320, 5962, 6320, 6320, 5976, 5978, 5982, 5973, - 5991, 5993, 5983, 5986, 5984, 5995, 6002, 6005, 6320, 6320, - 5994, 5996, 6320, 5998, 6006, 6320, 6007, 6008, 6009, 6011, - 6017, 6014, 6018, 6020, 6022, 6320, 6320, 6019, 6026, 6029, - 6032, 6035, 6042, 6037, 6041, 6045, 6047, 6034, 6049, 6320, - 6055, 6051, 6058, 6320, 6059, 6060, 6061, 6062, 6064, 6071, - 6066, 6067, 6320, 6069, 6320, 6073, 6075, 6077, 6074, 6076, - 6078, 6088, 6092, 6086, 6320, 6090, 6100, 6094, 6102, 6104, - 6106, 6107, 6096, 6109, 6112, 6118, 6122, 6119, 6123, 6110, + 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982, + 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996, + 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014, + 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036, + 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038, + 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060, + 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078, + 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095, + 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110, + 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130, - 6127, 6124, 6320, 6134, 6125, 6320, 6131, 6135, 6128, 6137, - 6138, 6320, 6142, 6145, 6146, 6148, 6151, 6152, 6320, 6154, - 6158, 6155, 6320, 6161, 6320, 6320, 6163, 6160, 6167, 6170, - 6172, 6320, 6320, 6320, 6200, 6207, 6214, 6221, 6228, 6235, - 6242, 88, 6249, 6256, 6263, 6270, 6277, 6284, 6291, 6298, - 6305, 6312 + 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150, + 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169, + 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365, + 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203, + 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365, + 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88, + 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357 } ; -static const flex_int16_t yy_def[3253] = +static const flex_int16_t yy_def[3271] = { 0, - 3234, 1, 3235, 3235, 3236, 3236, 3237, 3237, 3238, 3238, - 3239, 3239, 3240, 3240, 3241, 3241, 3234, 3242, 3234, 3234, - 3234, 3234, 3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3244, 3234, 3234, 3234, - 3244, 3245, 3234, 3234, 3234, 3245, 3246, 3234, 3234, 3234, - 3234, 3246, 3247, 3234, 3234, 3234, 3247, 3248, 3234, 3249, - 3234, 3248, 3248, 3250, 3234, 3234, 3234, 3234, 3250, 3251, - 3234, 3234, 3234, 3251, 3242, 3242, 3234, 3252, 3243, 3252, - 3243, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256, + 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252, + 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252, + 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252, + 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267, + 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269, + 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270, + 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3244, 3244, 3245, - 3245, 3246, 3246, 3234, 3247, 3247, 3248, 3248, 3249, 3249, - 3248, 3250, 3250, 3234, 3251, 3251, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263, + 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267, + 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3234, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, + 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3248, 3248, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3248, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3248, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3234, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3234, 3234, 3242, 3234, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3248, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3248, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3234, 3234, 3242, 3234, 3242, 3234, 3242, 3242, 3234, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3248, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, + 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, + 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3234, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3248, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, - 3234, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3248, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, + 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, + 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3242, - 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3234, 3242, 3234, 3242, 3234, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260, + 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3234, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3234, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3234, 3234, 3234, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, 3242, 3234, - 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3234, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, + 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3234, 3242, 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3234, 3234, 3234, - 3242, 3234, 3234, 3242, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3234, 3242, 3242, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3234, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, + 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, + 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252, + 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260, + 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, - 3234, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3234, - 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3234, 3234, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3234, - 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3234, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3234, 3242, 3242, 3242, 3242, 3242, - 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, 3242, + 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, + 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, + 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3242, 3242, 3234, 3242, 3242, 3234, 3242, 3242, 3242, 3242, - 3242, 3234, 3242, 3242, 3242, 3242, 3242, 3242, 3234, 3242, - 3242, 3242, 3234, 3242, 3234, 3234, 3242, 3242, 3242, 3242, - 3242, 3234, 3234, 0, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234 + 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, + 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, + 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252 } ; -static const flex_int16_t yy_nxt[6361] = +static const flex_int16_t yy_nxt[6406] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1526,7 +1530,7 @@ static const flex_int16_t yy_nxt[6361] = 204, 199, 86, 202, 207, 209, 86, 213, 210, 86, 86, 206, 208, 86, 216, 86, 86, 86, 86, 218, 86, 211, 212, 219, 223, 215, 86, 225, 226, 86, - 224, 86, 214, 86, 217, 911, 221, 86, 227, 220, + 224, 86, 214, 86, 217, 918, 221, 86, 227, 220, 86, 222, 228, 86, 231, 86, 86, 86, 236, 86, 233, 86, 86, 229, 234, 230, 238, 86, 248, 86, 86, 232, 86, 86, 86, 239, 235, 86, 86, 237, @@ -1551,646 +1555,652 @@ static const flex_int16_t yy_nxt[6361] = 317, 326, 318, 86, 325, 86, 328, 86, 86, 330, 86, 331, 86, 327, 319, 86, 320, 86, 334, 86, 86, 336, 86, 337, 86, 335, 332, 86, 329, 86, - 86, 333, 86, 86, 86, 86, 86, 338, 340, 341, - 342, 344, 86, 86, 343, 347, 86, 346, 345, 86, - 351, 86, 86, 86, 357, 352, 86, 353, 348, 86, + 86, 333, 86, 86, 86, 343, 86, 338, 340, 341, + 342, 345, 86, 86, 344, 86, 86, 347, 86, 346, + 352, 86, 348, 86, 86, 353, 86, 86, 354, 358, - 86, 86, 349, 355, 360, 86, 86, 86, 363, 350, - 86, 354, 362, 356, 86, 86, 86, 366, 367, 358, - 359, 369, 365, 86, 86, 361, 86, 86, 86, 86, - 372, 373, 86, 364, 374, 368, 86, 376, 370, 168, - 86, 86, 371, 86, 86, 86, 377, 86, 86, 86, - 380, 381, 86, 86, 385, 383, 387, 166, 375, 379, - 382, 388, 86, 378, 86, 86, 391, 86, 384, 389, - 390, 86, 86, 86, 86, 386, 86, 86, 397, 86, - 86, 400, 398, 399, 86, 396, 392, 393, 86, 86, - 395, 86, 394, 86, 401, 402, 86, 404, 86, 86, + 349, 356, 350, 86, 361, 86, 86, 86, 351, 355, + 86, 86, 363, 364, 86, 86, 357, 86, 86, 367, + 86, 359, 360, 368, 366, 86, 362, 86, 86, 86, + 370, 428, 371, 365, 369, 168, 86, 86, 373, 374, + 86, 372, 375, 377, 86, 86, 378, 382, 86, 86, + 381, 380, 86, 86, 86, 86, 86, 86, 388, 389, + 386, 384, 390, 379, 86, 86, 376, 86, 86, 392, + 86, 383, 391, 86, 385, 86, 86, 86, 86, 387, + 399, 86, 402, 393, 394, 397, 86, 86, 86, 86, + 396, 395, 400, 86, 403, 401, 86, 86, 86, 405, - 405, 86, 403, 86, 408, 406, 407, 409, 86, 86, - 412, 86, 86, 414, 415, 416, 86, 410, 411, 86, - 86, 86, 86, 419, 417, 413, 86, 421, 422, 86, - 86, 420, 86, 86, 86, 86, 86, 428, 86, 86, - 86, 418, 429, 86, 86, 427, 86, 431, 425, 424, - 86, 434, 86, 423, 86, 436, 426, 432, 430, 439, - 86, 86, 433, 440, 435, 86, 438, 86, 86, 86, - 86, 454, 437, 441, 86, 450, 448, 86, 86, 164, - 451, 86, 452, 442, 86, 86, 443, 449, 461, 163, - 456, 444, 445, 446, 447, 86, 464, 455, 453, 86, + 86, 406, 166, 398, 407, 404, 86, 86, 86, 409, + 86, 408, 410, 86, 413, 415, 411, 417, 86, 412, + 86, 86, 86, 86, 416, 86, 422, 414, 86, 418, + 86, 420, 86, 421, 423, 86, 86, 86, 425, 86, + 86, 86, 429, 432, 86, 86, 419, 430, 86, 86, + 435, 86, 86, 426, 440, 431, 86, 427, 86, 424, + 86, 437, 86, 86, 433, 441, 434, 86, 439, 436, + 450, 86, 86, 86, 455, 442, 449, 451, 438, 86, + 86, 86, 86, 452, 563, 453, 456, 86, 443, 458, + 459, 444, 86, 457, 86, 462, 445, 446, 447, 448, - 459, 457, 458, 86, 86, 460, 86, 86, 467, 86, - 86, 469, 462, 465, 86, 463, 466, 86, 470, 468, - 86, 86, 471, 86, 86, 476, 86, 477, 86, 478, - 86, 86, 472, 86, 494, 481, 482, 86, 479, 475, - 473, 86, 86, 474, 86, 86, 483, 86, 480, 484, - 486, 488, 487, 86, 493, 485, 489, 495, 496, 86, - 86, 86, 86, 86, 86, 497, 86, 498, 161, 490, - 86, 168, 491, 499, 492, 86, 86, 500, 86, 86, - 512, 508, 513, 509, 515, 501, 86, 502, 86, 503, - 510, 511, 528, 523, 525, 86, 86, 524, 514, 526, + 460, 454, 86, 86, 86, 461, 86, 468, 86, 86, + 86, 463, 466, 467, 464, 469, 86, 465, 86, 470, + 86, 471, 86, 86, 472, 86, 86, 473, 474, 478, + 86, 86, 479, 86, 480, 86, 86, 496, 483, 86, + 484, 477, 475, 481, 485, 476, 86, 86, 86, 86, + 482, 488, 486, 489, 86, 86, 497, 491, 487, 498, + 86, 86, 86, 490, 495, 86, 499, 86, 500, 86, + 492, 86, 86, 493, 501, 494, 86, 86, 502, 86, + 515, 86, 512, 86, 551, 86, 503, 86, 504, 510, + 505, 513, 511, 514, 526, 517, 516, 168, 525, 527, - 86, 527, 504, 86, 86, 505, 86, 506, 86, 507, - 86, 86, 516, 517, 533, 529, 86, 531, 530, 86, - 86, 86, 518, 532, 519, 520, 521, 537, 86, 522, - 536, 535, 534, 86, 86, 86, 86, 538, 545, 86, - 543, 540, 539, 86, 86, 86, 546, 86, 541, 542, - 550, 544, 86, 86, 86, 548, 86, 86, 86, 547, - 86, 549, 553, 554, 555, 86, 86, 86, 86, 552, - 560, 564, 559, 86, 556, 86, 557, 551, 86, 565, - 86, 558, 561, 562, 86, 567, 86, 86, 86, 86, - 581, 86, 568, 569, 566, 584, 86, 573, 86, 86, + 86, 86, 86, 506, 528, 86, 507, 529, 508, 86, + 509, 86, 86, 518, 519, 86, 535, 532, 530, 531, + 86, 533, 86, 520, 86, 521, 522, 523, 534, 539, + 524, 86, 86, 86, 86, 86, 541, 86, 538, 540, + 537, 536, 546, 86, 548, 86, 549, 86, 86, 545, + 86, 553, 543, 544, 542, 86, 86, 86, 547, 86, + 557, 558, 552, 86, 556, 86, 86, 550, 86, 86, + 86, 86, 555, 564, 565, 86, 86, 86, 86, 567, + 554, 568, 560, 562, 561, 559, 86, 570, 86, 571, + 86, 566, 573, 572, 86, 86, 569, 86, 86, 584, - 563, 86, 570, 572, 576, 571, 583, 582, 574, 86, - 575, 86, 577, 578, 586, 86, 579, 580, 585, 86, - 86, 588, 86, 589, 86, 590, 86, 86, 593, 591, - 86, 86, 587, 595, 86, 86, 596, 86, 598, 599, - 86, 86, 86, 594, 600, 86, 592, 86, 597, 86, - 86, 605, 603, 86, 604, 86, 601, 86, 86, 606, - 86, 86, 86, 602, 611, 607, 612, 86, 614, 610, - 86, 86, 613, 86, 86, 608, 609, 86, 615, 86, - 617, 86, 619, 86, 86, 621, 86, 86, 86, 86, - 629, 616, 622, 618, 631, 620, 86, 86, 624, 86, + 579, 86, 586, 576, 575, 86, 574, 585, 580, 581, + 588, 86, 582, 583, 577, 587, 578, 589, 86, 86, + 86, 86, 86, 86, 592, 591, 86, 594, 164, 593, + 86, 596, 86, 598, 86, 86, 86, 86, 601, 590, + 599, 595, 602, 86, 86, 597, 86, 603, 86, 600, + 86, 86, 86, 608, 86, 606, 607, 86, 86, 604, + 86, 609, 86, 86, 86, 614, 610, 605, 615, 86, + 617, 86, 613, 86, 86, 616, 612, 611, 618, 86, + 620, 86, 622, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 619, 624, 86, 625, 621, 633, 86, 636, - 86, 159, 86, 628, 623, 625, 630, 626, 627, 86, - 86, 86, 86, 633, 632, 636, 637, 639, 634, 86, - 86, 635, 86, 86, 642, 641, 638, 86, 86, 86, - 86, 86, 645, 648, 644, 86, 86, 86, 86, 640, - 649, 86, 651, 86, 86, 86, 86, 86, 643, 665, - 646, 650, 647, 86, 652, 86, 654, 86, 86, 668, - 653, 86, 655, 667, 663, 666, 86, 656, 664, 657, - 86, 672, 671, 86, 86, 658, 86, 659, 669, 676, - 660, 661, 670, 675, 86, 86, 673, 662, 86, 674, - 677, 679, 678, 86, 86, 682, 86, 86, 684, 86, + 627, 163, 630, 86, 623, 632, 86, 626, 628, 631, + 629, 635, 637, 86, 86, 634, 86, 86, 86, 640, + 643, 638, 86, 646, 639, 86, 86, 86, 641, 86, + 645, 86, 86, 642, 86, 86, 649, 86, 86, 648, + 653, 652, 644, 86, 86, 86, 86, 647, 655, 86, + 86, 86, 86, 654, 650, 651, 86, 86, 86, 658, + 656, 669, 672, 86, 657, 86, 659, 668, 707, 667, + 670, 660, 671, 661, 86, 86, 86, 86, 675, 662, + 676, 663, 673, 86, 664, 665, 674, 86, 680, 86, + 677, 666, 679, 678, 86, 86, 685, 86, 683, 681, - 86, 86, 86, 86, 86, 86, 86, 680, 86, 690, - 86, 86, 686, 681, 685, 691, 687, 694, 86, 695, - 693, 683, 688, 86, 689, 168, 697, 692, 86, 696, - 698, 86, 86, 86, 86, 86, 86, 86, 699, 704, - 86, 743, 706, 86, 709, 701, 86, 700, 702, 705, - 86, 707, 703, 708, 86, 711, 86, 86, 710, 86, - 713, 86, 86, 86, 86, 86, 717, 86, 712, 716, - 722, 86, 86, 714, 718, 723, 86, 715, 725, 86, - 770, 719, 727, 721, 720, 724, 726, 86, 86, 728, - 86, 729, 86, 730, 86, 731, 86, 86, 86, 86, + 86, 686, 86, 682, 86, 688, 86, 86, 86, 86, + 86, 86, 684, 86, 86, 694, 161, 689, 690, 86, + 695, 86, 687, 691, 168, 698, 692, 701, 700, 697, + 699, 693, 696, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 710, 708, 86, 86, 702, 832, 86, 86, + 703, 705, 86, 706, 709, 704, 712, 713, 86, 714, + 716, 715, 86, 86, 717, 86, 86, 86, 711, 86, + 718, 86, 86, 86, 721, 722, 719, 727, 720, 86, + 723, 86, 728, 86, 730, 86, 741, 724, 86, 726, + 725, 732, 729, 731, 86, 733, 86, 86, 734, 86, - 732, 86, 86, 736, 86, 735, 86, 86, 734, 739, - 86, 744, 738, 86, 86, 733, 737, 86, 740, 86, - 86, 86, 86, 745, 86, 747, 86, 749, 86, 742, - 741, 86, 746, 752, 86, 748, 755, 750, 86, 86, - 86, 86, 86, 756, 176, 751, 86, 753, 86, 86, - 762, 758, 86, 757, 754, 86, 759, 765, 761, 763, - 760, 86, 764, 86, 769, 86, 766, 86, 771, 767, - 86, 772, 86, 86, 86, 86, 775, 774, 768, 776, - 86, 86, 86, 86, 86, 783, 86, 86, 779, 781, - 86, 777, 86, 773, 789, 780, 784, 86, 778, 86, + 735, 86, 736, 86, 86, 86, 86, 737, 86, 738, + 745, 86, 743, 739, 740, 86, 86, 86, 744, 86, + 749, 86, 742, 748, 86, 750, 86, 86, 86, 86, + 86, 754, 752, 86, 86, 86, 747, 86, 760, 746, + 757, 86, 751, 753, 86, 86, 761, 86, 755, 756, + 758, 86, 86, 86, 767, 763, 86, 759, 86, 762, + 764, 86, 86, 770, 765, 766, 771, 86, 774, 768, + 86, 86, 769, 86, 86, 86, 772, 777, 776, 775, + 86, 86, 773, 86, 780, 779, 86, 782, 781, 86, + 86, 86, 86, 788, 86, 86, 784, 786, 86, 778, - 86, 86, 86, 782, 86, 791, 787, 790, 786, 785, - 86, 788, 792, 793, 86, 86, 86, 794, 86, 798, - 800, 795, 796, 799, 797, 86, 86, 86, 86, 803, - 801, 86, 86, 802, 804, 86, 86, 810, 86, 86, - 86, 807, 86, 86, 805, 806, 86, 813, 812, 86, - 815, 86, 819, 816, 817, 808, 809, 811, 86, 86, - 814, 86, 822, 86, 824, 86, 821, 823, 86, 818, - 86, 820, 826, 86, 86, 86, 828, 86, 86, 86, - 86, 834, 86, 86, 86, 86, 835, 86, 86, 86, - 825, 86, 827, 829, 836, 830, 831, 86, 832, 837, + 86, 86, 794, 785, 783, 86, 86, 789, 86, 86, + 792, 787, 795, 159, 790, 86, 791, 793, 796, 797, + 798, 86, 86, 86, 799, 86, 803, 801, 800, 86, + 805, 86, 86, 86, 804, 86, 86, 86, 806, 802, + 809, 86, 808, 86, 86, 810, 86, 816, 813, 86, + 86, 86, 817, 86, 811, 819, 807, 812, 818, 86, + 821, 86, 814, 815, 86, 86, 825, 823, 822, 86, + 828, 820, 86, 86, 827, 829, 86, 826, 86, 830, + 86, 86, 824, 834, 86, 86, 86, 86, 86, 840, + 86, 86, 86, 86, 841, 86, 86, 86, 831, 833, - 833, 839, 86, 838, 843, 86, 842, 86, 840, 841, - 86, 86, 86, 86, 86, 86, 844, 845, 848, 86, - 86, 86, 86, 86, 857, 86, 846, 855, 850, 858, - 847, 849, 86, 851, 86, 856, 86, 852, 853, 854, - 86, 86, 86, 86, 86, 860, 862, 86, 867, 86, - 861, 859, 86, 86, 866, 86, 863, 865, 869, 868, - 870, 864, 86, 86, 86, 86, 168, 871, 86, 872, - 86, 877, 873, 878, 875, 86, 86, 86, 874, 879, - 876, 86, 86, 86, 885, 86, 881, 888, 86, 86, - 880, 86, 886, 86, 86, 891, 882, 883, 889, 86, + 842, 86, 835, 836, 837, 86, 838, 843, 839, 86, + 849, 844, 846, 847, 86, 845, 86, 86, 86, 86, + 848, 86, 86, 850, 86, 854, 851, 86, 86, 86, + 86, 86, 863, 86, 861, 856, 852, 853, 86, 86, + 855, 86, 857, 864, 862, 858, 859, 860, 86, 866, + 86, 86, 865, 868, 86, 867, 86, 86, 86, 86, + 86, 86, 873, 872, 875, 874, 869, 871, 86, 86, + 870, 86, 86, 876, 86, 880, 878, 168, 877, 86, + 879, 881, 883, 885, 86, 86, 882, 884, 86, 86, + 86, 86, 891, 86, 86, 892, 86, 887, 86, 886, - 887, 86, 86, 884, 86, 86, 893, 897, 86, 86, - 86, 894, 890, 86, 892, 86, 898, 899, 86, 86, - 86, 86, 86, 896, 86, 86, 913, 900, 914, 895, - 912, 86, 86, 915, 910, 86, 917, 86, 902, 922, - 901, 86, 174, 903, 86, 918, 904, 916, 86, 919, - 905, 86, 86, 906, 86, 921, 933, 86, 924, 932, - 907, 908, 920, 909, 86, 86, 86, 86, 86, 86, - 935, 937, 923, 86, 925, 926, 967, 927, 86, 86, - 928, 936, 86, 934, 938, 929, 86, 939, 86, 942, - 943, 930, 931, 940, 941, 944, 86, 86, 86, 946, + 894, 86, 86, 893, 888, 889, 86, 895, 898, 86, + 86, 890, 86, 900, 86, 896, 899, 897, 86, 904, + 86, 86, 901, 86, 86, 86, 86, 86, 905, 86, + 906, 86, 86, 925, 86, 86, 903, 902, 919, 907, + 920, 921, 917, 86, 86, 86, 909, 923, 86, 908, + 86, 86, 910, 922, 86, 911, 86, 926, 924, 912, + 86, 928, 913, 86, 86, 929, 940, 931, 930, 914, + 915, 927, 916, 86, 86, 932, 933, 86, 934, 86, + 86, 935, 939, 86, 942, 86, 936, 943, 945, 944, + 86, 86, 937, 938, 86, 86, 950, 941, 949, 86, - 86, 948, 86, 947, 945, 86, 86, 949, 950, 952, - 86, 951, 86, 86, 953, 86, 86, 86, 86, 86, - 956, 86, 960, 86, 86, 954, 959, 86, 86, 963, - 86, 86, 969, 86, 955, 965, 86, 957, 958, 961, - 86, 962, 86, 985, 970, 968, 973, 972, 964, 971, - 86, 974, 86, 966, 86, 976, 86, 86, 86, 975, - 86, 86, 978, 977, 980, 86, 979, 981, 86, 86, - 86, 86, 86, 987, 86, 86, 984, 982, 86, 990, - 86, 86, 86, 86, 988, 86, 989, 86, 983, 86, - 992, 986, 993, 86, 995, 86, 996, 86, 997, 991, + 86, 951, 86, 86, 953, 86, 947, 952, 86, 946, + 86, 955, 86, 956, 954, 957, 86, 959, 86, 948, + 86, 958, 960, 86, 962, 86, 86, 86, 86, 963, + 86, 86, 967, 86, 86, 961, 86, 970, 966, 86, + 86, 86, 968, 974, 984, 86, 964, 965, 969, 86, + 975, 971, 972, 976, 86, 86, 176, 977, 980, 981, + 979, 973, 978, 86, 86, 86, 86, 983, 86, 86, + 86, 982, 86, 86, 985, 987, 86, 986, 988, 86, + 989, 86, 86, 86, 994, 86, 991, 86, 990, 992, + 86, 997, 86, 998, 86, 86, 995, 86, 996, 86, - 86, 86, 998, 86, 86, 1005, 994, 999, 1003, 86, - 1001, 86, 86, 1004, 86, 86, 1002, 86, 1013, 86, - 1010, 1008, 86, 86, 1006, 1000, 86, 86, 1011, 1012, - 1007, 1015, 86, 86, 86, 86, 86, 86, 86, 1009, - 86, 1026, 1023, 1014, 1016, 1021, 86, 86, 86, 86, - 86, 173, 1017, 1018, 86, 1020, 1019, 1027, 1024, 86, - 1022, 1028, 86, 86, 86, 1025, 86, 1033, 1030, 1029, - 1031, 1034, 86, 1032, 86, 1036, 86, 86, 86, 86, - 1043, 86, 1044, 1035, 1038, 86, 86, 1046, 86, 86, - 1048, 86, 86, 86, 1037, 1050, 86, 1039, 1041, 1045, + 86, 86, 993, 86, 1000, 86, 1001, 86, 1003, 86, + 1004, 86, 1005, 999, 86, 86, 1006, 86, 1013, 1007, + 1011, 86, 86, 1009, 1002, 1012, 86, 86, 1010, 86, + 86, 86, 1008, 86, 1018, 1020, 1014, 86, 1016, 1021, + 86, 1015, 1019, 86, 86, 86, 86, 86, 1023, 86, + 1025, 1017, 86, 86, 86, 86, 1029, 1031, 1022, 86, + 86, 86, 1034, 86, 86, 1024, 1026, 1027, 86, 1028, + 1035, 1036, 1032, 86, 1033, 1030, 86, 1038, 1040, 1037, + 86, 86, 1039, 1042, 86, 1041, 86, 86, 86, 86, + 1044, 86, 86, 1043, 1051, 1046, 1052, 1054, 86, 86, - 1040, 1042, 1049, 86, 86, 86, 86, 1056, 86, 1047, - 1054, 1051, 1057, 86, 86, 1052, 1058, 86, 86, 86, - 1061, 1063, 86, 1053, 86, 1055, 86, 86, 86, 1066, - 1060, 86, 1059, 1065, 1067, 168, 86, 86, 1070, 1062, - 1069, 86, 1064, 86, 86, 86, 1068, 86, 1073, 1071, - 86, 86, 86, 1085, 86, 86, 1088, 86, 1086, 86, - 86, 1072, 86, 1074, 1076, 86, 1090, 1077, 86, 1075, - 1087, 1147, 1078, 86, 1091, 86, 1079, 86, 1080, 1092, - 1093, 1095, 1081, 86, 1082, 1089, 1096, 86, 86, 1083, - 86, 1094, 1097, 86, 1084, 86, 86, 1099, 86, 86, + 86, 1056, 86, 86, 86, 86, 1045, 86, 1047, 1057, + 1049, 1048, 1050, 1053, 86, 86, 86, 1060, 1055, 1062, + 1058, 86, 1065, 1059, 86, 1061, 86, 1064, 86, 86, + 86, 86, 1066, 1069, 1071, 86, 86, 1068, 86, 86, + 1074, 86, 1063, 1073, 86, 1075, 168, 86, 1067, 86, + 86, 1070, 86, 1077, 1072, 1081, 1076, 86, 1078, 86, + 86, 86, 86, 86, 86, 1094, 1079, 1080, 86, 1097, + 86, 1082, 1095, 86, 1084, 1085, 86, 86, 86, 86, + 86, 1086, 1099, 1083, 1087, 86, 1119, 174, 1088, 86, + 1089, 1096, 1100, 1101, 1090, 86, 1091, 86, 1098, 1104, - 1102, 86, 1098, 1105, 86, 1101, 86, 86, 1104, 1100, - 1103, 86, 1111, 1106, 1112, 1109, 1115, 1110, 1108, 1113, - 86, 86, 1107, 1114, 86, 86, 1116, 86, 86, 86, - 86, 86, 86, 86, 86, 1131, 1128, 86, 86, 86, - 86, 1127, 1132, 86, 86, 1130, 86, 1118, 1119, 1117, - 86, 1120, 1129, 1134, 1133, 1138, 1121, 86, 1122, 1135, - 1137, 86, 1136, 86, 1123, 86, 86, 86, 1139, 1124, - 1125, 1143, 86, 86, 1146, 1140, 1126, 1144, 86, 86, - 86, 1141, 1150, 86, 1142, 86, 86, 1145, 86, 86, - 1151, 86, 1149, 1156, 86, 1153, 86, 1148, 1154, 86, + 1102, 1092, 86, 1103, 1105, 86, 1093, 86, 86, 1113, + 86, 1106, 1108, 86, 86, 86, 86, 86, 1111, 1114, + 1121, 1107, 86, 86, 1109, 1110, 86, 1120, 1112, 1115, + 1122, 1117, 1118, 1123, 86, 1124, 86, 1116, 1125, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 1137, 86, + 1140, 86, 86, 86, 1136, 1142, 1141, 86, 1139, 86, + 1127, 1126, 86, 1128, 86, 1129, 1138, 1143, 1147, 86, + 1130, 86, 1131, 86, 86, 1146, 1144, 86, 1132, 86, + 173, 1145, 1148, 1133, 1134, 1152, 86, 1149, 86, 1150, + 1135, 1154, 1153, 1155, 86, 86, 86, 1151, 1156, 86, - 86, 86, 1152, 1157, 86, 1159, 86, 1155, 86, 86, - 86, 86, 86, 86, 86, 1158, 86, 1166, 1161, 1164, - 1163, 1160, 1165, 86, 1168, 1169, 1162, 86, 1170, 1167, - 86, 86, 86, 86, 86, 86, 1171, 86, 1176, 1177, - 1178, 1173, 1172, 86, 1180, 1181, 1179, 1175, 86, 1174, - 86, 86, 1184, 86, 86, 86, 1186, 1185, 86, 1187, - 86, 1182, 86, 1188, 86, 86, 1183, 1189, 86, 1195, - 86, 1197, 86, 86, 1190, 86, 1201, 86, 1191, 86, - 1194, 1193, 1192, 86, 1199, 86, 86, 1198, 86, 86, - 1196, 1203, 86, 1204, 86, 86, 86, 1200, 86, 1206, + 1159, 86, 86, 86, 1165, 86, 86, 1160, 86, 1158, + 86, 86, 1162, 1157, 1163, 86, 86, 86, 86, 86, + 1161, 86, 1168, 86, 1164, 1166, 86, 86, 86, 1175, + 1167, 86, 1170, 1172, 1177, 1169, 1173, 1174, 86, 1171, + 86, 86, 86, 1176, 86, 86, 86, 1178, 86, 86, + 86, 86, 1179, 1185, 1186, 1187, 1182, 86, 86, 1189, + 1184, 1180, 1190, 1181, 1183, 86, 1188, 1192, 86, 1193, + 86, 86, 86, 1195, 1194, 86, 1196, 86, 1191, 86, + 1197, 86, 86, 86, 1198, 86, 1204, 1206, 86, 86, + 86, 1199, 86, 86, 1208, 1200, 1202, 1203, 86, 1201, - 1207, 86, 1209, 1212, 1208, 1205, 1202, 1211, 86, 86, - 1213, 86, 86, 86, 1210, 86, 1216, 1214, 86, 1217, - 86, 86, 86, 86, 86, 1221, 1223, 86, 1224, 1225, - 1215, 86, 86, 1218, 86, 86, 1222, 86, 1228, 1219, - 1226, 1220, 1227, 1231, 86, 1229, 86, 86, 86, 86, - 86, 1230, 1232, 1233, 86, 1234, 86, 1235, 86, 86, - 86, 1238, 1239, 86, 86, 86, 1244, 1245, 1236, 86, - 86, 1240, 86, 86, 1247, 1237, 1242, 1248, 86, 86, - 86, 1241, 1252, 86, 1243, 1246, 86, 86, 86, 86, - 86, 86, 1258, 86, 1250, 1251, 168, 1254, 1249, 86, + 86, 1210, 86, 1207, 1209, 1205, 86, 1212, 86, 86, + 86, 1213, 86, 86, 1215, 1216, 86, 86, 1218, 86, + 1221, 1211, 86, 1220, 1214, 1217, 86, 1222, 86, 86, + 86, 1223, 1219, 1225, 86, 1226, 86, 1224, 86, 86, + 86, 86, 1230, 1232, 1233, 86, 1234, 1227, 1237, 86, + 86, 86, 86, 1231, 86, 1228, 1235, 1236, 1229, 86, + 1240, 86, 86, 1238, 1242, 86, 86, 1241, 86, 86, + 1243, 86, 86, 86, 86, 1247, 1248, 1244, 86, 1239, + 86, 86, 1253, 1254, 86, 1249, 86, 1245, 86, 86, + 1246, 1256, 1251, 1257, 86, 86, 1250, 86, 86, 1255, - 86, 86, 86, 1265, 86, 1253, 1263, 86, 1255, 86, - 1257, 168, 1262, 1260, 1267, 1256, 1259, 1261, 1264, 1268, - 86, 86, 86, 86, 1270, 86, 1269, 1266, 1271, 86, - 86, 86, 86, 86, 86, 86, 1274, 86, 1280, 86, - 86, 1277, 86, 1272, 1273, 86, 86, 1275, 86, 166, - 1278, 1284, 1276, 86, 1281, 86, 1279, 86, 1286, 1290, - 1282, 1283, 86, 1291, 1294, 86, 86, 1287, 1285, 1288, - 1292, 86, 1289, 1293, 86, 86, 86, 86, 1296, 86, - 1295, 86, 86, 86, 1300, 86, 1299, 1303, 86, 86, - 1297, 86, 1307, 86, 1298, 1302, 86, 86, 86, 1304, + 1252, 1261, 86, 86, 86, 86, 86, 86, 1267, 86, + 1260, 1259, 1263, 168, 1258, 86, 86, 86, 86, 86, + 1262, 1274, 86, 1264, 1272, 86, 1266, 1273, 1271, 1269, + 1276, 1265, 1270, 1268, 1277, 86, 86, 86, 86, 86, + 86, 1280, 1279, 1281, 86, 1275, 86, 86, 86, 86, + 86, 1278, 1284, 86, 86, 1290, 86, 1287, 1282, 86, + 1283, 86, 86, 1285, 86, 86, 168, 86, 1286, 1288, + 1294, 1300, 1289, 1291, 86, 86, 86, 1293, 86, 1292, + 1296, 86, 1301, 1302, 86, 1295, 1303, 86, 86, 1297, + 1305, 1298, 1308, 86, 1299, 1304, 1306, 86, 86, 86, - 1301, 1308, 1305, 1309, 86, 86, 1313, 1306, 1312, 1310, - 1311, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 1319, 86, 86, 86, 1314, 1315, 1317, 1318, - 1320, 1324, 1316, 86, 86, 86, 1321, 86, 1323, 1325, - 1322, 1326, 1328, 1327, 86, 86, 86, 1335, 86, 1329, - 86, 86, 86, 86, 1330, 86, 1331, 86, 86, 1338, - 1333, 86, 1332, 1336, 1337, 86, 1334, 1341, 1342, 86, - 1340, 1346, 1339, 1343, 86, 1345, 1344, 86, 1347, 86, - 86, 86, 1354, 86, 1348, 1356, 1358, 1349, 1350, 1355, - 86, 86, 1351, 86, 1357, 1360, 86, 1363, 1352, 1359, + 86, 86, 86, 1307, 1310, 86, 1309, 1313, 86, 1317, + 86, 86, 1312, 86, 86, 1314, 1315, 1311, 1318, 1319, + 86, 86, 86, 86, 86, 1321, 1322, 1316, 86, 86, + 1323, 1320, 86, 86, 86, 86, 86, 86, 1324, 1325, + 86, 1327, 1329, 86, 1330, 86, 1334, 1326, 1328, 86, + 86, 86, 86, 1331, 86, 1333, 86, 1332, 1335, 1338, + 86, 86, 86, 86, 1345, 1336, 1339, 166, 1341, 1337, + 86, 1340, 86, 86, 86, 1343, 86, 1346, 1350, 1342, + 86, 1344, 1348, 1349, 1352, 86, 1347, 86, 1351, 1353, + 86, 86, 1357, 86, 1367, 86, 86, 1368, 1356, 1354, - 86, 86, 1353, 86, 1364, 1361, 86, 1365, 1362, 86, - 86, 86, 1366, 86, 1367, 86, 86, 86, 86, 1375, - 1376, 1372, 1370, 86, 86, 86, 86, 1416, 1377, 1369, - 1368, 1373, 86, 86, 86, 1371, 1374, 1378, 86, 1384, - 86, 1379, 1385, 1386, 86, 86, 1380, 86, 1381, 86, - 1382, 1387, 1383, 1388, 86, 1392, 1395, 86, 86, 1389, - 1393, 86, 86, 1391, 86, 1390, 1394, 1396, 86, 86, - 86, 1402, 1397, 1398, 86, 1403, 86, 86, 86, 86, - 86, 86, 86, 86, 1401, 1406, 1404, 1399, 1400, 86, - 1405, 1408, 86, 1407, 1411, 1412, 86, 1414, 86, 1409, + 86, 1355, 86, 1358, 1366, 86, 1365, 1359, 86, 86, + 1360, 1361, 1371, 1369, 1370, 1362, 164, 86, 86, 86, + 86, 1363, 1372, 86, 1373, 1364, 86, 1374, 86, 1376, + 1375, 86, 86, 86, 1377, 86, 1378, 86, 86, 1386, + 1379, 1380, 1381, 1383, 1387, 86, 86, 86, 163, 1384, + 86, 1388, 1382, 86, 86, 1385, 1390, 1389, 86, 1395, + 86, 1391, 86, 1392, 1399, 1393, 86, 1394, 1396, 1397, + 86, 86, 1401, 1398, 86, 86, 86, 1403, 86, 1402, + 86, 1400, 1404, 86, 1405, 1407, 86, 1409, 86, 86, + 1408, 1413, 86, 1414, 86, 86, 1406, 86, 86, 86, - 86, 86, 1415, 86, 86, 86, 1417, 1413, 1410, 1420, - 86, 1422, 86, 1419, 86, 1423, 86, 86, 86, 1427, - 86, 1424, 1418, 86, 86, 1421, 86, 1429, 86, 86, - 86, 86, 1433, 1431, 86, 86, 86, 1435, 1425, 1426, - 1432, 1437, 86, 1428, 86, 86, 1430, 1434, 86, 1439, - 1436, 86, 86, 1440, 86, 1495, 1438, 1441, 86, 1442, - 86, 1443, 86, 1444, 86, 86, 1445, 1449, 1446, 1450, - 1452, 1447, 86, 86, 86, 86, 86, 1451, 1448, 86, - 86, 1456, 86, 1453, 86, 168, 86, 86, 1461, 1462, - 86, 1455, 86, 1464, 86, 86, 1463, 86, 1454, 86, + 86, 86, 1415, 1412, 1417, 1410, 86, 1411, 86, 1416, + 1419, 86, 1418, 1422, 1423, 86, 1425, 86, 1420, 86, + 86, 1426, 86, 1427, 86, 86, 1424, 1428, 1431, 86, + 86, 1421, 1433, 86, 1430, 86, 1434, 86, 86, 86, + 1438, 86, 1435, 1429, 86, 86, 86, 86, 1440, 86, + 1432, 86, 1442, 1444, 86, 86, 86, 86, 1443, 1436, + 1437, 1448, 86, 86, 1439, 1446, 1441, 86, 1450, 86, + 1447, 1449, 1445, 86, 1452, 1451, 86, 1454, 1453, 86, + 86, 86, 86, 86, 1455, 1460, 1461, 1457, 86, 1458, + 86, 86, 86, 1462, 1463, 86, 1459, 86, 1456, 1464, - 1458, 86, 86, 86, 1457, 86, 1459, 86, 1471, 86, - 1460, 1465, 1467, 1468, 86, 86, 1469, 1466, 1476, 86, - 1475, 1470, 86, 86, 86, 1472, 86, 86, 1478, 86, - 1480, 86, 1474, 86, 1473, 1481, 86, 86, 1483, 1484, - 86, 1485, 86, 1479, 1482, 1477, 86, 1489, 1486, 1491, - 1490, 86, 1487, 1492, 86, 1488, 1494, 86, 1497, 86, - 1493, 86, 86, 1498, 86, 1496, 86, 86, 86, 86, - 86, 1502, 1503, 86, 86, 1506, 1499, 86, 86, 1501, - 86, 1511, 86, 86, 86, 1500, 1504, 1512, 1508, 1505, - 86, 1515, 86, 1507, 86, 1509, 1510, 86, 86, 86, + 86, 1467, 86, 86, 168, 86, 86, 1472, 1466, 1473, + 86, 1475, 86, 86, 1465, 86, 1474, 86, 86, 1469, + 86, 86, 86, 1468, 86, 1470, 1476, 86, 1483, 1471, + 86, 86, 1477, 1480, 86, 86, 1481, 161, 1478, 86, + 1479, 86, 1482, 86, 1487, 1488, 86, 86, 1490, 1492, + 1484, 86, 1486, 86, 1493, 86, 1485, 86, 1489, 1496, + 1491, 86, 1495, 86, 86, 1494, 86, 86, 86, 1501, + 1504, 1497, 1502, 86, 1506, 1503, 1498, 86, 1499, 86, + 86, 1500, 86, 1507, 1509, 86, 1511, 1505, 1508, 1510, + 86, 86, 86, 86, 86, 86, 1514, 1515, 86, 86, - 1513, 86, 1516, 1514, 86, 86, 86, 86, 1518, 1522, - 86, 1517, 1523, 1519, 1520, 1524, 1526, 86, 1527, 86, - 1521, 86, 86, 1532, 1525, 86, 1531, 86, 86, 86, - 1529, 1534, 86, 86, 1528, 86, 86, 1541, 86, 1535, - 1539, 1533, 1530, 1538, 1536, 1540, 86, 86, 1542, 1543, - 86, 86, 86, 86, 86, 86, 1537, 1544, 86, 86, - 86, 1545, 86, 1550, 86, 86, 1549, 86, 86, 1547, - 1553, 1556, 1546, 1548, 86, 1552, 1557, 86, 1554, 1558, - 1551, 86, 1561, 86, 1559, 86, 86, 1555, 86, 86, - 86, 86, 86, 1569, 1560, 1565, 86, 1564, 86, 86, + 1518, 86, 86, 1513, 86, 1523, 86, 86, 1512, 86, + 1524, 1516, 86, 1520, 1517, 1527, 86, 86, 1519, 1521, + 1522, 86, 86, 86, 1528, 1525, 86, 86, 1526, 86, + 86, 1530, 1534, 86, 86, 1529, 1535, 1531, 1532, 1536, + 86, 1539, 1538, 86, 86, 1533, 86, 86, 1537, 86, + 1543, 1544, 86, 1541, 1546, 86, 86, 86, 1540, 86, + 86, 1545, 1547, 1551, 1552, 1550, 1542, 86, 1548, 86, + 86, 86, 1553, 86, 1554, 1555, 86, 86, 86, 86, + 1549, 1556, 86, 86, 86, 1558, 86, 1557, 86, 1563, + 86, 1559, 86, 1562, 86, 1566, 1560, 86, 1561, 86, - 1572, 1570, 1562, 86, 86, 1563, 86, 86, 1566, 1575, - 1568, 1567, 86, 1574, 86, 86, 86, 86, 86, 86, - 86, 1583, 1573, 1576, 1571, 86, 164, 86, 1584, 1586, - 86, 1577, 1580, 1578, 1582, 1579, 1587, 86, 1581, 1585, - 86, 86, 86, 86, 86, 1588, 1589, 86, 86, 1593, - 86, 86, 1591, 1594, 1590, 86, 1597, 1592, 86, 1601, - 86, 86, 86, 1598, 1603, 86, 1595, 1602, 1596, 86, - 86, 86, 86, 1607, 1600, 1599, 1604, 1606, 1605, 86, - 86, 86, 1612, 1608, 1613, 86, 86, 86, 86, 86, - 1618, 1609, 86, 1617, 1616, 86, 86, 86, 1610, 1620, + 1565, 1569, 86, 1574, 1564, 1571, 1570, 86, 1567, 86, + 1572, 86, 86, 86, 86, 86, 1568, 86, 86, 1573, + 1578, 1582, 1577, 86, 86, 86, 1585, 86, 1575, 1583, + 86, 1576, 86, 1579, 86, 1588, 1581, 1580, 86, 86, + 1587, 86, 86, 86, 1586, 86, 86, 1596, 86, 1584, + 86, 1594, 86, 1597, 1599, 86, 86, 1589, 1590, 1593, + 1602, 1591, 1592, 1595, 1598, 1600, 86, 86, 86, 86, + 86, 86, 1601, 1606, 86, 86, 86, 1607, 1604, 86, + 1610, 1603, 86, 1605, 1614, 86, 86, 86, 86, 1616, + 1608, 1611, 1609, 1615, 86, 86, 86, 86, 1613, 1612, - 86, 1611, 86, 86, 1614, 1621, 1622, 86, 1615, 86, - 86, 86, 1625, 1623, 86, 1619, 86, 1628, 86, 1624, - 1627, 86, 86, 86, 86, 1634, 86, 1632, 86, 1629, - 1626, 86, 86, 86, 1639, 1635, 86, 1633, 86, 1630, - 1631, 86, 86, 1642, 1644, 86, 1636, 1637, 86, 86, - 1640, 86, 1645, 86, 1647, 86, 1638, 1643, 86, 1641, - 86, 168, 1650, 86, 1653, 86, 1649, 86, 1652, 1646, - 86, 86, 86, 1648, 86, 86, 1661, 1654, 86, 1651, - 86, 86, 86, 1662, 1656, 1655, 1659, 86, 86, 1670, - 1657, 1658, 86, 1666, 1668, 86, 1665, 86, 86, 1660, + 1618, 1617, 1619, 86, 86, 86, 1625, 1620, 1621, 1626, + 86, 86, 86, 86, 1622, 86, 1624, 86, 1630, 1631, + 1629, 86, 86, 1623, 86, 86, 1633, 86, 86, 1627, + 86, 1634, 1635, 86, 1628, 86, 86, 86, 1636, 1638, + 1637, 1632, 86, 1641, 1640, 86, 86, 86, 86, 86, + 1639, 86, 1642, 1645, 86, 1647, 86, 86, 1648, 86, + 1652, 1646, 86, 86, 86, 1644, 1643, 86, 86, 1649, + 86, 1650, 1655, 1657, 86, 86, 1653, 86, 1660, 1656, + 86, 1654, 1651, 86, 1658, 86, 1662, 1663, 1659, 86, + 1666, 86, 1661, 168, 1665, 86, 86, 86, 86, 86, - 1663, 1664, 1667, 1669, 1672, 86, 1674, 86, 86, 86, - 86, 86, 86, 86, 1679, 1676, 1677, 1671, 86, 1673, - 86, 1680, 86, 86, 86, 86, 86, 1675, 1684, 86, - 1685, 86, 1681, 1692, 86, 86, 1678, 1694, 1683, 86, - 1682, 86, 1686, 1687, 1689, 86, 1688, 1690, 86, 86, - 1693, 86, 86, 1695, 1697, 1699, 1703, 1696, 1701, 1691, - 1698, 1700, 86, 1702, 86, 86, 1704, 86, 1705, 86, - 1706, 86, 86, 86, 86, 86, 86, 1707, 86, 1713, - 1714, 1712, 86, 1716, 1708, 86, 86, 1715, 86, 86, - 86, 1709, 86, 1710, 86, 1711, 86, 1718, 1719, 86, + 86, 1674, 86, 86, 1664, 86, 159, 1675, 86, 1667, + 1669, 86, 1672, 1668, 1678, 86, 1670, 1671, 86, 86, + 1679, 86, 86, 1676, 1673, 1677, 1680, 86, 1681, 1682, + 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86, + 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691, + 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86, + 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697, + 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707, + 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710, + 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720, - 86, 1720, 86, 86, 86, 86, 86, 86, 1721, 1729, - 86, 1717, 86, 86, 1722, 86, 1724, 1725, 1726, 86, - 1723, 1734, 86, 1727, 1731, 1732, 86, 86, 1733, 1730, - 86, 1728, 1739, 86, 86, 86, 86, 86, 1742, 1735, - 1737, 1741, 1736, 86, 86, 86, 86, 86, 86, 86, - 1743, 1738, 86, 86, 1740, 1747, 1749, 1744, 86, 86, - 1759, 1750, 1748, 1746, 1751, 1757, 86, 86, 1745, 1752, - 1756, 1758, 86, 1753, 86, 86, 86, 86, 1754, 1761, - 1762, 86, 86, 86, 1755, 86, 86, 1765, 1763, 86, - 1766, 86, 1760, 1774, 86, 1769, 1764, 86, 86, 86, + 1717, 86, 1719, 86, 86, 86, 86, 86, 1721, 86, + 1727, 86, 1726, 1728, 86, 86, 86, 1722, 1730, 86, + 1729, 86, 1733, 86, 86, 1724, 1732, 1725, 86, 86, + 86, 86, 1735, 1734, 1731, 86, 86, 86, 86, 86, + 86, 1743, 86, 86, 86, 1738, 86, 86, 86, 1736, + 1737, 1739, 1740, 1741, 1745, 1746, 1748, 1747, 86, 1744, + 86, 1742, 86, 1753, 86, 86, 1749, 1750, 86, 1752, + 1755, 86, 1751, 86, 1757, 86, 86, 86, 86, 86, + 1754, 86, 1759, 1756, 86, 86, 86, 1762, 1764, 86, + 1758, 1772, 86, 1765, 1763, 1761, 1766, 1773, 86, 86, - 1775, 86, 1767, 1771, 86, 1768, 1772, 1773, 86, 86, - 1770, 86, 86, 86, 86, 86, 1784, 1776, 86, 86, - 86, 1777, 1778, 1779, 1781, 1787, 86, 1780, 1786, 86, - 1788, 86, 1783, 86, 1785, 86, 86, 86, 1782, 86, - 1790, 1792, 86, 1791, 1789, 86, 86, 1794, 163, 1796, - 1801, 1793, 1799, 1795, 1797, 86, 1798, 1802, 1804, 86, - 1805, 1800, 86, 86, 1803, 1807, 86, 1806, 86, 86, - 86, 86, 1811, 86, 1808, 1815, 86, 86, 86, 1813, - 86, 86, 86, 86, 1810, 1814, 1812, 86, 1816, 1809, - 86, 1819, 86, 86, 86, 86, 1817, 1825, 86, 1820, + 1760, 1767, 1771, 86, 1768, 86, 86, 86, 86, 1769, + 1776, 1770, 1777, 86, 86, 1774, 86, 86, 86, 1778, + 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784, + 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790, + 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799, + 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86, + 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807, + 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86, + 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809, + 1813, 86, 1814, 1819, 86, 1820, 86, 1825, 86, 1822, - 1821, 1818, 86, 1827, 1828, 1822, 86, 1823, 1824, 86, - 86, 1830, 86, 1832, 86, 1829, 86, 1835, 86, 1826, - 86, 86, 86, 86, 1839, 86, 1831, 86, 86, 1834, - 86, 1841, 86, 1833, 168, 1842, 1837, 1843, 86, 1838, - 1836, 86, 1840, 1844, 86, 86, 1847, 1849, 86, 86, - 1845, 1846, 86, 1853, 86, 86, 86, 86, 86, 1848, - 86, 1851, 86, 1855, 1850, 86, 86, 1860, 86, 1854, - 1856, 1852, 1857, 86, 1863, 161, 1858, 1861, 1864, 86, - 86, 86, 1859, 1865, 1862, 1866, 86, 86, 1869, 86, - 1868, 86, 1867, 1872, 86, 1870, 86, 86, 86, 86, + 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827, + 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86, + 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835, + 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838, + 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86, + 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86, + 1849, 86, 86, 86, 1848, 1856, 86, 1857, 1858, 1852, + 86, 1851, 1853, 86, 168, 1859, 86, 1864, 86, 1855, + 86, 86, 1860, 86, 1868, 86, 1862, 86, 86, 1861, + 86, 1863, 86, 1866, 86, 1870, 86, 1875, 86, 1865, - 1873, 1871, 86, 86, 86, 86, 86, 86, 1878, 86, - 1879, 86, 86, 86, 86, 1880, 1883, 86, 1874, 1881, - 1876, 1875, 1877, 1884, 1882, 86, 86, 86, 1890, 1892, - 1887, 1889, 1886, 1891, 86, 86, 1885, 1888, 1893, 86, - 86, 86, 86, 86, 1898, 159, 1894, 86, 86, 86, - 1901, 1902, 86, 1903, 86, 86, 1896, 1905, 86, 1895, - 86, 1897, 1899, 1904, 1900, 86, 1906, 86, 1907, 1909, - 86, 1910, 1911, 1913, 86, 86, 1908, 1912, 86, 86, - 1915, 86, 1918, 86, 1917, 1916, 86, 86, 86, 86, - 1921, 86, 86, 1914, 1920, 86, 1924, 1923, 86, 1926, + 86, 1869, 1867, 86, 1871, 86, 1872, 1879, 86, 1873, + 1876, 1878, 86, 1881, 86, 1880, 1874, 86, 1877, 86, + 1884, 86, 1882, 1885, 86, 86, 86, 1887, 1883, 86, + 86, 86, 1888, 1886, 86, 86, 86, 86, 86, 86, + 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86, + 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86, + 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903, + 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86, + 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920, + 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86, - 86, 86, 86, 1925, 1933, 86, 86, 1919, 86, 1922, - 86, 1935, 1927, 1928, 1929, 86, 1936, 86, 86, 1930, - 1938, 1931, 1932, 86, 86, 1941, 1934, 86, 1943, 1937, - 86, 86, 1945, 86, 1939, 86, 1942, 86, 1947, 1940, - 86, 86, 86, 1950, 1951, 86, 86, 1953, 86, 86, - 86, 1944, 86, 86, 1959, 86, 86, 86, 1958, 1955, - 1948, 1946, 1956, 1949, 86, 86, 1952, 86, 86, 86, - 1965, 86, 1961, 1957, 1954, 1962, 1963, 1960, 86, 86, - 1969, 86, 86, 86, 1968, 86, 86, 1972, 1975, 1971, - 1973, 1964, 86, 86, 1967, 86, 86, 1966, 1974, 86, + 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927, + 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86, + 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938, + 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934, + 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86, + 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957, + 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958, + 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86, + 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86, + 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975, - 86, 1970, 86, 86, 1976, 1977, 1980, 86, 86, 1983, - 1984, 1978, 1979, 1985, 86, 86, 86, 86, 86, 86, - 1981, 1988, 86, 86, 1993, 86, 86, 86, 1992, 86, - 1987, 86, 86, 1982, 1986, 1997, 86, 1989, 1990, 86, - 86, 1999, 1995, 2001, 1991, 1994, 1998, 2002, 1996, 2000, - 86, 86, 2003, 2004, 86, 86, 86, 86, 86, 86, - 2011, 86, 2008, 86, 2014, 86, 86, 86, 2013, 2006, - 86, 2015, 2005, 86, 86, 2007, 2012, 2016, 2009, 2010, - 86, 2021, 86, 2017, 2022, 86, 2025, 2020, 2023, 2026, - 86, 2018, 86, 2024, 86, 86, 2019, 86, 86, 2030, + 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86, + 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980, + 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982, + 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996, + 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86, + 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86, + 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006, + 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015, + 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86, + 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86, - 86, 86, 2028, 86, 86, 86, 86, 2032, 2035, 2037, - 2029, 86, 2031, 2033, 86, 86, 2027, 168, 86, 86, - 86, 86, 2038, 2039, 2043, 2042, 86, 2044, 2036, 2034, - 2040, 2045, 86, 2046, 86, 86, 2048, 86, 2041, 86, - 86, 86, 86, 2049, 2050, 86, 2051, 86, 2054, 86, - 2052, 86, 2053, 86, 2056, 2047, 86, 86, 2060, 86, - 86, 2055, 2059, 2057, 86, 86, 86, 2064, 2058, 2061, - 2062, 2063, 2065, 86, 86, 86, 86, 86, 86, 2072, - 2070, 86, 86, 86, 2067, 86, 2071, 86, 86, 86, - 2077, 86, 2074, 86, 2066, 2068, 86, 2069, 86, 86, + 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86, + 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038, + 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86, + 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86, + 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86, + 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86, + 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062, + 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063, + 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069, + 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075, - 2073, 2078, 2076, 86, 2081, 2075, 86, 2080, 2083, 2079, - 86, 2082, 86, 86, 2085, 2088, 86, 2086, 2084, 86, - 86, 86, 2089, 86, 2094, 86, 2087, 86, 86, 2096, - 86, 86, 86, 2097, 2098, 86, 2090, 2091, 2092, 2093, - 2099, 2100, 86, 86, 2095, 86, 2101, 2103, 86, 2102, - 86, 86, 86, 86, 86, 2104, 86, 2107, 86, 86, - 86, 2108, 86, 86, 86, 86, 2115, 86, 2119, 86, - 2110, 2106, 2105, 86, 2111, 2109, 2112, 2118, 2114, 2116, - 86, 86, 86, 86, 2122, 2113, 86, 2117, 2123, 86, - 86, 2120, 2126, 86, 2125, 86, 86, 86, 2128, 86, + 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86, + 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86, + 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084, + 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094, + 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104, + 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110, + 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106, + 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86, + 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124, - 2121, 86, 2124, 2129, 2127, 86, 2130, 86, 2132, 2134, - 86, 86, 2136, 2131, 2138, 86, 86, 2133, 86, 86, - 2135, 2141, 86, 2140, 86, 2137, 86, 2142, 86, 2143, - 2146, 86, 86, 86, 86, 86, 86, 2147, 86, 2149, - 2152, 86, 2139, 86, 2144, 86, 2148, 86, 2145, 2151, - 86, 2153, 2157, 2150, 2156, 86, 2159, 2158, 2154, 86, - 86, 2162, 86, 86, 86, 2155, 86, 2160, 86, 2164, - 86, 2165, 2166, 86, 86, 2161, 2163, 86, 2167, 2171, - 86, 86, 2173, 2169, 2168, 86, 2170, 2174, 86, 86, - 2175, 86, 86, 86, 2178, 86, 86, 2176, 2179, 86, + 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136, + 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86, + 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86, + 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146, + 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86, + 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152, + 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86, + 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165, + 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168, + 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179, - 86, 2172, 86, 2177, 86, 2180, 2183, 86, 2182, 86, - 86, 86, 86, 86, 2184, 2181, 2187, 86, 2185, 86, - 2186, 86, 2189, 2190, 2188, 86, 2192, 86, 2194, 86, - 2193, 86, 2191, 2195, 86, 2197, 2198, 86, 2203, 86, - 2202, 86, 2201, 2205, 86, 86, 2196, 86, 86, 2199, - 2204, 2207, 86, 2208, 168, 2200, 2211, 2213, 86, 86, - 2214, 2212, 86, 86, 2206, 2209, 86, 86, 2222, 86, - 2215, 2218, 86, 86, 2219, 86, 2210, 2216, 2217, 2223, - 86, 86, 2224, 86, 2227, 86, 86, 2225, 2220, 2233, - 86, 2228, 86, 2229, 2230, 86, 86, 86, 2232, 2221, + 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180, + 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86, + 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192, + 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196, + 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86, + 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207, + 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86, + 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86, + 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224, + 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227, - 86, 2226, 2231, 86, 86, 86, 86, 2235, 86, 86, - 86, 2238, 86, 86, 86, 2241, 2234, 86, 86, 86, - 2236, 86, 2245, 2248, 2240, 2247, 86, 86, 2243, 86, - 2237, 2239, 2242, 2244, 2250, 86, 2249, 86, 86, 86, - 2246, 86, 2252, 86, 2255, 2258, 86, 86, 86, 2253, - 86, 86, 86, 2251, 2256, 2259, 86, 2254, 86, 86, - 86, 2257, 86, 3234, 86, 86, 86, 2260, 2271, 2261, - 2270, 2266, 2272, 86, 2262, 2264, 2263, 2268, 2269, 2265, - 86, 2267, 86, 86, 86, 2273, 2274, 86, 86, 2278, - 2279, 86, 2280, 86, 86, 2275, 86, 86, 2276, 86, + 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86, + 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239, + 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237, + 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248, + 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255, + 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86, + 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265, + 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269, + 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273, + 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274, - 2277, 86, 2283, 2286, 86, 2284, 86, 86, 2285, 2281, - 2282, 2287, 2288, 86, 86, 2292, 86, 2293, 86, 2289, - 86, 2295, 86, 86, 2297, 86, 2291, 86, 86, 86, - 2300, 86, 86, 2290, 2299, 2301, 86, 2303, 86, 2294, - 86, 2296, 2298, 86, 2307, 86, 2302, 86, 2306, 2309, - 86, 86, 2304, 86, 86, 86, 2312, 86, 2313, 2305, - 2311, 2315, 86, 86, 86, 86, 2308, 2319, 86, 2310, - 86, 86, 86, 2314, 2316, 86, 2323, 86, 2317, 2324, - 86, 86, 2326, 2318, 86, 2320, 2322, 2329, 86, 86, - 86, 86, 86, 2321, 2325, 86, 2327, 2331, 86, 2328, + 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288, + 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289, + 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296, + 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298, + 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305, + 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86, + 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317, + 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321, + 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86, + 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323, - 86, 2336, 86, 86, 86, 2332, 2338, 86, 2343, 2330, - 2333, 2337, 86, 2334, 86, 2339, 86, 86, 86, 2342, - 86, 2344, 86, 86, 2335, 2348, 86, 2353, 2350, 86, - 2340, 2346, 2341, 86, 2351, 86, 2355, 86, 2347, 2345, - 86, 2352, 86, 86, 86, 2356, 86, 86, 2349, 2357, - 2360, 86, 2361, 86, 86, 86, 2354, 86, 86, 2359, - 2362, 2368, 2358, 2363, 2364, 2366, 2367, 2365, 86, 86, - 2371, 86, 86, 2372, 86, 2373, 168, 2370, 2369, 86, - 86, 2375, 86, 2374, 86, 86, 2380, 86, 86, 86, - 86, 86, 86, 2387, 86, 86, 86, 2382, 2378, 2381, + 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86, + 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86, + 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86, + 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86, + 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86, + 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361, + 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359, + 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370, + 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377, + 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86, - 2376, 2379, 2377, 2383, 86, 2384, 2386, 2385, 2390, 2388, - 2391, 86, 86, 2392, 86, 2389, 2393, 86, 86, 2395, - 2396, 2394, 2397, 86, 2399, 86, 86, 86, 86, 86, - 2401, 86, 2398, 86, 86, 86, 2405, 86, 2406, 86, - 86, 2400, 86, 2402, 86, 2408, 2409, 2403, 2415, 86, - 86, 2407, 2410, 2404, 2411, 86, 86, 2413, 2418, 86, - 86, 2412, 2414, 86, 2417, 86, 86, 86, 86, 86, - 2416, 2420, 86, 86, 86, 2427, 2424, 86, 2419, 2426, - 86, 86, 86, 2423, 86, 86, 2428, 2421, 2422, 2431, - 86, 86, 86, 2425, 2436, 2429, 86, 2435, 86, 86, + 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390, + 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387, + 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397, + 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86, + 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414, + 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86, + 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86, + 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427, + 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86, - 86, 2430, 2433, 86, 2437, 2438, 2432, 2434, 86, 2440, - 86, 2445, 2439, 2441, 86, 2443, 86, 86, 86, 86, - 2444, 2447, 86, 2449, 86, 2442, 86, 86, 2448, 86, - 2446, 86, 86, 86, 86, 86, 2453, 86, 2455, 2456, - 3234, 2451, 2457, 86, 2450, 2452, 2458, 86, 2459, 86, - 2460, 2461, 86, 86, 86, 86, 86, 2463, 2454, 2462, - 2466, 86, 2468, 86, 86, 2467, 86, 2465, 86, 2471, - 86, 86, 2464, 86, 2472, 86, 2475, 2476, 86, 2470, - 86, 2469, 86, 86, 86, 2473, 86, 2477, 2481, 2480, - 86, 2474, 2479, 86, 86, 86, 86, 86, 2478, 86, + 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86, + 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86, + 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449, + 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448, + 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457, + 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86, + 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86, + 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86, + 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478, + 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484, - 2485, 86, 2487, 2599, 2482, 86, 2484, 2483, 2488, 86, - 2489, 86, 2490, 86, 2491, 86, 2486, 2492, 86, 2493, - 86, 2495, 86, 2494, 86, 2496, 86, 86, 86, 2501, - 86, 86, 2503, 86, 2497, 2504, 86, 86, 2498, 86, - 86, 86, 86, 86, 2500, 86, 86, 2499, 2505, 2507, - 2502, 2506, 2508, 86, 2513, 86, 86, 86, 2510, 86, - 86, 2509, 168, 2511, 86, 2512, 2514, 86, 2521, 86, - 86, 86, 2515, 2517, 2520, 86, 2516, 86, 2519, 2522, - 86, 86, 86, 2518, 2523, 2528, 2524, 86, 3234, 86, - 2532, 86, 2530, 2525, 2531, 2529, 2533, 86, 86, 2526, + 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86, + 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488, + 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86, + 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86, + 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86, + 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513, + 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86, + 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86, + 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520, + 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532, - 86, 2534, 86, 2527, 86, 2535, 86, 2536, 86, 86, - 86, 86, 86, 2538, 86, 86, 2537, 86, 86, 86, - 2547, 86, 86, 2545, 2540, 86, 86, 2539, 3234, 2542, - 2541, 86, 2551, 86, 2543, 2544, 2553, 2546, 86, 2548, - 2549, 2552, 86, 2550, 2556, 86, 86, 2555, 2554, 2558, - 86, 2559, 86, 86, 86, 2557, 86, 86, 86, 86, - 2561, 86, 2567, 86, 2568, 86, 86, 2571, 86, 2562, - 2560, 86, 2570, 86, 2563, 2564, 2569, 2565, 2566, 2572, - 86, 2573, 86, 86, 86, 86, 86, 86, 2575, 2574, - 2577, 2580, 86, 86, 2581, 2582, 86, 86, 86, 2583, + 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535, + 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86, + 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86, + 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545, + 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557, + 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86, + 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86, + 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573, + 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86, + 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586, - 86, 2576, 86, 2578, 2579, 2584, 86, 2586, 86, 86, - 86, 86, 2585, 86, 2588, 2590, 86, 86, 86, 2587, - 2594, 2595, 86, 2598, 86, 86, 2602, 86, 2589, 2591, - 2592, 2596, 86, 2593, 86, 86, 2597, 86, 2601, 86, - 2600, 2607, 86, 86, 86, 2603, 86, 86, 2611, 86, - 2604, 2610, 86, 2609, 86, 2608, 86, 2605, 86, 2606, - 2613, 86, 86, 2614, 86, 2612, 2617, 86, 2616, 2618, - 86, 2615, 86, 2619, 2621, 86, 86, 2622, 2620, 86, - 2623, 2626, 86, 86, 86, 2624, 2628, 86, 2625, 2629, - 86, 86, 86, 86, 86, 2630, 86, 2632, 2627, 86, + 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582, + 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86, + 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599, + 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597, + 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86, + 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86, + 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611, + 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618, + 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86, + 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86, - 86, 2633, 86, 86, 2636, 2631, 86, 2638, 2635, 2641, - 86, 2639, 86, 2634, 86, 2637, 2642, 86, 2640, 2643, - 168, 2644, 86, 86, 86, 2648, 3234, 2645, 86, 2649, - 2646, 86, 86, 2650, 86, 2653, 86, 2654, 86, 2652, - 86, 2647, 2658, 2651, 2656, 86, 86, 2659, 86, 2657, - 86, 86, 86, 2655, 2663, 2660, 2661, 86, 86, 86, - 86, 2664, 86, 2665, 86, 86, 2662, 2670, 2666, 2671, - 86, 86, 2668, 86, 86, 86, 2672, 2667, 86, 86, - 86, 86, 2673, 2675, 2676, 2678, 2669, 86, 86, 86, - 2674, 2677, 2679, 2686, 86, 86, 86, 2684, 86, 86, + 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639, + 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86, + 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86, + 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252, + 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86, + 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86, + 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86, + 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670, + 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86, + 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86, - 86, 86, 2681, 2682, 2683, 86, 2680, 2685, 86, 2691, - 86, 2687, 86, 86, 86, 2695, 86, 86, 86, 2688, - 86, 2689, 2693, 86, 86, 2700, 86, 2690, 2699, 2694, - 86, 2692, 2702, 2697, 86, 2703, 2696, 2704, 86, 2708, - 2698, 86, 2706, 86, 2705, 86, 86, 86, 2701, 86, - 86, 2707, 86, 2710, 86, 2713, 86, 2715, 86, 86, - 2709, 2716, 86, 2718, 2711, 2717, 86, 2712, 86, 2720, - 86, 86, 86, 2719, 2714, 86, 2724, 2722, 86, 86, - 2727, 2725, 86, 2728, 86, 2729, 86, 2723, 86, 86, - 86, 2721, 2730, 86, 2734, 86, 86, 2735, 2726, 2736, + 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688, + 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86, + 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86, + 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704, + 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86, + 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711, + 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707, + 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723, + 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86, + 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86, - 86, 2731, 86, 2738, 86, 86, 86, 86, 2732, 2742, - 2743, 86, 86, 2733, 2745, 86, 2744, 2737, 2739, 2746, - 86, 2741, 86, 86, 2740, 86, 86, 2751, 86, 86, - 86, 2750, 86, 86, 2753, 2754, 86, 2755, 86, 86, - 86, 2757, 86, 2748, 86, 2747, 2749, 2756, 86, 86, - 2760, 2759, 86, 2752, 2758, 86, 2766, 2761, 2762, 86, - 2763, 86, 2764, 2767, 86, 86, 86, 86, 2769, 86, - 2774, 86, 2765, 2768, 2775, 2771, 2770, 2773, 86, 2776, - 86, 2778, 86, 86, 2779, 2772, 86, 2780, 86, 2781, - 2777, 86, 2782, 86, 2783, 86, 86, 86, 2784, 86, + 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86, + 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739, + 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86, + 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86, + 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86, + 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86, + 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86, + 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86, + 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775, + 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780, - 86, 86, 86, 86, 2788, 2792, 86, 86, 3234, 2789, - 2793, 2795, 86, 2797, 86, 2785, 2787, 86, 2799, 86, - 2794, 2790, 2786, 2791, 2796, 86, 86, 86, 86, 86, - 2798, 2804, 86, 86, 86, 2800, 2801, 2802, 2805, 86, - 2808, 86, 2806, 86, 86, 2809, 86, 2803, 2812, 86, - 2811, 86, 86, 86, 2807, 86, 2810, 2813, 2814, 86, - 2815, 86, 86, 2816, 2819, 86, 86, 86, 86, 86, - 86, 2818, 2824, 86, 2820, 2822, 2817, 86, 86, 86, - 2825, 2868, 2827, 86, 2828, 86, 2829, 2823, 86, 2838, - 2821, 2826, 2830, 2831, 86, 2832, 2834, 86, 2833, 2835, + 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86, + 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793, + 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86, + 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801, + 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86, + 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805, + 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817, + 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823, + 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827, + 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828, - 86, 2836, 86, 86, 86, 86, 86, 2841, 86, 86, - 2840, 2842, 2837, 86, 2843, 2844, 86, 86, 86, 86, - 86, 2850, 86, 2839, 2848, 86, 2845, 86, 86, 2846, - 2852, 86, 2853, 86, 2856, 86, 86, 86, 2849, 2847, - 2854, 2855, 86, 86, 2857, 2861, 86, 2851, 86, 86, - 86, 86, 2858, 86, 2864, 86, 86, 2859, 86, 86, - 2865, 2862, 2863, 2860, 2869, 2870, 86, 2873, 86, 2866, - 86, 2875, 86, 86, 2867, 86, 2871, 2876, 86, 2878, - 86, 86, 86, 86, 2883, 86, 86, 86, 2882, 2874, - 86, 2879, 2872, 86, 2877, 86, 2887, 2880, 2881, 86, + 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842, + 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846, + 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86, + 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86, + 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856, + 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86, + 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86, + 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86, + 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86, + 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876, - 2890, 86, 86, 86, 86, 2892, 2884, 2888, 2893, 2886, - 2885, 86, 2895, 86, 2896, 86, 86, 86, 2889, 2898, - 86, 86, 2891, 86, 86, 2903, 2894, 86, 2900, 86, - 2901, 86, 2907, 86, 86, 86, 2897, 2908, 86, 2899, - 86, 2905, 3234, 2902, 2906, 2912, 2904, 86, 2909, 86, - 2910, 86, 2913, 86, 86, 2911, 2915, 2914, 2916, 86, - 2918, 86, 86, 86, 2917, 86, 2921, 86, 2919, 86, - 2924, 86, 86, 86, 2927, 86, 2929, 86, 86, 2925, - 86, 86, 2933, 86, 2920, 2931, 2922, 2923, 2928, 2932, - 86, 2926, 2934, 86, 86, 2935, 86, 2930, 2938, 86, + 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86, + 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86, + 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900, + 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898, + 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86, + 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914, + 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915, + 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927, + 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922, + 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936, - 86, 2937, 2939, 86, 2940, 86, 2942, 86, 2936, 86, - 2944, 86, 86, 86, 2943, 86, 86, 86, 2949, 2950, - 86, 86, 86, 86, 86, 86, 2941, 2954, 86, 2946, - 2955, 86, 2945, 2953, 2956, 2951, 86, 2947, 2948, 86, - 86, 2959, 2952, 2957, 2958, 2960, 86, 2961, 86, 86, - 2964, 86, 86, 2963, 2962, 86, 86, 2967, 86, 86, - 2966, 86, 86, 2965, 2968, 86, 86, 2971, 86, 86, - 86, 86, 2973, 86, 86, 2969, 2974, 2972, 86, 86, - 86, 2970, 86, 86, 86, 2983, 86, 2984, 2975, 2979, - 2976, 2977, 2978, 2986, 86, 2980, 2981, 86, 3234, 86, + 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934, + 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86, + 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946, + 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945, + 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954, + 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963, + 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86, + 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966, + 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979, + 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86, - 2982, 86, 2987, 2985, 2988, 2995, 2989, 2990, 2991, 86, - 2992, 86, 86, 86, 2996, 86, 2993, 86, 2994, 2997, - 86, 2998, 2999, 86, 86, 3000, 3001, 3004, 86, 3002, - 3003, 86, 86, 3005, 86, 3006, 86, 86, 86, 3011, - 86, 86, 86, 3010, 86, 3007, 86, 86, 3014, 3013, - 86, 86, 86, 3019, 86, 3015, 3008, 3009, 3020, 86, - 3018, 86, 3016, 3021, 86, 86, 3012, 86, 3017, 3022, - 3023, 86, 3026, 86, 3028, 86, 3024, 3027, 86, 3025, - 86, 86, 86, 86, 86, 3234, 3029, 3032, 3030, 3033, - 3035, 86, 3031, 3036, 3034, 86, 3038, 86, 3059, 86, + 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86, + 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86, + 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001, + 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004, + 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009, + 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86, + 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019, + 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86, + 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032, + 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86, - 3057, 3037, 3039, 86, 3040, 86, 86, 3042, 86, 3043, - 86, 3041, 86, 3045, 86, 3046, 86, 3047, 86, 3048, - 86, 3044, 3049, 86, 3050, 86, 3051, 86, 86, 3053, - 86, 86, 86, 86, 3058, 86, 86, 3052, 86, 86, - 3054, 86, 3062, 86, 3055, 3064, 86, 86, 86, 3060, - 3061, 3066, 86, 3056, 3063, 86, 3068, 86, 3071, 86, - 3070, 3065, 86, 86, 86, 86, 86, 86, 3073, 86, - 3069, 86, 86, 3067, 86, 3077, 3072, 3081, 3074, 86, - 3078, 86, 3076, 3075, 3083, 86, 86, 3079, 3084, 86, - 3085, 86, 3082, 3080, 86, 3087, 86, 86, 3088, 86, + 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035, + 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86, + 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054, + 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86, + 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059, + 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86, + 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, + 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86, + 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077, + 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86, - 86, 86, 86, 86, 3086, 3093, 86, 86, 3094, 86, - 3096, 3090, 3092, 86, 86, 86, 3089, 3095, 86, 86, - 3097, 3099, 3091, 86, 86, 86, 86, 86, 3103, 86, - 3100, 3106, 3098, 3102, 3108, 3104, 86, 3111, 86, 3109, - 3101, 86, 3113, 86, 86, 3105, 86, 3107, 86, 3114, - 3112, 3115, 86, 3116, 86, 86, 3110, 86, 3119, 86, - 86, 86, 3120, 3117, 3121, 3124, 3118, 86, 86, 86, - 86, 86, 3129, 86, 3127, 86, 3123, 3130, 86, 86, - 3126, 3125, 86, 3133, 86, 3122, 86, 86, 3136, 86, - 3128, 86, 3137, 3135, 3131, 86, 86, 86, 3140, 86, + 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091, + 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86, + 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86, + 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86, + 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111, + 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86, + 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86, + 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86, + 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86, + 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128, - 3141, 3132, 3134, 3138, 86, 3139, 86, 86, 86, 86, - 3142, 86, 3143, 3145, 3146, 86, 3144, 3147, 86, 86, - 86, 86, 86, 3151, 86, 3150, 3153, 86, 3148, 3149, - 86, 86, 86, 86, 3160, 86, 3158, 3155, 3159, 86, - 3152, 3154, 86, 3156, 3164, 86, 3157, 86, 86, 3166, - 86, 3167, 3161, 3165, 86, 86, 3172, 3162, 86, 3168, - 86, 3163, 86, 3169, 86, 3170, 3171, 3173, 86, 3174, - 3175, 86, 86, 86, 86, 86, 3176, 86, 3181, 86, - 86, 3178, 86, 3184, 86, 3185, 86, 86, 86, 86, - 86, 86, 3177, 3183, 3179, 3188, 3180, 3186, 3182, 86, + 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86, + 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148, + 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140, + 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86, + 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86, + 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162, + 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166, + 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173, + 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86, + 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86, - 3187, 86, 3192, 86, 3191, 86, 3189, 86, 3190, 86, - 3193, 3234, 3194, 86, 3196, 86, 3198, 86, 3199, 86, - 86, 3203, 86, 86, 3200, 86, 3197, 3201, 3202, 3195, - 3204, 86, 86, 3205, 3206, 86, 86, 86, 86, 3207, - 86, 86, 3209, 3208, 86, 3210, 3212, 86, 86, 3214, - 86, 86, 3218, 3215, 3219, 86, 3211, 3213, 86, 86, - 3216, 86, 3222, 3223, 86, 86, 3225, 86, 86, 3217, - 3226, 86, 3224, 86, 86, 3227, 86, 3220, 3221, 3228, - 86, 3229, 3232, 86, 3233, 86, 3234, 3234, 3234, 3234, - 3234, 3234, 3230, 3234, 3234, 3234, 3234, 3234, 3234, 3231, + 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86, + 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86, + 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202, + 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206, + 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86, + 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212, + 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86, + 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225, + 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86, + 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227, - 47, 47, 47, 47, 47, 47, 47, 52, 52, 52, - 52, 52, 52, 52, 57, 57, 57, 57, 57, 57, - 57, 63, 63, 63, 63, 63, 63, 63, 68, 68, - 68, 68, 68, 68, 68, 74, 74, 74, 74, 74, - 74, 74, 80, 80, 80, 80, 80, 80, 80, 89, - 89, 3234, 89, 89, 89, 89, 158, 158, 3234, 3234, - 3234, 158, 158, 160, 160, 3234, 3234, 160, 3234, 160, - 162, 3234, 3234, 3234, 3234, 3234, 162, 165, 165, 3234, - 3234, 3234, 165, 165, 167, 3234, 3234, 3234, 3234, 3234, - 167, 169, 169, 3234, 169, 169, 169, 169, 172, 3234, + 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86, + 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86, + 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86, + 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47, + 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, + 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, + 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, + 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, + 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89, - 3234, 3234, 3234, 3234, 172, 175, 175, 3234, 3234, 3234, - 175, 175, 90, 90, 3234, 90, 90, 90, 90, 17, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234 + 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160, + 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252, + 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167, + 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169, + 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172, + 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252, + 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + + 3252, 3252, 3252, 3252, 3252 } ; -static const flex_int16_t yy_chk[6361] = +static const flex_int16_t yy_chk[6406] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2200,18 +2210,18 @@ static const flex_int16_t yy_chk[6361] = 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, 3242, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3260, 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, 2643, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2661, 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, - 28, 92, 31, 32, 1067, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1075, 32, 36, 36, 37, 37, 28, 45, 45, 37, 175, 36, 45, 39, 41, 41, 45, 36, 39, 41, 94, 36, 39, 43, 43, 37, @@ -2227,9 +2237,9 @@ static const flex_int16_t yy_chk[6361] = 104, 114, 111, 113, 108, 110, 110, 113, 116, 115, 112, 109, 117, 110, 115, 117, 119, 118, 117, 120, - 123, 114, 116, 118, 120, 126, 121, 122, 727, 121, + 123, 114, 116, 118, 120, 126, 121, 122, 732, 121, 125, 117, 117, 121, 123, 119, 124, 125, 126, 128, - 124, 127, 118, 129, 120, 727, 122, 130, 127, 121, + 124, 127, 118, 129, 120, 732, 122, 130, 127, 121, 131, 122, 128, 132, 131, 133, 134, 135, 135, 136, 133, 139, 137, 129, 133, 130, 137, 138, 143, 140, 142, 132, 144, 148, 143, 137, 134, 141, 147, 136, @@ -2254,643 +2264,649 @@ static const flex_int16_t yy_chk[6361] = 213, 219, 213, 218, 218, 217, 220, 219, 221, 222, 224, 223, 220, 219, 213, 222, 213, 223, 225, 232, 226, 227, 234, 228, 225, 226, 223, 227, 221, 228, - 229, 224, 231, 235, 233, 236, 238, 229, 231, 232, - 233, 235, 237, 239, 234, 238, 240, 237, 236, 241, - 242, 246, 243, 244, 247, 242, 242, 243, 239, 245, + 229, 224, 231, 235, 233, 234, 236, 229, 231, 232, + 233, 235, 237, 238, 234, 239, 240, 237, 241, 236, + 242, 244, 238, 243, 246, 242, 242, 245, 243, 247, - 247, 248, 240, 245, 249, 250, 252, 251, 252, 241, - 249, 244, 251, 246, 253, 254, 257, 255, 256, 248, - 248, 258, 254, 255, 256, 250, 259, 258, 260, 261, - 261, 262, 262, 253, 263, 257, 266, 264, 259, 268, - 263, 269, 260, 264, 265, 267, 265, 270, 271, 272, - 267, 268, 273, 284, 272, 270, 274, 165, 263, 266, - 269, 275, 274, 265, 276, 277, 278, 275, 271, 276, - 277, 279, 278, 280, 281, 273, 282, 283, 284, 287, - 286, 287, 285, 286, 290, 283, 279, 280, 285, 293, - 282, 294, 281, 288, 288, 289, 291, 291, 289, 292, + 239, 245, 240, 248, 249, 247, 250, 251, 241, 244, + 249, 252, 251, 252, 253, 257, 246, 254, 312, 255, + 259, 248, 248, 256, 254, 255, 250, 260, 266, 256, + 258, 312, 259, 253, 257, 268, 258, 261, 261, 262, + 262, 260, 263, 264, 265, 267, 265, 268, 263, 264, + 267, 266, 269, 270, 271, 272, 273, 276, 274, 275, + 272, 270, 276, 265, 274, 275, 263, 277, 279, 278, + 280, 269, 277, 281, 271, 278, 282, 283, 284, 273, + 285, 288, 288, 279, 280, 283, 285, 290, 293, 286, + 282, 281, 286, 287, 289, 287, 294, 289, 291, 291, - 292, 295, 290, 296, 295, 293, 294, 296, 297, 298, - 299, 300, 302, 301, 302, 303, 299, 297, 298, 301, - 304, 303, 305, 305, 304, 300, 306, 307, 308, 309, - 310, 306, 312, 307, 308, 311, 313, 313, 317, 314, - 315, 304, 314, 316, 318, 312, 320, 316, 310, 309, - 319, 319, 321, 308, 322, 321, 311, 317, 315, 323, - 324, 325, 318, 324, 320, 323, 322, 327, 331, 328, - 329, 331, 321, 325, 326, 329, 327, 330, 333, 164, - 330, 338, 330, 326, 332, 336, 326, 328, 336, 162, - 333, 326, 326, 326, 326, 337, 338, 332, 330, 334, + 292, 292, 165, 284, 293, 290, 295, 297, 296, 295, + 298, 294, 296, 300, 299, 301, 297, 303, 309, 298, + 299, 301, 302, 303, 302, 304, 307, 300, 306, 304, + 305, 305, 307, 306, 308, 310, 311, 315, 309, 316, + 308, 313, 313, 316, 314, 317, 304, 314, 318, 319, + 319, 320, 328, 310, 323, 315, 322, 311, 321, 308, + 323, 321, 324, 325, 317, 324, 318, 327, 322, 320, + 328, 331, 329, 332, 331, 325, 327, 329, 321, 326, + 330, 333, 412, 330, 412, 330, 332, 334, 326, 334, + 334, 326, 336, 333, 337, 336, 326, 326, 326, 326, - 335, 334, 334, 344, 339, 335, 335, 340, 341, 341, - 343, 343, 337, 339, 342, 337, 340, 345, 344, 342, - 346, 347, 345, 348, 349, 350, 351, 351, 353, 351, - 354, 350, 346, 362, 362, 354, 355, 359, 351, 349, - 347, 356, 355, 348, 357, 361, 356, 358, 353, 357, - 358, 359, 358, 360, 361, 357, 360, 363, 364, 364, - 365, 368, 369, 363, 366, 365, 372, 366, 160, 360, - 375, 381, 360, 366, 360, 370, 371, 366, 377, 374, - 372, 368, 374, 369, 375, 366, 367, 367, 378, 367, - 370, 371, 381, 377, 379, 380, 382, 378, 374, 379, + 335, 330, 338, 339, 340, 335, 335, 341, 341, 345, + 342, 337, 339, 340, 337, 342, 347, 338, 343, 343, + 344, 344, 346, 348, 345, 349, 350, 346, 347, 351, + 354, 352, 352, 355, 352, 351, 363, 363, 355, 357, + 356, 350, 348, 352, 357, 349, 356, 358, 359, 360, + 354, 359, 358, 359, 361, 362, 364, 361, 358, 365, + 365, 366, 364, 360, 362, 367, 366, 371, 367, 369, + 361, 370, 401, 361, 367, 361, 372, 375, 367, 373, + 375, 376, 371, 378, 401, 379, 367, 368, 368, 369, + 368, 372, 370, 373, 379, 376, 375, 382, 378, 380, - 379, 380, 367, 383, 385, 367, 387, 367, 384, 367, - 376, 388, 376, 376, 386, 382, 389, 384, 383, 391, - 386, 392, 376, 385, 376, 376, 376, 390, 393, 376, - 389, 388, 387, 390, 394, 395, 396, 390, 397, 399, - 395, 392, 391, 400, 397, 398, 398, 401, 393, 394, - 402, 396, 403, 404, 407, 400, 402, 405, 410, 399, - 408, 401, 405, 406, 406, 409, 406, 413, 411, 404, - 411, 413, 410, 416, 407, 414, 408, 403, 417, 414, - 412, 409, 412, 412, 415, 415, 418, 419, 421, 420, - 423, 426, 416, 417, 414, 426, 423, 421, 424, 422, + 383, 381, 384, 368, 380, 380, 368, 381, 368, 386, + 368, 377, 385, 377, 377, 388, 387, 384, 382, 383, + 389, 385, 387, 377, 390, 377, 377, 377, 386, 391, + 377, 392, 393, 394, 395, 391, 392, 396, 390, 391, + 389, 388, 396, 397, 398, 399, 399, 400, 402, 395, + 398, 403, 393, 394, 392, 404, 405, 403, 397, 406, + 407, 407, 402, 407, 406, 408, 409, 400, 410, 411, + 417, 413, 405, 413, 413, 414, 419, 415, 418, 414, + 404, 415, 409, 411, 410, 408, 416, 416, 420, 417, + 421, 413, 419, 418, 422, 423, 415, 426, 425, 424, - 412, 425, 418, 420, 422, 419, 425, 424, 421, 427, - 421, 429, 422, 422, 428, 430, 422, 422, 427, 431, - 428, 430, 432, 431, 433, 432, 434, 435, 435, 433, - 436, 438, 429, 437, 437, 439, 438, 440, 440, 441, - 442, 443, 444, 436, 442, 441, 434, 445, 439, 446, - 447, 447, 445, 448, 446, 449, 443, 451, 450, 447, - 454, 452, 453, 444, 452, 448, 453, 455, 455, 451, - 457, 459, 454, 456, 462, 449, 450, 463, 456, 458, - 458, 461, 461, 464, 465, 463, 466, 468, 469, 470, - 471, 457, 464, 459, 473, 462, 471, 472, 466, 475, + 423, 428, 426, 422, 421, 424, 420, 425, 423, 423, + 428, 427, 423, 423, 422, 427, 422, 429, 430, 431, + 432, 435, 434, 429, 432, 431, 433, 434, 164, 433, + 436, 436, 437, 438, 438, 439, 440, 441, 441, 430, + 439, 435, 442, 443, 444, 437, 445, 443, 442, 440, + 446, 447, 448, 448, 449, 446, 447, 450, 451, 444, + 452, 448, 453, 455, 454, 453, 449, 445, 454, 456, + 456, 458, 452, 457, 460, 455, 451, 450, 457, 459, + 459, 462, 462, 463, 470, 464, 465, 466, 467, 471, + 469, 472, 458, 464, 476, 465, 460, 473, 477, 476, - 473, 158, 478, 470, 465, 468, 472, 468, 469, 474, - 476, 479, 477, 475, 474, 477, 478, 480, 476, 481, - 484, 476, 482, 480, 483, 482, 479, 485, 486, 488, - 483, 487, 485, 488, 484, 489, 490, 491, 492, 481, - 489, 493, 491, 494, 497, 499, 500, 501, 483, 499, - 486, 490, 487, 498, 492, 502, 494, 504, 85, 502, - 493, 495, 495, 501, 497, 500, 505, 495, 498, 495, - 506, 505, 504, 503, 507, 495, 509, 495, 503, 508, - 495, 495, 503, 507, 511, 508, 506, 495, 510, 506, - 508, 510, 509, 512, 513, 513, 514, 515, 515, 516, + 467, 162, 470, 473, 463, 472, 474, 466, 469, 471, + 469, 475, 477, 478, 480, 474, 479, 475, 481, 479, + 482, 478, 483, 485, 478, 486, 482, 484, 480, 485, + 484, 487, 488, 481, 489, 491, 487, 490, 492, 486, + 491, 490, 483, 493, 494, 495, 496, 485, 493, 499, + 537, 502, 500, 492, 488, 489, 503, 501, 504, 496, + 494, 501, 504, 506, 495, 497, 497, 500, 537, 499, + 502, 497, 503, 497, 508, 507, 514, 505, 506, 497, + 507, 497, 505, 509, 497, 497, 505, 511, 510, 513, + 508, 497, 509, 508, 510, 512, 514, 516, 512, 510, - 517, 518, 520, 519, 521, 524, 522, 511, 523, 521, - 527, 525, 517, 512, 516, 522, 518, 525, 530, 527, - 524, 514, 519, 531, 520, 528, 529, 523, 532, 528, - 530, 533, 529, 534, 535, 536, 537, 571, 531, 536, - 538, 571, 538, 539, 541, 533, 542, 532, 534, 537, - 541, 539, 535, 540, 540, 543, 544, 545, 542, 546, - 545, 543, 547, 549, 548, 550, 549, 551, 544, 548, - 552, 597, 553, 546, 550, 552, 552, 547, 554, 554, - 597, 550, 556, 551, 550, 553, 555, 555, 556, 557, - 557, 558, 558, 559, 561, 560, 562, 565, 564, 559, + 515, 515, 518, 511, 517, 517, 519, 521, 520, 522, + 523, 524, 513, 525, 526, 523, 160, 518, 519, 527, + 524, 529, 516, 520, 530, 527, 521, 531, 530, 526, + 529, 522, 525, 531, 532, 533, 534, 535, 536, 538, + 540, 539, 540, 538, 541, 650, 532, 650, 542, 545, + 533, 535, 547, 536, 539, 534, 542, 543, 543, 544, + 546, 545, 549, 550, 547, 544, 546, 548, 541, 551, + 548, 553, 552, 554, 551, 552, 549, 555, 550, 556, + 553, 567, 555, 555, 557, 557, 567, 553, 564, 554, + 553, 559, 556, 558, 558, 560, 560, 559, 561, 561, - 560, 560, 563, 564, 566, 563, 567, 569, 562, 567, - 570, 572, 566, 568, 574, 561, 565, 572, 568, 573, - 575, 576, 578, 573, 579, 575, 577, 577, 580, 570, - 569, 581, 574, 580, 582, 576, 583, 578, 584, 585, - 587, 589, 583, 584, 80, 579, 590, 581, 586, 588, - 588, 586, 591, 585, 582, 593, 586, 591, 587, 589, - 586, 592, 590, 594, 596, 598, 592, 599, 598, 593, - 596, 599, 600, 601, 602, 603, 601, 600, 594, 602, - 604, 605, 606, 608, 607, 609, 609, 610, 605, 607, - 611, 603, 612, 599, 615, 606, 610, 613, 604, 614, + 562, 565, 563, 568, 569, 571, 562, 563, 563, 564, + 571, 566, 569, 565, 566, 570, 572, 573, 570, 574, + 575, 576, 568, 574, 577, 576, 575, 578, 582, 579, + 580, 580, 578, 581, 584, 583, 573, 585, 586, 572, + 583, 587, 577, 579, 586, 588, 587, 590, 581, 582, + 584, 592, 589, 591, 591, 589, 593, 585, 594, 588, + 589, 595, 596, 594, 589, 590, 595, 597, 599, 592, + 600, 606, 593, 602, 599, 601, 596, 602, 601, 600, + 603, 604, 597, 605, 604, 603, 607, 606, 605, 608, + 609, 611, 610, 612, 612, 614, 608, 610, 613, 602, - 615, 616, 617, 608, 621, 617, 613, 616, 612, 611, - 622, 614, 618, 618, 619, 618, 620, 619, 624, 623, - 625, 620, 621, 624, 622, 623, 625, 626, 627, 628, - 626, 629, 630, 627, 628, 628, 631, 632, 633, 634, - 636, 631, 635, 632, 629, 630, 638, 635, 634, 637, - 637, 639, 640, 638, 639, 631, 631, 633, 640, 641, - 636, 642, 643, 644, 644, 645, 642, 643, 643, 639, - 646, 641, 646, 647, 648, 649, 648, 650, 651, 652, - 653, 654, 655, 659, 657, 656, 655, 654, 658, 660, - 645, 662, 647, 649, 656, 650, 651, 661, 652, 657, + 615, 616, 618, 609, 607, 617, 619, 613, 618, 624, + 616, 611, 619, 158, 614, 620, 615, 617, 620, 621, + 621, 622, 621, 623, 622, 625, 626, 624, 623, 627, + 628, 630, 626, 637, 627, 629, 628, 631, 629, 625, + 632, 633, 631, 635, 634, 632, 632, 636, 635, 638, + 639, 640, 637, 636, 633, 639, 630, 634, 638, 641, + 641, 642, 635, 635, 643, 645, 644, 643, 642, 646, + 647, 640, 644, 649, 646, 647, 647, 645, 648, 648, + 651, 652, 643, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 664, 659, 658, 662, 663, 649, 651, - 653, 659, 664, 658, 663, 665, 662, 666, 660, 661, - 663, 667, 670, 669, 668, 671, 664, 665, 668, 672, - 673, 675, 674, 676, 676, 677, 666, 674, 670, 677, - 667, 669, 678, 671, 679, 675, 680, 672, 672, 673, - 682, 681, 683, 686, 684, 679, 681, 685, 686, 690, - 680, 678, 687, 688, 685, 689, 682, 684, 688, 687, - 689, 683, 691, 692, 693, 694, 696, 690, 695, 691, - 697, 696, 692, 697, 694, 698, 699, 700, 693, 698, - 695, 701, 703, 702, 704, 704, 700, 706, 706, 707, - 699, 705, 705, 709, 711, 710, 701, 702, 707, 713, + 660, 665, 653, 654, 655, 666, 656, 661, 657, 668, + 667, 662, 664, 665, 669, 663, 667, 670, 671, 674, + 666, 672, 673, 668, 675, 672, 669, 676, 677, 678, + 679, 680, 680, 682, 678, 674, 670, 671, 683, 681, + 673, 684, 675, 681, 679, 676, 676, 677, 685, 683, + 686, 687, 682, 685, 688, 684, 689, 690, 691, 692, + 694, 697, 690, 689, 692, 691, 686, 688, 693, 695, + 687, 696, 698, 693, 699, 697, 695, 700, 694, 702, + 696, 698, 700, 702, 701, 703, 699, 701, 704, 705, + 707, 706, 708, 708, 709, 709, 716, 704, 714, 703, - 705, 710, 712, 703, 714, 715, 712, 716, 717, 719, - 718, 713, 709, 716, 711, 720, 717, 718, 721, 724, - 731, 730, 733, 715, 734, 741, 731, 719, 733, 714, - 730, 735, 736, 734, 724, 746, 736, 740, 721, 741, - 720, 722, 75, 722, 737, 737, 722, 735, 738, 738, - 722, 739, 742, 722, 745, 740, 746, 749, 743, 745, - 722, 722, 739, 722, 743, 747, 748, 750, 752, 754, - 748, 750, 742, 744, 744, 744, 779, 744, 753, 751, - 744, 749, 779, 747, 751, 744, 755, 752, 759, 755, - 756, 744, 744, 753, 754, 756, 756, 757, 758, 758, + 710, 710, 711, 709, 705, 706, 712, 711, 715, 717, + 718, 707, 719, 717, 715, 712, 716, 714, 720, 721, + 722, 724, 718, 723, 725, 721, 726, 729, 722, 735, + 723, 740, 742, 742, 736, 738, 720, 719, 735, 724, + 736, 738, 729, 745, 739, 751, 726, 740, 747, 725, + 727, 746, 727, 739, 741, 727, 743, 743, 741, 727, + 744, 745, 727, 754, 85, 746, 751, 748, 747, 727, + 727, 744, 727, 748, 749, 749, 749, 750, 749, 752, + 753, 749, 750, 756, 753, 755, 749, 754, 756, 755, + 757, 758, 749, 749, 759, 760, 761, 752, 760, 764, - 760, 760, 761, 759, 757, 762, 763, 761, 762, 764, - 764, 763, 765, 766, 765, 767, 768, 769, 771, 770, - 768, 772, 772, 777, 773, 766, 771, 774, 775, 775, - 776, 778, 781, 781, 767, 777, 797, 769, 770, 773, - 780, 774, 784, 797, 782, 780, 785, 784, 776, 782, - 782, 786, 785, 778, 787, 788, 790, 786, 791, 787, - 789, 788, 790, 789, 792, 792, 791, 793, 793, 794, - 795, 796, 798, 799, 799, 800, 796, 794, 801, 802, - 803, 805, 807, 806, 800, 802, 801, 809, 795, 808, - 805, 798, 806, 812, 808, 810, 809, 811, 810, 803, + 762, 761, 761, 763, 763, 772, 758, 762, 766, 757, + 765, 765, 767, 766, 764, 767, 768, 769, 769, 759, + 770, 768, 770, 771, 772, 773, 774, 778, 775, 773, + 776, 777, 777, 781, 779, 771, 780, 780, 776, 783, + 782, 794, 778, 784, 794, 785, 774, 775, 779, 784, + 785, 781, 782, 786, 786, 789, 80, 787, 790, 791, + 789, 783, 787, 787, 790, 791, 792, 793, 795, 796, + 800, 792, 799, 793, 795, 797, 797, 796, 798, 798, + 799, 801, 802, 803, 804, 804, 801, 805, 800, 802, + 806, 807, 807, 808, 809, 811, 805, 812, 806, 808, - 813, 814, 811, 815, 817, 817, 807, 812, 816, 818, - 814, 819, 820, 816, 816, 821, 815, 822, 825, 825, - 822, 820, 826, 828, 818, 813, 827, 824, 822, 824, - 819, 827, 829, 830, 831, 832, 833, 834, 835, 821, - 836, 838, 835, 826, 828, 833, 837, 838, 839, 840, - 841, 74, 829, 830, 842, 832, 831, 839, 836, 844, - 834, 840, 845, 847, 843, 837, 848, 845, 842, 841, - 843, 846, 846, 844, 849, 848, 850, 851, 852, 853, - 855, 854, 856, 847, 850, 857, 855, 858, 856, 859, - 860, 862, 863, 858, 849, 862, 860, 851, 853, 857, + 813, 815, 803, 814, 811, 818, 812, 819, 814, 816, + 815, 817, 816, 809, 820, 821, 817, 823, 823, 818, + 822, 824, 825, 820, 813, 822, 822, 827, 821, 826, + 835, 828, 819, 830, 828, 830, 824, 832, 826, 831, + 831, 825, 828, 833, 834, 837, 836, 839, 833, 838, + 835, 827, 840, 841, 842, 843, 839, 841, 832, 846, + 847, 845, 844, 848, 850, 834, 836, 837, 844, 838, + 845, 846, 842, 853, 843, 840, 849, 848, 850, 847, + 851, 854, 849, 852, 852, 851, 855, 856, 857, 858, + 854, 859, 860, 853, 861, 856, 862, 864, 865, 863, - 852, 854, 861, 864, 866, 865, 867, 867, 861, 859, - 865, 863, 868, 869, 870, 864, 869, 871, 868, 873, - 872, 874, 874, 864, 875, 866, 872, 881, 876, 877, - 871, 878, 870, 876, 877, 877, 879, 880, 880, 873, - 879, 882, 875, 883, 884, 886, 878, 889, 883, 881, - 887, 890, 892, 892, 893, 894, 895, 895, 893, 898, - 896, 882, 897, 884, 887, 899, 897, 889, 946, 886, - 894, 946, 890, 891, 898, 900, 891, 901, 891, 899, - 900, 902, 891, 903, 891, 896, 902, 902, 904, 891, - 906, 901, 903, 905, 891, 907, 908, 905, 909, 910, + 861, 866, 862, 864, 869, 870, 855, 866, 857, 867, + 859, 858, 860, 863, 871, 867, 868, 870, 865, 871, + 868, 872, 874, 869, 877, 870, 873, 873, 874, 875, + 876, 879, 875, 878, 880, 880, 881, 877, 882, 878, + 883, 884, 872, 882, 887, 883, 883, 888, 876, 885, + 889, 879, 890, 885, 881, 889, 884, 886, 886, 892, + 893, 896, 895, 897, 899, 899, 887, 888, 900, 902, + 902, 890, 900, 903, 893, 895, 901, 905, 904, 906, + 921, 896, 904, 892, 897, 898, 921, 75, 898, 908, + 898, 901, 905, 906, 898, 907, 898, 915, 903, 909, - 907, 911, 904, 909, 912, 906, 913, 915, 908, 905, - 907, 914, 915, 910, 916, 913, 919, 914, 912, 917, - 916, 919, 911, 918, 918, 917, 920, 921, 922, 925, - 923, 926, 920, 928, 929, 929, 926, 930, 927, 932, - 933, 925, 930, 934, 935, 928, 931, 922, 923, 921, - 924, 924, 927, 932, 931, 936, 924, 938, 924, 933, - 935, 936, 934, 937, 924, 939, 940, 943, 937, 924, - 924, 941, 941, 942, 945, 938, 924, 942, 947, 948, - 945, 939, 949, 951, 940, 950, 953, 943, 949, 954, - 950, 955, 948, 956, 957, 953, 958, 947, 954, 956, + 907, 898, 910, 908, 909, 909, 898, 911, 912, 915, + 913, 910, 912, 914, 916, 917, 918, 919, 914, 916, + 923, 911, 922, 920, 912, 913, 923, 922, 914, 917, + 924, 919, 920, 925, 925, 926, 924, 918, 927, 928, + 926, 929, 932, 933, 927, 930, 935, 938, 933, 936, + 936, 937, 934, 939, 932, 938, 937, 940, 935, 942, + 929, 928, 941, 930, 931, 931, 934, 939, 943, 945, + 931, 950, 931, 946, 943, 942, 940, 944, 931, 947, + 74, 941, 944, 931, 931, 948, 948, 945, 949, 946, + 931, 950, 949, 952, 954, 953, 955, 947, 953, 952, - 959, 960, 951, 957, 961, 959, 962, 955, 963, 970, - 964, 966, 967, 965, 972, 958, 973, 966, 961, 964, - 963, 960, 965, 974, 968, 970, 962, 975, 972, 967, - 968, 976, 977, 978, 979, 982, 973, 983, 978, 979, - 982, 975, 974, 984, 984, 985, 983, 977, 986, 976, - 988, 985, 989, 992, 993, 990, 990, 989, 989, 990, - 991, 986, 994, 991, 995, 997, 988, 992, 996, 998, - 999, 1000, 1001, 1005, 993, 998, 1005, 1000, 994, 1002, - 997, 996, 995, 1003, 1002, 1006, 1007, 1001, 1008, 1009, - 999, 1007, 1012, 1008, 1010, 1011, 1014, 1003, 1015, 1010, + 956, 958, 957, 960, 963, 961, 956, 957, 962, 955, + 963, 965, 960, 954, 961, 967, 964, 966, 968, 969, + 958, 970, 966, 973, 962, 964, 974, 971, 972, 973, + 965, 977, 968, 970, 975, 967, 971, 972, 979, 969, + 975, 980, 982, 974, 981, 984, 983, 977, 985, 986, + 989, 995, 979, 985, 986, 989, 982, 990, 991, 991, + 984, 980, 992, 981, 983, 993, 990, 995, 992, 996, + 1000, 1001, 998, 998, 996, 996, 998, 999, 993, 1002, + 999, 1003, 1005, 1004, 1000, 1007, 1006, 1008, 1009, 1010, + 1011, 1001, 1006, 1008, 1010, 1002, 1004, 1005, 1013, 1003, - 1011, 1016, 1014, 1017, 1012, 1009, 1006, 1016, 1019, 1017, - 1018, 1018, 1020, 1021, 1015, 1023, 1021, 1019, 1022, 1022, - 1024, 1025, 1026, 1027, 1030, 1026, 1028, 1035, 1029, 1030, - 1020, 1036, 1028, 1023, 1029, 1031, 1027, 1032, 1033, 1024, - 1031, 1025, 1032, 1037, 1033, 1035, 1040, 1038, 1041, 1037, - 1042, 1036, 1038, 1039, 1039, 1040, 1043, 1041, 1044, 1045, - 1046, 1044, 1045, 1047, 1048, 1049, 1050, 1051, 1042, 1053, - 1052, 1046, 1050, 1051, 1053, 1043, 1048, 1054, 1054, 1055, - 1056, 1047, 1058, 1057, 1049, 1052, 1058, 1059, 1060, 1061, - 1062, 1064, 1065, 1065, 1056, 1057, 1066, 1060, 1055, 1068, + 1014, 1013, 1015, 1009, 1011, 1007, 1016, 1015, 1017, 1018, + 1019, 1016, 1022, 1020, 1018, 1019, 1023, 1024, 1022, 1028, + 1025, 1014, 1027, 1024, 1017, 1020, 1025, 1026, 1026, 1031, + 1029, 1027, 1023, 1029, 1030, 1030, 1032, 1028, 1033, 1034, + 1035, 1038, 1034, 1036, 1037, 1043, 1038, 1031, 1041, 1036, + 1037, 1039, 1040, 1035, 1041, 1032, 1039, 1040, 1033, 1044, + 1045, 1048, 1046, 1043, 1047, 1047, 1045, 1046, 1049, 1050, + 1048, 1051, 1052, 1053, 1054, 1052, 1053, 1049, 1055, 1044, + 1056, 1057, 1058, 1059, 1060, 1054, 1061, 1050, 1058, 1059, + 1051, 1061, 1056, 1062, 1062, 1063, 1055, 1064, 1065, 1060, - 1070, 1071, 1069, 1073, 1073, 1059, 1071, 1074, 1061, 1072, - 1064, 68, 1070, 1068, 1075, 1062, 1066, 1069, 1072, 1076, - 1075, 1077, 1078, 1079, 1078, 1076, 1077, 1074, 1079, 1080, - 1081, 1082, 1083, 1084, 1085, 1086, 1082, 1087, 1089, 1089, - 1090, 1085, 1091, 1080, 1081, 1093, 1092, 1083, 1094, 63, - 1086, 1093, 1084, 1095, 1090, 1097, 1087, 1101, 1095, 1097, - 1091, 1092, 1098, 1098, 1101, 1099, 1102, 1095, 1094, 1095, - 1099, 1104, 1095, 1100, 1100, 1103, 1105, 1106, 1103, 1107, - 1102, 1108, 1110, 1109, 1107, 1111, 1106, 1110, 1113, 1118, - 1104, 1112, 1115, 1115, 1105, 1109, 1116, 1121, 1117, 1111, + 1057, 1066, 1067, 1068, 1069, 1066, 1070, 1072, 1073, 1073, + 1065, 1064, 1068, 1074, 1063, 1076, 1078, 1077, 1080, 1079, + 1067, 1081, 1081, 1069, 1079, 1082, 1072, 1080, 1078, 1076, + 1083, 1070, 1077, 1074, 1084, 1085, 1083, 1086, 1088, 1087, + 1084, 1087, 1086, 1088, 1089, 1082, 1090, 1091, 1092, 1093, + 1094, 1085, 1091, 1096, 1095, 1098, 1098, 1094, 1089, 1099, + 1090, 1100, 1101, 1092, 1102, 1103, 68, 1106, 1093, 1095, + 1102, 1106, 1096, 1099, 1114, 1104, 1111, 1101, 1108, 1100, + 1104, 1107, 1107, 1108, 1113, 1103, 1109, 1109, 1110, 1104, + 1111, 1104, 1114, 1112, 1104, 1110, 1112, 1115, 1117, 1116, - 1108, 1116, 1112, 1117, 1120, 1119, 1121, 1113, 1120, 1118, - 1119, 1122, 1123, 1124, 1126, 1127, 1125, 1129, 1128, 1130, - 1131, 1134, 1127, 1135, 1133, 1132, 1122, 1123, 1125, 1126, - 1128, 1132, 1124, 1136, 1137, 1138, 1129, 1140, 1131, 1133, - 1130, 1134, 1136, 1135, 1139, 1141, 1142, 1144, 1145, 1137, - 1146, 1147, 1148, 1144, 1138, 1150, 1139, 1152, 1154, 1147, - 1141, 1153, 1140, 1145, 1146, 1149, 1142, 1150, 1151, 1157, - 1149, 1154, 1148, 1151, 1151, 1153, 1152, 1155, 1155, 1156, - 1158, 1161, 1157, 1167, 1156, 1159, 1161, 1156, 1156, 1158, - 1162, 1159, 1156, 1160, 1160, 1163, 1166, 1166, 1156, 1162, + 1118, 1120, 1119, 1113, 1116, 1121, 1115, 1119, 1122, 1124, + 1124, 1127, 1118, 1125, 1126, 1120, 1121, 1117, 1125, 1126, + 1128, 1130, 1129, 1131, 1132, 1128, 1129, 1122, 1133, 1134, + 1130, 1127, 1137, 1135, 1138, 1136, 1139, 1140, 1131, 1132, + 1141, 1134, 1136, 1142, 1137, 1143, 1141, 1133, 1135, 1144, + 1145, 1146, 1147, 1138, 1149, 1140, 1148, 1139, 1142, 1145, + 1150, 1151, 1154, 1157, 1153, 1143, 1146, 63, 1148, 1144, + 1153, 1147, 1155, 1158, 1156, 1150, 1159, 1154, 1158, 1149, + 1161, 1151, 1156, 1157, 1160, 1163, 1155, 1162, 1159, 1160, + 1160, 1164, 1164, 1166, 1168, 1167, 1169, 1169, 1163, 1161, - 1164, 1163, 1156, 1165, 1167, 1164, 1168, 1168, 1165, 1169, - 1170, 1171, 1169, 1172, 1169, 1173, 1174, 1175, 1176, 1177, - 1178, 1174, 1172, 1179, 1214, 1177, 1178, 1214, 1179, 1171, - 1170, 1175, 1181, 1180, 1192, 1173, 1176, 1180, 1182, 1182, - 1184, 1181, 1183, 1183, 1187, 1183, 1181, 1188, 1181, 1186, - 1181, 1184, 1181, 1186, 1189, 1190, 1192, 1191, 1194, 1187, - 1190, 1190, 1193, 1189, 1195, 1188, 1191, 1193, 1196, 1197, - 1198, 1199, 1194, 1195, 1200, 1200, 1202, 1199, 1201, 1204, - 1203, 1206, 1205, 1207, 1198, 1203, 1201, 1196, 1197, 1208, - 1202, 1205, 1210, 1204, 1208, 1209, 1209, 1211, 1211, 1206, + 1168, 1162, 1165, 1165, 1167, 1171, 1166, 1165, 1170, 1176, + 1165, 1165, 1172, 1170, 1171, 1165, 58, 1173, 1172, 1174, + 1179, 1165, 1173, 1180, 1174, 1165, 1175, 1175, 1177, 1177, + 1176, 1178, 1182, 1181, 1178, 1184, 1178, 1185, 1183, 1186, + 1179, 1180, 1181, 1183, 1187, 1186, 1188, 1190, 57, 1184, + 1187, 1188, 1182, 1189, 1197, 1185, 1190, 1189, 1191, 1191, + 1195, 1190, 1193, 1190, 1195, 1190, 1196, 1190, 1192, 1192, + 1198, 1192, 1197, 1193, 1201, 1200, 1203, 1199, 1204, 1198, + 1202, 1196, 1199, 1199, 1200, 1202, 1205, 1204, 1206, 1207, + 1203, 1208, 1209, 1209, 1210, 1211, 1201, 1208, 1213, 1212, - 1212, 1215, 1212, 1216, 1217, 1219, 1215, 1210, 1207, 1218, - 1218, 1220, 1220, 1217, 1221, 1221, 1222, 1223, 1224, 1225, - 1225, 1222, 1216, 1226, 1227, 1219, 1228, 1227, 1229, 1232, - 1231, 1230, 1231, 1229, 1234, 1235, 1236, 1234, 1223, 1224, - 1230, 1236, 1237, 1226, 1238, 1239, 1228, 1232, 1244, 1238, - 1235, 1295, 1240, 1239, 1241, 1295, 1237, 1240, 1243, 1241, - 1242, 1242, 1245, 1243, 1246, 1247, 1244, 1249, 1245, 1250, - 1252, 1246, 1251, 1249, 1253, 1250, 1252, 1251, 1247, 1254, - 1255, 1256, 1256, 1253, 1257, 1259, 1260, 1261, 1262, 1263, - 1264, 1255, 1268, 1266, 1262, 1263, 1264, 1267, 1254, 1266, + 1215, 1214, 1210, 1207, 1212, 1205, 1216, 1206, 1217, 1211, + 1214, 1219, 1213, 1217, 1218, 1218, 1220, 1220, 1215, 1221, + 1223, 1221, 1224, 1223, 1225, 1226, 1219, 1224, 1227, 1227, + 1228, 1216, 1229, 1229, 1226, 1230, 1230, 1231, 1232, 1233, + 1234, 1234, 1231, 1225, 1235, 1236, 1237, 1238, 1236, 1239, + 1228, 1240, 1238, 1240, 1241, 1244, 1245, 1246, 1239, 1232, + 1233, 1245, 1243, 1247, 1235, 1243, 1237, 1248, 1247, 1249, + 1244, 1246, 1241, 1250, 1249, 1248, 1251, 1251, 1250, 1252, + 1253, 1254, 1255, 1256, 1252, 1258, 1259, 1254, 1260, 1255, + 1262, 1258, 1259, 1260, 1261, 1263, 1256, 1264, 1253, 1262, - 1259, 1269, 1270, 1271, 1257, 1273, 1260, 1272, 1272, 1274, - 1261, 1267, 1268, 1269, 1275, 1276, 1270, 1267, 1277, 1277, - 1276, 1271, 1278, 1279, 1281, 1273, 1283, 1286, 1279, 1284, - 1282, 1285, 1275, 1287, 1274, 1282, 1282, 1288, 1284, 1285, - 1290, 1286, 1289, 1281, 1283, 1278, 1292, 1289, 1287, 1290, - 1289, 1291, 1288, 1291, 1296, 1288, 1294, 1298, 1297, 1299, - 1292, 1300, 1294, 1297, 1297, 1296, 1301, 1302, 1303, 1304, - 1305, 1301, 1302, 1306, 1308, 1305, 1298, 1309, 1310, 1300, - 1311, 1311, 1313, 1312, 1314, 1299, 1303, 1312, 1308, 1304, - 1316, 1315, 1317, 1306, 1318, 1309, 1310, 1315, 1319, 1320, + 1261, 1265, 1265, 1266, 1268, 1269, 1270, 1271, 1264, 1272, + 1273, 1275, 1276, 1271, 1263, 1272, 1273, 1275, 1277, 1268, + 1278, 1279, 1280, 1266, 1281, 1269, 1276, 1282, 1282, 1270, + 1283, 1284, 1276, 1279, 1285, 1288, 1280, 52, 1277, 1286, + 1278, 1291, 1281, 1289, 1286, 1287, 1287, 1293, 1289, 1292, + 1283, 1295, 1285, 1294, 1292, 1292, 1284, 1296, 1288, 1295, + 1291, 1297, 1294, 1298, 1299, 1293, 1300, 1308, 1301, 1299, + 1301, 1296, 1299, 1302, 1304, 1300, 1297, 1306, 1298, 1305, + 1304, 1298, 1309, 1305, 1307, 1310, 1308, 1302, 1306, 1307, + 1307, 1311, 1312, 1313, 1314, 1315, 1311, 1312, 1316, 1318, - 1313, 1321, 1316, 1314, 1322, 1323, 1325, 1326, 1318, 1322, - 1324, 1317, 1323, 1319, 1320, 1324, 1326, 1327, 1327, 1328, - 1321, 1329, 1330, 1332, 1325, 1331, 1331, 1333, 1336, 1332, - 1329, 1334, 1334, 1335, 1328, 1337, 1341, 1341, 1338, 1335, - 1339, 1333, 1330, 1338, 1336, 1340, 1339, 1342, 1342, 1344, - 1344, 1340, 1346, 1345, 1347, 1348, 1337, 1345, 1349, 1350, - 1352, 1346, 1351, 1351, 1355, 1354, 1350, 1353, 1356, 1348, - 1354, 1357, 1347, 1349, 1359, 1353, 1357, 1357, 1355, 1358, - 1352, 1360, 1360, 1361, 1358, 1358, 1362, 1356, 1363, 1365, - 1364, 1366, 1367, 1368, 1359, 1364, 1369, 1363, 1370, 1368, + 1315, 1319, 1320, 1310, 1321, 1321, 1322, 1323, 1309, 1324, + 1322, 1313, 1326, 1318, 1314, 1325, 1327, 1328, 1316, 1319, + 1320, 1325, 1329, 1330, 1326, 1323, 1331, 1332, 1324, 1333, + 1335, 1328, 1332, 1336, 1334, 1327, 1333, 1329, 1330, 1334, + 1337, 1337, 1336, 1338, 1339, 1331, 1340, 1343, 1335, 1341, + 1341, 1342, 1346, 1339, 1344, 1344, 1345, 1342, 1338, 1347, + 1348, 1343, 1345, 1349, 1350, 1348, 1340, 1357, 1346, 1349, + 1350, 1351, 1351, 1352, 1352, 1354, 1354, 1355, 1356, 1358, + 1347, 1355, 1359, 1360, 1363, 1357, 1361, 1356, 1362, 1362, + 1365, 1358, 1364, 1361, 1366, 1365, 1359, 1367, 1360, 1370, - 1371, 1369, 1361, 1372, 1375, 1362, 1371, 1373, 1365, 1374, - 1367, 1366, 1376, 1373, 1377, 1374, 1378, 1380, 1379, 1381, - 1382, 1382, 1372, 1375, 1370, 1383, 58, 1384, 1383, 1385, - 1385, 1376, 1379, 1377, 1381, 1378, 1386, 1386, 1380, 1384, - 1387, 1389, 1388, 1390, 1391, 1387, 1388, 1392, 1396, 1392, - 1394, 1395, 1390, 1392, 1389, 1397, 1395, 1391, 1398, 1399, - 1399, 1402, 1400, 1396, 1401, 1403, 1392, 1400, 1394, 1405, - 1401, 1407, 1404, 1405, 1398, 1397, 1402, 1404, 1403, 1406, - 1408, 1409, 1410, 1406, 1411, 1411, 1413, 1415, 1410, 1416, - 1418, 1407, 1417, 1417, 1416, 1419, 1418, 1425, 1408, 1421, + 1364, 1368, 1371, 1371, 1363, 1369, 1368, 1368, 1366, 1372, + 1369, 1369, 1373, 1374, 1376, 1375, 1367, 1377, 1378, 1370, + 1375, 1379, 1374, 1381, 1380, 1383, 1382, 1379, 1372, 1380, + 1391, 1373, 1382, 1376, 1384, 1385, 1378, 1377, 1386, 1387, + 1384, 1385, 1388, 1389, 1383, 1390, 1393, 1393, 1392, 1381, + 1394, 1391, 1395, 1394, 1396, 1396, 1399, 1386, 1387, 1390, + 1399, 1388, 1389, 1392, 1395, 1397, 1397, 1398, 1400, 1401, + 1402, 1403, 1398, 1403, 1405, 1406, 1407, 1403, 1401, 1408, + 1406, 1400, 1409, 1402, 1410, 1410, 1413, 1414, 1411, 1412, + 1403, 1407, 1405, 1411, 1418, 1412, 1420, 1415, 1409, 1408, - 1421, 1409, 1423, 1426, 1413, 1423, 1424, 1424, 1415, 1428, - 1429, 1430, 1428, 1425, 1432, 1419, 1431, 1431, 1433, 1426, - 1430, 1434, 1435, 1436, 1437, 1437, 1438, 1435, 1439, 1432, - 1429, 1441, 1440, 1442, 1442, 1438, 1443, 1436, 1445, 1433, - 1434, 1444, 1446, 1445, 1447, 1447, 1439, 1440, 1448, 1449, - 1443, 1451, 1448, 1450, 1450, 1452, 1441, 1446, 1453, 1444, - 1454, 1458, 1453, 1455, 1457, 1457, 1452, 1459, 1455, 1449, - 1460, 1461, 1462, 1451, 1463, 1464, 1464, 1458, 1465, 1454, - 1466, 1467, 1470, 1465, 1460, 1459, 1462, 1468, 1469, 1473, - 1461, 1461, 1471, 1469, 1471, 1473, 1468, 1474, 1472, 1463, + 1414, 1413, 1415, 1416, 1417, 1419, 1421, 1416, 1417, 1422, + 1422, 1424, 1421, 1426, 1418, 1427, 1420, 1428, 1428, 1429, + 1427, 1430, 1436, 1419, 1437, 1429, 1432, 1432, 1434, 1424, + 1440, 1434, 1435, 1435, 1426, 1441, 1439, 1443, 1436, 1439, + 1437, 1430, 1442, 1442, 1441, 1444, 1445, 1447, 1446, 1449, + 1440, 1450, 1443, 1446, 1448, 1448, 1451, 1452, 1449, 1453, + 1453, 1447, 1454, 1455, 1457, 1445, 1444, 1456, 1460, 1450, + 1462, 1451, 1456, 1458, 1458, 1463, 1454, 1461, 1461, 1457, + 1459, 1455, 1452, 1464, 1459, 1465, 1463, 1464, 1460, 1466, + 1468, 1468, 1462, 1469, 1466, 1470, 1471, 1472, 1473, 1474, - 1466, 1467, 1470, 1472, 1475, 1477, 1478, 1478, 1479, 1480, - 1475, 1482, 1483, 1484, 1484, 1480, 1482, 1474, 1486, 1477, - 1485, 1485, 1487, 1488, 1491, 1489, 1493, 1479, 1489, 1490, - 1490, 1492, 1486, 1495, 1497, 1501, 1483, 1497, 1488, 1495, - 1487, 1494, 1491, 1492, 1494, 1496, 1493, 1494, 1499, 1500, - 1496, 1506, 1502, 1497, 1500, 1502, 1506, 1499, 1504, 1494, - 1501, 1503, 1503, 1505, 1504, 1507, 1507, 1508, 1508, 1505, - 1509, 1511, 1510, 1512, 1513, 1514, 1509, 1510, 1515, 1516, - 1517, 1515, 1518, 1519, 1511, 1516, 1517, 1518, 1520, 1519, - 1524, 1512, 1521, 1513, 1525, 1514, 1523, 1521, 1522, 1522, + 1475, 1475, 1476, 1477, 1465, 1478, 47, 1476, 1482, 1469, + 1471, 1480, 1473, 1470, 1479, 1479, 1472, 1472, 1486, 1495, + 1480, 1481, 1489, 1477, 1474, 1478, 1481, 1483, 1482, 1483, + 1484, 1485, 1491, 1487, 18, 1484, 1489, 1485, 1486, 1487, + 1490, 1490, 1492, 1495, 1494, 1496, 1496, 1498, 1492, 1494, + 1499, 1491, 1497, 1497, 1500, 1501, 1502, 1502, 1501, 1503, + 1504, 1498, 1505, 1513, 17, 1507, 1524, 1506, 1499, 1500, + 1506, 1507, 1504, 1506, 1508, 1509, 1512, 1503, 1509, 1508, + 1511, 1512, 1505, 1514, 1524, 1506, 1514, 1516, 1513, 1511, + 1515, 1515, 1517, 1516, 1509, 1518, 1519, 1519, 1517, 1521, - 1526, 1523, 1527, 1528, 1529, 1530, 1531, 1532, 1524, 1532, - 1533, 1520, 1535, 1536, 1525, 1537, 1527, 1528, 1529, 1539, - 1526, 1538, 1540, 1530, 1535, 1536, 1541, 1538, 1537, 1533, - 1542, 1531, 1544, 1544, 1545, 1548, 1546, 1547, 1547, 1539, - 1541, 1546, 1540, 1549, 1550, 1551, 1552, 1553, 1564, 1554, - 1548, 1542, 1555, 1556, 1545, 1552, 1554, 1549, 1558, 1560, - 1564, 1555, 1553, 1551, 1555, 1562, 1562, 1561, 1550, 1556, - 1561, 1563, 1563, 1558, 1565, 1568, 1566, 1569, 1558, 1566, - 1567, 1567, 1570, 1572, 1560, 1571, 1574, 1570, 1568, 1573, - 1571, 1575, 1565, 1578, 1576, 1574, 1569, 1580, 1577, 1578, + 1518, 1520, 1520, 1522, 1523, 1521, 1525, 1526, 1522, 1527, + 1528, 1532, 1527, 1529, 1536, 1530, 1528, 1523, 1531, 1529, + 1530, 1533, 1534, 1534, 1531, 1525, 1533, 1526, 1535, 1537, + 1538, 1539, 1536, 1535, 1532, 1542, 1543, 1540, 1541, 1544, + 1545, 1544, 1547, 1548, 1549, 1539, 1551, 1552, 1554, 1537, + 1538, 1540, 1541, 1542, 1547, 1548, 1550, 1549, 1553, 1545, + 1557, 1543, 1550, 1556, 1556, 1558, 1551, 1552, 1562, 1554, + 1558, 1559, 1553, 1560, 1560, 1561, 1563, 1564, 1565, 1566, + 1557, 1567, 1562, 1559, 1568, 1569, 1573, 1565, 1567, 1571, + 1561, 1575, 1575, 1568, 1566, 1564, 1568, 1576, 1576, 1574, - 1579, 1579, 1572, 1576, 1582, 1573, 1576, 1577, 1581, 1583, - 1575, 1584, 1585, 1588, 1589, 1590, 1590, 1580, 1591, 1592, - 1593, 1581, 1582, 1583, 1585, 1593, 1598, 1584, 1592, 1594, - 1594, 1595, 1589, 1597, 1591, 1599, 1596, 1603, 1588, 1604, - 1595, 1596, 1602, 1595, 1594, 1605, 1607, 1598, 57, 1600, - 1605, 1597, 1603, 1599, 1600, 1600, 1602, 1606, 1608, 1608, - 1609, 1604, 1610, 1606, 1607, 1611, 1609, 1610, 1612, 1614, - 1615, 1611, 1616, 1617, 1612, 1619, 1618, 1623, 1616, 1618, - 1621, 1619, 1624, 1625, 1615, 1618, 1617, 1627, 1621, 1614, - 1626, 1625, 1628, 1629, 1630, 1637, 1623, 1631, 1631, 1626, + 1563, 1569, 1574, 1577, 1571, 1578, 1581, 1579, 1582, 1571, + 1579, 1573, 1580, 1580, 1585, 1577, 1583, 1584, 1586, 1581, + 1587, 1583, 1584, 1578, 1588, 1591, 1589, 1582, 1590, 1587, + 1593, 1591, 1594, 1585, 1586, 1589, 1595, 1590, 1589, 1592, + 1592, 1596, 1597, 1588, 1598, 1594, 1601, 1602, 1603, 1603, + 1593, 1604, 1605, 0, 1595, 1596, 1598, 1606, 1597, 1607, + 1607, 1605, 1606, 1608, 1609, 1602, 1610, 1604, 1611, 1609, + 1612, 1601, 1608, 1613, 1607, 1608, 1615, 1616, 1613, 1613, + 1617, 1618, 1620, 1628, 1610, 1619, 1618, 1627, 1612, 1611, + 1615, 1619, 1616, 1621, 1621, 1622, 1630, 1628, 1623, 1624, - 1627, 1624, 1634, 1632, 1633, 1628, 1636, 1629, 1630, 1632, - 1633, 1635, 1635, 1637, 1638, 1634, 1639, 1640, 1641, 1631, - 1642, 1643, 1646, 1640, 1645, 1645, 1636, 1647, 1652, 1639, - 1648, 1647, 1649, 1638, 1654, 1648, 1642, 1649, 1650, 1643, - 1641, 1651, 1646, 1650, 1655, 1657, 1654, 1656, 1656, 1658, - 1651, 1652, 1659, 1660, 1660, 1661, 1662, 1665, 1663, 1655, - 1664, 1658, 1666, 1662, 1657, 1668, 1669, 1667, 1670, 1661, - 1663, 1659, 1664, 1667, 1670, 52, 1665, 1668, 1671, 1671, - 1672, 1676, 1666, 1672, 1669, 1673, 1673, 1675, 1677, 1679, - 1676, 1680, 1675, 1680, 1677, 1678, 1678, 1681, 1682, 1683, + 1620, 1622, 1617, 1623, 1625, 1624, 1629, 1627, 1631, 1630, + 1625, 1631, 1629, 1632, 1634, 1636, 1637, 1631, 1638, 1632, + 1639, 0, 1634, 1640, 1641, 1642, 1638, 1643, 1649, 1639, + 1644, 1644, 1645, 1650, 1636, 1637, 1640, 1641, 1645, 1642, + 1646, 1643, 1647, 1648, 1648, 1651, 1646, 1652, 1649, 1654, + 1653, 1650, 1644, 1655, 1656, 1647, 1653, 1658, 1658, 1659, + 1652, 1660, 1661, 1662, 1651, 1660, 1665, 1661, 1662, 1655, + 1663, 1654, 1656, 1664, 1667, 1663, 1668, 1669, 1669, 1659, + 1670, 1671, 1664, 1672, 1673, 1673, 1667, 1674, 1675, 1665, + 1679, 1668, 1676, 1671, 1677, 1675, 1680, 1681, 1682, 1670, - 1681, 1679, 1684, 1686, 1685, 1687, 1688, 1689, 1686, 1690, - 1687, 1691, 1693, 1696, 1692, 1688, 1691, 1699, 1682, 1689, - 1684, 1683, 1685, 1692, 1690, 1694, 1695, 1701, 1696, 1698, - 1694, 1695, 1693, 1697, 1697, 1698, 1692, 1694, 1699, 1702, - 1703, 1704, 1705, 1710, 1705, 47, 1701, 1713, 1706, 1707, - 1707, 1708, 1708, 1709, 1709, 1714, 1703, 1711, 1711, 1702, - 1723, 1704, 1706, 1710, 1706, 1712, 1712, 1716, 1713, 1715, - 1715, 1716, 1717, 1720, 1718, 1721, 1714, 1718, 1717, 1720, - 1722, 1724, 1725, 1725, 1724, 1723, 1722, 1726, 1729, 1727, - 1728, 1728, 1730, 1721, 1727, 1731, 1731, 1730, 1732, 1733, + 1683, 1674, 1672, 1681, 1676, 1684, 1677, 1685, 1685, 1679, + 1682, 1684, 1686, 1687, 1687, 1686, 1680, 1689, 1683, 1690, + 1691, 1693, 1689, 1692, 1692, 1694, 1691, 1694, 1690, 1695, + 1696, 1697, 1695, 1693, 1698, 1700, 1699, 1701, 1702, 1703, + 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713, + 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715, + 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708, + 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727, + 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725, + 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730, - 1734, 1735, 1736, 1732, 1737, 1733, 1738, 1726, 1747, 1729, - 1737, 1740, 1734, 1734, 1734, 1741, 1740, 1740, 1742, 1734, - 1742, 1735, 1736, 1743, 1744, 1745, 1738, 1746, 1747, 1741, - 1748, 1745, 1749, 1749, 1743, 1750, 1746, 1751, 1751, 1744, - 1752, 1753, 1754, 1754, 1755, 1755, 1756, 1759, 1759, 1760, - 1761, 1748, 1764, 1763, 1766, 1766, 1767, 1768, 1765, 1761, - 1752, 1750, 1763, 1753, 1765, 1771, 1756, 1770, 1769, 1772, - 1772, 1773, 1768, 1764, 1760, 1769, 1770, 1767, 1774, 1776, - 1777, 1778, 1779, 1783, 1776, 1785, 1777, 1780, 1783, 1779, - 1781, 1771, 1786, 1780, 1774, 1784, 1781, 1773, 1782, 1782, + 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732, + 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740, + 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744, + 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740, + 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754, + 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760, + 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761, + 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770, + 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779, + 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781, - 1787, 1778, 1789, 1788, 1784, 1785, 1788, 1790, 1791, 1791, - 1792, 1786, 1787, 1793, 1794, 1795, 1792, 1796, 1798, 1793, - 1789, 1796, 1799, 1800, 1801, 1801, 1802, 1803, 1800, 1805, - 1795, 1806, 1808, 1790, 1794, 1806, 1811, 1796, 1798, 1810, - 1807, 1808, 1803, 1810, 1799, 1802, 1807, 1811, 1805, 1809, - 1809, 1813, 1811, 1812, 1812, 1814, 1815, 1816, 1817, 1818, - 1819, 1820, 1816, 1821, 1822, 1822, 1819, 1828, 1821, 1814, - 1823, 1823, 1813, 1824, 1826, 1815, 1820, 1824, 1817, 1818, - 1827, 1829, 1829, 1826, 1831, 1831, 1833, 1828, 1832, 1834, - 1835, 1827, 1833, 1832, 1832, 1834, 1827, 1836, 1837, 1838, + 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791, + 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786, + 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788, + 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803, + 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813, + 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816, + 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813, + 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823, + 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830, + 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835, - 1840, 1842, 1836, 1841, 1843, 1838, 1845, 1841, 1844, 1846, - 1837, 1848, 1840, 1842, 1844, 1846, 1835, 1847, 1850, 1851, - 1852, 1854, 1847, 1848, 1854, 1852, 1855, 1855, 1845, 1843, - 1850, 1856, 1856, 1857, 1857, 1858, 1859, 1860, 1851, 1861, - 1862, 1863, 1859, 1860, 1861, 1867, 1862, 1865, 1867, 1868, - 1863, 1871, 1865, 1869, 1869, 1858, 1872, 1873, 1874, 1874, - 1875, 1868, 1873, 1871, 1878, 1876, 1877, 1878, 1872, 1875, - 1876, 1877, 1879, 1879, 1880, 1881, 1884, 1882, 1883, 1886, - 1884, 1885, 1887, 1888, 1881, 1886, 1885, 1889, 1890, 1892, - 1892, 1893, 1888, 1899, 1880, 1882, 18, 1883, 1894, 1897, + 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841, + 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846, + 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851, + 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858, + 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859, + 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873, + 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872, + 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873, + 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880, + 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888, - 1887, 1892, 1890, 1895, 1895, 1889, 1898, 1894, 1897, 1893, - 1896, 1896, 1900, 1901, 1899, 1904, 1904, 1900, 1898, 1906, - 1907, 1908, 1906, 1910, 1912, 1911, 1901, 1913, 1914, 1914, - 1912, 1915, 1917, 1915, 1916, 1916, 1907, 1908, 1910, 1911, - 1917, 1919, 1919, 1922, 1913, 1920, 1920, 1923, 1924, 1922, - 1925, 1926, 1928, 1923, 1929, 1924, 1927, 1927, 1930, 1933, - 1935, 1928, 1931, 1934, 1932, 1938, 1935, 1937, 1939, 1939, - 1930, 1926, 1925, 1940, 1931, 1929, 1932, 1938, 1934, 1935, - 1941, 1942, 1944, 1943, 1942, 1933, 1948, 1937, 1943, 1946, - 1947, 1940, 1947, 1949, 1946, 1954, 1950, 1952, 1949, 1955, + 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894, + 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902, + 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897, + 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907, + 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919, + 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927, + 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922, + 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937, + 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939, + 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943, - 1941, 1958, 1944, 1950, 1948, 1956, 1952, 1957, 1955, 1957, - 1960, 1961, 1960, 1954, 1962, 1962, 1963, 1956, 1964, 1965, - 1958, 1965, 1966, 1964, 1967, 1961, 1968, 1966, 1969, 1967, - 1970, 1973, 1971, 1972, 1975, 1976, 1970, 1971, 1984, 1973, - 1977, 1977, 1963, 1979, 1968, 1980, 1972, 1982, 1969, 1976, - 1978, 1978, 1982, 1975, 1981, 1983, 1984, 1983, 1979, 1985, - 1981, 1986, 1986, 1990, 1987, 1980, 1992, 1985, 1988, 1988, - 1989, 1989, 1990, 1991, 1994, 1985, 1987, 1995, 1991, 1995, - 1996, 1998, 1997, 1994, 1992, 1999, 1994, 1997, 1997, 2002, - 1998, 2001, 2005, 2003, 2002, 2006, 2009, 1999, 2003, 2007, + 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955, + 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958, + 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964, + 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966, + 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976, + 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974, + 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989, + 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988, + 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992, + 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002, - 2010, 1996, 2012, 2001, 2011, 2005, 2008, 2008, 2007, 2013, - 2015, 2016, 2017, 2026, 2009, 2006, 2012, 2029, 2010, 2020, - 2011, 2018, 2015, 2016, 2013, 2019, 2018, 2023, 2020, 2025, - 2019, 2030, 2017, 2023, 2027, 2025, 2026, 2028, 2031, 2031, - 2030, 2032, 2029, 2033, 2033, 2034, 2023, 2035, 2036, 2027, - 2032, 2035, 2037, 2036, 2038, 2028, 2039, 2040, 2044, 2049, - 2041, 2039, 2039, 2040, 2034, 2037, 2041, 2042, 2049, 2043, - 2042, 2047, 2047, 2048, 2048, 2052, 2038, 2043, 2044, 2050, - 2050, 2051, 2051, 2053, 2054, 2061, 2055, 2052, 2048, 2061, - 2054, 2055, 2056, 2056, 2057, 2057, 2062, 2058, 2059, 2048, + 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003, + 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017, + 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014, + 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019, + 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029, + 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032, + 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045, + 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048, + 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051, + 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054, - 2064, 2053, 2058, 2063, 2059, 2066, 2067, 2063, 2068, 2069, - 2070, 2067, 2072, 2073, 2071, 2070, 2062, 2074, 2075, 2077, - 2064, 2078, 2074, 2077, 2069, 2076, 2076, 2080, 2072, 2079, - 2066, 2068, 2071, 2073, 2079, 2081, 2078, 2082, 2083, 2084, - 2075, 2085, 2081, 2086, 2084, 2087, 2087, 2089, 2090, 2082, - 2091, 2092, 2093, 2080, 2085, 2089, 2094, 2083, 2095, 2096, - 2097, 2086, 2099, 17, 2102, 2101, 2103, 2090, 2103, 2091, - 2102, 2096, 2104, 2104, 2092, 2094, 2093, 2099, 2101, 2095, - 2105, 2097, 2107, 2106, 2108, 2105, 2106, 2109, 2110, 2110, - 2111, 2111, 2112, 2112, 2113, 2107, 2116, 2114, 2108, 2121, + 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063, + 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065, + 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064, + 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074, + 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083, + 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092, + 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093, + 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097, + 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101, + 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102, - 2109, 2115, 2115, 2117, 2117, 2116, 2118, 2120, 2116, 2113, - 2114, 2118, 2120, 2122, 2123, 2124, 2124, 2125, 2125, 2121, - 2126, 2127, 2127, 2128, 2129, 2129, 2123, 2130, 2135, 2131, - 2132, 2132, 2134, 2122, 2131, 2133, 2133, 2135, 2136, 2126, - 2137, 2128, 2130, 2139, 2140, 2140, 2134, 2141, 2139, 2142, - 2142, 2143, 2136, 2145, 2144, 2148, 2145, 2146, 2146, 2137, - 2144, 2147, 2147, 2149, 2150, 2153, 2141, 2151, 2151, 2143, - 2154, 2155, 2156, 2146, 2148, 2158, 2156, 2159, 2149, 2157, - 2157, 2160, 2159, 2150, 2161, 2153, 2155, 2163, 2163, 2164, - 2165, 2166, 2167, 2154, 2158, 2168, 2160, 2165, 2169, 2161, + 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119, + 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120, + 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127, + 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129, + 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135, + 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142, + 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148, + 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152, + 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160, + 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154, - 2170, 2170, 2171, 2176, 2172, 2166, 2172, 2175, 2176, 2164, - 2167, 2171, 2173, 2168, 2178, 2173, 2177, 2180, 2179, 2175, - 2181, 2177, 2182, 2184, 2169, 2181, 2186, 2187, 2184, 2185, - 2173, 2179, 2173, 2187, 2185, 2188, 2189, 2192, 2180, 2178, - 2190, 2186, 2189, 2195, 2191, 2190, 2193, 2194, 2182, 2191, - 2194, 2196, 2195, 2199, 2197, 2198, 2188, 2202, 2204, 2193, - 2196, 2202, 2192, 2197, 2198, 2200, 2201, 2199, 2206, 2207, - 2207, 2200, 2201, 2208, 2209, 2209, 2210, 2206, 2204, 2208, - 2211, 2210, 2213, 2209, 2216, 2214, 2215, 2215, 2217, 2220, - 2224, 2219, 2221, 2224, 2222, 2226, 2227, 2217, 2213, 2216, + 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172, + 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177, + 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183, + 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187, + 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190, + 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193, + 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190, + 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203, + 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210, + 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221, - 2211, 2214, 2211, 2219, 2225, 2220, 2222, 2221, 2227, 2225, - 2228, 2228, 2229, 2229, 2233, 2226, 2231, 2231, 2232, 2233, - 2234, 2232, 2235, 2236, 2237, 2237, 2234, 2238, 2235, 2239, - 2239, 2240, 2236, 2241, 2242, 2243, 2243, 2245, 2244, 2253, - 2246, 2238, 2248, 2240, 2244, 2246, 2248, 2241, 2253, 2249, - 2254, 2245, 2249, 2242, 2250, 2250, 2251, 2252, 2256, 2256, - 2255, 2251, 2252, 2252, 2255, 2257, 2259, 2260, 2261, 2262, - 2254, 2259, 2263, 2264, 2265, 2266, 2263, 2268, 2257, 2265, - 2267, 2266, 2269, 2262, 2270, 2271, 2267, 2260, 2261, 2270, - 2273, 2274, 2275, 2264, 2276, 2268, 2277, 2275, 2281, 2284, + 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225, + 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221, + 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238, + 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231, + 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245, + 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251, + 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254, + 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266, + 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265, + 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272, - 2276, 2269, 2273, 2278, 2277, 2278, 2271, 2274, 2282, 2282, - 2283, 2288, 2281, 2283, 2285, 2285, 2287, 2288, 2289, 2291, - 2287, 2290, 2290, 2294, 2294, 2284, 2296, 2298, 2291, 2299, - 2289, 2302, 2303, 2304, 2305, 2312, 2302, 2313, 2304, 2305, - 0, 2298, 2306, 2306, 2296, 2299, 2308, 2308, 2310, 2311, - 2311, 2312, 2314, 2316, 2310, 2317, 2320, 2314, 2303, 2313, - 2318, 2318, 2321, 2322, 2323, 2320, 2327, 2317, 2321, 2325, - 2325, 2326, 2316, 2328, 2326, 2330, 2330, 2331, 2331, 2323, - 2333, 2322, 2332, 2334, 2335, 2327, 2336, 2332, 2336, 2335, - 2337, 2328, 2334, 2338, 2339, 2340, 2341, 2342, 2333, 2465, + 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279, + 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285, + 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287, + 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286, + 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298, + 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307, + 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320, + 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330, + 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329, + 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336, - 2340, 2348, 2342, 2465, 2337, 2347, 2339, 2338, 2343, 2343, - 2344, 2344, 2345, 2345, 2346, 2346, 2341, 2347, 2349, 2348, - 2350, 2350, 2352, 2349, 2351, 2351, 2353, 2354, 2355, 2356, - 2356, 2357, 2358, 2358, 2352, 2359, 2359, 2360, 2353, 2361, - 2363, 2364, 2362, 2366, 2355, 2367, 2370, 2354, 2360, 2362, - 2357, 2361, 2363, 2365, 2368, 2368, 2371, 2369, 2365, 2373, - 2372, 2364, 2375, 2366, 2374, 2367, 2369, 2376, 2376, 2378, - 2377, 2379, 2370, 2372, 2375, 2381, 2371, 2382, 2374, 2377, - 2383, 2385, 2384, 2373, 2378, 2384, 2379, 2386, 0, 2387, - 2388, 2388, 2386, 2381, 2387, 2385, 2389, 2389, 2395, 2382, + 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346, + 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341, + 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354, + 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366, + 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362, + 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368, + 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374, + 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381, + 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375, + 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387, - 2390, 2390, 2396, 2383, 2392, 2392, 2394, 2394, 2397, 2398, - 2400, 2401, 2402, 2396, 2404, 2403, 2395, 2405, 2406, 2407, - 2406, 2413, 2408, 2404, 2398, 2409, 2415, 2397, 0, 2401, - 2400, 2410, 2410, 2421, 2402, 2403, 2413, 2405, 2416, 2407, - 2408, 2412, 2412, 2409, 2417, 2417, 2419, 2416, 2415, 2420, - 2420, 2421, 2422, 2423, 2424, 2419, 2425, 2426, 2431, 2428, - 2423, 2427, 2429, 2429, 2430, 2430, 2432, 2433, 2433, 2424, - 2422, 2436, 2432, 2437, 2425, 2426, 2431, 2427, 2428, 2434, - 2434, 2435, 2438, 2440, 2441, 2439, 2442, 2435, 2437, 2436, - 2439, 2442, 2443, 2448, 2443, 2444, 2444, 2445, 2450, 2445, + 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390, + 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406, + 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405, + 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401, + 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415, + 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431, + 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430, + 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434, + 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442, + 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448, - 2451, 2438, 2452, 2440, 2441, 2446, 2446, 2450, 2453, 2455, - 2454, 2456, 2448, 2459, 2452, 2454, 2462, 2460, 2463, 2451, - 2460, 2461, 2461, 2464, 2464, 2467, 2469, 2469, 2453, 2455, - 2456, 2462, 2470, 2459, 2468, 2472, 2463, 2473, 2468, 2474, - 2467, 2475, 2475, 2477, 2478, 2470, 2481, 2479, 2480, 2480, - 2472, 2479, 2485, 2478, 2486, 2477, 2493, 2473, 2483, 2474, - 2482, 2482, 2484, 2483, 2495, 2481, 2486, 2496, 2485, 2487, - 2487, 2484, 2492, 2492, 2494, 2494, 2497, 2495, 2493, 2498, - 2496, 2499, 2499, 2500, 2505, 2497, 2502, 2502, 2498, 2505, - 2506, 2507, 2508, 2509, 2510, 2506, 2512, 2508, 2500, 2511, + 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444, + 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459, + 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461, + 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459, + 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477, + 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481, + 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477, + 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485, + 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499, + 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503, - 2514, 2509, 2515, 2517, 2512, 2507, 2516, 2515, 2511, 2518, - 2518, 2516, 2523, 2510, 2521, 2514, 2519, 2519, 2517, 2520, - 2520, 2521, 2522, 2524, 2526, 2525, 0, 2522, 2528, 2526, - 2523, 2525, 2527, 2527, 2529, 2530, 2530, 2531, 2531, 2529, - 2534, 2524, 2537, 2528, 2535, 2535, 2536, 2537, 2537, 2536, - 2538, 2539, 2540, 2534, 2541, 2538, 2539, 2542, 2543, 2544, - 2541, 2542, 2545, 2543, 2546, 2547, 2540, 2548, 2544, 2549, - 2551, 2550, 2546, 2548, 2553, 2549, 2550, 2545, 2554, 2557, - 2559, 2555, 2551, 2554, 2555, 2559, 2547, 2560, 2561, 2562, - 2553, 2557, 2560, 2569, 2563, 2564, 2565, 2565, 2566, 2569, + 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512, + 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517, + 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524, + 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0, + 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535, + 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541, + 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545, + 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547, + 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556, + 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562, - 2573, 2574, 2562, 2563, 2564, 2570, 2561, 2566, 2575, 2576, - 2576, 2570, 2577, 2578, 2579, 2580, 2580, 2581, 2583, 2573, - 2585, 2574, 2578, 2588, 2586, 2587, 2587, 2575, 2586, 2579, - 2596, 2577, 2589, 2583, 2593, 2590, 2581, 2591, 2589, 2596, - 2585, 2590, 2593, 2591, 2592, 2592, 2594, 2597, 2588, 2599, - 2600, 2594, 2601, 2599, 2603, 2603, 2604, 2605, 2605, 2609, - 2597, 2606, 2606, 2609, 2600, 2608, 2608, 2601, 2610, 2612, - 2612, 2614, 2615, 2610, 2604, 2616, 2617, 2615, 2619, 2620, - 2620, 2617, 2617, 2622, 2622, 2623, 2623, 2616, 2625, 2624, - 2627, 2614, 2624, 2629, 2630, 2630, 2631, 2631, 2619, 2632, + 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566, + 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571, + 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578, + 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587, + 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592, + 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596, + 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592, + 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610, + 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617, + 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632, - 2632, 2625, 2633, 2634, 2634, 2635, 2636, 2637, 2627, 2638, - 2639, 2639, 2640, 2629, 2644, 2638, 2640, 2633, 2635, 2644, - 2644, 2637, 2645, 2646, 2636, 2648, 2647, 2649, 2650, 2660, - 2651, 2648, 2655, 2649, 2651, 2652, 2652, 2655, 2658, 2657, - 2663, 2658, 2667, 2646, 2665, 2645, 2647, 2657, 2661, 2662, - 2662, 2661, 2666, 2650, 2660, 2664, 2667, 2663, 2663, 2669, - 2664, 2671, 2665, 2668, 2668, 2670, 2672, 2674, 2670, 2673, - 2674, 2676, 2666, 2669, 2675, 2671, 2670, 2673, 2682, 2675, - 2675, 2677, 2677, 2678, 2678, 2672, 2679, 2679, 2680, 2680, - 2676, 2681, 2681, 2683, 2682, 2684, 2685, 2686, 2683, 2687, + 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627, + 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632, + 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640, + 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654, + 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652, + 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656, + 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666, + 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670, + 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676, + 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681, - 2688, 2689, 2694, 2690, 2687, 2692, 2692, 2693, 0, 2688, - 2693, 2696, 2696, 2698, 2698, 2684, 2686, 2697, 2701, 2701, - 2694, 2689, 2685, 2690, 2697, 2699, 2702, 2703, 2704, 2706, - 2699, 2707, 2707, 2709, 2708, 2702, 2703, 2704, 2708, 2710, - 2711, 2713, 2709, 2712, 2714, 2711, 2711, 2706, 2714, 2722, - 2713, 2723, 2718, 2724, 2710, 2726, 2712, 2718, 2719, 2719, - 2721, 2721, 2727, 2722, 2726, 2730, 2731, 2732, 2735, 2751, - 2737, 2724, 2733, 2785, 2727, 2731, 2723, 2739, 2733, 2740, - 2735, 2785, 2739, 2742, 2740, 2741, 2741, 2732, 2744, 2751, - 2730, 2737, 2742, 2744, 2745, 2745, 2747, 2747, 2745, 2748, + 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691, + 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693, + 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697, + 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700, + 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710, + 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704, + 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719, + 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726, + 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729, + 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730, - 2748, 2749, 2749, 2750, 2752, 2753, 2756, 2755, 2759, 2757, - 2753, 2756, 2750, 2755, 2757, 2758, 2758, 2760, 2761, 2762, - 2763, 2764, 2765, 2752, 2762, 2772, 2759, 2764, 2768, 2760, - 2766, 2766, 2768, 2771, 2771, 2769, 2770, 2773, 2763, 2761, - 2769, 2770, 2774, 2775, 2772, 2777, 2777, 2765, 2779, 2780, - 2781, 2782, 2773, 2783, 2781, 2784, 2787, 2774, 2788, 2786, - 2782, 2779, 2780, 2775, 2786, 2787, 2789, 2790, 2790, 2783, - 2791, 2793, 2793, 2796, 2784, 2800, 2788, 2794, 2794, 2798, - 2798, 2801, 2802, 2803, 2805, 2805, 2806, 2807, 2803, 2791, - 2808, 2800, 2789, 2811, 2796, 2810, 2810, 2801, 2802, 2812, + 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751, + 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758, + 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769, + 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765, + 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769, + 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778, + 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784, + 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790, + 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799, + 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791, - 2813, 2813, 2816, 2818, 2819, 2817, 2806, 2811, 2818, 2808, - 2807, 2817, 2820, 2820, 2821, 2821, 2822, 2824, 2812, 2823, - 2823, 2825, 2816, 2826, 2830, 2827, 2819, 2828, 2824, 2829, - 2825, 2827, 2831, 2831, 2832, 2838, 2822, 2832, 2837, 2823, - 2843, 2829, 0, 2826, 2830, 2839, 2828, 2833, 2833, 2855, - 2837, 2839, 2840, 2840, 2841, 2838, 2842, 2841, 2843, 2845, - 2846, 2846, 2842, 2847, 2845, 2848, 2849, 2853, 2847, 2850, - 2851, 2851, 2849, 2854, 2855, 2856, 2857, 2857, 2858, 2853, - 2860, 2859, 2862, 2862, 2848, 2859, 2850, 2850, 2856, 2860, - 2864, 2854, 2863, 2863, 2865, 2864, 2866, 2858, 2867, 2867, + 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809, + 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814, + 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821, + 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819, + 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840, + 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839, + 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840, + 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851, + 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846, + 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864, - 2870, 2866, 2868, 2868, 2869, 2869, 2871, 2879, 2865, 2872, - 2874, 2874, 2871, 2877, 2872, 2880, 2881, 2882, 2882, 2884, - 2884, 2885, 2886, 2892, 2887, 2893, 2870, 2888, 2888, 2879, - 2889, 2889, 2877, 2887, 2891, 2885, 2894, 2880, 2881, 2901, - 2891, 2894, 2886, 2892, 2893, 2897, 2897, 2899, 2899, 2900, - 2902, 2903, 2904, 2901, 2900, 2908, 2902, 2905, 2905, 2906, - 2904, 2909, 2910, 2903, 2906, 2911, 2912, 2910, 2914, 2915, - 2916, 2917, 2912, 2920, 2919, 2908, 2914, 2911, 2921, 2922, - 2923, 2909, 2925, 2926, 2930, 2923, 2942, 2925, 2915, 2920, - 2916, 2917, 2919, 2927, 2932, 2921, 2921, 2928, 0, 2927, + 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861, + 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877, + 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874, + 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873, + 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883, + 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895, + 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906, + 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899, + 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917, + 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923, - 2922, 2931, 2928, 2926, 2930, 2942, 2931, 2932, 2935, 2935, - 2936, 2936, 2937, 2941, 2943, 2943, 2937, 2952, 2941, 2945, - 2945, 2946, 2946, 2949, 2946, 2947, 2947, 2949, 2947, 2948, - 2948, 2953, 2948, 2951, 2951, 2952, 2956, 2957, 2958, 2959, - 2959, 2962, 2963, 2958, 2964, 2953, 2965, 2966, 2964, 2963, - 2968, 2969, 2970, 2970, 2973, 2965, 2956, 2957, 2971, 2971, - 2969, 2978, 2966, 2972, 2972, 2974, 2962, 2975, 2968, 2973, - 2974, 2980, 2976, 2979, 2977, 2983, 2975, 2976, 2976, 2975, - 2977, 3012, 2981, 3014, 2982, 0, 2978, 2981, 2979, 2982, - 2984, 2984, 2980, 2985, 2983, 2986, 2987, 2987, 3014, 2985, + 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930, + 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939, + 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941, + 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945, + 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953, + 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980, + 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965, + 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971, + 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982, + 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991, - 3012, 2986, 2988, 2988, 2989, 2989, 2990, 2993, 2993, 2994, - 2994, 2990, 2995, 2998, 2998, 2999, 2999, 3000, 3000, 3001, - 3001, 2995, 3002, 3002, 3003, 3003, 3004, 3004, 3006, 3007, - 3007, 3008, 3009, 3010, 3013, 3013, 3015, 3006, 3016, 3018, - 3008, 3017, 3017, 3022, 3009, 3019, 3019, 3024, 3023, 3015, - 3016, 3023, 3026, 3010, 3018, 3025, 3025, 3028, 3029, 3032, - 3028, 3022, 3030, 3031, 3029, 3033, 3034, 3044, 3031, 3036, - 3026, 3037, 3041, 3024, 3052, 3036, 3030, 3052, 3032, 3054, - 3037, 3059, 3034, 3033, 3055, 3055, 3060, 3041, 3056, 3056, - 3057, 3057, 3054, 3044, 3061, 3060, 3062, 3063, 3061, 3065, + 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986, + 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994, + 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003, + 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005, + 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008, + 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018, + 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, + 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031, + 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032, + 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046, - 3067, 3066, 3069, 3073, 3059, 3067, 3068, 3071, 3068, 3070, - 3070, 3063, 3066, 3072, 3074, 3075, 3062, 3069, 3076, 3077, - 3071, 3073, 3065, 3078, 3079, 3086, 3080, 3081, 3077, 3082, - 3074, 3080, 3072, 3076, 3082, 3078, 3087, 3088, 3088, 3086, - 3075, 3089, 3090, 3090, 3094, 3079, 3095, 3081, 3091, 3091, - 3089, 3092, 3092, 3093, 3093, 3096, 3087, 3097, 3096, 3098, - 3099, 3100, 3097, 3094, 3098, 3101, 3095, 3102, 3103, 3104, - 3105, 3101, 3106, 3106, 3104, 3114, 3100, 3107, 3107, 3108, - 3103, 3102, 3109, 3110, 3110, 3099, 3120, 3112, 3117, 3117, - 3105, 3118, 3118, 3114, 3108, 3119, 3123, 3125, 3121, 3124, + 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049, + 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070, + 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073, + 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083, + 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085, + 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093, + 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100, + 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105, + 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108, + 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105, - 3122, 3109, 3112, 3119, 3121, 3120, 3122, 3131, 3126, 3132, - 3123, 3134, 3124, 3126, 3127, 3127, 3125, 3128, 3128, 3135, - 3137, 3138, 3139, 3135, 3140, 3134, 3138, 3142, 3131, 3132, - 3141, 3143, 3148, 3144, 3145, 3145, 3143, 3140, 3144, 3149, - 3137, 3139, 3150, 3141, 3151, 3151, 3142, 3158, 3152, 3153, - 3154, 3154, 3148, 3152, 3155, 3153, 3159, 3149, 3156, 3155, - 3157, 3150, 3159, 3156, 3162, 3157, 3158, 3161, 3161, 3162, - 3163, 3163, 3165, 3166, 3167, 3168, 3165, 3169, 3170, 3171, - 3172, 3167, 3174, 3174, 3170, 3176, 3176, 3179, 3177, 3180, - 3178, 3181, 3166, 3172, 3168, 3178, 3169, 3177, 3171, 3184, + 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120, + 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125, + 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117, + 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141, + 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140, + 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143, + 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149, + 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158, + 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169, + 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173, - 3177, 3182, 3182, 3186, 3181, 3183, 3179, 3188, 3180, 3193, - 3183, 0, 3184, 3187, 3187, 3189, 3189, 3190, 3190, 3191, - 3192, 3194, 3194, 3200, 3191, 3195, 3188, 3192, 3193, 3186, - 3195, 3196, 3198, 3196, 3197, 3197, 3199, 3202, 3205, 3198, - 3201, 3209, 3200, 3199, 3207, 3201, 3204, 3204, 3208, 3207, - 3210, 3211, 3211, 3208, 3213, 3213, 3202, 3205, 3214, 3215, - 3209, 3216, 3216, 3217, 3217, 3218, 3220, 3220, 3222, 3210, - 3221, 3221, 3218, 3228, 3224, 3222, 3227, 3214, 3215, 3224, - 3229, 3227, 3230, 3230, 3231, 3231, 0, 0, 0, 0, - 0, 0, 3228, 0, 0, 0, 0, 0, 0, 3229, + 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177, + 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187, + 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192, + 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196, + 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205, + 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202, + 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214, + 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216, + 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225, + 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218, - 3235, 3235, 3235, 3235, 3235, 3235, 3235, 3236, 3236, 3236, - 3236, 3236, 3236, 3236, 3237, 3237, 3237, 3237, 3237, 3237, - 3237, 3238, 3238, 3238, 3238, 3238, 3238, 3238, 3239, 3239, - 3239, 3239, 3239, 3239, 3239, 3240, 3240, 3240, 3240, 3240, - 3240, 3240, 3241, 3241, 3241, 3241, 3241, 3241, 3241, 3243, - 3243, 0, 3243, 3243, 3243, 3243, 3244, 3244, 0, 0, - 0, 3244, 3244, 3245, 3245, 0, 0, 3245, 0, 3245, - 3246, 0, 0, 0, 0, 0, 3246, 3247, 3247, 0, - 0, 0, 3247, 3247, 3248, 0, 0, 0, 0, 0, - 3248, 3249, 3249, 0, 3249, 3249, 3249, 3249, 3250, 0, + 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235, + 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239, + 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248, + 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253, + 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256, + 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257, + 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259, + 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261, - 0, 0, 0, 0, 3250, 3251, 3251, 0, 0, 0, - 3251, 3251, 3252, 3252, 0, 3252, 3252, 3252, 3252, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, - 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234, 3234 + 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263, + 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0, + 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266, + 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267, + 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268, + 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0, + 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + + 3252, 3252, 3252, 3252, 3252 } ; static yy_state_type yy_last_accepting_state; @@ -3096,7 +3112,7 @@ static void config_end_include(void) } #endif -#line 3098 "" +#line 3114 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3105,9 +3121,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3107 "" +#line 3123 "" -#line 3109 "" +#line 3125 "" #define INITIAL 0 #define quotedstring 1 @@ -3331,7 +3347,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3333 "" +#line 3349 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3364,13 +3380,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 >= 3235 ) + if ( yy_current_state >= 3253 ) 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] != 6320 ); + while ( yy_base[yy_current_state] != 6365 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3885,72 +3901,72 @@ YY_RULE_SETUP case 98: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 112: YY_RULE_SETUP @@ -3960,32 +3976,32 @@ YY_RULE_SETUP case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 119: YY_RULE_SETUP @@ -3995,751 +4011,751 @@ YY_RULE_SETUP case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 183: YY_RULE_SETUP -#line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 397 "./util/configlexer.lex" +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 184: YY_RULE_SETUP -#line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +#line 398 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 185: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 186: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 187: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 188: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 189: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 190: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 242: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } +#line 457 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 243: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 458 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 244: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +#line 460 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 245: YY_RULE_SETUP #line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 246: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 247: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 248: YY_RULE_SETUP -#line 466 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } +#line 465 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 249: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 466 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 250: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 468 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 251: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 470 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 252: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 472 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 253: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 474 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 254: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +#line 476 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 255: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 256: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 257: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 258: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 259: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 260: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 268: YY_RULE_SETUP @@ -4749,210 +4765,225 @@ YY_RULE_SETUP case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 280: YY_RULE_SETUP -#line 504 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } +#line 503 "./util/configlexer.lex" +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 281: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 504 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 282: YY_RULE_SETUP -#line 507 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +#line 506 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 283: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 284: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 285: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 286: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 290: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 303: -/* rule 303 can match eol */ YY_RULE_SETUP #line 528 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 304: +YY_RULE_SETUP +#line 529 "./util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } + YY_BREAK +case 305: +YY_RULE_SETUP +#line 530 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } + YY_BREAK +case 306: +/* rule 306 can match eol */ +YY_RULE_SETUP +#line 531 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 304: +case 307: YY_RULE_SETUP -#line 531 "./util/configlexer.lex" +#line 534 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 532 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 305: +case 308: YY_RULE_SETUP -#line 537 "./util/configlexer.lex" +#line 540 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 306: -/* rule 306 can match eol */ +case 309: +/* rule 309 can match eol */ YY_RULE_SETUP -#line 538 "./util/configlexer.lex" +#line 541 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 307: +case 310: YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 543 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4965,34 +4996,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 308: +case 311: YY_RULE_SETUP -#line 552 "./util/configlexer.lex" +#line 555 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 553 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 309: +case 312: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 561 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK -case 310: -/* rule 310 can match eol */ +case 313: +/* rule 313 can match eol */ YY_RULE_SETUP -#line 559 "./util/configlexer.lex" +#line 562 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 311: +case 314: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5005,38 +5036,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 312: +case 315: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 575 "./util/configlexer.lex" +#line 578 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 313: -YY_RULE_SETUP -#line 579 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK -case 314: -/* rule 314 can match eol */ -YY_RULE_SETUP -#line 580 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} - YY_BREAK -case 315: -YY_RULE_SETUP -#line 581 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } - YY_BREAK case 316: YY_RULE_SETUP #line 582 "./util/configlexer.lex" +{ LEXOUT(("ISP ")); /* ignore */ } + YY_BREAK +case 317: +/* rule 317 can match eol */ +YY_RULE_SETUP +#line 583 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++;} + YY_BREAK +case 318: +YY_RULE_SETUP +#line 584 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 319: +YY_RULE_SETUP +#line 585 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5044,27 +5075,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 587 "./util/configlexer.lex" +#line 590 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 317: +case 320: YY_RULE_SETUP -#line 591 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK -case 318: -/* rule 318 can match eol */ +case 321: +/* rule 321 can match eol */ YY_RULE_SETUP -#line 592 "./util/configlexer.lex" +#line 595 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 319: +case 322: YY_RULE_SETUP -#line 594 "./util/configlexer.lex" +#line 597 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5074,7 +5105,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 600 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5089,39 +5120,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 320: +case 323: YY_RULE_SETUP -#line 614 "./util/configlexer.lex" +#line 617 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 617 "./util/configlexer.lex" +#line 620 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 321: -YY_RULE_SETUP -#line 621 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK -case 322: -/* rule 322 can match eol */ -YY_RULE_SETUP -#line 622 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } - YY_BREAK -case 323: -YY_RULE_SETUP -#line 623 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } - YY_BREAK case 324: YY_RULE_SETUP #line 624 "./util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 325: +/* rule 325 can match eol */ +YY_RULE_SETUP +#line 625 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 326: +YY_RULE_SETUP +#line 626 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 327: +YY_RULE_SETUP +#line 627 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5130,29 +5161,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 630 "./util/configlexer.lex" +#line 633 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 325: +case 328: YY_RULE_SETUP -#line 634 "./util/configlexer.lex" +#line 637 "./util/configlexer.lex" { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } YY_BREAK -case 326: -/* rule 326 can match eol */ +case 329: +/* rule 329 can match eol */ YY_RULE_SETUP -#line 635 "./util/configlexer.lex" +#line 638 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 327: +case 330: YY_RULE_SETUP -#line 639 "./util/configlexer.lex" +#line 642 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5161,33 +5192,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 328: +case 331: YY_RULE_SETUP -#line 647 "./util/configlexer.lex" +#line 650 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 329: +case 332: YY_RULE_SETUP -#line 651 "./util/configlexer.lex" +#line 654 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 330: +case 333: YY_RULE_SETUP -#line 655 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 331: +case 334: YY_RULE_SETUP -#line 659 "./util/configlexer.lex" +#line 662 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5189 "" +#line 5220 "" case YY_END_OF_BUFFER: { @@ -5482,7 +5513,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 >= 3235 ) + if ( yy_current_state >= 3253 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5510,11 +5541,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 >= 3235 ) + if ( yy_current_state >= 3253 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3234); + yy_is_jam = (yy_current_state == 3252); return yy_is_jam ? 0 : yy_current_state; } @@ -6153,6 +6184,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 659 "./util/configlexer.lex" +#line 662 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 0b997a306..ea7c1cf72 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -309,6 +309,7 @@ harden-referral-path{COLON} { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } harden-algo-downgrade{COLON} { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } +caps-exempt{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } @@ -340,6 +341,7 @@ rpz-log{COLON} { YDVAR(1, VAR_RPZ_LOG) } rpz-log-name{COLON} { YDVAR(1, VAR_RPZ_LOG_NAME) } zonefile{COLON} { YDVAR(1, VAR_ZONEFILE) } master{COLON} { YDVAR(1, VAR_MASTER) } +primary{COLON} { YDVAR(1, VAR_MASTER) } url{COLON} { YDVAR(1, VAR_URL) } allow-notify{COLON} { YDVAR(1, VAR_ALLOW_NOTIFY) } for-downstream{COLON} { YDVAR(1, VAR_FOR_DOWNSTREAM) } @@ -510,6 +512,7 @@ ipsecmod-ignore-bogus{COLON} { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } ipsecmod-hook{COLON} { YDVAR(1, VAR_IPSECMOD_HOOK) } ipsecmod-max-ttl{COLON} { YDVAR(1, VAR_IPSECMOD_MAX_TTL) } ipsecmod-whitelist{COLON} { YDVAR(1, VAR_IPSECMOD_WHITELIST) } +ipsecmod-allow{COLON} { YDVAR(1, VAR_IPSECMOD_WHITELIST) } ipsecmod-strict{COLON} { YDVAR(1, VAR_IPSECMOD_STRICT) } cachedb{COLON} { YDVAR(0, VAR_CACHEDB) } backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) } From 83200a3431b0cc7d431eb6642b045c4561c0cec2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 29 Sep 2020 13:29:24 +0200 Subject: [PATCH 213/394] - Fix unit test for dnstap changes, so that it waits for the timer. --- doc/Changelog | 3 +++ testdata/dnstap.tdir/dnstap.test | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index c2176f785..47aa0bb32 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 September 2020: Wouter + - Fix unit test for dnstap changes, so that it waits for the timer. + 23 September 2020: Wouter - Fix #305: dnstap logging significantly affects unbound performance (regression in 1.11). diff --git a/testdata/dnstap.tdir/dnstap.test b/testdata/dnstap.tdir/dnstap.test index 04db17b27..d548e2dad 100644 --- a/testdata/dnstap.tdir/dnstap.test +++ b/testdata/dnstap.tdir/dnstap.test @@ -24,6 +24,8 @@ else exit 1 fi +echo "> wait for log to happen on timer" +sleep 3 echo "> check tap.log for dnstap info" # see if it logged the information in tap.log # wait for a moment for filesystem to catch up. From b6d04f500bb0f021938d87871f995bc85ca619bf Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Tue, 29 Sep 2020 14:07:38 +0200 Subject: [PATCH 214/394] - DNS Flag Day 2020: change edns-buffer-size default to 1232. --- doc/Changelog | 3 +++ doc/example.conf.in | 4 ++-- doc/unbound.conf.5.in | 11 +++++------ testcode/testpkts.c | 2 +- testdata/val_cnametocnamewctoposwc.rpl | 6 +----- testdata/val_nsec3_cnametocnamewctoposwc.rpl | 6 +----- util/config_file.c | 2 +- 7 files changed, 14 insertions(+), 20 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 47aa0bb32..d257816b1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +29 September 2020: Ralph + - DNS Flag Day 2020: change edns-buffer-size default to 1232. + 28 September 2020: Wouter - Fix unit test for dnstap changes, so that it waits for the timer. diff --git a/doc/example.conf.in b/doc/example.conf.in index 3213a8f8c..852cccaed 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -129,8 +129,8 @@ server: # ip-dscp: 0 # EDNS reassembly buffer to advertise to UDP peers (the actual buffer - # is set with msg-buffer-size). 1472 can solve fragmentation (timeouts) - # edns-buffer-size: 4096 + # is set with msg-buffer-size). + # edns-buffer-size: 1232 # Maximum UDP response size (not applied to TCP response). # Suggested values are 512 to 4096. Default is 4096. 65536 disables it. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index dfdab90d5..95c4aaa99 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -207,12 +207,11 @@ accepted. For larger installations increasing this value is a good idea. Number of bytes size to advertise as the EDNS reassembly buffer size. This is the value put into datagrams over UDP towards peers. The actual buffer size is determined by msg\-buffer\-size (both for TCP and UDP). Do -not set higher than that value. Default is 4096 which is RFC recommended. -If you have fragmentation reassembly problems, usually seen as timeouts, -then a value of 1472 can fix it. Setting to 512 bypasses even the most -stringent path MTU problems, but is seen as extreme, since the amount -of TCP fallback generated is excessive (probably also for this resolver, -consider tuning the outgoing tcp number). +not set higher than that value. Default is 1232 which is the DNS Flag Day 2020 +recommendation. Setting to 512 bypasses even the most stringent path MTU +problems, but is seen as extreme, since the amount of TCP fallback generated is +excessive (probably also for this resolver, consider tuning the outgoing tcp +number). .TP .B max\-udp\-size: \fI Maximum UDP response size (not applied to TCP response). 65536 disables the diff --git a/testcode/testpkts.c b/testcode/testpkts.c index 82c143967..dee451761 100644 --- a/testcode/testpkts.c +++ b/testcode/testpkts.c @@ -501,7 +501,7 @@ add_edns(uint8_t* pktbuf, size_t pktsize, int do_flag, uint8_t *ednsdata, { uint8_t edns[] = {0x00, /* root label */ 0x00, LDNS_RR_TYPE_OPT, /* type */ - 0x10, 0x00, /* class is UDPSIZE 4096 */ + 0x04, 0xD0, /* class is UDPSIZE 1232 */ 0x00, /* TTL[0] is ext rcode */ 0x00, /* TTL[1] is edns version */ (uint8_t)(do_flag?0x80:0x00), 0x00, /* TTL[2-3] is edns flags, DO */ diff --git a/testdata/val_cnametocnamewctoposwc.rpl b/testdata/val_cnametocnamewctoposwc.rpl index f17f5aafc..c290026ba 100644 --- a/testdata/val_cnametocnamewctoposwc.rpl +++ b/testdata/val_cnametocnamewctoposwc.rpl @@ -186,7 +186,7 @@ ENTRY_END STEP 10 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA AD DO NOERROR +REPLY QR TC RD RA AD DO NOERROR SECTION QUESTION start.example.com. IN A SECTION ANSWER @@ -201,11 +201,7 @@ SECTION AUTHORITY *.wc.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131853 20121029131853 64050 example.com. YrmCLu0uGgD2gcU4p12BGnUGYcrKmfg82MJHSF5OnVmmJxXiSbSBnZPahbJNGA/kPLt+SlDyBTcssZKXWxM6bW7WF57OwffOj7rMyr5vhx7J6OsuWKotPVqnUFDx9j/rOum24yCKqoBWvpW/RYUHLuX1Wm05WMCgNWhuN4wqwiU= *.end.example.com. 86400 IN NSEC escapedtext.example.com. A RRSIG NSEC *.end.example.com. 86400 IN RRSIG NSEC 8 3 86400 20121126131826 20121029131826 64050 example.com. P6uJSImaee+5NHlTP06pMxgO69qxjJc0Uo1+htjVyE8f15MhG8A7NttvzggbtyzmfLMPr7TilM+Mm7hC3pIk/TeBEdH8p+8qypnY0NzPntz5z1+6C6ZTjDXp6NxDwMz7th31r3B3u4xo/K4qMnXmrAFOIE5Lopk0uDGXfjKPCKE= -example.com. 3600 IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 8 2 3600 20121126131826 20121029131826 64050 example.com. NgY7UAdkXprnCi/O6c5XoB82tqLBd1bY9LmDG9wwN0zEUR5aHQcOmX9waHyqXQI86SOFQbGCvO2wDLqdqWniw1IYf4S66Vf9KrpaH2gVbvHKiEpGJPeDYQcD5xkv50Lsp4ktcLyuO/dk8ORCP7E2yC5IQVNeFgUfaqttZcJoxuQ= SECTION ADDITIONAL -ns.example.com. 3600 IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= ENTRY_END SCENARIO_END diff --git a/testdata/val_nsec3_cnametocnamewctoposwc.rpl b/testdata/val_nsec3_cnametocnamewctoposwc.rpl index 23d2b6a89..0fba0e2e1 100644 --- a/testdata/val_nsec3_cnametocnamewctoposwc.rpl +++ b/testdata/val_nsec3_cnametocnamewctoposwc.rpl @@ -184,7 +184,7 @@ ENTRY_END STEP 10 CHECK_ANSWER ENTRY_BEGIN MATCH all -REPLY QR RD RA AD DO NOERROR +REPLY QR TC RD RA AD DO NOERROR SECTION QUESTION start.example.com. IN A SECTION ANSWER @@ -199,11 +199,7 @@ isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN NSEC3 1 0 1 abcd isoaarj isjq5aarcp8p5sukc56g961cccjus5u2.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123259 20121029123259 64050 example.com. Cxwzq1DUQvhkTVHEJHlb92c511Y+uJy/C0yL9br6W/5lB/usuSiK2DjW58ibPh2kLH1P3SpGqd1Y7LigptdXoPBDFakcNcimPWCN93R3J80+vrHHPkPyIsBaywwYI3SNGgfnHfPF+wmH+tZ1vfEHbigOxqPFK+T0ntKq7dkSndg= a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN NSEC3 1 0 1 abcd a64lt5ij9a1up15h5cdsn1u2071901hu A RRSIG a61sejfu6am5a36p628t4s089s309o44.example.com. 86400 IN RRSIG NSEC3 8 3 86400 20121126123315 20121029123315 64050 example.com. gfBu4oqo9cVxJbqrw2Ly7mK638kGPOF8l8eh7ovalniwkU3F+PNYJyfSE9yGX8tMGbXrkEW9mAzAh39igr2+Bbzi9WPTRp4RDVM0qw+eyMmQRPWKt7FeanDtP+OcdVp0Hf2aPzsgmgTdS6s0AboUq1rX53H2M6F8xAiwPrBJXDQ= -example.com. 3600 IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 8 2 3600 20121126123249 20121029123249 64050 example.com. cpLjgKPacNxVIGo59tYMZ98GVYpH28WHRWj3AeIHK0StYFcAlflGLdkae1LEgMwfUmzrayrA5GMe3AH8LyuTgA2Dn1oNFxGfuShQvK2MFQ+LxvQfiuoqlAlL5Aa94IWcSoU/wLrr66I1K8oSB2yK1Tyyv73c2N40D1mBbzIE70U= SECTION ADDITIONAL -ns.example.com. 3600 IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 8 2 3600 20121126123249 20121029123249 64050 example.com. zxGyimwFsd39j8T7jJ+tSAQPwZ7tjk6HHmzosTMCRePM4k4newbLb5HbrpucSiW/plaEZvjRTDTJ6bPkw0msPXjPCI/22Zh236XO5vhGtMOlxDgAEazuhifVF6UsM7GZwONPBCvw705HgWQyCR1YlTK2w9ffH3GopU9f4oP7Pmk= ENTRY_END SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index f590a36cf..b789c3359 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -152,7 +152,7 @@ config_create(void) cfg->incoming_num_tcp = 2; #endif cfg->stream_wait_size = 4 * 1024 * 1024; - cfg->edns_buffer_size = 4096; /* 4k from rfc recommendation */ + cfg->edns_buffer_size = 1232; /* from DNS flagday recommendation */ cfg->msg_buffer_size = 65552; /* 64 k + a small margin */ cfg->msg_cache_size = 4 * 1024 * 1024; cfg->msg_cache_slabs = 4; From a7ae0ade66d648ab515cc621360968282b42e7f1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 11:20:33 +0200 Subject: [PATCH 215/394] - Fix doh tests when not compiled in. --- doc/Changelog | 3 +++ testdata/doh_downstream.tdir/doh_downstream.post | 2 ++ testdata/doh_downstream.tdir/doh_downstream.pre | 4 +++- testdata/doh_downstream.tdir/doh_downstream.test | 1 + .../doh_downstream_buffer_size.post | 2 ++ .../doh_downstream_buffer_size.pre | 4 +++- .../doh_downstream_buffer_size.test | 1 + .../doh_downstream_endpoint.tdir/doh_downstream_endpoint.post | 2 ++ .../doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre | 3 ++- .../doh_downstream_endpoint.tdir/doh_downstream_endpoint.test | 1 + testdata/doh_downstream_post.tdir/doh_downstream_post.post | 2 ++ testdata/doh_downstream_post.tdir/doh_downstream_post.pre | 3 ++- testdata/doh_downstream_post.tdir/doh_downstream_post.test | 1 + 13 files changed, 25 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d257816b1..9c84fa588 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +30 September 2020: Wouter + - Fix doh tests when not compiled in. + 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. diff --git a/testdata/doh_downstream.tdir/doh_downstream.post b/testdata/doh_downstream.tdir/doh_downstream.post index 432e0eedd..0e3c00b05 100644 --- a/testdata/doh_downstream.tdir/doh_downstream.post +++ b/testdata/doh_downstream.tdir/doh_downstream.post @@ -5,6 +5,8 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test # # do your teardown here +PRE="../.." +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi . ../common.sh kill_pid $FWD_PID kill_pid $UNBOUND_PID diff --git a/testdata/doh_downstream.tdir/doh_downstream.pre b/testdata/doh_downstream.tdir/doh_downstream.pre index 84734d76e..29bb805a1 100644 --- a/testdata/doh_downstream.tdir/doh_downstream.pre +++ b/testdata/doh_downstream.tdir/doh_downstream.pre @@ -4,7 +4,10 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + get_random_port 2 UNBOUND_PORT=$RND_PORT FWD_PORT=$(($RND_PORT + 1)) @@ -20,7 +23,6 @@ echo "FWD_PID=$FWD_PID" >> .tpkg.var.test # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream.conf > ub.conf # start unbound in the background -PRE="../.." $PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test diff --git a/testdata/doh_downstream.tdir/doh_downstream.test b/testdata/doh_downstream.tdir/doh_downstream.test index 78e2e84eb..d66168fba 100644 --- a/testdata/doh_downstream.tdir/doh_downstream.test +++ b/testdata/doh_downstream.tdir/doh_downstream.test @@ -6,6 +6,7 @@ PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_make (cd $PRE; $MAKE dohclient) diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post index ffad089e4..881970a77 100644 --- a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.post @@ -5,6 +5,8 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test # # do your teardown here +PRE="../.." +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi . ../common.sh kill_pid $UNBOUND_PID cat unbound.log diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre index 19795398c..a58780ab3 100644 --- a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.pre @@ -4,7 +4,10 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + get_random_port 1 UNBOUND_PORT=$RND_PORT echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test @@ -12,7 +15,6 @@ echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_buffer_size.conf > ub.conf # start unbound in the background -PRE="../.." $PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test diff --git a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test index bbeb9eb2b..78c46081d 100644 --- a/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test +++ b/testdata/doh_downstream_buffer_size.tdir/doh_downstream_buffer_size.test @@ -6,6 +6,7 @@ PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_make (cd $PRE; $MAKE dohclient) diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post index ffad089e4..dcdf8627e 100644 --- a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.post @@ -5,6 +5,8 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test # # do your teardown here +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi kill_pid $UNBOUND_PID cat unbound.log diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre index 4f10a9a18..cd0d11fd4 100644 --- a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.pre @@ -4,7 +4,9 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_random_port 1 UNBOUND_PORT=$RND_PORT echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test @@ -12,7 +14,6 @@ echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_endpoint.conf > ub.conf # start unbound in the background -PRE="../.." $PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test diff --git a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test index d788e3667..2a6954cab 100644 --- a/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test +++ b/testdata/doh_downstream_endpoint.tdir/doh_downstream_endpoint.test @@ -6,6 +6,7 @@ PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_make (cd $PRE; $MAKE dohclient) diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.post b/testdata/doh_downstream_post.tdir/doh_downstream_post.post index f66183b70..98034a32c 100644 --- a/testdata/doh_downstream_post.tdir/doh_downstream_post.post +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.post @@ -5,7 +5,9 @@ [ -f .tpkg.var.test ] && source .tpkg.var.test # # do your teardown here +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi kill_pid $FWD_PID kill_pid $UNBOUND_PID cat unbound.log diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.pre b/testdata/doh_downstream_post.tdir/doh_downstream_post.pre index e32f187c5..34df83d4b 100644 --- a/testdata/doh_downstream_post.tdir/doh_downstream_post.pre +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.pre @@ -4,7 +4,9 @@ # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test +PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_random_port 2 UNBOUND_PORT=$RND_PORT FWD_PORT=$(($RND_PORT + 1)) @@ -20,7 +22,6 @@ echo "FWD_PID=$FWD_PID" >> .tpkg.var.test # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_post.conf > ub.conf # start unbound in the background -PRE="../.." $PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test diff --git a/testdata/doh_downstream_post.tdir/doh_downstream_post.test b/testdata/doh_downstream_post.tdir/doh_downstream_post.test index d6a512ae3..6442d1e12 100644 --- a/testdata/doh_downstream_post.tdir/doh_downstream_post.test +++ b/testdata/doh_downstream_post.tdir/doh_downstream_post.test @@ -6,6 +6,7 @@ PRE="../.." . ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi get_make (cd $PRE; $MAKE dohclient) From ddb82af523251d22286a83c89be3e5c51e80fddd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 11:21:24 +0200 Subject: [PATCH 216/394] - Add dohclient test executable to gitignore. --- .gitignore | 1 + doc/Changelog | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 7688fd758..d0c69f81d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ /unbound.h /asynclook /delayer +/dohclient /lock-verify /memstats /perf diff --git a/doc/Changelog b/doc/Changelog index 9c84fa588..fe32245ee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 30 September 2020: Wouter - Fix doh tests when not compiled in. + - Add dohclient test executable to gitignore. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. From bbba236a3663d603d0774677c712b3d09c3c7e3c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 11:29:57 +0200 Subject: [PATCH 217/394] - Fix stream_ssl, ssl_req_order and ssl_req_timeout tests for alloc check debug output. --- doc/Changelog | 2 + .../ssl_req_order.tdir/ssl_req_order.test | 51 ++++++++++++++++--- .../ssl_req_timeout.tdir/ssl_req_timeout.test | 18 +++++-- testdata/stream_ssl.tdir/stream_ssl.test | 4 +- 4 files changed, 63 insertions(+), 12 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index fe32245ee..ff370f0b2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 30 September 2020: Wouter - Fix doh tests when not compiled in. - Add dohclient test executable to gitignore. + - Fix stream_ssl, ssl_req_order and ssl_req_timeout tests for + alloc check debug output. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. diff --git a/testdata/ssl_req_order.tdir/ssl_req_order.test b/testdata/ssl_req_order.tdir/ssl_req_order.test index 65981d16c..360a09922 100644 --- a/testdata/ssl_req_order.tdir/ssl_req_order.test +++ b/testdata/ssl_req_order.tdir/ssl_req_order.test @@ -11,12 +11,14 @@ get_make # this test query should just work (server is up) echo "> query www1.example.net." -$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -28,6 +30,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -37,12 +40,14 @@ echo "OK" # multiple requests (from localdata) echo "> query www1.example.net. www2.example.net. www3.example.net." -$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>&1 +$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -54,6 +59,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -65,6 +71,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -76,6 +83,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -85,12 +93,14 @@ fi # out of order requests, the example.com elements take 2 seconds to wait. echo "" echo "> query www1.example.net. www.example.com. www2.example.net. www2.example.com. www3.example.net." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -102,6 +112,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -113,6 +124,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -124,6 +136,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -135,6 +148,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -146,6 +160,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -156,12 +171,14 @@ fi # www.example.com present twice, answered twice. echo "" echo "> query www1.example.net. www.example.com. www2.example.net. www.example.com. www3.example.net." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -173,6 +190,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -184,6 +202,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -195,6 +214,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -206,6 +226,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -216,12 +237,14 @@ fi # www3.example.com present twice, answered twice. echo "" echo "> query www1.example.net. www3.example.com. www2.example.net. www3.example.com. www3.example.net." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -233,6 +256,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -244,6 +268,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -255,6 +280,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -266,6 +292,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -274,12 +301,14 @@ fi echo "" echo "> query www4.example.com. www3.example.net." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -291,6 +320,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -302,6 +332,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -310,12 +341,14 @@ fi echo "" echo "> query a1.example.com. - a100.example.com." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN a91.a.example.com. A IN a92.a.example.com. A IN a93.a.example.com. A IN a94.a.example.com. A IN a95.a.example.com. A IN a96.a.example.com. A IN a97.a.example.com. A IN a98.a.example.com. A IN a99.a.example.com. A IN a100.a.example.com. A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN a91.a.example.com. A IN a92.a.example.com. A IN a93.a.example.com. A IN a94.a.example.com. A IN a95.a.example.com. A IN a96.a.example.com. A IN a97.a.example.com. A IN a98.a.example.com. A IN a99.a.example.com. A IN a100.a.example.com. A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -325,12 +358,14 @@ grep "a.example.com. IN A" outfile echo "" echo "> query www5.example.net. www3.example.net. www.drop.net." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www5.example.com. A IN www3.example.net A IN www.drop.net A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" diff --git a/testdata/ssl_req_timeout.tdir/ssl_req_timeout.test b/testdata/ssl_req_timeout.tdir/ssl_req_timeout.test index 5223fc985..7f6527e0d 100644 --- a/testdata/ssl_req_timeout.tdir/ssl_req_timeout.test +++ b/testdata/ssl_req_timeout.tdir/ssl_req_timeout.test @@ -17,12 +17,14 @@ fi # this test query should just work (server is up) echo "> query www1.example.net." -$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +$PRE/streamtcp -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -34,6 +36,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -43,12 +46,14 @@ echo "OK" # multiple requests that are answered immediately and then the timeout echo "> query www1.example.net. www2.example.net. www3.example.net. www.example.com." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN www.example.com. A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN www.example.com. A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -60,6 +65,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -71,6 +77,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -82,6 +89,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -93,6 +101,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" @@ -101,12 +110,14 @@ fi # multiple requests that are waiting for answers and then the timeout echo "> query www2.example.com. www2.example.com. www3.example.com." -$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www2.example.com. A IN www2.example.com A IN www3.example.com A IN >outfile 2>&1 +$PRE/streamtcp -a -s -f 127.0.0.1@$UNBOUND_PORT www2.example.com. A IN www2.example.com A IN www3.example.com A IN >outfile 2>outerr cat outfile +cat outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "Not OK" @@ -118,6 +129,7 @@ else echo "result contents not OK" echo "> cat logfiles" cat outfile + cat outerr cat fwd.log cat unbound.log echo "result contents not OK" diff --git a/testdata/stream_ssl.tdir/stream_ssl.test b/testdata/stream_ssl.tdir/stream_ssl.test index 08bbcdee9..b5bc2d911 100644 --- a/testdata/stream_ssl.tdir/stream_ssl.test +++ b/testdata/stream_ssl.tdir/stream_ssl.test @@ -11,11 +11,12 @@ get_make # first test streamtcp against the server unbound. echo "> streamtcp -s www.example.com A IN" -$PRE/streamtcp -s -f 127.0.0.1@$SERV_PORT www.example.com. A IN >outfile 2>&1 +$PRE/streamtcp -s -f 127.0.0.1@$SERV_PORT www.example.com. A IN >outfile 2>outerr if test "$?" -ne 0; then echo "exit status not OK" echo "> cat logfiles" cat outfile + cat outerr echo "SSLSERVICE" cat unboundserv.log echo "SSLCLIENT" @@ -27,6 +28,7 @@ else fi echo "> cat logfiles" cat outfile +cat outerr echo "SSLSERVICE" cat unboundserv.log echo "SSLCLIENT" From a453ab629c238edf7626124f3373cb0bf8d4062f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 11:38:11 +0200 Subject: [PATCH 218/394] - Easier kill of unbound-dnstap-socket tool in test. --- dnstap/unbound-dnstap-socket.c | 2 +- doc/Changelog | 1 + testdata/dnstap_reconnect.tdir/dnstap_reconnect.post | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index ca950c8bf..5a540f337 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1209,9 +1209,9 @@ setup_and_run(struct config_strlist_head* local_list, if(verbosity) log_info("start of service"); ub_event_base_dispatch(base); + sig_base = NULL; if(verbosity) log_info("end of service"); - sig_base = NULL; tap_socket_list_delete(maindata->acceptlist); ub_event_base_free(base); free(maindata); diff --git a/doc/Changelog b/doc/Changelog index ff370f0b2..3dd45963a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Add dohclient test executable to gitignore. - Fix stream_ssl, ssl_req_order and ssl_req_timeout tests for alloc check debug output. + - Easier kill of unbound-dnstap-socket tool in test. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. diff --git a/testdata/dnstap_reconnect.tdir/dnstap_reconnect.post b/testdata/dnstap_reconnect.tdir/dnstap_reconnect.post index 8474b3a02..0056a20d9 100644 --- a/testdata/dnstap_reconnect.tdir/dnstap_reconnect.post +++ b/testdata/dnstap_reconnect.tdir/dnstap_reconnect.post @@ -13,4 +13,6 @@ kill_pid $FWD_PID kill $UNBOUND_PID kill $UNBOUND_PID >/dev/null 2>&1 cat unbound.log +cat tap.log +cat tap.errlog exit 0 From 46b3440aea6c15be935d015648b706084a641fd9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 11:43:46 +0200 Subject: [PATCH 219/394] - Fix memory leak of edns tags at libunbound context delete. --- doc/Changelog | 1 + libunbound/libunbound.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 3dd45963a..aba2a9ae2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix stream_ssl, ssl_req_order and ssl_req_timeout tests for alloc check debug output. - Easier kill of unbound-dnstap-socket tool in test. + - Fix memory leak of edns tags at libunbound context delete. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index af26e5546..3922eb041 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -186,6 +186,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); + edns_tags_delete(ctx->env->edns_tags); free(ctx->env); free(ctx); errno = e; @@ -198,6 +199,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); + edns_tags_delete(ctx->env->edns_tags); free(ctx->env); free(ctx); errno = e; @@ -336,6 +338,7 @@ ub_ctx_delete(struct ub_ctx* ctx) infra_delete(ctx->env->infra_cache); config_delete(ctx->env->cfg); edns_known_options_delete(ctx->env); + edns_tags_delete(ctx->env->edns_tags); auth_zones_delete(ctx->env->auth_zones); free(ctx->env); } From ea7c5ac392968656acc082c60ea3085a4082c328 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 30 Sep 2020 14:55:35 +0200 Subject: [PATCH 220/394] - Fix double loopexit for unbound-dnstap-socket after sigterm. --- dnstap/unbound-dnstap-socket.c | 4 +++- doc/Changelog | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 5a540f337..3ebe2b4e4 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1167,8 +1167,10 @@ int sig_quit = 0; static RETSIGTYPE main_sigh(int sig) { verbose(VERB_ALGO, "exit on signal %d\n", sig); - if(sig_base) + if(sig_base) { ub_event_base_loopexit(sig_base); + sig_base = NULL; + } sig_quit = 1; } diff --git a/doc/Changelog b/doc/Changelog index aba2a9ae2..7672435d4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ alloc check debug output. - Easier kill of unbound-dnstap-socket tool in test. - Fix memory leak of edns tags at libunbound context delete. + - Fix double loopexit for unbound-dnstap-socket after sigterm. 29 September 2020: Ralph - DNS Flag Day 2020: change edns-buffer-size default to 1232. From eb799026ff15fa4ae2cfaf6949fbcf74b6736fbf Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 30 Sep 2020 23:17:53 +0200 Subject: [PATCH 221/394] Replace edns-client-tag with edns-client-string option --- daemon/daemon.c | 10 +- doc/unbound.conf.5.in | 15 +- libunbound/context.c | 2 +- libunbound/libunbound.c | 10 +- services/outside_network.c | 12 +- testcode/fake_event.c | 12 +- ..._client_tag.rpl => edns_client_string.rpl} | 47 +- testdata/edns_client_string_opcode.rpl | 153 ++ util/config_file.c | 8 +- util/config_file.h | 8 +- util/configlexer.c | 2366 +++++++++-------- util/configlexer.lex | 4 +- util/configparser.c | 1393 +++++----- util/configparser.h | 8 +- util/configparser.y | 27 +- util/edns.c | 73 +- util/edns.h | 52 +- util/module.h | 4 +- 18 files changed, 2177 insertions(+), 2027 deletions(-) rename testdata/{edns_client_tag.rpl => edns_client_string.rpl} (72%) create mode 100644 testdata/edns_client_string_opcode.rpl diff --git a/daemon/daemon.c b/daemon/daemon.c index f480c94e6..a11d50a9b 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -291,7 +291,7 @@ daemon_init(void) free(daemon); return NULL; } - if(!(daemon->env->edns_tags = edns_tags_create())) { + if(!(daemon->env->edns_strings = edns_strings_create())) { auth_zones_delete(daemon->env->auth_zones); acl_list_delete(daemon->acl); tcl_list_delete(daemon->tcl); @@ -638,9 +638,9 @@ daemon_fork(struct daemon* daemon) &daemon->use_rpz)) fatal_exit("auth_zones could not be setup"); - /* Set-up EDNS tags */ - if(!edns_tags_apply_cfg(daemon->env->edns_tags, daemon->cfg)) - fatal_exit("Could not set up EDNS tags"); + /* Set-up EDNS strings */ + if(!edns_strings_apply_cfg(daemon->env->edns_strings, daemon->cfg)) + fatal_exit("Could not set up EDNS strings"); /* setup modules */ daemon_setup_modules(daemon); @@ -773,7 +773,7 @@ daemon_delete(struct daemon* daemon) rrset_cache_delete(daemon->env->rrset_cache); infra_delete(daemon->env->infra_cache); edns_known_options_delete(daemon->env); - edns_tags_delete(daemon->env->edns_tags); + edns_strings_delete(daemon->env->edns_strings); auth_zones_delete(daemon->env->auth_zones); } ub_randfree(daemon->rand); diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95c4aaa99..8a4f5349a 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1535,15 +1535,14 @@ Set the number of servers that should be used for fast server selection. Only use the fastest specified number of servers with the fast\-server\-permil option, that turns this on or off. The default is to use the fastest 3 servers. .TP 5 -.B edns\-client\-tag: \fI -Include an edns-client-tag option in queries with destination address matching -the configured IP netblock. This configuration option can be used multiple -times. The most specific match will be used. The tag data is configured in -decimal format, from 0 to 65535. +.B edns\-client\-string: \fI +Include an EDNS0 option containing configured ascii string in queries with +destination address matching the configured IP netblock. This configuration +option can be used multiple times. The most specific match will be used. .TP 5 -.B edns\-client\-tag\-opcode: \fI -EDNS0 option code for the edns-client-tag option, from 0 to 65535. Default is -16, as assigned by IANA. +.B edns\-client\-string\-opcode: \fI +EDNS0 option code for the edns-client-string option, from 0 to 65535. Default is +65001. .SS "Remote Control Options" In the .B remote\-control: diff --git a/libunbound/context.c b/libunbound/context.c index 713259c71..cff2831a7 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -80,7 +80,7 @@ context_finalize(struct ub_ctx* ctx) return UB_INITFAIL; if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz)) return UB_INITFAIL; - if(!edns_tags_apply_cfg(ctx->env->edns_tags, cfg)) + if(!edns_strings_apply_cfg(ctx->env->edns_strings, cfg)) return UB_INITFAIL; if(!slabhash_is_size(ctx->env->msg_cache, cfg->msg_cache_size, cfg->msg_cache_slabs)) { diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 3922eb041..c9e24ba8d 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -154,8 +154,8 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) errno = ENOMEM; return NULL; } - ctx->env->edns_tags = edns_tags_create(); - if(!ctx->env->edns_tags) { + ctx->env->edns_strings = edns_strings_create(); + if(!ctx->env->edns_strings) { auth_zones_delete(ctx->env->auth_zones); edns_known_options_delete(ctx->env); config_delete(ctx->env->cfg); @@ -186,7 +186,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); free(ctx->env); free(ctx); errno = e; @@ -199,7 +199,7 @@ ub_ctx_create(void) config_delete(ctx->env->cfg); modstack_desetup(&ctx->mods, ctx->env); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); free(ctx->env); free(ctx); errno = e; @@ -338,7 +338,7 @@ ub_ctx_delete(struct ub_ctx* ctx) infra_delete(ctx->env->infra_cache); config_delete(ctx->env->cfg); edns_known_options_delete(ctx->env); - edns_tags_delete(ctx->env->edns_tags); + edns_strings_delete(ctx->env->edns_strings); auth_zones_delete(ctx->env->auth_zones); free(ctx->env); } diff --git a/services/outside_network.c b/services/outside_network.c index 41a1d83f1..a682739cb 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2097,18 +2097,18 @@ outnet_serviced_query(struct outside_network* outnet, { struct serviced_query* sq; struct service_callback* cb; - struct edns_tag_addr* client_tag_addr; + struct edns_string_addr* client_string_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) return NULL; - if((client_tag_addr = edns_tag_addr_lookup(&env->edns_tags->client_tags, - addr, addrlen))) { - uint16_t client_tag = htons(client_tag_addr->tag_data); + if((client_string_addr = edns_string_addr_lookup( + &env->edns_strings->client_strings, addr, addrlen))) { edns_opt_list_append(&qstate->edns_opts_back_out, - env->edns_tags->client_tag_opcode, 2, - (uint8_t*)&client_tag, qstate->region); + env->edns_strings->client_string_opcode, + client_string_addr->string_len, + client_string_addr->string, qstate->region); } serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d8df76492..558c592a7 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1213,7 +1213,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sldns_buffer_flip(pend->buffer); if(1) { struct edns_data edns; - struct edns_tag_addr* client_tag_addr; + struct edns_string_addr* client_string_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) { free(pend); @@ -1227,13 +1227,13 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.bits = 0; if(dnssec) edns.bits = EDNS_DO; - if((client_tag_addr = edns_tag_addr_lookup( - &env->edns_tags->client_tags, + if((client_string_addr = edns_string_addr_lookup( + &env->edns_strings->client_strings, addr, addrlen))) { - uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, - env->edns_tags->client_tag_opcode, 2, - (uint8_t*)&client_tag, qstate->region); + env->edns_strings->client_string_opcode, + client_string_addr->string_len, + client_string_addr->string, qstate->region); } edns.opt_list = qstate->edns_opts_back_out; attach_edns_record(pend->buffer, &edns); diff --git a/testdata/edns_client_tag.rpl b/testdata/edns_client_string.rpl similarity index 72% rename from testdata/edns_client_tag.rpl rename to testdata/edns_client_string.rpl index 767652c26..1822f7898 100644 --- a/testdata/edns_client_tag.rpl +++ b/testdata/edns_client_string.rpl @@ -1,14 +1,14 @@ ; config options server: - edns-client-tag: 10.0.0.0/24 1234 - edns-client-tag: 10.0.0.10/32 5678 + edns-client-string: 10.0.0.0/24 "abc d" + edns-client-string: 10.0.0.10/32 "123AbC!" stub-zone: - name: "tag1234." + name: "edns-string-abc." stub-addr: 10.0.0.1 stub-zone: - name: "tag5678." + name: "edns-string-123." stub-addr: 10.0.0.10 stub-zone: @@ -17,7 +17,7 @@ stub-zone: CONFIG_END -SCENARIO_BEGIN Test EDNS client tag option +SCENARIO_BEGIN Test EDNS string tag option RANGE_BEGIN 0 1000 ADDRESS 10.0.0.1 @@ -26,9 +26,9 @@ MATCH opcode qtype qname ADJUST copy_id REPLY QR NOERROR SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ANSWER -tag1234. IN A 10.20.30.40 +edns-string-abc. IN A 10.20.30.40 SECTION ADDITIONAL ENTRY_END RANGE_END @@ -40,9 +40,9 @@ MATCH opcode qtype qname ADJUST copy_id REPLY QR NOERROR SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ANSWER -tag5678. IN A 10.20.30.40 +edns-string-123. IN A 10.20.30.40 SECTION ADDITIONAL ENTRY_END RANGE_END @@ -65,19 +65,19 @@ STEP 10 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A ENTRY_END STEP 20 CHECK_OUT_QUERY ENTRY_BEGIN MATCH qname qtype opcode ednsdata SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ADDITIONAL HEX_EDNSDATA_BEGIN - 00 10 ; Opcode 16 - 00 02 ; Length 2 - 04 d2 ; 1234 + fd e9 ; Opcode 65001 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" HEX_EDNSDATA_END ENTRY_END @@ -86,28 +86,29 @@ ENTRY_BEGIN MATCH all REPLY QR RD RA NOERROR SECTION QUESTION -tag1234. IN A +edns-string-abc. IN A SECTION ANSWER -tag1234. IN A 10.20.30.40 +edns-string-abc. IN A 10.20.30.40 ENTRY_END STEP 110 QUERY ENTRY_BEGIN REPLY RD SECTION QUESTION -tag5678. IN A +edns-string-123. IN A ENTRY_END STEP 120 CHECK_OUT_QUERY ENTRY_BEGIN MATCH qname qtype opcode ednsdata SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ADDITIONAL HEX_EDNSDATA_BEGIN - 00 10 ; Opcode 16 - 00 02 ; Length 2 - 16 2e ; 5678 + fd e9 ; Opcode 65001 + 00 07 ; Length 7 + 31 32 33 41 62 ; "123Ab" + 43 21 ; "C!" HEX_EDNSDATA_END ENTRY_END @@ -116,9 +117,9 @@ ENTRY_BEGIN MATCH all REPLY QR RD RA NOERROR SECTION QUESTION -tag5678. IN A +edns-string-123. IN A SECTION ANSWER -tag5678. IN A 10.20.30.40 +edns-string-123. IN A 10.20.30.40 ENTRY_END STEP 210 QUERY diff --git a/testdata/edns_client_string_opcode.rpl b/testdata/edns_client_string_opcode.rpl new file mode 100644 index 000000000..3bd6dda4e --- /dev/null +++ b/testdata/edns_client_string_opcode.rpl @@ -0,0 +1,153 @@ +; config options +server: + edns-client-string: 10.0.0.0/24 "abc d" + edns-client-string: 10.0.0.10/32 "123AbC!" + edns-client-string-opcode: 65432 + +stub-zone: + name: "edns-string-abc." + stub-addr: 10.0.0.1 + +stub-zone: + name: "edns-string-123." + stub-addr: 10.0.0.10 + +stub-zone: + name: "notag." + stub-addr: 10.10.0.1 + +CONFIG_END + +SCENARIO_BEGIN Test EDNS string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +edns-string-123. IN A +SECTION ANSWER +edns-string-123. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.10.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +edns-string-abc. IN A +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-abc. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ff 98 ; Opcode 65432 + 00 05 ; Length 5 + 61 62 63 20 64 ; "abc d" + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +edns-string-abc. IN A +SECTION ANSWER +edns-string-abc. IN A 10.20.30.40 +ENTRY_END + +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +edns-string-123. IN A +ENTRY_END + +STEP 120 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +edns-string-123. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + ff 98 ; Opcode 65432 + 00 07 ; Length 7 + 31 32 33 41 62 ; "123Ab" + 43 21 ; "C!" + HEX_EDNSDATA_END +ENTRY_END + +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +edns-string-123. IN A +SECTION ANSWER +edns-string-123. IN A 10.20.30.40 +ENTRY_END + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +notag. IN A +ENTRY_END + +STEP 220 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +notag. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + HEX_EDNSDATA_END +ENTRY_END + +STEP 230 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END diff --git a/util/config_file.c b/util/config_file.c index b789c3359..ca8a7060f 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -321,8 +321,8 @@ config_create(void) cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; cfg->shm_key = 11777; - cfg->edns_client_tags = NULL; - cfg->edns_client_tag_opcode = LDNS_EDNS_CLIENT_TAG; + cfg->edns_client_strings = NULL; + cfg->edns_client_string_opcode = 65001; cfg->dnscrypt = 0; cfg->dnscrypt_port = 0; cfg->dnscrypt_provider = NULL; @@ -1150,7 +1150,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) - else O_LS2(opt, "edns-client-tags", edns_client_tags) + else O_LS2(opt, "edns-client-strings", edns_client_strings) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) @@ -1519,7 +1519,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); config_delstrlist(cfg->dynlib_file); - config_deldblstrlist(cfg->edns_client_tags); + config_deldblstrlist(cfg->edns_client_strings); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index 7750eaa0e..401d9d70f 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -562,10 +562,10 @@ struct config_file { /** SHM data - key for the shm */ int shm_key; - /** list of EDNS client tag entries, linked list */ - struct config_str2list* edns_client_tags; - /** EDNS opcode to use for EDNS client tags */ - uint16_t edns_client_tag_opcode; + /** list of EDNS client string entries, linked list */ + struct config_str2list* edns_client_strings; + /** EDNS opcode to use for EDNS client strings */ + uint16_t edns_client_string_opcode; /** DNSCrypt */ /** true to enable dnscrypt */ diff --git a/util/configlexer.c b/util/configlexer.c index a00f50b74..8db2f8b20 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -363,7 +363,7 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3253] = +static const flex_int16_t yy_accept[3256] = { 0, 1, 1, 308, 308, 312, 312, 316, 316, 320, 320, 1, 1, 324, 324, 328, 328, 335, 332, 1, 306, @@ -632,46 +632,46 @@ static const flex_int16_t yy_accept[3253] = 332, 332, 332, 332, 332, 332, 332, 332, 158, 332, 275, 332, 332, 332, 332, 332, 247, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 220, 332, - 332, 304, 332, 332, 332, 267, 332, 332, 332, 332, + 332, 332, 332, 332, 267, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 291, 332, 182, 332, 332, 332, - 332, 332, 332, 332, 71, 73, 332, 332, 332, 332, - 332, 332, 332, 100, 332, 332, 332, 332, 259, 332, - 332, 332, 332, 271, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 291, 332, 182, 332, 332, 332, 332, + 332, 332, 332, 71, 73, 332, 332, 332, 332, 332, + 332, 332, 100, 332, 332, 332, 332, 259, 332, 332, + 332, 332, 271, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 212, 34, 28, 30, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 35, 332, - 29, 31, 332, 332, 332, 332, 332, 332, 332, 332, - 96, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 214, - 211, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 70, - 332, 332, 332, 135, 332, 118, 332, 332, 332, 332, - 332, 332, 332, 332, 153, 47, 332, 332, 323, 13, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 285, + 332, 332, 332, 332, 212, 34, 28, 30, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 35, 332, 29, + 31, 332, 332, 332, 332, 332, 332, 332, 332, 96, + 332, 332, 332, 332, 332, 332, 331, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 214, 211, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 70, 332, + 332, 332, 135, 332, 118, 332, 332, 332, 332, 332, + 332, 332, 332, 153, 47, 332, 332, 323, 13, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 285, 332, - 332, 288, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 12, 332, 332, 22, 332, 332, 332, 265, - 332, 332, 332, 332, 273, 332, 332, 332, 74, 332, - 222, 332, 332, 332, 332, 213, 332, 332, 69, 332, - 332, 332, 332, 23, 332, 43, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 167, 166, - 323, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 215, 209, 332, 227, 332, 332, 277, 332, 332, 332, + 288, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 12, 332, 332, 22, 332, 332, 332, 265, 332, + 332, 332, 332, 273, 332, 332, 332, 74, 332, 222, + 332, 332, 332, 332, 213, 332, 332, 69, 332, 332, + 332, 332, 23, 332, 43, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 167, 166, 323, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 215, + 209, 332, 227, 332, 332, 277, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 81, 332, - 332, 332, 260, 332, 332, 332, 332, 195, 332, 332, - 332, 332, 221, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 295, 296, 164, 332, 332, 75, 332, 332, - 332, 332, 174, 332, 332, 112, 113, 332, 332, 332, - 332, 159, 332, 161, 332, 200, 332, 332, 332, 332, - 165, 332, 332, 230, 332, 332, 332, 332, 332, 332, - 332, 142, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 238, 332, 332, 332, 332, 332, - 332, 332, 332, 24, 332, 270, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 81, 332, 332, + 332, 260, 332, 332, 332, 332, 195, 332, 332, 332, + 332, 221, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 295, 296, 164, 332, 332, 75, 332, 332, 332, + 332, 174, 332, 332, 112, 113, 332, 332, 332, 332, + 159, 332, 161, 332, 200, 332, 332, 332, 332, 165, + 332, 332, 230, 332, 332, 332, 332, 332, 332, 332, + 142, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 238, 332, 332, 332, 332, 332, 332, + 332, 304, 332, 24, 332, 270, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 201, 332, 332, 258, 332, 289, 332, 194, 332, 332, 332, @@ -700,29 +700,29 @@ static const flex_int16_t yy_accept[3253] = 332, 332, 188, 332, 332, 332, 332, 332, 203, 332, 332, 332, 332, 332, 332, 332, 332, 160, 77, 332, 332, 332, 332, 332, 279, 332, 332, 332, 332, 332, - 332, 332, 242, 332, 332, 241, 139, 305, 332, 92, + 332, 332, 242, 332, 332, 241, 139, 332, 332, 92, 48, 332, 145, 146, 149, 150, 147, 148, 85, 332, 263, 332, 332, 332, 332, 163, 332, 332, 332, 332, 332, 232, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, + 332, 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 99, 332, - 231, 332, 255, 283, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 49, 5, 332, 332, - 223, 332, 332, 284, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 243, 25, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 244, 332, 332, - 332, 143, 332, 332, 332, 332, 332, 332, 332, 332, - 177, 332, 184, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 99, 332, 231, 332, 255, 283, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 305, 332, 49, + 5, 332, 332, 223, 332, 332, 284, 332, 332, 332, + 332, 332, 332, 332, 332, 332, 243, 25, 332, 332, + 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 244, 332, 332, 332, 143, 332, 332, 332, 332, 332, + 332, 332, 332, 177, 332, 184, 332, 332, 332, 332, - 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, + 332, 332, 332, 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 302, 332, 332, 251, 332, 332, 332, 332, 332, 281, - 332, 332, 332, 332, 332, 332, 282, 332, 332, 332, - 249, 332, 252, 253, 332, 332, 332, 332, 332, 250, - 254, 0 + 332, 332, 332, 302, 332, 332, 251, 332, 332, 332, + 332, 332, 281, 332, 332, 332, 332, 332, 332, 282, + 332, 332, 332, 249, 332, 252, 253, 332, 332, 332, + 332, 332, 250, 254, 0 } ; static const YY_CHAR yy_ec[256] = @@ -765,17 +765,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3271] = +static const flex_int16_t yy_base[3274] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365, - 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6361, + 6361, 6361, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365, - 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365, - 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238, - 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743, - 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3093, 6361, 6361, 6361, + 107, 2724, 6361, 6361, 6361, 154, 2535, 2515, 6361, 6361, + 6361, 226, 2454, 6361, 6361, 6361, 163, 2353, 6361, 238, + 6361, 242, 148, 2067, 1986, 6361, 6361, 6361, 246, 1743, + 6361, 6361, 6361, 250, 1651, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -805,9 +805,9 @@ static const flex_int16_t yy_base[3271] = 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836, + 822, 818, 6361, 817, 820, 833, 826, 834, 835, 836, 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, - 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892, + 854, 863, 866, 6361, 864, 868, 898, 870, 872, 892, 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, @@ -817,21 +817,21 @@ static const flex_int16_t yy_base[3271] = 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, - 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071, + 6361, 1068, 1070, 1072, 1073, 1074, 1075, 6361, 1077, 1071, 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, - 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139, + 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6361, 1136, 1139, 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, - 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211, + 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6361, 1208, 1211, 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, - 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357, + 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6361, 1361, 1357, 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379, 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402, @@ -845,653 +845,655 @@ static const flex_int16_t yy_base[3271] = 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564, 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588, - 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605, - 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365, - 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618, + 1589, 1593, 6361, 1585, 1601, 1583, 1596, 1597, 1599, 1605, + 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6361, 1614, 6361, + 6361, 315, 6361, 6361, 1616, 1621, 6361, 1622, 1631, 1618, 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664, 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682, 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707, 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, - 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751, + 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6361, 1742, 1751, 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757, - 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365, + 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6361, 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801, - 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820, + 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6361, 1820, 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839, 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851, 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879, 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892, 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922, 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939, - 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955, + 6361, 1946, 1947, 6361, 1949, 1948, 1950, 1972, 1951, 1955, 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989, 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010, 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032, 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044, 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058, - 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090, + 6361, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6361, 2090, 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108, - 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128, - 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144, - 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157, + 2114, 2115, 2110, 2113, 2127, 6361, 2118, 6361, 2125, 2128, + 2131, 2129, 2133, 2132, 2135, 2136, 6361, 6361, 2137, 2144, + 2145, 2155, 2152, 6361, 2138, 2162, 6361, 2159, 2164, 2157, 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176, - 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, - 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, + 2177, 6361, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, + 6361, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239, - 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, + 2241, 6361, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271, 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293, - 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, + 6361, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333, - 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348, + 2334, 2335, 2336, 2337, 2341, 2340, 6361, 2343, 2346, 2348, - 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375, + 2349, 2351, 2352, 2362, 6361, 2354, 2368, 2365, 2374, 2375, 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388, - 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408, + 2392, 2395, 6361, 2397, 2400, 2401, 2398, 2407, 2409, 2408, 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424, 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447, - 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, + 2448, 6361, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495, 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510, 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534, - 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562, + 2545, 2558, 2549, 6361, 2547, 2553, 2541, 2557, 2570, 2562, 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581, 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604, - 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, + 2606, 6361, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638, - 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, - 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675, - 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693, - 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709, - 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365, + 2641, 6361, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, + 2663, 2666, 2667, 2668, 2669, 2670, 6361, 2678, 2679, 2675, + 2687, 2677, 2682, 2684, 2689, 2690, 6361, 2691, 2692, 2693, + 2700, 2702, 2697, 6361, 2704, 2699, 2705, 2707, 2708, 2709, + 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6361, 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753, - 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772, - 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789, + 2755, 2760, 6361, 2767, 2766, 2764, 2777, 2754, 2769, 2772, + 2778, 2779, 2780, 2781, 2782, 2785, 6361, 2786, 2788, 2789, 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810, 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833, 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857, - 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870, + 2858, 2860, 6361, 2863, 2864, 2865, 2854, 2866, 2869, 2870, 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886, 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911, 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932, 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955, - 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972, + 2956, 2957, 2958, 6361, 2961, 2962, 2963, 2966, 2969, 2972, 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983, - 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008, - 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017, + 2999, 2997, 6361, 2998, 6361, 3000, 3002, 3004, 3012, 3008, + 6361, 3014, 6361, 3015, 3020, 3009, 3011, 6361, 3023, 3017, 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038, 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055, - 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082, + 3064, 3057, 3062, 3070, 3072, 3076, 6361, 3078, 3080, 3082, 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098, - 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128, - 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141, + 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6361, 3109, 3128, + 3119, 3129, 6361, 3131, 3106, 3132, 3139, 3134, 3137, 3141, - 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365, + 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6361, 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188, 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202, 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224, - 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249, - 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260, - 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365, - 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, + 3225, 3222, 3223, 3226, 3227, 6361, 3229, 3230, 3231, 3249, + 3233, 3234, 3245, 3235, 6361, 3251, 3247, 3252, 3258, 3260, + 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6361, + 3276, 6361, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315, - 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365, + 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6361, 6361, 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353, - 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369, - 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383, - 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410, + 3355, 3357, 3366, 6361, 3363, 3364, 3367, 3368, 3378, 3369, + 3381, 3388, 3385, 3392, 3391, 6361, 3374, 3370, 3399, 3383, + 3395, 3406, 6361, 3401, 6361, 3402, 3403, 3405, 3407, 3410, 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420, - 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448, - 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467, - 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483, - 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506, + 3432, 3434, 3443, 3436, 3440, 3441, 6361, 3445, 3446, 3448, + 3449, 3450, 3457, 3460, 3453, 6361, 3461, 3463, 3465, 3467, + 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6361, 3477, 3483, + 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6361, 3504, 3506, 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522, 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532, - 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567, - 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586, - 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606, - 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621, - 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652, - 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666, - 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685, - 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365, - 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709, + 3553, 3554, 3536, 6361, 3546, 3558, 3559, 3560, 3561, 3562, + 3566, 3569, 3571, 3564, 3573, 3581, 3574, 3579, 3586, 3583, + 3594, 3589, 6361, 3596, 3591, 3599, 3597, 3598, 3603, 3604, + 3605, 3607, 3608, 3611, 3612, 3614, 3621, 3618, 3620, 3623, + 3633, 3625, 6361, 3642, 3634, 3635, 3626, 3638, 3639, 3652, + 3644, 3647, 3651, 3656, 3657, 3658, 3660, 3662, 3663, 3666, + 3661, 6361, 6361, 3669, 3670, 3673, 6361, 3676, 3671, 3693, + 3675, 3677, 3679, 3689, 3688, 3678, 3690, 3686, 3699, 6361, + 3700, 3707, 3702, 3703, 3714, 3717, 3719, 3716, 3720, 3706, - 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737, - 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753, - 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776, - 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365, - 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814, - 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831, - 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849, - 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871, - 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880, - 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902, + 3709, 3713, 3724, 3723, 3730, 3731, 3739, 3740, 3735, 3736, + 3738, 6361, 3737, 3743, 3744, 3746, 3747, 3748, 6361, 3750, + 3760, 3753, 3752, 3768, 3770, 3762, 3772, 3754, 3776, 3777, + 3779, 3780, 3781, 3788, 3783, 3786, 3793, 3794, 3785, 6361, + 3797, 3799, 3787, 3803, 6361, 3805, 3814, 3817, 3818, 3809, + 3816, 3819, 3826, 6361, 3822, 3823, 3824, 3825, 3838, 3829, + 3839, 3837, 3828, 6361, 3841, 3830, 3843, 6361, 3844, 3845, + 3855, 3857, 3852, 3864, 3859, 3861, 3862, 3860, 6361, 3870, + 6361, 3871, 3867, 3876, 6361, 3873, 3878, 3881, 3883, 3880, + 3887, 3888, 3891, 3896, 3884, 3897, 3898, 3899, 3901, 3902, - 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920, - 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365, - 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951, - 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970, - 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984, - 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004, - 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017, - 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043, - 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365, - 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074, + 3909, 3908, 3910, 3911, 3900, 6361, 3912, 3915, 3921, 3917, + 3922, 3925, 3920, 3927, 3931, 3928, 6361, 6361, 3939, 6361, + 3940, 3935, 3942, 6361, 3944, 3946, 3953, 3945, 3949, 3952, + 3956, 3957, 6361, 3964, 3966, 6361, 3968, 3975, 3970, 3961, + 3971, 3972, 3976, 3978, 3980, 3981, 3982, 3979, 3986, 3984, + 6361, 3987, 3988, 3996, 3998, 3995, 3989, 4012, 4014, 4000, + 6361, 4016, 4002, 4006, 4017, 4018, 6361, 4023, 6361, 4010, + 4026, 4027, 4029, 4030, 6361, 4034, 4033, 4038, 4040, 4041, + 4042, 4043, 4045, 4051, 4052, 4059, 4055, 4054, 4056, 6361, + 4057, 4061, 4063, 4070, 4058, 4065, 4074, 4077, 4078, 4079, - 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099, - 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365, - 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365, - 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365, - 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160, - 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180, - 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215, - 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223, - 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244, - 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262, + 4083, 4087, 4081, 4088, 4094, 4092, 4098, 4084, 6361, 4096, + 4104, 4090, 4113, 4100, 4110, 6361, 4114, 4115, 4116, 6361, + 4117, 4118, 4119, 4124, 4125, 4127, 4131, 4132, 4129, 6361, + 4136, 4137, 4133, 4134, 4135, 4141, 6361, 6361, 4151, 6361, + 4152, 4142, 4154, 4155, 4156, 4159, 4161, 4162, 4164, 4166, + 4172, 4174, 4167, 4175, 4183, 4184, 4192, 4187, 4188, 4189, + 6361, 6361, 4194, 4198, 4191, 4202, 4203, 4195, 4205, 4212, + 4210, 4216, 4219, 4220, 4214, 6361, 4222, 4211, 4228, 4221, + 6361, 4227, 4229, 4230, 4233, 4235, 4236, 4239, 4237, 4238, + 4242, 4245, 4246, 4247, 4251, 4249, 4258, 4259, 4260, 4261, - 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281, - 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307, - 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320, - 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338, - 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363, - 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376, - 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390, - 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414, - 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436, - 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365, + 4265, 4263, 4268, 6361, 4269, 4270, 4272, 4273, 4274, 4280, + 4282, 4283, 4284, 6361, 4285, 6361, 4288, 4286, 4302, 4294, + 4306, 4287, 4297, 4307, 4309, 4312, 4315, 4317, 4308, 4318, + 4319, 4324, 4326, 4328, 4329, 6361, 4330, 4332, 4337, 4338, + 4340, 4342, 4343, 4345, 4346, 4348, 4351, 4349, 4356, 4359, + 4353, 4360, 4361, 4363, 6361, 4365, 4372, 4368, 4374, 4376, + 4377, 4378, 4379, 4385, 4386, 4388, 4389, 4391, 6361, 4392, + 4393, 4396, 4397, 4399, 4400, 4402, 4406, 4409, 6361, 4414, + 4410, 4415, 4404, 4417, 4420, 4423, 4425, 4427, 4429, 4434, + 6361, 4428, 4439, 4441, 4432, 4442, 4443, 4445, 4433, 6361, - 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463, - 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365, - 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507, - 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365, - 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545, - 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562, - 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579, - 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597, - 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617, - 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639, + 4448, 4451, 4447, 4466, 4458, 4467, 4463, 4465, 4469, 4471, + 4472, 4473, 4474, 4476, 4477, 4478, 4487, 4495, 4493, 6361, + 4480, 6361, 4490, 4501, 4504, 4505, 4491, 4488, 6361, 4503, + 4507, 4512, 4509, 4513, 6361, 4515, 4516, 4518, 4517, 6361, + 4525, 4521, 4520, 4530, 4535, 4536, 6361, 4539, 4541, 4543, + 4551, 4552, 4547, 4550, 4553, 4554, 4557, 4558, 4559, 4560, + 4568, 4563, 4565, 6361, 4571, 4573, 4580, 4581, 4574, 4582, + 4564, 4585, 4588, 4590, 6361, 4592, 4593, 4594, 4595, 4596, + 4598, 4599, 4607, 4602, 4605, 4606, 4610, 4611, 6361, 4612, + 4617, 4616, 4626, 4619, 4628, 6361, 6361, 4622, 4634, 4637, - 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365, - 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656, - 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666, - 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689, - 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708, - 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725, - 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747, - 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628, - 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783, - 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798, + 4629, 4638, 6361, 6361, 4641, 4648, 4631, 4647, 4644, 6361, + 6361, 4650, 6361, 4651, 6361, 4652, 4654, 6361, 6361, 4656, + 4657, 4658, 4659, 4668, 6361, 4672, 6361, 4679, 4674, 4660, + 4662, 4677, 6361, 4678, 4680, 4686, 6361, 4681, 4693, 4688, + 4689, 6361, 4695, 4696, 4691, 4698, 6361, 4700, 4703, 4707, + 4705, 4708, 4709, 4711, 4715, 4718, 4719, 4720, 4721, 4722, + 4734, 4736, 4738, 4740, 4730, 4726, 4743, 4745, 4749, 4747, + 4751, 4752, 4753, 4755, 4756, 4758, 4761, 4762, 4764, 4767, + 4765, 4766, 4778, 4768, 4770, 4780, 4782, 4771, 4781, 4785, + 4784, 4789, 4787, 4792, 4795, 4794, 4796, 6361, 4800, 4802, - 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827, - 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837, - 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856, - 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870, - 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893, - 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913, - 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929, - 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940, - 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963, - 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983, + 4805, 4807, 4806, 4812, 4814, 4816, 4822, 4825, 6361, 4829, + 6361, 4831, 4823, 4827, 4833, 4834, 6361, 4835, 4836, 4837, + 4840, 4839, 4842, 4843, 4844, 4847, 4850, 4856, 6361, 4867, + 4858, 4851, 4861, 4875, 6361, 4869, 4877, 4853, 4863, 4879, + 4880, 4882, 4883, 4887, 4885, 4889, 4891, 4884, 4892, 4894, + 4897, 4905, 4906, 4907, 4908, 4909, 4910, 4911, 4912, 4913, + 4919, 4921, 4926, 6361, 4916, 6361, 4920, 4928, 4932, 4933, + 4934, 4936, 4938, 6361, 6361, 4940, 4942, 4949, 4937, 4941, + 4951, 4724, 6361, 4943, 4961, 4955, 4962, 6361, 4963, 4946, + 4964, 4968, 6361, 4969, 4970, 4972, 4974, 4971, 4983, 4980, - 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991, - 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008, - 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025, - 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048, - 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365, - 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085, - 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365, - 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110, - 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365, - 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365, + 4977, 4987, 4988, 4992, 6361, 6361, 6361, 6361, 4993, 4989, + 4996, 4997, 4999, 4998, 5004, 5002, 5005, 6361, 5009, 6361, + 6361, 5014, 5016, 5015, 5017, 5018, 5006, 5023, 5027, 6361, + 5024, 5028, 5031, 5030, 5038, 5041, 5043, 5044, 5047, 5046, + 5048, 5055, 5053, 5056, 5050, 5054, 5061, 5063, 6361, 6361, + 5067, 5069, 5070, 5077, 5074, 5078, 5072, 5081, 5084, 5082, + 5085, 5089, 5090, 5091, 5099, 5101, 5092, 5096, 6361, 5100, + 5105, 5103, 6361, 5102, 6361, 5111, 5113, 5109, 5115, 5117, + 5120, 5121, 5123, 6361, 6361, 5125, 5124, 6361, 6361, 5131, + 5133, 5135, 5137, 5138, 5134, 5140, 5142, 5139, 6361, 5144, - 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167, - 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365, - 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202, - 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216, - 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234, - 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365, - 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266, - 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278, - 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294, - 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310, + 6361, 5145, 5147, 5149, 5146, 5162, 5166, 5167, 5164, 5168, + 5169, 6361, 5170, 5172, 6361, 5173, 5175, 5178, 6361, 5180, + 5182, 5184, 5187, 6361, 5191, 5188, 5194, 6361, 5196, 6361, + 5197, 5198, 5201, 5208, 6361, 5204, 5205, 6361, 5210, 5212, + 5215, 5214, 6361, 5216, 6361, 5219, 5221, 5222, 5226, 5228, + 5230, 5231, 5232, 5233, 5241, 5237, 5238, 6361, 6361, 135, + 5246, 5248, 5249, 5252, 5251, 5259, 5254, 5256, 5262, 6361, + 6361, 5258, 6361, 5265, 5264, 6361, 5255, 5274, 5275, 5266, + 5281, 5270, 5278, 5268, 5290, 5285, 5291, 5287, 5292, 5295, + 5306, 5310, 5293, 5297, 5307, 5313, 5315, 5317, 5319, 5320, - 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336, - 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354, - 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373, - 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379, - 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394, - 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413, - 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419, - 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449, - 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466, - 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482, + 5321, 5322, 5323, 5324, 5327, 5326, 5330, 6361, 5332, 5334, + 5333, 6361, 5339, 5340, 5344, 5349, 6361, 5353, 5355, 5356, + 5357, 6361, 5345, 5359, 5367, 5360, 5361, 5374, 5362, 5370, + 5377, 6361, 6361, 6361, 5378, 5385, 6361, 5387, 5380, 5372, + 5382, 6361, 5389, 5390, 6361, 6361, 5388, 5392, 5391, 5399, + 6361, 5395, 6361, 5396, 6361, 5403, 5404, 5405, 5410, 6361, + 5415, 5421, 6361, 5424, 5427, 5429, 5430, 5412, 5414, 5431, + 6361, 5440, 5437, 5438, 5445, 5435, 5446, 5441, 5447, 5448, + 5455, 5450, 5457, 6361, 5459, 5460, 5464, 5467, 5451, 5461, + 5471, 6361, 5454, 6361, 5473, 6361, 5477, 5478, 5479, 5480, - 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365, - 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512, - 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524, - 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536, - 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564, - 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583, - 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365, - 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614, - 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637, - 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647, + 5481, 5482, 5484, 5488, 5485, 5487, 5495, 5499, 5496, 6361, + 5503, 5507, 6361, 5504, 6361, 5509, 6361, 5500, 5510, 5511, + 5512, 6361, 5514, 5518, 5519, 5520, 6361, 5522, 5529, 5528, + 5531, 6361, 6361, 5524, 5540, 5532, 5533, 5536, 5546, 5541, + 5549, 5551, 5550, 5552, 5560, 5556, 5553, 5557, 5564, 5566, + 5570, 6361, 6361, 6361, 5567, 5558, 5580, 5582, 5573, 5589, + 5584, 6361, 5585, 5587, 5588, 5591, 5598, 5594, 5596, 6361, + 5597, 5599, 5600, 5601, 5604, 5605, 5606, 5607, 6361, 5619, + 5621, 5608, 5615, 5623, 5627, 5631, 5633, 5634, 5641, 5637, + 6361, 5639, 6361, 6361, 5636, 6361, 5640, 5643, 5644, 5645, - 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653, - 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680, - 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696, - 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710, - 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727, - 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729, - 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761, - 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746, - 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798, - 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812, + 6361, 5648, 5649, 5650, 5652, 5654, 5657, 6361, 5664, 5651, + 5659, 5667, 6361, 6361, 5669, 6361, 5674, 5675, 5676, 5683, + 5679, 5681, 5685, 5682, 6361, 5686, 5688, 5692, 5693, 5694, + 6361, 5695, 5696, 5698, 5699, 6361, 5702, 5701, 5704, 5707, + 5709, 6361, 5711, 5710, 5729, 5726, 6361, 5712, 5724, 5725, + 6361, 6361, 5734, 5736, 5737, 6361, 6361, 6361, 5739, 5740, + 5743, 6361, 5746, 5750, 5754, 5758, 5749, 6361, 5761, 5757, + 5762, 6361, 6361, 5763, 5764, 5765, 5767, 6361, 6361, 5768, + 5771, 5769, 5772, 5774, 6361, 5777, 5779, 5785, 5791, 5797, + 5787, 5794, 5792, 5806, 5809, 5782, 5798, 5808, 5810, 5811, - 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365, - 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850, - 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862, - 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870, - 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892, - 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365, - 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906, - 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913, - 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943, - 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956, + 5812, 5818, 5820, 5819, 5822, 5824, 5826, 5827, 6361, 6361, + 5834, 5836, 5828, 6361, 6361, 5839, 5843, 5845, 5847, 5849, + 5851, 5853, 6361, 5854, 5856, 5857, 5858, 5840, 6361, 5859, + 5862, 5864, 5867, 5865, 5868, 5871, 5873, 6361, 6361, 5874, + 5881, 5875, 5882, 5876, 6361, 5885, 5893, 5889, 5890, 5891, + 5896, 5897, 6361, 5898, 5899, 6361, 6361, 5902, 5900, 6361, + 6361, 5905, 6361, 6361, 6361, 6361, 6361, 6361, 6361, 5909, + 6361, 5907, 5917, 5919, 5922, 6361, 5911, 5923, 5924, 5925, + 5926, 6361, 5927, 5930, 5933, 5416, 5929, 5935, 5939, 5937, + 5942, 5943, 5946, 5947, 5948, 5949, 5953, 5951, 5963, 5954, - 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982, - 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996, - 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014, - 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036, - 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038, - 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060, - 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078, - 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095, - 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110, - 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130, + 5964, 6361, 6361, 6361, 5965, 5955, 5967, 5973, 5977, 5980, + 5984, 5986, 5970, 5978, 5987, 5988, 5991, 5992, 5994, 6001, + 5997, 6000, 5999, 6003, 6005, 6007, 6014, 6008, 6010, 6016, + 6361, 6018, 6361, 6019, 6361, 6361, 6021, 6026, 6022, 6024, + 6034, 6038, 6031, 6035, 6036, 6039, 6041, 6361, 6047, 6361, + 6361, 6042, 6049, 6361, 6050, 6052, 6361, 6051, 6053, 6054, + 6057, 6059, 6060, 6061, 6062, 6075, 6361, 6361, 6065, 6068, + 6076, 6078, 6082, 6089, 6080, 6088, 6091, 6092, 6084, 6100, + 6361, 6099, 6101, 6105, 6361, 6107, 6090, 6108, 6102, 6110, + 6118, 6113, 6114, 6361, 6116, 6361, 6120, 6122, 6123, 6124, - 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150, - 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169, - 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365, - 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203, - 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365, - 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88, - 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357 + 6125, 6126, 6135, 6133, 6137, 6361, 6130, 6140, 6142, 6145, + 6147, 6149, 6151, 6152, 6160, 6157, 6153, 6164, 6165, 6166, + 6167, 6169, 6168, 6361, 6176, 6170, 6361, 6177, 6178, 6179, + 6180, 6184, 6361, 6191, 6181, 6188, 6192, 6195, 6196, 6361, + 6202, 6205, 6206, 6361, 6209, 6361, 6361, 6210, 6197, 6208, + 6212, 6218, 6361, 6361, 6361, 6241, 6248, 6255, 6262, 6269, + 6276, 6283, 88, 6290, 6297, 6304, 6311, 6318, 6325, 6332, + 6339, 6346, 6353 } ; -static const flex_int16_t yy_def[3271] = +static const flex_int16_t yy_def[3274] = { 0, - 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256, - 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252, - 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252, - 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252, - 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267, - 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269, - 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270, - 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3255, 1, 3256, 3256, 3257, 3257, 3258, 3258, 3259, 3259, + 3260, 3260, 3261, 3261, 3262, 3262, 3255, 3263, 3255, 3255, + 3255, 3255, 3264, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3265, 3255, 3255, 3255, + 3265, 3266, 3255, 3255, 3255, 3266, 3267, 3255, 3255, 3255, + 3255, 3267, 3268, 3255, 3255, 3255, 3268, 3269, 3255, 3270, + 3255, 3269, 3269, 3271, 3255, 3255, 3255, 3255, 3271, 3272, + 3255, 3255, 3255, 3272, 3263, 3263, 3255, 3273, 3264, 3273, + 3264, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263, - 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267, - 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3265, 3265, 3266, + 3266, 3267, 3267, 3255, 3268, 3268, 3269, 3269, 3270, 3270, + 3269, 3271, 3271, 3255, 3272, 3272, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3269, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3269, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3269, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3255, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3269, 3269, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3269, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3269, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3269, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3269, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3255, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3255, 3263, 3263, 3263, 3263, 3269, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, - 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3255, + 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3269, 3263, 3263, 3263, 3263, 3255, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3263, 3263, 3263, 3263, 3255, 3255, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3269, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3255, 3263, 3255, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3269, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3255, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3255, 3263, 3255, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3255, 3263, 3255, 3263, 3263, 3263, 3263, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3263, 3255, 3255, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, + 3255, 3255, 3263, 3263, 3263, 3255, 3255, 3255, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, + 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, + 3263, 3263, 3263, 3255, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3255, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, + 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3255, 3255, 3263, 3263, 3255, + 3255, 3263, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3263, + 3255, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, - 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3263, 3255, 3255, 3255, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3255, 3263, 3255, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3255, + 3255, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3255, 3255, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3255, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3255, 3263, 3263, 3263, 3263, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252 + 3263, 3263, 3263, 3263, 3263, 3255, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, 3263, + 3263, 3263, 3263, 3255, 3263, 3263, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3263, 3263, 3263, 3263, 3263, 3263, 3255, + 3263, 3263, 3263, 3255, 3263, 3255, 3255, 3263, 3263, 3263, + 3263, 3263, 3255, 3255, 0, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255 } ; -static const flex_int16_t yy_nxt[6406] = +static const flex_int16_t yy_nxt[6402] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1840,7 +1842,7 @@ static const flex_int16_t yy_nxt[6406] = 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86, 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691, 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86, - 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697, + 86, 1695, 86, 86, 3255, 1706, 86, 86, 1696, 1697, 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707, 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710, 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720, @@ -1861,7 +1863,7 @@ static const flex_int16_t yy_nxt[6406] = 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784, 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790, 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799, - 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86, + 1791, 86, 86, 3255, 1793, 1794, 1796, 86, 1795, 86, 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807, 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86, 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809, @@ -1869,7 +1871,7 @@ static const flex_int16_t yy_nxt[6406] = 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827, 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86, - 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835, + 86, 3255, 1831, 86, 86, 86, 1834, 86, 86, 1835, 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838, 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86, 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86, @@ -1885,322 +1887,322 @@ static const flex_int16_t yy_nxt[6406] = 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86, 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86, 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903, - 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86, - 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920, - 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86, + 1908, 86, 86, 86, 86, 86, 1913, 86, 1909, 86, + 1916, 1917, 86, 1918, 86, 1920, 86, 86, 1911, 1914, + 1910, 1915, 86, 1912, 86, 1921, 86, 1919, 1924, 86, - 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927, - 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86, - 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938, - 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934, - 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86, - 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957, - 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958, - 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86, - 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86, - 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975, + 1925, 1926, 86, 1928, 86, 1927, 1930, 86, 1922, 86, + 86, 86, 86, 1923, 1932, 1933, 86, 86, 86, 1936, + 86, 86, 1929, 1935, 86, 86, 1939, 86, 1941, 1938, + 3255, 86, 1940, 86, 86, 1931, 86, 1934, 86, 86, + 1948, 1954, 1937, 1942, 1943, 1944, 86, 86, 86, 1950, + 1945, 86, 86, 1946, 1951, 86, 1947, 86, 1949, 1957, + 86, 1952, 1955, 1953, 86, 86, 1958, 1956, 1961, 86, + 86, 86, 1963, 86, 86, 86, 86, 1966, 1967, 86, + 1959, 1969, 86, 86, 86, 1960, 86, 1975, 86, 86, + 86, 86, 86, 1964, 1968, 1971, 1962, 1965, 1972, 86, - 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86, - 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980, - 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982, - 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996, - 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86, - 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86, - 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006, - 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015, - 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86, - 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86, + 1974, 86, 86, 86, 1981, 1973, 86, 1977, 1970, 1978, + 1979, 1976, 86, 86, 1985, 86, 86, 1980, 1984, 86, + 86, 1988, 86, 1987, 1989, 1982, 86, 86, 1983, 86, + 86, 1990, 86, 86, 1991, 1986, 86, 86, 1995, 1993, + 1996, 1994, 1992, 86, 86, 1999, 2000, 2001, 86, 86, + 86, 86, 86, 86, 1997, 2004, 86, 86, 2009, 86, + 86, 86, 2008, 86, 2003, 86, 86, 86, 2002, 1998, + 2006, 2005, 2014, 86, 2015, 86, 2011, 2013, 2007, 2010, + 2016, 86, 2012, 86, 2020, 86, 2018, 2017, 2021, 86, + 86, 2019, 86, 86, 86, 2027, 86, 2024, 86, 86, - 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86, - 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038, - 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86, - 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86, - 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86, - 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86, - 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062, - 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063, - 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069, - 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075, + 86, 86, 2032, 2022, 2029, 2030, 86, 86, 2031, 2023, + 86, 2028, 86, 2025, 2026, 2037, 86, 2038, 86, 2033, + 2036, 2039, 86, 2034, 2041, 2042, 2040, 86, 2035, 86, + 86, 86, 86, 2046, 2044, 86, 86, 86, 86, 86, + 2048, 86, 86, 86, 2045, 2051, 2053, 2047, 2043, 2049, + 168, 86, 86, 2055, 86, 2054, 86, 86, 86, 2060, + 2059, 2058, 2057, 2050, 2052, 86, 2056, 2061, 86, 2062, + 86, 2064, 86, 86, 86, 86, 3255, 86, 2065, 2066, + 86, 2067, 2068, 86, 86, 2063, 86, 2070, 2069, 86, + 2072, 86, 2071, 86, 86, 2076, 86, 86, 2073, 2075, - 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86, - 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86, - 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084, - 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094, - 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104, - 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110, - 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106, - 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86, - 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124, + 86, 86, 2077, 2074, 86, 2078, 2079, 2080, 2081, 86, + 86, 86, 86, 86, 86, 86, 2088, 2082, 2086, 2083, + 2087, 86, 86, 86, 86, 86, 2093, 2092, 86, 2084, + 86, 2085, 2090, 86, 86, 86, 2098, 2094, 86, 2089, + 86, 86, 2091, 2096, 86, 2100, 2095, 2099, 86, 2102, + 2097, 2104, 86, 86, 2103, 86, 2105, 86, 86, 86, + 2110, 2101, 86, 2112, 2106, 86, 86, 2113, 2114, 86, + 86, 2107, 2108, 2109, 86, 2111, 2116, 86, 2115, 86, + 2117, 86, 2119, 86, 86, 86, 2123, 2118, 86, 86, + 2120, 86, 86, 86, 86, 86, 2121, 86, 2124, 86, - 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136, - 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86, - 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86, - 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146, - 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86, - 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152, - 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86, - 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165, - 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168, - 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179, + 86, 86, 86, 2131, 2122, 2126, 2127, 2128, 86, 86, + 2136, 86, 2125, 86, 2130, 86, 2132, 2143, 2129, 86, + 2133, 2135, 2138, 86, 2134, 86, 2137, 86, 2139, 86, + 86, 86, 2140, 2141, 2142, 2145, 86, 2144, 2146, 86, + 86, 2148, 86, 86, 2151, 2147, 86, 86, 2149, 2153, + 2155, 86, 2150, 86, 86, 86, 86, 2158, 86, 2157, + 2154, 2159, 2152, 2160, 86, 86, 2163, 86, 86, 86, + 86, 86, 86, 2164, 86, 2169, 86, 2166, 86, 2156, + 2165, 2173, 2161, 86, 2170, 2162, 2171, 86, 2168, 2167, + 86, 86, 86, 2175, 86, 2174, 86, 86, 2172, 2179, - 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180, - 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86, - 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192, - 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196, - 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86, - 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207, - 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86, - 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86, - 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224, - 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227, + 86, 86, 2181, 86, 2177, 86, 2180, 86, 2182, 86, + 2176, 86, 2178, 86, 2183, 2185, 2184, 86, 2186, 2188, + 2190, 2187, 2192, 86, 2189, 2191, 86, 86, 86, 86, + 86, 86, 86, 2195, 2196, 2193, 2200, 86, 86, 2194, + 86, 2199, 86, 2197, 86, 86, 86, 86, 86, 86, + 86, 2198, 2209, 2210, 86, 86, 2201, 2205, 2202, 2204, + 2203, 2206, 2207, 2211, 86, 86, 2208, 86, 86, 86, + 2212, 2214, 86, 2220, 86, 86, 2222, 86, 2215, 86, + 86, 2219, 2216, 2213, 2221, 86, 2217, 86, 168, 2224, + 2228, 2230, 2225, 2226, 2218, 2229, 86, 86, 2223, 2231, - 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86, - 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239, - 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237, - 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248, - 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255, - 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86, - 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265, - 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269, - 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273, - 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274, + 86, 86, 86, 2232, 86, 86, 2235, 86, 86, 2233, + 2227, 86, 2236, 2239, 2240, 86, 86, 2241, 86, 2244, + 2242, 2249, 2234, 86, 86, 86, 2237, 86, 2245, 86, + 2246, 2247, 86, 86, 86, 86, 2243, 2238, 2248, 2250, + 86, 86, 86, 86, 2251, 2252, 86, 2255, 86, 86, + 86, 86, 86, 2258, 2253, 86, 2262, 2264, 86, 86, + 86, 2257, 86, 2265, 86, 2254, 2256, 2259, 2260, 2267, + 2261, 86, 86, 86, 86, 2266, 86, 2263, 86, 2272, + 2275, 86, 86, 86, 2270, 86, 86, 86, 2268, 2269, + 2276, 2273, 2271, 86, 2274, 86, 86, 86, 86, 86, - 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288, - 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289, - 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296, - 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298, - 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305, - 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86, - 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317, - 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321, - 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86, - 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323, + 86, 86, 2277, 2291, 2278, 2287, 2289, 86, 2283, 2279, + 86, 2280, 2281, 2285, 2286, 86, 2282, 2288, 2284, 86, + 86, 86, 86, 2292, 2290, 86, 2295, 2296, 86, 2297, + 86, 86, 86, 2300, 2293, 2294, 2298, 86, 2303, 86, + 2304, 86, 86, 86, 2299, 86, 2301, 2305, 2306, 2302, + 86, 86, 2310, 86, 2311, 86, 86, 2313, 86, 86, + 2315, 86, 86, 2309, 86, 2307, 86, 2317, 2318, 86, + 2308, 2319, 86, 86, 86, 2312, 86, 2314, 86, 2316, + 2320, 86, 2321, 2324, 2325, 86, 2327, 86, 2322, 86, + 86, 86, 86, 2331, 2330, 2323, 2329, 2333, 86, 86, - 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86, - 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86, - 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86, - 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86, - 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86, - 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361, - 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359, - 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370, - 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377, - 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86, + 2326, 86, 86, 2337, 86, 86, 86, 2328, 2332, 86, + 86, 2342, 86, 86, 2341, 86, 2335, 86, 2334, 86, + 2344, 2336, 86, 86, 2340, 2338, 2347, 86, 86, 2339, + 86, 2350, 2343, 86, 2345, 2349, 86, 2346, 86, 2354, + 86, 86, 86, 2348, 2356, 86, 86, 86, 2351, 2355, + 2357, 2352, 86, 2360, 86, 86, 86, 2361, 86, 2362, + 86, 86, 2353, 2366, 86, 2358, 2368, 2359, 2364, 2369, + 2363, 86, 2367, 2371, 2373, 2370, 86, 2365, 86, 86, + 86, 2374, 86, 2375, 86, 86, 86, 86, 2378, 86, + 86, 86, 2372, 86, 2384, 2379, 2380, 2377, 2381, 2382, - 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390, - 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387, - 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397, - 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86, - 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414, - 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86, - 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86, - 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427, - 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86, + 86, 86, 2385, 86, 168, 2383, 86, 2376, 86, 2393, + 2386, 2390, 2388, 2387, 86, 2389, 86, 86, 86, 2391, + 86, 2394, 86, 2395, 2398, 86, 86, 2392, 86, 86, + 86, 86, 2396, 86, 86, 2400, 2397, 2399, 86, 2406, + 2401, 2405, 2404, 86, 3255, 2402, 2403, 2409, 86, 86, + 2410, 2411, 86, 2407, 86, 2408, 86, 2412, 2414, 2415, + 86, 2413, 2417, 86, 86, 86, 86, 86, 2419, 2416, + 86, 86, 86, 86, 2423, 2424, 86, 86, 86, 3255, + 2418, 86, 2420, 2426, 86, 2421, 86, 86, 2427, 2428, + 2425, 2422, 2429, 86, 86, 86, 2431, 2433, 86, 2430, - 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86, - 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86, - 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449, - 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448, - 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457, - 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86, - 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86, - 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86, - 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478, - 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484, + 2435, 86, 2434, 86, 2432, 86, 86, 86, 86, 86, + 2437, 86, 86, 2441, 2444, 86, 2436, 2443, 86, 86, + 86, 2445, 2440, 86, 86, 86, 2438, 2439, 2448, 86, + 86, 2442, 86, 2453, 2452, 86, 2446, 2450, 2447, 86, + 2454, 86, 86, 2455, 86, 2449, 2451, 86, 2457, 2456, + 86, 86, 2460, 2458, 86, 2462, 2463, 86, 2461, 2464, + 86, 86, 2466, 86, 86, 86, 2465, 86, 2459, 86, + 86, 86, 86, 86, 2470, 86, 2472, 2473, 3255, 2468, + 2474, 86, 2467, 2469, 2475, 86, 2476, 86, 2477, 2478, + 86, 86, 86, 86, 86, 2480, 2471, 2479, 2483, 86, - 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86, - 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488, - 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86, - 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86, - 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86, - 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513, - 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86, - 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86, - 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520, - 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532, + 2485, 86, 86, 2484, 86, 2482, 86, 2488, 86, 86, + 2481, 86, 2489, 86, 2492, 2493, 86, 2487, 86, 2486, + 86, 86, 86, 2490, 86, 2494, 2498, 2497, 86, 2491, + 2496, 86, 86, 86, 86, 86, 2495, 86, 2502, 86, + 2504, 2616, 2499, 86, 2501, 2500, 2505, 86, 2506, 86, + 2507, 86, 2508, 86, 2503, 2509, 86, 2510, 86, 2512, + 86, 2511, 86, 2513, 86, 86, 86, 2518, 86, 86, + 2520, 86, 2514, 2521, 86, 86, 2515, 86, 86, 86, + 86, 86, 2517, 86, 86, 2516, 2522, 2524, 2519, 2523, + 2525, 86, 2530, 86, 86, 86, 2527, 86, 86, 2526, - 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535, - 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86, - 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86, - 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545, - 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557, - 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86, - 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86, - 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573, - 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86, - 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586, + 168, 2528, 86, 2529, 2531, 86, 2538, 86, 86, 86, + 2532, 2534, 2537, 86, 2533, 86, 2536, 2539, 86, 86, + 86, 2535, 2540, 2545, 2541, 86, 3255, 86, 2549, 86, + 2547, 2542, 2548, 2546, 2550, 86, 86, 2543, 86, 2551, + 86, 2544, 86, 2552, 86, 2553, 86, 86, 86, 86, + 86, 2555, 86, 86, 2554, 86, 86, 86, 2564, 3255, + 86, 2562, 2557, 86, 86, 2556, 86, 2559, 2558, 86, + 2568, 86, 2560, 2561, 86, 2563, 86, 2565, 2566, 2569, + 86, 2567, 86, 2572, 2576, 2570, 2571, 2573, 86, 2575, + 86, 2574, 86, 86, 2577, 86, 86, 86, 86, 2578, - 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582, - 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86, - 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599, - 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597, - 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86, - 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86, - 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611, - 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618, - 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86, - 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86, + 86, 2584, 86, 2585, 86, 86, 2588, 86, 2579, 2589, + 86, 2587, 2590, 2580, 2581, 2586, 2582, 2583, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 2594, 2598, 86, + 2597, 2599, 86, 86, 86, 2592, 2600, 2591, 2601, 86, + 2593, 86, 2603, 2595, 2596, 86, 86, 86, 2602, 86, + 86, 86, 2607, 86, 86, 86, 86, 2605, 2611, 86, + 2604, 2612, 86, 2615, 86, 2613, 2606, 2619, 86, 2608, + 2609, 2617, 2614, 2610, 86, 86, 86, 86, 2618, 2622, + 2624, 86, 86, 86, 86, 86, 2628, 86, 2620, 2627, + 86, 2621, 2626, 86, 2625, 2630, 86, 2623, 2631, 2632, - 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639, - 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86, - 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86, - 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252, - 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86, - 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86, - 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86, - 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670, - 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86, - 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86, + 86, 86, 86, 2629, 2635, 86, 86, 2636, 2638, 86, + 86, 86, 86, 2634, 2643, 86, 2633, 86, 86, 86, + 2641, 2645, 86, 2639, 2637, 2640, 2642, 86, 86, 86, + 86, 86, 2646, 2644, 2647, 2649, 86, 86, 2651, 2650, + 86, 86, 2648, 86, 86, 2652, 2655, 3255, 2653, 2656, + 2658, 86, 2654, 2659, 86, 2660, 168, 86, 2657, 86, + 86, 86, 2665, 86, 2661, 2662, 86, 86, 86, 86, + 2667, 2666, 2669, 2670, 86, 2671, 86, 2663, 2668, 2664, + 86, 2673, 86, 86, 2675, 86, 2674, 86, 2680, 2676, + 86, 86, 2677, 2672, 86, 86, 2678, 86, 86, 2679, - 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688, - 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86, - 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86, - 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704, - 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86, - 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711, - 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707, - 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723, - 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86, - 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86, + 2682, 2681, 86, 86, 86, 86, 2687, 2683, 2688, 86, + 2689, 2685, 86, 86, 86, 86, 86, 2684, 86, 2693, + 2691, 2690, 86, 2692, 86, 2686, 86, 2694, 86, 2695, + 86, 2696, 2703, 86, 86, 2701, 86, 86, 86, 2699, + 2697, 2698, 2700, 2704, 86, 2702, 86, 86, 86, 2708, + 86, 86, 86, 86, 2712, 86, 2710, 86, 86, 86, + 86, 2717, 86, 2705, 2716, 3255, 2706, 2707, 2711, 2719, + 2709, 2713, 2714, 2720, 2721, 86, 2722, 86, 2715, 86, + 86, 86, 86, 86, 2718, 86, 86, 2724, 86, 2723, + 2727, 86, 2725, 86, 2730, 86, 2732, 86, 2726, 2733, - 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86, - 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739, - 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86, - 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86, - 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86, - 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86, - 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86, - 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86, - 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775, - 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780, + 86, 86, 2728, 2734, 86, 2735, 2729, 86, 2737, 86, + 86, 86, 2736, 2731, 86, 2741, 2739, 86, 86, 2744, + 2742, 86, 2745, 86, 2746, 86, 2740, 86, 86, 86, + 2738, 2747, 86, 2751, 86, 86, 2752, 2743, 2753, 86, + 2748, 86, 2755, 86, 86, 86, 86, 2749, 2759, 2760, + 86, 86, 2750, 2762, 86, 2761, 2754, 2756, 2763, 86, + 2758, 86, 86, 2757, 86, 86, 2768, 86, 86, 86, + 2767, 86, 86, 2770, 2771, 86, 2772, 86, 86, 86, + 2774, 86, 2765, 86, 2764, 2766, 2773, 86, 86, 2777, + 2776, 86, 2769, 2775, 86, 2783, 2778, 2779, 86, 2780, - 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86, - 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793, - 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86, - 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801, - 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86, - 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805, - 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817, - 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823, - 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827, - 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828, + 86, 2781, 2784, 86, 86, 86, 86, 2786, 86, 2796, + 86, 2782, 2785, 2791, 2788, 2787, 2790, 2793, 2792, 86, + 86, 2797, 2794, 86, 2789, 2795, 86, 2798, 86, 2799, + 86, 2800, 86, 86, 86, 86, 86, 86, 2802, 86, + 86, 3255, 2806, 86, 2810, 86, 86, 86, 2801, 2807, + 2811, 2813, 86, 86, 2803, 2805, 2815, 86, 86, 2808, + 2814, 2804, 86, 2809, 2812, 2817, 86, 2816, 86, 86, + 86, 2822, 86, 86, 86, 86, 2821, 2818, 2819, 2820, + 86, 2826, 2824, 86, 2823, 86, 2827, 86, 2828, 2825, + 86, 86, 2829, 86, 2830, 86, 2831, 2832, 86, 2833, - 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842, - 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846, - 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86, - 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86, - 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856, - 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86, - 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86, - 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86, - 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86, - 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876, + 86, 86, 86, 86, 86, 86, 2842, 2834, 86, 86, + 2835, 2837, 86, 2836, 2840, 2838, 86, 86, 86, 2847, + 2843, 2845, 2846, 86, 2841, 86, 2839, 86, 86, 86, + 2844, 3113, 2848, 2849, 86, 2850, 2852, 86, 2851, 2853, + 86, 2854, 86, 86, 86, 2856, 2857, 2859, 86, 2858, + 86, 86, 2855, 86, 86, 2860, 2861, 2862, 86, 86, + 86, 86, 2868, 86, 86, 2866, 2863, 86, 86, 2870, + 86, 2864, 86, 86, 86, 2865, 2871, 86, 2872, 2867, + 86, 2874, 2873, 2875, 86, 2879, 86, 2878, 2869, 2876, + 86, 86, 86, 86, 86, 86, 2882, 86, 86, 2877, - 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86, - 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86, - 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900, - 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898, - 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86, - 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914, - 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915, - 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927, - 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922, - 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936, + 86, 86, 2883, 2880, 2881, 2886, 2887, 2888, 86, 86, + 2884, 2891, 86, 86, 2885, 2893, 86, 86, 2889, 2894, + 86, 2896, 86, 86, 86, 86, 2901, 86, 2892, 2897, + 2900, 86, 86, 86, 2890, 86, 2905, 86, 2895, 2898, + 2899, 86, 86, 2908, 86, 86, 86, 2910, 2913, 86, + 2911, 2902, 2904, 86, 86, 2903, 2906, 2909, 2914, 86, + 2907, 2916, 86, 86, 86, 86, 86, 2921, 2912, 86, + 86, 86, 2919, 86, 2915, 2918, 2925, 86, 2923, 86, + 86, 2917, 2926, 86, 2927, 2920, 86, 2930, 2922, 2932, + 2924, 2929, 2928, 86, 2931, 86, 2933, 86, 86, 2936, - 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934, - 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86, - 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946, - 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945, - 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954, - 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963, - 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86, - 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966, - 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979, - 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86, + 86, 86, 86, 2935, 86, 2939, 2937, 86, 2942, 86, + 86, 86, 86, 86, 86, 2934, 2947, 86, 86, 86, + 86, 86, 2943, 2938, 2940, 2941, 2953, 2946, 86, 2950, + 2944, 2951, 86, 2952, 86, 2949, 86, 2948, 2945, 2956, + 86, 2955, 2954, 2957, 86, 2958, 86, 86, 2960, 86, + 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2967, + 2968, 86, 86, 86, 86, 86, 2972, 86, 2963, 2973, + 86, 2974, 86, 2959, 2971, 2964, 2969, 86, 2965, 2966, + 86, 2978, 86, 2970, 2975, 2977, 2979, 86, 86, 86, + 2982, 2976, 86, 2980, 86, 86, 86, 2985, 86, 86, - 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86, - 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86, - 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001, - 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004, - 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009, - 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86, - 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019, - 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86, - 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032, - 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86, + 2986, 86, 2984, 2981, 2983, 86, 86, 86, 86, 86, + 2989, 86, 86, 2991, 86, 86, 2992, 86, 2990, 2987, + 86, 2988, 86, 86, 86, 86, 3255, 3001, 2993, 3002, + 2997, 2994, 2995, 2996, 2998, 2999, 3004, 86, 86, 86, + 3007, 3000, 86, 3003, 3005, 3006, 3009, 86, 3010, 86, + 86, 3008, 86, 86, 3011, 3014, 86, 3012, 3015, 86, + 3016, 3017, 86, 86, 3018, 3019, 3022, 86, 3020, 3021, + 86, 86, 3013, 3023, 86, 86, 86, 86, 86, 3029, + 86, 86, 86, 3028, 86, 86, 3032, 86, 3024, 3025, + 86, 3031, 86, 3255, 3033, 86, 3026, 3027, 86, 3037, - 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035, - 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86, - 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054, - 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86, - 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059, - 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86, - 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, - 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86, - 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077, - 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86, + 86, 3036, 3034, 3038, 86, 86, 3030, 86, 3035, 3039, + 86, 86, 3041, 3044, 3042, 3040, 3046, 3043, 3045, 86, + 3047, 86, 86, 86, 86, 86, 3048, 3054, 3050, 3051, + 3053, 86, 86, 86, 3056, 86, 3057, 86, 3055, 86, + 86, 86, 3049, 3255, 3052, 3059, 3060, 86, 3061, 86, + 3062, 3063, 86, 86, 3058, 3064, 86, 3065, 86, 3066, + 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, 86, + 86, 86, 86, 3074, 3076, 86, 3070, 86, 86, 3072, + 86, 86, 3080, 3073, 86, 3082, 86, 86, 86, 86, + 3079, 3075, 3077, 3078, 86, 86, 3086, 3084, 86, 3081, - 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091, - 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86, - 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86, - 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86, - 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111, - 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86, - 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86, - 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86, - 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86, - 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128, + 3089, 3088, 86, 86, 86, 3083, 86, 3087, 3091, 86, + 86, 86, 86, 86, 3085, 86, 3090, 3095, 86, 3097, + 86, 3096, 86, 3092, 86, 3100, 3094, 3093, 3098, 3102, + 86, 3103, 86, 3101, 3104, 86, 86, 86, 86, 86, + 86, 3107, 86, 86, 3099, 3106, 86, 3105, 86, 3115, + 86, 3112, 86, 3109, 3111, 86, 86, 3114, 3108, 86, + 86, 86, 86, 3110, 86, 3116, 86, 86, 86, 3117, + 3122, 3124, 3119, 3118, 3123, 3121, 86, 86, 86, 3131, + 86, 3126, 3128, 86, 3120, 3125, 86, 3127, 3130, 3133, + 86, 86, 3129, 86, 3134, 3132, 3135, 86, 3136, 86, - 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86, - 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148, - 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140, - 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86, - 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86, - 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162, - 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166, - 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173, - 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86, - 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86, + 86, 86, 3137, 3139, 86, 86, 3140, 86, 3144, 3141, + 86, 3138, 86, 86, 86, 3148, 86, 3147, 86, 3150, + 86, 86, 3143, 86, 3145, 3146, 3151, 86, 3154, 86, + 3142, 86, 86, 3157, 86, 86, 3152, 86, 3149, 86, + 3158, 3161, 3153, 3159, 86, 3162, 3155, 86, 86, 86, + 3156, 86, 86, 3167, 86, 86, 3160, 3166, 3163, 3168, + 86, 3164, 86, 86, 86, 86, 86, 86, 3165, 3172, + 86, 3174, 86, 86, 86, 86, 3169, 3171, 86, 3179, + 3180, 86, 3170, 3176, 3173, 3177, 3175, 3181, 86, 86, + 3185, 86, 3178, 86, 3188, 86, 3187, 86, 3182, 3183, - 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86, - 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86, - 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202, - 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206, - 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86, - 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212, - 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86, - 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225, - 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86, - 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227, + 3186, 86, 86, 86, 86, 86, 3189, 3193, 3184, 3190, + 3191, 3194, 86, 86, 86, 86, 3192, 3196, 86, 3195, + 86, 86, 3198, 86, 3197, 3202, 86, 86, 3199, 86, + 3205, 86, 3206, 86, 3200, 86, 86, 86, 86, 86, + 3204, 3209, 3201, 86, 3207, 3203, 86, 3208, 86, 3213, + 86, 3214, 3212, 86, 3217, 86, 3210, 3211, 86, 3219, + 86, 3220, 86, 3215, 86, 86, 86, 3221, 3226, 3216, + 86, 3222, 3224, 86, 3218, 3225, 3227, 86, 86, 86, + 86, 86, 86, 86, 3223, 3228, 3229, 3231, 3233, 86, + 86, 86, 86, 86, 86, 3235, 3236, 86, 3239, 3230, - 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86, - 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86, - 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86, - 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89, + 3232, 86, 3234, 3240, 86, 86, 3243, 3244, 86, 86, + 86, 3237, 3238, 3241, 3246, 86, 3245, 3247, 86, 86, + 3242, 86, 86, 86, 3253, 86, 3248, 3249, 3250, 3251, + 3254, 86, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3252, 47, 47, 47, 47, 47, 47, 47, 52, 52, + 52, 52, 52, 52, 52, 57, 57, 57, 57, 57, + 57, 57, 63, 63, 63, 63, 63, 63, 63, 68, + 68, 68, 68, 68, 68, 68, 74, 74, 74, 74, + 74, 74, 74, 80, 80, 80, 80, 80, 80, 80, + 89, 89, 3255, 89, 89, 89, 89, 158, 158, 3255, - 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160, - 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252, - 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167, - 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169, - 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172, - 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252, - 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3255, 3255, 158, 158, 160, 160, 3255, 3255, 160, 3255, + 160, 162, 3255, 3255, 3255, 3255, 3255, 162, 165, 165, + 3255, 3255, 3255, 165, 165, 167, 3255, 3255, 3255, 3255, + 3255, 167, 169, 169, 3255, 169, 169, 169, 169, 172, + 3255, 3255, 3255, 3255, 3255, 172, 175, 175, 3255, 3255, + 3255, 175, 175, 90, 90, 3255, 90, 90, 90, 90, + 17, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, - 3252, 3252, 3252, 3252, 3252 + 3255 } ; -static const flex_int16_t yy_chk[6406] = +static const flex_int16_t yy_chk[6402] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2210,14 +2212,14 @@ static const flex_int16_t yy_chk[6406] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3260, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3263, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2661, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2660, 16, 25, 46, 27, 30, 30, 25, 27, 56, 40, 27, 56, 73, 31, 31, 25, 28, 67, 67, 30, 32, 28, 31, 40, 32, 28, 73, 32, 28, 92, 28, @@ -2594,319 +2596,319 @@ static const flex_int16_t yy_chk[6406] = 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713, 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715, 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708, - 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727, - 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725, - 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730, + 1713, 1716, 1717, 1718, 1719, 1720, 1719, 1724, 1715, 1721, + 1721, 1722, 1722, 1723, 1723, 1725, 1725, 1727, 1717, 1720, + 1716, 1720, 1728, 1718, 1726, 1726, 1730, 1724, 1729, 1729, - 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732, - 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740, - 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744, - 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740, - 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754, - 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760, - 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761, - 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770, - 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779, - 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781, + 1730, 1731, 1732, 1734, 1735, 1732, 1736, 1731, 1727, 1734, + 1737, 1738, 1736, 1728, 1738, 1739, 1739, 1740, 1741, 1742, + 1742, 1743, 1735, 1741, 1744, 1745, 1745, 1746, 1747, 1744, + 0, 1748, 1746, 1749, 1747, 1737, 1750, 1740, 1752, 1757, + 1751, 1757, 1743, 1748, 1748, 1748, 1751, 1755, 1756, 1754, + 1748, 1758, 1759, 1749, 1754, 1754, 1750, 1761, 1752, 1760, + 1762, 1755, 1758, 1756, 1763, 1760, 1761, 1759, 1764, 1764, + 1765, 1766, 1766, 1767, 1771, 1768, 1769, 1769, 1770, 1770, + 1762, 1774, 1774, 1775, 1779, 1763, 1776, 1781, 1781, 1778, + 1782, 1786, 1783, 1767, 1771, 1776, 1765, 1768, 1778, 1788, - 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791, - 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786, - 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788, - 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803, - 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813, - 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816, - 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813, - 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823, - 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830, - 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835, + 1780, 1785, 1784, 1787, 1787, 1779, 1780, 1783, 1775, 1784, + 1785, 1782, 1789, 1791, 1792, 1793, 1794, 1786, 1791, 1800, + 1792, 1795, 1801, 1794, 1796, 1788, 1802, 1795, 1789, 1798, + 1796, 1797, 1797, 1799, 1798, 1793, 1804, 1803, 1802, 1800, + 1803, 1801, 1799, 1805, 1806, 1806, 1807, 1808, 1809, 1810, + 1813, 1811, 1807, 1808, 1804, 1811, 1814, 1815, 1816, 1816, + 1817, 1818, 1815, 1820, 1810, 1823, 1822, 1828, 1809, 1805, + 1813, 1811, 1822, 1821, 1823, 1826, 1818, 1821, 1814, 1817, + 1824, 1824, 1820, 1825, 1827, 1827, 1826, 1825, 1828, 1829, + 1830, 1826, 1831, 1832, 1833, 1834, 1835, 1831, 1839, 1836, - 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841, - 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846, - 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851, - 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858, - 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859, - 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873, - 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872, - 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873, - 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880, - 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888, + 1843, 1834, 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1830, + 1841, 1835, 1842, 1832, 1833, 1844, 1844, 1846, 1846, 1841, + 1843, 1847, 1850, 1842, 1848, 1849, 1847, 1847, 1842, 1851, + 1848, 1849, 1852, 1853, 1851, 1855, 1856, 1857, 1858, 1853, + 1856, 1863, 1860, 1866, 1852, 1859, 1861, 1855, 1850, 1857, + 1862, 1859, 1861, 1863, 1865, 1862, 1867, 1869, 1870, 1870, + 1869, 1867, 1866, 1858, 1860, 1873, 1865, 1871, 1871, 1872, + 1872, 1874, 1875, 1878, 1876, 1877, 0, 1874, 1875, 1876, + 1883, 1877, 1878, 1880, 1882, 1873, 1886, 1882, 1880, 1884, + 1884, 1887, 1883, 1890, 1888, 1889, 1889, 1895, 1886, 1888, - 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894, - 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902, - 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897, - 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907, - 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919, - 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927, - 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922, - 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937, - 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939, - 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943, + 1891, 1892, 1890, 1887, 1893, 1891, 1892, 1893, 1894, 1894, + 1896, 1897, 1898, 1905, 1899, 1900, 1901, 1895, 1899, 1896, + 1900, 1902, 1901, 1903, 1904, 1907, 1907, 1905, 1908, 1897, + 1910, 1898, 1903, 1913, 1909, 1911, 1911, 1907, 1912, 1902, + 1914, 1916, 1904, 1909, 1915, 1913, 1908, 1912, 1922, 1915, + 1910, 1919, 1919, 1921, 1916, 1923, 1921, 1925, 1928, 1926, + 1927, 1914, 1929, 1929, 1922, 1930, 1927, 1930, 1931, 1931, + 1932, 1923, 1925, 1926, 1940, 1928, 1934, 1934, 1932, 1935, + 1935, 1937, 1938, 1939, 1941, 1942, 1942, 1937, 1938, 1943, + 1939, 1944, 1948, 1945, 1946, 1947, 1940, 1950, 1943, 1949, - 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955, - 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958, - 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964, - 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966, - 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976, - 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974, - 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989, - 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988, - 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992, - 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002, + 1952, 1953, 1957, 1950, 1941, 1945, 1946, 1947, 1956, 1954, + 1955, 1955, 1944, 1960, 1949, 1963, 1950, 1963, 1948, 1964, + 1952, 1954, 1957, 1970, 1953, 1958, 1956, 1959, 1958, 1962, + 1965, 1966, 1959, 1960, 1962, 1965, 1968, 1964, 1966, 1971, + 1972, 1970, 1973, 1974, 1973, 1968, 1977, 1976, 1971, 1976, + 1978, 1978, 1972, 1979, 1980, 1981, 1982, 1981, 1983, 1980, + 1977, 1982, 1974, 1983, 1984, 1985, 1986, 1988, 1987, 1989, + 1991, 1995, 1986, 1987, 1992, 1993, 1993, 1989, 1996, 1979, + 1988, 1997, 1984, 1994, 1994, 1985, 1995, 1997, 1992, 1991, + 1998, 1999, 2000, 1999, 2003, 1998, 2001, 2008, 1996, 2002, - 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003, - 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017, - 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014, - 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019, - 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029, - 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032, - 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045, - 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048, - 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051, - 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054, + 2002, 2004, 2004, 2012, 2001, 2006, 2003, 2005, 2005, 2010, + 2000, 2007, 2001, 2014, 2006, 2008, 2007, 2011, 2010, 2011, + 2013, 2010, 2014, 2015, 2012, 2013, 2013, 2017, 2018, 2019, + 2021, 2022, 2023, 2018, 2019, 2015, 2024, 2024, 2025, 2017, + 2026, 2023, 2029, 2021, 2027, 2028, 2033, 2034, 2035, 2031, + 2032, 2022, 2034, 2035, 2036, 2042, 2025, 2029, 2026, 2028, + 2027, 2031, 2032, 2036, 2039, 2041, 2033, 2043, 2044, 2045, + 2039, 2041, 2046, 2047, 2047, 2048, 2049, 2049, 2042, 2050, + 2053, 2046, 2043, 2039, 2048, 2051, 2044, 2052, 2054, 2051, + 2055, 2056, 2052, 2053, 2045, 2055, 2055, 2056, 2050, 2057, - 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063, - 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065, - 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064, - 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074, - 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083, - 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092, - 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093, - 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097, - 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101, - 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102, + 2058, 2059, 2060, 2058, 2065, 2057, 2063, 2063, 2068, 2059, + 2054, 2064, 2064, 2065, 2066, 2066, 2067, 2067, 2069, 2070, + 2068, 2075, 2060, 2071, 2078, 2070, 2064, 2075, 2071, 2072, + 2072, 2073, 2073, 2074, 2080, 2077, 2069, 2064, 2074, 2077, + 2082, 2079, 2083, 2084, 2078, 2079, 2085, 2083, 2086, 2087, + 2089, 2090, 2088, 2086, 2080, 2091, 2090, 2092, 2092, 2093, + 2094, 2085, 2096, 2093, 2095, 2082, 2084, 2087, 2088, 2095, + 2089, 2097, 2098, 2099, 2100, 2094, 2102, 2091, 2101, 2100, + 2103, 2103, 2105, 2106, 2098, 2107, 2108, 2109, 2096, 2097, + 2105, 2101, 2099, 2110, 2102, 2111, 2112, 2113, 2115, 2118, - 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119, - 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120, - 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127, - 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129, - 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135, - 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142, - 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148, - 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152, - 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160, - 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154, + 2122, 2117, 2106, 2122, 2107, 2118, 2120, 2120, 2112, 2108, + 2123, 2109, 2110, 2115, 2117, 2119, 2111, 2119, 2113, 2121, + 2124, 2129, 2125, 2123, 2121, 2126, 2126, 2127, 2127, 2128, + 2128, 2130, 2131, 2131, 2124, 2125, 2129, 2132, 2133, 2133, + 2134, 2134, 2135, 2137, 2130, 2138, 2132, 2135, 2137, 2132, + 2139, 2140, 2141, 2141, 2142, 2142, 2143, 2144, 2144, 2145, + 2146, 2146, 2148, 2140, 2147, 2138, 2151, 2148, 2149, 2149, + 2139, 2150, 2150, 2152, 2153, 2143, 2154, 2145, 2156, 2147, + 2151, 2158, 2152, 2156, 2157, 2157, 2159, 2159, 2153, 2160, + 2161, 2162, 2163, 2163, 2162, 2154, 2161, 2164, 2164, 2165, - 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172, - 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177, - 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183, - 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187, - 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190, - 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193, - 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190, - 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203, - 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210, - 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221, + 2158, 2166, 2167, 2168, 2168, 2170, 2171, 2160, 2163, 2172, + 2173, 2174, 2174, 2175, 2173, 2176, 2166, 2183, 2165, 2177, + 2176, 2167, 2178, 2181, 2172, 2170, 2180, 2180, 2182, 2171, + 2184, 2183, 2175, 2185, 2177, 2182, 2186, 2178, 2187, 2187, + 2188, 2192, 2189, 2181, 2189, 2195, 2199, 2190, 2184, 2188, + 2190, 2185, 2193, 2192, 2194, 2196, 2197, 2193, 2198, 2194, + 2203, 2201, 2186, 2198, 2202, 2190, 2201, 2190, 2196, 2202, + 2195, 2205, 2199, 2204, 2206, 2203, 2207, 2197, 2208, 2204, + 2206, 2207, 2209, 2208, 2210, 2211, 2212, 2213, 2211, 2214, + 2215, 2216, 2205, 2221, 2217, 2212, 2213, 2210, 2214, 2215, - 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225, - 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221, - 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238, - 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231, - 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245, - 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251, - 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254, - 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266, - 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265, - 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272, + 2217, 2228, 2218, 2223, 2227, 2216, 2219, 2209, 2218, 2227, + 2219, 2225, 2223, 2221, 2224, 2224, 2230, 2225, 2226, 2226, + 2231, 2228, 2233, 2228, 2232, 2232, 2234, 2226, 2236, 2237, + 2239, 2238, 2230, 2243, 2242, 2234, 2231, 2233, 2241, 2242, + 2236, 2241, 2239, 2244, 0, 2237, 2238, 2245, 2245, 2246, + 2246, 2248, 2248, 2243, 2249, 2244, 2250, 2249, 2251, 2252, + 2253, 2250, 2254, 2254, 2251, 2252, 2255, 2256, 2256, 2253, + 2257, 2258, 2259, 2260, 2260, 2261, 2262, 2271, 2263, 0, + 2255, 2261, 2257, 2263, 2265, 2258, 2266, 2269, 2265, 2266, + 2262, 2259, 2267, 2267, 2268, 2270, 2269, 2271, 2272, 2268, - 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279, - 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285, - 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287, - 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286, - 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298, - 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307, - 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320, - 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330, - 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329, - 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336, + 2273, 2273, 2272, 2274, 2270, 2276, 2277, 2278, 2279, 2280, + 2276, 2281, 2282, 2280, 2283, 2284, 2274, 2282, 2285, 2286, + 2283, 2284, 2279, 2287, 2288, 2290, 2277, 2278, 2287, 2292, + 2291, 2281, 2294, 2293, 2292, 2298, 2285, 2290, 2286, 2293, + 2294, 2295, 2301, 2295, 2307, 2288, 2291, 2299, 2299, 2298, + 2300, 2302, 2302, 2300, 2305, 2306, 2307, 2309, 2305, 2308, + 2308, 2306, 2312, 2312, 2314, 2316, 2309, 2317, 2301, 2320, + 2321, 2322, 2323, 2330, 2320, 2331, 2322, 2323, 0, 2316, + 2324, 2324, 2314, 2317, 2326, 2326, 2328, 2329, 2329, 2330, + 2332, 2334, 2328, 2335, 2338, 2332, 2321, 2331, 2336, 2336, - 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346, - 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341, - 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354, - 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366, - 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362, - 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368, - 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374, - 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381, - 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375, - 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387, + 2339, 2340, 2341, 2338, 2345, 2335, 2339, 2343, 2343, 2344, + 2334, 2346, 2344, 2348, 2348, 2349, 2349, 2341, 2351, 2340, + 2350, 2352, 2353, 2345, 2354, 2350, 2354, 2353, 2355, 2346, + 2352, 2356, 2357, 2358, 2359, 2360, 2351, 2482, 2358, 2366, + 2360, 2482, 2355, 2365, 2357, 2356, 2361, 2361, 2362, 2362, + 2363, 2363, 2364, 2364, 2359, 2365, 2367, 2366, 2368, 2368, + 2370, 2367, 2369, 2369, 2371, 2372, 2373, 2374, 2374, 2375, + 2376, 2376, 2370, 2377, 2377, 2378, 2371, 2379, 2381, 2382, + 2380, 2384, 2373, 2385, 2388, 2372, 2378, 2380, 2375, 2379, + 2381, 2383, 2386, 2386, 2389, 2387, 2383, 2391, 2390, 2382, - 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390, - 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406, - 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405, - 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401, - 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415, - 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431, - 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430, - 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434, - 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442, - 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448, + 2393, 2384, 2392, 2385, 2387, 2394, 2394, 2396, 2395, 2397, + 2388, 2390, 2393, 2399, 2389, 2400, 2392, 2395, 2401, 2403, + 2402, 2391, 2396, 2402, 2397, 2404, 0, 2405, 2406, 2406, + 2404, 2399, 2405, 2403, 2407, 2407, 2413, 2400, 2408, 2408, + 2414, 2401, 2410, 2410, 2412, 2412, 2415, 2416, 2418, 2419, + 2420, 2414, 2422, 2421, 2413, 2423, 2424, 2425, 2424, 0, + 2426, 2422, 2416, 2427, 2432, 2415, 2438, 2419, 2418, 2428, + 2428, 2431, 2420, 2421, 2433, 2423, 2439, 2425, 2426, 2430, + 2430, 2427, 2436, 2433, 2438, 2431, 2432, 2434, 2434, 2437, + 2437, 2436, 2440, 2441, 2439, 2442, 2443, 2448, 2445, 2440, - 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444, - 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459, - 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461, - 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459, - 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477, - 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481, - 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477, - 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485, - 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499, - 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503, + 2444, 2446, 2446, 2447, 2447, 2449, 2450, 2450, 2441, 2451, + 2451, 2449, 2452, 2442, 2443, 2448, 2444, 2445, 2452, 2453, + 2454, 2455, 2456, 2457, 2458, 2459, 2460, 2456, 2460, 2465, + 2459, 2461, 2461, 2467, 2462, 2454, 2462, 2453, 2463, 2463, + 2455, 2468, 2467, 2457, 2458, 2469, 2470, 2471, 2465, 2472, + 2479, 2473, 2471, 2476, 2480, 2477, 2484, 2469, 2477, 2490, + 2468, 2478, 2478, 2481, 2481, 2479, 2470, 2486, 2486, 2472, + 2473, 2484, 2480, 2476, 2485, 2487, 2489, 2491, 2485, 2490, + 2492, 2492, 2494, 2495, 2498, 2496, 2497, 2497, 2487, 2496, + 2501, 2489, 2495, 2500, 2494, 2499, 2499, 2491, 2500, 2501, - 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512, - 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517, - 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524, - 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0, - 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535, - 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541, - 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545, - 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547, - 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556, - 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562, + 2502, 2503, 2510, 2498, 2504, 2504, 2509, 2509, 2511, 2511, + 2512, 2514, 2513, 2503, 2516, 2516, 2502, 2515, 2517, 2527, + 2514, 2519, 2519, 2512, 2510, 2513, 2515, 2522, 2524, 2523, + 2525, 2526, 2522, 2517, 2523, 2525, 2528, 2531, 2527, 2526, + 2529, 2532, 2524, 2534, 2533, 2528, 2532, 0, 2529, 2533, + 2535, 2535, 2531, 2536, 2536, 2537, 2537, 2538, 2534, 2540, + 2539, 2541, 2542, 2545, 2538, 2539, 2543, 2546, 2542, 2544, + 2544, 2543, 2546, 2547, 2547, 2548, 2548, 2540, 2545, 2541, + 2551, 2552, 2552, 2553, 2554, 2557, 2553, 2555, 2558, 2554, + 2554, 2556, 2555, 2551, 2558, 2560, 2556, 2559, 2561, 2557, - 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566, - 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571, - 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578, - 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587, - 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592, - 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596, - 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592, - 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610, - 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617, - 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632, + 2560, 2559, 2562, 2563, 2564, 2567, 2565, 2561, 2566, 2568, + 2567, 2563, 2565, 2570, 2566, 2574, 2572, 2562, 2571, 2572, + 2570, 2568, 2578, 2571, 2576, 2564, 2577, 2574, 2579, 2576, + 2580, 2577, 2586, 2581, 2582, 2582, 2583, 2587, 2586, 2580, + 2578, 2579, 2581, 2587, 2590, 2583, 2591, 2595, 2592, 2593, + 2593, 2594, 2598, 2596, 2597, 2597, 2595, 2600, 2602, 2605, + 2603, 2604, 2604, 2590, 2603, 0, 2591, 2592, 2596, 2606, + 2594, 2598, 2600, 2607, 2608, 2606, 2609, 2609, 2602, 2607, + 2608, 2610, 2611, 2613, 2605, 2614, 2616, 2611, 2617, 2610, + 2616, 2618, 2613, 2620, 2620, 2621, 2622, 2622, 2614, 2623, - 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627, - 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632, - 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640, - 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654, - 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652, - 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656, - 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666, - 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670, - 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676, - 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681, + 2623, 2626, 2617, 2625, 2625, 2626, 2618, 2627, 2629, 2629, + 2631, 2632, 2627, 2621, 2633, 2634, 2632, 2636, 2637, 2637, + 2634, 2634, 2639, 2639, 2640, 2640, 2633, 2642, 2641, 2644, + 2631, 2641, 2646, 2647, 2647, 2648, 2648, 2636, 2649, 2649, + 2642, 2650, 2651, 2651, 2652, 2653, 2654, 2644, 2655, 2656, + 2656, 2657, 2646, 2661, 2655, 2657, 2650, 2652, 2661, 2661, + 2654, 2662, 2663, 2653, 2665, 2664, 2666, 2667, 2677, 2668, + 2665, 2672, 2666, 2668, 2669, 2669, 2672, 2675, 2674, 2680, + 2675, 2684, 2663, 2682, 2662, 2664, 2674, 2678, 2679, 2679, + 2678, 2683, 2667, 2677, 2681, 2684, 2680, 2680, 2686, 2681, - 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691, - 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693, - 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697, - 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700, - 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710, - 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704, - 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719, - 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726, - 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729, - 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730, + 2688, 2682, 2685, 2685, 2687, 2689, 2693, 2687, 2690, 2694, + 2694, 2683, 2686, 2691, 2688, 2687, 2690, 2692, 2691, 2691, + 2695, 2695, 2692, 2692, 2689, 2693, 2696, 2696, 2697, 2697, + 2698, 2698, 2699, 2700, 2701, 2702, 2703, 2704, 2700, 2706, + 2705, 0, 2704, 2707, 2709, 2709, 2711, 2710, 2699, 2705, + 2710, 2713, 2713, 2714, 2701, 2703, 2715, 2715, 2723, 2706, + 2714, 2702, 2716, 2707, 2711, 2718, 2718, 2716, 2719, 2720, + 2721, 2724, 2724, 2726, 2727, 2729, 2723, 2719, 2720, 2721, + 2725, 2728, 2726, 2730, 2725, 2740, 2728, 2728, 2729, 2727, + 2731, 2735, 2730, 2739, 2731, 2741, 2735, 2736, 2736, 2738, - 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751, - 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758, - 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769, - 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765, - 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769, - 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778, - 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784, - 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790, - 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799, - 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791, + 2738, 2747, 2743, 2744, 2749, 2748, 2750, 2739, 2752, 2754, + 2740, 2743, 2750, 2741, 2748, 2744, 2756, 2757, 2758, 2758, + 2752, 2756, 2757, 2759, 2749, 2768, 2747, 2769, 2761, 3086, + 2754, 3086, 2759, 2761, 2762, 2762, 2764, 2764, 2762, 2765, + 2765, 2766, 2766, 2767, 2770, 2768, 2769, 2772, 2776, 2770, + 2773, 2774, 2767, 2772, 2778, 2773, 2774, 2775, 2775, 2777, + 2779, 2780, 2781, 2782, 2789, 2779, 2776, 2793, 2781, 2783, + 2783, 2777, 2785, 2786, 2790, 2778, 2785, 2787, 2786, 2780, + 2788, 2788, 2787, 2789, 2791, 2795, 2795, 2793, 2782, 2790, + 2797, 2798, 2799, 2800, 2801, 2802, 2799, 2803, 2805, 2791, - 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809, - 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814, - 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821, - 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819, - 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840, - 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839, - 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840, - 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851, - 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846, - 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864, + 2806, 2804, 2800, 2797, 2798, 2803, 2804, 2805, 2807, 2809, + 2801, 2808, 2808, 2818, 2802, 2811, 2811, 2814, 2806, 2812, + 2812, 2816, 2816, 2819, 2820, 2821, 2823, 2823, 2809, 2818, + 2821, 2824, 2825, 2826, 2807, 2828, 2828, 2834, 2814, 2819, + 2820, 2830, 2829, 2831, 2831, 2836, 2837, 2835, 2838, 2838, + 2836, 2824, 2826, 2835, 2840, 2825, 2829, 2834, 2839, 2839, + 2830, 2841, 2841, 2843, 2842, 2844, 2847, 2845, 2837, 2846, + 2848, 2856, 2843, 2845, 2840, 2842, 2849, 2849, 2847, 2850, + 2855, 2841, 2850, 2851, 2851, 2844, 2859, 2857, 2846, 2859, + 2848, 2856, 2855, 2857, 2858, 2858, 2860, 2861, 2863, 2864, - 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861, - 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877, - 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874, - 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873, - 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883, - 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895, - 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906, - 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899, - 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917, - 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923, + 2864, 2865, 2860, 2863, 2866, 2867, 2865, 2868, 2869, 2869, + 2871, 2867, 2872, 2873, 2874, 2861, 2875, 2875, 2876, 2877, + 2878, 2882, 2871, 2866, 2868, 2868, 2882, 2874, 2883, 2878, + 2872, 2880, 2880, 2881, 2881, 2877, 2884, 2876, 2873, 2885, + 2885, 2884, 2883, 2886, 2886, 2887, 2887, 2888, 2889, 2895, + 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2900, 2900, + 2902, 2902, 2903, 2904, 2910, 2905, 2906, 2906, 2895, 2907, + 2907, 2909, 2911, 2888, 2905, 2897, 2903, 2909, 2898, 2899, + 2912, 2915, 2915, 2904, 2910, 2912, 2917, 2917, 2918, 2919, + 2920, 2911, 2921, 2918, 2922, 2924, 2920, 2923, 2923, 2926, - 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930, - 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939, - 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941, - 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945, - 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953, - 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980, - 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965, - 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971, - 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982, - 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991, + 2924, 2927, 2922, 2919, 2921, 2928, 2929, 2930, 2932, 2933, + 2928, 2934, 2935, 2930, 2938, 2937, 2932, 2939, 2929, 2926, + 2940, 2927, 2941, 2944, 2943, 2948, 0, 2941, 2933, 2943, + 2938, 2934, 2935, 2937, 2939, 2939, 2945, 2949, 2950, 2946, + 2949, 2940, 2945, 2944, 2946, 2948, 2953, 2953, 2954, 2954, + 2955, 2950, 2959, 2960, 2955, 2961, 2961, 2959, 2963, 2963, + 2964, 2964, 2967, 2964, 2965, 2965, 2967, 2965, 2966, 2966, + 2970, 2966, 2960, 2969, 2969, 2971, 2974, 2975, 2976, 2977, + 2977, 2980, 2982, 2976, 2981, 2983, 2982, 2984, 2970, 2971, + 2986, 2981, 2987, 0, 2983, 2996, 2974, 2975, 2988, 2988, - 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986, - 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994, - 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003, - 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005, - 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008, - 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018, - 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, - 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031, - 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032, - 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046, + 2991, 2987, 2984, 2989, 2989, 2993, 2980, 2992, 2986, 2990, + 2990, 2997, 2992, 2994, 2993, 2991, 2995, 2993, 2994, 2994, + 2996, 2998, 2995, 2999, 3000, 3001, 2997, 3003, 2999, 3000, + 3002, 3002, 3004, 3003, 3005, 3005, 3006, 3006, 3004, 3007, + 3008, 3013, 2998, 0, 3001, 3008, 3011, 3011, 3012, 3012, + 3013, 3016, 3016, 3028, 3007, 3017, 3017, 3018, 3018, 3019, + 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, 3025, + 3026, 3027, 3030, 3028, 3031, 3031, 3024, 3032, 3034, 3026, + 3033, 3035, 3035, 3027, 3036, 3037, 3037, 3040, 3042, 3044, + 3034, 3030, 3032, 3033, 3041, 3043, 3043, 3041, 3046, 3036, - 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049, - 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070, - 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073, - 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083, - 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085, - 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093, - 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100, - 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105, - 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108, - 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105, + 3047, 3046, 3048, 3049, 3050, 3040, 3047, 3044, 3049, 3051, + 3052, 3054, 3055, 3059, 3042, 3058, 3048, 3054, 3062, 3058, + 3072, 3055, 3070, 3050, 3077, 3070, 3052, 3051, 3059, 3073, + 3073, 3074, 3074, 3072, 3075, 3075, 3078, 3079, 3080, 3081, + 3083, 3079, 3087, 3084, 3062, 3078, 3085, 3077, 3088, 3088, + 3090, 3085, 3089, 3081, 3084, 3091, 3092, 3087, 3080, 3093, + 3094, 3095, 3096, 3083, 3098, 3089, 3097, 3100, 3106, 3090, + 3095, 3097, 3092, 3091, 3096, 3094, 3099, 3101, 3105, 3107, + 3107, 3099, 3101, 3113, 3093, 3098, 3108, 3100, 3106, 3109, + 3109, 3114, 3105, 3110, 3110, 3108, 3111, 3111, 3112, 3112, - 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120, - 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125, - 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117, - 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141, - 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140, - 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143, - 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149, - 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158, - 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169, - 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173, + 3115, 3116, 3113, 3115, 3117, 3118, 3116, 3119, 3120, 3117, + 3121, 3114, 3123, 3122, 3120, 3124, 3124, 3123, 3125, 3126, + 3126, 3128, 3119, 3129, 3121, 3122, 3127, 3127, 3130, 3130, + 3118, 3132, 3134, 3137, 3137, 3139, 3128, 3140, 3125, 3138, + 3138, 3141, 3129, 3139, 3143, 3142, 3132, 3141, 3144, 3145, + 3134, 3142, 3146, 3147, 3147, 3152, 3140, 3146, 3143, 3149, + 3149, 3144, 3153, 3155, 3158, 3156, 3159, 3160, 3145, 3156, + 3161, 3159, 3162, 3163, 3164, 3165, 3152, 3155, 3169, 3164, + 3165, 3170, 3153, 3161, 3158, 3162, 3160, 3166, 3166, 3171, + 3172, 3172, 3163, 3175, 3175, 3173, 3174, 3179, 3169, 3170, - 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177, - 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187, - 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192, - 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196, - 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205, - 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202, - 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214, - 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216, - 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225, - 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218, + 3173, 3176, 3174, 3187, 3177, 3178, 3176, 3180, 3171, 3177, + 3178, 3182, 3182, 3180, 3183, 3189, 3179, 3184, 3184, 3183, + 3186, 3188, 3187, 3190, 3186, 3191, 3192, 3193, 3188, 3195, + 3195, 3191, 3197, 3197, 3189, 3198, 3199, 3200, 3201, 3202, + 3193, 3199, 3190, 3207, 3198, 3192, 3204, 3198, 3203, 3203, + 3205, 3204, 3202, 3208, 3208, 3209, 3200, 3201, 3210, 3210, + 3211, 3211, 3212, 3205, 3213, 3214, 3217, 3212, 3217, 3207, + 3216, 3213, 3215, 3215, 3209, 3216, 3218, 3218, 3219, 3220, + 3221, 3223, 3222, 3226, 3214, 3219, 3220, 3222, 3225, 3225, + 3228, 3229, 3230, 3231, 3235, 3228, 3229, 3232, 3232, 3221, - 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235, - 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239, - 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248, - 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253, - 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, - 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257, - 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261, + 3223, 3236, 3226, 3234, 3234, 3237, 3237, 3238, 3238, 3239, + 3249, 3230, 3231, 3235, 3241, 3241, 3239, 3242, 3242, 3243, + 3236, 3250, 3245, 3248, 3251, 3251, 3243, 3245, 3248, 3249, + 3252, 3252, 0, 0, 0, 0, 0, 0, 0, 0, + 3250, 3256, 3256, 3256, 3256, 3256, 3256, 3256, 3257, 3257, + 3257, 3257, 3257, 3257, 3257, 3258, 3258, 3258, 3258, 3258, + 3258, 3258, 3259, 3259, 3259, 3259, 3259, 3259, 3259, 3260, + 3260, 3260, 3260, 3260, 3260, 3260, 3261, 3261, 3261, 3261, + 3261, 3261, 3261, 3262, 3262, 3262, 3262, 3262, 3262, 3262, + 3264, 3264, 0, 3264, 3264, 3264, 3264, 3265, 3265, 0, - 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263, - 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0, - 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266, - 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267, - 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268, - 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0, - 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 0, 0, 3265, 3265, 3266, 3266, 0, 0, 3266, 0, + 3266, 3267, 0, 0, 0, 0, 0, 3267, 3268, 3268, + 0, 0, 0, 3268, 3268, 3269, 0, 0, 0, 0, + 0, 3269, 3270, 3270, 0, 3270, 3270, 3270, 3270, 3271, + 0, 0, 0, 0, 0, 3271, 3272, 3272, 0, 0, + 0, 3272, 3272, 3273, 3273, 0, 3273, 3273, 3273, 3273, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, + 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, 3255, - 3252, 3252, 3252, 3252, 3252 + 3255 } ; static yy_state_type yy_last_accepting_state; @@ -3112,7 +3114,7 @@ static void config_end_include(void) } #endif -#line 3114 "" +#line 3116 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3121,10 +3123,10 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3123 "" - #line 3125 "" +#line 3127 "" + #define INITIAL 0 #define quotedstring 1 #define singlequotedstr 2 @@ -3347,7 +3349,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3349 "" +#line 3351 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3380,13 +3382,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6365 ); + while ( yy_base[yy_current_state] != 6361 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4942,12 +4944,12 @@ YY_RULE_SETUP case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(2, VAR_EDNS_CLIENT_STRING) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 306: /* rule 306 can match eol */ @@ -5218,7 +5220,7 @@ YY_RULE_SETUP #line 662 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5220 "" +#line 5222 "" case YY_END_OF_BUFFER: { @@ -5513,7 +5515,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5541,11 +5543,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3256 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3252); + yy_is_jam = (yy_current_state == 3255); return yy_is_jam ? 0 : yy_current_state; } diff --git a/util/configlexer.lex b/util/configlexer.lex index ea7c1cf72..a825d8156 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -526,8 +526,8 @@ name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) } name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } -edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) } -edns-client-tag-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +edns-client-string{COLON} { YDVAR(2, VAR_EDNS_CLIENT_STRING) } +edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index ba5054eb4..adb3e53be 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -438,8 +438,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_EDNS_CLIENT_STRING = 553, + VAR_EDNS_CLIENT_STRING_OPCODE = 554 }; #endif /* Tokens. */ @@ -738,8 +738,8 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 550 #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_EDNS_CLIENT_STRING 553 +#define VAR_EDNS_CLIENT_STRING_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -1154,69 +1154,69 @@ static const yytype_int16 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 184, 184, 184, 185, 185, 186, 186, 187, 187, - 187, 188, 188, 189, 189, 190, 190, 191, 193, 199, - 204, 205, 206, 206, 206, 207, 207, 208, 208, 208, - 209, 209, 210, 210, 210, 211, 211, 212, 212, 212, - 213, 213, 213, 214, 214, 215, 215, 216, 216, 217, - 217, 218, 218, 219, 219, 220, 220, 221, 221, 222, - 222, 222, 223, 223, 223, 224, 224, 224, 225, 225, - 226, 226, 227, 227, 228, 228, 229, 229, 229, 230, - 230, 231, 231, 232, 232, 232, 233, 233, 234, 234, - 235, 235, 236, 236, 236, 237, 237, 238, 238, 239, - 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, - 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, - 247, 247, 247, 248, 249, 249, 249, 250, 250, 250, - 251, 251, 252, 253, 253, 253, 254, 254, 255, 255, - 256, 256, 256, 257, 257, 258, 258, 258, 259, 260, - 260, 261, 261, 262, 263, 263, 264, 264, 265, 265, - 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, - 271, 272, 272, 272, 273, 273, 274, 274, 275, 275, - 276, 276, 277, 277, 278, 278, 279, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 283, 284, 284, - 285, 285, 286, 286, 287, 287, 288, 288, 288, 289, - 289, 289, 290, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 295, 297, 309, 310, 311, 311, 311, - 311, 311, 312, 312, 314, 326, 327, 328, 328, 328, - 328, 329, 329, 331, 345, 346, 347, 347, 347, 347, - 348, 348, 348, 350, 367, 368, 369, 369, 369, 369, - 370, 370, 370, 371, 374, 393, 410, 418, 428, 436, - 453, 454, 455, 455, 455, 455, 455, 456, 456, 456, - 457, 457, 459, 468, 477, 488, 497, 506, 515, 526, - 535, 547, 561, 576, 587, 604, 621, 638, 655, 670, - 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, - 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, - 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 986, 1002, 1010, 1018, 1026, 1034, 1043, - 1052, 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1127, 1134, - 1160, 1168, 1175, 1182, 1189, 1196, 1204, 1212, 1220, 1227, - 1238, 1249, 1256, 1265, 1274, 1283, 1290, 1297, 1305, 1313, - 1323, 1333, 1343, 1357, 1365, 1378, 1389, 1397, 1410, 1419, - 1428, 1437, 1447, 1457, 1465, 1478, 1487, 1495, 1504, 1512, - 1525, 1534, 1541, 1551, 1561, 1571, 1581, 1591, 1601, 1611, - 1621, 1628, 1635, 1642, 1651, 1660, 1669, 1678, 1685, 1695, - 1715, 1722, 1740, 1753, 1766, 1775, 1784, 1793, 1802, 1812, - 1822, 1833, 1842, 1851, 1860, 1869, 1878, 1887, 1900, 1913, - 1922, 1929, 1938, 1947, 1956, 1965, 1973, 1986, 1994, 2035, - 2042, 2057, 2067, 2077, 2084, 2091, 2098, 2107, 2115, 2129, - 2150, 2171, 2183, 2195, 2207, 2216, 2237, 2247, 2256, 2264, - 2272, 2285, 2298, 2313, 2328, 2337, 2346, 2352, 2361, 2370, - 2380, 2390, 2403, 2416, 2428, 2442, 2454, 2468, 2483, 2494, - 2504, 2511, 2518, 2527, 2536, 2546, 2556, 2566, 2573, 2580, - 2589, 2598, 2608, 2618, 2625, 2632, 2639, 2647, 2657, 2667, - 2677, 2687, 2726, 2736, 2744, 2752, 2767, 2776, 2781, 2782, - 2783, 2783, 2783, 2784, 2784, 2784, 2785, 2785, 2787, 2797, - 2806, 2813, 2820, 2827, 2834, 2841, 2848, 2853, 2854, 2855, - 2855, 2855, 2856, 2856, 2856, 2857, 2858, 2858, 2859, 2859, - 2860, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2868, 2877, - 2887, 2894, 2901, 2910, 2917, 2924, 2931, 2938, 2947, 2956, - 2963, 2970, 2980, 2990, 3000, 3010, 3020, 3030, 3035, 3036, - 3037, 3039, 3045, 3050, 3051, 3052, 3054, 3060, 3070, 3077, - 3086, 3094, 3099, 3100, 3102, 3102, 3102, 3103, 3103, 3104, - 3105, 3106, 3107, 3108, 3110, 3120, 3129, 3136, 3145, 3152, - 3161, 3169, 3182, 3190, 3203, 3208, 3209, 3210, 3210, 3211, - 3211, 3211, 3212, 3214, 3226, 3238, 3250, 3265, 3278, 3291, - 3302, 3307, 3308, 3309, 3309, 3311, 3326 + 0, 185, 185, 185, 186, 186, 187, 187, 188, 188, + 188, 189, 189, 190, 190, 191, 191, 192, 194, 200, + 205, 206, 207, 207, 207, 208, 208, 209, 209, 209, + 210, 210, 211, 211, 211, 212, 212, 213, 213, 213, + 214, 214, 214, 215, 215, 216, 216, 217, 217, 218, + 218, 219, 219, 220, 220, 221, 221, 222, 222, 223, + 223, 223, 224, 224, 224, 225, 225, 225, 226, 226, + 227, 227, 228, 228, 229, 229, 230, 230, 230, 231, + 231, 232, 232, 233, 233, 233, 234, 234, 235, 235, + 236, 236, 237, 237, 237, 238, 238, 239, 239, 240, + 240, 241, 241, 242, 242, 243, 243, 243, 244, 244, + 245, 245, 245, 246, 246, 246, 247, 247, 247, 248, + 248, 248, 248, 249, 250, 250, 250, 251, 251, 251, + 252, 252, 253, 254, 254, 254, 255, 255, 256, 256, + 257, 257, 257, 258, 258, 259, 259, 259, 260, 261, + 261, 262, 262, 263, 264, 264, 265, 265, 266, 266, + 267, 268, 268, 269, 269, 270, 270, 271, 271, 272, + 272, 273, 273, 273, 274, 274, 275, 275, 276, 276, + 277, 277, 278, 278, 279, 279, 280, 280, 280, 281, + 281, 281, 282, 282, 282, 283, 283, 284, 285, 285, + 286, 286, 287, 287, 288, 288, 289, 289, 289, 290, + 290, 290, 291, 291, 291, 292, 292, 293, 293, 294, + 294, 295, 295, 296, 298, 310, 311, 312, 312, 312, + 312, 312, 313, 313, 315, 327, 328, 329, 329, 329, + 329, 330, 330, 332, 346, 347, 348, 348, 348, 348, + 349, 349, 349, 351, 368, 369, 370, 370, 370, 370, + 371, 371, 371, 372, 375, 394, 411, 419, 429, 437, + 454, 455, 456, 456, 456, 456, 456, 457, 457, 457, + 458, 458, 460, 469, 478, 489, 498, 507, 516, 527, + 536, 548, 562, 577, 588, 605, 622, 639, 656, 671, + 686, 699, 714, 723, 732, 741, 750, 759, 768, 777, + 786, 795, 804, 813, 822, 831, 840, 853, 862, 875, + 884, 893, 902, 909, 916, 925, 932, 941, 949, 956, + 963, 971, 980, 987, 1003, 1011, 1019, 1027, 1035, 1044, + 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, + 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, + 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, + 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, + 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, + 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, + 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, + 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, + 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, + 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, + 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, + 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, + 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, + 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2478, 2489, + 2499, 2506, 2513, 2522, 2531, 2541, 2551, 2561, 2568, 2575, + 2584, 2593, 2603, 2613, 2620, 2627, 2634, 2642, 2652, 2662, + 2672, 2682, 2721, 2731, 2739, 2747, 2762, 2771, 2776, 2777, + 2778, 2778, 2778, 2779, 2779, 2779, 2780, 2780, 2782, 2792, + 2801, 2808, 2815, 2822, 2829, 2836, 2843, 2848, 2849, 2850, + 2850, 2850, 2851, 2851, 2851, 2852, 2853, 2853, 2854, 2854, + 2855, 2855, 2856, 2857, 2858, 2859, 2860, 2861, 2863, 2872, + 2882, 2889, 2896, 2905, 2912, 2919, 2926, 2933, 2942, 2951, + 2958, 2965, 2975, 2985, 2995, 3005, 3015, 3025, 3030, 3031, + 3032, 3034, 3040, 3045, 3046, 3047, 3049, 3055, 3065, 3072, + 3081, 3089, 3094, 3095, 3097, 3097, 3097, 3098, 3098, 3099, + 3100, 3101, 3102, 3103, 3105, 3115, 3124, 3131, 3140, 3147, + 3156, 3164, 3177, 3185, 3198, 3203, 3204, 3205, 3205, 3206, + 3206, 3206, 3207, 3209, 3221, 3233, 3245, 3260, 3273, 3286, + 3297, 3302, 3303, 3304, 3304, 3306, 3321 }; #endif @@ -1335,15 +1335,15 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", - "VAR_EDNS_CLIENT_TAG_OPCODE", "$accept", "toplevelvars", "toplevelvar", - "force_toplevel", "serverstart", "contents_server", "content_server", - "stubstart", "contents_stub", "content_stub", "forwardstart", - "contents_forward", "content_forward", "viewstart", "contents_view", - "content_view", "authstart", "contents_auth", "content_auth", "rpz_tag", - "rpz_action_override", "rpz_cname_override", "rpz_log", "rpz_log_name", - "rpzstart", "contents_rpz", "content_rpz", "server_num_threads", - "server_verbosity", "server_statistics_interval", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", + "VAR_EDNS_CLIENT_STRING_OPCODE", "$accept", "toplevelvars", + "toplevelvar", "force_toplevel", "serverstart", "contents_server", + "content_server", "stubstart", "contents_stub", "content_stub", + "forwardstart", "contents_forward", "content_forward", "viewstart", + "contents_view", "content_view", "authstart", "contents_auth", + "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", + "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", + "server_num_threads", "server_verbosity", "server_statistics_interval", "server_statistics_cumulative", "server_extended_statistics", "server_shm_enable", "server_shm_key", "server_port", "server_send_client_subnet", "server_client_subnet_zone", @@ -1428,24 +1428,25 @@ static const char *const yytname[] = "server_qname_minimisation_strict", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "server_edns_client_tag", - "server_edns_client_tag_opcode", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", - "auth_for_upstream", "auth_fallback_enabled", "view_name", - "view_local_zone", "view_response_ip", "view_response_ip_data", - "view_local_data", "view_local_data_ptr", "view_first", "rcstart", - "contents_rc", "content_rc", "rc_control_enable", "rc_control_port", - "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", - "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", - "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip", - "dt_dnstap_tls", "dt_dnstap_tls_server_name", - "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file", - "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity", - "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", + "server_ipsecmod_strict", "server_edns_client_string", + "server_edns_client_string_opcode", "stub_name", "stub_host", + "stub_addr", "stub_first", "stub_no_cache", "stub_ssl_upstream", + "stub_prime", "forward_name", "forward_host", "forward_addr", + "forward_first", "forward_no_cache", "forward_ssl_upstream", "auth_name", + "auth_zonefile", "auth_master", "auth_url", "auth_allow_notify", + "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", + "view_name", "view_local_zone", "view_response_ip", + "view_response_ip_data", "view_local_data", "view_local_data_ptr", + "view_first", "rcstart", "contents_rc", "content_rc", + "rc_control_enable", "rc_control_port", "rc_control_interface", + "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", + "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", + "content_dt", "dt_dnstap_enable", "dt_dnstap_bidirectional", + "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", + "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", + "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", + "dt_dnstap_send_identity", "dt_dnstap_send_version", + "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -2859,23 +2860,23 @@ yyreduce: switch (yyn) { case 18: -#line 194 "./util/configparser.y" +#line 195 "./util/configparser.y" { OUTYY(("\nP(force-toplevel)\n")); } -#line 2867 "util/configparser.c" +#line 2868 "util/configparser.c" break; case 19: -#line 200 "./util/configparser.y" +#line 201 "./util/configparser.y" { OUTYY(("\nP(server:)\n")); } -#line 2875 "util/configparser.c" +#line 2876 "util/configparser.c" break; case 224: -#line 298 "./util/configparser.y" +#line 299 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2886,11 +2887,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2890 "util/configparser.c" +#line 2891 "util/configparser.c" break; case 234: -#line 315 "./util/configparser.y" +#line 316 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2901,11 +2902,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2905 "util/configparser.c" +#line 2906 "util/configparser.c" break; case 243: -#line 332 "./util/configparser.y" +#line 333 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2918,11 +2919,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2922 "util/configparser.c" +#line 2923 "util/configparser.c" break; case 253: -#line 351 "./util/configparser.y" +#line 352 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2938,11 +2939,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2942 "util/configparser.c" +#line 2943 "util/configparser.c" break; case 264: -#line 375 "./util/configparser.y" +#line 376 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2959,11 +2960,11 @@ yyreduce: } } -#line 2963 "util/configparser.c" +#line 2964 "util/configparser.c" break; case 265: -#line 394 "./util/configparser.y" +#line 395 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2978,21 +2979,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2982 "util/configparser.c" +#line 2983 "util/configparser.c" break; case 266: -#line 411 "./util/configparser.y" +#line 412 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2992 "util/configparser.c" +#line 2993 "util/configparser.c" break; case 267: -#line 419 "./util/configparser.y" +#line 420 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3000,21 +3001,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" +#line 3005 "util/configparser.c" break; case 268: -#line 429 "./util/configparser.y" +#line 430 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3014 "util/configparser.c" +#line 3015 "util/configparser.c" break; case 269: -#line 437 "./util/configparser.y" +#line 438 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -3030,11 +3031,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 3034 "util/configparser.c" +#line 3035 "util/configparser.c" break; case 282: -#line 460 "./util/configparser.y" +#line 461 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3042,11 +3043,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3047 "util/configparser.c" break; case 283: -#line 469 "./util/configparser.y" +#line 470 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3054,11 +3055,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3059 "util/configparser.c" break; case 284: -#line 478 "./util/configparser.y" +#line 479 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3068,11 +3069,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3072 "util/configparser.c" +#line 3073 "util/configparser.c" break; case 285: -#line 489 "./util/configparser.y" +#line 490 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3080,11 +3081,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 3085 "util/configparser.c" break; case 286: -#line 498 "./util/configparser.y" +#line 499 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3092,11 +3093,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3097 "util/configparser.c" break; case 287: -#line 507 "./util/configparser.y" +#line 508 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3104,11 +3105,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" +#line 3109 "util/configparser.c" break; case 288: -#line 516 "./util/configparser.y" +#line 517 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -3118,11 +3119,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3122 "util/configparser.c" +#line 3123 "util/configparser.c" break; case 289: -#line 527 "./util/configparser.y" +#line 528 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3130,11 +3131,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" +#line 3135 "util/configparser.c" break; case 290: -#line 536 "./util/configparser.y" +#line 537 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -3145,11 +3146,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3149 "util/configparser.c" +#line 3150 "util/configparser.c" break; case 291: -#line 548 "./util/configparser.y" +#line 549 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3161,11 +3162,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3165 "util/configparser.c" +#line 3166 "util/configparser.c" break; case 292: -#line 562 "./util/configparser.y" +#line 563 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3179,11 +3180,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3183 "util/configparser.c" +#line 3184 "util/configparser.c" break; case 293: -#line 577 "./util/configparser.y" +#line 578 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3193,11 +3194,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3197 "util/configparser.c" +#line 3198 "util/configparser.c" break; case 294: -#line 588 "./util/configparser.y" +#line 589 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3213,11 +3214,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3217 "util/configparser.c" +#line 3218 "util/configparser.c" break; case 295: -#line 605 "./util/configparser.y" +#line 606 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3233,11 +3234,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" +#line 3238 "util/configparser.c" break; case 296: -#line 622 "./util/configparser.y" +#line 623 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3253,11 +3254,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3258 "util/configparser.c" break; case 297: -#line 639 "./util/configparser.y" +#line 640 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3273,11 +3274,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3277 "util/configparser.c" +#line 3278 "util/configparser.c" break; case 298: -#line 656 "./util/configparser.y" +#line 657 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3291,11 +3292,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" +#line 3296 "util/configparser.c" break; case 299: -#line 671 "./util/configparser.y" +#line 672 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3309,11 +3310,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" +#line 3314 "util/configparser.c" break; case 300: -#line 686 "./util/configparser.y" +#line 687 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3325,11 +3326,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3329 "util/configparser.c" +#line 3330 "util/configparser.c" break; case 301: -#line 699 "./util/configparser.y" +#line 700 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3343,11 +3344,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3347 "util/configparser.c" +#line 3348 "util/configparser.c" break; case 302: -#line 714 "./util/configparser.y" +#line 715 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3355,11 +3356,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3360 "util/configparser.c" break; case 303: -#line 723 "./util/configparser.y" +#line 724 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3367,11 +3368,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3372 "util/configparser.c" break; case 304: -#line 732 "./util/configparser.y" +#line 733 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3379,11 +3380,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3383 "util/configparser.c" +#line 3384 "util/configparser.c" break; case 305: -#line 741 "./util/configparser.y" +#line 742 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3391,11 +3392,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3395 "util/configparser.c" +#line 3396 "util/configparser.c" break; case 306: -#line 750 "./util/configparser.y" +#line 751 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3403,11 +3404,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3407 "util/configparser.c" +#line 3408 "util/configparser.c" break; case 307: -#line 759 "./util/configparser.y" +#line 760 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3415,11 +3416,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3419 "util/configparser.c" +#line 3420 "util/configparser.c" break; case 308: -#line 768 "./util/configparser.y" +#line 769 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3427,11 +3428,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3431 "util/configparser.c" +#line 3432 "util/configparser.c" break; case 309: -#line 777 "./util/configparser.y" +#line 778 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3439,11 +3440,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3443 "util/configparser.c" +#line 3444 "util/configparser.c" break; case 310: -#line 786 "./util/configparser.y" +#line 787 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3451,11 +3452,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3455 "util/configparser.c" +#line 3456 "util/configparser.c" break; case 311: -#line 795 "./util/configparser.y" +#line 796 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3463,11 +3464,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" +#line 3468 "util/configparser.c" break; case 312: -#line 804 "./util/configparser.y" +#line 805 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3475,11 +3476,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3479 "util/configparser.c" +#line 3480 "util/configparser.c" break; case 313: -#line 813 "./util/configparser.y" +#line 814 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3487,11 +3488,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3491 "util/configparser.c" +#line 3492 "util/configparser.c" break; case 314: -#line 822 "./util/configparser.y" +#line 823 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3499,11 +3500,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" +#line 3504 "util/configparser.c" break; case 315: -#line 831 "./util/configparser.y" +#line 832 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3511,11 +3512,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 3516 "util/configparser.c" break; case 316: -#line 840 "./util/configparser.y" +#line 841 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3527,11 +3528,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3531 "util/configparser.c" +#line 3532 "util/configparser.c" break; case 317: -#line 853 "./util/configparser.y" +#line 854 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3539,11 +3540,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3543 "util/configparser.c" +#line 3544 "util/configparser.c" break; case 318: -#line 862 "./util/configparser.y" +#line 863 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3555,11 +3556,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3560 "util/configparser.c" break; case 319: -#line 875 "./util/configparser.y" +#line 876 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3567,11 +3568,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3572 "util/configparser.c" break; case 320: -#line 884 "./util/configparser.y" +#line 885 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3579,11 +3580,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3584 "util/configparser.c" break; case 321: -#line 893 "./util/configparser.y" +#line 894 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3591,31 +3592,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3595 "util/configparser.c" +#line 3596 "util/configparser.c" break; case 322: -#line 902 "./util/configparser.y" +#line 903 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3605 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 323: -#line 909 "./util/configparser.y" +#line 910 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3615 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 324: -#line 916 "./util/configparser.y" +#line 917 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3623,21 +3624,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" +#line 3628 "util/configparser.c" break; case 325: -#line 925 "./util/configparser.y" +#line 926 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3637 "util/configparser.c" +#line 3638 "util/configparser.c" break; case 326: -#line 932 "./util/configparser.y" +#line 933 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3645,53 +3646,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3649 "util/configparser.c" +#line 3650 "util/configparser.c" break; case 327: -#line 941 "./util/configparser.y" +#line 942 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3660 "util/configparser.c" +#line 3661 "util/configparser.c" break; case 328: -#line 949 "./util/configparser.y" +#line 950 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3670 "util/configparser.c" +#line 3671 "util/configparser.c" break; case 329: -#line 956 "./util/configparser.y" +#line 957 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3680 "util/configparser.c" +#line 3681 "util/configparser.c" break; case 330: -#line 963 "./util/configparser.y" +#line 964 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3691 "util/configparser.c" +#line 3692 "util/configparser.c" break; case 331: -#line 971 "./util/configparser.y" +#line 972 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3699,22 +3700,22 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3703 "util/configparser.c" +#line 3704 "util/configparser.c" break; case 332: -#line 980 "./util/configparser.y" +#line 981 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 3715 "util/configparser.c" break; case 333: -#line 987 "./util/configparser.y" +#line 988 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); @@ -3730,11 +3731,11 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3734 "util/configparser.c" +#line 3735 "util/configparser.c" break; case 334: -#line 1003 "./util/configparser.y" +#line 1004 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3742,11 +3743,11 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3747 "util/configparser.c" break; case 335: -#line 1011 "./util/configparser.y" +#line 1012 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3754,11 +3755,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3759 "util/configparser.c" break; case 336: -#line 1019 "./util/configparser.y" +#line 1020 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), @@ -3766,11 +3767,11 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3771 "util/configparser.c" break; case 337: -#line 1027 "./util/configparser.y" +#line 1028 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3778,11 +3779,11 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3783 "util/configparser.c" break; case 338: -#line 1035 "./util/configparser.y" +#line 1036 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3790,11 +3791,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3795 "util/configparser.c" break; case 339: -#line 1044 "./util/configparser.y" +#line 1045 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3802,11 +3803,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3807 "util/configparser.c" break; case 340: -#line 1053 "./util/configparser.y" +#line 1054 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3819,11 +3820,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3824 "util/configparser.c" break; case 341: -#line 1067 "./util/configparser.y" +#line 1068 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3831,11 +3832,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3835 "util/configparser.c" +#line 3836 "util/configparser.c" break; case 342: -#line 1076 "./util/configparser.y" +#line 1077 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3843,11 +3844,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3847 "util/configparser.c" +#line 3848 "util/configparser.c" break; case 343: -#line 1085 "./util/configparser.y" +#line 1086 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3855,11 +3856,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3860 "util/configparser.c" break; case 344: -#line 1094 "./util/configparser.y" +#line 1095 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3867,11 +3868,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3872 "util/configparser.c" break; case 345: -#line 1103 "./util/configparser.y" +#line 1104 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3879,11 +3880,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3884 "util/configparser.c" break; case 346: -#line 1112 "./util/configparser.y" +#line 1113 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3891,31 +3892,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3895 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 347: -#line 1121 "./util/configparser.y" +#line 1122 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3905 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 348: -#line 1128 "./util/configparser.y" +#line 1129 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3915 "util/configparser.c" +#line 3916 "util/configparser.c" break; case 349: -#line 1135 "./util/configparser.y" +#line 1136 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3940,105 +3941,105 @@ yyreduce: } } } -#line 3944 "util/configparser.c" +#line 3945 "util/configparser.c" break; case 350: -#line 1161 "./util/configparser.y" +#line 1162 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3955 "util/configparser.c" +#line 3956 "util/configparser.c" break; case 351: -#line 1169 "./util/configparser.y" +#line 1170 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3965 "util/configparser.c" +#line 3966 "util/configparser.c" break; case 352: -#line 1176 "./util/configparser.y" +#line 1177 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3975 "util/configparser.c" +#line 3976 "util/configparser.c" break; case 353: -#line 1183 "./util/configparser.y" +#line 1184 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3986 "util/configparser.c" break; case 354: -#line 1190 "./util/configparser.y" +#line 1191 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3996 "util/configparser.c" break; case 355: -#line 1197 "./util/configparser.y" +#line 1198 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4006 "util/configparser.c" +#line 4007 "util/configparser.c" break; case 356: -#line 1205 "./util/configparser.y" +#line 1206 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4017 "util/configparser.c" +#line 4018 "util/configparser.c" break; case 357: -#line 1213 "./util/configparser.y" +#line 1214 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4028 "util/configparser.c" +#line 4029 "util/configparser.c" break; case 358: -#line 1221 "./util/configparser.y" +#line 1222 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4038 "util/configparser.c" +#line 4039 "util/configparser.c" break; case 359: -#line 1228 "./util/configparser.y" +#line 1229 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4048,11 +4049,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 4053 "util/configparser.c" break; case 360: -#line 1239 "./util/configparser.y" +#line 1240 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4062,21 +4063,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4067 "util/configparser.c" break; case 361: -#line 1250 "./util/configparser.y" +#line 1251 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4076 "util/configparser.c" +#line 4077 "util/configparser.c" break; case 362: -#line 1257 "./util/configparser.y" +#line 1258 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4084,11 +4085,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4088 "util/configparser.c" +#line 4089 "util/configparser.c" break; case 363: -#line 1266 "./util/configparser.y" +#line 1267 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4096,11 +4097,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4100 "util/configparser.c" +#line 4101 "util/configparser.c" break; case 364: -#line 1275 "./util/configparser.y" +#line 1276 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4108,53 +4109,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4112 "util/configparser.c" +#line 4113 "util/configparser.c" break; case 365: -#line 1284 "./util/configparser.y" +#line 1285 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4122 "util/configparser.c" +#line 4123 "util/configparser.c" break; case 366: -#line 1291 "./util/configparser.y" +#line 1292 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4132 "util/configparser.c" +#line 4133 "util/configparser.c" break; case 367: -#line 1298 "./util/configparser.y" +#line 1299 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4144 "util/configparser.c" break; case 368: -#line 1306 "./util/configparser.y" +#line 1307 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4155 "util/configparser.c" break; case 369: -#line 1314 "./util/configparser.y" +#line 1315 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4163,11 +4164,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4167 "util/configparser.c" +#line 4168 "util/configparser.c" break; case 370: -#line 1324 "./util/configparser.y" +#line 1325 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4176,11 +4177,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4180 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 371: -#line 1334 "./util/configparser.y" +#line 1335 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4189,11 +4190,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4194 "util/configparser.c" break; case 372: -#line 1344 "./util/configparser.y" +#line 1345 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4206,22 +4207,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4211 "util/configparser.c" break; case 373: -#line 1358 "./util/configparser.y" +#line 1359 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4221 "util/configparser.c" +#line 4222 "util/configparser.c" break; case 374: -#line 1366 "./util/configparser.y" +#line 1367 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4233,11 +4234,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4237 "util/configparser.c" +#line 4238 "util/configparser.c" break; case 375: -#line 1379 "./util/configparser.y" +#line 1380 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4247,22 +4248,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4252 "util/configparser.c" break; case 376: -#line 1390 "./util/configparser.y" +#line 1391 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4263 "util/configparser.c" break; case 377: -#line 1398 "./util/configparser.y" +#line 1399 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4274,11 +4275,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4279 "util/configparser.c" break; case 378: -#line 1411 "./util/configparser.y" +#line 1412 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4286,11 +4287,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4291 "util/configparser.c" break; case 379: -#line 1420 "./util/configparser.y" +#line 1421 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4298,11 +4299,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4302 "util/configparser.c" +#line 4303 "util/configparser.c" break; case 380: -#line 1429 "./util/configparser.y" +#line 1430 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4310,11 +4311,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4314 "util/configparser.c" +#line 4315 "util/configparser.c" break; case 381: -#line 1438 "./util/configparser.y" +#line 1439 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4323,11 +4324,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" +#line 4328 "util/configparser.c" break; case 382: -#line 1448 "./util/configparser.y" +#line 1449 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4336,22 +4337,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4341 "util/configparser.c" break; case 383: -#line 1458 "./util/configparser.y" +#line 1459 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4352 "util/configparser.c" break; case 384: -#line 1466 "./util/configparser.y" +#line 1467 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4363,11 +4364,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4367 "util/configparser.c" +#line 4368 "util/configparser.c" break; case 385: -#line 1479 "./util/configparser.y" +#line 1480 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4375,22 +4376,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4379 "util/configparser.c" +#line 4380 "util/configparser.c" break; case 386: -#line 1488 "./util/configparser.y" +#line 1489 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4391 "util/configparser.c" break; case 387: -#line 1496 "./util/configparser.y" +#line 1497 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4398,22 +4399,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4403 "util/configparser.c" break; case 388: -#line 1505 "./util/configparser.y" +#line 1506 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 389: -#line 1513 "./util/configparser.y" +#line 1514 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4425,11 +4426,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4430 "util/configparser.c" break; case 390: -#line 1526 "./util/configparser.y" +#line 1527 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4437,21 +4438,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4441 "util/configparser.c" +#line 4442 "util/configparser.c" break; case 391: -#line 1535 "./util/configparser.y" +#line 1536 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4451 "util/configparser.c" +#line 4452 "util/configparser.c" break; case 392: -#line 1542 "./util/configparser.y" +#line 1543 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4460,11 +4461,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4465 "util/configparser.c" break; case 393: -#line 1552 "./util/configparser.y" +#line 1553 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4473,11 +4474,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4477 "util/configparser.c" +#line 4478 "util/configparser.c" break; case 394: -#line 1562 "./util/configparser.y" +#line 1563 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4486,11 +4487,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4491 "util/configparser.c" break; case 395: -#line 1572 "./util/configparser.y" +#line 1573 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4499,11 +4500,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4504 "util/configparser.c" break; case 396: -#line 1582 "./util/configparser.y" +#line 1583 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4512,11 +4513,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4517 "util/configparser.c" break; case 397: -#line 1592 "./util/configparser.y" +#line 1593 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4525,11 +4526,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" +#line 4530 "util/configparser.c" break; case 398: -#line 1602 "./util/configparser.y" +#line 1603 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4538,11 +4539,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4543 "util/configparser.c" break; case 399: -#line 1612 "./util/configparser.y" +#line 1613 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4551,41 +4552,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4555 "util/configparser.c" +#line 4556 "util/configparser.c" break; case 400: -#line 1622 "./util/configparser.y" +#line 1623 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4565 "util/configparser.c" +#line 4566 "util/configparser.c" break; case 401: -#line 1629 "./util/configparser.y" +#line 1630 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4575 "util/configparser.c" +#line 4576 "util/configparser.c" break; case 402: -#line 1636 "./util/configparser.y" +#line 1637 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4585 "util/configparser.c" +#line 4586 "util/configparser.c" break; case 403: -#line 1643 "./util/configparser.y" +#line 1644 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4593,11 +4594,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4597 "util/configparser.c" +#line 4598 "util/configparser.c" break; case 404: -#line 1652 "./util/configparser.y" +#line 1653 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4605,11 +4606,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4610 "util/configparser.c" break; case 405: -#line 1661 "./util/configparser.y" +#line 1662 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4617,11 +4618,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4622 "util/configparser.c" break; case 406: -#line 1670 "./util/configparser.y" +#line 1671 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4629,21 +4630,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4634 "util/configparser.c" break; case 407: -#line 1679 "./util/configparser.y" +#line 1680 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4643 "util/configparser.c" +#line 4644 "util/configparser.c" break; case 408: -#line 1686 "./util/configparser.y" +#line 1687 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4652,11 +4653,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4656 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 409: -#line 1696 "./util/configparser.y" +#line 1697 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4675,21 +4676,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4679 "util/configparser.c" +#line 4680 "util/configparser.c" break; case 410: -#line 1716 "./util/configparser.y" +#line 1717 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4689 "util/configparser.c" +#line 4690 "util/configparser.c" break; case 411: -#line 1723 "./util/configparser.y" +#line 1724 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4706,11 +4707,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4711 "util/configparser.c" break; case 412: -#line 1741 "./util/configparser.y" +#line 1742 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4722,11 +4723,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4726 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 413: -#line 1754 "./util/configparser.y" +#line 1755 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4738,11 +4739,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4742 "util/configparser.c" +#line 4743 "util/configparser.c" break; case 414: -#line 1767 "./util/configparser.y" +#line 1768 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4750,11 +4751,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4754 "util/configparser.c" +#line 4755 "util/configparser.c" break; case 415: -#line 1776 "./util/configparser.y" +#line 1777 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4762,11 +4763,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4766 "util/configparser.c" +#line 4767 "util/configparser.c" break; case 416: -#line 1785 "./util/configparser.y" +#line 1786 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4774,11 +4775,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" +#line 4779 "util/configparser.c" break; case 417: -#line 1794 "./util/configparser.y" +#line 1795 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4786,11 +4787,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" +#line 4791 "util/configparser.c" break; case 418: -#line 1803 "./util/configparser.y" +#line 1804 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4799,11 +4800,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4804 "util/configparser.c" break; case 419: -#line 1813 "./util/configparser.y" +#line 1814 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4812,11 +4813,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4816 "util/configparser.c" +#line 4817 "util/configparser.c" break; case 420: -#line 1823 "./util/configparser.y" +#line 1824 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4826,11 +4827,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4830 "util/configparser.c" +#line 4831 "util/configparser.c" break; case 421: -#line 1834 "./util/configparser.y" +#line 1835 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4838,11 +4839,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4842 "util/configparser.c" +#line 4843 "util/configparser.c" break; case 422: -#line 1843 "./util/configparser.y" +#line 1844 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4850,11 +4851,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4854 "util/configparser.c" +#line 4855 "util/configparser.c" break; case 423: -#line 1852 "./util/configparser.y" +#line 1853 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4862,11 +4863,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4867 "util/configparser.c" break; case 424: -#line 1861 "./util/configparser.y" +#line 1862 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4874,11 +4875,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4879 "util/configparser.c" break; case 425: -#line 1870 "./util/configparser.y" +#line 1871 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4886,11 +4887,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4891 "util/configparser.c" break; case 426: -#line 1879 "./util/configparser.y" +#line 1880 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4898,11 +4899,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4903 "util/configparser.c" break; case 427: -#line 1888 "./util/configparser.y" +#line 1889 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4914,11 +4915,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4918 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 428: -#line 1901 "./util/configparser.y" +#line 1902 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4930,11 +4931,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4935 "util/configparser.c" break; case 429: -#line 1914 "./util/configparser.y" +#line 1915 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4942,21 +4943,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4947 "util/configparser.c" break; case 430: -#line 1923 "./util/configparser.y" +#line 1924 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4956 "util/configparser.c" +#line 4957 "util/configparser.c" break; case 431: -#line 1930 "./util/configparser.y" +#line 1931 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4964,11 +4965,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4968 "util/configparser.c" +#line 4969 "util/configparser.c" break; case 432: -#line 1939 "./util/configparser.y" +#line 1940 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4976,11 +4977,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" +#line 4981 "util/configparser.c" break; case 433: -#line 1948 "./util/configparser.y" +#line 1949 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4988,11 +4989,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" +#line 4993 "util/configparser.c" break; case 434: -#line 1957 "./util/configparser.y" +#line 1958 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5001,22 +5002,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5005 "util/configparser.c" +#line 5006 "util/configparser.c" break; case 435: -#line 1966 "./util/configparser.y" +#line 1967 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" +#line 5017 "util/configparser.c" break; case 436: -#line 1974 "./util/configparser.y" +#line 1975 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5028,22 +5029,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 5033 "util/configparser.c" break; case 437: -#line 1987 "./util/configparser.y" +#line 1988 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 5044 "util/configparser.c" break; case 438: -#line 1995 "./util/configparser.y" +#line 1996 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5083,21 +5084,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5087 "util/configparser.c" +#line 5088 "util/configparser.c" break; case 439: -#line 2036 "./util/configparser.y" +#line 2037 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5097 "util/configparser.c" +#line 5098 "util/configparser.c" break; case 440: -#line 2043 "./util/configparser.y" +#line 2044 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5111,11 +5112,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5115 "util/configparser.c" +#line 5116 "util/configparser.c" break; case 441: -#line 2058 "./util/configparser.y" +#line 2059 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5124,11 +5125,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5129 "util/configparser.c" break; case 442: -#line 2068 "./util/configparser.y" +#line 2069 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5137,41 +5138,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 5142 "util/configparser.c" break; case 443: -#line 2078 "./util/configparser.y" +#line 2079 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 5152 "util/configparser.c" break; case 444: -#line 2085 "./util/configparser.y" +#line 2086 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5161 "util/configparser.c" +#line 5162 "util/configparser.c" break; case 445: -#line 2092 "./util/configparser.y" +#line 2093 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5171 "util/configparser.c" +#line 5172 "util/configparser.c" break; case 446: -#line 2099 "./util/configparser.y" +#line 2100 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5179,22 +5180,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5184 "util/configparser.c" break; case 447: -#line 2108 "./util/configparser.y" +#line 2109 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5194 "util/configparser.c" +#line 5195 "util/configparser.c" break; case 448: -#line 2116 "./util/configparser.y" +#line 2117 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5207,11 +5208,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5211 "util/configparser.c" +#line 5212 "util/configparser.c" break; case 449: -#line 2130 "./util/configparser.y" +#line 2131 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5231,11 +5232,11 @@ yyreduce: } } } -#line 5235 "util/configparser.c" +#line 5236 "util/configparser.c" break; case 450: -#line 2151 "./util/configparser.y" +#line 2152 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5255,11 +5256,11 @@ yyreduce: } } } -#line 5259 "util/configparser.c" +#line 5260 "util/configparser.c" break; case 451: -#line 2172 "./util/configparser.y" +#line 2173 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5270,11 +5271,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5274 "util/configparser.c" +#line 5275 "util/configparser.c" break; case 452: -#line 2184 "./util/configparser.y" +#line 2185 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5285,11 +5286,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5289 "util/configparser.c" +#line 5290 "util/configparser.c" break; case 453: -#line 2196 "./util/configparser.y" +#line 2197 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5300,11 +5301,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5304 "util/configparser.c" +#line 5305 "util/configparser.c" break; case 454: -#line 2208 "./util/configparser.y" +#line 2209 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5312,11 +5313,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5316 "util/configparser.c" +#line 5317 "util/configparser.c" break; case 455: -#line 2217 "./util/configparser.y" +#line 2218 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5336,11 +5337,11 @@ yyreduce: } } } -#line 5340 "util/configparser.c" +#line 5341 "util/configparser.c" break; case 456: -#line 2238 "./util/configparser.y" +#line 2239 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5348,11 +5349,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5352 "util/configparser.c" +#line 5353 "util/configparser.c" break; case 457: -#line 2248 "./util/configparser.y" +#line 2249 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5360,33 +5361,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5364 "util/configparser.c" +#line 5365 "util/configparser.c" break; case 458: -#line 2257 "./util/configparser.y" +#line 2258 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5375 "util/configparser.c" +#line 5376 "util/configparser.c" break; case 459: -#line 2265 "./util/configparser.y" +#line 2266 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5386 "util/configparser.c" +#line 5387 "util/configparser.c" break; case 460: -#line 2273 "./util/configparser.y" +#line 2274 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5398,11 +5399,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5402 "util/configparser.c" +#line 5403 "util/configparser.c" break; case 461: -#line 2286 "./util/configparser.y" +#line 2287 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5414,11 +5415,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5418 "util/configparser.c" +#line 5419 "util/configparser.c" break; case 462: -#line 2299 "./util/configparser.y" +#line 2300 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5432,11 +5433,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5436 "util/configparser.c" +#line 5437 "util/configparser.c" break; case 463: -#line 2314 "./util/configparser.y" +#line 2315 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5450,11 +5451,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5454 "util/configparser.c" +#line 5455 "util/configparser.c" break; case 464: -#line 2329 "./util/configparser.y" +#line 2330 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5462,11 +5463,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5466 "util/configparser.c" +#line 5467 "util/configparser.c" break; case 465: -#line 2338 "./util/configparser.y" +#line 2339 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5474,20 +5475,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 5479 "util/configparser.c" break; case 466: -#line 2347 "./util/configparser.y" +#line 2348 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5488 "util/configparser.c" break; case 467: -#line 2353 "./util/configparser.y" +#line 2354 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5495,11 +5496,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5499 "util/configparser.c" +#line 5500 "util/configparser.c" break; case 468: -#line 2362 "./util/configparser.y" +#line 2363 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5507,11 +5508,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5511 "util/configparser.c" +#line 5512 "util/configparser.c" break; case 469: -#line 2371 "./util/configparser.y" +#line 2372 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5520,11 +5521,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5524 "util/configparser.c" +#line 5525 "util/configparser.c" break; case 470: -#line 2381 "./util/configparser.y" +#line 2382 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5533,11 +5534,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5538 "util/configparser.c" break; case 471: -#line 2391 "./util/configparser.y" +#line 2392 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5549,11 +5550,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 472: -#line 2404 "./util/configparser.y" +#line 2405 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5565,11 +5566,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5569 "util/configparser.c" +#line 5570 "util/configparser.c" break; case 473: -#line 2417 "./util/configparser.y" +#line 2418 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5580,11 +5581,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5584 "util/configparser.c" +#line 5585 "util/configparser.c" break; case 474: -#line 2429 "./util/configparser.y" +#line 2430 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5597,11 +5598,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5601 "util/configparser.c" +#line 5602 "util/configparser.c" break; case 475: -#line 2443 "./util/configparser.y" +#line 2444 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5612,11 +5613,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5616 "util/configparser.c" +#line 5617 "util/configparser.c" break; case 476: -#line 2455 "./util/configparser.y" +#line 2456 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5629,43 +5630,37 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5633 "util/configparser.c" +#line 5634 "util/configparser.c" break; case 477: -#line 2469 "./util/configparser.y" +#line 2470 "./util/configparser.y" { - int tag_data; - OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); - tag_data = atoi((yyvsp[0].str)); - if(tag_data > 65535 || tag_data < 0 || - (tag_data == 0 && (strlen((yyvsp[0].str)) != 1 || (yyvsp[0].str)[0] != '0'))) - yyerror("edns-client-tag data invalid, needs to be a " - "number from 0 to 65535"); + OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_tags, (yyvsp[-1].str), (yyvsp[0].str))) + &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " - "edns-client-tag"); + "edns-client-string"); } -#line 5651 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 478: -#line 2484 "./util/configparser.y" +#line 2479 "./util/configparser.y" { - OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); + OUTYY(("P(edns_client_string_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); + else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); } -#line 5665 "util/configparser.c" +#line 5660 "util/configparser.c" break; case 479: -#line 2495 "./util/configparser.y" +#line 2490 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5674,31 +5669,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5678 "util/configparser.c" +#line 5673 "util/configparser.c" break; case 480: -#line 2505 "./util/configparser.y" +#line 2500 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5688 "util/configparser.c" +#line 5683 "util/configparser.c" break; case 481: -#line 2512 "./util/configparser.y" +#line 2507 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5698 "util/configparser.c" +#line 5693 "util/configparser.c" break; case 482: -#line 2519 "./util/configparser.y" +#line 2514 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5706,11 +5701,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5705 "util/configparser.c" break; case 483: -#line 2528 "./util/configparser.y" +#line 2523 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5718,11 +5713,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5722 "util/configparser.c" +#line 5717 "util/configparser.c" break; case 484: -#line 2537 "./util/configparser.y" +#line 2532 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5731,11 +5726,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5735 "util/configparser.c" +#line 5730 "util/configparser.c" break; case 485: -#line 2547 "./util/configparser.y" +#line 2542 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5744,11 +5739,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5748 "util/configparser.c" +#line 5743 "util/configparser.c" break; case 486: -#line 2557 "./util/configparser.y" +#line 2552 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5757,31 +5752,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5761 "util/configparser.c" +#line 5756 "util/configparser.c" break; case 487: -#line 2567 "./util/configparser.y" +#line 2562 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5771 "util/configparser.c" +#line 5766 "util/configparser.c" break; case 488: -#line 2574 "./util/configparser.y" +#line 2569 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5781 "util/configparser.c" +#line 5776 "util/configparser.c" break; case 489: -#line 2581 "./util/configparser.y" +#line 2576 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5789,11 +5784,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" +#line 5788 "util/configparser.c" break; case 490: -#line 2590 "./util/configparser.y" +#line 2585 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5801,11 +5796,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5805 "util/configparser.c" +#line 5800 "util/configparser.c" break; case 491: -#line 2599 "./util/configparser.y" +#line 2594 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5814,11 +5809,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5818 "util/configparser.c" +#line 5813 "util/configparser.c" break; case 492: -#line 2609 "./util/configparser.y" +#line 2604 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5827,52 +5822,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5831 "util/configparser.c" +#line 5826 "util/configparser.c" break; case 493: -#line 2619 "./util/configparser.y" +#line 2614 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5841 "util/configparser.c" +#line 5836 "util/configparser.c" break; case 494: -#line 2626 "./util/configparser.y" +#line 2621 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5851 "util/configparser.c" +#line 5846 "util/configparser.c" break; case 495: -#line 2633 "./util/configparser.y" +#line 2628 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5861 "util/configparser.c" +#line 5856 "util/configparser.c" break; case 496: -#line 2640 "./util/configparser.y" +#line 2635 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5872 "util/configparser.c" +#line 5867 "util/configparser.c" break; case 497: -#line 2648 "./util/configparser.y" +#line 2643 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5881,11 +5876,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" +#line 5880 "util/configparser.c" break; case 498: -#line 2658 "./util/configparser.y" +#line 2653 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5894,11 +5889,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5898 "util/configparser.c" +#line 5893 "util/configparser.c" break; case 499: -#line 2668 "./util/configparser.y" +#line 2663 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5907,11 +5902,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5911 "util/configparser.c" +#line 5906 "util/configparser.c" break; case 500: -#line 2678 "./util/configparser.y" +#line 2673 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5920,11 +5915,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5924 "util/configparser.c" +#line 5919 "util/configparser.c" break; case 501: -#line 2688 "./util/configparser.y" +#line 2683 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5962,11 +5957,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5966 "util/configparser.c" +#line 5961 "util/configparser.c" break; case 502: -#line 2727 "./util/configparser.y" +#line 2722 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5975,33 +5970,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5979 "util/configparser.c" +#line 5974 "util/configparser.c" break; case 503: -#line 2737 "./util/configparser.y" +#line 2732 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5990 "util/configparser.c" +#line 5985 "util/configparser.c" break; case 504: -#line 2745 "./util/configparser.y" +#line 2740 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6001 "util/configparser.c" +#line 5996 "util/configparser.c" break; case 505: -#line 2753 "./util/configparser.y" +#line 2748 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -6015,11 +6010,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6019 "util/configparser.c" +#line 6014 "util/configparser.c" break; case 506: -#line 2768 "./util/configparser.y" +#line 2763 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6027,19 +6022,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6026 "util/configparser.c" break; case 507: -#line 2777 "./util/configparser.y" +#line 2772 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6039 "util/configparser.c" +#line 6034 "util/configparser.c" break; case 518: -#line 2788 "./util/configparser.y" +#line 2783 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6048,11 +6043,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6052 "util/configparser.c" +#line 6047 "util/configparser.c" break; case 519: -#line 2798 "./util/configparser.y" +#line 2793 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6060,79 +6055,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6059 "util/configparser.c" break; case 520: -#line 2807 "./util/configparser.y" +#line 2802 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6074 "util/configparser.c" +#line 6069 "util/configparser.c" break; case 521: -#line 2814 "./util/configparser.y" +#line 2809 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 6079 "util/configparser.c" break; case 522: -#line 2821 "./util/configparser.y" +#line 2816 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6094 "util/configparser.c" +#line 6089 "util/configparser.c" break; case 523: -#line 2828 "./util/configparser.y" +#line 2823 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6104 "util/configparser.c" +#line 6099 "util/configparser.c" break; case 524: -#line 2835 "./util/configparser.y" +#line 2830 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6109 "util/configparser.c" break; case 525: -#line 2842 "./util/configparser.y" +#line 2837 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6119 "util/configparser.c" break; case 526: -#line 2849 "./util/configparser.y" +#line 2844 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6132 "util/configparser.c" +#line 6127 "util/configparser.c" break; case 548: -#line 2869 "./util/configparser.y" +#line 2864 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6140,11 +6135,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6144 "util/configparser.c" +#line 6139 "util/configparser.c" break; case 549: -#line 2878 "./util/configparser.y" +#line 2873 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6153,31 +6148,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6157 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 550: -#line 2888 "./util/configparser.y" +#line 2883 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6167 "util/configparser.c" +#line 6162 "util/configparser.c" break; case 551: -#line 2895 "./util/configparser.y" +#line 2890 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6177 "util/configparser.c" +#line 6172 "util/configparser.c" break; case 552: -#line 2902 "./util/configparser.y" +#line 2897 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6185,51 +6180,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6184 "util/configparser.c" break; case 553: -#line 2911 "./util/configparser.y" +#line 2906 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6199 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 554: -#line 2918 "./util/configparser.y" +#line 2913 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6209 "util/configparser.c" +#line 6204 "util/configparser.c" break; case 555: -#line 2925 "./util/configparser.y" +#line 2920 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6219 "util/configparser.c" +#line 6214 "util/configparser.c" break; case 556: -#line 2932 "./util/configparser.y" +#line 2927 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6229 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 557: -#line 2939 "./util/configparser.y" +#line 2934 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6237,11 +6232,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6241 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 558: -#line 2948 "./util/configparser.y" +#line 2943 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6249,31 +6244,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6253 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 559: -#line 2957 "./util/configparser.y" +#line 2952 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6263 "util/configparser.c" +#line 6258 "util/configparser.c" break; case 560: -#line 2964 "./util/configparser.y" +#line 2959 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6273 "util/configparser.c" +#line 6268 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" +#line 2966 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6282,11 +6277,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6281 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" +#line 2976 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6295,11 +6290,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6294 "util/configparser.c" break; case 563: -#line 2991 "./util/configparser.y" +#line 2986 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6308,11 +6303,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6307 "util/configparser.c" break; case 564: -#line 3001 "./util/configparser.y" +#line 2996 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6321,11 +6316,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6320 "util/configparser.c" break; case 565: -#line 3011 "./util/configparser.y" +#line 3006 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6334,11 +6329,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6338 "util/configparser.c" +#line 6333 "util/configparser.c" break; case 566: -#line 3021 "./util/configparser.y" +#line 3016 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6347,47 +6342,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6346 "util/configparser.c" break; case 567: -#line 3031 "./util/configparser.y" +#line 3026 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6359 "util/configparser.c" +#line 6354 "util/configparser.c" break; case 571: -#line 3040 "./util/configparser.y" +#line 3035 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6369 "util/configparser.c" +#line 6364 "util/configparser.c" break; case 572: -#line 3046 "./util/configparser.y" +#line 3041 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6377 "util/configparser.c" +#line 6372 "util/configparser.c" break; case 576: -#line 3055 "./util/configparser.y" +#line 3050 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6387 "util/configparser.c" +#line 6382 "util/configparser.c" break; case 577: -#line 3061 "./util/configparser.y" +#line 3056 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6396,21 +6391,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 6395 "util/configparser.c" break; case 578: -#line 3071 "./util/configparser.y" +#line 3066 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6410 "util/configparser.c" +#line 6405 "util/configparser.c" break; case 579: -#line 3078 "./util/configparser.y" +#line 3073 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6418,30 +6413,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6422 "util/configparser.c" +#line 6417 "util/configparser.c" break; case 580: -#line 3087 "./util/configparser.y" +#line 3082 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6433 "util/configparser.c" +#line 6428 "util/configparser.c" break; case 581: -#line 3095 "./util/configparser.y" +#line 3090 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6441 "util/configparser.c" +#line 6436 "util/configparser.c" break; case 594: -#line 3111 "./util/configparser.y" +#line 3106 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6449,11 +6444,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6453 "util/configparser.c" +#line 6448 "util/configparser.c" break; case 595: -#line 3121 "./util/configparser.y" +#line 3116 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6461,21 +6456,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6465 "util/configparser.c" +#line 6460 "util/configparser.c" break; case 596: -#line 3130 "./util/configparser.y" +#line 3125 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6475 "util/configparser.c" +#line 6470 "util/configparser.c" break; case 597: -#line 3137 "./util/configparser.y" +#line 3132 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6483,21 +6478,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6487 "util/configparser.c" +#line 6482 "util/configparser.c" break; case 598: -#line 3146 "./util/configparser.y" +#line 3141 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6497 "util/configparser.c" +#line 6492 "util/configparser.c" break; case 599: -#line 3153 "./util/configparser.y" +#line 3148 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6505,22 +6500,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6509 "util/configparser.c" +#line 6504 "util/configparser.c" break; case 600: -#line 3162 "./util/configparser.y" +#line 3157 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 6515 "util/configparser.c" break; case 601: -#line 3170 "./util/configparser.y" +#line 3165 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6532,22 +6527,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6536 "util/configparser.c" +#line 6531 "util/configparser.c" break; case 602: -#line 3183 "./util/configparser.y" +#line 3178 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6547 "util/configparser.c" +#line 6542 "util/configparser.c" break; case 603: -#line 3191 "./util/configparser.y" +#line 3186 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6559,19 +6554,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6563 "util/configparser.c" +#line 6558 "util/configparser.c" break; case 604: -#line 3204 "./util/configparser.y" +#line 3199 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6571 "util/configparser.c" +#line 6566 "util/configparser.c" break; case 613: -#line 3215 "./util/configparser.y" +#line 3210 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6582,11 +6577,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6586 "util/configparser.c" +#line 6581 "util/configparser.c" break; case 614: -#line 3227 "./util/configparser.y" +#line 3222 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6597,11 +6592,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6601 "util/configparser.c" +#line 6596 "util/configparser.c" break; case 615: -#line 3239 "./util/configparser.y" +#line 3234 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6612,11 +6607,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6616 "util/configparser.c" +#line 6611 "util/configparser.c" break; case 616: -#line 3251 "./util/configparser.y" +#line 3246 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6630,11 +6625,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6634 "util/configparser.c" +#line 6629 "util/configparser.c" break; case 617: -#line 3266 "./util/configparser.y" +#line 3261 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6646,11 +6641,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6650 "util/configparser.c" +#line 6645 "util/configparser.c" break; case 618: -#line 3279 "./util/configparser.y" +#line 3274 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6662,11 +6657,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6666 "util/configparser.c" +#line 6661 "util/configparser.c" break; case 619: -#line 3292 "./util/configparser.y" +#line 3287 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6676,19 +6671,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6680 "util/configparser.c" +#line 6675 "util/configparser.c" break; case 620: -#line 3303 "./util/configparser.y" +#line 3298 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6688 "util/configparser.c" +#line 6683 "util/configparser.c" break; case 625: -#line 3312 "./util/configparser.y" +#line 3307 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6702,11 +6697,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6706 "util/configparser.c" +#line 6701 "util/configparser.c" break; case 626: -#line 3327 "./util/configparser.y" +#line 3322 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6720,11 +6715,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6724 "util/configparser.c" +#line 6719 "util/configparser.c" break; -#line 6728 "util/configparser.c" +#line 6723 "util/configparser.c" default: break; } @@ -6956,7 +6951,7 @@ yyreturn: #endif return yyresult; } -#line 3341 "./util/configparser.y" +#line 3336 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 3a5ea579d..d9a78e107 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -344,8 +344,8 @@ extern int yydebug; VAR_RPZ_LOG_NAME = 550, VAR_DYNLIB = 551, VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_EDNS_CLIENT_STRING = 553, + VAR_EDNS_CLIENT_STRING_OPCODE = 554 }; #endif /* Tokens. */ @@ -644,8 +644,8 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 550 #define VAR_DYNLIB 551 #define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_EDNS_CLIENT_STRING 553 +#define VAR_EDNS_CLIENT_STRING_OPCODE 554 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED diff --git a/util/configparser.y b/util/configparser.y index 43a886f24..ebc71a8bb 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -178,7 +178,8 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME -%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG VAR_EDNS_CLIENT_TAG_OPCODE +%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING +%token VAR_EDNS_CLIENT_STRING_OPCODE %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -291,8 +292,8 @@ content_server: server_num_threads | server_verbosity | server_port | server_unknown_server_time_limit | server_log_tag_queryreply | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | - server_tls_use_sni | server_edns_client_tag | - server_edns_client_tag_opcode + server_tls_use_sni | server_edns_client_string | + server_edns_client_string_opcode ; stubstart: VAR_STUB_ZONE { @@ -2465,29 +2466,23 @@ server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG #endif } ; -server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG +server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG { - int tag_data; - OUTYY(("P(server_edns_client_tag:%s %s)\n", $2, $3)); - tag_data = atoi($3); - if(tag_data > 65535 || tag_data < 0 || - (tag_data == 0 && (strlen($3) != 1 || $3[0] != '0'))) - yyerror("edns-client-tag data invalid, needs to be a " - "number from 0 to 65535"); + OUTYY(("P(server_edns_client_string:%s %s)\n", $2, $3)); if(!cfg_str2list_insert( - &cfg_parser->cfg->edns_client_tags, $2, $3)) + &cfg_parser->cfg->edns_client_strings, $2, $3)) fatal_exit("out of memory adding " - "edns-client-tag"); + "edns-client-string"); } ; -server_edns_client_tag_opcode: VAR_EDNS_CLIENT_TAG_OPCODE STRING_ARG +server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG { - OUTYY(("P(edns_client_tag_opcode:%s)\n", $2)); + OUTYY(("P(edns_client_string_opcode:%s)\n", $2)); if(atoi($2) == 0 && strcmp($2, "0") != 0) yyerror("option code expected"); else if(atoi($2) > 65535 || atoi($2) < 0) yyerror("option code must be in interval [0, 65535]"); - else cfg_parser->cfg->edns_client_tag_opcode = atoi($2); + else cfg_parser->cfg->edns_client_string_opcode = atoi($2); } ; diff --git a/util/edns.c b/util/edns.c index c83a4a545..ddbb46e89 100644 --- a/util/edns.c +++ b/util/edns.c @@ -48,81 +48,84 @@ #include "util/data/msgparse.h" #include "util/data/msgreply.h" -struct edns_tags* edns_tags_create(void) +struct edns_strings* edns_strings_create(void) { - struct edns_tags* edns_tags = calloc(1, sizeof(struct edns_tags)); - if(!edns_tags) + struct edns_strings* edns_strings = calloc(1, + sizeof(struct edns_strings)); + if(!edns_strings) return NULL; - if(!(edns_tags->region = regional_create())) { - edns_tags_delete(edns_tags); + if(!(edns_strings->region = regional_create())) { + edns_strings_delete(edns_strings); return NULL; } - return edns_tags; + return edns_strings; } -void edns_tags_delete(struct edns_tags* edns_tags) +void edns_strings_delete(struct edns_strings* edns_strings) { - if(!edns_tags) + if(!edns_strings) return; - regional_destroy(edns_tags->region); - free(edns_tags); + regional_destroy(edns_strings->region); + free(edns_strings); } static int -edns_tags_client_insert(struct edns_tags* edns_tags, +edns_strings_client_insert(struct edns_strings* edns_strings, struct sockaddr_storage* addr, socklen_t addrlen, int net, - uint16_t tag_data) + const char* string) { - struct edns_tag_addr* eta = regional_alloc_zero(edns_tags->region, - sizeof(struct edns_tag_addr)); - if(!eta) + struct edns_string_addr* esa = regional_alloc_zero(edns_strings->region, + sizeof(struct edns_string_addr)); + if(!esa) return 0; - eta->tag_data = tag_data; - if(!addr_tree_insert(&edns_tags->client_tags, &eta->node, addr, addrlen, - net)) { - verbose(VERB_QUERY, "duplicate EDNS client tag ignored."); + esa->string_len = strlen(string); + esa->string = regional_alloc_init(edns_strings->region, string, + esa->string_len); + if(!esa->string) + return 0; + if(!addr_tree_insert(&edns_strings->client_strings, &esa->node, addr, + addrlen, net)) { + verbose(VERB_QUERY, "duplicate EDNS client string ignored."); } return 1; } -int edns_tags_apply_cfg(struct edns_tags* edns_tags, +int edns_strings_apply_cfg(struct edns_strings* edns_strings, struct config_file* config) { struct config_str2list* c; - regional_free_all(edns_tags->region); - addr_tree_init(&edns_tags->client_tags); + regional_free_all(edns_strings->region); + addr_tree_init(&edns_strings->client_strings); - for(c=config->edns_client_tags; c; c=c->next) { + for(c=config->edns_client_strings; c; c=c->next) { struct sockaddr_storage addr; socklen_t addrlen; int net; - uint16_t tag_data; log_assert(c->str && c->str2); if(!netblockstrtoaddr(c->str, UNBOUND_DNS_PORT, &addr, &addrlen, &net)) { - log_err("cannot parse EDNS client tag IP netblock: %s", - c->str); + log_err("cannot parse EDNS client string IP netblock: " + "%s", c->str); return 0; } - tag_data = atoi(c->str2); /* validated in config parser */ - if(!edns_tags_client_insert(edns_tags, &addr, addrlen, net, - tag_data)) { - log_err("out of memory while adding EDNS tags"); + if(!edns_strings_client_insert(edns_strings, &addr, addrlen, + net, c->str2)) { + log_err("out of memory while adding EDNS strings"); return 0; } } - edns_tags->client_tag_opcode = config->edns_client_tag_opcode; + edns_strings->client_string_opcode = config->edns_client_string_opcode; - addr_tree_init_parents(&edns_tags->client_tags); + addr_tree_init_parents(&edns_strings->client_strings); return 1; } -struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, +struct edns_string_addr* +edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen) { - return (struct edns_tag_addr*)addr_tree_lookup(tree, addr, addrlen); + return (struct edns_string_addr*)addr_tree_lookup(tree, addr, addrlen); } static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, diff --git a/util/edns.h b/util/edns.h index cf9f8707e..11742eb5b 100644 --- a/util/edns.h +++ b/util/edns.h @@ -50,58 +50,60 @@ struct comm_point; struct regional; /** - * Structure containing all EDNS tags. + * Structure containing all EDNS strings. */ -struct edns_tags { - /** Tree of EDNS client tags to use in upstream queries, per address - * prefix. Contains nodes of type edns_tag_addr. */ - rbtree_type client_tags; - /** EDNS opcode to use for client tags */ - uint16_t client_tag_opcode; +struct edns_strings { + /** Tree of EDNS client strings to use in upstream queries, per address + * prefix. Contains nodes of type edns_string_addr. */ + rbtree_type client_strings; + /** EDNS opcode to use for client strings */ + uint16_t client_string_opcode; /** region to allocate tree nodes in */ struct regional* region; }; /** - * EDNS tag. Node of rbtree, containing tag and prefix. + * EDNS string. Node of rbtree, containing string and prefix. */ -struct edns_tag_addr { +struct edns_string_addr { /** node in address tree, used for tree lookups. Need to be the first * member of this struct. */ struct addr_tree_node node; - /** tag data, in host byte ordering */ - uint16_t tag_data; + /** string, ascii format */ + uint8_t* string; + /** length of string */ + size_t string_len; }; /** - * Create structure to hold EDNS tags - * @return: newly created edns_tags, NULL on alloc failure. + * Create structure to hold EDNS strings + * @return: newly created edns_strings, NULL on alloc failure. */ -struct edns_tags* edns_tags_create(void); +struct edns_strings* edns_strings_create(void); -/** Delete EDNS tags structure - * @param edns_tags: struct to delete +/** Delete EDNS strings structure + * @param edns_strings: struct to delete */ -void edns_tags_delete(struct edns_tags* edns_tags); +void edns_strings_delete(struct edns_strings* edns_strings); /** - * Add configured EDNS tags - * @param edns_tags: edns tags to apply config to - * @param config: struct containing EDNS tags configuration + * Add configured EDNS strings + * @param edns_strings: edns strings to apply config to + * @param config: struct containing EDNS strings configuration * @return 0 on error */ -int edns_tags_apply_cfg(struct edns_tags* edns_tags, +int edns_strings_apply_cfg(struct edns_strings* edns_strings, struct config_file* config); /** - * Find tag for address. - * @param tree: tree containing EDNS tags per address prefix. + * Find string for address. + * @param tree: tree containing EDNS strings per address prefix. * @param addr: address to use for tree lookup * @param addrlen: length of address * @return: matching tree node, NULL otherwise */ -struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, +struct edns_string_addr* +edns_string_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); /** diff --git a/util/module.h b/util/module.h index 1eed21300..7b833f8ad 100644 --- a/util/module.h +++ b/util/module.h @@ -520,8 +520,8 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; - /** EDNS client tag information */ - struct edns_tags* edns_tags; + /** EDNS client string information */ + struct edns_strings* edns_strings; /* Make every mesh state unique, do not aggregate mesh states. */ int unique_mesh; From 52b04806f4236c37acd10179ab465a54adc7e86a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 1 Oct 2020 09:11:22 +0200 Subject: [PATCH 222/394] - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. --- configure | 50 +++++++++++++++++++------------------------------- configure.ac | 6 +++--- doc/Changelog | 3 +++ 3 files changed, 25 insertions(+), 34 deletions(-) diff --git a/configure b/configure index 680722769..c819b7bf1 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.11.1. +# Generated by GNU Autoconf 2.69 for unbound 1.12.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.11.1' -PACKAGE_STRING='unbound 1.11.1' +PACKAGE_VERSION='1.12.0' +PACKAGE_STRING='unbound 1.12.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -808,7 +808,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -958,7 +957,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1211,15 +1209,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1357,7 +1346,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1470,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.11.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.12.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1510,7 +1499,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1536,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.11.1:";; + short | recursive ) echo "Configuration of unbound 1.12.0:";; esac cat <<\_ACEOF @@ -1764,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.11.1 +unbound configure 1.12.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2473,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.11.1, which was +It was created by unbound $as_me 1.12.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2823,9 +2811,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=11 +UNBOUND_VERSION_MINOR=12 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2906,7 +2894,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 -# 1.11.1 had 9:10:1 +# 1.12.0 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -15705,7 +15693,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15751,7 +15739,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15775,7 +15763,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15820,7 +15808,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15844,7 +15832,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -21714,7 +21702,7 @@ _ACEOF -version=1.11.1 +version=1.12.0 date=`date +'%b %e, %Y'` @@ -22233,7 +22221,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.11.1, which was +This file was extended by unbound $as_me 1.12.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22299,7 +22287,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.11.1 +unbound config.status 1.12.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 8ccfafe6c..7d9879294 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[11]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MINOR],[12]) +m4_define([VERSION_MICRO],[0]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) @@ -95,7 +95,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 -# 1.11.1 had 9:10:1 +# 1.12.0 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 7672435d4..87f796398 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 October 2020: Wouter + - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. + 30 September 2020: Wouter - Fix doh tests when not compiled in. - Add dohclient test executable to gitignore. From ca497815b82587d5e7db7ddb83e9c30fa68585f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Oct 2020 09:09:55 +0200 Subject: [PATCH 223/394] - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 4 ++++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/configure b/configure index c819b7bf1..9a96bb232 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.12.0. +# Generated by GNU Autoconf 2.69 for unbound 1.12.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.12.0' -PACKAGE_STRING='unbound 1.12.0' +PACKAGE_VERSION='1.12.1' +PACKAGE_STRING='unbound 1.12.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1459,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.12.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.12.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.12.0:";; + short | recursive ) echo "Configuration of unbound 1.12.1:";; esac cat <<\_ACEOF @@ -1752,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.12.0 +unbound configure 1.12.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2461,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.12.0, which was +It was created by unbound $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2813,11 +2813,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=12 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=10 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2895,6 +2895,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 +# 1.12.1 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21702,7 +21703,7 @@ _ACEOF -version=1.12.0 +version=1.12.1 date=`date +'%b %e, %Y'` @@ -22221,7 +22222,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.12.0, which was +This file was extended by unbound $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22287,7 +22288,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.12.0 +unbound config.status 1.12.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 7d9879294..2bd44353d 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[12]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=10 +LIBUNBOUND_REVISION=11 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -96,6 +96,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 +# 1.12.1 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 87f796398..96f160f99 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 October 2020: Wouter + - Tag for 1.12.0 release. + - Current repo is version 1.12.1 in development. + 1 October 2020: Wouter - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. From a87f05be7b36c7c45eca249dfd9d998e31770a34 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 8 Oct 2020 09:11:54 +0200 Subject: [PATCH 224/394] - Fix #319: potential memory leak on config failure, in rpz config. --- doc/Changelog | 1 + services/rpz.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 96f160f99..c59352cfd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 8 October 2020: Wouter - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. + - Fix #319: potential memory leak on config failure, in rpz config. 1 October 2020: Wouter - Current repo is version 1.12.0 for release. Tag for 1.12.0rc1. diff --git a/services/rpz.c b/services/rpz.c index ba5dd186d..13304652c 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -440,6 +440,8 @@ err: respip_set_delete(r->respip_set); if(r->taglist) free(r->taglist); + if(r->region) + regional_destroy(r->region); free(r); } return NULL; From 795a33c6e54aac7c7c0217da37d20faaf78898ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Oct 2020 08:57:23 +0200 Subject: [PATCH 225/394] - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. --- dnstap/dnstap.c | 10 ++++------ dnstap/dtstream.c | 8 ++++++-- doc/Changelog | 4 ++++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index 0c8c6c4d4..b8a321670 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -134,15 +134,13 @@ dt_create(struct config_file* cfg) if(cfg->dnstap && cfg->dnstap_socket_path && cfg->dnstap_socket_path[0] && (cfg->dnstap_ip==NULL || cfg->dnstap_ip[0]==0)) { - char* p = fname_after_chroot(cfg->dnstap_socket_path, cfg, 1); - if(!p) { - log_err("malloc failure"); - return NULL; - } + char* p = cfg->dnstap_socket_path; + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(p, + cfg->chrootdir, strlen(cfg->chrootdir)) == 0) + p += strlen(cfg->chrootdir); verbose(VERB_OPS, "attempting to connect to dnstap socket %s", p); check_socket_file(p); - free(p); } env = (struct dt_env *) calloc(1, sizeof(struct dt_env)); diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index b0918c52c..f1ace3c34 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -341,15 +341,19 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) dtio->is_bidirectional = cfg->dnstap_bidirectional; if(dtio->upstream_is_unix) { + char* nm; if(!cfg->dnstap_socket_path || cfg->dnstap_socket_path[0]==0) { log_err("dnstap setup: no dnstap-socket-path for " "socket connect"); return 0; } + nm = cfg->dnstap_socket_path; + if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, + cfg->chrootdir, strlen(cfg->chrootdir)) == 0) + nm += strlen(cfg->chrootdir); free(dtio->socket_path); - dtio->socket_path = fname_after_chroot(cfg->dnstap_socket_path, - cfg, 1); + dtio->socket_path = strdup(nm); if(!dtio->socket_path) { log_err("dnstap setup: malloc failure"); return 0; diff --git a/doc/Changelog b/doc/Changelog index c59352cfd..035d040a9 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +9 October 2020: Wouter + - Fix dnstap socket and the chroot not applied properly to the dnstap + socket path. + 8 October 2020: Wouter - Tag for 1.12.0 release. - Current repo is version 1.12.1 in development. From fca884a7e639c34b9e29de41aa9fe9d8ba45708d Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 9 Oct 2020 14:31:55 +0200 Subject: [PATCH 226/394] - Fix warning in libnss compile, nss_buf2dsa is not used without DSA. --- doc/Changelog | 1 + validator/val_secalgo.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 035d040a9..e98876fca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 9 October 2020: Wouter - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. + - Fix warning in libnss compile, nss_buf2dsa is not used without DSA. 8 October 2020: Wouter - Tag for 1.12.0 release. diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 65bca8b69..15cccf017 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -990,6 +990,7 @@ static SECKEYPublicKey* nss_buf2ecdsa(unsigned char* key, size_t len, int algo) return pk; } +#if defined(USE_DSA) && defined(USE_SHA1) static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len) { SECKEYPublicKey* pk; @@ -1050,6 +1051,7 @@ static SECKEYPublicKey* nss_buf2dsa(unsigned char* key, size_t len) } return pk; } +#endif /* USE_DSA && USE_SHA1 */ static SECKEYPublicKey* nss_buf2rsa(unsigned char* key, size_t len) { From e6c560e5c9d7c1f332dadf47ddf3861f3289cbc9 Mon Sep 17 00:00:00 2001 From: James Renken Date: Mon, 12 Oct 2020 22:06:20 -0700 Subject: [PATCH 227/394] Add modern X.509v3 extensions to unbound-control TLS certificates --- smallapp/unbound-control-setup.sh.in | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/smallapp/unbound-control-setup.sh.in b/smallapp/unbound-control-setup.sh.in index 3e506e84e..6b5e0dbbf 100644 --- a/smallapp/unbound-control-setup.sh.in +++ b/smallapp/unbound-control-setup.sh.in @@ -124,8 +124,14 @@ default_bits=$BITS default_md=$HASH prompt=no distinguished_name=req_distinguished_name +x509_extensions=v3_ca [req_distinguished_name] commonName=$SERVERNAME +[v3_ca] +subjectKeyIdentifier=hash +authorityKeyIdentifier=keyid:always,issuer:always +basicConstraints=critical,CA:TRUE,pathlen:0 +subjectAltName=DNS:$SERVERNAME EOF [ -f server.cnf ] || fatal "cannot create openssl configuration" @@ -156,8 +162,12 @@ default_bits=$BITS default_md=$HASH prompt=no distinguished_name=req_distinguished_name +req_extensions=v3_req [req_distinguished_name] commonName=$CLIENTNAME +[v3_req] +basicConstraints=critical,CA:FALSE +subjectAltName=DNS:$CLIENTNAME EOF [ -f client.cnf ] || fatal "cannot create openssl configuration" From 79a8db1ee184ca9e6fa1e265c1970f7074c0bea1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 13 Oct 2020 08:28:59 +0200 Subject: [PATCH 228/394] - Fix #323: unbound testsuite fails on mock build in systemd-nspawn if systemd support is build. --- doc/Changelog | 4 ++++ testcode/do-tests.sh | 3 +++ testcode/run_vm.sh | 2 ++ testcode/testbound.c | 4 ++++ 4 files changed, 13 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e98876fca..f8cec1158 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +13 October 2020: Wouter + - Fix #323: unbound testsuite fails on mock build in systemd-nspawn + if systemd support is build. + 9 October 2020: Wouter - Fix dnstap socket and the chroot not applied properly to the dnstap socket path. diff --git a/testcode/do-tests.sh b/testcode/do-tests.sh index 5439f0f28..effb7c16a 100755 --- a/testcode/do-tests.sh +++ b/testcode/do-tests.sh @@ -29,6 +29,9 @@ else HAVE_MINGW=no fi +# stop tests from notifying systemd, if that is compiled in. +export -n NOTIFY_SOCKET + cd testdata; sh ../testcode/mini_tdir.sh clean rm -f .perfstats.txt diff --git a/testcode/run_vm.sh b/testcode/run_vm.sh index 5f599e144..363a32b52 100644 --- a/testcode/run_vm.sh +++ b/testcode/run_vm.sh @@ -40,6 +40,8 @@ cleanup() { exit 0 } trap cleanup INT +# stop tests from notifying systemd, if that is compiled in. +export -n NOTIFY_SOCKET for t in $RUNLIST do diff --git a/testcode/testbound.c b/testcode/testbound.c index 602dffaff..3f3e106b0 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -362,6 +362,10 @@ main(int argc, char* argv[]) /* we do not want the test to depend on the timezone */ (void)putenv("TZ=UTC"); memset(pass_argv, 0, sizeof(pass_argv)); +#ifdef HAVE_SYSTEMD + /* we do not want the test to use systemd daemon startup notification*/ + (void)unsetenv("NOTIFY_SOCKET"); +#endif /* HAVE_SYSTEMD */ log_init(NULL, 0, NULL); /* determine commandline options for the daemon */ From 72032a95bb254c6c1b16ddcdf50352152141b524 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 10:06:28 +0200 Subject: [PATCH 229/394] - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does not drop it and attempt to modify the reply list during reply. --- doc/Changelog | 5 +++++ services/mesh.c | 29 +++++++++++++---------------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f8cec1158..97959cf26 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +14 October 2020: Wouter + - Fix for python reply callback to see mesh state reply_list member, + it only removes it briefly for the commpoint call so that it does + not drop it and attempt to modify the reply list during reply. + 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn if systemd support is build. diff --git a/services/mesh.c b/services/mesh.c index 52ff97e4a..8f746ea8e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1196,6 +1196,12 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, /* Copy the client's EDNS for later restore, to make sure the edns * compare is with the correct edns options. */ struct edns_data edns_bak = r->edns; + /* briefly set the replylist to null in case the + * meshsendreply calls tcpreqinfo sendreply that + * comm_point_drops because of size, and then the + * null stops the mesh state remove and thus + * reply_list modification and accounting */ + struct mesh_reply* rlist = m->reply_list; /* examine security status */ if(m->s.env->need_to_validate && (!(r->qflags&BIT_CD) || m->s.env->cfg->ignore_cd) && rep && @@ -1236,7 +1242,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, sldns_buffer_write_at(r_buffer, 0, &r->qid, sizeof(uint16_t)); sldns_buffer_write_at(r_buffer, 12, r->qname, m->s.qinfo.qname_len); + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } else if(rcode) { m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; @@ -1251,7 +1259,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, r->qflags, &r->edns); + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } else { size_t udp_size = r->edns.udp_size; r->edns.edns_version = EDNS_ADVERTISED_VERSION; @@ -1277,7 +1287,9 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, &m->s.qinfo, r->qid, r->qflags, &r->edns); } r->edns = edns_bak; + m->reply_list = NULL; comm_point_send_reply(&r->query_reply); + m->reply_list = rlist; } /* account */ log_assert(m->s.env->mesh->num_reply_addrs > 0); @@ -1365,20 +1377,12 @@ void mesh_query_done(struct mesh_state* mstate) mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; - struct mesh_reply* rlist = mstate->reply_list; if(r->query_reply.c->tcp_req_info) { r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; prev_buffer = NULL; } - /* briefly set the replylist to null in case the - * meshsendreply calls tcpreqinfo sendreply that - * comm_point_drops because of size, and then the - * null stops the mesh state remove and thus - * reply_list modification and accounting */ - mstate->reply_list = NULL; mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, r_buffer, prev, prev_buffer); - mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) { tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); r_buffer = NULL; @@ -1894,7 +1898,7 @@ mesh_serve_expired_callback(void* arg) { struct mesh_state* mstate = (struct mesh_state*) arg; struct module_qstate* qstate = &mstate->s; - struct mesh_reply* r, *rlist; + struct mesh_reply* r; struct mesh_area* mesh = qstate->env->mesh; struct dns_msg* msg; struct mesh_cb* c; @@ -1999,15 +2003,8 @@ mesh_serve_expired_callback(void* arg) r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; - /* briefly set the replylist to null in case the meshsendreply - * calls tcpreqinfo sendreply that comm_point_drops because - * of size, and then the null stops the mesh state remove and - * thus reply_list modification and accounting */ - rlist = mstate->reply_list; - mstate->reply_list = NULL; mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep, r, r_buffer, prev, prev_buffer); - mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; From a9e13f3590f2e6bdba50eb8a3825d2c8e2362778 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:01:47 +0200 Subject: [PATCH 230/394] - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. --- doc/Changelog | 2 ++ services/mesh.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 97959cf26..4d35a747e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does not drop it and attempt to modify the reply list during reply. + - Fix that if there are on reply callbacks, those are called per + reply and a new message created if that was modified by the call. 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn diff --git a/services/mesh.c b/services/mesh.c index 8f746ea8e..c22ef43fa 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1235,7 +1235,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0) { + == 0 && !env->inplace_cb_lists[inplace_cb_reply]) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); From f0c19be06f7148edaf14f159ea3e671075f45e99 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:03:04 +0200 Subject: [PATCH 231/394] - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. --- services/mesh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/mesh.c b/services/mesh.c index c22ef43fa..810865933 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1235,7 +1235,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0 && !env->inplace_cb_lists[inplace_cb_reply]) { + == 0 && !m->s.env->inplace_cb_lists[inplace_cb_reply]) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); From 890c8deb0fdc05cbf03c1c15ffa8698ece07d655 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 14 Oct 2020 14:20:16 +0200 Subject: [PATCH 232/394] - Free up auth zone parse region after use for lookup of host --- doc/Changelog | 1 + services/authzone.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4d35a747e..c7076fd62 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ not drop it and attempt to modify the reply list during reply. - Fix that if there are on reply callbacks, those are called per reply and a new message created if that was modified by the call. + - Free up auth zone parse region after use for lookup of host 13 October 2020: Wouter - Fix #323: unbound testsuite fails on mock build in systemd-nspawn diff --git a/services/authzone.c b/services/authzone.c index a26d1003a..15be5d60c 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -5387,6 +5387,7 @@ void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer* buf, verbose(VERB_ALGO, "auth zone %s host %s type %s transfer lookup has no answer", zname, xfr->task_transfer->lookup_target->host, (xfr->task_transfer->lookup_aaaa?"AAAA":"A")); } } + regional_free_all(temp); } else { if(verbosity >= VERB_ALGO) { char zname[255+1]; @@ -6444,6 +6445,7 @@ void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer* buf, verbose(VERB_ALGO, "auth zone %s host %s type %s probe lookup has no address", zname, xfr->task_probe->lookup_target->host, (xfr->task_probe->lookup_aaaa?"AAAA":"A")); } } + regional_free_all(temp); } else { if(verbosity >= VERB_ALGO) { char zname[255+1]; From b1a50720e5675f86e9ffa9042453a5d686366ba0 Mon Sep 17 00:00:00 2001 From: netblue30 Date: Wed, 14 Oct 2020 11:32:14 -0400 Subject: [PATCH 233/394] DoH: implement content-lenght header field --- services/listen_dnsport.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 3a98c2642..796d62a37 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2177,9 +2177,10 @@ int http2_submit_dns_response(struct http2_session* h2_session) int ret; nghttp2_data_provider data_prd; char status[4]; - nghttp2_nv headers[2]; + nghttp2_nv headers[3]; struct http2_stream* h2_stream = h2_session->c->h2_stream; size_t rlen; + char rlen_str[6]; // big enough to hold a uint16_t number if(h2_stream->rbuffer) { log_err("http2 submit response error: rbuffer already " @@ -2198,6 +2199,13 @@ int http2_submit_dns_response(struct http2_session* h2_session) } rlen = sldns_buffer_remaining(h2_session->c->buffer); + int rv = snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); + if (rv <= 0 || rv >= sizeof(rlen_str)) { + verbose(VERB_QUERY, "http2: submit response error: " + "data buffer too large"); + return 0; + } + lock_basic_lock(&http2_response_buffer_count_lock); if(http2_response_buffer_count + rlen > http2_response_buffer_max) { lock_basic_unlock(&http2_response_buffer_count_lock); @@ -2228,13 +2236,11 @@ int http2_submit_dns_response(struct http2_session* h2_session) headers[1].valuelen = 23; headers[1].flags = NGHTTP2_NV_FLAG_NONE; - /*TODO be nice and add the content-length header headers[2].name = (uint8_t*)"content-length"; headers[2].namelen = 14; - headers[2].value = - headers[2].valuelen = + headers[2].value = rlen_str; + headers[2].valuelen = strlen(rlen_str); headers[2].flags = NGHTTP2_NV_FLAG_NONE; - */ sldns_buffer_write(h2_stream->rbuffer, sldns_buffer_current(h2_session->c->buffer), @@ -2244,7 +2250,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) data_prd.source.ptr = h2_session; data_prd.read_callback = http2_submit_response_read_callback; ret = nghttp2_submit_response(h2_session->session, h2_stream->stream_id, - headers, 2, &data_prd); + headers, 3, &data_prd); if(ret) { verbose(VERB_QUERY, "http2: set_stream_user_data failed, " "error: %s", nghttp2_strerror(ret)); From edc8f363a72951ad86112b07f64ce0a8f0495723 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 15 Oct 2020 08:22:42 +0200 Subject: [PATCH 234/394] Changelog note for #326 and changes: - DoH content length, simplify code, remove declaration after statement and fix cast warning. --- doc/Changelog | 6 ++++++ services/listen_dnsport.c | 11 +++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c7076fd62..2d8c69e37 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +15 October 2020: Wouter + - Merge PR #326 from netblue30: DoH: implement content-length + header field + - DoH content length, simplify code, remove declaration after + statement and fix cast warning. + 14 October 2020: Wouter - Fix for python reply callback to see mesh state reply_list member, it only removes it briefly for the commpoint call so that it does diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 796d62a37..1cdb32a9c 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2180,7 +2180,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) nghttp2_nv headers[3]; struct http2_stream* h2_stream = h2_session->c->h2_stream; size_t rlen; - char rlen_str[6]; // big enough to hold a uint16_t number + char rlen_str[32]; if(h2_stream->rbuffer) { log_err("http2 submit response error: rbuffer already " @@ -2199,12 +2199,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) } rlen = sldns_buffer_remaining(h2_session->c->buffer); - int rv = snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); - if (rv <= 0 || rv >= sizeof(rlen_str)) { - verbose(VERB_QUERY, "http2: submit response error: " - "data buffer too large"); - return 0; - } + snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); lock_basic_lock(&http2_response_buffer_count_lock); if(http2_response_buffer_count + rlen > http2_response_buffer_max) { @@ -2238,7 +2233,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) headers[2].name = (uint8_t*)"content-length"; headers[2].namelen = 14; - headers[2].value = rlen_str; + headers[2].value = (uint8_t*)rlen_str; headers[2].valuelen = strlen(rlen_str); headers[2].flags = NGHTTP2_NV_FLAG_NONE; From d55084ea9e9089174ab9b4bc218f884d2095b50f Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 15 Oct 2020 15:53:16 +0200 Subject: [PATCH 235/394] - Fix that if there are reply callbacks for the given rcode, those are called per reply and a new message created if that was modified by the call. - Pass the comm_reply information to the inplace_cb_reply* functions during the mesh state and update the documentation on that. --- doc/Changelog | 7 ++++++ pythonmod/doc/examples/example6.rst | 7 ------ pythonmod/doc/modules/functions.rst | 5 +++- pythonmod/examples/inplace_callbacks.py | 30 +++-------------------- services/mesh.c | 32 +++++++++++++++---------- util/data/msgreply.h | 2 +- 6 files changed, 34 insertions(+), 49 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2d8c69e37..c97b24ec0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,10 @@ +15 October 2020: George + - Fix that if there are reply callbacks for the given rcode, those + are called per reply and a new message created if that was modified + by the call. + - Pass the comm_reply information to the inplace_cb_reply* functions + during the mesh state and update the documentation on that. + 15 October 2020: Wouter - Merge PR #326 from netblue30: DoH: implement content-length header field diff --git a/pythonmod/doc/examples/example6.rst b/pythonmod/doc/examples/example6.rst index d294fb8be..fd6caf74d 100644 --- a/pythonmod/doc/examples/example6.rst +++ b/pythonmod/doc/examples/example6.rst @@ -60,7 +60,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh states. :return: True on success, False on failure. @@ -105,8 +104,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -154,8 +151,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -201,8 +196,6 @@ The callback function's prototype is the following: :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. diff --git a/pythonmod/doc/modules/functions.rst b/pythonmod/doc/modules/functions.rst index 43c66eb38..6ded3bf7a 100644 --- a/pythonmod/doc/modules/functions.rst +++ b/pythonmod/doc/modules/functions.rst @@ -89,7 +89,7 @@ EDNS options Inplace callbacks ----------------- -.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region) +.. function:: inplace_cb_reply(qinfo, qstate, rep, rcode, edns, opt_list_out, region, \*\*kwargs) Function prototype for callback functions used in `register_inplace_cb_reply`_, `register_inplace_cb_reply_cache`_, @@ -102,6 +102,9 @@ Inplace callbacks :param edns: :class:`edns_data` :param opt_list_out: :class:`edns_option`. EDNS option list to append options to. :param region: :class:`regional` + :param \*\*kwargs: Dictionary that may contain parameters added in a future + release. Current parameters: + ``repinfo``: :class:`comm_reply`. Reply information for a communication point. .. function:: inplace_cb_query(qinfo, flags, qstate, addr, zone, region) diff --git a/pythonmod/examples/inplace_callbacks.py b/pythonmod/examples/inplace_callbacks.py index 768c2d013..de375b4e1 100644 --- a/pythonmod/examples/inplace_callbacks.py +++ b/pythonmod/examples/inplace_callbacks.py @@ -43,7 +43,7 @@ # This query returns SERVFAIL as the txt record of bogus.nlnetlabs.nl is # intentionally bogus. The reply will contain an empty EDNS option # with option code 65003. -# Unbound will also log the source address(es) of the client(s) that made +# Unbound will also log the source address of the client that made # the request. # (unbound needs to be validating for this example to work) @@ -91,8 +91,6 @@ def inplace_reply_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -121,8 +119,6 @@ def inplace_cache_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -173,8 +169,6 @@ def inplace_local_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. @@ -205,13 +199,11 @@ def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, :param **kwargs: Dictionary that may contain parameters added in a future release. Current parameters: ``repinfo``: Reply information for a communication point (comm_reply). - It is None when the callback happens in the mesh - states(modules). :return: True on success, False on failure. For demonstration purposes we want to reply with an empty EDNS code '65003' - and log the IP address(es) of the client(s). + and log the IP address of the client. """ log_info("python: called back while servfail.") @@ -219,30 +211,14 @@ def inplace_servfail_callback(qinfo, qstate, rep, rcode, edns, opt_list_out, b = bytearray.fromhex("") edns_opt_list_append(opt_list_out, 65003, b, region) - # Log the client(s) IP address(es) + # Log the client's IP address comm_reply = kwargs['repinfo'] if comm_reply: - # If it is not None this callback was called before the query reached - # the mesh states(modules). There is only one client associated with - # this query. addr = comm_reply.addr port = comm_reply.port addr_family = comm_reply.family log_info("python: Client IP: {}({}), port: {}" "".format(addr, addr_family, port)) - else: - # If it is not None this callback was called while the query is in the - # mesh states(modules). In this case they may be multiple clients - # waiting for this query. - # The following code is the same as with the resip.py example. - rl = qstate.mesh_info.reply_list - while (rl): - if rl.query_reply: - q = rl.query_reply - log_info("python: Client IP: {}({}), port: {}" - "".format(q.addr, q.family, q.port)) - rl = rl.next - return True diff --git a/services/mesh.c b/services/mesh.c index 810865933..cd9050936 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1224,18 +1224,24 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, r->h2_stream->mesh_state = NULL; } /* send the reply */ - /* We don't reuse the encoded answer if either the previous or current - * response has a local alias. We could compare the alias records - * and still reuse the previous answer if they are the same, but that - * would be complicated and error prone for the relatively minor case. - * So we err on the side of safety. */ - if(prev && prev_buffer && prev->qflags == r->qflags && + /* We don't reuse the encoded answer if: + * - either the previous or current response has a local alias. We could + * compare the alias records and still reuse the previous answer if they + * are the same, but that would be complicated and error prone for the + * relatively minor case. So we err on the side of safety. + * - there are registered callback functions for the given rcode, as these + * need to be called for each reply. */ + if(((rcode != LDNS_RCODE_SERVFAIL && + !m->s.env->inplace_cb_lists[inplace_cb_reply]) || + (rcode == LDNS_RCODE_SERVFAIL && + !m->s.env->inplace_cb_lists[inplace_cb_reply_servfail])) && + prev && prev_buffer && prev->qflags == r->qflags && !prev->local_alias && !r->local_alias && - prev->edns.edns_present == r->edns.edns_present && - prev->edns.bits == r->edns.bits && + prev->edns.edns_present == r->edns.edns_present && + prev->edns.bits == r->edns.bits && prev->edns.udp_size == r->edns.udp_size && edns_opt_list_compare(prev->edns.opt_list, r->edns.opt_list) - == 0 && !m->s.env->inplace_cb_lists[inplace_cb_reply]) { + == 0) { /* if the previous reply is identical to this one, fix ID */ if(prev_buffer != r_buffer) sldns_buffer_copy(r_buffer, prev_buffer); @@ -1250,11 +1256,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, rcode, &r->edns, NULL, m->s.region)) + rep, rcode, &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, - &r->edns, NULL, m->s.region)) + &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, @@ -1271,7 +1277,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, - LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region) || + LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region) || !apply_edns_options(&r->edns, &edns_bak, m->s.env->cfg, r->query_reply.c, m->s.region) || @@ -1281,7 +1287,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, LDNS_RCODE_SERVFAIL, &r->edns, NULL, m->s.region)) + rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region)) r->edns.opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 8d75f9b12..385780268 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -552,7 +552,7 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); * @param rep: Reply info. Could be NULL. * @param rcode: return code. * @param edns: edns data of the reply. - * @param repinfo: comm_reply. NULL. + * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. * @return false on failure (a callback function returned an error). */ From 1d11f470df7691488ac348b3420f0f891f173674 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 16 Oct 2020 17:12:08 +0200 Subject: [PATCH 236/394] - local-zone regional allocations outside of chunk to prevent large chunk per small local-zone allocations. --- services/localzone.c | 2 +- util/regional.c | 28 ++++++++++++++++++++++++---- util/regional.h | 10 ++++++++++ 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/services/localzone.c b/services/localzone.c index 6aaf0c055..cad460663 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -157,7 +157,7 @@ local_zone_create(uint8_t* nm, size_t len, int labs, z->namelen = len; z->namelabs = labs; lock_rw_init(&z->lock); - z->region = regional_create_custom(sizeof(struct regional)); + z->region = regional_create_nochunk(sizeof(struct regional)); if(!z->region) { free(z); return NULL; diff --git a/util/regional.c b/util/regional.c index ff36d0e21..01a042b61 100644 --- a/util/regional.c +++ b/util/regional.c @@ -80,18 +80,38 @@ regional_init(struct regional* r) r->total_large = 0; } -struct regional* -regional_create_custom(size_t size) +/** + * Create a new region, with custom first block and large-object sizes. + * @param size: length of first block. + * @param large_object_size: outside of chunk allocation threshold. + * @return: newly allocated regional. + */ +static struct regional* +regional_create_custom_large_object(size_t size, size_t large_object_size) { struct regional* r = (struct regional*)malloc(size); size = ALIGN_UP(size, ALIGNMENT); log_assert(sizeof(struct regional) <= size); if(!r) return NULL; r->first_size = size; + r->large_object_size = large_object_size; regional_init(r); return r; } +struct regional* +regional_create_custom(size_t size) +{ + return regional_create_custom_large_object(size, + REGIONAL_LARGE_OBJECT_SIZE); +} + +struct regional* +regional_create_nochunk(size_t size) +{ + return regional_create_custom_large_object(size, 0); +} + void regional_free_all(struct regional *r) { @@ -134,7 +154,7 @@ regional_alloc(struct regional *r, size_t size) malloc and ALIGN_UP */ a = ALIGN_UP(size, ALIGNMENT); /* large objects */ - if(a > REGIONAL_LARGE_OBJECT_SIZE) { + if(a > r->large_object_size) { s = malloc(ALIGNMENT + size); if(!s) return NULL; r->total_large += ALIGNMENT+size; @@ -219,7 +239,7 @@ regional_log_stats(struct regional *r) /* some basic assertions put here (non time critical code) */ log_assert(ALIGNMENT >= sizeof(char*)); log_assert(REGIONAL_CHUNK_SIZE > ALIGNMENT); - log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > REGIONAL_LARGE_OBJECT_SIZE); + log_assert(REGIONAL_CHUNK_SIZE-ALIGNMENT > r->large_object_size); log_assert(REGIONAL_CHUNK_SIZE >= sizeof(struct regional)); /* debug print */ log_info("regional %u chunks, %u large", diff --git a/util/regional.h b/util/regional.h index e8b2cb8d0..eeb7de7b5 100644 --- a/util/regional.h +++ b/util/regional.h @@ -74,6 +74,8 @@ struct regional size_t available; /** current chunk data position. */ char* data; + /** threshold for outside of chunk allocations */ + size_t large_object_size; }; /** @@ -88,6 +90,14 @@ struct regional* regional_create(void); * @return: newly allocated regional. */ struct regional* regional_create_custom(size_t size); + +/** + * Create a new region, with custom settings, that will allocate everything + * outside the region chunk. + * @param size: length of first block. + * @return: newly allocated regional. + */ +struct regional* regional_create_nochunk(size_t size); /** * Free all memory associated with regional. Only keeps the first block with From f81d0ac0474cc8904e1240a512b935c8e466f81b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 16 Oct 2020 17:26:58 +0200 Subject: [PATCH 237/394] - Fix that the out of order TCP processing does not limit the number of outstanding queries over a connection. --- doc/Changelog | 4 ++++ services/listen_dnsport.c | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c97b24ec0..3f291bed6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +16 October 2020: Wouter + - Fix that the out of order TCP processing does not limit the + number of outstanding queries over a connection. + 15 October 2020: George - Fix that if there are reply callbacks for the given rcode, those are called per reply and a new message created if that was modified diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 1cdb32a9c..ad73fad01 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -82,7 +82,7 @@ #define TCP_BACKLOG 256 /** number of simultaneous requests a client can have */ -#define TCP_MAX_REQ_SIMULTANEOUS 32 +/* #define TCP_MAX_REQ_SIMULTANEOUS 32 */ #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ @@ -1804,7 +1804,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) if(!req->cp->tcp_is_reading) wr = 1; - if(req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS && + if(/*req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS &&*/ !req->read_is_closed) rd = 1; From 46607e7c0c54f58fed15ae8643ecdd1252de9cae Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 09:06:33 +0200 Subject: [PATCH 238/394] - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. --- doc/Changelog | 5 +++++ util/config_file.c | 10 +++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3f291bed6..8a8e7ffe1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +19 October 2020: Wouter + - Fix that http settings have colon in set_option, for + http-endpoint, http-max-streams, http-query-buffer-size, + http-response-buffer-size, and http-nodelay. + 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the number of outstanding queries over a connection. diff --git a/util/config_file.c b/util/config_file.c index b789c3359..25cba18b7 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -522,11 +522,11 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STR("tls-ciphersuites:", tls_ciphersuites) else S_YNO("tls-use-sni:", tls_use_sni) else S_NUMBER_NONZERO("https-port:", https_port) - else S_STR("http-endpoint", http_endpoint) - else S_NUMBER_NONZERO("http-max-streams", http_max_streams) - else S_MEMSIZE("http-query-buffer-size", http_query_buffer_size) - else S_MEMSIZE("http-response-buffer-size", http_response_buffer_size) - else S_YNO("http-nodelay", http_nodelay) + else S_STR("http-endpoint:", http_endpoint) + else S_NUMBER_NONZERO("http-max-streams:", http_max_streams) + else S_MEMSIZE("http-query-buffer-size:", http_query_buffer_size) + else S_MEMSIZE("http-response-buffer-size:", http_response_buffer_size) + else S_YNO("http-nodelay:", http_nodelay) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) From ba074c8bef105b968164060440c21b8c2c614794 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:14:40 +0200 Subject: [PATCH 239/394] - Fix memory leak of https port string when reading config. --- doc/Changelog | 1 + util/configparser.c | 2007 +++++++++++++++++++++---------------------- util/configparser.h | 4 +- util/configparser.y | 1 + 4 files changed, 963 insertions(+), 1050 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 8a8e7ffe1..49dab107c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. + - Fix memory leak of https port string when reading config. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/configparser.c b/util/configparser.c index ba5054eb4..50788a0c5 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5.1" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,15 +97,6 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -749,7 +740,7 @@ union YYSTYPE char* str; -#line 753 "util/configparser.c" +#line 744 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -770,83 +761,36 @@ int yyparse (void); # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -854,19 +798,7 @@ typedef int yytype_uint16; # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -880,20 +812,22 @@ typedef int yy_state_fast_t; # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ @@ -905,11 +839,11 @@ typedef int yy_state_fast_t; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -922,18 +856,6 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - #define YY_ASSERT(E) ((void) (0 && (E))) @@ -1012,17 +934,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -1035,11 +957,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -1051,12 +973,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -1082,15 +1004,14 @@ union yyalloc #define YYUNDEFTOK 2 #define YYMAXUTOK 554 - /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_int16 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1152,7 +1073,7 @@ static const yytype_int16 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint16 yyrline[] = { 0, 184, 184, 184, 185, 185, 186, 186, 187, 187, 187, 188, 188, 189, 189, 190, 190, 191, 193, 199, @@ -1187,36 +1108,36 @@ static const yytype_int16 yyrline[] = 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 986, 1002, 1010, 1018, 1026, 1034, 1043, - 1052, 1066, 1075, 1084, 1093, 1102, 1111, 1120, 1127, 1134, - 1160, 1168, 1175, 1182, 1189, 1196, 1204, 1212, 1220, 1227, - 1238, 1249, 1256, 1265, 1274, 1283, 1290, 1297, 1305, 1313, - 1323, 1333, 1343, 1357, 1365, 1378, 1389, 1397, 1410, 1419, - 1428, 1437, 1447, 1457, 1465, 1478, 1487, 1495, 1504, 1512, - 1525, 1534, 1541, 1551, 1561, 1571, 1581, 1591, 1601, 1611, - 1621, 1628, 1635, 1642, 1651, 1660, 1669, 1678, 1685, 1695, - 1715, 1722, 1740, 1753, 1766, 1775, 1784, 1793, 1802, 1812, - 1822, 1833, 1842, 1851, 1860, 1869, 1878, 1887, 1900, 1913, - 1922, 1929, 1938, 1947, 1956, 1965, 1973, 1986, 1994, 2035, - 2042, 2057, 2067, 2077, 2084, 2091, 2098, 2107, 2115, 2129, - 2150, 2171, 2183, 2195, 2207, 2216, 2237, 2247, 2256, 2264, - 2272, 2285, 2298, 2313, 2328, 2337, 2346, 2352, 2361, 2370, - 2380, 2390, 2403, 2416, 2428, 2442, 2454, 2468, 2483, 2494, - 2504, 2511, 2518, 2527, 2536, 2546, 2556, 2566, 2573, 2580, - 2589, 2598, 2608, 2618, 2625, 2632, 2639, 2647, 2657, 2667, - 2677, 2687, 2726, 2736, 2744, 2752, 2767, 2776, 2781, 2782, - 2783, 2783, 2783, 2784, 2784, 2784, 2785, 2785, 2787, 2797, - 2806, 2813, 2820, 2827, 2834, 2841, 2848, 2853, 2854, 2855, - 2855, 2855, 2856, 2856, 2856, 2857, 2858, 2858, 2859, 2859, - 2860, 2860, 2861, 2862, 2863, 2864, 2865, 2866, 2868, 2877, - 2887, 2894, 2901, 2910, 2917, 2924, 2931, 2938, 2947, 2956, - 2963, 2970, 2980, 2990, 3000, 3010, 3020, 3030, 3035, 3036, - 3037, 3039, 3045, 3050, 3051, 3052, 3054, 3060, 3070, 3077, - 3086, 3094, 3099, 3100, 3102, 3102, 3102, 3103, 3103, 3104, - 3105, 3106, 3107, 3108, 3110, 3120, 3129, 3136, 3145, 3152, - 3161, 3169, 3182, 3190, 3203, 3208, 3209, 3210, 3210, 3211, - 3211, 3211, 3212, 3214, 3226, 3238, 3250, 3265, 3278, 3291, - 3302, 3307, 3308, 3309, 3309, 3311, 3326 + 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, 1044, + 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, + 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, + 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, + 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, + 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, + 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, + 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, + 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, + 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, + 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, + 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, + 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, + 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, + 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2484, 2495, + 2505, 2512, 2519, 2528, 2537, 2547, 2557, 2567, 2574, 2581, + 2590, 2599, 2609, 2619, 2626, 2633, 2640, 2648, 2658, 2668, + 2678, 2688, 2727, 2737, 2745, 2753, 2768, 2777, 2782, 2783, + 2784, 2784, 2784, 2785, 2785, 2785, 2786, 2786, 2788, 2798, + 2807, 2814, 2821, 2828, 2835, 2842, 2849, 2854, 2855, 2856, + 2856, 2856, 2857, 2857, 2857, 2858, 2859, 2859, 2860, 2860, + 2861, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2869, 2878, + 2888, 2895, 2902, 2911, 2918, 2925, 2932, 2939, 2948, 2957, + 2964, 2971, 2981, 2991, 3001, 3011, 3021, 3031, 3036, 3037, + 3038, 3040, 3046, 3051, 3052, 3053, 3055, 3061, 3071, 3078, + 3087, 3095, 3100, 3101, 3103, 3103, 3103, 3104, 3104, 3105, + 3106, 3107, 3108, 3109, 3111, 3121, 3130, 3137, 3146, 3153, + 3162, 3170, 3183, 3191, 3204, 3209, 3210, 3211, 3211, 3212, + 3212, 3212, 3213, 3215, 3227, 3239, 3251, 3266, 3279, 3292, + 3303, 3308, 3309, 3310, 3310, 3312, 3327 }; #endif @@ -1472,7 +1393,7 @@ static const char *const yytname[] = # 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[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1507,14 +1428,14 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-288) +#define YYPACT_NINF -288 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-288))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1619,7 +1540,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int16 yydefact[] = +static const yytype_uint16 yydefact[] = { 2, 0, 1, 18, 19, 224, 234, 507, 567, 526, 243, 581, 604, 253, 620, 269, 572, 3, 17, 21, @@ -1795,7 +1716,7 @@ static const yytype_int16 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_uint16 yytable[] = { 2, 493, 478, 450, 582, 451, 452, 465, 622, 623, 585, 3, 4, 627, 628, 466, 467, 609, 610, 611, @@ -1933,7 +1854,7 @@ static const yytype_int16 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +static const yytype_uint16 yystos[] = { 0, 301, 0, 11, 12, 46, 52, 96, 112, 159, 218, 236, 253, 262, 286, 290, 296, 302, 303, 304, @@ -2031,7 +1952,7 @@ static const yytype_int16 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = +static const yytype_uint16 yyr1[] = { 0, 300, 301, 301, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, @@ -2099,7 +2020,7 @@ static const yytype_int16 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2249,9 +2170,7 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2275,7 +2194,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2298,19 +2217,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[+yyssp[yyi + 1 - yynrhs]], + yystos[yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2355,13 +2274,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# define yystrlen strlen # else /* Return the length of YYSTR. */ -static YYPTRDIFF_T +static YYSIZE_T yystrlen (const char *yystr) { - YYPTRDIFF_T yylen; + YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2397,12 +2316,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYPTRDIFF_T +static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYPTRDIFF_T yyn = 0; + YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2433,10 +2352,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else + if (! yyres) return yystrlen (yystr); + + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2449,19 +2368,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ + /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2488,9 +2407,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[+*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; + int yyn = yypact[*yyssp]; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2515,8 +2432,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2543,9 +2459,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2575,8 +2489,8 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } else { - ++yyp; - ++yyformat; + yyp++; + yyformat++; } } return 0; @@ -2619,7 +2533,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2631,16 +2545,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYPTRDIFF_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -2654,7 +2568,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2686,14 +2600,12 @@ yynewstate: /*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | +| yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2701,23 +2613,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2731,10 +2643,9 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2748,10 +2659,8 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2817,13 +2726,14 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -2860,23 +2770,23 @@ yyreduce: { case 18: #line 194 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2867 "util/configparser.c" +#line 2777 "util/configparser.c" break; case 19: #line 200 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2875 "util/configparser.c" +#line 2785 "util/configparser.c" break; case 224: #line 298 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2886,12 +2796,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2890 "util/configparser.c" +#line 2800 "util/configparser.c" break; case 234: #line 315 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2901,12 +2811,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2905 "util/configparser.c" +#line 2815 "util/configparser.c" break; case 243: #line 332 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2918,12 +2828,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2922 "util/configparser.c" +#line 2832 "util/configparser.c" break; case 253: #line 351 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2938,12 +2848,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2942 "util/configparser.c" +#line 2852 "util/configparser.c" break; case 264: #line 375 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2959,12 +2869,12 @@ yyreduce: } } -#line 2963 "util/configparser.c" +#line 2873 "util/configparser.c" break; case 265: #line 394 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2978,44 +2888,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2982 "util/configparser.c" +#line 2892 "util/configparser.c" break; case 266: #line 411 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2992 "util/configparser.c" +#line 2902 "util/configparser.c" break; case 267: #line 419 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3004 "util/configparser.c" +#line 2914 "util/configparser.c" break; case 268: #line 429 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3014 "util/configparser.c" +#line 2924 "util/configparser.c" break; case 269: #line 437 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3030,36 +2940,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 3034 "util/configparser.c" +#line 2944 "util/configparser.c" break; case 282: #line 460 "./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) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 2956 "util/configparser.c" break; case 283: #line 469 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 2968 "util/configparser.c" break; case 284: #line 478 "./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) cfg_parser->cfg->stat_interval = 0; @@ -3068,48 +2978,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3072 "util/configparser.c" +#line 2982 "util/configparser.c" break; case 285: #line 489 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 2994 "util/configparser.c" break; case 286: #line 498 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3006 "util/configparser.c" break; case 287: #line 507 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3108 "util/configparser.c" +#line 3018 "util/configparser.c" break; case 288: #line 516 "./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) cfg_parser->cfg->shm_key = 0; @@ -3118,24 +3028,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3122 "util/configparser.c" +#line 3032 "util/configparser.c" break; case 289: #line 527 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3134 "util/configparser.c" +#line 3044 "util/configparser.c" break; case 290: #line 536 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3145,12 +3055,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3149 "util/configparser.c" +#line 3059 "util/configparser.c" break; case 291: #line 548 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3161,12 +3071,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3165 "util/configparser.c" +#line 3075 "util/configparser.c" break; case 292: #line 562 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3179,12 +3089,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3183 "util/configparser.c" +#line 3093 "util/configparser.c" break; case 293: #line 577 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3193,12 +3103,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3197 "util/configparser.c" +#line 3107 "util/configparser.c" break; case 294: #line 588 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3213,12 +3123,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3217 "util/configparser.c" +#line 3127 "util/configparser.c" break; case 295: #line 605 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3233,12 +3143,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3237 "util/configparser.c" +#line 3147 "util/configparser.c" break; case 296: #line 622 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,12 +3163,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3167 "util/configparser.c" break; case 297: #line 639 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3273,12 +3183,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3277 "util/configparser.c" +#line 3187 "util/configparser.c" break; case 298: #line 656 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3291,12 +3201,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3295 "util/configparser.c" +#line 3205 "util/configparser.c" break; case 299: #line 671 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3309,12 +3219,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3313 "util/configparser.c" +#line 3223 "util/configparser.c" break; case 300: #line 686 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3325,12 +3235,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3329 "util/configparser.c" +#line 3239 "util/configparser.c" break; case 301: #line 699 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3343,180 +3253,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3347 "util/configparser.c" +#line 3257 "util/configparser.c" break; case 302: #line 714 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3269 "util/configparser.c" break; case 303: #line 723 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3281 "util/configparser.c" break; case 304: #line 732 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3383 "util/configparser.c" +#line 3293 "util/configparser.c" break; case 305: #line 741 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3395 "util/configparser.c" +#line 3305 "util/configparser.c" break; case 306: #line 750 "./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) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3407 "util/configparser.c" +#line 3317 "util/configparser.c" break; case 307: #line 759 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3419 "util/configparser.c" +#line 3329 "util/configparser.c" break; case 308: #line 768 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3431 "util/configparser.c" +#line 3341 "util/configparser.c" break; case 309: #line 777 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3443 "util/configparser.c" +#line 3353 "util/configparser.c" break; case 310: #line 786 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3455 "util/configparser.c" +#line 3365 "util/configparser.c" break; case 311: #line 795 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3467 "util/configparser.c" +#line 3377 "util/configparser.c" break; case 312: #line 804 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3479 "util/configparser.c" +#line 3389 "util/configparser.c" break; case 313: #line 813 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3491 "util/configparser.c" +#line 3401 "util/configparser.c" break; case 314: #line 822 "./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) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" +#line 3413 "util/configparser.c" break; case 315: #line 831 "./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) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 3425 "util/configparser.c" break; case 316: #line 840 "./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) yyerror("number expected"); @@ -3527,24 +3437,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3531 "util/configparser.c" +#line 3441 "util/configparser.c" break; case 317: #line 853 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3543 "util/configparser.c" +#line 3453 "util/configparser.c" break; case 318: #line 862 "./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) yyerror("number expected"); @@ -3555,167 +3465,168 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3469 "util/configparser.c" break; case 319: #line 875 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3571 "util/configparser.c" +#line 3481 "util/configparser.c" break; case 320: #line 884 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3583 "util/configparser.c" +#line 3493 "util/configparser.c" break; case 321: #line 893 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3595 "util/configparser.c" +#line 3505 "util/configparser.c" break; case 322: #line 902 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3605 "util/configparser.c" +#line 3515 "util/configparser.c" break; case 323: #line 909 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3615 "util/configparser.c" +#line 3525 "util/configparser.c" break; case 324: #line 916 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3627 "util/configparser.c" +#line 3537 "util/configparser.c" break; case 325: #line 925 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3637 "util/configparser.c" +#line 3547 "util/configparser.c" break; case 326: #line 932 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3649 "util/configparser.c" +#line 3559 "util/configparser.c" break; case 327: #line 941 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3660 "util/configparser.c" +#line 3570 "util/configparser.c" break; case 328: #line 949 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3670 "util/configparser.c" +#line 3580 "util/configparser.c" break; case 329: #line 956 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3680 "util/configparser.c" +#line 3590 "util/configparser.c" break; case 330: #line 963 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3691 "util/configparser.c" +#line 3601 "util/configparser.c" break; case 331: #line 971 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3703 "util/configparser.c" +#line 3613 "util/configparser.c" break; case 332: #line 980 "./util/configparser.y" - { + { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 3625 "util/configparser.c" break; case 333: -#line 987 "./util/configparser.y" - { +#line 988 "./util/configparser.y" + { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { @@ -3730,84 +3641,84 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3734 "util/configparser.c" +#line 3645 "util/configparser.c" break; case 334: -#line 1003 "./util/configparser.y" - { +#line 1004 "./util/configparser.y" + { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3657 "util/configparser.c" break; case 335: -#line 1011 "./util/configparser.y" - { +#line 1012 "./util/configparser.y" + { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3669 "util/configparser.c" break; case 336: -#line 1019 "./util/configparser.y" - { +#line 1020 "./util/configparser.y" + { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3681 "util/configparser.c" break; case 337: -#line 1027 "./util/configparser.y" - { +#line 1028 "./util/configparser.y" + { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3693 "util/configparser.c" break; case 338: -#line 1035 "./util/configparser.y" - { +#line 1036 "./util/configparser.y" + { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3705 "util/configparser.c" break; case 339: -#line 1044 "./util/configparser.y" - { +#line 1045 "./util/configparser.y" + { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3717 "util/configparser.c" break; case 340: -#line 1053 "./util/configparser.y" - { +#line 1054 "./util/configparser.y" + { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3819,104 +3730,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3734 "util/configparser.c" break; case 341: -#line 1067 "./util/configparser.y" - { +#line 1068 "./util/configparser.y" + { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3835 "util/configparser.c" +#line 3746 "util/configparser.c" break; case 342: -#line 1076 "./util/configparser.y" - { +#line 1077 "./util/configparser.y" + { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3847 "util/configparser.c" +#line 3758 "util/configparser.c" break; case 343: -#line 1085 "./util/configparser.y" - { +#line 1086 "./util/configparser.y" + { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3770 "util/configparser.c" break; case 344: -#line 1094 "./util/configparser.y" - { +#line 1095 "./util/configparser.y" + { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3782 "util/configparser.c" break; case 345: -#line 1103 "./util/configparser.y" - { +#line 1104 "./util/configparser.y" + { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3794 "util/configparser.c" break; case 346: -#line 1112 "./util/configparser.y" - { +#line 1113 "./util/configparser.y" + { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3895 "util/configparser.c" +#line 3806 "util/configparser.c" break; case 347: -#line 1121 "./util/configparser.y" - { +#line 1122 "./util/configparser.y" + { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3905 "util/configparser.c" +#line 3816 "util/configparser.c" break; case 348: -#line 1128 "./util/configparser.y" - { +#line 1129 "./util/configparser.y" + { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3915 "util/configparser.c" +#line 3826 "util/configparser.c" break; case 349: -#line 1135 "./util/configparser.y" - { +#line 1136 "./util/configparser.y" + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3940,106 +3851,106 @@ yyreduce: } } } -#line 3944 "util/configparser.c" +#line 3855 "util/configparser.c" break; case 350: -#line 1161 "./util/configparser.y" - { +#line 1162 "./util/configparser.y" + { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3955 "util/configparser.c" +#line 3866 "util/configparser.c" break; case 351: -#line 1169 "./util/configparser.y" - { +#line 1170 "./util/configparser.y" + { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3965 "util/configparser.c" +#line 3876 "util/configparser.c" break; case 352: -#line 1176 "./util/configparser.y" - { +#line 1177 "./util/configparser.y" + { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3975 "util/configparser.c" +#line 3886 "util/configparser.c" break; case 353: -#line 1183 "./util/configparser.y" - { +#line 1184 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 354: -#line 1190 "./util/configparser.y" - { +#line 1191 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 355: -#line 1197 "./util/configparser.y" - { +#line 1198 "./util/configparser.y" + { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4006 "util/configparser.c" +#line 3917 "util/configparser.c" break; case 356: -#line 1205 "./util/configparser.y" - { +#line 1206 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4017 "util/configparser.c" +#line 3928 "util/configparser.c" break; case 357: -#line 1213 "./util/configparser.y" - { +#line 1214 "./util/configparser.y" + { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4028 "util/configparser.c" +#line 3939 "util/configparser.c" break; case 358: -#line 1221 "./util/configparser.y" - { +#line 1222 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4038 "util/configparser.c" +#line 3949 "util/configparser.c" break; case 359: -#line 1228 "./util/configparser.y" - { +#line 1229 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4048,12 +3959,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 3963 "util/configparser.c" break; case 360: -#line 1239 "./util/configparser.y" - { +#line 1240 "./util/configparser.y" + { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4062,99 +3973,99 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 3977 "util/configparser.c" break; case 361: -#line 1250 "./util/configparser.y" - { +#line 1251 "./util/configparser.y" + { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4076 "util/configparser.c" +#line 3987 "util/configparser.c" break; case 362: -#line 1257 "./util/configparser.y" - { +#line 1258 "./util/configparser.y" + { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4088 "util/configparser.c" +#line 3999 "util/configparser.c" break; case 363: -#line 1266 "./util/configparser.y" - { +#line 1267 "./util/configparser.y" + { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4100 "util/configparser.c" +#line 4011 "util/configparser.c" break; case 364: -#line 1275 "./util/configparser.y" - { +#line 1276 "./util/configparser.y" + { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4112 "util/configparser.c" +#line 4023 "util/configparser.c" break; case 365: -#line 1284 "./util/configparser.y" - { +#line 1285 "./util/configparser.y" + { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4122 "util/configparser.c" +#line 4033 "util/configparser.c" break; case 366: -#line 1291 "./util/configparser.y" - { +#line 1292 "./util/configparser.y" + { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4132 "util/configparser.c" +#line 4043 "util/configparser.c" break; case 367: -#line 1298 "./util/configparser.y" - { +#line 1299 "./util/configparser.y" + { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4054 "util/configparser.c" break; case 368: -#line 1306 "./util/configparser.y" - { +#line 1307 "./util/configparser.y" + { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4065 "util/configparser.c" break; case 369: -#line 1314 "./util/configparser.y" +#line 1315 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4163,11 +4074,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4167 "util/configparser.c" +#line 4078 "util/configparser.c" break; case 370: -#line 1324 "./util/configparser.y" +#line 1325 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4176,11 +4087,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4180 "util/configparser.c" +#line 4091 "util/configparser.c" break; case 371: -#line 1334 "./util/configparser.y" +#line 1335 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4189,12 +4100,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4104 "util/configparser.c" break; case 372: -#line 1344 "./util/configparser.y" - { +#line 1345 "./util/configparser.y" + { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -4206,23 +4117,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4121 "util/configparser.c" break; case 373: -#line 1358 "./util/configparser.y" - { +#line 1359 "./util/configparser.y" + { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4221 "util/configparser.c" +#line 4132 "util/configparser.c" break; case 374: -#line 1366 "./util/configparser.y" - { +#line 1367 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4233,12 +4144,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4237 "util/configparser.c" +#line 4148 "util/configparser.c" break; case 375: -#line 1379 "./util/configparser.y" - { +#line 1380 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4247,23 +4158,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4162 "util/configparser.c" break; case 376: -#line 1390 "./util/configparser.y" - { +#line 1391 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4173 "util/configparser.c" break; case 377: -#line 1398 "./util/configparser.y" - { +#line 1399 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4274,48 +4185,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4189 "util/configparser.c" break; case 378: -#line 1411 "./util/configparser.y" - { +#line 1412 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4201 "util/configparser.c" break; case 379: -#line 1420 "./util/configparser.y" - { +#line 1421 "./util/configparser.y" + { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4302 "util/configparser.c" +#line 4213 "util/configparser.c" break; case 380: -#line 1429 "./util/configparser.y" - { +#line 1430 "./util/configparser.y" + { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4314 "util/configparser.c" +#line 4225 "util/configparser.c" break; case 381: -#line 1438 "./util/configparser.y" - { +#line 1439 "./util/configparser.y" + { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4323,12 +4234,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4327 "util/configparser.c" +#line 4238 "util/configparser.c" break; case 382: -#line 1448 "./util/configparser.y" - { +#line 1449 "./util/configparser.y" + { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4336,23 +4247,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4251 "util/configparser.c" break; case 383: -#line 1458 "./util/configparser.y" - { +#line 1459 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4351 "util/configparser.c" +#line 4262 "util/configparser.c" break; case 384: -#line 1466 "./util/configparser.y" - { +#line 1467 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4363,58 +4274,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4367 "util/configparser.c" +#line 4278 "util/configparser.c" break; case 385: -#line 1479 "./util/configparser.y" - { +#line 1480 "./util/configparser.y" + { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4379 "util/configparser.c" +#line 4290 "util/configparser.c" break; case 386: -#line 1488 "./util/configparser.y" - { +#line 1489 "./util/configparser.y" + { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4301 "util/configparser.c" break; case 387: -#line 1496 "./util/configparser.y" - { +#line 1497 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4402 "util/configparser.c" +#line 4313 "util/configparser.c" break; case 388: -#line 1505 "./util/configparser.y" - { +#line 1506 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4324 "util/configparser.c" break; case 389: -#line 1513 "./util/configparser.y" - { +#line 1514 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4425,34 +4336,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4429 "util/configparser.c" +#line 4340 "util/configparser.c" break; case 390: -#line 1526 "./util/configparser.y" - { +#line 1527 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4441 "util/configparser.c" +#line 4352 "util/configparser.c" break; case 391: -#line 1535 "./util/configparser.y" - { +#line 1536 "./util/configparser.y" + { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4451 "util/configparser.c" +#line 4362 "util/configparser.c" break; case 392: -#line 1542 "./util/configparser.y" - { +#line 1543 "./util/configparser.y" + { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4460,12 +4371,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4464 "util/configparser.c" +#line 4375 "util/configparser.c" break; case 393: -#line 1552 "./util/configparser.y" - { +#line 1553 "./util/configparser.y" + { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4473,12 +4384,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4477 "util/configparser.c" +#line 4388 "util/configparser.c" break; case 394: -#line 1562 "./util/configparser.y" - { +#line 1563 "./util/configparser.y" + { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4486,12 +4397,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4401 "util/configparser.c" break; case 395: -#line 1572 "./util/configparser.y" - { +#line 1573 "./util/configparser.y" + { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4499,12 +4410,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4503 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 396: -#line 1582 "./util/configparser.y" - { +#line 1583 "./util/configparser.y" + { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4512,12 +4423,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4427 "util/configparser.c" break; case 397: -#line 1592 "./util/configparser.y" - { +#line 1593 "./util/configparser.y" + { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4525,12 +4436,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4529 "util/configparser.c" +#line 4440 "util/configparser.c" break; case 398: -#line 1602 "./util/configparser.y" - { +#line 1603 "./util/configparser.y" + { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4538,12 +4449,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4453 "util/configparser.c" break; case 399: -#line 1612 "./util/configparser.y" - { +#line 1613 "./util/configparser.y" + { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4551,100 +4462,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4555 "util/configparser.c" +#line 4466 "util/configparser.c" break; case 400: -#line 1622 "./util/configparser.y" - { +#line 1623 "./util/configparser.y" + { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4565 "util/configparser.c" +#line 4476 "util/configparser.c" break; case 401: -#line 1629 "./util/configparser.y" - { +#line 1630 "./util/configparser.y" + { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4575 "util/configparser.c" +#line 4486 "util/configparser.c" break; case 402: -#line 1636 "./util/configparser.y" - { +#line 1637 "./util/configparser.y" + { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4585 "util/configparser.c" +#line 4496 "util/configparser.c" break; case 403: -#line 1643 "./util/configparser.y" - { +#line 1644 "./util/configparser.y" + { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4597 "util/configparser.c" +#line 4508 "util/configparser.c" break; case 404: -#line 1652 "./util/configparser.y" - { +#line 1653 "./util/configparser.y" + { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4520 "util/configparser.c" break; case 405: -#line 1661 "./util/configparser.y" - { +#line 1662 "./util/configparser.y" + { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4532 "util/configparser.c" break; case 406: -#line 1670 "./util/configparser.y" - { +#line 1671 "./util/configparser.y" + { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4544 "util/configparser.c" break; case 407: -#line 1679 "./util/configparser.y" - { +#line 1680 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4643 "util/configparser.c" +#line 4554 "util/configparser.c" break; case 408: -#line 1686 "./util/configparser.y" - { +#line 1687 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4652,12 +4563,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4656 "util/configparser.c" +#line 4567 "util/configparser.c" break; case 409: -#line 1696 "./util/configparser.y" - { +#line 1697 "./util/configparser.y" + { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "deny_non_local")!=0 && @@ -4675,22 +4586,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4679 "util/configparser.c" +#line 4590 "util/configparser.c" break; case 410: -#line 1716 "./util/configparser.y" - { +#line 1717 "./util/configparser.y" + { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4689 "util/configparser.c" +#line 4600 "util/configparser.c" break; case 411: -#line 1723 "./util/configparser.y" - { +#line 1724 "./util/configparser.y" + { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; @@ -4706,12 +4617,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 412: -#line 1741 "./util/configparser.y" - { +#line 1742 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4722,12 +4633,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4726 "util/configparser.c" +#line 4637 "util/configparser.c" break; case 413: -#line 1754 "./util/configparser.y" - { +#line 1755 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4738,60 +4649,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4742 "util/configparser.c" +#line 4653 "util/configparser.c" break; case 414: -#line 1767 "./util/configparser.y" - { +#line 1768 "./util/configparser.y" + { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4754 "util/configparser.c" +#line 4665 "util/configparser.c" break; case 415: -#line 1776 "./util/configparser.y" - { +#line 1777 "./util/configparser.y" + { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4766 "util/configparser.c" +#line 4677 "util/configparser.c" break; case 416: -#line 1785 "./util/configparser.y" - { +#line 1786 "./util/configparser.y" + { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4778 "util/configparser.c" +#line 4689 "util/configparser.c" break; case 417: -#line 1794 "./util/configparser.y" - { +#line 1795 "./util/configparser.y" + { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4790 "util/configparser.c" +#line 4701 "util/configparser.c" break; case 418: -#line 1803 "./util/configparser.y" - { +#line 1804 "./util/configparser.y" + { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4799,12 +4710,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4714 "util/configparser.c" break; case 419: -#line 1813 "./util/configparser.y" - { +#line 1814 "./util/configparser.y" + { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4812,12 +4723,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4816 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 420: -#line 1823 "./util/configparser.y" - { +#line 1824 "./util/configparser.y" + { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4826,84 +4737,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4830 "util/configparser.c" +#line 4741 "util/configparser.c" break; case 421: -#line 1834 "./util/configparser.y" - { +#line 1835 "./util/configparser.y" + { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4842 "util/configparser.c" +#line 4753 "util/configparser.c" break; case 422: -#line 1843 "./util/configparser.y" - { +#line 1844 "./util/configparser.y" + { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4854 "util/configparser.c" +#line 4765 "util/configparser.c" break; case 423: -#line 1852 "./util/configparser.y" - { +#line 1853 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4866 "util/configparser.c" +#line 4777 "util/configparser.c" break; case 424: -#line 1861 "./util/configparser.y" - { +#line 1862 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4878 "util/configparser.c" +#line 4789 "util/configparser.c" break; case 425: -#line 1870 "./util/configparser.y" - { +#line 1871 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4890 "util/configparser.c" +#line 4801 "util/configparser.c" break; case 426: -#line 1879 "./util/configparser.y" - { +#line 1880 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4902 "util/configparser.c" +#line 4813 "util/configparser.c" break; case 427: -#line 1888 "./util/configparser.y" - { +#line 1889 "./util/configparser.y" + { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4914,12 +4825,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4918 "util/configparser.c" +#line 4829 "util/configparser.c" break; case 428: -#line 1901 "./util/configparser.y" - { +#line 1902 "./util/configparser.y" + { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4930,70 +4841,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4845 "util/configparser.c" break; case 429: -#line 1914 "./util/configparser.y" - { +#line 1915 "./util/configparser.y" + { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4857 "util/configparser.c" break; case 430: -#line 1923 "./util/configparser.y" - { +#line 1924 "./util/configparser.y" + { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4956 "util/configparser.c" +#line 4867 "util/configparser.c" break; case 431: -#line 1930 "./util/configparser.y" - { +#line 1931 "./util/configparser.y" + { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4968 "util/configparser.c" +#line 4879 "util/configparser.c" break; case 432: -#line 1939 "./util/configparser.y" - { +#line 1940 "./util/configparser.y" + { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4980 "util/configparser.c" +#line 4891 "util/configparser.c" break; case 433: -#line 1948 "./util/configparser.y" - { +#line 1949 "./util/configparser.y" + { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4992 "util/configparser.c" +#line 4903 "util/configparser.c" break; case 434: -#line 1957 "./util/configparser.y" - { +#line 1958 "./util/configparser.y" + { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5001,23 +4912,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5005 "util/configparser.c" +#line 4916 "util/configparser.c" break; case 435: -#line 1966 "./util/configparser.y" - { +#line 1967 "./util/configparser.y" + { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5016 "util/configparser.c" +#line 4927 "util/configparser.c" break; case 436: -#line 1974 "./util/configparser.y" - { +#line 1975 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5028,23 +4939,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5032 "util/configparser.c" +#line 4943 "util/configparser.c" break; case 437: -#line 1987 "./util/configparser.y" - { +#line 1988 "./util/configparser.y" + { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5043 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 438: -#line 1995 "./util/configparser.y" - { +#line 1996 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5083,22 +4994,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5087 "util/configparser.c" +#line 4998 "util/configparser.c" break; case 439: -#line 2036 "./util/configparser.y" - { +#line 2037 "./util/configparser.y" + { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 5097 "util/configparser.c" +#line 5008 "util/configparser.c" break; case 440: -#line 2043 "./util/configparser.y" - { +#line 2044 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5111,12 +5022,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5115 "util/configparser.c" +#line 5026 "util/configparser.c" break; case 441: -#line 2058 "./util/configparser.y" - { +#line 2059 "./util/configparser.y" + { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5124,12 +5035,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5039 "util/configparser.c" break; case 442: -#line 2068 "./util/configparser.y" - { +#line 2069 "./util/configparser.y" + { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5137,65 +5048,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5141 "util/configparser.c" +#line 5052 "util/configparser.c" break; case 443: -#line 2078 "./util/configparser.y" - { +#line 2079 "./util/configparser.y" + { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 5062 "util/configparser.c" break; case 444: -#line 2085 "./util/configparser.y" - { +#line 2086 "./util/configparser.y" + { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5161 "util/configparser.c" +#line 5072 "util/configparser.c" break; case 445: -#line 2092 "./util/configparser.y" - { +#line 2093 "./util/configparser.y" + { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5171 "util/configparser.c" +#line 5082 "util/configparser.c" break; case 446: -#line 2099 "./util/configparser.y" - { +#line 2100 "./util/configparser.y" + { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5183 "util/configparser.c" +#line 5094 "util/configparser.c" break; case 447: -#line 2108 "./util/configparser.y" - { +#line 2109 "./util/configparser.y" + { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5194 "util/configparser.c" +#line 5105 "util/configparser.c" break; case 448: -#line 2116 "./util/configparser.y" - { +#line 2117 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5207,12 +5118,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5211 "util/configparser.c" +#line 5122 "util/configparser.c" break; case 449: -#line 2130 "./util/configparser.y" - { +#line 2131 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5231,12 +5142,12 @@ yyreduce: } } } -#line 5235 "util/configparser.c" +#line 5146 "util/configparser.c" break; case 450: -#line 2151 "./util/configparser.y" - { +#line 2152 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5255,12 +5166,12 @@ yyreduce: } } } -#line 5259 "util/configparser.c" +#line 5170 "util/configparser.c" break; case 451: -#line 2172 "./util/configparser.y" - { +#line 2173 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5270,12 +5181,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5274 "util/configparser.c" +#line 5185 "util/configparser.c" break; case 452: -#line 2184 "./util/configparser.y" - { +#line 2185 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5285,12 +5196,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5289 "util/configparser.c" +#line 5200 "util/configparser.c" break; case 453: -#line 2196 "./util/configparser.y" - { +#line 2197 "./util/configparser.y" + { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5300,24 +5211,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5304 "util/configparser.c" +#line 5215 "util/configparser.c" break; case 454: -#line 2208 "./util/configparser.y" - { +#line 2209 "./util/configparser.y" + { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5316 "util/configparser.c" +#line 5227 "util/configparser.c" break; case 455: -#line 2217 "./util/configparser.y" - { +#line 2218 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5336,58 +5247,58 @@ yyreduce: } } } -#line 5340 "util/configparser.c" +#line 5251 "util/configparser.c" break; case 456: -#line 2238 "./util/configparser.y" - { +#line 2239 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5352 "util/configparser.c" +#line 5263 "util/configparser.c" break; case 457: -#line 2248 "./util/configparser.y" - { +#line 2249 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5364 "util/configparser.c" +#line 5275 "util/configparser.c" break; case 458: -#line 2257 "./util/configparser.y" - { +#line 2258 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5375 "util/configparser.c" +#line 5286 "util/configparser.c" break; case 459: -#line 2265 "./util/configparser.y" - { +#line 2266 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5386 "util/configparser.c" +#line 5297 "util/configparser.c" break; case 460: -#line 2273 "./util/configparser.y" - { +#line 2274 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5398,12 +5309,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5402 "util/configparser.c" +#line 5313 "util/configparser.c" break; case 461: -#line 2286 "./util/configparser.y" - { +#line 2287 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5414,12 +5325,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5418 "util/configparser.c" +#line 5329 "util/configparser.c" break; case 462: -#line 2299 "./util/configparser.y" - { +#line 2300 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5432,12 +5343,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5436 "util/configparser.c" +#line 5347 "util/configparser.c" break; case 463: -#line 2314 "./util/configparser.y" - { +#line 2315 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5450,69 +5361,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5454 "util/configparser.c" +#line 5365 "util/configparser.c" break; case 464: -#line 2329 "./util/configparser.y" - { +#line 2330 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5466 "util/configparser.c" +#line 5377 "util/configparser.c" break; case 465: -#line 2338 "./util/configparser.y" - { +#line 2339 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 5389 "util/configparser.c" break; case 466: -#line 2347 "./util/configparser.y" - { +#line 2348 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5398 "util/configparser.c" break; case 467: -#line 2353 "./util/configparser.y" - { +#line 2354 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5499 "util/configparser.c" +#line 5410 "util/configparser.c" break; case 468: -#line 2362 "./util/configparser.y" - { +#line 2363 "./util/configparser.y" + { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5511 "util/configparser.c" +#line 5422 "util/configparser.c" break; case 469: -#line 2371 "./util/configparser.y" - { +#line 2372 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5520,12 +5431,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5524 "util/configparser.c" +#line 5435 "util/configparser.c" break; case 470: -#line 2381 "./util/configparser.y" - { +#line 2382 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5533,12 +5444,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5448 "util/configparser.c" break; case 471: -#line 2391 "./util/configparser.y" - { +#line 2392 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5549,12 +5460,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5553 "util/configparser.c" +#line 5464 "util/configparser.c" break; case 472: -#line 2404 "./util/configparser.y" - { +#line 2405 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5565,12 +5476,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5569 "util/configparser.c" +#line 5480 "util/configparser.c" break; case 473: -#line 2417 "./util/configparser.y" - { +#line 2418 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5580,12 +5491,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5584 "util/configparser.c" +#line 5495 "util/configparser.c" break; case 474: -#line 2429 "./util/configparser.y" - { +#line 2430 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5597,12 +5508,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5601 "util/configparser.c" +#line 5512 "util/configparser.c" break; case 475: -#line 2443 "./util/configparser.y" - { +#line 2444 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5612,12 +5523,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5616 "util/configparser.c" +#line 5527 "util/configparser.c" break; case 476: -#line 2455 "./util/configparser.y" - { +#line 2456 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5629,12 +5540,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5633 "util/configparser.c" +#line 5544 "util/configparser.c" break; case 477: -#line 2469 "./util/configparser.y" - { +#line 2470 "./util/configparser.y" + { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); tag_data = atoi((yyvsp[0].str)); @@ -5647,12 +5558,12 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5651 "util/configparser.c" +#line 5562 "util/configparser.c" break; case 478: -#line 2484 "./util/configparser.y" - { +#line 2485 "./util/configparser.y" + { OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("option code expected"); @@ -5661,12 +5572,12 @@ yyreduce: else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); } -#line 5665 "util/configparser.c" +#line 5576 "util/configparser.c" break; case 479: -#line 2495 "./util/configparser.y" - { +#line 2496 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5674,56 +5585,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5678 "util/configparser.c" +#line 5589 "util/configparser.c" break; case 480: -#line 2505 "./util/configparser.y" - { +#line 2506 "./util/configparser.y" + { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5688 "util/configparser.c" +#line 5599 "util/configparser.c" break; case 481: -#line 2512 "./util/configparser.y" - { +#line 2513 "./util/configparser.y" + { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5698 "util/configparser.c" +#line 5609 "util/configparser.c" break; case 482: -#line 2519 "./util/configparser.y" - { +#line 2520 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5621 "util/configparser.c" break; case 483: -#line 2528 "./util/configparser.y" - { +#line 2529 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5722 "util/configparser.c" +#line 5633 "util/configparser.c" break; case 484: -#line 2537 "./util/configparser.y" - { +#line 2538 "./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) yyerror("expected yes or no."); @@ -5731,12 +5642,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5735 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 485: -#line 2547 "./util/configparser.y" - { +#line 2548 "./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) yyerror("expected yes or no."); @@ -5744,12 +5655,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5748 "util/configparser.c" +#line 5659 "util/configparser.c" break; case 486: -#line 2557 "./util/configparser.y" - { +#line 2558 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5757,56 +5668,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5761 "util/configparser.c" +#line 5672 "util/configparser.c" break; case 487: -#line 2567 "./util/configparser.y" - { +#line 2568 "./util/configparser.y" + { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5771 "util/configparser.c" +#line 5682 "util/configparser.c" break; case 488: -#line 2574 "./util/configparser.y" - { +#line 2575 "./util/configparser.y" + { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5781 "util/configparser.c" +#line 5692 "util/configparser.c" break; case 489: -#line 2581 "./util/configparser.y" - { +#line 2582 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5793 "util/configparser.c" +#line 5704 "util/configparser.c" break; case 490: -#line 2590 "./util/configparser.y" - { +#line 2591 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5805 "util/configparser.c" +#line 5716 "util/configparser.c" break; case 491: -#line 2599 "./util/configparser.y" - { +#line 2600 "./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) yyerror("expected yes or no."); @@ -5814,12 +5725,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5818 "util/configparser.c" +#line 5729 "util/configparser.c" break; case 492: -#line 2609 "./util/configparser.y" - { +#line 2610 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5827,53 +5738,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5831 "util/configparser.c" +#line 5742 "util/configparser.c" break; case 493: -#line 2619 "./util/configparser.y" - { +#line 2620 "./util/configparser.y" + { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5841 "util/configparser.c" +#line 5752 "util/configparser.c" break; case 494: -#line 2626 "./util/configparser.y" - { +#line 2627 "./util/configparser.y" + { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5851 "util/configparser.c" +#line 5762 "util/configparser.c" break; case 495: -#line 2633 "./util/configparser.y" - { +#line 2634 "./util/configparser.y" + { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5861 "util/configparser.c" +#line 5772 "util/configparser.c" break; case 496: -#line 2640 "./util/configparser.y" - { +#line 2641 "./util/configparser.y" + { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5872 "util/configparser.c" +#line 5783 "util/configparser.c" break; case 497: -#line 2648 "./util/configparser.y" - { +#line 2649 "./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) yyerror("expected yes or no."); @@ -5881,12 +5792,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5885 "util/configparser.c" +#line 5796 "util/configparser.c" break; case 498: -#line 2658 "./util/configparser.y" - { +#line 2659 "./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) yyerror("expected yes or no."); @@ -5894,12 +5805,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5898 "util/configparser.c" +#line 5809 "util/configparser.c" break; case 499: -#line 2668 "./util/configparser.y" - { +#line 2669 "./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) yyerror("expected yes or no."); @@ -5907,12 +5818,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5911 "util/configparser.c" +#line 5822 "util/configparser.c" break; case 500: -#line 2678 "./util/configparser.y" - { +#line 2679 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5920,12 +5831,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5924 "util/configparser.c" +#line 5835 "util/configparser.c" break; case 501: -#line 2688 "./util/configparser.y" - { +#line 2689 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5962,12 +5873,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5966 "util/configparser.c" +#line 5877 "util/configparser.c" break; case 502: -#line 2727 "./util/configparser.y" - { +#line 2728 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5975,34 +5886,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5979 "util/configparser.c" +#line 5890 "util/configparser.c" break; case 503: -#line 2737 "./util/configparser.y" - { +#line 2738 "./util/configparser.y" + { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5990 "util/configparser.c" +#line 5901 "util/configparser.c" break; case 504: -#line 2745 "./util/configparser.y" - { +#line 2746 "./util/configparser.y" + { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 6001 "util/configparser.c" +#line 5912 "util/configparser.c" break; case 505: -#line 2753 "./util/configparser.y" - { +#line 2754 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -6015,32 +5926,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6019 "util/configparser.c" +#line 5930 "util/configparser.c" break; case 506: -#line 2768 "./util/configparser.y" - { +#line 2769 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 5942 "util/configparser.c" break; case 507: -#line 2777 "./util/configparser.y" - { +#line 2778 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6039 "util/configparser.c" +#line 5950 "util/configparser.c" break; case 518: -#line 2788 "./util/configparser.y" - { +#line 2789 "./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) yyerror("expected yes or no."); @@ -6048,104 +5959,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6052 "util/configparser.c" +#line 5963 "util/configparser.c" break; case 519: -#line 2798 "./util/configparser.y" - { +#line 2799 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 5975 "util/configparser.c" break; case 520: -#line 2807 "./util/configparser.y" - { +#line 2808 "./util/configparser.y" + { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6074 "util/configparser.c" +#line 5985 "util/configparser.c" break; case 521: -#line 2814 "./util/configparser.y" - { +#line 2815 "./util/configparser.y" + { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 5995 "util/configparser.c" break; case 522: -#line 2821 "./util/configparser.y" - { +#line 2822 "./util/configparser.y" + { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 6094 "util/configparser.c" +#line 6005 "util/configparser.c" break; case 523: -#line 2828 "./util/configparser.y" - { +#line 2829 "./util/configparser.y" + { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 6104 "util/configparser.c" +#line 6015 "util/configparser.c" break; case 524: -#line 2835 "./util/configparser.y" - { +#line 2836 "./util/configparser.y" + { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6025 "util/configparser.c" break; case 525: -#line 2842 "./util/configparser.y" - { +#line 2843 "./util/configparser.y" + { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6035 "util/configparser.c" break; case 526: -#line 2849 "./util/configparser.y" - { +#line 2850 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6132 "util/configparser.c" +#line 6043 "util/configparser.c" break; case 548: -#line 2869 "./util/configparser.y" - { +#line 2870 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6144 "util/configparser.c" +#line 6055 "util/configparser.c" break; case 549: -#line 2878 "./util/configparser.y" - { +#line 2879 "./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) yyerror("expected yes or no."); @@ -6153,128 +6064,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6157 "util/configparser.c" +#line 6068 "util/configparser.c" break; case 550: -#line 2888 "./util/configparser.y" - { +#line 2889 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6167 "util/configparser.c" +#line 6078 "util/configparser.c" break; case 551: -#line 2895 "./util/configparser.y" - { +#line 2896 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6177 "util/configparser.c" +#line 6088 "util/configparser.c" break; case 552: -#line 2902 "./util/configparser.y" - { +#line 2903 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6100 "util/configparser.c" break; case 553: -#line 2911 "./util/configparser.y" - { +#line 2912 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6199 "util/configparser.c" +#line 6110 "util/configparser.c" break; case 554: -#line 2918 "./util/configparser.y" - { +#line 2919 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6209 "util/configparser.c" +#line 6120 "util/configparser.c" break; case 555: -#line 2925 "./util/configparser.y" - { +#line 2926 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6219 "util/configparser.c" +#line 6130 "util/configparser.c" break; case 556: -#line 2932 "./util/configparser.y" - { +#line 2933 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6229 "util/configparser.c" +#line 6140 "util/configparser.c" break; case 557: -#line 2939 "./util/configparser.y" - { +#line 2940 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6241 "util/configparser.c" +#line 6152 "util/configparser.c" break; case 558: -#line 2948 "./util/configparser.y" - { +#line 2949 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6253 "util/configparser.c" +#line 6164 "util/configparser.c" break; case 559: -#line 2957 "./util/configparser.y" - { +#line 2958 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6263 "util/configparser.c" +#line 6174 "util/configparser.c" break; case 560: -#line 2964 "./util/configparser.y" - { +#line 2965 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6273 "util/configparser.c" +#line 6184 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" - { +#line 2972 "./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) yyerror("expected yes or no."); @@ -6282,12 +6193,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6197 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" - { +#line 2982 "./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) yyerror("expected yes or no."); @@ -6295,12 +6206,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6210 "util/configparser.c" break; case 563: -#line 2991 "./util/configparser.y" - { +#line 2992 "./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) yyerror("expected yes or no."); @@ -6308,12 +6219,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6223 "util/configparser.c" break; case 564: -#line 3001 "./util/configparser.y" - { +#line 3002 "./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) yyerror("expected yes or no."); @@ -6321,12 +6232,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6325 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 565: -#line 3011 "./util/configparser.y" - { +#line 3012 "./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) yyerror("expected yes or no."); @@ -6334,12 +6245,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6338 "util/configparser.c" +#line 6249 "util/configparser.c" break; case 566: -#line 3021 "./util/configparser.y" - { +#line 3022 "./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) yyerror("expected yes or no."); @@ -6347,48 +6258,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6262 "util/configparser.c" break; case 567: -#line 3031 "./util/configparser.y" - { +#line 3032 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6359 "util/configparser.c" +#line 6270 "util/configparser.c" break; case 571: -#line 3040 "./util/configparser.y" - { +#line 3041 "./util/configparser.y" + { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6369 "util/configparser.c" +#line 6280 "util/configparser.c" break; case 572: -#line 3046 "./util/configparser.y" - { +#line 3047 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6377 "util/configparser.c" +#line 6288 "util/configparser.c" break; case 576: -#line 3055 "./util/configparser.y" - { +#line 3056 "./util/configparser.y" + { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6387 "util/configparser.c" +#line 6298 "util/configparser.c" break; case 577: -#line 3061 "./util/configparser.y" - { +#line 3062 "./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) yyerror("expected yes or no."); @@ -6396,132 +6307,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 6311 "util/configparser.c" break; case 578: -#line 3071 "./util/configparser.y" - { +#line 3072 "./util/configparser.y" + { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6410 "util/configparser.c" +#line 6321 "util/configparser.c" break; case 579: -#line 3078 "./util/configparser.y" - { +#line 3079 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6422 "util/configparser.c" +#line 6333 "util/configparser.c" break; case 580: -#line 3087 "./util/configparser.y" - { +#line 3088 "./util/configparser.y" + { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6433 "util/configparser.c" +#line 6344 "util/configparser.c" break; case 581: -#line 3095 "./util/configparser.y" - { +#line 3096 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6441 "util/configparser.c" +#line 6352 "util/configparser.c" break; case 594: -#line 3111 "./util/configparser.y" - { +#line 3112 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6453 "util/configparser.c" +#line 6364 "util/configparser.c" break; case 595: -#line 3121 "./util/configparser.y" - { +#line 3122 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6465 "util/configparser.c" +#line 6376 "util/configparser.c" break; case 596: -#line 3130 "./util/configparser.y" - { +#line 3131 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6475 "util/configparser.c" +#line 6386 "util/configparser.c" break; case 597: -#line 3137 "./util/configparser.y" - { +#line 3138 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6487 "util/configparser.c" +#line 6398 "util/configparser.c" break; case 598: -#line 3146 "./util/configparser.y" - { +#line 3147 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6497 "util/configparser.c" +#line 6408 "util/configparser.c" break; case 599: -#line 3153 "./util/configparser.y" - { +#line 3154 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6509 "util/configparser.c" +#line 6420 "util/configparser.c" break; case 600: -#line 3162 "./util/configparser.y" - { +#line 3163 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 6431 "util/configparser.c" break; case 601: -#line 3170 "./util/configparser.y" - { +#line 3171 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6532,23 +6443,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6536 "util/configparser.c" +#line 6447 "util/configparser.c" break; case 602: -#line 3183 "./util/configparser.y" - { +#line 3184 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6547 "util/configparser.c" +#line 6458 "util/configparser.c" break; case 603: -#line 3191 "./util/configparser.y" - { +#line 3192 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6559,20 +6470,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6563 "util/configparser.c" +#line 6474 "util/configparser.c" break; case 604: -#line 3204 "./util/configparser.y" - { +#line 3205 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6571 "util/configparser.c" +#line 6482 "util/configparser.c" break; case 613: -#line 3215 "./util/configparser.y" - { +#line 3216 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6582,12 +6493,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6586 "util/configparser.c" +#line 6497 "util/configparser.c" break; case 614: -#line 3227 "./util/configparser.y" - { +#line 3228 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6597,12 +6508,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6601 "util/configparser.c" +#line 6512 "util/configparser.c" break; case 615: -#line 3239 "./util/configparser.y" - { +#line 3240 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6612,12 +6523,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6616 "util/configparser.c" +#line 6527 "util/configparser.c" break; case 616: -#line 3251 "./util/configparser.y" - { +#line 3252 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6630,12 +6541,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6634 "util/configparser.c" +#line 6545 "util/configparser.c" break; case 617: -#line 3266 "./util/configparser.y" - { +#line 3267 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6646,12 +6557,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6650 "util/configparser.c" +#line 6561 "util/configparser.c" break; case 618: -#line 3279 "./util/configparser.y" - { +#line 3280 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6662,12 +6573,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6666 "util/configparser.c" +#line 6577 "util/configparser.c" break; case 619: -#line 3292 "./util/configparser.y" - { +#line 3293 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6676,20 +6587,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6680 "util/configparser.c" +#line 6591 "util/configparser.c" break; case 620: -#line 3303 "./util/configparser.y" - { +#line 3304 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6688 "util/configparser.c" +#line 6599 "util/configparser.c" break; case 625: -#line 3312 "./util/configparser.y" - { +#line 3313 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6702,12 +6613,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6706 "util/configparser.c" +#line 6617 "util/configparser.c" break; case 626: -#line 3327 "./util/configparser.y" - { +#line 3328 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6720,11 +6631,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6724 "util/configparser.c" +#line 6635 "util/configparser.c" break; -#line 6728 "util/configparser.c" +#line 6639 "util/configparser.c" default: break; } @@ -6788,7 +6699,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; @@ -6943,7 +6854,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[+*yyssp], yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6956,7 +6867,7 @@ yyreturn: #endif return yyresult; } -#line 3341 "./util/configparser.y" +#line 3342 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 3a5ea579d..627d4cbf9 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5.1. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify diff --git a/util/configparser.y b/util/configparser.y index 43a886f24..675645fbd 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -982,6 +982,7 @@ server_https_port: VAR_HTTPS_PORT STRING_ARG if(atoi($2) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi($2); + free($2); }; server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG { From a3e2bfbb0cdcc264ed139233f391cca55ad1b526 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:24:03 +0200 Subject: [PATCH 240/394] - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. --- daemon/worker.c | 4 +- doc/Changelog | 3 + doc/example.conf.in | 3 + doc/unbound.conf.5.in | 4 + services/listen_dnsport.c | 17 +- services/listen_dnsport.h | 6 +- testcode/dohclient.c | 136 +- testcode/fake_event.c | 1 + util/config_file.c | 2 + util/config_file.h | 2 + util/configlexer.c | 4446 +++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 3354 ++++++++++++++-------------- util/configparser.h | 612 ++--- util/configparser.y | 12 +- util/netevent.c | 192 +- 16 files changed, 4488 insertions(+), 4307 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 5ad8ce4e4..458afa04e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1789,8 +1789,8 @@ worker_init(struct worker* worker, struct config_file *cfg, ? cfg->tcp_keepalive_timeout : cfg->tcp_idle_timeout, cfg->harden_large_queries, cfg->http_max_streams, - cfg->http_endpoint, worker->daemon->tcl, - worker->daemon->listen_sslctx, + cfg->http_endpoint, cfg->http_notls_downstream, + worker->daemon->tcl, worker->daemon->listen_sslctx, dtenv, worker_handle_request, worker); if(!worker->front) { log_err("could not create listening sockets"); diff --git a/doc/Changelog b/doc/Changelog index 49dab107c..24d544c7a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,9 @@ http-endpoint, http-max-streams, http-query-buffer-size, http-response-buffer-size, and http-nodelay. - Fix memory leak of https port string when reading config. + - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. + This adds the option http-notls-downstream: yesno to change that, + and the dohclient test code has the -n option. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/doc/example.conf.in b/doc/example.conf.in index 852cccaed..b6f311c7f 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -788,6 +788,9 @@ server: # service. # http-nodelay: yes + # Disable TLS for DNS-over-HTTP downstream service. + # http-notls-downstream: no + # DNS64 prefix. Must be specified when DNS64 is use. # Enable dns64 in module-config. Used to synthesize IPv6 from IPv4. # dns64-prefix: 64:ff9b::0/96 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 95c4aaa99..c2e389c6e 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -587,6 +587,10 @@ megabytes or gigabytes (1024*1024 bytes in a megabyte). Set TCP_NODELAY socket option on sockets used to provide DNS-over-HTTPS service. Ignored if the option is not available. Default is yes. .TP +.B http\-notls\-downstream: \fI +Disable use of TLS for the downstream DNS-over-HTTP connections. Useful for +local back end servers. Default is no. +.TP .B use\-systemd: \fI Enable or disable systemd socket activation. Default is no. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index ad73fad01..d4f912db5 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1244,8 +1244,9 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, uint32_t http_max_streams, - char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, - struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg) + char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit, + void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, + void *cb_arg) { struct listen_dnsport* front = (struct listen_dnsport*) malloc(sizeof(struct listen_dnsport)); @@ -1295,15 +1296,19 @@ listen_create(struct comm_base* base, struct listen_port* ports, http_max_streams, http_endpoint, tcp_conn_limit, bufsize, front->udp_buff, ports->ftype, cb, cb_arg); - cp->ssl = sslctx; + if(http_notls && ports->ftype == listen_type_http) + cp->ssl = NULL; + else + cp->ssl = sslctx; if(ports->ftype == listen_type_http) { - if(!sslctx) { - log_warn("HTTPS port configured, but no TLS " + if(!sslctx && !http_notls) { + log_warn("HTTPS port configured, but no TLS " "tls-service-key or tls-service-pem " "set"); } #ifndef HAVE_SSL_CTX_SET_ALPN_SELECT_CB - log_warn("Unbound is not compiled with an " + if(!http_notls) + log_warn("Unbound is not compiled with an " "OpenSSL version supporting ALPN " " (OpenSSL >= 1.0.2). This is required " "to use DNS-over-HTTPS"); diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 4bbde0691..9d6ea2c33 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -159,6 +159,7 @@ int resolve_interface_names(struct config_file* cfg, char*** resif, * @param harden_large_queries: whether query size should be limited. * @param http_max_streams: maximum number of HTTP/2 streams per connection. * @param http_endpoint: HTTP endpoint to service queries on + * @param http_notls: no TLS for http downstream * @param tcp_conn_limit: TCP connection limit info. * @param sslctx: nonNULL if ssl context. * @param dtenv: nonNULL if dnstap enabled. @@ -171,8 +172,9 @@ struct listen_dnsport* listen_create(struct comm_base* base, struct listen_port* ports, size_t bufsize, int tcp_accept_count, int tcp_idle_timeout, int harden_large_queries, uint32_t http_max_streams, - char* http_endpoint, struct tcl_list* tcp_conn_limit, void* sslctx, - struct dt_env* dtenv, comm_point_callback_type* cb, void *cb_arg); + char* http_endpoint, int http_notls, struct tcl_list* tcp_conn_limit, + void* sslctx, struct dt_env* dtenv, comm_point_callback_type* cb, + void *cb_arg); /** * delete the listening structure diff --git a/testcode/dohclient.c b/testcode/dohclient.c index adcc7d831..263418049 100644 --- a/testcode/dohclient.c +++ b/testcode/dohclient.c @@ -90,6 +90,7 @@ static void usage(char* argv[]) printf("-e HTTP endpoint, default: /dns-query\n"); printf("-c Content-type in request, default: " "application/dns-message\n"); + printf("-n no-tls, TLS is disabled\n"); printf("-h This help text\n"); exit(1); } @@ -185,7 +186,10 @@ submit_query(struct http2_session* h2_session, struct sldns_buffer* buf) headers[1].name = (uint8_t*)":path"; headers[1].value = (uint8_t*)h2_stream->path; headers[2].name = (uint8_t*)":scheme"; - headers[2].value = (uint8_t*)"https"; + if(h2_session->ssl) + headers[2].value = (uint8_t*)"https"; + else + headers[2].value = (uint8_t*)"http"; headers[3].name = (uint8_t*)":authority"; headers[3].value = (uint8_t*)h2_session->authority; headers[4].name = (uint8_t*)"content-type"; @@ -246,6 +250,7 @@ static ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), { struct http2_session* h2_session = (struct http2_session*)cb_arg; int r; + ssize_t ret; struct timeval tv, *waittv; fd_set rfd; ERR_clear_error(); @@ -267,35 +272,58 @@ static ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), return NGHTTP2_ERR_WOULDBLOCK; } - r = SSL_read(h2_session->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { + if(h2_session->ssl) { + r = SSL_read(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } + log_crypto_err("could not SSL_read"); return NGHTTP2_ERR_EOF; } - log_crypto_err("could not SSL_read"); + return r; + } + + ret = read(h2_session->fd, buf, len); + if(ret == 0) { + return NGHTTP2_ERR_EOF; + } else if(ret < 0) { + log_err("could not http2 read: %s", strerror(errno)); return NGHTTP2_ERR_EOF; } - return r; + return ret; } static ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { struct http2_session* h2_session = (struct http2_session*)cb_arg; + ssize_t ret; - int r; - ERR_clear_error(); - r = SSL_write(h2_session->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { + if(h2_session->ssl) { + int r; + ERR_clear_error(); + r = SSL_write(h2_session->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_write"); + return r; + } + + ret = write(h2_session->fd, buf, len); + if(ret == 0) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(ret < 0) { + log_err("could not http2 write: %s", strerror(errno)); return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; + return ret; } static int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), @@ -459,7 +487,7 @@ http2_read(struct http2_session* h2_session) } static void -run(struct http2_session* h2_session, int port, int count, char** q) +run(struct http2_session* h2_session, int port, int no_tls, int count, char** q) { int i; SSL_CTX* ctx = NULL; @@ -470,26 +498,28 @@ run(struct http2_session* h2_session, int port, int count, char** q) fd = open_svr(h2_session->authority, port); h2_session->fd = fd; - ctx = connect_sslctx_create(NULL, NULL, NULL, 0); - if(!ctx) fatal_exit("cannot create ssl ctx"); - SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); - ssl = outgoing_ssl_fd(ctx, fd); - if(!ssl) { - printf("cannot create ssl\n"); - exit(1); - } - h2_session->ssl = ssl; - while(1) { - int r; - ERR_clear_error(); - if( (r=SSL_do_handshake(ssl)) == 1) - break; - r = SSL_get_error(ssl, r); - if(r != SSL_ERROR_WANT_READ && - r != SSL_ERROR_WANT_WRITE) { - log_crypto_err("could not ssl_handshake"); + if(!no_tls) { + ctx = connect_sslctx_create(NULL, NULL, NULL, 0); + if(!ctx) fatal_exit("cannot create ssl ctx"); + SSL_CTX_set_alpn_protos(ctx, (const unsigned char *)"\x02h2", 3); + ssl = outgoing_ssl_fd(ctx, fd); + if(!ssl) { + printf("cannot create ssl\n"); exit(1); } + h2_session->ssl = ssl; + while(1) { + int r; + ERR_clear_error(); + if( (r=SSL_do_handshake(ssl)) == 1) + break; + r = SSL_get_error(ssl, r); + if(r != SSL_ERROR_WANT_READ && + r != SSL_ERROR_WANT_WRITE) { + log_crypto_err("could not ssl_handshake"); + exit(1); + } + } } http2_submit_setting(h2_session); @@ -511,9 +541,13 @@ run(struct http2_session* h2_session, int port, int count, char** q) /* shutdown */ http2_session_delete(h2_session); - SSL_shutdown(ssl); - SSL_free(ssl); - SSL_CTX_free(ctx); + if(ssl) { + SSL_shutdown(ssl); + SSL_free(ssl); + } + if(ctx) { + SSL_CTX_free(ctx); + } close(fd); } @@ -524,10 +558,21 @@ extern char* optarg; int main(int argc, char** argv) { int c; - int port = UNBOUND_DNS_OVER_HTTPS_PORT; - struct http2_session* h2_session = http2_session_create(); - if(!h2_session) fatal_exit("out of memory"); + int port = UNBOUND_DNS_OVER_HTTPS_PORT, no_tls = 0; + struct http2_session* h2_session; +#ifdef USE_WINSOCK + WSADATA wsa_data; + if(WSAStartup(MAKEWORD(2,2), &wsa_data) != 0) { + printf("WSAStartup failed\n"); + return 1; + } +#endif + log_init(0, 0, 0); + checklock_start(); + + h2_session = http2_session_create(); + if(!h2_session) fatal_exit("out of memory"); if(argc == 1) { usage(argv); } @@ -537,7 +582,7 @@ int main(int argc, char** argv) h2_session->endpoint = "/dns-query"; h2_session->content_type = "application/dns-message"; - while((c=getopt(argc, argv, "c:e:hs:p:P")) != -1) { + while((c=getopt(argc, argv, "c:e:hns:p:P")) != -1) { switch(c) { case 'c': h2_session->content_type = optarg; @@ -545,6 +590,9 @@ int main(int argc, char** argv) case 'e': h2_session->endpoint = optarg; break; + case 'n': + no_tls = 1; + break; case 'p': if(atoi(optarg)==0 && strcmp(optarg,"0")!=0) { printf("error parsing port, " @@ -573,8 +621,12 @@ int main(int argc, char** argv) } - run(h2_session, port, argc, argv); + run(h2_session, port, no_tls, argc, argv); + checklock_stop(); +#ifdef USE_WINSOCK + WSACleanup(); +#endif return 0; } #else diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d8df76492..e8fc84746 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -872,6 +872,7 @@ listen_create(struct comm_base* base, struct listen_port* ATTR_UNUSED(ports), int ATTR_UNUSED(harden_large_queries), uint32_t ATTR_UNUSED(http_max_streams), char* ATTR_UNUSED(http_endpoint), + int ATTR_UNUSED(http_notls), struct tcl_list* ATTR_UNUSED(tcp_conn_limit), void* ATTR_UNUSED(sslctx), struct dt_env* ATTR_UNUSED(dtenv), comm_point_callback_type* cb, void *cb_arg) diff --git a/util/config_file.c b/util/config_file.c index 25cba18b7..79774b5ac 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -527,6 +527,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_MEMSIZE("http-query-buffer-size:", http_query_buffer_size) else S_MEMSIZE("http-response-buffer-size:", http_response_buffer_size) else S_YNO("http-nodelay:", http_nodelay) + else S_YNO("http-notls-downstream:", http_notls_downstream) else S_YNO("interface-automatic:", if_automatic) else S_YNO("use-systemd:", use_systemd) else S_YNO("do-daemonize:", do_daemonize) @@ -990,6 +991,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_MEM(opt, "http-query-buffer-size", http_query_buffer_size) else O_MEM(opt, "http-response-buffer-size", http_response_buffer_size) else O_YNO(opt, "http-nodelay", http_nodelay) + else O_YNO(opt, "http-notls-downstream", http_notls_downstream) else O_YNO(opt, "use-systemd", use_systemd) else O_YNO(opt, "do-daemonize", do_daemonize) else O_STR(opt, "chroot", chrootdir) diff --git a/util/config_file.h b/util/config_file.h index 7750eaa0e..543484aed 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -143,6 +143,8 @@ struct config_file { size_t http_response_buffer_size; /** set TCP_NODELAY option for http sockets */ int http_nodelay; + /** Disable TLS for http sockets downstream */ + int http_notls_downstream; /** outgoing port range number of ports (per thread) */ int outgoing_num_ports; diff --git a/util/configlexer.c b/util/configlexer.c index a00f50b74..fac0a1bf8 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 3 "" +#line 2 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 334 -#define YY_END_OF_BUFFER 335 +#define YY_NUM_RULES 335 +#define YY_END_OF_BUFFER 336 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,366 +363,367 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3253] = +static const flex_int16_t yy_accept[3268] = { 0, - 1, 1, 308, 308, 312, 312, 316, 316, 320, 320, - 1, 1, 324, 324, 328, 328, 335, 332, 1, 306, - 306, 333, 2, 333, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 308, 309, 309, 310, - 333, 312, 313, 313, 314, 333, 319, 316, 317, 317, - 318, 333, 320, 321, 321, 322, 333, 331, 307, 2, - 311, 333, 331, 327, 324, 325, 325, 326, 333, 328, - 329, 329, 330, 333, 332, 0, 1, 2, 2, 2, - 2, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 1, 1, 309, 309, 313, 313, 317, 317, 321, 321, + 1, 1, 325, 325, 329, 329, 336, 333, 1, 307, + 307, 334, 2, 334, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 309, 310, 310, 311, + 334, 313, 314, 314, 315, 334, 320, 317, 318, 318, + 319, 334, 321, 322, 322, 323, 334, 332, 308, 2, + 312, 334, 332, 328, 325, 326, 326, 327, 334, 329, + 330, 330, 331, 334, 333, 0, 1, 2, 2, 2, + 2, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 308, 0, 312, - 0, 319, 0, 316, 320, 0, 331, 0, 2, 2, - 331, 327, 0, 324, 328, 0, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 309, 0, 313, + 0, 320, 0, 317, 321, 0, 332, 0, 2, 2, + 332, 328, 0, 325, 329, 0, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 332, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 122, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 131, 332, 332, 332, 332, 332, 332, - 332, 331, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 123, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 132, 333, 333, 333, 333, 333, 333, + 333, 332, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 106, 332, 332, 332, 332, 332, 332, 8, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 123, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 107, 333, 333, 333, 333, 333, 333, 8, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 124, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 136, 332, 331, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 299, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 137, 333, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 300, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 331, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 63, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 235, 332, 14, - 15, 332, 19, 18, 332, 332, 219, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 129, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 64, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 236, 333, 14, + 15, 333, 19, 18, 333, 333, 220, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 130, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 217, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 3, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 331, 332, 332, 332, 332, 332, 332, 332, - 293, 332, 332, 292, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 218, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 3, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 332, 333, 333, 333, 333, 333, 333, 333, + 294, 333, 333, 293, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 315, 332, 332, 332, 332, 332, 332, 332, 62, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 66, 332, 266, 332, 332, - 332, 332, 332, 332, 332, 332, 300, 301, 332, 332, - 332, 332, 332, 67, 332, 332, 130, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 316, 333, 333, 333, 333, 333, 333, 333, 63, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 67, 333, 267, 333, + 333, 333, 333, 333, 333, 333, 333, 301, 302, 333, + 333, 333, 333, 333, 68, 333, 333, 131, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 126, 332, 332, 332, 332, 332, 332, 332, 332, - 206, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 21, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 155, 332, 332, 331, 315, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 104, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 127, 333, 333, 333, 333, 333, 333, 333, + 333, 207, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 21, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 156, 333, 333, 332, 316, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 105, 333, 333, - 332, 332, 332, 332, 274, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 178, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 154, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 103, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 275, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 179, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 155, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 104, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 32, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 33, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 64, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 128, 331, 332, 332, - 332, 332, 332, 121, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 65, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 32, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 33, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 65, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 129, 332, + 333, 333, 333, 333, 333, 122, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 66, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 239, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 179, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 53, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 240, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 180, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 54, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 257, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 57, 332, 58, 332, 332, 332, 332, 332, - 107, 332, 108, 332, 332, 332, 332, 105, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 7, 332, 331, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 228, 332, 332, - 332, 332, 157, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 258, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 58, 333, 59, 333, 333, + 333, 333, 333, 108, 333, 109, 333, 333, 333, 333, + 106, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 7, + 333, 332, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 229, 333, 333, 333, 333, 158, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 240, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 45, 332, 332, 332, 332, - 332, 332, 332, 332, 54, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 198, - 332, 197, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 16, 17, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 241, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 45, + 333, 333, 333, 333, 333, 333, 333, 333, 55, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 199, 333, 198, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 68, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 205, 332, 332, 332, 332, - 332, 332, 110, 332, 109, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 189, 332, 332, 332, - 332, 332, 332, 332, 332, 137, 331, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 98, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 87, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 16, 17, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 69, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 206, + 333, 333, 333, 333, 333, 333, 111, 333, 110, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 190, 333, 333, 333, 333, 333, 333, 333, 333, 138, + 332, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 99, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 88, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 218, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 91, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 61, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 192, 193, 332, 332, 332, 268, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 6, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 219, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 92, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 62, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 193, 194, 333, 333, + 333, 269, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 6, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 272, 332, 332, 332, 332, 332, 332, 294, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 42, - 332, 332, 332, 332, 44, 332, 332, 332, 332, 332, - 332, 332, 332, 51, 332, 332, 332, 332, 332, 332, - 332, 331, 332, 185, 332, 332, 332, 132, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 210, 332, - 186, 332, 332, 332, 225, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 273, 333, 333, 333, + 333, 333, 333, 295, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 42, 333, 333, 333, 333, 44, + 333, 333, 333, 333, 333, 333, 333, 333, 52, 333, + 333, 333, 333, 333, 333, 333, 332, 333, 186, 333, + 333, 333, 133, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 211, 333, 187, 333, 333, 333, 226, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 52, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 134, 115, 332, 116, - 332, 332, 332, 114, 332, 332, 332, 332, 332, 332, - 332, 332, 152, 332, 332, 50, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 256, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 187, 332, 332, 332, 332, 332, 190, 332, 196, 332, - 332, 332, 332, 332, 224, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 102, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 53, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 135, 116, 333, 117, 333, 333, 333, 115, 333, + 333, 333, 333, 333, 333, 333, 333, 153, 333, 333, + 50, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 257, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 188, 333, 333, 333, + 333, 333, 191, 333, 197, 333, 333, 333, 333, 333, + 225, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 103, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 127, 332, - 332, 332, 332, 332, 332, 59, 332, 332, 332, 26, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 20, - 332, 332, 332, 332, 332, 332, 27, 36, 332, 162, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 331, 332, 332, 332, 332, 332, 332, - 76, 78, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 276, 332, 332, 332, 332, - 236, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 128, 333, 333, 333, 333, 333, + 333, 60, 333, 333, 333, 26, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 20, 333, 333, 333, 333, + 333, 333, 27, 36, 333, 163, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 332, + 333, 333, 333, 333, 333, 333, 77, 79, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 277, 333, 333, 333, 333, 237, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 117, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 151, 332, 46, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 287, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 156, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 216, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 297, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 173, 332, 332, 332, 332, 332, 332, 332, 332, 111, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 118, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 152, + 333, 46, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 288, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 157, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 217, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 298, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 174, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 168, - 332, 180, 332, 332, 332, 332, 331, 332, 140, 332, - 332, 332, 332, 332, 97, 332, 332, 332, 332, 208, - 332, 332, 332, 332, 332, 332, 226, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 248, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 133, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 172, 332, - 332, 332, 332, 332, 332, 79, 80, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 112, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 169, 333, 181, 333, + 333, 333, 333, 332, 333, 141, 333, 333, 333, 333, + 333, 98, 333, 333, 333, 333, 209, 333, 333, 333, + 333, 333, 333, 227, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 249, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 134, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 173, 333, 333, 333, - 332, 332, 60, 290, 332, 332, 332, 332, 332, 86, - 181, 332, 199, 332, 229, 332, 332, 191, 269, 332, - 332, 332, 332, 332, 72, 332, 183, 332, 332, 332, - 332, 332, 9, 332, 332, 332, 101, 332, 332, 332, - 332, 261, 332, 332, 332, 332, 207, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 331, 332, 332, 332, 332, 171, 332, 332, + 333, 333, 333, 80, 81, 333, 333, 333, 333, 333, + 61, 291, 333, 333, 333, 333, 333, 87, 182, 333, + 200, 333, 230, 333, 333, 192, 270, 333, 333, 333, + 333, 333, 73, 333, 184, 333, 333, 333, 333, 333, + 9, 333, 333, 333, 102, 333, 333, 333, 333, 262, + 333, 333, 333, 333, 208, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 158, 332, - 275, 332, 332, 332, 332, 332, 247, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 220, 332, - 332, 304, 332, 332, 332, 267, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 291, 332, 182, 332, 332, 332, - 332, 332, 332, 332, 71, 73, 332, 332, 332, 332, - 332, 332, 332, 100, 332, 332, 332, 332, 259, 332, - 332, 332, 332, 271, 332, 332, 332, 332, 332, 332, + 332, 333, 333, 333, 333, 172, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 159, 333, 276, 333, + 333, 333, 333, 333, 248, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 221, 333, 333, 305, + 333, 333, 333, 268, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 292, 333, 183, 333, 333, 333, 333, + 333, 333, 333, 72, 74, 333, 333, 333, 333, 333, + 333, 333, 101, 333, 333, 333, 333, 260, 333, 333, - 332, 332, 332, 332, 332, 212, 34, 28, 30, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 35, 332, - 29, 31, 332, 332, 332, 332, 332, 332, 332, 332, - 96, 332, 332, 332, 332, 332, 332, 331, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 214, - 211, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 70, - 332, 332, 332, 135, 332, 118, 332, 332, 332, 332, - 332, 332, 332, 332, 153, 47, 332, 332, 323, 13, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 285, + 333, 333, 272, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 213, 34, 28, 30, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 35, 333, 29, + 31, 333, 333, 333, 333, 333, 333, 333, 333, 97, + 333, 333, 333, 333, 333, 333, 332, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 215, 212, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 71, 333, + 333, 333, 136, 333, 119, 333, 333, 333, 333, 333, + 333, 333, 333, 154, 47, 333, 333, 333, 324, 13, - 332, 288, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 12, 332, 332, 22, 332, 332, 332, 265, - 332, 332, 332, 332, 273, 332, 332, 332, 74, 332, - 222, 332, 332, 332, 332, 213, 332, 332, 69, 332, - 332, 332, 332, 23, 332, 43, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 167, 166, - 323, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 215, 209, 332, 227, 332, 332, 277, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 286, + 333, 289, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 12, 333, 333, 22, 333, 333, 333, 266, + 333, 333, 333, 333, 274, 333, 333, 333, 75, 333, + 223, 333, 333, 333, 333, 214, 333, 333, 70, 333, + 333, 333, 333, 23, 333, 43, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 168, 167, + 324, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 216, 210, 333, 228, 333, 333, 278, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 81, 332, - 332, 332, 260, 332, 332, 332, 332, 195, 332, 332, - 332, 332, 221, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 295, 296, 164, 332, 332, 75, 332, 332, - 332, 332, 174, 332, 332, 112, 113, 332, 332, 332, - 332, 159, 332, 161, 332, 200, 332, 332, 332, 332, - 165, 332, 332, 230, 332, 332, 332, 332, 332, 332, - 332, 142, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 238, 332, 332, 332, 332, 332, - 332, 332, 332, 24, 332, 270, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 82, + 333, 333, 333, 261, 333, 333, 333, 333, 196, 333, + 333, 333, 333, 222, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 296, 297, 165, 333, 333, 76, 333, + 333, 333, 333, 175, 333, 333, 113, 114, 333, 333, + 333, 333, 160, 333, 162, 333, 201, 333, 333, 333, + 333, 166, 333, 333, 231, 333, 333, 333, 333, 333, + 333, 333, 143, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 239, 333, 333, 333, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 201, - 332, 332, 258, 332, 289, 332, 194, 332, 332, 332, - 332, 55, 332, 332, 332, 332, 4, 332, 332, 332, - 332, 125, 141, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 233, 37, 38, 332, 332, 332, 332, 332, 332, - 332, 278, 332, 332, 332, 332, 332, 332, 332, 246, - 332, 332, 332, 332, 332, 332, 332, 332, 204, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 84, 332, 56, 264, 332, 234, 332, 332, 332, 332, + 333, 333, 333, 333, 24, 333, 271, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 202, 333, 333, 259, 333, 290, 333, 195, 333, + 333, 333, 333, 56, 333, 333, 333, 333, 4, 333, + 333, 333, 333, 126, 142, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 234, 37, 38, 333, 333, 333, 333, + 333, 333, 333, 279, 333, 333, 333, 333, 333, 333, + 333, 247, 333, 333, 333, 333, 333, 333, 333, 333, + 205, 333, 333, 333, 333, 333, 333, 333, 333, 333, - 11, 332, 332, 332, 332, 332, 332, 124, 332, 332, - 332, 332, 202, 88, 332, 40, 332, 332, 332, 332, - 332, 332, 332, 332, 170, 332, 332, 332, 332, 332, - 144, 332, 332, 332, 332, 237, 332, 332, 332, 332, - 332, 245, 332, 332, 332, 332, 138, 332, 332, 332, - 119, 120, 332, 332, 332, 90, 94, 89, 332, 332, - 332, 82, 332, 332, 332, 332, 332, 10, 332, 332, - 332, 262, 298, 332, 332, 332, 332, 303, 39, 332, - 332, 332, 332, 332, 169, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 85, 333, 57, 265, 333, 235, 333, + 333, 333, 333, 11, 333, 333, 333, 333, 333, 333, + 125, 333, 333, 333, 333, 203, 89, 333, 40, 333, + 333, 333, 333, 333, 333, 333, 333, 171, 333, 333, + 333, 333, 333, 145, 333, 333, 333, 333, 238, 333, + 333, 333, 333, 333, 246, 333, 333, 333, 333, 139, + 333, 333, 333, 120, 121, 333, 333, 333, 91, 95, + 90, 333, 333, 333, 333, 83, 333, 333, 333, 333, + 333, 10, 333, 333, 333, 263, 299, 333, 333, 333, + 333, 304, 39, 333, 333, 333, 333, 333, 170, 333, - 332, 332, 332, 332, 332, 332, 332, 332, 95, 93, - 332, 332, 332, 83, 286, 332, 332, 332, 332, 332, - 332, 332, 188, 332, 332, 332, 332, 332, 203, 332, - 332, 332, 332, 332, 332, 332, 332, 160, 77, 332, - 332, 332, 332, 332, 279, 332, 332, 332, 332, 332, - 332, 332, 242, 332, 332, 241, 139, 305, 332, 92, - 48, 332, 145, 146, 149, 150, 147, 148, 85, 332, - 263, 332, 332, 332, 332, 163, 332, 332, 332, 332, - 332, 232, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 96, 94, 333, 51, 333, 333, 84, 287, + 333, 333, 333, 333, 333, 333, 333, 189, 333, 333, + 333, 333, 333, 204, 333, 333, 333, 333, 333, 333, + 333, 333, 161, 78, 333, 333, 333, 333, 333, 280, + 333, 333, 333, 333, 333, 333, 333, 243, 333, 333, + 242, 140, 306, 333, 93, 48, 333, 146, 147, 150, + 151, 148, 149, 86, 333, 264, 333, 333, 333, 333, + 164, 333, 333, 333, 333, 333, 233, 333, 333, 333, - 176, 175, 41, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 99, 332, - 231, 332, 255, 283, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 49, 5, 332, 332, - 223, 332, 332, 284, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 243, 25, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 244, 332, 332, - 332, 143, 332, 332, 332, 332, 332, 332, 332, 332, - 177, 332, 184, 332, 332, 332, 332, 332, 332, 332, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 177, 176, 41, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 100, 333, 232, 333, 256, 284, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 49, 5, 333, 333, 224, 333, 333, 285, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 244, 25, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 245, 333, 333, 333, 144, 333, 333, 333, - 332, 332, 280, 332, 332, 332, 332, 332, 332, 332, - 332, 332, 332, 332, 332, 332, 332, 332, 332, 332, - 302, 332, 332, 251, 332, 332, 332, 332, 332, 281, - 332, 332, 332, 332, 332, 332, 282, 332, 332, 332, - 249, 332, 252, 253, 332, 332, 332, 332, 332, 250, - 254, 0 + 333, 333, 333, 333, 333, 178, 333, 185, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 281, 333, 333, + 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, + 333, 333, 333, 333, 333, 303, 333, 333, 252, 333, + 333, 333, 333, 333, 282, 333, 333, 333, 333, 333, + 333, 283, 333, 333, 333, 250, 333, 253, 254, 333, + 333, 333, 333, 333, 251, 255, 0 } ; static const YY_CHAR yy_ec[256] = @@ -765,17 +766,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3271] = +static const flex_int16_t yy_base[3286] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3165, 3121, 81, 6365, - 6365, 6365, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3868, 3794, 81, 6384, + 6384, 6384, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3093, 6365, 6365, 6365, - 107, 2724, 6365, 6365, 6365, 154, 2535, 2515, 6365, 6365, - 6365, 226, 2454, 6365, 6365, 6365, 163, 2353, 6365, 238, - 6365, 242, 148, 2067, 1986, 6365, 6365, 6365, 246, 1743, - 6365, 6365, 6365, 250, 1651, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3568, 6384, 6384, 6384, + 107, 3343, 6384, 6384, 6384, 154, 2940, 2739, 6384, 6384, + 6384, 226, 2537, 6384, 6384, 6384, 163, 2356, 6384, 238, + 6384, 242, 148, 2314, 2201, 6384, 6384, 6384, 246, 1728, + 6384, 6384, 6384, 250, 1651, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -805,9 +806,9 @@ static const flex_int16_t yy_base[3271] = 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6365, 817, 820, 833, 826, 834, 835, 836, + 822, 818, 6384, 817, 820, 833, 826, 834, 835, 836, 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, - 854, 863, 866, 6365, 864, 868, 898, 870, 872, 892, + 854, 863, 866, 6384, 864, 868, 898, 870, 872, 892, 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, @@ -817,21 +818,21 @@ static const flex_int16_t yy_base[3271] = 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, - 6365, 1068, 1070, 1072, 1073, 1074, 1075, 6365, 1077, 1071, + 6384, 1068, 1070, 1072, 1073, 1074, 1075, 6384, 1077, 1071, 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, - 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6365, 1136, 1139, + 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6384, 1136, 1139, 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, - 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6365, 1208, 1211, + 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6384, 1208, 1211, 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, - 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6365, 1361, 1357, + 1340, 1338, 1343, 1345, 1348, 1349, 1354, 6384, 1361, 1357, 1362, 1360, 1367, 1368, 1370, 1358, 1373, 1376, 1377, 1379, 1378, 1381, 1385, 1382, 1387, 1388, 1392, 1395, 1393, 1402, @@ -845,653 +846,657 @@ static const flex_int16_t yy_base[3271] = 1545, 1546, 1555, 1547, 1556, 1558, 1548, 1559, 1561, 1564, 1571, 1566, 1572, 1575, 1576, 1578, 1577, 1580, 1581, 1588, - 1589, 1593, 6365, 1585, 1601, 1583, 1596, 1597, 1599, 1605, - 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6365, 1614, 6365, - 6365, 315, 6365, 6365, 1616, 1621, 6365, 1622, 1631, 1618, + 1589, 1593, 6384, 1585, 1601, 1583, 1596, 1597, 1599, 1605, + 1612, 1607, 1610, 1608, 1611, 1613, 1637, 6384, 1614, 6384, + 6384, 315, 6384, 6384, 1616, 1621, 6384, 1622, 1631, 1618, 1641, 1619, 1643, 1647, 1630, 1638, 1635, 1660, 1661, 1664, 1632, 1666, 1667, 1650, 1672, 1670, 1677, 1678, 1681, 1682, 1689, 1687, 1690, 1686, 1697, 1695, 1699, 1703, 1705, 1707, - 1710, 1692, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, - 1720, 1727, 1726, 1736, 1732, 1741, 1750, 6365, 1742, 1751, - 1752, 1753, 1760, 1728, 1755, 1756, 1763, 1766, 1759, 1757, + 1710, 1711, 1712, 1713, 1715, 1717, 1718, 1714, 1721, 1723, + 1720, 1727, 1726, 1737, 1736, 1743, 1746, 6384, 1744, 1753, + 1756, 1752, 1760, 1755, 1759, 1761, 1763, 1767, 1764, 1768, - 1768, 1769, 1770, 1772, 1774, 1777, 1779, 1786, 1781, 6365, - 1782, 1784, 1787, 1790, 1788, 1796, 1798, 1792, 1794, 1801, - 1802, 1813, 1804, 1808, 1809, 1816, 1814, 1818, 6365, 1820, - 1827, 1824, 1830, 1831, 1817, 1833, 1832, 1836, 1834, 1839, - 1840, 1841, 1842, 1855, 1848, 1846, 1847, 1850, 1863, 1851, - 1867, 1871, 1860, 1868, 1873, 1874, 1875, 1876, 1878, 1879, - 1887, 1889, 1886, 1890, 1885, 1894, 1902, 1903, 1891, 1892, - 1901, 1908, 1913, 1915, 1916, 1917, 1911, 1926, 1918, 1922, - 1923, 1925, 1933, 1928, 1936, 1944, 1931, 1934, 1937, 1939, - 6365, 1946, 1947, 6365, 1949, 1948, 1950, 1972, 1951, 1955, + 1770, 1771, 1732, 1774, 1776, 1779, 1781, 1783, 1782, 6384, + 1784, 1788, 1789, 1790, 1791, 1796, 1798, 1792, 1794, 1802, + 1804, 1815, 1807, 1805, 1810, 1812, 1816, 1822, 6384, 1824, + 1828, 1818, 1830, 1823, 1831, 1832, 1834, 1837, 1836, 1838, + 1842, 1841, 1843, 1853, 1849, 1848, 1850, 1854, 1864, 1863, + 1866, 1873, 1855, 1865, 1867, 1876, 1878, 1879, 1880, 1882, + 1889, 1891, 1881, 1892, 1888, 1896, 1900, 1893, 1903, 1904, + 1905, 1906, 1911, 1913, 1914, 1915, 1918, 1925, 1909, 1921, + 1923, 1930, 1938, 1928, 1936, 1944, 1926, 1934, 1942, 1939, + 6384, 1946, 1949, 6384, 1951, 1952, 1950, 1973, 1955, 1953, - 1963, 1957, 1960, 1965, 1964, 1966, 1982, 1976, 1992, 1989, - 1994, 1995, 1997, 2000, 1984, 2001, 2002, 2003, 2004, 2010, - 1967, 2009, 2013, 2023, 2021, 2027, 2031, 2026, 2028, 2032, - 2051, 2029, 2030, 2039, 2033, 2036, 2038, 2034, 2040, 2044, - 2049, 2046, 2061, 2064, 2056, 2060, 2066, 2073, 2075, 2058, - 6365, 2086, 2082, 2081, 2083, 2093, 2089, 2088, 6365, 2090, - 2092, 2095, 2097, 2103, 2098, 2104, 2102, 2105, 2106, 2108, - 2114, 2115, 2110, 2113, 2127, 6365, 2118, 6365, 2125, 2128, - 2131, 2129, 2133, 2132, 2135, 2136, 6365, 6365, 2137, 2144, - 2145, 2155, 2152, 6365, 2138, 2162, 6365, 2159, 2164, 2157, + 1959, 1961, 1962, 1965, 1966, 1977, 1975, 1979, 1996, 1983, + 1985, 1997, 1988, 2000, 1986, 2002, 2004, 2006, 2008, 2010, + 2011, 2009, 2026, 2029, 1968, 2021, 2030, 2012, 2025, 2028, + 2047, 2031, 2032, 2035, 2033, 2038, 2036, 2042, 2040, 2051, + 2052, 2056, 2063, 2059, 2062, 2058, 2065, 2060, 2069, 2075, + 2077, 6384, 2086, 2082, 2083, 2087, 2090, 2088, 2089, 6384, + 2092, 2094, 2091, 2104, 2096, 2095, 2106, 2099, 2109, 2110, + 2112, 2113, 2116, 2115, 2117, 2126, 6384, 2127, 6384, 2118, + 2128, 2131, 2133, 2135, 2129, 2136, 2137, 6384, 6384, 2140, + 2146, 2138, 2157, 2149, 6384, 2152, 2160, 6384, 2163, 2158, - 2158, 2166, 2168, 2170, 2169, 2179, 2172, 2180, 2175, 2176, - 2177, 6365, 2185, 2187, 2189, 2193, 2195, 2196, 2197, 2200, - 6365, 2199, 2203, 2204, 2213, 2215, 2209, 2206, 2217, 2221, - 2216, 2223, 2225, 2226, 2227, 2236, 2237, 2228, 2238, 2239, - 2241, 6365, 2232, 2246, 2253, 2249, 2252, 2248, 2255, 2256, - 2258, 2259, 2260, 2261, 2265, 2267, 2268, 2275, 2276, 2271, - 2273, 2281, 2282, 2284, 2285, 2292, 2289, 2290, 2291, 2293, - 6365, 2294, 2296, 2300, 171, 2302, 2304, 2303, 2306, 2305, - 2309, 2312, 2323, 2327, 2322, 2324, 2326, 2325, 2331, 2333, - 2334, 2335, 2336, 2337, 2341, 2340, 6365, 2343, 2346, 2348, + 2156, 2165, 2166, 2169, 2171, 2173, 2178, 2174, 2181, 2176, + 2190, 2179, 6384, 2177, 2183, 2192, 2196, 2186, 2198, 2200, + 2199, 6384, 2206, 2207, 2208, 2215, 2217, 2210, 2213, 2218, + 2224, 2220, 2222, 2226, 2227, 2229, 2234, 2239, 2232, 2235, + 2243, 2250, 6384, 2236, 2245, 2253, 2251, 2258, 2252, 2255, + 2249, 2259, 2260, 2266, 2262, 2268, 2270, 2271, 2280, 2281, + 2272, 2279, 2277, 2283, 2285, 2288, 2293, 2291, 2292, 2294, + 2295, 6384, 2296, 2298, 2303, 171, 2304, 2306, 2305, 2307, + 2310, 2325, 2308, 2322, 2332, 2311, 2329, 2331, 2330, 2336, + 2337, 2338, 2339, 2340, 2341, 2342, 2344, 6384, 2346, 2347, - 2349, 2351, 2352, 2362, 6365, 2354, 2368, 2365, 2374, 2375, - 2363, 2380, 2371, 2361, 2384, 2386, 2385, 2387, 2389, 2388, - 2392, 2395, 6365, 2397, 2400, 2401, 2398, 2407, 2409, 2408, - 2410, 2411, 2415, 2416, 2420, 2422, 2419, 2421, 2423, 2424, - 2427, 2430, 2432, 2436, 2437, 2438, 2439, 2443, 2441, 2447, - 2448, 6365, 2457, 2449, 2459, 2461, 2450, 2460, 2463, 2477, - 2467, 2474, 2472, 2478, 2489, 2480, 2482, 2487, 2483, 2495, - 2492, 2505, 2504, 2506, 2513, 2496, 2515, 2518, 2507, 2510, - 2520, 2519, 2525, 2522, 2524, 2532, 2537, 2533, 2540, 2534, - 2545, 2558, 2549, 6365, 2547, 2553, 2541, 2557, 2570, 2562, + 2349, 2353, 2352, 2355, 2360, 6384, 2362, 2369, 2372, 2381, + 2364, 2373, 2382, 2378, 2383, 2384, 2386, 2388, 2390, 2389, + 2392, 2398, 2395, 6384, 2400, 2403, 2405, 2396, 2412, 2411, + 2404, 2418, 2419, 2420, 2423, 2421, 2422, 2425, 2424, 2426, + 2427, 2432, 2431, 2428, 2430, 2440, 2441, 2442, 2451, 2452, + 2444, 2453, 2454, 6384, 2464, 2455, 2459, 2457, 2460, 2462, + 2466, 2482, 2472, 2475, 2477, 2483, 2492, 2485, 2479, 2502, + 2486, 2494, 2495, 2509, 2507, 2508, 2516, 2506, 2518, 2520, + 2510, 2514, 2522, 2521, 2524, 2526, 2528, 2539, 2542, 2538, + 2544, 2545, 2534, 2552, 2547, 6384, 2551, 2553, 2556, 2557, - 2561, 2567, 2563, 2565, 2573, 2575, 2576, 2584, 2579, 2581, - 2582, 2586, 2585, 2588, 2587, 2593, 2595, 2602, 2598, 2604, - 2606, 6365, 2607, 2609, 2611, 2612, 2616, 2617, 2620, 2622, - 2624, 2625, 2626, 2628, 2631, 2632, 2633, 2634, 2636, 2638, - 2641, 6365, 2649, 2642, 2643, 2644, 2650, 2654, 2656, 2660, - 2663, 2666, 2667, 2668, 2669, 2670, 6365, 2678, 2679, 2675, - 2687, 2677, 2682, 2684, 2689, 2690, 6365, 2691, 2692, 2693, - 2700, 2702, 2697, 6365, 2704, 2699, 2705, 2707, 2708, 2709, - 2711, 2714, 2717, 2718, 2721, 2726, 2733, 2722, 2730, 6365, - 2728, 2742, 2734, 2740, 2738, 2744, 2748, 2750, 2751, 2753, + 2570, 2562, 2560, 2567, 2573, 2575, 2576, 2577, 2578, 2585, + 2580, 2583, 2586, 2588, 2589, 2590, 2594, 2597, 2601, 2605, + 2598, 2608, 2609, 6384, 2614, 2610, 2602, 2616, 2619, 2620, + 2624, 2626, 2628, 2629, 2630, 2632, 2634, 2635, 2636, 2637, + 2639, 2641, 2644, 6384, 2646, 2645, 2647, 2653, 2658, 2657, + 2659, 2661, 2668, 2670, 2655, 2671, 2672, 2674, 6384, 2682, + 2684, 2680, 2689, 2681, 2686, 2688, 2692, 2693, 6384, 2694, + 2695, 2696, 2703, 2704, 2700, 6384, 2707, 2702, 2708, 2710, + 2711, 2712, 2714, 2717, 2720, 2721, 2724, 2729, 2736, 2725, + 2733, 6384, 2731, 2745, 2737, 2743, 2741, 2747, 2751, 2753, - 2755, 2760, 6365, 2767, 2766, 2764, 2777, 2754, 2769, 2772, - 2778, 2779, 2780, 2781, 2782, 2785, 6365, 2786, 2788, 2789, - 2791, 2793, 2794, 2796, 2808, 2799, 2803, 2804, 2809, 2810, - 2813, 2814, 2816, 2821, 2817, 2820, 2827, 2830, 2831, 2833, - 2836, 2844, 2834, 2842, 2843, 2839, 2846, 2847, 2856, 2857, - 2858, 2860, 6365, 2863, 2864, 2865, 2854, 2866, 2869, 2870, - 2873, 2875, 2871, 2879, 2877, 2881, 2884, 2894, 2898, 2886, - 2889, 2896, 2899, 2900, 2902, 2901, 2904, 2905, 2914, 2911, - 2910, 2919, 2912, 2921, 2928, 2925, 2926, 2929, 2930, 2932, - 2917, 2935, 2933, 2937, 2939, 2942, 2953, 2954, 2943, 2955, + 2754, 2756, 2758, 2763, 6384, 2770, 2769, 2767, 2780, 2757, + 2772, 2775, 2781, 2782, 2783, 2784, 2785, 2788, 6384, 2789, + 2791, 2792, 2794, 2796, 2797, 2799, 2811, 2802, 2806, 2807, + 2812, 2813, 2816, 2817, 2819, 2824, 2820, 2823, 2830, 2833, + 2834, 2836, 2839, 2847, 2850, 2837, 2846, 2849, 2842, 2852, + 2854, 2863, 2866, 2861, 2864, 6384, 2868, 2870, 2869, 2853, + 2872, 2875, 2876, 2879, 2880, 2877, 2882, 2883, 2885, 2887, + 2901, 2904, 2892, 2893, 2896, 2902, 2905, 2908, 2907, 2909, + 2910, 2917, 2918, 2916, 2925, 2920, 2924, 2933, 2922, 2931, + 2932, 2934, 2935, 2936, 2937, 2943, 2945, 2946, 2955, 2960, - 2956, 2957, 2958, 6365, 2961, 2962, 2963, 2966, 2969, 2972, - 2975, 2982, 2973, 2974, 2984, 2990, 2991, 2981, 2992, 2983, - 2999, 2997, 6365, 2998, 6365, 3000, 3002, 3004, 3012, 3008, - 6365, 3014, 6365, 3015, 3020, 3009, 3011, 6365, 3023, 3017, - 3022, 3029, 3024, 3032, 3033, 3035, 3034, 3041, 3036, 3038, - 3043, 3044, 3046, 3049, 3050, 3054, 3051, 3061, 3067, 3055, - 3064, 3057, 3062, 3070, 3072, 3076, 6365, 3078, 3080, 3082, - 3083, 3084, 3085, 3086, 3087, 3089, 3090, 3092, 3102, 3098, - 3108, 3095, 3114, 3117, 3124, 3105, 3126, 6365, 3109, 3128, - 3119, 3129, 6365, 3131, 3106, 3132, 3139, 3134, 3137, 3141, + 2956, 2962, 2963, 2938, 2964, 2965, 6384, 2968, 2969, 2970, + 2972, 2973, 2979, 2975, 2987, 2982, 2983, 2988, 2990, 2991, + 2998, 2999, 3000, 3007, 3003, 6384, 3004, 6384, 3005, 3006, + 3008, 3016, 3012, 6384, 3014, 6384, 3021, 3028, 3015, 3019, + 6384, 3030, 3023, 3025, 3036, 3029, 3038, 3039, 3040, 3041, + 3046, 3042, 3048, 3049, 3050, 3052, 3054, 3056, 3057, 3061, + 3070, 3063, 3060, 3071, 3065, 3073, 3077, 3078, 3083, 6384, + 3086, 3079, 3082, 3089, 3090, 3091, 3092, 3093, 3096, 3098, + 3099, 3107, 3102, 3108, 3104, 3112, 3115, 3122, 3121, 3129, + 6384, 3125, 3127, 3128, 3130, 6384, 3132, 3131, 3133, 3142, - 3142, 3143, 3146, 3147, 3149, 3154, 3158, 3161, 3162, 6365, - 3167, 3163, 3150, 3170, 3178, 3180, 3185, 3182, 3183, 3188, - 3192, 3190, 3191, 3153, 3193, 3194, 3196, 3203, 3206, 3202, - 3211, 3198, 3208, 3210, 3215, 3201, 3216, 3217, 3218, 3224, - 3225, 3222, 3223, 3226, 3227, 6365, 3229, 3230, 3231, 3249, - 3233, 3234, 3245, 3235, 6365, 3251, 3247, 3252, 3258, 3260, - 3262, 3255, 3263, 3264, 3265, 3266, 3268, 3271, 3272, 6365, - 3276, 6365, 3273, 3286, 3279, 3285, 3290, 3292, 3294, 3300, - 3293, 3295, 3303, 3304, 3301, 3305, 3307, 3311, 3313, 3315, - 3318, 3327, 3317, 3319, 3323, 3328, 3329, 3331, 6365, 6365, + 3135, 3138, 3144, 3145, 3150, 3140, 3152, 3146, 3154, 3167, + 3163, 3162, 6384, 3169, 3170, 3171, 3173, 3180, 3183, 3188, + 3184, 3185, 3190, 3193, 3192, 3194, 3195, 3198, 3199, 3200, + 3208, 3210, 3201, 3211, 3209, 3215, 3222, 3218, 3212, 3214, + 3216, 3224, 3225, 3226, 3227, 3228, 3229, 3235, 3231, 6384, + 3242, 3243, 3244, 3247, 3246, 3248, 3249, 3153, 6384, 3252, + 3256, 3259, 3258, 3260, 3262, 3265, 3267, 3269, 3271, 3273, + 3274, 3283, 3278, 6384, 3282, 6384, 3275, 3286, 3285, 3299, + 3293, 3272, 3301, 3307, 3296, 3303, 3308, 3310, 3311, 3312, + 3314, 3316, 3317, 3318, 3325, 3321, 3324, 3332, 3331, 3333, - 3333, 3334, 3335, 3338, 3339, 3344, 3346, 3350, 3351, 3353, - 3355, 3357, 3366, 6365, 3363, 3364, 3367, 3368, 3378, 3369, - 3381, 3388, 3385, 3392, 3391, 6365, 3374, 3370, 3399, 3383, - 3395, 3406, 6365, 3401, 6365, 3402, 3403, 3405, 3407, 3410, - 3411, 3412, 3414, 3418, 3425, 3433, 3429, 3431, 3415, 3420, - 3432, 3434, 3443, 3436, 3440, 3441, 6365, 3445, 3446, 3448, - 3449, 3450, 3457, 3460, 3453, 6365, 3461, 3463, 3465, 3467, - 3468, 3470, 3472, 3474, 3475, 3479, 3481, 6365, 3477, 3483, - 3490, 3485, 3487, 3492, 3495, 3499, 3501, 6365, 3504, 3506, - 3513, 3511, 3508, 3512, 3516, 3517, 3518, 3521, 3523, 3522, + 3334, 3336, 6384, 6384, 3337, 3338, 3339, 3341, 3342, 3353, + 3354, 3352, 3360, 3359, 3346, 3363, 3372, 6384, 3368, 3370, + 3373, 3374, 3384, 3375, 3387, 3389, 3391, 3394, 3392, 6384, + 3380, 3376, 3403, 3399, 3401, 3408, 6384, 3405, 6384, 3406, + 3407, 3409, 3411, 3414, 3415, 3416, 3418, 3422, 3429, 3437, + 3433, 3435, 3419, 3424, 3436, 3438, 3447, 3440, 3444, 3445, + 6384, 3449, 3450, 3452, 3453, 3454, 3461, 3464, 3457, 6384, + 3465, 3467, 3469, 3471, 3472, 3474, 3476, 3478, 3479, 3483, + 3485, 6384, 3481, 3487, 3494, 3489, 3491, 3496, 3499, 3503, + 3505, 6384, 3508, 3510, 3517, 3515, 3512, 3516, 3520, 3521, - 3524, 3525, 3526, 3528, 3530, 3533, 3531, 3544, 3545, 3532, - 3553, 3554, 3536, 6365, 3546, 3558, 3559, 3560, 3561, 3567, - 3568, 3571, 3573, 3562, 3577, 3584, 3566, 3574, 3589, 3586, - 3597, 3593, 6365, 3598, 3594, 3605, 3579, 3600, 3602, 3606, - 3608, 3610, 3607, 3611, 3614, 3617, 3624, 3619, 3620, 3621, - 3629, 3625, 6365, 3636, 3634, 3627, 3637, 3643, 3644, 3652, - 3647, 3649, 3650, 3658, 3651, 3660, 3653, 3662, 3663, 3666, - 3655, 6365, 6365, 3668, 3670, 3672, 6365, 3674, 3676, 3685, - 3687, 3678, 3688, 3682, 3691, 3680, 3692, 3690, 3694, 6365, - 3696, 3704, 3702, 3705, 3713, 3714, 3718, 3715, 3719, 3709, + 3522, 3525, 3527, 3526, 3528, 3529, 3530, 3532, 3534, 3537, + 3535, 3548, 3549, 3536, 3557, 3558, 3540, 6384, 3550, 3562, + 3563, 3564, 3565, 3571, 3572, 3575, 3577, 3566, 3581, 3588, + 3570, 3578, 3593, 3590, 3601, 3597, 6384, 3602, 3598, 3609, + 3583, 3604, 3606, 3610, 3612, 3614, 3611, 3615, 3618, 3619, + 3622, 3631, 3621, 3624, 3628, 3638, 3629, 6384, 3643, 3639, + 3641, 3645, 3646, 3650, 3658, 3651, 3654, 3655, 3662, 3659, + 3663, 3666, 3667, 3668, 3671, 3672, 6384, 6384, 3678, 3673, + 3675, 6384, 3679, 3680, 3687, 3683, 3690, 3691, 3693, 3694, + 3695, 3696, 3699, 3702, 6384, 3704, 3713, 3708, 3705, 3716, - 3711, 3721, 3723, 3724, 3725, 3731, 3740, 3741, 3727, 3737, - 3739, 6365, 3736, 3738, 3744, 3746, 3748, 3750, 6365, 3753, - 3754, 3755, 3757, 3763, 3764, 3769, 3771, 3773, 3774, 3776, - 3777, 3778, 3779, 3781, 3786, 3784, 3791, 3792, 3783, 6365, - 3796, 3797, 3800, 3803, 6365, 3807, 3810, 3817, 3818, 3814, - 3816, 3815, 3825, 6365, 3822, 3824, 3823, 3826, 3836, 3831, - 3838, 3837, 3829, 6365, 3833, 3839, 3843, 6365, 3844, 3849, - 3855, 3857, 3846, 3865, 3861, 3863, 3864, 3860, 6365, 3871, - 6365, 3872, 3862, 3877, 6365, 3873, 3879, 3881, 3883, 3880, - 3887, 3888, 3894, 3896, 3884, 3890, 3898, 3900, 3901, 3902, + 3720, 3723, 3719, 3717, 3715, 3727, 3729, 3730, 3731, 3732, + 3736, 3740, 3744, 3739, 3742, 3743, 6384, 3745, 3748, 3750, + 3752, 3753, 3754, 6384, 3756, 3760, 3761, 3762, 3774, 3776, + 3766, 3779, 3768, 3781, 3783, 3785, 3784, 3786, 3793, 3788, + 3791, 3798, 3799, 3801, 6384, 3807, 3808, 3792, 3810, 6384, + 3814, 3821, 3817, 3828, 3818, 3825, 3823, 3832, 6384, 3827, + 3829, 3831, 3834, 3842, 3838, 3846, 3845, 3837, 6384, 3841, + 3847, 3851, 6384, 3852, 3857, 3862, 3864, 3848, 3871, 3867, + 3869, 3870, 3872, 6384, 3875, 6384, 3879, 3877, 3883, 6384, + 3878, 3885, 3886, 3888, 3892, 3893, 3894, 3900, 3896, 3902, - 3909, 3906, 3908, 3910, 3911, 6365, 3914, 3912, 3913, 3920, - 3931, 3918, 3923, 3929, 3933, 3934, 6365, 6365, 3937, 6365, - 3939, 3940, 3941, 6365, 3943, 3945, 3952, 3944, 3948, 3951, - 3955, 3960, 6365, 3963, 3964, 6365, 3966, 3973, 3969, 3970, - 3971, 3974, 3977, 3978, 3981, 3982, 3983, 3979, 3985, 3984, - 6365, 3987, 3988, 3989, 3997, 3980, 4002, 4006, 4008, 4004, - 6365, 4010, 4012, 4016, 4018, 4019, 6365, 4020, 6365, 4017, - 4021, 4025, 4031, 4027, 6365, 4036, 4028, 4040, 4032, 4043, - 4045, 4044, 4050, 4041, 4051, 4060, 4052, 4053, 4056, 6365, - 4061, 4062, 4068, 4069, 4063, 4065, 4079, 4072, 4081, 4074, + 3904, 3905, 3906, 3907, 3909, 3916, 3908, 3912, 3915, 3917, + 6384, 3918, 3920, 3927, 3928, 3934, 3932, 3937, 3924, 3939, + 3940, 6384, 6384, 3943, 6384, 3947, 3946, 3948, 6384, 3951, + 3954, 3958, 3955, 3956, 3959, 3970, 3963, 6384, 3974, 3975, + 6384, 3960, 3978, 3985, 3980, 3967, 3977, 3981, 3986, 3988, + 3990, 3991, 3992, 3993, 3996, 3994, 6384, 3998, 3999, 4005, + 4007, 4008, 4001, 4012, 4020, 4010, 6384, 4023, 4014, 4024, + 4027, 4029, 6384, 4031, 6384, 4033, 4034, 4035, 4037, 4038, + 6384, 4044, 4041, 4049, 4045, 4053, 4050, 4054, 4056, 4060, + 4062, 4069, 4065, 4064, 4066, 6384, 4067, 4073, 4076, 4079, - 4082, 4087, 4084, 4088, 4093, 4091, 4097, 4095, 6365, 4099, - 4101, 4104, 4115, 4107, 4105, 6365, 4106, 4119, 4121, 6365, - 4110, 4112, 4120, 4128, 4122, 4130, 4131, 4135, 4136, 6365, - 4133, 4134, 4137, 4138, 4139, 4141, 6365, 6365, 4152, 6365, - 4153, 4142, 4154, 4155, 4156, 4161, 4163, 4166, 4168, 4160, - 4172, 4177, 4174, 4164, 4184, 4191, 4194, 4189, 4190, 4180, - 6365, 6365, 4196, 4201, 4197, 4204, 4207, 4193, 4199, 4215, - 4213, 4210, 4220, 4221, 4228, 6365, 4225, 4212, 4230, 4223, - 6365, 4214, 4231, 4224, 4233, 4235, 4237, 4238, 4241, 4244, - 4242, 4246, 4252, 4250, 4253, 4251, 4259, 4257, 4260, 4262, + 4068, 4072, 4090, 4088, 4089, 4081, 4094, 4096, 4085, 4100, + 4103, 4098, 4106, 4105, 6384, 4108, 4112, 4109, 4119, 4115, + 4116, 6384, 4121, 4122, 4126, 6384, 4125, 4129, 4132, 4135, + 4136, 4137, 4140, 4139, 4142, 6384, 4146, 4147, 4143, 4145, + 4160, 4152, 6384, 6384, 4162, 6384, 4164, 4144, 4151, 4169, + 4148, 4171, 4175, 4176, 4178, 4172, 4179, 4184, 4182, 4186, + 4194, 4196, 4198, 4197, 4199, 4201, 6384, 6384, 4203, 4204, + 4206, 4210, 4211, 4213, 4214, 4222, 4218, 4226, 4229, 4231, + 4239, 6384, 4220, 4217, 4234, 4235, 6384, 4240, 4241, 4243, + 4242, 4244, 4245, 4248, 4247, 4251, 4250, 4253, 4254, 4259, - 4263, 4268, 4271, 6365, 4272, 4273, 4274, 4275, 4278, 4281, - 4282, 4283, 4284, 6365, 4289, 6365, 4288, 4285, 4294, 4307, - 4308, 4287, 4297, 4309, 4299, 4314, 4317, 4319, 4311, 4320, - 4321, 4325, 4328, 4330, 4331, 6365, 4335, 4324, 4332, 4338, - 4342, 4346, 4339, 4348, 4343, 4354, 4349, 4351, 4360, 4363, - 4355, 4357, 4365, 4367, 6365, 4368, 4371, 4372, 4375, 4376, - 4377, 4378, 4384, 4388, 4380, 4382, 4389, 4393, 6365, 4390, - 4395, 4396, 4398, 4404, 4401, 4407, 4406, 4409, 6365, 4414, - 4405, 4415, 4416, 4417, 4419, 4423, 4426, 4429, 4431, 4436, - 6365, 4428, 4441, 4442, 4432, 4445, 4434, 4443, 4444, 6365, + 4268, 4260, 4262, 4270, 4261, 4271, 4275, 4277, 4279, 6384, + 4281, 4283, 4284, 4285, 4287, 4290, 4291, 4292, 4293, 6384, + 4298, 6384, 4294, 4296, 4299, 4315, 4301, 4316, 4319, 4318, + 4306, 4323, 4324, 4327, 4329, 4330, 4333, 4334, 4332, 4338, + 4340, 4342, 6384, 4343, 4349, 4350, 4351, 4353, 4355, 4356, + 4358, 4359, 4361, 4364, 4362, 4366, 4372, 4368, 4374, 4373, + 4376, 6384, 4380, 4389, 4378, 4391, 4381, 4386, 4393, 4400, + 4403, 4394, 4404, 4398, 4406, 6384, 4407, 4408, 4409, 4410, + 4412, 4415, 4418, 4420, 4421, 6384, 4426, 4422, 4430, 4429, + 4428, 4432, 4433, 4438, 4440, 4445, 4448, 6384, 4441, 4452, - 4459, 4460, 4451, 4467, 4450, 4468, 4469, 4472, 4453, 4463, - 4479, 4475, 4480, 4481, 4483, 4473, 4491, 4494, 4493, 6365, - 4486, 6365, 4495, 4498, 4502, 4500, 4503, 4505, 6365, 4507, - 4510, 4512, 4513, 4515, 6365, 4517, 4514, 4516, 4520, 6365, - 4518, 4533, 4519, 4522, 4536, 4540, 6365, 4543, 4544, 4545, - 4552, 4554, 4549, 4556, 4537, 4559, 4553, 4557, 4561, 4562, - 4570, 4567, 4568, 6365, 4572, 4566, 4575, 4577, 4584, 4579, - 4585, 4586, 4592, 4587, 6365, 4589, 4593, 4595, 4596, 4597, - 4598, 4599, 4608, 4603, 4606, 4607, 4611, 4612, 6365, 4617, - 4614, 4620, 4627, 4623, 4632, 6365, 6365, 4622, 4637, 4639, + 4455, 4444, 4454, 4456, 4458, 4461, 6384, 4465, 4471, 4464, + 4478, 4462, 4480, 4481, 4484, 4473, 4475, 4482, 4490, 4491, + 4492, 4493, 4494, 4503, 4510, 4505, 6384, 4495, 6384, 4507, + 4511, 4519, 4517, 4520, 4514, 6384, 4506, 4521, 4524, 4527, + 4529, 6384, 4528, 4530, 4532, 4531, 6384, 4541, 4545, 4533, + 4539, 4549, 4554, 6384, 4557, 4558, 4559, 4566, 4568, 4563, + 4570, 4565, 4573, 4571, 4567, 4575, 4576, 4584, 4582, 4580, + 6384, 4586, 4588, 4593, 4595, 4603, 4589, 4587, 4601, 4609, + 4599, 6384, 4606, 4604, 4610, 4613, 4614, 4615, 4616, 4623, + 4619, 4620, 4622, 4626, 4628, 4629, 6384, 4631, 4632, 4634, - 4619, 4640, 6365, 6365, 4643, 4650, 4646, 4649, 4651, 6365, - 6365, 4653, 6365, 4654, 6365, 4655, 4657, 6365, 6365, 4656, - 4659, 4662, 4663, 4665, 6365, 4671, 6365, 4680, 4675, 4666, - 4677, 4678, 6365, 4679, 4681, 4687, 6365, 4688, 4690, 4689, - 4691, 6365, 4695, 4700, 4692, 4696, 6365, 4701, 4705, 4708, - 4709, 4710, 4712, 4716, 4715, 4720, 4721, 4723, 4722, 4725, - 4732, 4736, 4738, 4740, 4741, 4726, 4743, 4745, 4749, 4747, - 4751, 4752, 4754, 4756, 4757, 4761, 4765, 4758, 4762, 4628, - 4766, 4767, 4768, 4771, 4775, 4780, 4777, 4781, 4782, 4783, - 4784, 4785, 4788, 4789, 4792, 4794, 4797, 6365, 4793, 4798, + 4642, 4644, 4647, 6384, 6384, 4637, 4653, 4655, 4640, 4656, + 6384, 6384, 4659, 4667, 4660, 4665, 4662, 6384, 6384, 4669, + 6384, 4670, 6384, 4673, 4674, 6384, 6384, 4675, 4676, 4677, + 4678, 4685, 6384, 4692, 6384, 4695, 4693, 4681, 4679, 4698, + 6384, 4686, 4696, 4700, 6384, 4704, 4712, 4707, 4709, 6384, + 4711, 4714, 4715, 4718, 6384, 4719, 4722, 4723, 4726, 4729, + 4727, 4731, 4716, 4735, 4739, 4737, 4740, 4741, 4748, 4753, + 4755, 4757, 4750, 4743, 4758, 4764, 4766, 4759, 4768, 4769, + 4770, 4773, 4774, 4776, 4778, 4779, 4782, 4781, 4783, 4784, + 4787, 4785, 4791, 4797, 4798, 4799, 4800, 4801, 4802, 4803, - 4803, 4810, 4804, 4814, 4816, 4806, 4823, 4824, 6365, 4827, - 6365, 4829, 4815, 4831, 4817, 4832, 6365, 4834, 4835, 4837, - 4838, 4839, 4840, 4841, 4844, 4845, 4849, 4850, 6365, 4856, - 4846, 6365, 4852, 4857, 4869, 6365, 4862, 4873, 4865, 4870, - 4875, 4876, 4877, 4878, 4881, 4879, 4885, 4887, 4889, 4893, - 4901, 4903, 4910, 4890, 4894, 4892, 4912, 4905, 4906, 4913, - 4914, 4920, 4921, 4928, 6365, 4915, 6365, 4922, 4924, 4929, - 4930, 4932, 4933, 4935, 6365, 6365, 4936, 4939, 4945, 4940, - 4946, 4948, 4957, 6365, 4951, 4958, 4960, 4952, 6365, 4963, - 4949, 4967, 4971, 6365, 4968, 4972, 4973, 4975, 4976, 4983, + 4806, 4808, 4810, 4812, 4813, 6384, 4815, 4816, 4821, 4829, + 4822, 4830, 4834, 4824, 4841, 4842, 6384, 4845, 6384, 4847, + 4831, 4850, 4837, 4851, 6384, 4852, 4853, 4854, 4855, 4858, + 4857, 4860, 4859, 4863, 4864, 4868, 6384, 4874, 4865, 6384, + 4870, 4878, 4884, 6384, 4885, 4889, 4886, 4890, 4891, 4895, + 4893, 4896, 4897, 4899, 4901, 4903, 4905, 4906, 4909, 4917, + 4920, 4927, 4912, 4907, 4923, 4926, 4928, 4929, 4932, 4933, + 4939, 4934, 4941, 6384, 4943, 6384, 4944, 4945, 4946, 4947, + 4950, 4951, 4954, 6384, 6384, 4952, 4956, 4961, 4963, 4957, + 4966, 4970, 6384, 4968, 4976, 4982, 4977, 6384, 4969, 4979, - 4979, 4985, 4986, 4988, 4990, 6365, 6365, 6365, 6365, 4991, - 4993, 4997, 4998, 4999, 5001, 5004, 5006, 5003, 6365, 5008, - 6365, 6365, 5009, 5016, 5017, 5019, 5020, 5022, 5023, 5025, - 6365, 5027, 5029, 5030, 5036, 5038, 5040, 5044, 5045, 5048, - 5046, 5047, 5055, 5054, 5056, 5058, 5061, 5063, 5068, 6365, - 6365, 5069, 5071, 5072, 5080, 5076, 5078, 5077, 5090, 5085, - 5087, 5086, 5088, 5093, 5094, 5102, 5104, 5100, 5097, 6365, - 5106, 5107, 5108, 6365, 5113, 6365, 5114, 5116, 5099, 5110, - 5118, 5120, 5130, 5124, 6365, 6365, 5132, 5128, 6365, 6365, - 5135, 5136, 5138, 5140, 5141, 5137, 5143, 5145, 5142, 6365, + 4985, 4987, 6384, 4988, 4989, 4991, 4993, 4994, 4997, 5001, + 5002, 5003, 5004, 5008, 6384, 6384, 6384, 6384, 5009, 5012, + 5015, 5017, 5018, 5020, 5023, 5022, 5024, 6384, 5026, 6384, + 6384, 5028, 5035, 5027, 5037, 5036, 5038, 5043, 5045, 6384, + 5046, 5049, 5050, 5047, 5059, 5064, 5066, 5060, 5051, 5068, + 5069, 5076, 5072, 5073, 5075, 5078, 5080, 5082, 6384, 6384, + 5071, 5089, 5091, 5098, 5095, 5096, 5085, 5108, 5103, 5104, + 5105, 5106, 5110, 5111, 5119, 5122, 5112, 5115, 6384, 5120, + 5123, 5126, 6384, 5125, 6384, 5130, 5133, 5124, 5131, 5134, + 5139, 5140, 5145, 6384, 6384, 5146, 5153, 5149, 6384, 6384, - 5147, 6365, 5148, 5149, 5151, 5152, 5165, 5169, 5170, 5167, - 5171, 5173, 6365, 5172, 5174, 6365, 5176, 5175, 5182, 6365, - 5183, 5185, 5191, 5193, 6365, 5195, 5196, 5199, 6365, 5202, - 6365, 5186, 5205, 5207, 5214, 6365, 5198, 5211, 6365, 5216, - 5221, 5222, 5217, 6365, 5209, 6365, 5223, 5229, 5231, 5234, - 5224, 5236, 5237, 5226, 5238, 5246, 5242, 5245, 6365, 6365, - 135, 5254, 5247, 5251, 5255, 5256, 5263, 5258, 5260, 5266, - 6365, 6365, 5267, 6365, 5261, 5273, 6365, 5259, 5274, 5278, - 5268, 5282, 5280, 5281, 5288, 5290, 5291, 5292, 5293, 5294, - 5296, 5297, 5312, 5299, 5309, 5314, 5316, 5319, 5321, 5310, + 5150, 5151, 5156, 5158, 5159, 5152, 5162, 5166, 5160, 6384, + 5167, 6384, 5163, 5168, 5174, 5170, 5186, 5187, 5190, 5189, + 5185, 5191, 6384, 5192, 5194, 6384, 5198, 5197, 5199, 6384, + 5203, 5200, 5206, 5209, 6384, 5213, 5215, 5216, 6384, 5223, + 6384, 5210, 5220, 5217, 5232, 6384, 5224, 5227, 6384, 5234, + 5236, 5237, 5238, 6384, 5239, 6384, 5241, 5243, 5245, 5248, + 5249, 5253, 5250, 5254, 5255, 5262, 5259, 5266, 6384, 6384, + 135, 5274, 5260, 5265, 5267, 5271, 5281, 5276, 5278, 5280, + 6384, 6384, 5284, 6384, 5286, 5288, 6384, 5290, 5292, 5296, + 5293, 5298, 5299, 5300, 5302, 5305, 5307, 5319, 5309, 5306, - 5323, 5324, 5325, 5327, 5329, 5330, 5332, 5333, 6365, 5336, - 5337, 5331, 6365, 5342, 5338, 5348, 5350, 6365, 5357, 5354, - 5358, 5359, 6365, 5343, 5365, 5362, 5360, 5370, 5377, 5373, - 5372, 5374, 6365, 6365, 6365, 5375, 5383, 6365, 5388, 5379, - 5384, 5389, 6365, 5390, 5391, 6365, 6365, 5392, 5395, 5394, - 5402, 6365, 5398, 6365, 5397, 6365, 5400, 5401, 5411, 5413, - 6365, 5415, 5423, 6365, 5426, 5429, 5431, 5432, 5416, 5419, - 5434, 6365, 5443, 5435, 5442, 5445, 5433, 5446, 5448, 5449, - 5450, 5459, 5452, 5456, 6365, 5457, 5460, 5462, 5463, 5466, - 5471, 5472, 5470, 6365, 5474, 6365, 5408, 5475, 5476, 5482, + 5318, 5324, 5314, 5312, 5329, 5332, 5334, 5336, 5338, 5340, + 5341, 5342, 5343, 5344, 5345, 5347, 5348, 5350, 5351, 6384, + 5354, 5355, 5359, 6384, 5361, 5365, 5367, 5363, 6384, 5374, + 5375, 5376, 5378, 6384, 5379, 5381, 5382, 5383, 5388, 5395, + 5391, 5390, 5396, 6384, 6384, 6384, 5393, 5402, 6384, 5406, + 5407, 5408, 5409, 6384, 5410, 5411, 6384, 6384, 5412, 5413, + 5414, 5424, 6384, 5416, 6384, 5415, 6384, 5420, 5426, 5429, + 5432, 6384, 5435, 5438, 6384, 5444, 5446, 5448, 5449, 5450, + 5452, 5451, 6384, 5459, 5455, 5457, 5464, 5454, 5461, 5465, + 5469, 5466, 5481, 5467, 5477, 6384, 5478, 5480, 5483, 5489, - 5478, 5479, 5481, 5492, 5484, 5483, 5495, 5500, 5496, 6365, - 5503, 5505, 6365, 5506, 6365, 5508, 6365, 5509, 5510, 5512, - 5511, 6365, 5514, 5517, 5518, 5519, 6365, 5522, 5520, 5524, - 5530, 6365, 6365, 5531, 5539, 5535, 5532, 5545, 5547, 5536, - 5549, 5542, 5550, 5552, 5561, 5557, 5558, 5560, 5563, 5564, - 5565, 6365, 6365, 6365, 5569, 5571, 5579, 5575, 5582, 5583, - 5578, 6365, 5584, 5587, 5588, 5590, 5598, 5594, 5600, 6365, - 5595, 5597, 5601, 5603, 5605, 5602, 5606, 5608, 6365, 5614, - 5619, 5620, 5622, 5623, 5630, 5632, 5634, 5624, 5641, 5637, - 6365, 5639, 6365, 6365, 5627, 6365, 5640, 5643, 5644, 5647, + 5468, 5479, 5491, 5493, 6384, 5496, 6384, 5497, 5498, 5499, + 5500, 5501, 5502, 5504, 5514, 5507, 5515, 5505, 5516, 5526, + 5518, 6384, 5528, 5530, 6384, 5520, 6384, 5532, 6384, 5522, + 5533, 5534, 5535, 6384, 5544, 5536, 5539, 5545, 6384, 5546, + 5551, 5548, 5553, 6384, 6384, 5554, 5561, 5558, 5557, 5560, + 5569, 5566, 5571, 5572, 5573, 5575, 5584, 5577, 5576, 5580, + 5592, 5594, 5598, 6384, 6384, 6384, 5581, 5585, 5607, 5603, + 5606, 5610, 5608, 6384, 5611, 5613, 5614, 5615, 5623, 5618, + 5621, 6384, 5625, 5622, 5624, 5628, 5630, 5627, 5638, 5639, + 6384, 5632, 5644, 5645, 5633, 5651, 5653, 5655, 5658, 5659, - 6365, 5652, 5645, 5649, 5654, 5656, 5658, 6365, 5667, 5653, - 5660, 5670, 6365, 6365, 5672, 6365, 5677, 5678, 5668, 5680, - 5681, 5684, 5686, 5689, 6365, 5687, 5688, 5690, 5691, 5696, - 6365, 5697, 5698, 5699, 5700, 6365, 5704, 5709, 5706, 5710, - 5711, 6365, 5713, 5701, 5732, 5728, 6365, 5714, 5730, 5727, - 6365, 6365, 5737, 5739, 5741, 6365, 6365, 6365, 5742, 5729, - 5744, 6365, 5750, 5754, 5758, 5762, 5753, 6365, 5764, 5761, - 5766, 6365, 6365, 5765, 5767, 5768, 5770, 6365, 6365, 5746, - 5774, 5772, 5775, 5777, 6365, 5778, 5782, 5788, 5794, 5798, - 5786, 5790, 5799, 5806, 5809, 5802, 5804, 5807, 5810, 5812, + 5660, 5667, 5663, 6384, 5665, 6384, 6384, 5662, 6384, 5666, + 5669, 5670, 5673, 6384, 5676, 5671, 5677, 5678, 5680, 5683, + 6384, 5690, 5689, 5693, 5694, 6384, 6384, 5696, 6384, 5701, + 5698, 5702, 5710, 5705, 5706, 5708, 5713, 6384, 5711, 5715, + 5719, 5720, 5721, 6384, 5722, 5723, 5725, 5726, 6384, 5729, + 5728, 5733, 5734, 5736, 6384, 5738, 5737, 5754, 5753, 6384, + 5739, 5756, 5749, 6384, 6384, 5764, 5766, 5767, 6384, 6384, + 6384, 5769, 5770, 5760, 5773, 6384, 5777, 5783, 5787, 5791, + 5774, 6384, 5793, 5782, 5790, 6384, 6384, 5786, 5794, 5796, + 5798, 6384, 6384, 5795, 5802, 5799, 5807, 5808, 6384, 5810, - 5813, 5821, 5822, 5818, 5826, 5830, 5834, 5831, 6365, 6365, - 5838, 5840, 5814, 6365, 6365, 5842, 5844, 5846, 5848, 5850, - 5852, 5854, 6365, 5855, 5857, 5858, 5859, 5860, 6365, 5862, - 5866, 5861, 5869, 5863, 5872, 5868, 5878, 6365, 6365, 5870, - 5712, 5874, 5884, 5879, 6365, 5886, 5893, 5890, 5891, 5892, - 5894, 5898, 6365, 5895, 5899, 6365, 6365, 6365, 5902, 6365, - 6365, 5903, 6365, 6365, 6365, 6365, 6365, 6365, 6365, 5906, - 6365, 5905, 5916, 5920, 5922, 6365, 5907, 5923, 5924, 5913, - 5925, 6365, 5926, 5927, 5931, 5935, 5940, 5941, 5934, 5943, - 5945, 5944, 5946, 5950, 5948, 5952, 5951, 5953, 5954, 5956, + 5812, 5817, 5825, 5827, 5815, 5829, 5831, 5838, 5811, 5819, + 5833, 5835, 5836, 5842, 5839, 5846, 5855, 5851, 5853, 5860, + 5862, 5863, 6384, 6384, 5865, 6384, 5867, 5813, 6384, 6384, + 5870, 5872, 5874, 5876, 5878, 5880, 5882, 6384, 5883, 5885, + 5886, 5740, 5887, 6384, 5889, 5891, 5888, 5893, 5897, 5898, + 5896, 5901, 6384, 6384, 5894, 5902, 5904, 5913, 5910, 6384, + 5915, 5922, 5917, 5919, 5920, 5923, 5921, 6384, 5926, 5925, + 6384, 6384, 6384, 5927, 6384, 6384, 5929, 6384, 6384, 6384, + 6384, 6384, 6384, 6384, 5933, 6384, 5935, 5944, 5946, 5950, + 6384, 5938, 5947, 5850, 5940, 5951, 6384, 5952, 5953, 5954, - 6365, 6365, 6365, 5959, 5966, 5968, 5969, 5976, 5979, 5982, - 5984, 5970, 5977, 5985, 5987, 5990, 5991, 5993, 6000, 5996, - 5999, 5998, 6001, 6005, 6007, 6002, 6009, 6013, 6365, 6014, - 6365, 6015, 6365, 6365, 6019, 6022, 6024, 6020, 6031, 6036, - 6026, 6034, 6027, 6037, 6044, 6049, 6365, 6365, 6035, 6038, - 6365, 6041, 6050, 6365, 6045, 6052, 6051, 6053, 6059, 6060, - 6062, 6063, 6074, 6365, 6365, 6061, 6064, 6069, 6076, 6078, - 6077, 6084, 6086, 6087, 6089, 6080, 6096, 6365, 6098, 6095, - 6102, 6365, 6103, 6093, 6104, 6105, 6106, 6114, 6109, 6110, - 6365, 6115, 6365, 6118, 6120, 6121, 6119, 6122, 6127, 6130, + 5587, 5957, 5962, 5958, 5966, 5968, 5967, 5969, 5973, 5970, + 5977, 5974, 5976, 5978, 5982, 6384, 6384, 6384, 5990, 5980, + 5992, 5984, 5997, 6001, 6006, 6008, 5999, 6003, 6009, 6010, + 6011, 6013, 6014, 6025, 6017, 6020, 6021, 6022, 6028, 6034, + 6024, 6030, 6036, 6384, 6037, 6384, 6040, 6384, 6384, 6044, + 6045, 6047, 6041, 6054, 6056, 6051, 6053, 6057, 6059, 6062, + 6068, 6384, 6384, 6063, 6069, 6384, 6071, 6070, 6384, 6072, + 6073, 6075, 6077, 6080, 6079, 6081, 6082, 6096, 6384, 6384, + 6083, 6088, 6091, 6100, 6097, 6107, 6104, 6108, 6109, 6111, + 6112, 6121, 6384, 6118, 6119, 6123, 6384, 6125, 6120, 6126, - 6134, 6133, 6365, 6135, 6136, 6143, 6144, 6147, 6149, 6150, - 6151, 6153, 6155, 6156, 6164, 6159, 6165, 6167, 6168, 6169, - 6365, 6175, 6171, 6365, 6176, 6177, 6178, 6179, 6183, 6365, - 6192, 6180, 6185, 6193, 6196, 6200, 6365, 6202, 6206, 6203, - 6365, 6208, 6365, 6365, 6209, 6211, 6212, 6216, 6218, 6365, - 6365, 6365, 6245, 6252, 6259, 6266, 6273, 6280, 6287, 88, - 6294, 6301, 6308, 6315, 6322, 6329, 6336, 6343, 6350, 6357 + 6127, 6128, 6136, 6132, 6135, 6384, 6137, 6384, 6141, 6143, + 6144, 6134, 6142, 6145, 6156, 6154, 6150, 6384, 6160, 6164, + 6162, 6166, 6168, 6170, 6171, 6172, 6174, 6177, 6183, 6180, + 6187, 6188, 6184, 6192, 6189, 6384, 6199, 6190, 6384, 6196, + 6200, 6193, 6202, 6206, 6384, 6211, 6204, 6213, 6214, 6217, + 6218, 6384, 6220, 6227, 6222, 6384, 6228, 6384, 6384, 6230, + 6224, 6231, 6237, 6239, 6384, 6384, 6384, 6264, 6271, 6278, + 6285, 6292, 6299, 6306, 88, 6313, 6320, 6327, 6334, 6341, + 6348, 6355, 6362, 6369, 6376 } ; -static const flex_int16_t yy_def[3271] = +static const flex_int16_t yy_def[3286] = { 0, - 3252, 1, 3253, 3253, 3254, 3254, 3255, 3255, 3256, 3256, - 3257, 3257, 3258, 3258, 3259, 3259, 3252, 3260, 3252, 3252, - 3252, 3252, 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3252, 3252, 3252, - 3262, 3263, 3252, 3252, 3252, 3263, 3264, 3252, 3252, 3252, - 3252, 3264, 3265, 3252, 3252, 3252, 3265, 3266, 3252, 3267, - 3252, 3266, 3266, 3268, 3252, 3252, 3252, 3252, 3268, 3269, - 3252, 3252, 3252, 3269, 3260, 3260, 3252, 3270, 3261, 3270, - 3261, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3267, 1, 3268, 3268, 3269, 3269, 3270, 3270, 3271, 3271, + 3272, 3272, 3273, 3273, 3274, 3274, 3267, 3275, 3267, 3267, + 3267, 3267, 3276, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3277, 3267, 3267, 3267, + 3277, 3278, 3267, 3267, 3267, 3278, 3279, 3267, 3267, 3267, + 3267, 3279, 3280, 3267, 3267, 3267, 3280, 3281, 3267, 3282, + 3267, 3281, 3281, 3283, 3267, 3267, 3267, 3267, 3283, 3284, + 3267, 3267, 3267, 3284, 3275, 3275, 3267, 3285, 3276, 3285, + 3276, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3262, 3262, 3263, - 3263, 3264, 3264, 3252, 3265, 3265, 3266, 3266, 3267, 3267, - 3266, 3268, 3268, 3252, 3269, 3269, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3277, 3277, 3278, + 3278, 3279, 3279, 3267, 3280, 3280, 3281, 3281, 3282, 3282, + 3281, 3283, 3283, 3267, 3284, 3284, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3281, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3266, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, + 3267, 3275, 3267, 3267, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3266, 3266, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3281, 3281, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3281, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3266, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3266, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3266, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3267, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3281, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3252, 3260, 3260, 3260, 3260, 3266, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3281, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3266, 3260, 3260, 3260, 3260, 3252, 3260, 3260, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3275, + 3267, 3275, 3267, 3275, 3275, 3267, 3267, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3252, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, + 3281, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3266, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3267, 3267, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3281, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3267, 3267, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3266, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3252, 3260, 3252, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3267, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3281, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3267, 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3252, 3252, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3267, 3275, 3275, + 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3252, 3260, 3252, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, - 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3260, 3252, 3252, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3252, 3260, 3260, 3260, 3252, 3252, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3267, 3275, 3267, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3267, 3267, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3267, 3267, + 3267, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3267, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3275, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, - 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3252, 3260, 3260, 3252, 3252, 3252, 3260, 3252, - 3252, 3260, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3260, - 3252, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3267, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3267, 3275, 3275, 3275, 3275, 3275, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3267, 3267, 3267, 3275, 3267, 3267, 3275, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3275, 3267, 3275, 3275, 3275, 3275, + 3267, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3252, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3252, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, - 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3267, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3267, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3267, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3275, 3275, - 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, 3260, - 3252, 3260, 3260, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3260, 3260, 3260, 3260, 3260, 3260, 3252, 3260, 3260, 3260, - 3252, 3260, 3252, 3252, 3260, 3260, 3260, 3260, 3260, 3252, - 3252, 0, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252 + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, 3275, + 3275, 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3275, 3275, 3275, 3275, 3275, + 3275, 3267, 3275, 3275, 3275, 3267, 3275, 3267, 3267, 3275, + 3275, 3275, 3275, 3275, 3267, 3267, 0, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267 } ; -static const flex_int16_t yy_nxt[6406] = +static const flex_int16_t yy_nxt[6425] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1677,530 +1682,532 @@ static const flex_int16_t yy_nxt[6406] = 86, 86, 910, 922, 86, 911, 86, 926, 924, 912, 86, 928, 913, 86, 86, 929, 940, 931, 930, 914, 915, 927, 916, 86, 86, 932, 933, 86, 934, 86, - 86, 935, 939, 86, 942, 86, 936, 943, 945, 944, - 86, 86, 937, 938, 86, 86, 950, 941, 949, 86, + 86, 935, 939, 86, 942, 86, 936, 943, 946, 944, + 86, 86, 937, 938, 86, 86, 951, 941, 950, 86, - 86, 951, 86, 86, 953, 86, 947, 952, 86, 946, - 86, 955, 86, 956, 954, 957, 86, 959, 86, 948, - 86, 958, 960, 86, 962, 86, 86, 86, 86, 963, - 86, 86, 967, 86, 86, 961, 86, 970, 966, 86, - 86, 86, 968, 974, 984, 86, 964, 965, 969, 86, - 975, 971, 972, 976, 86, 86, 176, 977, 980, 981, - 979, 973, 978, 86, 86, 86, 86, 983, 86, 86, - 86, 982, 86, 86, 985, 987, 86, 986, 988, 86, - 989, 86, 86, 86, 994, 86, 991, 86, 990, 992, - 86, 997, 86, 998, 86, 86, 995, 86, 996, 86, + 86, 952, 86, 86, 954, 945, 948, 953, 86, 947, + 86, 956, 86, 957, 955, 958, 86, 960, 86, 949, + 86, 959, 961, 86, 86, 86, 86, 86, 86, 964, + 86, 86, 968, 86, 86, 962, 86, 971, 967, 86, + 86, 176, 969, 963, 975, 86, 965, 966, 970, 86, + 86, 972, 973, 978, 976, 977, 86, 86, 979, 86, + 981, 974, 980, 982, 994, 86, 86, 984, 86, 86, + 983, 985, 86, 86, 86, 988, 86, 86, 986, 989, + 86, 86, 987, 86, 86, 990, 995, 86, 992, 86, + 999, 993, 86, 998, 86, 86, 86, 86, 996, 991, - 86, 86, 993, 86, 1000, 86, 1001, 86, 1003, 86, - 1004, 86, 1005, 999, 86, 86, 1006, 86, 1013, 1007, - 1011, 86, 86, 1009, 1002, 1012, 86, 86, 1010, 86, - 86, 86, 1008, 86, 1018, 1020, 1014, 86, 1016, 1021, - 86, 1015, 1019, 86, 86, 86, 86, 86, 1023, 86, - 1025, 1017, 86, 86, 86, 86, 1029, 1031, 1022, 86, - 86, 86, 1034, 86, 86, 1024, 1026, 1027, 86, 1028, - 1035, 1036, 1032, 86, 1033, 1030, 86, 1038, 1040, 1037, - 86, 86, 1039, 1042, 86, 1041, 86, 86, 86, 86, - 1044, 86, 86, 1043, 1051, 1046, 1052, 1054, 86, 86, + 997, 86, 86, 86, 86, 86, 1001, 86, 1004, 86, + 1002, 86, 1006, 1005, 1000, 86, 1007, 86, 86, 1008, + 86, 1014, 1012, 86, 1010, 86, 1003, 1013, 86, 86, + 1011, 86, 1009, 1015, 1017, 86, 86, 86, 1019, 1021, + 1022, 86, 1016, 86, 86, 86, 1020, 86, 1024, 86, + 86, 86, 1023, 1018, 86, 86, 86, 1025, 1030, 1032, + 1035, 86, 86, 86, 1026, 1027, 86, 86, 86, 1028, + 1029, 1036, 1033, 1037, 1031, 1034, 86, 86, 86, 86, + 86, 1039, 1038, 1040, 1042, 1043, 86, 1045, 1044, 86, + 1041, 86, 86, 86, 86, 86, 1052, 1047, 1053, 1055, - 86, 1056, 86, 86, 86, 86, 1045, 86, 1047, 1057, - 1049, 1048, 1050, 1053, 86, 86, 86, 1060, 1055, 1062, - 1058, 86, 1065, 1059, 86, 1061, 86, 1064, 86, 86, - 86, 86, 1066, 1069, 1071, 86, 86, 1068, 86, 86, - 1074, 86, 1063, 1073, 86, 1075, 168, 86, 1067, 86, - 86, 1070, 86, 1077, 1072, 1081, 1076, 86, 1078, 86, - 86, 86, 86, 86, 86, 1094, 1079, 1080, 86, 1097, - 86, 1082, 1095, 86, 1084, 1085, 86, 86, 86, 86, - 86, 1086, 1099, 1083, 1087, 86, 1119, 174, 1088, 86, - 1089, 1096, 1100, 1101, 1090, 86, 1091, 86, 1098, 1104, + 1046, 86, 86, 1057, 86, 86, 86, 1058, 1054, 86, + 1059, 1048, 1050, 86, 1049, 1051, 86, 86, 86, 86, + 1066, 1056, 86, 1063, 86, 1065, 86, 86, 86, 1061, + 1067, 86, 1070, 1072, 86, 1060, 86, 1062, 86, 86, + 1064, 86, 1071, 86, 1069, 1075, 1068, 86, 1074, 86, + 1076, 168, 86, 1078, 1073, 86, 1077, 86, 1079, 86, + 1082, 1080, 86, 86, 86, 86, 86, 1081, 86, 1095, + 1096, 1083, 86, 1098, 86, 86, 1085, 1086, 86, 86, + 1124, 86, 1100, 1084, 1088, 1087, 86, 1097, 86, 1089, + 86, 1090, 86, 1103, 1101, 1091, 86, 1092, 86, 86, - 1102, 1092, 86, 1103, 1105, 86, 1093, 86, 86, 1113, - 86, 1106, 1108, 86, 86, 86, 86, 86, 1111, 1114, - 1121, 1107, 86, 86, 1109, 1110, 86, 1120, 1112, 1115, - 1122, 1117, 1118, 1123, 86, 1124, 86, 1116, 1125, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 1137, 86, - 1140, 86, 86, 86, 1136, 1142, 1141, 86, 1139, 86, - 1127, 1126, 86, 1128, 86, 1129, 1138, 1143, 1147, 86, - 1130, 86, 1131, 86, 86, 1146, 1144, 86, 1132, 86, - 173, 1145, 1148, 1133, 1134, 1152, 86, 1149, 86, 1150, - 1135, 1154, 1153, 1155, 86, 86, 86, 1151, 1156, 86, + 1099, 86, 1093, 1105, 1102, 1107, 1104, 1094, 1106, 86, + 86, 1114, 1108, 86, 1109, 86, 1111, 86, 1112, 86, + 1115, 86, 86, 86, 86, 86, 1110, 1121, 1113, 1125, + 1120, 1116, 1119, 1122, 86, 1118, 1123, 1126, 86, 86, + 1117, 86, 86, 86, 86, 86, 86, 1127, 86, 86, + 1138, 86, 1141, 86, 1142, 86, 1137, 1128, 1140, 1129, + 86, 1130, 1139, 1143, 86, 86, 1131, 1144, 1132, 86, + 1148, 86, 86, 86, 1133, 86, 86, 1149, 86, 1134, + 1135, 1154, 86, 1145, 1146, 1147, 1136, 1150, 86, 1151, + 86, 1153, 1155, 1157, 1152, 86, 86, 1161, 1158, 86, - 1159, 86, 86, 86, 1165, 86, 86, 1160, 86, 1158, - 86, 86, 1162, 1157, 1163, 86, 86, 86, 86, 86, - 1161, 86, 1168, 86, 1164, 1166, 86, 86, 86, 1175, - 1167, 86, 1170, 1172, 1177, 1169, 1173, 1174, 86, 1171, - 86, 86, 86, 1176, 86, 86, 86, 1178, 86, 86, - 86, 86, 1179, 1185, 1186, 1187, 1182, 86, 86, 1189, - 1184, 1180, 1190, 1181, 1183, 86, 1188, 1192, 86, 1193, - 86, 86, 86, 1195, 1194, 86, 1196, 86, 1191, 86, - 1197, 86, 86, 86, 1198, 86, 1204, 1206, 86, 86, - 86, 1199, 86, 86, 1208, 1200, 1202, 1203, 86, 1201, + 86, 86, 86, 86, 86, 86, 1162, 86, 86, 86, + 1156, 1167, 86, 1160, 1164, 1159, 1165, 86, 1168, 86, + 1166, 1163, 86, 86, 1170, 86, 86, 1169, 86, 86, + 86, 86, 1171, 1179, 1177, 1175, 1172, 1174, 1176, 86, + 86, 86, 86, 1173, 86, 1181, 86, 1178, 86, 86, + 86, 86, 1191, 86, 1187, 1188, 1180, 1186, 1189, 86, + 1184, 1182, 86, 1183, 1192, 86, 1185, 1195, 1190, 86, + 86, 86, 1196, 86, 1199, 1193, 86, 1197, 86, 86, + 1198, 1194, 86, 1200, 86, 1206, 86, 86, 1208, 86, + 86, 86, 86, 1212, 86, 1202, 86, 1204, 1201, 86, - 86, 1210, 86, 1207, 1209, 1205, 86, 1212, 86, 86, - 86, 1213, 86, 86, 1215, 1216, 86, 86, 1218, 86, - 1221, 1211, 86, 1220, 1214, 1217, 86, 1222, 86, 86, - 86, 1223, 1219, 1225, 86, 1226, 86, 1224, 86, 86, - 86, 86, 1230, 1232, 1233, 86, 1234, 1227, 1237, 86, - 86, 86, 86, 1231, 86, 1228, 1235, 1236, 1229, 86, - 1240, 86, 86, 1238, 1242, 86, 86, 1241, 86, 86, - 1243, 86, 86, 86, 86, 1247, 1248, 1244, 86, 1239, - 86, 86, 1253, 1254, 86, 1249, 86, 1245, 86, 86, - 1246, 1256, 1251, 1257, 86, 86, 1250, 86, 86, 1255, + 1203, 1205, 174, 86, 1209, 86, 1211, 1207, 1210, 86, + 1214, 86, 86, 86, 1215, 1216, 1217, 1213, 1218, 86, + 86, 86, 1223, 86, 1219, 1220, 86, 1222, 86, 1224, + 86, 86, 1225, 86, 1227, 86, 1221, 86, 1228, 86, + 86, 1234, 86, 1232, 1226, 86, 1235, 86, 86, 86, + 1236, 1229, 86, 1237, 1230, 1233, 86, 1239, 86, 1231, + 1242, 1238, 86, 86, 86, 86, 86, 1240, 86, 1243, + 1244, 86, 86, 86, 1245, 86, 1249, 1246, 1241, 86, + 1247, 86, 1250, 86, 86, 86, 1251, 1255, 1256, 1259, + 86, 1248, 86, 86, 86, 1253, 86, 1258, 86, 1252, - 1252, 1261, 86, 86, 86, 86, 86, 86, 1267, 86, - 1260, 1259, 1263, 168, 1258, 86, 86, 86, 86, 86, - 1262, 1274, 86, 1264, 1272, 86, 1266, 1273, 1271, 1269, - 1276, 1265, 1270, 1268, 1277, 86, 86, 86, 86, 86, - 86, 1280, 1279, 1281, 86, 1275, 86, 86, 86, 86, - 86, 1278, 1284, 86, 86, 1290, 86, 1287, 1282, 86, - 1283, 86, 86, 1285, 86, 86, 168, 86, 1286, 1288, - 1294, 1300, 1289, 1291, 86, 86, 86, 1293, 86, 1292, - 1296, 86, 1301, 1302, 86, 1295, 1303, 86, 86, 1297, - 1305, 1298, 1308, 86, 1299, 1304, 1306, 86, 86, 86, + 1257, 86, 1263, 1254, 86, 86, 86, 86, 86, 86, + 1269, 86, 1261, 1262, 1265, 1260, 168, 86, 86, 86, + 86, 86, 1264, 86, 86, 1274, 1266, 173, 1268, 1278, + 1273, 1271, 1275, 1267, 1272, 86, 1270, 1276, 86, 1279, + 1280, 1277, 86, 86, 86, 86, 1282, 1281, 1283, 86, + 86, 86, 86, 86, 86, 86, 1286, 86, 1292, 86, + 86, 1289, 86, 1284, 1285, 86, 86, 1287, 86, 168, + 1290, 1296, 1288, 86, 1293, 86, 1291, 86, 1298, 1302, + 1294, 1295, 86, 1303, 1306, 86, 86, 1299, 1297, 1300, + 1304, 86, 1301, 1305, 86, 86, 86, 86, 1308, 86, - 86, 86, 86, 1307, 1310, 86, 1309, 1313, 86, 1317, - 86, 86, 1312, 86, 86, 1314, 1315, 1311, 1318, 1319, - 86, 86, 86, 86, 86, 1321, 1322, 1316, 86, 86, - 1323, 1320, 86, 86, 86, 86, 86, 86, 1324, 1325, - 86, 1327, 1329, 86, 1330, 86, 1334, 1326, 1328, 86, - 86, 86, 86, 1331, 86, 1333, 86, 1332, 1335, 1338, - 86, 86, 86, 86, 1345, 1336, 1339, 166, 1341, 1337, - 86, 1340, 86, 86, 86, 1343, 86, 1346, 1350, 1342, - 86, 1344, 1348, 1349, 1352, 86, 1347, 86, 1351, 1353, - 86, 86, 1357, 86, 1367, 86, 86, 1368, 1356, 1354, + 1307, 86, 86, 86, 1312, 86, 1311, 1315, 86, 86, + 1309, 86, 1319, 86, 1310, 1314, 86, 86, 86, 1316, + 1313, 1320, 1317, 1321, 86, 86, 1325, 1318, 1324, 1322, + 1323, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 1331, 86, 86, 86, 1326, 1327, 1329, 1330, + 1332, 1336, 1328, 86, 86, 86, 1333, 86, 1335, 1337, + 1334, 1338, 1340, 1339, 86, 86, 86, 86, 86, 1341, + 86, 1348, 86, 86, 1342, 86, 1343, 86, 1351, 86, + 1353, 1346, 1345, 1349, 1344, 86, 1350, 1347, 86, 1355, + 86, 1354, 86, 1352, 1356, 86, 86, 1360, 86, 86, - 86, 1355, 86, 1358, 1366, 86, 1365, 1359, 86, 86, - 1360, 1361, 1371, 1369, 1370, 1362, 164, 86, 86, 86, - 86, 1363, 1372, 86, 1373, 1364, 86, 1374, 86, 1376, - 1375, 86, 86, 86, 1377, 86, 1378, 86, 86, 1386, - 1379, 1380, 1381, 1383, 1387, 86, 86, 86, 163, 1384, - 86, 1388, 1382, 86, 86, 1385, 1390, 1389, 86, 1395, - 86, 1391, 86, 1392, 1399, 1393, 86, 1394, 1396, 1397, - 86, 86, 1401, 1398, 86, 86, 86, 1403, 86, 1402, - 86, 1400, 1404, 86, 1405, 1407, 86, 1409, 86, 86, - 1408, 1413, 86, 1414, 86, 86, 1406, 86, 86, 86, + 1371, 1369, 1358, 1359, 1357, 86, 1361, 86, 86, 1370, + 1362, 1368, 1372, 1363, 1364, 86, 1374, 1373, 1365, 86, + 86, 86, 86, 86, 1366, 1375, 1376, 86, 1367, 86, + 1377, 86, 1379, 86, 86, 86, 1380, 86, 1381, 86, + 1378, 86, 1386, 1382, 1384, 1383, 1389, 86, 1398, 1390, + 166, 86, 86, 1387, 1385, 86, 1391, 86, 86, 1388, + 86, 1392, 1399, 1400, 86, 86, 86, 1393, 1402, 86, + 86, 1401, 1394, 86, 1395, 86, 1396, 1406, 1397, 1405, + 86, 1403, 1407, 86, 1408, 1410, 86, 1404, 86, 86, + 86, 86, 1416, 86, 1417, 1409, 86, 1412, 86, 86, - 86, 86, 1415, 1412, 1417, 1410, 86, 1411, 86, 1416, - 1419, 86, 1418, 1422, 1423, 86, 1425, 86, 1420, 86, - 86, 1426, 86, 1427, 86, 86, 1424, 1428, 1431, 86, - 86, 1421, 1433, 86, 1430, 86, 1434, 86, 86, 86, - 1438, 86, 1435, 1429, 86, 86, 86, 86, 1440, 86, - 1432, 86, 1442, 1444, 86, 86, 86, 86, 1443, 1436, - 1437, 1448, 86, 86, 1439, 1446, 1441, 86, 1450, 86, - 1447, 1449, 1445, 86, 1452, 1451, 86, 1454, 1453, 86, - 86, 86, 86, 86, 1455, 1460, 1461, 1457, 86, 1458, - 86, 86, 86, 1462, 1463, 86, 1459, 86, 1456, 1464, + 1411, 86, 86, 86, 1418, 1415, 1420, 86, 1413, 1414, + 86, 86, 1422, 1419, 86, 86, 1421, 1426, 86, 1425, + 1428, 86, 86, 86, 1429, 1423, 1427, 86, 1431, 86, + 1430, 1434, 86, 86, 1432, 1424, 1436, 86, 1433, 86, + 1437, 86, 86, 86, 1441, 86, 1438, 86, 86, 86, + 86, 1443, 86, 1435, 86, 1445, 1447, 86, 86, 86, + 86, 1446, 1449, 1439, 1440, 1451, 86, 1442, 86, 1444, + 86, 86, 86, 1450, 86, 1448, 1453, 1455, 1454, 1456, + 1452, 86, 1457, 86, 86, 86, 1459, 86, 1458, 1463, + 1460, 1464, 1461, 86, 86, 86, 1466, 86, 1465, 86, - 86, 1467, 86, 86, 168, 86, 86, 1472, 1466, 1473, - 86, 1475, 86, 86, 1465, 86, 1474, 86, 86, 1469, - 86, 86, 86, 1468, 86, 1470, 1476, 86, 1483, 1471, - 86, 86, 1477, 1480, 86, 86, 1481, 161, 1478, 86, - 1479, 86, 1482, 86, 1487, 1488, 86, 86, 1490, 1492, - 1484, 86, 1486, 86, 1493, 86, 1485, 86, 1489, 1496, - 1491, 86, 1495, 86, 86, 1494, 86, 86, 86, 1501, - 1504, 1497, 1502, 86, 1506, 1503, 1498, 86, 1499, 86, - 86, 1500, 86, 1507, 1509, 86, 1511, 1505, 1508, 1510, - 86, 86, 86, 86, 86, 86, 1514, 1515, 86, 86, + 1462, 86, 86, 1467, 1470, 86, 86, 168, 86, 86, + 1475, 1476, 1469, 86, 1478, 86, 86, 86, 1468, 1477, + 86, 86, 1472, 86, 86, 86, 1471, 86, 1473, 1479, + 86, 1486, 1474, 86, 86, 1480, 1483, 86, 86, 1484, + 164, 1481, 86, 1482, 86, 1485, 86, 1490, 1491, 86, + 86, 1493, 1495, 1487, 86, 1489, 86, 1496, 86, 1488, + 86, 1492, 1499, 1494, 86, 1498, 86, 86, 1497, 86, + 86, 86, 1504, 1507, 1500, 1505, 86, 1509, 1506, 1501, + 86, 1502, 86, 86, 1503, 86, 1510, 1512, 86, 1514, + 1508, 1511, 1513, 86, 86, 86, 86, 86, 86, 1517, - 1518, 86, 86, 1513, 86, 1523, 86, 86, 1512, 86, - 1524, 1516, 86, 1520, 1517, 1527, 86, 86, 1519, 1521, - 1522, 86, 86, 86, 1528, 1525, 86, 86, 1526, 86, - 86, 1530, 1534, 86, 86, 1529, 1535, 1531, 1532, 1536, - 86, 1539, 1538, 86, 86, 1533, 86, 86, 1537, 86, - 1543, 1544, 86, 1541, 1546, 86, 86, 86, 1540, 86, - 86, 1545, 1547, 1551, 1552, 1550, 1542, 86, 1548, 86, - 86, 86, 1553, 86, 1554, 1555, 86, 86, 86, 86, - 1549, 1556, 86, 86, 86, 1558, 86, 1557, 86, 1563, - 86, 1559, 86, 1562, 86, 1566, 1560, 86, 1561, 86, + 1518, 86, 86, 1521, 86, 86, 1516, 86, 1526, 86, + 86, 1515, 86, 1527, 1519, 86, 1523, 1520, 1530, 86, + 86, 1522, 1524, 1525, 86, 86, 86, 1531, 1528, 86, + 86, 1529, 86, 86, 1533, 1537, 86, 86, 1532, 1538, + 1534, 1535, 1539, 86, 1542, 1541, 86, 86, 1536, 86, + 86, 1540, 86, 1546, 1547, 86, 1544, 1548, 1550, 86, + 86, 1543, 86, 86, 1549, 86, 86, 86, 1551, 1545, + 1555, 1552, 1554, 1556, 86, 1557, 86, 86, 1558, 86, + 1559, 86, 86, 86, 1562, 86, 1553, 1560, 86, 86, + 86, 1561, 86, 86, 1567, 86, 86, 1563, 86, 1566, - 1565, 1569, 86, 1574, 1564, 1571, 1570, 86, 1567, 86, - 1572, 86, 86, 86, 86, 86, 1568, 86, 86, 1573, - 1578, 1582, 1577, 86, 86, 86, 1585, 86, 1575, 1583, - 86, 1576, 86, 1579, 86, 1588, 1581, 1580, 86, 86, - 1587, 86, 86, 86, 1586, 86, 86, 1596, 86, 1584, - 86, 1594, 86, 1597, 1599, 86, 86, 1589, 1590, 1593, - 1602, 1591, 1592, 1595, 1598, 1600, 86, 86, 86, 86, - 86, 86, 1601, 1606, 86, 86, 86, 1607, 1604, 86, - 1610, 1603, 86, 1605, 1614, 86, 86, 86, 86, 1616, - 1608, 1611, 1609, 1615, 86, 86, 86, 86, 1613, 1612, + 86, 1570, 1564, 1569, 1565, 86, 86, 1578, 1573, 86, + 1568, 1575, 1571, 1574, 86, 86, 1576, 86, 86, 1572, + 86, 86, 86, 86, 1586, 1577, 1582, 1581, 1579, 86, + 86, 86, 1589, 86, 1580, 86, 1587, 86, 86, 1583, + 1592, 1585, 1584, 1591, 86, 86, 86, 86, 86, 86, + 86, 86, 1590, 163, 1593, 1588, 86, 1600, 86, 86, + 1608, 1601, 1597, 1594, 1595, 1599, 1596, 1603, 86, 86, + 1598, 1602, 1604, 86, 1605, 86, 86, 86, 86, 1606, + 1610, 86, 86, 86, 1611, 86, 86, 1614, 86, 1607, + 1609, 1618, 86, 1619, 1620, 86, 86, 1612, 1615, 1613, - 1618, 1617, 1619, 86, 86, 86, 1625, 1620, 1621, 1626, - 86, 86, 86, 86, 1622, 86, 1624, 86, 1630, 1631, - 1629, 86, 86, 1623, 86, 86, 1633, 86, 86, 1627, - 86, 1634, 1635, 86, 1628, 86, 86, 86, 1636, 1638, - 1637, 1632, 86, 1641, 1640, 86, 86, 86, 86, 86, - 1639, 86, 1642, 1645, 86, 1647, 86, 86, 1648, 86, - 1652, 1646, 86, 86, 86, 1644, 1643, 86, 86, 1649, - 86, 1650, 1655, 1657, 86, 86, 1653, 86, 1660, 1656, - 86, 1654, 1651, 86, 1658, 86, 1662, 1663, 1659, 86, - 1666, 86, 1661, 168, 1665, 86, 86, 86, 86, 86, + 86, 86, 1617, 86, 86, 1616, 1623, 1624, 1625, 1622, + 1621, 86, 86, 86, 1629, 1630, 86, 86, 86, 86, + 86, 86, 1634, 1635, 1633, 86, 1637, 86, 86, 86, + 1627, 1626, 86, 1628, 86, 1631, 86, 1638, 86, 1632, + 1639, 86, 86, 86, 1640, 1636, 1642, 1644, 1641, 86, + 1645, 86, 86, 86, 86, 86, 1643, 1646, 1649, 86, + 1651, 86, 86, 86, 1652, 86, 1656, 86, 1650, 86, + 86, 1648, 1647, 86, 86, 1659, 86, 1654, 86, 1653, + 1662, 1657, 1661, 86, 86, 1664, 86, 1658, 1655, 1660, + 86, 86, 168, 1663, 1667, 86, 86, 1666, 1670, 86, - 86, 1674, 86, 86, 1664, 86, 159, 1675, 86, 1667, - 1669, 86, 1672, 1668, 1678, 86, 1670, 1671, 86, 86, - 1679, 86, 86, 1676, 1673, 1677, 1680, 86, 1681, 1682, - 86, 1684, 86, 1686, 86, 1683, 1687, 86, 1685, 86, - 1688, 86, 86, 1692, 86, 86, 1693, 86, 1690, 1691, - 86, 1689, 86, 1694, 86, 86, 86, 1699, 1698, 86, - 86, 1695, 86, 86, 3252, 1706, 86, 86, 1696, 1697, - 1703, 86, 1701, 1704, 86, 86, 86, 1700, 1708, 1707, - 86, 1711, 1702, 86, 1723, 1705, 1713, 1715, 1712, 1710, - 1714, 86, 1716, 86, 1709, 86, 86, 1718, 86, 1720, + 1665, 1669, 86, 86, 86, 86, 86, 1678, 1671, 86, + 1668, 86, 86, 1672, 1679, 86, 1673, 86, 1676, 1682, + 86, 86, 1674, 1675, 1683, 86, 1684, 1686, 86, 1688, + 1677, 1680, 1681, 1687, 86, 86, 1690, 1685, 86, 1692, + 86, 86, 86, 86, 86, 86, 86, 1697, 86, 1694, + 1695, 86, 1691, 86, 1689, 86, 1698, 86, 86, 86, + 1693, 1702, 1699, 86, 1703, 86, 86, 86, 1696, 1700, + 1707, 1704, 1701, 1708, 1710, 86, 86, 1705, 1712, 1706, + 86, 1711, 86, 86, 86, 1709, 86, 1757, 1715, 1717, + 1719, 1714, 1718, 86, 1713, 1720, 86, 86, 86, 1722, - 1717, 86, 1719, 86, 86, 86, 86, 86, 1721, 86, - 1727, 86, 1726, 1728, 86, 86, 86, 1722, 1730, 86, - 1729, 86, 1733, 86, 86, 1724, 1732, 1725, 86, 86, - 86, 86, 1735, 1734, 1731, 86, 86, 86, 86, 86, - 86, 1743, 86, 86, 86, 1738, 86, 86, 86, 1736, - 1737, 1739, 1740, 1741, 1745, 1746, 1748, 1747, 86, 1744, - 86, 1742, 86, 1753, 86, 86, 1749, 1750, 86, 1752, - 1755, 86, 1751, 86, 1757, 86, 86, 86, 86, 86, - 1754, 86, 1759, 1756, 86, 86, 86, 1762, 1764, 86, - 1758, 1772, 86, 1765, 1763, 1761, 1766, 1773, 86, 86, + 1724, 86, 1721, 86, 1723, 86, 86, 86, 86, 1716, + 1725, 86, 86, 86, 86, 1731, 1730, 1732, 1734, 1733, + 1726, 86, 86, 86, 86, 86, 1727, 86, 86, 86, + 1728, 86, 1729, 1736, 1737, 86, 1738, 86, 86, 86, + 86, 86, 86, 1739, 86, 1735, 1747, 1740, 86, 1741, + 1748, 1742, 1743, 1744, 1753, 86, 86, 86, 1745, 86, + 86, 86, 86, 1749, 1758, 86, 1746, 1750, 1751, 86, + 1752, 86, 86, 86, 1762, 86, 1756, 1760, 86, 1754, + 86, 1755, 86, 1761, 86, 86, 86, 86, 86, 1759, + 1763, 86, 1764, 1767, 1769, 86, 86, 1777, 86, 86, - 1760, 1767, 1771, 86, 1768, 86, 86, 86, 86, 1769, - 1776, 1770, 1777, 86, 86, 1774, 86, 86, 86, 1778, - 86, 1780, 1781, 1775, 86, 1789, 86, 1779, 86, 1784, - 86, 86, 86, 1782, 1783, 1786, 86, 1788, 1787, 1790, - 86, 86, 86, 1785, 86, 1792, 86, 86, 86, 1799, - 1791, 86, 86, 3252, 1793, 1794, 1796, 86, 1795, 86, - 1803, 1801, 1802, 86, 86, 1798, 86, 1800, 86, 1807, - 86, 1797, 1805, 1811, 1804, 1806, 86, 86, 1812, 86, - 86, 86, 86, 86, 1808, 1817, 1816, 86, 1810, 1809, - 1813, 86, 1814, 1819, 86, 1820, 86, 1825, 86, 1822, + 1766, 1768, 1776, 1780, 1765, 1770, 86, 1772, 1771, 86, + 1773, 1778, 86, 1775, 86, 1774, 86, 1781, 1779, 1782, + 86, 86, 1783, 86, 86, 86, 1785, 86, 1786, 86, + 86, 86, 1794, 1795, 86, 1784, 1789, 86, 86, 1791, + 1793, 1788, 1792, 1787, 86, 86, 86, 86, 1790, 86, + 86, 86, 86, 1804, 86, 86, 161, 1796, 1797, 86, + 1799, 1801, 1798, 1800, 1806, 86, 86, 86, 1808, 1803, + 1805, 1807, 86, 86, 1810, 1802, 86, 1811, 1812, 1816, + 1814, 86, 1809, 86, 1817, 86, 86, 86, 86, 86, + 1813, 1822, 1821, 86, 1815, 1818, 1825, 86, 1819, 1824, - 1818, 86, 1815, 1821, 86, 86, 1826, 1824, 86, 1827, - 1823, 1828, 86, 1830, 86, 86, 86, 1829, 86, 86, - 86, 3252, 1831, 86, 86, 86, 1834, 86, 86, 1835, - 1840, 86, 1842, 86, 1832, 1833, 1836, 1837, 86, 1838, - 1843, 1839, 86, 1845, 86, 86, 86, 86, 1846, 86, - 1850, 1847, 1841, 86, 86, 1844, 86, 1854, 86, 86, - 1849, 86, 86, 86, 1848, 1856, 86, 1857, 1858, 1852, - 86, 1851, 1853, 86, 168, 1859, 86, 1864, 86, 1855, - 86, 86, 1860, 86, 1868, 86, 1862, 86, 86, 1861, - 86, 1863, 86, 1866, 86, 1870, 86, 1875, 86, 1865, + 86, 1827, 86, 1830, 86, 86, 1823, 86, 1820, 1826, + 1831, 1828, 86, 1829, 86, 1835, 86, 1833, 86, 86, + 86, 86, 86, 1834, 86, 1832, 1836, 86, 86, 86, + 1839, 86, 86, 1840, 1845, 86, 1847, 86, 1837, 1838, + 1841, 1842, 86, 1843, 1848, 1844, 86, 1850, 86, 86, + 86, 86, 1851, 86, 1855, 1852, 1846, 86, 86, 1849, + 86, 1859, 86, 86, 1854, 86, 86, 86, 1853, 1861, + 86, 1862, 1863, 1857, 86, 1856, 1858, 86, 168, 1864, + 86, 1869, 86, 1860, 86, 86, 1865, 86, 1873, 86, + 1867, 86, 86, 1866, 86, 1868, 86, 1871, 86, 1875, - 86, 1869, 1867, 86, 1871, 86, 1872, 1879, 86, 1873, - 1876, 1878, 86, 1881, 86, 1880, 1874, 86, 1877, 86, - 1884, 86, 1882, 1885, 86, 86, 86, 1887, 1883, 86, - 86, 86, 1888, 1886, 86, 86, 86, 86, 86, 86, - 1893, 86, 1894, 86, 86, 86, 86, 1895, 1898, 86, - 1889, 1896, 1891, 1890, 1892, 1899, 1897, 86, 86, 86, - 1905, 1907, 1902, 1904, 1901, 1906, 86, 86, 1900, 1903, - 1908, 86, 86, 86, 86, 86, 1913, 3252, 1909, 86, - 86, 86, 1916, 1917, 86, 1918, 86, 86, 1911, 1920, - 86, 1910, 86, 1912, 1914, 1919, 1915, 86, 1921, 86, + 86, 1880, 86, 1870, 86, 1874, 1872, 86, 1876, 86, + 1877, 1884, 86, 1878, 1881, 1883, 86, 1886, 86, 1885, + 1879, 86, 1882, 86, 1889, 86, 1887, 1890, 86, 86, + 86, 1892, 1888, 86, 86, 86, 1893, 1891, 86, 86, + 86, 86, 86, 86, 1898, 86, 1899, 86, 86, 86, + 86, 1900, 1903, 86, 1894, 1901, 1896, 1895, 1897, 1904, + 1902, 86, 86, 86, 1910, 1912, 1907, 1909, 1906, 1911, + 86, 86, 1905, 1908, 1913, 86, 86, 86, 86, 86, + 1918, 159, 1914, 86, 86, 86, 1921, 1922, 86, 1923, + 86, 86, 1916, 1925, 86, 1915, 86, 1917, 1919, 1924, - 1922, 1924, 86, 1925, 1926, 1928, 86, 86, 1923, 1927, - 86, 86, 1930, 86, 1933, 86, 1932, 1931, 86, 86, - 86, 86, 1936, 86, 86, 1929, 1935, 86, 1939, 1938, - 86, 1941, 86, 86, 86, 1940, 1948, 86, 86, 1934, - 86, 1937, 86, 1950, 1942, 1943, 1944, 86, 1951, 86, - 86, 1945, 1954, 1946, 1947, 1953, 86, 86, 1949, 1957, - 86, 1952, 86, 86, 86, 86, 86, 1955, 86, 1958, - 1961, 86, 1956, 86, 1963, 86, 86, 1966, 1967, 86, - 1969, 86, 1959, 86, 1960, 86, 1964, 86, 1968, 86, - 1962, 86, 1974, 86, 1971, 86, 1972, 1965, 86, 1975, + 1920, 86, 1926, 86, 1927, 1929, 86, 1930, 1931, 1933, + 86, 86, 1928, 1932, 86, 86, 1935, 86, 1938, 86, + 1937, 1936, 86, 86, 86, 86, 1941, 86, 86, 1934, + 1940, 86, 86, 1945, 86, 86, 1944, 86, 1947, 1942, + 1946, 86, 86, 1939, 86, 1954, 1948, 1949, 1950, 1943, + 1956, 86, 86, 1951, 86, 1957, 86, 1952, 86, 86, + 1960, 1953, 1955, 86, 86, 1963, 1958, 86, 86, 1959, + 1961, 86, 86, 1964, 1967, 86, 86, 1969, 1962, 86, + 86, 86, 1972, 1973, 86, 86, 86, 1965, 86, 1966, + 1975, 86, 86, 86, 1980, 1981, 86, 1977, 1968, 1970, - 86, 86, 1978, 86, 86, 86, 1981, 86, 1970, 86, - 1973, 1985, 1976, 1979, 1984, 86, 1977, 86, 86, 1980, - 1988, 1989, 86, 1983, 86, 1987, 86, 86, 86, 1982, - 1990, 86, 86, 1991, 86, 1986, 86, 86, 86, 1996, - 86, 1992, 1993, 1994, 86, 1999, 1995, 2000, 2001, 86, - 86, 86, 86, 86, 86, 1997, 2004, 86, 2009, 86, - 2002, 86, 2008, 86, 1998, 2003, 86, 86, 86, 2006, - 86, 2013, 2005, 2007, 2014, 2016, 86, 86, 2011, 2015, - 2010, 2017, 86, 2020, 86, 2012, 86, 86, 2027, 86, - 86, 86, 86, 2018, 86, 2024, 86, 86, 2019, 86, + 86, 1978, 1971, 86, 86, 1974, 86, 86, 86, 86, + 1987, 1976, 86, 1984, 1979, 86, 1985, 86, 86, 1983, + 1991, 86, 1990, 1994, 1982, 1993, 86, 1995, 86, 86, + 86, 1989, 86, 86, 1986, 1996, 86, 1997, 1988, 1998, + 86, 1992, 86, 86, 86, 86, 2002, 2006, 1999, 86, + 2005, 2007, 86, 86, 2001, 86, 86, 86, 86, 2000, + 2010, 86, 2003, 86, 2015, 86, 86, 86, 2014, 86, + 2009, 2004, 2008, 86, 86, 86, 2011, 2019, 2012, 86, + 2020, 86, 2017, 2013, 2021, 2016, 2022, 86, 2018, 86, + 2024, 2026, 86, 2023, 86, 2025, 86, 86, 86, 86, - 2032, 2022, 2029, 2030, 86, 86, 2031, 2021, 2023, 86, - 86, 2025, 2026, 86, 2028, 2037, 86, 2039, 2033, 2038, - 86, 2034, 2040, 86, 2041, 2042, 2035, 86, 86, 86, - 86, 86, 2046, 2036, 2044, 86, 86, 86, 86, 86, - 2045, 2048, 86, 2051, 86, 2053, 86, 2047, 2049, 86, - 168, 86, 86, 2043, 2055, 2054, 86, 86, 2056, 86, - 2059, 2058, 86, 2060, 2050, 3252, 2052, 2061, 86, 2062, - 86, 2057, 2064, 86, 86, 86, 86, 86, 86, 2063, - 2065, 2066, 2068, 2067, 86, 86, 86, 2071, 2070, 2069, - 86, 2072, 86, 86, 86, 2076, 86, 86, 2073, 2075, + 2033, 86, 2027, 2030, 86, 86, 86, 86, 2028, 2035, + 2036, 86, 86, 2037, 86, 2029, 2034, 2031, 2038, 2032, + 86, 86, 2043, 86, 2047, 2042, 2044, 86, 2045, 2039, + 86, 86, 2040, 2046, 86, 2048, 86, 2041, 86, 2052, + 86, 86, 86, 2050, 86, 86, 2054, 86, 2051, 2057, + 86, 86, 2053, 2059, 86, 86, 2055, 2049, 168, 86, + 86, 86, 2061, 2060, 86, 86, 2062, 3267, 2065, 2064, + 86, 2066, 2056, 2058, 2067, 86, 2068, 86, 2070, 2063, + 86, 2069, 86, 86, 86, 86, 2071, 2072, 86, 2073, + 86, 86, 86, 2075, 2074, 2076, 86, 2078, 86, 86, - 86, 86, 2077, 86, 2074, 2078, 2079, 86, 2081, 86, - 2080, 86, 2083, 86, 86, 86, 2088, 2082, 2086, 86, - 2087, 86, 86, 86, 86, 86, 86, 86, 2093, 2084, - 2090, 86, 2085, 86, 2097, 2096, 86, 2089, 2092, 2094, - 2099, 2091, 86, 2095, 86, 2098, 86, 86, 2100, 2104, - 86, 2102, 86, 86, 86, 2105, 86, 86, 86, 2110, - 2103, 86, 2112, 2101, 86, 86, 2113, 2114, 86, 2106, - 2107, 2108, 2109, 86, 2111, 2116, 86, 86, 2117, 86, - 2119, 2115, 86, 86, 86, 2118, 86, 86, 2123, 2120, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 2124, + 2082, 86, 2077, 2079, 2081, 86, 86, 86, 2087, 86, + 2080, 2084, 2085, 86, 2083, 86, 2086, 86, 86, 86, + 86, 86, 86, 2094, 2092, 86, 2089, 2093, 86, 86, + 86, 86, 2099, 86, 2096, 2088, 2090, 86, 2091, 2095, + 86, 86, 2103, 2100, 2098, 86, 2097, 86, 2104, 2102, + 86, 2101, 86, 86, 2105, 2110, 86, 2108, 2107, 86, + 86, 86, 2106, 2111, 86, 2116, 2109, 86, 86, 86, + 2118, 86, 86, 86, 2119, 2112, 86, 2113, 3267, 2114, + 86, 2115, 2120, 86, 2121, 2117, 2122, 86, 86, 2123, + 86, 86, 2126, 86, 86, 2130, 2124, 2125, 86, 86, - 86, 86, 86, 2131, 2122, 2121, 2126, 2127, 2128, 2136, - 86, 2137, 2125, 2130, 2135, 86, 2132, 86, 2129, 86, - 2133, 86, 2139, 86, 2134, 86, 2140, 2143, 2142, 86, - 86, 86, 86, 86, 86, 2138, 2145, 2141, 86, 2146, - 86, 86, 2147, 2149, 86, 86, 2151, 2144, 2148, 86, - 2150, 2153, 2155, 86, 86, 2154, 86, 86, 86, 2152, - 2158, 2157, 2159, 86, 86, 86, 86, 2163, 2160, 86, - 2164, 2156, 2161, 86, 86, 86, 86, 2166, 86, 2165, - 2169, 86, 86, 2170, 2162, 86, 2173, 86, 3252, 2168, - 2174, 2171, 86, 2167, 86, 86, 2175, 86, 2172, 2179, + 2127, 86, 2128, 86, 86, 86, 86, 86, 2131, 86, + 2129, 86, 86, 2138, 86, 2133, 2134, 2135, 86, 2143, + 86, 86, 2132, 86, 2137, 86, 2139, 86, 2146, 2150, + 2142, 2140, 2136, 86, 2145, 2141, 86, 86, 2147, 2144, + 86, 2149, 86, 2148, 86, 2152, 86, 86, 86, 2153, + 86, 86, 2158, 2154, 86, 2151, 2156, 86, 86, 2160, + 2157, 2162, 86, 86, 2155, 2165, 86, 86, 2161, 86, + 2159, 2164, 2166, 86, 2167, 86, 2170, 86, 86, 86, + 86, 86, 86, 2171, 2163, 86, 86, 2173, 2176, 86, + 2172, 2168, 86, 2177, 86, 2169, 2178, 2180, 86, 2174, - 86, 86, 2181, 2177, 86, 2176, 86, 2182, 86, 2180, - 86, 2178, 86, 2183, 86, 2184, 2188, 86, 86, 86, - 86, 2186, 2190, 86, 2187, 86, 2185, 2191, 86, 2192, - 2193, 2194, 86, 86, 86, 86, 2197, 2195, 2189, 2196, - 2200, 86, 2199, 86, 86, 2198, 86, 86, 86, 86, - 86, 86, 86, 2201, 86, 86, 2209, 2210, 2206, 2207, - 2203, 2202, 2204, 2211, 2205, 86, 86, 86, 86, 86, - 2208, 2212, 2214, 86, 86, 2220, 86, 168, 2215, 86, - 2222, 86, 2216, 2219, 2213, 86, 2217, 86, 2221, 2224, - 86, 2228, 2223, 86, 2218, 2225, 2229, 86, 2230, 2227, + 2175, 86, 86, 86, 2182, 2179, 2181, 86, 2186, 86, + 2187, 86, 2183, 86, 2188, 2184, 86, 2189, 86, 86, + 2190, 86, 86, 2185, 2191, 86, 2197, 2195, 86, 86, + 2193, 2198, 86, 2194, 86, 86, 2192, 2199, 86, 86, + 2202, 2200, 86, 2196, 2203, 86, 2201, 2207, 86, 86, + 86, 2204, 86, 86, 2206, 86, 86, 86, 86, 86, + 86, 86, 2205, 2216, 86, 86, 2211, 2208, 2209, 2210, + 2212, 2213, 2214, 86, 2218, 86, 2215, 86, 2217, 2223, + 2222, 2219, 86, 2221, 86, 86, 2225, 2227, 86, 86, + 2229, 86, 86, 2226, 2220, 86, 2231, 86, 2228, 168, - 2226, 2231, 86, 86, 86, 2232, 86, 86, 2235, 86, - 86, 2233, 86, 2234, 86, 2236, 2240, 86, 2242, 2239, - 86, 2241, 2244, 86, 2246, 86, 86, 86, 86, 2237, - 2243, 2245, 2247, 86, 86, 2249, 86, 86, 86, 2248, - 2238, 86, 2250, 86, 86, 2251, 86, 2252, 86, 2255, - 86, 86, 2254, 2258, 86, 86, 2253, 86, 2264, 86, - 2256, 2257, 2262, 86, 86, 86, 86, 2260, 2259, 2265, - 86, 2267, 86, 86, 2261, 86, 86, 2263, 2266, 2269, - 2272, 86, 2270, 2275, 86, 86, 86, 86, 86, 2273, - 2268, 86, 2271, 2276, 86, 86, 86, 86, 86, 2274, + 2224, 2235, 2232, 2237, 2230, 2238, 2236, 86, 2233, 86, + 86, 86, 86, 2239, 86, 2242, 86, 86, 2243, 86, + 2240, 2234, 2247, 86, 86, 2248, 86, 86, 2246, 2251, + 86, 86, 2244, 86, 2241, 86, 2252, 2257, 2249, 86, + 2253, 2254, 86, 2245, 86, 2250, 2256, 86, 86, 2255, + 2258, 2259, 86, 86, 86, 86, 86, 86, 86, 2262, + 86, 86, 2265, 86, 86, 2271, 86, 86, 2260, 2269, + 2264, 2272, 86, 86, 86, 86, 2266, 2267, 2261, 2263, + 2268, 86, 2276, 86, 86, 2270, 2274, 2273, 86, 2279, + 86, 2282, 86, 2278, 86, 2277, 86, 86, 86, 2275, - 86, 86, 86, 2291, 2287, 2277, 2278, 86, 2283, 2288, - 86, 2279, 86, 2281, 2286, 2280, 2282, 2285, 2284, 2289, - 86, 86, 86, 2292, 86, 2294, 2290, 86, 2295, 2296, - 86, 2297, 86, 86, 86, 2300, 2293, 86, 86, 2298, - 2303, 86, 2304, 86, 86, 86, 2299, 2301, 86, 2305, - 2302, 86, 86, 2306, 2310, 86, 86, 2307, 2311, 86, - 2313, 86, 86, 2309, 86, 2308, 2315, 86, 86, 2317, - 86, 2312, 2318, 86, 2314, 2319, 86, 2316, 86, 2321, - 86, 86, 2320, 2325, 86, 86, 2324, 2327, 86, 86, - 86, 86, 2322, 86, 2330, 86, 2329, 86, 2331, 2323, + 86, 2280, 2283, 86, 86, 86, 86, 86, 2281, 86, + 3267, 86, 86, 2297, 86, 2284, 2285, 2290, 2295, 86, + 2293, 2286, 2288, 2294, 2287, 2289, 2292, 2291, 86, 86, + 2296, 86, 86, 2301, 2298, 2299, 86, 86, 2303, 2304, + 86, 2305, 86, 86, 2300, 86, 86, 86, 2308, 2302, + 2311, 86, 2312, 86, 2309, 86, 86, 2310, 2306, 2307, + 2313, 2314, 86, 86, 86, 2318, 86, 2319, 86, 86, + 2321, 86, 86, 2323, 86, 86, 2317, 86, 2326, 86, + 2325, 86, 2315, 2316, 2327, 86, 86, 86, 2320, 86, + 2322, 86, 2324, 86, 86, 2328, 2329, 3267, 2332, 86, - 2333, 86, 86, 86, 2326, 2337, 86, 2328, 86, 86, - 2335, 86, 2334, 2332, 86, 2341, 2342, 86, 86, 86, - 86, 2336, 86, 2338, 2340, 2344, 2347, 86, 86, 86, - 86, 2339, 86, 2343, 2345, 2349, 86, 2346, 2348, 86, - 2354, 86, 86, 2350, 86, 86, 2356, 86, 2351, 86, - 2352, 2355, 2357, 2360, 86, 86, 86, 86, 86, 2361, - 2362, 2366, 2353, 86, 86, 3252, 86, 2358, 2365, 2359, - 2363, 2364, 86, 86, 2371, 2373, 86, 2368, 2369, 2370, - 86, 86, 86, 2367, 2372, 86, 86, 2374, 86, 2377, - 2375, 2376, 86, 86, 86, 2378, 86, 2379, 2384, 86, + 2330, 2333, 86, 2335, 86, 2337, 86, 86, 2331, 2338, + 2334, 86, 2336, 86, 2339, 2341, 86, 86, 2345, 86, + 86, 86, 86, 86, 2350, 86, 2342, 2349, 86, 2340, + 2344, 86, 2343, 86, 86, 86, 2352, 2348, 2355, 86, + 2346, 86, 86, 86, 2347, 86, 86, 2351, 2353, 2354, + 2357, 86, 2362, 86, 86, 2356, 2358, 86, 86, 2359, + 2364, 86, 2363, 2360, 2365, 86, 2368, 86, 86, 86, + 2369, 86, 2361, 2370, 86, 86, 2374, 86, 86, 2366, + 2372, 2367, 2371, 2376, 86, 2379, 86, 2381, 86, 2377, + 2373, 86, 2378, 86, 86, 86, 2380, 86, 2386, 2382, - 2383, 2385, 2380, 2381, 86, 2382, 86, 86, 86, 2390, - 2386, 86, 2389, 86, 2391, 86, 168, 2388, 86, 2387, - 86, 2393, 2392, 86, 2398, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 2405, 86, 2396, 2400, 2394, 2397, - 2395, 2399, 2401, 2402, 2403, 2404, 86, 2408, 2409, 86, - 86, 2406, 2407, 86, 2410, 2411, 86, 86, 86, 2414, - 2412, 2415, 86, 2413, 2418, 86, 86, 86, 2417, 86, - 86, 2416, 86, 2419, 86, 86, 2423, 2424, 2420, 86, - 86, 86, 2428, 86, 2421, 86, 2426, 2429, 86, 2427, - 86, 2431, 86, 2422, 2425, 2430, 2432, 86, 86, 86, + 2375, 2385, 2383, 86, 86, 86, 86, 86, 86, 3267, + 2392, 2384, 2387, 2388, 2389, 2390, 86, 2393, 86, 86, + 86, 2391, 2394, 86, 86, 2397, 2398, 86, 2395, 2396, + 86, 2399, 86, 168, 86, 2404, 2406, 86, 2401, 2400, + 86, 86, 86, 86, 86, 86, 86, 2402, 3267, 2403, + 2405, 2408, 86, 2409, 86, 2407, 2412, 2413, 86, 2410, + 2411, 2417, 86, 2414, 2416, 3267, 2415, 86, 2418, 2419, + 86, 86, 86, 2422, 2420, 2423, 86, 2421, 86, 86, + 86, 86, 2425, 86, 86, 2424, 86, 2427, 86, 86, + 2431, 2432, 2426, 86, 2429, 86, 2428, 86, 2434, 86, - 86, 2433, 86, 2435, 2436, 86, 86, 2438, 86, 86, - 86, 86, 86, 2437, 2442, 2445, 86, 2444, 2434, 86, - 86, 86, 2446, 2441, 86, 86, 2439, 86, 2440, 2449, - 86, 2443, 86, 86, 2454, 86, 86, 2447, 2453, 2448, - 86, 86, 2451, 2452, 2455, 86, 2450, 2456, 2525, 2457, - 86, 2458, 86, 86, 2461, 2459, 86, 2463, 2460, 86, - 2462, 2465, 86, 86, 86, 2467, 86, 86, 86, 86, - 86, 2464, 86, 2466, 2471, 86, 86, 2475, 86, 86, - 2473, 2474, 2469, 2476, 86, 2468, 2470, 2477, 86, 2478, - 86, 86, 86, 86, 86, 2479, 2481, 2486, 2472, 2484, + 86, 86, 86, 2435, 2436, 2437, 86, 2430, 86, 2433, + 2439, 2441, 86, 2438, 86, 2440, 86, 86, 2443, 86, + 2442, 2444, 86, 86, 2446, 2445, 86, 86, 86, 86, + 2453, 2450, 86, 86, 2452, 86, 86, 2447, 2454, 86, + 2449, 86, 86, 2448, 86, 86, 2458, 86, 2451, 2463, + 86, 2455, 2462, 86, 2456, 86, 2460, 86, 2457, 3267, + 86, 2461, 2465, 2459, 2466, 2464, 86, 2467, 86, 86, + 2470, 2468, 86, 86, 2472, 86, 2471, 2474, 86, 2469, + 86, 2476, 86, 86, 2475, 2473, 86, 86, 86, 86, + 86, 86, 86, 2480, 86, 2482, 2483, 2484, 86, 86, - 86, 86, 86, 86, 86, 86, 2483, 2489, 86, 86, - 2485, 2482, 2480, 86, 86, 2493, 2490, 2494, 86, 2488, - 2487, 86, 86, 86, 2491, 86, 2495, 2492, 86, 86, - 2498, 2499, 2497, 86, 86, 86, 86, 3252, 86, 86, - 2496, 2503, 2500, 2505, 2506, 86, 2502, 2501, 2507, 86, - 2508, 86, 2509, 86, 86, 2504, 86, 2511, 86, 2513, - 86, 2512, 86, 2514, 86, 86, 2510, 86, 2519, 86, - 86, 86, 2515, 2521, 86, 86, 2516, 2522, 86, 86, - 86, 86, 2523, 2518, 86, 2517, 2528, 2524, 86, 2520, - 86, 2526, 2531, 86, 86, 86, 86, 86, 86, 2532, + 2478, 2477, 2486, 2479, 2485, 86, 86, 2487, 86, 86, + 2488, 86, 2493, 86, 2489, 2481, 2490, 86, 2491, 2495, + 86, 2492, 86, 2498, 86, 86, 2494, 86, 86, 86, + 2499, 86, 86, 2502, 2503, 86, 86, 2497, 2496, 86, + 86, 2504, 86, 2509, 86, 2507, 2508, 2500, 86, 2501, + 86, 2506, 86, 86, 86, 2512, 86, 2505, 3267, 2514, + 2515, 86, 2510, 86, 2511, 2516, 86, 2517, 86, 2518, + 86, 86, 86, 2513, 2520, 2519, 2521, 86, 2522, 86, + 2523, 86, 86, 86, 2524, 2528, 86, 86, 2530, 86, + 2531, 86, 86, 2525, 86, 86, 86, 86, 86, 2527, - 2527, 168, 86, 2539, 2529, 86, 86, 86, 2530, 2535, - 86, 86, 2537, 2538, 2540, 2534, 86, 86, 2550, 86, - 2533, 2536, 2541, 86, 2543, 2542, 2546, 86, 86, 86, - 86, 2547, 2548, 2544, 2549, 2551, 86, 86, 2552, 2545, - 86, 2553, 86, 2554, 86, 86, 2555, 86, 86, 2557, - 86, 86, 86, 86, 86, 2556, 2565, 86, 86, 86, - 2558, 2563, 86, 86, 2569, 86, 2560, 2559, 2570, 86, - 86, 2562, 2561, 2564, 2571, 86, 2567, 2566, 86, 2573, - 2568, 2574, 86, 86, 2575, 2576, 86, 2572, 86, 86, - 86, 86, 86, 3252, 86, 2579, 2577, 2585, 86, 2586, + 86, 2534, 2526, 2532, 86, 2537, 2529, 2533, 2535, 2540, + 86, 86, 86, 86, 86, 86, 86, 2536, 2538, 168, + 2541, 86, 2548, 86, 2539, 86, 86, 2544, 86, 86, + 2546, 2547, 2549, 2543, 86, 86, 2559, 86, 2542, 2545, + 2550, 2551, 86, 86, 86, 2555, 2552, 86, 2557, 2556, + 86, 2553, 2558, 2560, 86, 86, 2561, 2554, 86, 2562, + 86, 2563, 2564, 86, 86, 86, 86, 86, 86, 2566, + 86, 86, 86, 86, 2565, 2574, 86, 86, 86, 2567, + 2572, 86, 2578, 86, 2569, 2568, 2579, 86, 2571, 2570, + 2573, 86, 2575, 2580, 2576, 2577, 2583, 86, 86, 86, - 86, 2578, 86, 86, 2580, 86, 86, 86, 2581, 2582, - 2583, 2584, 2588, 2589, 86, 2590, 86, 2591, 86, 86, - 2587, 2592, 2593, 86, 2594, 86, 86, 86, 86, 2599, - 2595, 2598, 2600, 86, 86, 86, 2601, 86, 2596, 2597, - 2602, 86, 86, 86, 2604, 86, 86, 2603, 86, 86, - 2608, 3252, 86, 86, 2606, 2612, 2605, 2613, 86, 86, - 2616, 86, 86, 2607, 86, 86, 2609, 2610, 2614, 2611, - 86, 86, 2620, 86, 2617, 2619, 86, 2615, 2621, 2618, - 86, 86, 2623, 2625, 86, 86, 86, 2629, 86, 86, - 2628, 2622, 86, 2626, 2627, 2631, 86, 2632, 86, 86, + 2582, 2585, 86, 86, 86, 2581, 86, 2584, 86, 86, + 86, 2588, 86, 2594, 86, 2595, 86, 2586, 86, 86, + 86, 2587, 86, 2589, 2590, 86, 2592, 2591, 2598, 2599, + 86, 2593, 2600, 86, 2601, 2603, 86, 2597, 2596, 86, + 86, 86, 86, 2602, 2605, 86, 86, 86, 2609, 2611, + 2608, 2610, 86, 2612, 86, 2604, 86, 86, 86, 86, + 86, 2606, 2607, 86, 86, 86, 2614, 86, 2618, 86, + 86, 2616, 2622, 2623, 86, 2613, 86, 2615, 2626, 86, + 2617, 86, 86, 86, 2619, 2621, 2620, 2627, 2625, 86, + 86, 2624, 86, 2629, 2630, 86, 2628, 2632, 86, 2635, - 2624, 86, 2636, 86, 86, 2637, 86, 2633, 2630, 2639, - 86, 86, 86, 2635, 86, 2634, 86, 86, 2644, 86, - 2646, 86, 86, 2642, 2640, 2641, 2643, 2647, 2638, 86, - 86, 2645, 86, 86, 2648, 86, 86, 2650, 86, 3252, - 86, 2651, 86, 86, 2649, 2653, 2654, 2656, 2657, 86, - 2659, 86, 2660, 86, 2652, 2655, 2661, 168, 86, 86, - 86, 86, 2666, 3252, 2658, 2662, 2663, 86, 86, 86, - 2668, 86, 2667, 3252, 86, 2671, 86, 2664, 2665, 2670, - 2672, 86, 86, 2674, 86, 86, 2669, 2676, 2675, 86, - 86, 86, 2677, 86, 2678, 2673, 2679, 2681, 86, 86, + 86, 86, 86, 2631, 86, 2639, 86, 86, 2638, 2641, + 86, 2637, 2633, 2636, 86, 86, 86, 86, 2634, 2642, + 2646, 86, 86, 2647, 2643, 86, 2640, 2649, 86, 2645, + 86, 86, 2644, 86, 2654, 86, 86, 86, 2656, 86, + 86, 86, 2652, 2650, 2651, 2653, 2657, 2648, 86, 86, + 86, 86, 2655, 2658, 2659, 2660, 86, 2661, 86, 86, + 86, 3267, 86, 86, 86, 2663, 2664, 2666, 2667, 2673, + 2662, 2669, 86, 86, 2665, 2668, 2670, 86, 2671, 168, + 2672, 86, 86, 2676, 86, 86, 86, 2678, 86, 86, + 2677, 86, 2681, 86, 2682, 86, 2680, 2683, 86, 2674, - 86, 86, 2682, 86, 2680, 2683, 86, 86, 2684, 2688, - 86, 2689, 86, 86, 2686, 86, 2685, 86, 2690, 86, - 86, 86, 2691, 86, 2694, 2693, 86, 86, 2687, 86, - 2698, 86, 2696, 86, 2697, 2692, 2699, 86, 2695, 2704, - 2700, 86, 2701, 86, 2702, 86, 2703, 2705, 86, 86, - 86, 86, 2709, 86, 86, 86, 86, 2713, 86, 2711, - 86, 86, 86, 2718, 86, 86, 2717, 2706, 3252, 2707, - 2708, 2712, 2720, 2710, 2714, 2715, 2721, 2722, 86, 2723, - 86, 2716, 86, 86, 86, 86, 86, 86, 86, 86, - 2719, 2725, 2724, 2728, 2726, 86, 86, 2731, 86, 86, + 2675, 2684, 86, 2679, 86, 2686, 3267, 2685, 86, 86, + 2687, 86, 2690, 2688, 2689, 2691, 86, 86, 86, 86, + 2692, 86, 2693, 86, 86, 86, 2698, 2694, 86, 2699, + 2700, 2696, 86, 86, 2695, 86, 86, 86, 86, 86, + 2701, 2703, 2704, 86, 86, 2697, 86, 86, 2706, 2702, + 2705, 2707, 86, 86, 2712, 2708, 2710, 2709, 86, 86, + 2715, 2711, 86, 86, 86, 86, 86, 2713, 2716, 86, + 2720, 86, 86, 86, 2722, 86, 86, 2714, 2724, 86, + 86, 86, 2717, 86, 2718, 2728, 2729, 86, 2719, 3267, + 2723, 2721, 2725, 2731, 2732, 2726, 2727, 2733, 86, 86, - 2727, 3252, 2729, 2733, 86, 2734, 86, 2735, 86, 86, - 2730, 86, 86, 2736, 2738, 86, 2732, 2737, 86, 2739, - 86, 2742, 86, 2740, 86, 2745, 2743, 86, 2746, 86, - 86, 2744, 2741, 2747, 86, 86, 86, 86, 2748, 86, - 2750, 2752, 86, 2749, 86, 2753, 2754, 86, 2756, 86, - 86, 86, 2755, 2760, 2761, 86, 2751, 2758, 86, 86, - 86, 2763, 2762, 2757, 86, 2759, 2764, 86, 86, 86, - 2769, 86, 86, 86, 86, 2768, 86, 2771, 2772, 86, - 86, 86, 2774, 2765, 2766, 2773, 86, 86, 2767, 2775, - 2777, 86, 2778, 86, 86, 86, 2770, 2776, 2779, 2780, + 86, 2734, 86, 86, 86, 86, 2735, 86, 2730, 2736, + 86, 86, 86, 86, 2737, 2739, 86, 2742, 2744, 86, + 2738, 2745, 86, 86, 2740, 2746, 86, 2741, 86, 86, + 86, 2743, 2747, 86, 2748, 2749, 86, 86, 2751, 2753, + 86, 2756, 2752, 2750, 2754, 86, 2757, 86, 2758, 86, + 86, 86, 86, 2759, 86, 2763, 86, 2755, 86, 2764, + 2765, 86, 86, 86, 2760, 2767, 86, 86, 86, 2771, + 2761, 2772, 86, 86, 2762, 86, 2768, 2766, 86, 86, + 86, 2774, 2770, 2773, 86, 2769, 2775, 86, 2780, 86, + 2779, 86, 2783, 86, 86, 2782, 2776, 86, 2777, 86, - 2781, 86, 2785, 86, 86, 86, 86, 86, 2787, 86, - 86, 2782, 86, 2792, 2783, 2784, 2788, 2791, 2786, 2793, - 2789, 2796, 86, 86, 2794, 86, 2790, 86, 2797, 86, - 2798, 2795, 86, 2799, 86, 2800, 86, 86, 86, 2801, - 86, 2802, 86, 86, 86, 86, 86, 2806, 2810, 86, - 86, 86, 2807, 2811, 2813, 86, 86, 2803, 2814, 2805, - 2815, 86, 2812, 86, 2804, 2808, 2809, 86, 2816, 2817, - 86, 86, 86, 86, 2821, 86, 2818, 2822, 86, 2823, - 2819, 2820, 2824, 86, 2826, 86, 86, 86, 86, 2827, - 86, 2830, 86, 2831, 2829, 2832, 86, 86, 2825, 2828, + 2778, 86, 2784, 86, 2786, 86, 86, 2785, 2788, 86, + 2789, 86, 86, 86, 2781, 86, 2792, 2796, 86, 86, + 86, 2804, 86, 2790, 2791, 86, 2805, 86, 2787, 2795, + 2793, 86, 86, 2794, 2797, 2798, 2800, 86, 2801, 2802, + 2803, 2807, 86, 2799, 2806, 86, 2808, 86, 2809, 86, + 2810, 86, 2811, 86, 86, 86, 86, 86, 86, 2813, + 86, 86, 2816, 86, 86, 2818, 2822, 86, 86, 2812, + 2819, 2823, 86, 2825, 86, 2814, 86, 2817, 86, 2827, + 86, 2828, 2815, 2820, 2821, 2826, 2829, 86, 86, 86, + 2824, 86, 86, 2834, 86, 86, 86, 2830, 2831, 2835, - 2833, 86, 86, 86, 86, 86, 2834, 86, 86, 2842, - 86, 86, 2837, 86, 86, 86, 2838, 2840, 2845, 2846, - 2836, 86, 2835, 2843, 86, 2847, 86, 2841, 86, 86, - 2839, 2844, 86, 2849, 2880, 2848, 86, 2850, 2852, 86, - 2851, 2853, 86, 2854, 86, 86, 86, 86, 86, 2856, - 2859, 2857, 2858, 2860, 2855, 86, 86, 2862, 86, 86, - 2861, 86, 86, 86, 2863, 86, 2868, 2866, 2870, 86, - 86, 2864, 86, 86, 2871, 86, 86, 2874, 2872, 86, - 2873, 2867, 2865, 86, 86, 86, 2879, 86, 86, 86, - 2869, 86, 86, 2882, 86, 86, 86, 86, 2875, 2876, + 2832, 86, 2838, 86, 86, 2836, 86, 2839, 86, 86, + 2833, 2843, 2841, 2842, 2844, 86, 2837, 2840, 2845, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 3267, 2854, 2849, 86, 2846, 2852, 2850, 86, 2857, 86, + 2848, 2855, 86, 2859, 2858, 86, 2847, 2853, 86, 2856, + 2851, 86, 2862, 2861, 2860, 2863, 2864, 86, 2865, 86, + 2866, 86, 86, 86, 86, 86, 2871, 86, 86, 2870, + 86, 2867, 86, 2872, 86, 2873, 2874, 86, 86, 86, + 86, 86, 86, 2868, 2869, 2875, 2876, 2878, 2880, 2882, + 86, 86, 86, 86, 86, 2883, 86, 2879, 2884, 2877, - 2877, 2881, 2886, 2878, 2883, 86, 2888, 2884, 86, 86, - 2887, 2885, 2891, 86, 2889, 2893, 86, 2894, 86, 86, - 2896, 86, 86, 86, 86, 86, 2901, 86, 2892, 2900, - 86, 86, 86, 86, 2890, 86, 2905, 86, 2897, 2898, - 2895, 2899, 2908, 86, 86, 86, 2910, 2906, 86, 86, - 2902, 2904, 86, 2911, 2903, 86, 2907, 2913, 86, 2914, - 86, 2916, 86, 86, 2909, 86, 2918, 2912, 2921, 2915, - 86, 86, 2919, 86, 86, 2925, 86, 86, 86, 2927, - 2926, 2917, 86, 2923, 86, 2920, 2930, 2931, 86, 2922, - 2933, 86, 86, 2924, 2928, 86, 86, 86, 2932, 2936, + 2887, 2885, 86, 2886, 86, 2881, 86, 2888, 2891, 86, + 86, 86, 86, 86, 86, 86, 2894, 86, 86, 2889, + 86, 2900, 2895, 2892, 2893, 2898, 2890, 86, 86, 86, + 2896, 86, 2899, 86, 2897, 86, 2902, 2901, 2904, 86, + 2906, 86, 2907, 86, 2909, 86, 86, 86, 86, 86, + 2905, 2910, 86, 2913, 2908, 2903, 2914, 86, 86, 86, + 2918, 86, 2911, 2912, 86, 2921, 86, 86, 2923, 2915, + 86, 86, 2926, 86, 86, 2916, 2924, 2917, 2919, 86, + 2920, 2927, 86, 2929, 86, 86, 86, 2922, 86, 86, + 86, 2934, 2925, 86, 86, 2932, 2931, 86, 86, 2928, - 86, 86, 2935, 86, 2929, 2939, 2937, 86, 86, 2934, - 86, 86, 2942, 86, 86, 86, 86, 2947, 86, 86, - 2943, 86, 2938, 2949, 2940, 2941, 2951, 86, 2944, 2946, - 2950, 2952, 86, 86, 2948, 86, 86, 86, 2953, 2945, - 86, 2955, 2956, 86, 2957, 86, 2958, 86, 2960, 2954, - 86, 2962, 86, 86, 86, 2961, 86, 86, 86, 2963, - 86, 2967, 86, 2959, 2968, 86, 86, 86, 2972, 86, - 2973, 86, 2969, 86, 2974, 2964, 2971, 3252, 2965, 2966, - 86, 86, 2970, 86, 2978, 86, 2975, 2982, 2977, 2979, - 86, 86, 2976, 86, 86, 2981, 2980, 86, 2985, 86, + 86, 2936, 3127, 2930, 2938, 86, 2941, 86, 2933, 2935, + 2939, 86, 2940, 2937, 2943, 2944, 86, 2946, 2942, 86, + 86, 86, 2945, 86, 86, 2949, 86, 86, 86, 2948, + 2952, 86, 2950, 2955, 86, 86, 86, 86, 86, 2947, + 86, 86, 2960, 86, 2964, 86, 86, 2951, 2953, 2954, + 2956, 86, 86, 2957, 2959, 2962, 2965, 86, 86, 2961, + 2967, 2963, 2958, 2966, 86, 2969, 86, 2970, 86, 2968, + 2971, 86, 86, 86, 2974, 86, 86, 2976, 86, 86, + 86, 2975, 86, 86, 86, 2972, 86, 2981, 2982, 86, + 86, 86, 2986, 86, 2977, 2987, 86, 2988, 2983, 2973, - 86, 86, 86, 86, 86, 2984, 2983, 2986, 2989, 86, - 86, 86, 86, 86, 86, 2991, 2990, 86, 2992, 86, - 2987, 2988, 86, 86, 86, 86, 86, 86, 3084, 3001, - 2993, 3002, 2994, 2995, 3003, 2996, 2998, 2999, 2997, 3004, - 86, 86, 86, 86, 3000, 86, 3005, 3006, 3007, 3009, - 86, 3010, 86, 3008, 86, 86, 3014, 86, 3011, 86, - 3012, 3013, 3015, 86, 3016, 3017, 86, 86, 3018, 3019, - 3022, 86, 3020, 3021, 86, 86, 3023, 86, 86, 86, - 86, 86, 3029, 86, 3030, 86, 3028, 86, 86, 3032, - 86, 86, 3024, 3025, 3031, 86, 3252, 3033, 3026, 86, + 2985, 2978, 86, 86, 2979, 2980, 86, 86, 2992, 86, + 2984, 86, 2991, 2993, 86, 86, 2994, 2996, 86, 86, + 2999, 86, 2989, 86, 86, 2990, 86, 2998, 86, 2995, + 2997, 3000, 86, 86, 86, 86, 86, 3003, 86, 86, + 3005, 86, 86, 3006, 3001, 3004, 86, 86, 3002, 86, + 86, 86, 86, 86, 3015, 3007, 3016, 3011, 3008, 3009, + 3010, 3018, 86, 3012, 3013, 3088, 86, 86, 3014, 86, + 3017, 3019, 3020, 86, 3021, 3022, 3023, 86, 3024, 86, + 86, 3026, 86, 86, 3025, 3029, 86, 86, 3027, 3030, + 86, 3037, 3028, 3031, 3032, 86, 86, 3033, 3034, 86, - 3027, 86, 3037, 86, 3036, 3034, 3038, 86, 3041, 3035, - 3039, 86, 86, 3044, 3040, 86, 3046, 86, 3045, 86, - 86, 3042, 86, 86, 3043, 86, 86, 86, 3050, 3054, - 3051, 86, 3048, 3053, 86, 86, 3062, 3055, 3056, 86, - 3047, 3049, 3057, 86, 86, 3052, 3058, 86, 3252, 3059, - 3060, 86, 3061, 86, 3063, 86, 3064, 86, 3065, 86, - 3066, 86, 3067, 86, 3068, 86, 3069, 86, 86, 3071, - 86, 86, 86, 86, 86, 86, 86, 3070, 3076, 86, - 3072, 86, 86, 86, 3073, 86, 3080, 86, 3079, 3077, - 3082, 86, 86, 3074, 3075, 3078, 3081, 86, 3086, 86, + 86, 3035, 3036, 86, 86, 3038, 86, 86, 86, 86, + 3044, 86, 86, 3039, 3043, 86, 3047, 3040, 3061, 3041, + 86, 86, 3046, 86, 86, 86, 86, 3042, 86, 3048, + 86, 3052, 86, 3045, 3051, 3077, 3049, 3053, 86, 3054, + 86, 3050, 86, 3055, 86, 3059, 86, 3056, 86, 86, + 3060, 86, 86, 3057, 3065, 86, 3058, 3062, 3068, 86, + 3066, 3063, 3069, 86, 86, 3071, 86, 3121, 86, 3064, + 3070, 3067, 3072, 86, 3073, 86, 86, 3075, 86, 3076, + 86, 3074, 3078, 86, 3079, 86, 3080, 86, 3081, 86, + 3082, 86, 3083, 86, 3084, 86, 86, 3086, 86, 86, - 3089, 3083, 3088, 86, 86, 86, 86, 86, 86, 3091, - 3087, 86, 86, 3085, 3095, 86, 86, 3090, 86, 86, - 86, 3096, 3099, 3252, 3092, 3093, 86, 3094, 3101, 86, - 3097, 3100, 3102, 86, 3103, 86, 86, 86, 86, 86, - 86, 3106, 3098, 3104, 86, 3105, 3107, 86, 86, 3111, - 3112, 3110, 3108, 86, 86, 3114, 86, 86, 86, 86, - 3115, 86, 3109, 86, 86, 86, 86, 86, 3113, 86, - 3121, 3124, 86, 3118, 3126, 3116, 3117, 3122, 3120, 86, - 3129, 86, 86, 86, 3119, 3123, 3127, 3125, 3131, 86, - 86, 3130, 86, 3132, 3133, 86, 3134, 86, 86, 3128, + 86, 86, 86, 3091, 86, 3085, 86, 86, 3087, 86, + 86, 86, 3095, 3097, 86, 86, 3092, 86, 3099, 3093, + 3089, 3090, 3094, 86, 3096, 3098, 86, 3101, 86, 3104, + 86, 3103, 86, 86, 86, 86, 86, 3106, 86, 86, + 86, 3102, 86, 3100, 3105, 3110, 86, 3111, 86, 3114, + 3109, 86, 3107, 86, 3108, 3112, 3116, 86, 3117, 86, + 86, 3115, 3118, 86, 86, 86, 86, 86, 3113, 3120, + 86, 86, 3126, 3122, 3119, 86, 3129, 3125, 3123, 86, + 86, 86, 86, 86, 3130, 3128, 86, 86, 3124, 86, + 86, 86, 3136, 86, 3139, 86, 3133, 86, 3131, 3132, - 86, 3137, 3135, 86, 86, 3138, 86, 3142, 3139, 86, - 3136, 86, 86, 86, 86, 86, 3145, 3147, 86, 3148, - 86, 3141, 86, 3143, 3144, 3151, 86, 86, 86, 3140, - 3149, 3154, 86, 86, 3146, 86, 3155, 86, 3158, 86, - 86, 3150, 3152, 3159, 86, 3156, 3153, 86, 86, 86, - 86, 86, 3157, 3160, 86, 3163, 3164, 86, 86, 3162, - 3161, 3165, 86, 86, 86, 86, 86, 3169, 3168, 3166, - 3171, 3167, 86, 86, 86, 86, 86, 86, 3170, 3173, - 3176, 3177, 86, 3172, 3184, 3174, 3178, 86, 3182, 86, - 86, 86, 3175, 86, 3179, 3180, 3183, 86, 3185, 86, + 3141, 3135, 3137, 86, 3144, 86, 3145, 3134, 3138, 3146, + 86, 3140, 86, 3143, 86, 3147, 86, 3142, 3148, 86, + 3149, 86, 86, 86, 86, 3152, 86, 86, 3153, 3154, + 86, 3150, 3157, 86, 86, 86, 3151, 86, 86, 3160, + 3162, 86, 3156, 86, 3158, 3159, 3163, 86, 3166, 86, + 86, 3155, 3164, 86, 86, 3161, 3169, 86, 86, 3170, + 86, 3173, 3165, 3174, 86, 3167, 86, 86, 3171, 86, + 86, 3168, 86, 3172, 3179, 86, 86, 3178, 3175, 3176, + 3180, 86, 86, 86, 86, 86, 86, 3184, 86, 3177, + 86, 3186, 86, 86, 86, 86, 86, 3181, 3183, 3191, - 86, 3181, 86, 3190, 3186, 3187, 86, 3188, 86, 86, - 3191, 86, 3189, 3192, 3193, 86, 86, 86, 86, 86, - 3194, 3199, 86, 86, 3196, 3195, 3252, 86, 86, 3202, - 3203, 86, 86, 86, 86, 86, 3201, 3197, 3198, 3206, - 86, 3200, 3204, 86, 3210, 3205, 86, 86, 86, 86, - 3214, 3207, 3211, 3209, 3208, 3252, 86, 86, 3216, 3212, - 86, 3217, 86, 86, 86, 3221, 86, 3218, 86, 86, - 3219, 3223, 86, 3222, 3213, 3215, 3224, 86, 86, 3225, - 86, 86, 86, 3220, 86, 3226, 3228, 3230, 86, 86, - 86, 86, 86, 86, 3232, 3233, 86, 3236, 86, 3227, + 3192, 86, 3182, 3188, 86, 3185, 3189, 3187, 3193, 86, + 86, 3190, 3197, 86, 3199, 3198, 3194, 86, 3200, 3195, + 86, 86, 86, 3196, 86, 86, 3201, 3202, 3205, 3203, + 3206, 86, 86, 86, 86, 3208, 86, 3207, 86, 86, + 86, 86, 3209, 3214, 3204, 86, 3211, 86, 86, 86, + 86, 3217, 3210, 3218, 86, 86, 86, 86, 86, 3212, + 3213, 3216, 3221, 86, 3215, 3219, 3222, 86, 3220, 86, + 3225, 3224, 3226, 86, 3223, 86, 3227, 86, 3229, 86, + 3231, 86, 3232, 86, 86, 86, 3236, 86, 3233, 3267, + 86, 3234, 3239, 86, 3230, 3237, 86, 86, 3238, 3228, - 3252, 3229, 3252, 3231, 3237, 86, 86, 3240, 3241, 86, - 3234, 3235, 3238, 86, 3243, 86, 86, 3239, 3244, 86, - 3242, 86, 86, 3245, 86, 86, 3246, 3247, 3250, 86, - 3251, 86, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3248, 3249, 47, 47, 47, 47, 47, - 47, 47, 52, 52, 52, 52, 52, 52, 52, 57, - 57, 57, 57, 57, 57, 57, 63, 63, 63, 63, - 63, 63, 63, 68, 68, 68, 68, 68, 68, 68, - 74, 74, 74, 74, 74, 74, 74, 80, 80, 80, - 80, 80, 80, 80, 89, 89, 3252, 89, 89, 89, + 86, 86, 86, 86, 3235, 86, 86, 3240, 3241, 86, + 3243, 3245, 86, 86, 3247, 86, 3242, 86, 3248, 86, + 3251, 3244, 3246, 3252, 86, 3249, 86, 86, 3255, 3256, + 86, 86, 3258, 86, 3250, 86, 3253, 86, 3257, 3259, + 86, 86, 3260, 86, 86, 3254, 3261, 3267, 3262, 3265, + 86, 3266, 86, 3267, 3267, 3267, 3263, 3267, 3267, 3267, + 3267, 3267, 3267, 3264, 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, - 89, 158, 158, 3252, 3252, 3252, 158, 158, 160, 160, - 3252, 3252, 160, 3252, 160, 162, 3252, 3252, 3252, 3252, - 3252, 162, 165, 165, 3252, 3252, 3252, 165, 165, 167, - 3252, 3252, 3252, 3252, 3252, 167, 169, 169, 3252, 169, - 169, 169, 169, 172, 3252, 3252, 3252, 3252, 3252, 172, - 175, 175, 3252, 3252, 3252, 175, 175, 90, 90, 3252, - 90, 90, 90, 90, 17, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3267, 89, 89, 89, 89, + 158, 158, 3267, 3267, 3267, 158, 158, 160, 160, 3267, + 3267, 160, 3267, 160, 162, 3267, 3267, 3267, 3267, 3267, + 162, 165, 165, 3267, 3267, 3267, 165, 165, 167, 3267, + 3267, 3267, 3267, 3267, 167, 169, 169, 3267, 169, 169, + 169, 169, 172, 3267, 3267, 3267, 3267, 3267, 172, 175, + 175, 3267, 3267, 3267, 175, 175, 90, 90, 3267, 90, + 90, 90, 90, 17, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, - 3252, 3252, 3252, 3252, 3252 + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267 } ; -static const flex_int16_t yy_chk[6406] = +static const flex_int16_t yy_chk[6425] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2210,18 +2217,18 @@ static const flex_int16_t yy_chk[6406] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3260, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3275, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, - 16, 23, 23, 25, 27, 27, 25, 25, 2661, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2671, 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, - 28, 92, 31, 32, 1075, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1076, 32, 36, 36, 37, 37, 28, 45, 45, 37, 175, 36, 45, 39, 41, 41, 45, 36, 39, 41, 94, 36, 39, 43, 43, 37, @@ -2389,524 +2396,526 @@ static const flex_int16_t yy_chk[6406] = 753, 749, 750, 756, 753, 755, 749, 754, 756, 755, 757, 758, 749, 749, 759, 760, 761, 752, 760, 764, - 762, 761, 761, 763, 763, 772, 758, 762, 766, 757, + 762, 761, 761, 763, 763, 755, 758, 762, 766, 757, 765, 765, 767, 766, 764, 767, 768, 769, 769, 759, 770, 768, 770, 771, 772, 773, 774, 778, 775, 773, 776, 777, 777, 781, 779, 771, 780, 780, 776, 783, - 782, 794, 778, 784, 794, 785, 774, 775, 779, 784, - 785, 781, 782, 786, 786, 789, 80, 787, 790, 791, - 789, 783, 787, 787, 790, 791, 792, 793, 795, 796, - 800, 792, 799, 793, 795, 797, 797, 796, 798, 798, - 799, 801, 802, 803, 804, 804, 801, 805, 800, 802, - 806, 807, 807, 808, 809, 811, 805, 812, 806, 808, + 782, 80, 778, 772, 784, 803, 774, 775, 779, 785, + 784, 781, 782, 787, 785, 786, 786, 789, 787, 787, + 790, 783, 789, 791, 803, 792, 790, 793, 794, 791, + 792, 794, 795, 793, 796, 797, 797, 799, 795, 798, + 798, 800, 796, 801, 802, 799, 804, 804, 801, 805, + 808, 802, 806, 807, 807, 809, 808, 811, 805, 800, - 813, 815, 803, 814, 811, 818, 812, 819, 814, 816, - 815, 817, 816, 809, 820, 821, 817, 823, 823, 818, - 822, 824, 825, 820, 813, 822, 822, 827, 821, 826, - 835, 828, 819, 830, 828, 830, 824, 832, 826, 831, - 831, 825, 828, 833, 834, 837, 836, 839, 833, 838, - 835, 827, 840, 841, 842, 843, 839, 841, 832, 846, - 847, 845, 844, 848, 850, 834, 836, 837, 844, 838, - 845, 846, 842, 853, 843, 840, 849, 848, 850, 847, - 851, 854, 849, 852, 852, 851, 855, 856, 857, 858, - 854, 859, 860, 853, 861, 856, 862, 864, 865, 863, + 806, 812, 813, 814, 815, 818, 811, 819, 814, 816, + 812, 817, 816, 815, 809, 820, 817, 821, 824, 818, + 823, 823, 822, 825, 820, 826, 813, 822, 822, 827, + 821, 832, 819, 824, 826, 828, 834, 830, 828, 830, + 831, 831, 825, 833, 835, 836, 828, 837, 833, 839, + 838, 840, 832, 827, 842, 841, 843, 834, 839, 841, + 844, 846, 845, 847, 835, 836, 844, 848, 853, 837, + 838, 845, 842, 846, 840, 843, 850, 849, 854, 851, + 855, 848, 847, 849, 851, 852, 852, 854, 853, 856, + 850, 857, 858, 859, 863, 860, 861, 856, 862, 864, - 861, 866, 862, 864, 869, 870, 855, 866, 857, 867, - 859, 858, 860, 863, 871, 867, 868, 870, 865, 871, - 868, 872, 874, 869, 877, 870, 873, 873, 874, 875, - 876, 879, 875, 878, 880, 880, 881, 877, 882, 878, - 883, 884, 872, 882, 887, 883, 883, 888, 876, 885, - 889, 879, 890, 885, 881, 889, 884, 886, 886, 892, - 893, 896, 895, 897, 899, 899, 887, 888, 900, 902, - 902, 890, 900, 903, 893, 895, 901, 905, 904, 906, - 921, 896, 904, 892, 897, 898, 921, 75, 898, 908, - 898, 901, 905, 906, 898, 907, 898, 915, 903, 909, + 855, 865, 861, 866, 862, 864, 868, 867, 863, 866, + 868, 857, 859, 867, 858, 860, 869, 870, 871, 872, + 874, 865, 879, 871, 873, 873, 874, 875, 876, 870, + 875, 877, 878, 880, 880, 869, 881, 870, 878, 887, + 872, 884, 879, 882, 877, 883, 876, 888, 882, 885, + 883, 883, 890, 885, 881, 889, 884, 886, 886, 892, + 889, 887, 893, 897, 895, 896, 900, 888, 899, 899, + 900, 890, 901, 902, 902, 903, 893, 895, 904, 905, + 925, 925, 904, 892, 897, 896, 898, 901, 907, 898, + 906, 898, 908, 907, 905, 898, 910, 898, 911, 915, - 907, 898, 910, 908, 909, 909, 898, 911, 912, 915, - 913, 910, 912, 914, 916, 917, 918, 919, 914, 916, - 923, 911, 922, 920, 912, 913, 923, 922, 914, 917, - 924, 919, 920, 925, 925, 926, 924, 918, 927, 928, - 926, 929, 932, 933, 927, 930, 935, 938, 933, 936, - 936, 937, 934, 939, 932, 938, 937, 940, 935, 942, - 929, 928, 941, 930, 931, 931, 934, 939, 943, 945, - 931, 950, 931, 946, 943, 942, 940, 944, 931, 947, - 74, 941, 944, 931, 931, 948, 948, 945, 949, 946, - 931, 950, 949, 952, 954, 953, 955, 947, 953, 952, + 903, 913, 898, 909, 906, 910, 908, 898, 909, 909, + 912, 915, 911, 914, 912, 916, 913, 917, 914, 918, + 916, 919, 922, 920, 921, 928, 912, 922, 914, 926, + 921, 917, 920, 923, 926, 919, 924, 927, 929, 923, + 918, 930, 924, 927, 932, 933, 935, 928, 934, 937, + 933, 936, 936, 939, 937, 938, 932, 929, 935, 930, + 931, 931, 934, 938, 940, 941, 931, 939, 931, 942, + 943, 946, 944, 948, 931, 945, 943, 944, 947, 931, + 931, 949, 949, 940, 941, 942, 931, 945, 950, 946, + 951, 948, 950, 953, 947, 954, 955, 957, 954, 953, - 956, 958, 957, 960, 963, 961, 956, 957, 962, 955, - 963, 965, 960, 954, 961, 967, 964, 966, 968, 969, - 958, 970, 966, 973, 962, 964, 974, 971, 972, 973, - 965, 977, 968, 970, 975, 967, 971, 972, 979, 969, - 975, 980, 982, 974, 981, 984, 983, 977, 985, 986, - 989, 995, 979, 985, 986, 989, 982, 990, 991, 991, - 984, 980, 992, 981, 983, 993, 990, 995, 992, 996, - 1000, 1001, 998, 998, 996, 996, 998, 999, 993, 1002, - 999, 1003, 1005, 1004, 1000, 1007, 1006, 1008, 1009, 1010, - 1011, 1001, 1006, 1008, 1010, 1002, 1004, 1005, 1013, 1003, + 956, 958, 959, 957, 963, 961, 958, 962, 966, 965, + 951, 964, 968, 956, 961, 955, 962, 964, 965, 967, + 963, 959, 969, 970, 967, 971, 972, 966, 974, 973, + 975, 980, 968, 976, 974, 972, 969, 971, 973, 976, + 978, 981, 985, 970, 982, 980, 983, 975, 984, 986, + 987, 992, 992, 990, 986, 987, 978, 985, 990, 991, + 983, 981, 994, 982, 993, 996, 984, 997, 991, 1001, + 993, 1000, 997, 997, 1000, 994, 999, 999, 1002, 1003, + 999, 996, 1004, 1001, 1005, 1007, 1006, 1008, 1009, 1010, + 1014, 1007, 1012, 1014, 1009, 1003, 1015, 1005, 1002, 1018, - 1014, 1013, 1015, 1009, 1011, 1007, 1016, 1015, 1017, 1018, - 1019, 1016, 1022, 1020, 1018, 1019, 1023, 1024, 1022, 1028, - 1025, 1014, 1027, 1024, 1017, 1020, 1025, 1026, 1026, 1031, - 1029, 1027, 1023, 1029, 1030, 1030, 1032, 1028, 1033, 1034, - 1035, 1038, 1034, 1036, 1037, 1043, 1038, 1031, 1041, 1036, - 1037, 1039, 1040, 1035, 1041, 1032, 1039, 1040, 1033, 1044, - 1045, 1048, 1046, 1043, 1047, 1047, 1045, 1046, 1049, 1050, - 1048, 1051, 1052, 1053, 1054, 1052, 1053, 1049, 1055, 1044, - 1056, 1057, 1058, 1059, 1060, 1054, 1061, 1050, 1058, 1059, - 1051, 1061, 1056, 1062, 1062, 1063, 1055, 1064, 1065, 1060, + 1004, 1006, 75, 1011, 1010, 1016, 1012, 1008, 1011, 1017, + 1016, 1019, 1021, 1020, 1017, 1018, 1019, 1015, 1020, 1023, + 1024, 1025, 1026, 1028, 1021, 1023, 1029, 1025, 1026, 1027, + 1027, 1030, 1028, 1032, 1030, 1033, 1024, 1031, 1031, 1034, + 1035, 1037, 1036, 1035, 1029, 1039, 1038, 1037, 1040, 1044, + 1039, 1032, 1038, 1040, 1033, 1036, 1041, 1042, 1045, 1034, + 1046, 1041, 1051, 1042, 1047, 1049, 1046, 1044, 1050, 1047, + 1048, 1048, 1052, 1053, 1049, 1055, 1053, 1050, 1045, 1054, + 1051, 1056, 1054, 1057, 1058, 1061, 1055, 1059, 1060, 1063, + 1063, 1052, 1062, 1059, 1060, 1057, 1064, 1062, 1065, 1056, - 1057, 1066, 1067, 1068, 1069, 1066, 1070, 1072, 1073, 1073, - 1065, 1064, 1068, 1074, 1063, 1076, 1078, 1077, 1080, 1079, - 1067, 1081, 1081, 1069, 1079, 1082, 1072, 1080, 1078, 1076, - 1083, 1070, 1077, 1074, 1084, 1085, 1083, 1086, 1088, 1087, - 1084, 1087, 1086, 1088, 1089, 1082, 1090, 1091, 1092, 1093, - 1094, 1085, 1091, 1096, 1095, 1098, 1098, 1094, 1089, 1099, - 1090, 1100, 1101, 1092, 1102, 1103, 68, 1106, 1093, 1095, - 1102, 1106, 1096, 1099, 1114, 1104, 1111, 1101, 1108, 1100, - 1104, 1107, 1107, 1108, 1113, 1103, 1109, 1109, 1110, 1104, - 1111, 1104, 1114, 1112, 1104, 1110, 1112, 1115, 1117, 1116, + 1061, 1066, 1067, 1058, 1068, 1069, 1067, 1070, 1071, 1073, + 1074, 1074, 1065, 1066, 1069, 1064, 1075, 1077, 1079, 1078, + 1080, 1083, 1068, 1081, 1086, 1080, 1070, 74, 1073, 1084, + 1079, 1077, 1081, 1071, 1078, 1084, 1075, 1082, 1082, 1085, + 1086, 1083, 1087, 1089, 1088, 1085, 1088, 1087, 1089, 1090, + 1091, 1092, 1093, 1094, 1095, 1096, 1092, 1097, 1099, 1099, + 1100, 1095, 1101, 1090, 1091, 1103, 1102, 1093, 1104, 68, + 1096, 1103, 1094, 1105, 1100, 1107, 1097, 1111, 1105, 1107, + 1101, 1102, 1108, 1108, 1111, 1109, 1112, 1105, 1104, 1105, + 1109, 1114, 1105, 1110, 1110, 1113, 1115, 1116, 1113, 1117, - 1118, 1120, 1119, 1113, 1116, 1121, 1115, 1119, 1122, 1124, - 1124, 1127, 1118, 1125, 1126, 1120, 1121, 1117, 1125, 1126, - 1128, 1130, 1129, 1131, 1132, 1128, 1129, 1122, 1133, 1134, - 1130, 1127, 1137, 1135, 1138, 1136, 1139, 1140, 1131, 1132, - 1141, 1134, 1136, 1142, 1137, 1143, 1141, 1133, 1135, 1144, - 1145, 1146, 1147, 1138, 1149, 1140, 1148, 1139, 1142, 1145, - 1150, 1151, 1154, 1157, 1153, 1143, 1146, 63, 1148, 1144, - 1153, 1147, 1155, 1158, 1156, 1150, 1159, 1154, 1158, 1149, - 1161, 1151, 1156, 1157, 1160, 1163, 1155, 1162, 1159, 1160, - 1160, 1164, 1164, 1166, 1168, 1167, 1169, 1169, 1163, 1161, + 1112, 1118, 1120, 1119, 1117, 1121, 1116, 1120, 1123, 1128, + 1114, 1122, 1125, 1125, 1115, 1119, 1126, 1131, 1127, 1121, + 1118, 1126, 1122, 1127, 1130, 1129, 1131, 1123, 1130, 1128, + 1129, 1132, 1133, 1134, 1136, 1137, 1135, 1139, 1138, 1140, + 1141, 1144, 1137, 1145, 1143, 1142, 1132, 1133, 1135, 1136, + 1138, 1142, 1134, 1146, 1147, 1148, 1139, 1151, 1141, 1143, + 1140, 1144, 1146, 1145, 1149, 1150, 1152, 1153, 1156, 1147, + 1158, 1155, 1157, 1159, 1148, 1160, 1149, 1155, 1158, 1161, + 1160, 1152, 1151, 1156, 1150, 1163, 1157, 1153, 1164, 1162, + 1165, 1161, 1169, 1159, 1162, 1162, 1166, 1166, 1168, 1171, - 1168, 1162, 1165, 1165, 1167, 1171, 1166, 1165, 1170, 1176, - 1165, 1165, 1172, 1170, 1171, 1165, 58, 1173, 1172, 1174, - 1179, 1165, 1173, 1180, 1174, 1165, 1175, 1175, 1177, 1177, - 1176, 1178, 1182, 1181, 1178, 1184, 1178, 1185, 1183, 1186, - 1179, 1180, 1181, 1183, 1187, 1186, 1188, 1190, 57, 1184, - 1187, 1188, 1182, 1189, 1197, 1185, 1190, 1189, 1191, 1191, - 1195, 1190, 1193, 1190, 1195, 1190, 1196, 1190, 1192, 1192, - 1198, 1192, 1197, 1193, 1201, 1200, 1203, 1199, 1204, 1198, - 1202, 1196, 1199, 1199, 1200, 1202, 1205, 1204, 1206, 1207, - 1203, 1208, 1209, 1209, 1210, 1211, 1201, 1208, 1213, 1212, + 1171, 1169, 1164, 1165, 1163, 1167, 1167, 1172, 1173, 1170, + 1167, 1168, 1172, 1167, 1167, 1170, 1174, 1173, 1167, 1178, + 1175, 1176, 1174, 1181, 1167, 1175, 1176, 1182, 1167, 1177, + 1177, 1179, 1179, 1180, 1184, 1183, 1180, 1185, 1180, 1186, + 1178, 1187, 1185, 1181, 1183, 1182, 1188, 1193, 1193, 1189, + 63, 1190, 1188, 1186, 1184, 1189, 1190, 1191, 1192, 1187, + 1195, 1191, 1194, 1194, 1197, 1194, 1198, 1192, 1197, 1199, + 1200, 1195, 1192, 1203, 1192, 1202, 1192, 1201, 1192, 1200, + 1204, 1198, 1201, 1201, 1202, 1204, 1205, 1199, 1206, 1207, + 1208, 1209, 1210, 1211, 1211, 1203, 1212, 1206, 1210, 1213, - 1215, 1214, 1210, 1207, 1212, 1205, 1216, 1206, 1217, 1211, - 1214, 1219, 1213, 1217, 1218, 1218, 1220, 1220, 1215, 1221, - 1223, 1221, 1224, 1223, 1225, 1226, 1219, 1224, 1227, 1227, - 1228, 1216, 1229, 1229, 1226, 1230, 1230, 1231, 1232, 1233, - 1234, 1234, 1231, 1225, 1235, 1236, 1237, 1238, 1236, 1239, - 1228, 1240, 1238, 1240, 1241, 1244, 1245, 1246, 1239, 1232, - 1233, 1245, 1243, 1247, 1235, 1243, 1237, 1248, 1247, 1249, - 1244, 1246, 1241, 1250, 1249, 1248, 1251, 1251, 1250, 1252, - 1253, 1254, 1255, 1256, 1252, 1258, 1259, 1254, 1260, 1255, - 1262, 1258, 1259, 1260, 1261, 1263, 1256, 1264, 1253, 1262, + 1205, 1214, 1215, 1216, 1212, 1209, 1214, 1217, 1207, 1208, + 1218, 1221, 1216, 1213, 1219, 1227, 1215, 1220, 1220, 1219, + 1222, 1222, 1223, 1226, 1223, 1217, 1221, 1225, 1226, 1228, + 1225, 1229, 1229, 1230, 1227, 1218, 1231, 1231, 1228, 1232, + 1232, 1233, 1234, 1235, 1236, 1236, 1233, 1237, 1238, 1239, + 1240, 1238, 1241, 1230, 1242, 1240, 1242, 1243, 1246, 1245, + 1247, 1241, 1245, 1234, 1235, 1247, 1248, 1237, 1255, 1239, + 1250, 1249, 1251, 1246, 1252, 1243, 1249, 1251, 1250, 1252, + 1248, 1253, 1253, 1254, 1256, 1257, 1255, 1258, 1254, 1260, + 1256, 1261, 1257, 1262, 1264, 1260, 1263, 1261, 1262, 1265, - 1261, 1265, 1265, 1266, 1268, 1269, 1270, 1271, 1264, 1272, - 1273, 1275, 1276, 1271, 1263, 1272, 1273, 1275, 1277, 1268, - 1278, 1279, 1280, 1266, 1281, 1269, 1276, 1282, 1282, 1270, - 1283, 1284, 1276, 1279, 1285, 1288, 1280, 52, 1277, 1286, - 1278, 1291, 1281, 1289, 1286, 1287, 1287, 1293, 1289, 1292, - 1283, 1295, 1285, 1294, 1292, 1292, 1284, 1296, 1288, 1295, - 1291, 1297, 1294, 1298, 1299, 1293, 1300, 1308, 1301, 1299, - 1301, 1296, 1299, 1302, 1304, 1300, 1297, 1306, 1298, 1305, - 1304, 1298, 1309, 1305, 1307, 1310, 1308, 1302, 1306, 1307, - 1307, 1311, 1312, 1313, 1314, 1315, 1311, 1312, 1316, 1318, + 1258, 1266, 1263, 1264, 1267, 1267, 1268, 1270, 1271, 1272, + 1273, 1274, 1266, 1275, 1277, 1278, 1273, 1274, 1265, 1275, + 1277, 1279, 1270, 1280, 1281, 1282, 1268, 1283, 1271, 1278, + 1284, 1284, 1272, 1285, 1286, 1278, 1281, 1287, 1290, 1282, + 58, 1279, 1288, 1280, 1293, 1283, 1291, 1288, 1289, 1289, + 1295, 1291, 1294, 1285, 1297, 1287, 1296, 1294, 1294, 1286, + 1298, 1290, 1297, 1293, 1299, 1296, 1300, 1301, 1295, 1302, + 1310, 1303, 1301, 1303, 1298, 1301, 1304, 1306, 1302, 1299, + 1308, 1300, 1307, 1306, 1300, 1311, 1307, 1309, 1312, 1310, + 1304, 1308, 1309, 1309, 1313, 1314, 1315, 1316, 1317, 1313, - 1315, 1319, 1320, 1310, 1321, 1321, 1322, 1323, 1309, 1324, - 1322, 1313, 1326, 1318, 1314, 1325, 1327, 1328, 1316, 1319, - 1320, 1325, 1329, 1330, 1326, 1323, 1331, 1332, 1324, 1333, - 1335, 1328, 1332, 1336, 1334, 1327, 1333, 1329, 1330, 1334, - 1337, 1337, 1336, 1338, 1339, 1331, 1340, 1343, 1335, 1341, - 1341, 1342, 1346, 1339, 1344, 1344, 1345, 1342, 1338, 1347, - 1348, 1343, 1345, 1349, 1350, 1348, 1340, 1357, 1346, 1349, - 1350, 1351, 1351, 1352, 1352, 1354, 1354, 1355, 1356, 1358, - 1347, 1355, 1359, 1360, 1363, 1357, 1361, 1356, 1362, 1362, - 1365, 1358, 1364, 1361, 1366, 1365, 1359, 1367, 1360, 1370, + 1314, 1318, 1320, 1317, 1321, 1322, 1312, 1323, 1323, 1324, + 1325, 1311, 1326, 1324, 1315, 1328, 1320, 1316, 1327, 1329, + 1330, 1318, 1321, 1322, 1327, 1331, 1332, 1328, 1325, 1333, + 1334, 1326, 1335, 1337, 1330, 1334, 1338, 1336, 1329, 1335, + 1331, 1332, 1336, 1339, 1339, 1338, 1340, 1341, 1333, 1342, + 1346, 1337, 1343, 1343, 1344, 1349, 1341, 1345, 1347, 1347, + 1344, 1340, 1348, 1345, 1346, 1350, 1360, 1351, 1348, 1342, + 1352, 1349, 1351, 1353, 1354, 1354, 1352, 1355, 1355, 1353, + 1357, 1357, 1359, 1358, 1360, 1361, 1350, 1358, 1362, 1363, + 1366, 1359, 1364, 1365, 1365, 1367, 1368, 1361, 1369, 1364, - 1364, 1368, 1371, 1371, 1363, 1369, 1368, 1368, 1366, 1372, - 1369, 1369, 1373, 1374, 1376, 1375, 1367, 1377, 1378, 1370, - 1375, 1379, 1374, 1381, 1380, 1383, 1382, 1379, 1372, 1380, - 1391, 1373, 1382, 1376, 1384, 1385, 1378, 1377, 1386, 1387, - 1384, 1385, 1388, 1389, 1383, 1390, 1393, 1393, 1392, 1381, - 1394, 1391, 1395, 1394, 1396, 1396, 1399, 1386, 1387, 1390, - 1399, 1388, 1389, 1392, 1395, 1397, 1397, 1398, 1400, 1401, - 1402, 1403, 1398, 1403, 1405, 1406, 1407, 1403, 1401, 1408, - 1406, 1400, 1409, 1402, 1410, 1410, 1413, 1414, 1411, 1412, - 1403, 1407, 1405, 1411, 1418, 1412, 1420, 1415, 1409, 1408, + 1370, 1368, 1362, 1367, 1363, 1373, 1374, 1374, 1371, 1375, + 1366, 1372, 1369, 1371, 1371, 1376, 1372, 1372, 1377, 1370, + 1379, 1378, 1380, 1381, 1382, 1373, 1378, 1377, 1375, 1384, + 1382, 1383, 1385, 1386, 1376, 1389, 1383, 1387, 1385, 1379, + 1388, 1381, 1380, 1387, 1390, 1391, 1388, 1392, 1393, 1394, + 1395, 1404, 1386, 57, 1389, 1384, 1396, 1396, 1397, 1398, + 1404, 1397, 1393, 1390, 1391, 1395, 1392, 1399, 1399, 1401, + 1394, 1398, 1400, 1400, 1401, 1402, 1403, 1405, 1406, 1402, + 1406, 1408, 1409, 1410, 1406, 1411, 1412, 1409, 1414, 1403, + 1405, 1413, 1413, 1414, 1415, 1416, 1417, 1406, 1410, 1408, - 1414, 1413, 1415, 1416, 1417, 1419, 1421, 1416, 1417, 1422, - 1422, 1424, 1421, 1426, 1418, 1427, 1420, 1428, 1428, 1429, - 1427, 1430, 1436, 1419, 1437, 1429, 1432, 1432, 1434, 1424, - 1440, 1434, 1435, 1435, 1426, 1441, 1439, 1443, 1436, 1439, - 1437, 1430, 1442, 1442, 1441, 1444, 1445, 1447, 1446, 1449, - 1440, 1450, 1443, 1446, 1448, 1448, 1451, 1452, 1449, 1453, - 1453, 1447, 1454, 1455, 1457, 1445, 1444, 1456, 1460, 1450, - 1462, 1451, 1456, 1458, 1458, 1463, 1454, 1461, 1461, 1457, - 1459, 1455, 1452, 1464, 1459, 1465, 1463, 1464, 1460, 1466, - 1468, 1468, 1462, 1469, 1466, 1470, 1471, 1472, 1473, 1474, + 1415, 1418, 1412, 1419, 1420, 1411, 1418, 1419, 1420, 1417, + 1416, 1421, 1422, 1423, 1424, 1425, 1425, 1427, 1429, 1430, + 1424, 1431, 1431, 1432, 1430, 1433, 1435, 1435, 1439, 1432, + 1422, 1421, 1440, 1423, 1437, 1427, 1443, 1437, 1444, 1429, + 1438, 1438, 1446, 1442, 1439, 1433, 1442, 1444, 1440, 1445, + 1445, 1447, 1448, 1449, 1450, 1452, 1443, 1446, 1449, 1451, + 1451, 1453, 1454, 1455, 1452, 1456, 1456, 1457, 1450, 1458, + 1459, 1448, 1447, 1463, 1460, 1459, 1462, 1454, 1465, 1453, + 1462, 1457, 1461, 1461, 1464, 1464, 1466, 1458, 1455, 1460, + 1467, 1468, 1472, 1463, 1467, 1473, 1469, 1466, 1471, 1471, - 1475, 1475, 1476, 1477, 1465, 1478, 47, 1476, 1482, 1469, - 1471, 1480, 1473, 1470, 1479, 1479, 1472, 1472, 1486, 1495, - 1480, 1481, 1489, 1477, 1474, 1478, 1481, 1483, 1482, 1483, - 1484, 1485, 1491, 1487, 18, 1484, 1489, 1485, 1486, 1487, - 1490, 1490, 1492, 1495, 1494, 1496, 1496, 1498, 1492, 1494, - 1499, 1491, 1497, 1497, 1500, 1501, 1502, 1502, 1501, 1503, - 1504, 1498, 1505, 1513, 17, 1507, 1524, 1506, 1499, 1500, - 1506, 1507, 1504, 1506, 1508, 1509, 1512, 1503, 1509, 1508, - 1511, 1512, 1505, 1514, 1524, 1506, 1514, 1516, 1513, 1511, - 1515, 1515, 1517, 1516, 1509, 1518, 1519, 1519, 1517, 1521, + 1465, 1469, 1474, 1475, 1476, 1477, 1478, 1478, 1472, 1479, + 1468, 1480, 1481, 1473, 1479, 1483, 1474, 1485, 1476, 1482, + 1482, 1484, 1475, 1475, 1483, 1486, 1484, 1486, 1487, 1488, + 1477, 1480, 1481, 1487, 1489, 1488, 1490, 1485, 1492, 1493, + 1493, 1494, 1490, 1495, 1498, 1497, 1499, 1499, 1501, 1495, + 1497, 1502, 1492, 1506, 1489, 1500, 1500, 1503, 1504, 1508, + 1494, 1504, 1501, 1505, 1505, 1507, 1558, 1509, 1498, 1502, + 1509, 1506, 1503, 1509, 1510, 1512, 1511, 1507, 1512, 1508, + 1510, 1511, 1514, 1515, 1516, 1509, 1517, 1558, 1515, 1517, + 1519, 1514, 1518, 1518, 1512, 1520, 1519, 1521, 1522, 1522, - 1518, 1520, 1520, 1522, 1523, 1521, 1525, 1526, 1522, 1527, - 1528, 1532, 1527, 1529, 1536, 1530, 1528, 1523, 1531, 1529, - 1530, 1533, 1534, 1534, 1531, 1525, 1533, 1526, 1535, 1537, - 1538, 1539, 1536, 1535, 1532, 1542, 1543, 1540, 1541, 1544, - 1545, 1544, 1547, 1548, 1549, 1539, 1551, 1552, 1554, 1537, - 1538, 1540, 1541, 1542, 1547, 1548, 1550, 1549, 1553, 1545, - 1557, 1543, 1550, 1556, 1556, 1558, 1551, 1552, 1562, 1554, - 1558, 1559, 1553, 1560, 1560, 1561, 1563, 1564, 1565, 1566, - 1557, 1567, 1562, 1559, 1568, 1569, 1573, 1565, 1567, 1571, - 1561, 1575, 1575, 1568, 1566, 1564, 1568, 1576, 1576, 1574, + 1524, 1520, 1521, 1523, 1523, 1525, 1524, 1526, 1527, 1516, + 1525, 1528, 1529, 1530, 1533, 1531, 1530, 1532, 1534, 1533, + 1526, 1531, 1535, 1532, 1534, 1539, 1527, 1540, 1536, 1541, + 1528, 1538, 1529, 1536, 1537, 1537, 1538, 1542, 1543, 1544, + 1545, 1546, 1547, 1539, 1549, 1535, 1547, 1540, 1548, 1541, + 1548, 1542, 1543, 1544, 1554, 1551, 1552, 1553, 1545, 1555, + 1554, 1556, 1557, 1549, 1560, 1560, 1546, 1551, 1552, 1561, + 1553, 1563, 1562, 1564, 1564, 1565, 1557, 1562, 1566, 1555, + 1567, 1556, 1568, 1563, 1569, 1582, 1570, 1571, 1577, 1561, + 1565, 1573, 1566, 1569, 1571, 1575, 1572, 1579, 1579, 1578, - 1563, 1569, 1574, 1577, 1571, 1578, 1581, 1579, 1582, 1571, - 1579, 1573, 1580, 1580, 1585, 1577, 1583, 1584, 1586, 1581, - 1587, 1583, 1584, 1578, 1588, 1591, 1589, 1582, 1590, 1587, - 1593, 1591, 1594, 1585, 1586, 1589, 1595, 1590, 1589, 1592, - 1592, 1596, 1597, 1588, 1598, 1594, 1601, 1602, 1603, 1603, - 1593, 1604, 1605, 0, 1595, 1596, 1598, 1606, 1597, 1607, - 1607, 1605, 1606, 1608, 1609, 1602, 1610, 1604, 1611, 1609, - 1612, 1601, 1608, 1613, 1607, 1608, 1615, 1616, 1613, 1613, - 1617, 1618, 1620, 1628, 1610, 1619, 1618, 1627, 1612, 1611, - 1615, 1619, 1616, 1621, 1621, 1622, 1630, 1628, 1623, 1624, + 1568, 1570, 1578, 1582, 1567, 1572, 1581, 1573, 1572, 1585, + 1575, 1580, 1580, 1577, 1583, 1575, 1586, 1583, 1581, 1584, + 1584, 1587, 1585, 1588, 1589, 1590, 1587, 1591, 1588, 1592, + 1593, 1594, 1595, 1596, 1596, 1586, 1591, 1597, 1595, 1593, + 1594, 1590, 1593, 1589, 1599, 1598, 1600, 1601, 1592, 1602, + 1605, 1606, 1607, 1607, 1608, 1609, 52, 1597, 1598, 1615, + 1600, 1602, 1599, 1601, 1609, 1612, 1610, 1611, 1611, 1606, + 1608, 1610, 1614, 1613, 1612, 1605, 1616, 1612, 1613, 1617, + 1615, 1619, 1611, 1620, 1617, 1617, 1621, 1622, 1624, 1632, + 1614, 1623, 1622, 1631, 1616, 1619, 1626, 1623, 1620, 1625, - 1620, 1622, 1617, 1623, 1625, 1624, 1629, 1627, 1631, 1630, - 1625, 1631, 1629, 1632, 1634, 1636, 1637, 1631, 1638, 1632, - 1639, 0, 1634, 1640, 1641, 1642, 1638, 1643, 1649, 1639, - 1644, 1644, 1645, 1650, 1636, 1637, 1640, 1641, 1645, 1642, - 1646, 1643, 1647, 1648, 1648, 1651, 1646, 1652, 1649, 1654, - 1653, 1650, 1644, 1655, 1656, 1647, 1653, 1658, 1658, 1659, - 1652, 1660, 1661, 1662, 1651, 1660, 1665, 1661, 1662, 1655, - 1663, 1654, 1656, 1664, 1667, 1663, 1668, 1669, 1669, 1659, - 1670, 1671, 1664, 1672, 1673, 1673, 1667, 1674, 1675, 1665, - 1679, 1668, 1676, 1671, 1677, 1675, 1680, 1681, 1682, 1670, + 1625, 1628, 1626, 1632, 1627, 1629, 1624, 1628, 1621, 1627, + 1633, 1629, 1634, 1631, 1635, 1636, 1633, 1635, 1638, 1640, + 1641, 1636, 1642, 1635, 1643, 1634, 1638, 1644, 1645, 1646, + 1642, 1647, 1653, 1643, 1648, 1648, 1649, 1654, 1640, 1641, + 1644, 1645, 1649, 1646, 1650, 1647, 1651, 1652, 1652, 1655, + 1650, 1656, 1653, 1658, 1657, 1654, 1648, 1659, 1660, 1651, + 1657, 1662, 1662, 1663, 1656, 1664, 1665, 1666, 1655, 1664, + 1669, 1665, 1666, 1659, 1667, 1658, 1660, 1668, 1671, 1667, + 1672, 1673, 1673, 1663, 1674, 1675, 1668, 1676, 1677, 1677, + 1671, 1678, 1679, 1669, 1683, 1672, 1680, 1675, 1681, 1679, - 1683, 1674, 1672, 1681, 1676, 1684, 1677, 1685, 1685, 1679, - 1682, 1684, 1686, 1687, 1687, 1686, 1680, 1689, 1683, 1690, - 1691, 1693, 1689, 1692, 1692, 1694, 1691, 1694, 1690, 1695, - 1696, 1697, 1695, 1693, 1698, 1700, 1699, 1701, 1702, 1703, - 1700, 1704, 1701, 1705, 1707, 1710, 1706, 1702, 1705, 1713, - 1696, 1703, 1698, 1697, 1699, 1706, 1704, 1708, 1709, 1715, - 1710, 1712, 1708, 1709, 1707, 1711, 1711, 1712, 1706, 1708, - 1713, 1716, 1717, 1718, 1719, 1724, 1719, 0, 1715, 1727, - 1720, 1721, 1721, 1722, 1722, 1723, 1723, 1728, 1717, 1725, - 1725, 1716, 1737, 1718, 1720, 1724, 1720, 1726, 1726, 1730, + 1684, 1685, 1686, 1674, 1687, 1678, 1676, 1685, 1680, 1688, + 1681, 1689, 1689, 1683, 1686, 1688, 1690, 1691, 1691, 1690, + 1684, 1693, 1687, 1694, 1695, 1697, 1693, 1696, 1696, 1698, + 1695, 1698, 1694, 1699, 1700, 1701, 1699, 1697, 1702, 1704, + 1703, 1705, 1706, 1707, 1704, 1708, 1705, 1709, 1711, 1714, + 1710, 1706, 1709, 1717, 1700, 1707, 1702, 1701, 1703, 1710, + 1708, 1712, 1713, 1719, 1714, 1716, 1712, 1713, 1711, 1715, + 1715, 1716, 1710, 1712, 1717, 1720, 1721, 1722, 1723, 1728, + 1723, 47, 1719, 1731, 1724, 1725, 1725, 1726, 1726, 1727, + 1727, 1732, 1721, 1729, 1729, 1720, 1741, 1722, 1724, 1728, - 1727, 1729, 1729, 1730, 1731, 1734, 1732, 1735, 1728, 1732, - 1731, 1734, 1736, 1738, 1739, 1739, 1738, 1737, 1736, 1740, - 1743, 1741, 1742, 1742, 1744, 1735, 1741, 1745, 1745, 1744, - 1746, 1747, 1748, 1749, 1750, 1746, 1751, 1747, 1752, 1740, - 1756, 1743, 1751, 1754, 1748, 1748, 1748, 1755, 1754, 1754, - 1757, 1748, 1757, 1749, 1750, 1756, 1758, 1759, 1752, 1760, - 1761, 1755, 1762, 1763, 1765, 1760, 1767, 1758, 1771, 1761, - 1764, 1764, 1759, 1766, 1766, 1768, 1769, 1769, 1770, 1770, - 1774, 1774, 1762, 1775, 1763, 1776, 1767, 1778, 1771, 1779, - 1765, 1782, 1780, 1786, 1776, 1784, 1778, 1768, 1780, 1781, + 1724, 1730, 1730, 1734, 1731, 1733, 1733, 1734, 1735, 1738, + 1736, 1739, 1732, 1736, 1735, 1738, 1740, 1742, 1743, 1743, + 1742, 1741, 1740, 1744, 1747, 1745, 1746, 1746, 1748, 1739, + 1745, 1749, 1750, 1750, 1753, 1751, 1749, 1754, 1752, 1747, + 1751, 1755, 1757, 1744, 1752, 1756, 1753, 1753, 1753, 1748, + 1759, 1756, 1760, 1753, 1761, 1759, 1759, 1754, 1762, 1763, + 1762, 1755, 1757, 1764, 1766, 1765, 1760, 1767, 1768, 1761, + 1763, 1765, 1770, 1766, 1769, 1769, 1771, 1771, 1764, 1772, + 1773, 1774, 1774, 1775, 1775, 1776, 1780, 1767, 1781, 1768, + 1779, 1779, 1783, 1784, 1785, 1786, 1786, 1781, 1770, 1772, - 1781, 1783, 1784, 1788, 1785, 1787, 1787, 1789, 1775, 1791, - 1779, 1792, 1782, 1785, 1791, 1793, 1783, 1792, 1794, 1786, - 1795, 1796, 1800, 1789, 1801, 1794, 1795, 1796, 1798, 1788, - 1797, 1797, 1799, 1798, 1802, 1793, 1803, 1804, 1805, 1803, - 1809, 1799, 1800, 1801, 1806, 1806, 1802, 1807, 1808, 1813, - 1810, 1814, 1811, 1807, 1808, 1804, 1811, 1815, 1816, 1816, - 1809, 1817, 1815, 1818, 1805, 1810, 1820, 1821, 1822, 1813, - 1823, 1821, 1811, 1814, 1822, 1824, 1824, 1825, 1818, 1823, - 1817, 1825, 1826, 1827, 1827, 1820, 1828, 1829, 1834, 1830, - 1831, 1832, 1833, 1826, 1834, 1831, 1839, 1836, 1826, 1835, + 1785, 1783, 1773, 1787, 1788, 1776, 1789, 1790, 1791, 1792, + 1792, 1780, 1793, 1789, 1784, 1794, 1790, 1796, 1799, 1788, + 1797, 1798, 1796, 1800, 1787, 1799, 1797, 1801, 1805, 1800, + 1804, 1794, 1803, 1801, 1791, 1802, 1802, 1803, 1793, 1804, + 1806, 1798, 1807, 1808, 1809, 1810, 1808, 1812, 1805, 1811, + 1811, 1813, 1814, 1812, 1807, 1815, 1816, 1813, 1818, 1806, + 1816, 1819, 1809, 1820, 1821, 1821, 1822, 1823, 1820, 1825, + 1815, 1810, 1814, 1826, 1827, 1828, 1816, 1826, 1818, 1831, + 1827, 1833, 1823, 1819, 1828, 1822, 1829, 1829, 1825, 1830, + 1831, 1832, 1832, 1830, 1834, 1831, 1835, 1837, 1836, 1838, - 1839, 1829, 1836, 1837, 1837, 1838, 1838, 1828, 1830, 1841, - 1842, 1832, 1833, 1843, 1835, 1844, 1844, 1847, 1841, 1846, - 1846, 1842, 1847, 1847, 1848, 1849, 1842, 1850, 1852, 1851, - 1848, 1849, 1853, 1843, 1851, 1855, 1857, 1856, 1853, 1858, - 1852, 1856, 1863, 1859, 1860, 1861, 1865, 1855, 1857, 1859, - 1862, 1861, 1866, 1850, 1863, 1862, 1867, 1869, 1865, 1873, - 1869, 1867, 1870, 1870, 1858, 0, 1860, 1871, 1871, 1872, - 1872, 1866, 1874, 1878, 1875, 1883, 1876, 1877, 1874, 1873, - 1875, 1876, 1878, 1877, 1880, 1882, 1886, 1883, 1882, 1880, - 1884, 1884, 1887, 1890, 1888, 1889, 1889, 1895, 1886, 1888, + 1839, 1840, 1833, 1836, 1841, 1848, 1839, 18, 1834, 1841, + 1842, 1842, 1843, 1843, 1844, 1835, 1840, 1837, 1844, 1838, + 1846, 1847, 1849, 1849, 1853, 1848, 1851, 1851, 1852, 1846, + 1853, 1855, 1847, 1852, 1852, 1854, 1857, 1847, 1856, 1858, + 1860, 1854, 1861, 1856, 1862, 1858, 1861, 1863, 1857, 1864, + 1868, 1865, 1860, 1866, 1870, 1864, 1862, 1855, 1867, 1866, + 1871, 1878, 1868, 1867, 1872, 1874, 1870, 17, 1874, 1872, + 1875, 1875, 1863, 1865, 1876, 1876, 1877, 1877, 1879, 1871, + 1880, 1878, 1881, 1882, 1879, 1883, 1880, 1881, 1885, 1882, + 1888, 1891, 1887, 1885, 1883, 1887, 1889, 1889, 1892, 1893, - 1891, 1892, 1890, 1896, 1887, 1891, 1892, 1893, 1894, 1894, - 1893, 1897, 1896, 1898, 1899, 1900, 1901, 1895, 1899, 1902, - 1900, 1903, 1901, 1904, 1905, 1908, 1909, 1907, 1907, 1897, - 1903, 1912, 1898, 1910, 1910, 1909, 1913, 1902, 1905, 1907, - 1912, 1904, 1914, 1908, 1911, 1911, 1915, 1916, 1913, 1919, - 1919, 1915, 1921, 1922, 1923, 1921, 1925, 1928, 1926, 1927, - 1916, 1929, 1929, 1914, 1930, 1927, 1930, 1931, 1931, 1922, - 1923, 1925, 1926, 1932, 1928, 1934, 1934, 1935, 1935, 1937, - 1938, 1932, 1939, 1940, 1941, 1937, 1938, 1942, 1942, 1939, - 1943, 1944, 1948, 1956, 1945, 1946, 1947, 1950, 1949, 1943, + 1894, 1894, 1888, 1891, 1893, 1895, 1896, 1897, 1899, 1899, + 1892, 1896, 1897, 1898, 1895, 1900, 1898, 1901, 1902, 1903, + 1904, 1907, 1905, 1906, 1904, 1908, 1901, 1905, 1909, 1906, + 1910, 1912, 1912, 1913, 1908, 1900, 1902, 1919, 1903, 1907, + 1914, 1915, 1915, 1912, 1910, 1917, 1909, 1916, 1916, 1914, + 1918, 1913, 1920, 1921, 1917, 1924, 1924, 1920, 1919, 1927, + 1926, 1928, 1918, 1926, 1930, 1932, 1921, 1931, 1933, 1934, + 1934, 1932, 1935, 1942, 1935, 1927, 1937, 1928, 0, 1930, + 1946, 1931, 1936, 1936, 1937, 1933, 1939, 1939, 1940, 1940, + 1947, 1943, 1944, 1945, 1948, 1948, 1942, 1943, 1944, 1949, - 1952, 1953, 1954, 1950, 1941, 1940, 1945, 1946, 1947, 1955, - 1955, 1956, 1944, 1949, 1954, 1957, 1950, 1960, 1948, 1958, - 1952, 1959, 1958, 1962, 1953, 1963, 1959, 1963, 1962, 1964, - 1970, 1965, 1966, 1968, 1971, 1957, 1965, 1960, 1972, 1966, - 1974, 1977, 1968, 1971, 1973, 1979, 1973, 1964, 1970, 1976, - 1972, 1976, 1978, 1978, 1984, 1977, 1980, 1982, 1981, 1974, - 1981, 1980, 1982, 1983, 1985, 1987, 1988, 1986, 1983, 1989, - 1987, 1979, 1984, 1986, 1991, 1992, 1995, 1989, 1996, 1988, - 1993, 1993, 1994, 1994, 1985, 1998, 1997, 2000, 0, 1992, - 1998, 1995, 1997, 1991, 1999, 2001, 1999, 2003, 1996, 2002, + 1945, 1950, 1946, 1951, 1952, 1953, 1954, 1956, 1949, 1955, + 1947, 1958, 1959, 1956, 1963, 1951, 1952, 1953, 1960, 1961, + 1961, 1962, 1950, 1966, 1955, 1964, 1956, 1969, 1964, 1969, + 1960, 1958, 1954, 1965, 1963, 1959, 1968, 1970, 1965, 1962, + 1971, 1968, 1972, 1966, 1974, 1971, 1976, 1977, 1978, 1972, + 1979, 1980, 1979, 1974, 1983, 1970, 1977, 1982, 1985, 1982, + 1978, 1984, 1984, 1987, 1976, 1987, 1986, 1988, 1983, 1989, + 1980, 1986, 1988, 1990, 1989, 1991, 1992, 1994, 1993, 1995, + 1997, 2001, 1992, 1993, 1985, 2002, 1998, 1995, 1999, 1999, + 1994, 1990, 2000, 2000, 2006, 1991, 2001, 2003, 2009, 1997, - 2002, 2004, 2004, 2001, 2006, 2000, 2005, 2005, 2008, 2003, - 2007, 2001, 2010, 2006, 2011, 2007, 2011, 2012, 2015, 2017, - 2014, 2010, 2013, 2021, 2010, 2022, 2008, 2013, 2013, 2014, - 2015, 2017, 2018, 2023, 2019, 2025, 2021, 2018, 2012, 2019, - 2024, 2024, 2023, 2026, 2027, 2022, 2031, 2032, 2028, 2029, - 2033, 2034, 2035, 2025, 2036, 2042, 2034, 2035, 2031, 2032, - 2027, 2026, 2028, 2036, 2029, 2039, 2041, 2043, 2044, 2045, - 2033, 2039, 2041, 2050, 2046, 2047, 2047, 2054, 2042, 2048, - 2049, 2049, 2043, 2046, 2039, 2051, 2044, 2053, 2048, 2051, - 2052, 2055, 2050, 2060, 2045, 2052, 2055, 2055, 2056, 2054, + 1998, 2004, 2005, 2003, 2005, 2002, 2004, 2007, 2008, 2008, + 2009, 2012, 2006, 2010, 2010, 2007, 2011, 2011, 2014, 2013, + 2012, 2016, 2018, 2007, 2013, 2017, 2019, 2017, 2020, 2021, + 2016, 2019, 2019, 2016, 2023, 2024, 2014, 2020, 2027, 2025, + 2024, 2021, 2028, 2018, 2025, 2029, 2023, 2030, 2030, 2031, + 2032, 2027, 2034, 2033, 2029, 2035, 2039, 2048, 2040, 2037, + 2038, 2051, 2028, 2040, 2049, 2042, 2034, 2031, 2032, 2033, + 2035, 2037, 2038, 2041, 2042, 2045, 2039, 2047, 2041, 2049, + 2048, 2045, 2050, 2047, 2052, 2056, 2051, 2053, 2053, 2054, + 2055, 2055, 2057, 2052, 2045, 2059, 2057, 2058, 2054, 2060, - 2053, 2057, 2058, 2059, 2056, 2058, 2068, 2057, 2063, 2063, - 2065, 2059, 2069, 2060, 2064, 2064, 2066, 2066, 2068, 2065, - 2067, 2067, 2070, 2072, 2072, 2078, 2071, 2082, 2070, 2064, - 2069, 2071, 2073, 2073, 2074, 2075, 2080, 2084, 2077, 2074, - 2064, 2075, 2077, 2079, 2083, 2078, 2085, 2079, 2086, 2083, - 2087, 2088, 2082, 2086, 2089, 2091, 2080, 2090, 2092, 2092, - 2084, 2085, 2090, 2094, 2096, 2093, 2095, 2088, 2087, 2093, - 2098, 2095, 2097, 2099, 2089, 2100, 2101, 2091, 2094, 2097, - 2100, 2102, 2098, 2103, 2103, 2105, 2106, 2107, 2108, 2101, - 2096, 2109, 2099, 2105, 2110, 2111, 2112, 2113, 2118, 2102, + 2050, 2061, 2058, 2062, 2056, 2063, 2061, 2061, 2059, 2062, + 2064, 2063, 2065, 2064, 2066, 2069, 2069, 2070, 2070, 2071, + 2065, 2060, 2072, 2072, 2073, 2073, 2074, 2075, 2071, 2076, + 2084, 2077, 2070, 2083, 2066, 2076, 2077, 2083, 2074, 2078, + 2078, 2079, 2079, 2070, 2080, 2075, 2081, 2085, 2086, 2080, + 2084, 2085, 2081, 2088, 2089, 2091, 2090, 2092, 2093, 2089, + 2095, 2094, 2092, 2097, 2096, 2098, 2098, 2099, 2086, 2096, + 2091, 2099, 2100, 2102, 2105, 2103, 2093, 2094, 2088, 2090, + 2095, 2101, 2103, 2104, 2106, 2097, 2101, 2100, 2107, 2106, + 2108, 2109, 2109, 2105, 2111, 2104, 2112, 2113, 2114, 2102, - 2122, 2117, 2115, 2122, 2118, 2106, 2107, 2119, 2112, 2119, - 2123, 2108, 2125, 2110, 2117, 2109, 2111, 2115, 2113, 2120, - 2120, 2121, 2124, 2123, 2129, 2125, 2121, 2126, 2126, 2127, - 2127, 2128, 2128, 2130, 2131, 2131, 2124, 2138, 2132, 2129, - 2133, 2133, 2134, 2134, 2135, 2139, 2130, 2132, 2137, 2135, - 2132, 2140, 2143, 2137, 2141, 2141, 2145, 2138, 2142, 2142, - 2144, 2144, 2147, 2140, 2148, 2139, 2146, 2146, 2151, 2148, - 2152, 2143, 2149, 2149, 2145, 2150, 2150, 2147, 2153, 2152, - 2154, 2156, 2151, 2157, 2157, 2158, 2156, 2159, 2159, 2160, - 2161, 2162, 2153, 2165, 2162, 2166, 2161, 2163, 2163, 2154, + 2115, 2107, 2111, 2116, 2117, 2118, 2119, 2123, 2108, 2124, + 0, 2121, 2125, 2127, 2127, 2112, 2113, 2118, 2125, 2131, + 2123, 2114, 2116, 2124, 2115, 2117, 2121, 2119, 2126, 2128, + 2126, 2130, 2129, 2131, 2128, 2129, 2132, 2133, 2133, 2134, + 2134, 2135, 2135, 2136, 2130, 2139, 2137, 2138, 2138, 2132, + 2140, 2140, 2141, 2141, 2139, 2142, 2144, 2139, 2136, 2137, + 2142, 2144, 2145, 2146, 2147, 2148, 2148, 2149, 2149, 2150, + 2151, 2151, 2152, 2153, 2153, 2155, 2147, 2154, 2156, 2156, + 2155, 2158, 2145, 2146, 2157, 2157, 2160, 2159, 2150, 2161, + 2152, 2165, 2154, 2163, 2167, 2158, 2159, 0, 2163, 2168, - 2164, 2164, 2167, 2170, 2158, 2168, 2168, 2160, 2171, 2172, - 2166, 2173, 2165, 2163, 2175, 2173, 2174, 2174, 2181, 2177, - 2176, 2167, 2178, 2170, 2172, 2176, 2180, 2180, 2182, 2183, - 2184, 2171, 2185, 2175, 2177, 2182, 2186, 2178, 2181, 2187, - 2187, 2192, 2188, 2183, 2189, 2195, 2189, 2197, 2184, 2190, - 2185, 2188, 2190, 2192, 2193, 2194, 2198, 2199, 2196, 2193, - 2194, 2198, 2186, 2205, 2203, 0, 2209, 2190, 2197, 2190, - 2195, 2196, 2201, 2202, 2204, 2206, 2210, 2201, 2202, 2203, - 2204, 2206, 2207, 2199, 2205, 2208, 2216, 2207, 2212, 2210, - 2208, 2209, 2211, 2213, 2214, 2211, 2215, 2212, 2217, 2221, + 2160, 2164, 2164, 2166, 2166, 2168, 2169, 2172, 2161, 2169, + 2165, 2174, 2167, 2170, 2170, 2171, 2171, 2173, 2175, 2175, + 2177, 2178, 2179, 2180, 2181, 2181, 2172, 2180, 2182, 2170, + 2174, 2183, 2173, 2184, 2185, 2188, 2183, 2179, 2187, 2187, + 2177, 2191, 2190, 2189, 2178, 2192, 2193, 2182, 2184, 2185, + 2189, 2194, 2194, 2195, 2199, 2188, 2190, 2202, 2196, 2191, + 2196, 2197, 2195, 2192, 2197, 2200, 2199, 2203, 2201, 2204, + 2200, 2205, 2193, 2201, 2206, 2212, 2205, 2210, 2208, 2197, + 2203, 2197, 2202, 2208, 2209, 2211, 2216, 2213, 2217, 2209, + 2204, 2211, 2210, 2213, 2214, 2218, 2212, 2215, 2218, 2214, - 2216, 2218, 2213, 2214, 2217, 2215, 2219, 2218, 2223, 2225, - 2219, 2224, 2224, 2226, 2226, 2225, 2227, 2223, 2228, 2221, - 2230, 2227, 2226, 2231, 2232, 2232, 2233, 2237, 2234, 2238, - 2236, 2241, 2243, 2239, 2241, 2244, 2230, 2234, 2228, 2231, - 2228, 2233, 2236, 2237, 2238, 2239, 2242, 2244, 2245, 2245, - 2255, 2242, 2243, 2246, 2246, 2248, 2248, 2249, 2250, 2251, - 2249, 2252, 2253, 2250, 2255, 2251, 2257, 2252, 2254, 2254, - 2258, 2253, 2256, 2256, 2259, 2260, 2260, 2261, 2257, 2266, - 2262, 2263, 2266, 2261, 2258, 2265, 2263, 2267, 2267, 2265, - 2268, 2269, 2270, 2259, 2262, 2268, 2269, 2269, 2271, 2272, + 2206, 2217, 2215, 2219, 2220, 2221, 2222, 2223, 2228, 0, + 2224, 2216, 2219, 2220, 2221, 2222, 2224, 2225, 2226, 2237, + 2230, 2223, 2226, 2225, 2231, 2231, 2232, 2235, 2228, 2230, + 2233, 2233, 2232, 2234, 2238, 2237, 2239, 2239, 2234, 2233, + 2240, 2243, 2241, 2244, 2246, 2245, 2250, 2235, 0, 2235, + 2238, 2241, 2251, 2243, 2248, 2240, 2246, 2248, 2249, 2244, + 2245, 2252, 2252, 2249, 2251, 0, 2250, 2253, 2253, 2255, + 2255, 2256, 2257, 2258, 2256, 2259, 2260, 2257, 2262, 2258, + 2265, 2259, 2261, 2261, 2264, 2260, 2263, 2263, 2266, 2267, + 2267, 2268, 2262, 2270, 2265, 2269, 2264, 2268, 2270, 2272, - 2274, 2270, 2276, 2272, 2273, 2273, 2277, 2276, 2278, 2279, - 2280, 2281, 2282, 2274, 2280, 2283, 2284, 2282, 2271, 2285, - 2286, 2283, 2284, 2279, 2287, 2288, 2277, 2291, 2278, 2287, - 2290, 2281, 2301, 2292, 2293, 2298, 2294, 2285, 2292, 2286, - 2293, 2380, 2290, 2291, 2294, 2295, 2288, 2295, 2380, 2298, - 2299, 2299, 2300, 2302, 2302, 2300, 2305, 2306, 2301, 2307, - 2305, 2308, 2308, 2306, 2309, 2312, 2312, 2314, 2316, 2320, - 2317, 2307, 2321, 2309, 2320, 2322, 2323, 2324, 2324, 2330, - 2322, 2323, 2316, 2326, 2326, 2314, 2317, 2328, 2329, 2329, - 2331, 2332, 2334, 2328, 2335, 2330, 2332, 2339, 2321, 2336, + 2278, 2273, 2277, 2272, 2273, 2274, 2274, 2266, 2275, 2269, + 2276, 2277, 2281, 2275, 2279, 2276, 2276, 2284, 2279, 2283, + 2278, 2280, 2280, 2285, 2283, 2281, 2286, 2287, 2288, 2289, + 2290, 2287, 2291, 2292, 2289, 2293, 2290, 2284, 2291, 2294, + 2286, 2295, 2296, 2285, 2298, 2299, 2295, 2300, 2288, 2301, + 2306, 2292, 2300, 2309, 2293, 2301, 2298, 2302, 2294, 0, + 2303, 2299, 2303, 2296, 2306, 2302, 2307, 2307, 2308, 2310, + 2310, 2308, 2313, 2315, 2314, 2317, 2313, 2316, 2316, 2309, + 2314, 2320, 2320, 2322, 2317, 2315, 2324, 2325, 2328, 2329, + 2330, 2331, 2339, 2328, 2338, 2330, 2331, 2332, 2332, 2342, - 2336, 2338, 2340, 2339, 2341, 2345, 2335, 2343, 2343, 2346, - 2338, 2334, 2331, 2344, 2348, 2348, 2344, 2349, 2349, 2341, - 2340, 2350, 2351, 2352, 2345, 2353, 2350, 2346, 2355, 2354, - 2353, 2354, 2352, 2356, 2357, 2359, 2358, 0, 2360, 2366, - 2351, 2358, 2355, 2360, 2361, 2361, 2357, 2356, 2362, 2362, - 2363, 2363, 2364, 2364, 2365, 2359, 2367, 2366, 2368, 2368, - 2370, 2367, 2369, 2369, 2371, 2372, 2365, 2373, 2374, 2374, - 2375, 2378, 2370, 2376, 2376, 2379, 2371, 2377, 2377, 2381, - 2382, 2383, 2378, 2373, 2384, 2372, 2383, 2379, 2385, 2375, - 2387, 2381, 2386, 2386, 2388, 2389, 2390, 2391, 2392, 2387, + 2324, 2322, 2336, 2325, 2334, 2334, 2337, 2337, 2336, 2343, + 2338, 2340, 2344, 2344, 2339, 2329, 2340, 2346, 2342, 2347, + 2348, 2343, 2349, 2351, 2351, 2347, 2346, 2352, 2353, 2363, + 2352, 2354, 2356, 2356, 2357, 2357, 2358, 2349, 2348, 2359, + 2361, 2358, 2360, 2363, 2362, 2361, 2362, 2353, 2364, 2354, + 2366, 2360, 2365, 2367, 2368, 2366, 2374, 2359, 0, 2368, + 2369, 2369, 2364, 2373, 2365, 2370, 2370, 2371, 2371, 2372, + 2372, 2375, 2378, 2367, 2374, 2373, 2375, 2376, 2376, 2377, + 2377, 2379, 2380, 2381, 2378, 2382, 2382, 2383, 2384, 2384, + 2385, 2385, 2386, 2379, 2388, 2387, 2389, 2390, 2392, 2381, - 2382, 2393, 2394, 2394, 2384, 2395, 2399, 2396, 2385, 2390, - 2397, 2400, 2392, 2393, 2395, 2389, 2401, 2403, 2406, 2406, - 2388, 2391, 2396, 2402, 2399, 2397, 2402, 2404, 2413, 2405, - 2415, 2403, 2404, 2400, 2405, 2407, 2407, 2408, 2408, 2401, - 2410, 2410, 2412, 2412, 2414, 2416, 2413, 2418, 2419, 2415, - 2420, 2421, 2422, 2423, 2424, 2414, 2424, 2425, 2426, 2431, - 2416, 2422, 2427, 2428, 2428, 2433, 2419, 2418, 2430, 2430, - 2434, 2421, 2420, 2423, 2431, 2437, 2426, 2425, 2439, 2434, - 2427, 2435, 2435, 2440, 2437, 2438, 2438, 2433, 2441, 2442, - 2443, 2444, 2446, 0, 2445, 2441, 2439, 2447, 2447, 2448, + 2391, 2388, 2380, 2386, 2393, 2391, 2383, 2387, 2389, 2394, + 2394, 2395, 2396, 2397, 2398, 2399, 2400, 2390, 2392, 2401, + 2395, 2402, 2402, 2403, 2393, 2404, 2405, 2398, 2407, 2408, + 2400, 2401, 2403, 2397, 2409, 2411, 2414, 2414, 2396, 2399, + 2404, 2405, 2410, 2412, 2421, 2410, 2407, 2413, 2412, 2411, + 2423, 2408, 2413, 2415, 2415, 2416, 2416, 2409, 2418, 2418, + 2420, 2420, 2421, 2422, 2424, 2426, 2427, 2428, 2429, 2423, + 2431, 2430, 2433, 2432, 2422, 2432, 2434, 2435, 2439, 2424, + 2430, 2436, 2436, 2441, 2427, 2426, 2438, 2438, 2429, 2428, + 2431, 2442, 2433, 2439, 2434, 2435, 2443, 2443, 2445, 2447, - 2448, 2440, 2449, 2454, 2442, 2456, 2450, 2455, 2443, 2444, - 2445, 2446, 2450, 2451, 2451, 2452, 2452, 2453, 2458, 2459, - 2449, 2454, 2455, 2453, 2456, 2457, 2460, 2461, 2466, 2461, - 2457, 2460, 2462, 2462, 2463, 2468, 2463, 2469, 2458, 2459, - 2464, 2464, 2470, 2471, 2468, 2472, 2473, 2466, 2474, 2477, - 2472, 0, 2478, 2480, 2470, 2478, 2469, 2479, 2479, 2481, - 2482, 2482, 2491, 2471, 2485, 2488, 2473, 2474, 2480, 2477, - 2483, 2486, 2487, 2487, 2483, 2486, 2490, 2481, 2488, 2485, - 2492, 2495, 2491, 2493, 2493, 2496, 2497, 2498, 2498, 2499, - 2497, 2490, 2501, 2495, 2496, 2500, 2500, 2501, 2502, 2503, + 2442, 2446, 2446, 2448, 2449, 2441, 2451, 2445, 2450, 2452, + 2453, 2449, 2454, 2455, 2455, 2456, 2456, 2447, 2457, 2458, + 2464, 2448, 2459, 2450, 2451, 2463, 2453, 2452, 2459, 2460, + 2460, 2454, 2461, 2461, 2462, 2464, 2465, 2458, 2457, 2466, + 2462, 2467, 2468, 2463, 2466, 2469, 2470, 2472, 2470, 2472, + 2469, 2471, 2471, 2473, 2473, 2465, 2475, 2477, 2478, 2479, + 2480, 2467, 2468, 2481, 2482, 2486, 2477, 2483, 2481, 2487, + 2490, 2479, 2487, 2488, 2488, 2475, 2489, 2478, 2491, 2491, + 2480, 2494, 2499, 2492, 2482, 2486, 2483, 2492, 2490, 2495, + 2497, 2489, 2500, 2495, 2496, 2496, 2494, 2499, 2501, 2502, - 2492, 2504, 2505, 2505, 2510, 2510, 2511, 2502, 2499, 2512, - 2512, 2513, 2514, 2504, 2515, 2503, 2518, 2516, 2517, 2517, - 2520, 2520, 2523, 2515, 2513, 2514, 2516, 2523, 2511, 2524, - 2525, 2518, 2526, 2527, 2524, 2528, 2529, 2526, 2530, 0, - 2532, 2527, 2533, 2534, 2525, 2529, 2530, 2533, 2534, 2535, - 2536, 2536, 2537, 2537, 2528, 2532, 2538, 2538, 2539, 2541, - 2542, 2540, 2543, 0, 2535, 2539, 2540, 2544, 2543, 2545, - 2545, 2546, 2544, 0, 2547, 2548, 2548, 2541, 2542, 2547, - 2549, 2549, 2552, 2553, 2553, 2554, 2546, 2555, 2554, 2556, - 2558, 2557, 2555, 2555, 2556, 2552, 2557, 2559, 2560, 2562, + 2502, 2504, 2505, 2497, 2506, 2507, 2507, 2508, 2506, 2509, + 2509, 2505, 2500, 2504, 2510, 2511, 2512, 2513, 2501, 2510, + 2514, 2514, 2519, 2519, 2511, 2520, 2508, 2521, 2521, 2513, + 2522, 2523, 2512, 2524, 2526, 2526, 2525, 2527, 2529, 2529, + 2534, 2532, 2524, 2522, 2523, 2525, 2532, 2520, 2533, 2536, + 2535, 2537, 2527, 2533, 2534, 2535, 2538, 2536, 2539, 2541, + 2544, 0, 2542, 2543, 2549, 2538, 2539, 2542, 2543, 2549, + 2537, 2545, 2545, 2548, 2541, 2544, 2546, 2546, 2547, 2547, + 2548, 2550, 2551, 2552, 2561, 2553, 2554, 2554, 2555, 2552, + 2553, 2556, 2557, 2557, 2558, 2558, 2556, 2561, 2567, 2550, - 2561, 2563, 2560, 2559, 2558, 2561, 2564, 2565, 2562, 2566, - 2569, 2567, 2579, 2568, 2564, 2566, 2563, 2567, 2568, 2571, - 2572, 2573, 2569, 2580, 2573, 2572, 2575, 2577, 2565, 2578, - 2579, 2581, 2577, 2582, 2578, 2571, 2580, 2584, 2575, 2587, - 2581, 2588, 2582, 2583, 2583, 2587, 2584, 2588, 2591, 2592, - 2596, 2593, 2594, 2594, 2595, 2599, 2597, 2598, 2598, 2596, - 2601, 2603, 2604, 2605, 2605, 2606, 2604, 2591, 0, 2592, - 2593, 2597, 2607, 2595, 2599, 2601, 2608, 2609, 2607, 2610, - 2610, 2603, 2608, 2609, 2611, 2614, 2612, 2615, 2618, 2617, - 2606, 2612, 2611, 2617, 2614, 2619, 2621, 2621, 2622, 2632, + 2551, 2562, 2562, 2555, 2563, 2564, 0, 2563, 2565, 2566, + 2564, 2564, 2567, 2565, 2566, 2568, 2569, 2570, 2571, 2572, + 2569, 2568, 2570, 2573, 2574, 2577, 2575, 2571, 2578, 2576, + 2577, 2573, 2575, 2580, 2572, 2576, 2581, 2588, 2584, 2582, + 2578, 2581, 2582, 2586, 2589, 2574, 2587, 2590, 2586, 2580, + 2584, 2587, 2591, 2592, 2592, 2588, 2590, 2589, 2593, 2596, + 2597, 2591, 2598, 2601, 2602, 2606, 2597, 2593, 2598, 2603, + 2604, 2604, 2605, 2609, 2606, 2607, 2613, 2596, 2608, 2608, + 2611, 2614, 2601, 2616, 2602, 2614, 2615, 2615, 2603, 0, + 2607, 2605, 2609, 2617, 2618, 2611, 2613, 2619, 2621, 2617, - 2615, 0, 2618, 2623, 2623, 2624, 2624, 2626, 2626, 2627, - 2619, 2637, 2628, 2627, 2630, 2630, 2622, 2628, 2633, 2632, - 2634, 2635, 2645, 2633, 2638, 2638, 2635, 2635, 2640, 2640, - 2643, 2637, 2634, 2641, 2641, 2642, 2647, 2651, 2642, 2654, - 2645, 2648, 2648, 2643, 2649, 2649, 2650, 2650, 2652, 2652, - 2653, 2655, 2651, 2656, 2657, 2657, 2647, 2654, 2658, 2656, - 2663, 2662, 2658, 2653, 2664, 2655, 2662, 2662, 2665, 2666, - 2667, 2668, 2678, 2669, 2675, 2666, 2667, 2669, 2670, 2670, - 2673, 2681, 2675, 2663, 2664, 2673, 2676, 2679, 2665, 2676, - 2679, 2680, 2680, 2683, 2684, 2682, 2668, 2678, 2681, 2681, + 2618, 2620, 2620, 2619, 2622, 2624, 2621, 2625, 2616, 2622, + 2628, 2627, 2629, 2632, 2624, 2627, 2631, 2631, 2633, 2633, + 2625, 2634, 2634, 2642, 2628, 2636, 2636, 2629, 2637, 2638, + 2644, 2632, 2637, 2643, 2638, 2640, 2640, 2647, 2643, 2645, + 2648, 2648, 2644, 2642, 2645, 2645, 2650, 2650, 2651, 2651, + 2652, 2653, 2655, 2652, 2657, 2658, 2658, 2647, 2659, 2659, + 2660, 2660, 2661, 2663, 2653, 2662, 2662, 2664, 2665, 2666, + 2655, 2667, 2667, 2673, 2657, 2666, 2663, 2661, 2674, 2668, + 2675, 2672, 2665, 2668, 2676, 2664, 2672, 2672, 2677, 2678, + 2676, 2679, 2680, 2680, 2677, 2679, 2673, 2683, 2674, 2685, - 2682, 2685, 2686, 2686, 2687, 2688, 2689, 2690, 2688, 2691, - 2692, 2683, 2694, 2692, 2684, 2685, 2688, 2691, 2687, 2693, - 2689, 2695, 2695, 2700, 2693, 2693, 2690, 2696, 2696, 2697, - 2697, 2694, 2698, 2698, 2699, 2699, 2701, 2702, 2703, 2700, - 2704, 2701, 2705, 2706, 2712, 2707, 2708, 2705, 2710, 2710, - 2711, 2715, 2706, 2711, 2714, 2714, 2724, 2702, 2715, 2704, - 2716, 2716, 2712, 2717, 2703, 2707, 2708, 2720, 2717, 2719, - 2719, 2721, 2722, 2727, 2724, 2726, 2720, 2725, 2725, 2726, - 2721, 2722, 2727, 2728, 2729, 2731, 2730, 2732, 2736, 2729, - 2729, 2732, 2740, 2736, 2731, 2737, 2737, 2741, 2728, 2730, + 2675, 2686, 2683, 2688, 2686, 2689, 2691, 2685, 2689, 2690, + 2690, 2692, 2693, 2694, 2678, 2695, 2692, 2696, 2696, 2700, + 2697, 2703, 2699, 2691, 2691, 2704, 2703, 2703, 2688, 2695, + 2693, 2701, 2698, 2694, 2697, 2698, 2699, 2702, 2700, 2701, + 2702, 2705, 2705, 2698, 2704, 2706, 2706, 2707, 2707, 2708, + 2708, 2709, 2709, 2710, 2711, 2712, 2713, 2714, 2715, 2711, + 2716, 2717, 2714, 2718, 2719, 2716, 2721, 2721, 2722, 2710, + 2717, 2722, 2723, 2725, 2725, 2712, 2728, 2715, 2726, 2727, + 2727, 2728, 2713, 2718, 2719, 2726, 2730, 2730, 2731, 2732, + 2723, 2733, 2735, 2736, 2736, 2737, 2738, 2731, 2732, 2737, - 2739, 2739, 2742, 2744, 2745, 2748, 2740, 2750, 2749, 2751, - 2755, 2753, 2744, 2757, 2758, 2751, 2745, 2749, 2757, 2758, - 2742, 2797, 2741, 2753, 2759, 2759, 2760, 2750, 2762, 2769, - 2748, 2755, 2770, 2762, 2797, 2760, 2763, 2763, 2765, 2765, - 2763, 2766, 2766, 2767, 2767, 2768, 2777, 2771, 2774, 2769, - 2773, 2770, 2771, 2774, 2768, 2775, 2773, 2776, 2776, 2778, - 2775, 2779, 2780, 2781, 2777, 2783, 2782, 2780, 2784, 2784, - 2786, 2778, 2782, 2787, 2786, 2788, 2789, 2789, 2787, 2790, - 2788, 2781, 2779, 2793, 2791, 2792, 2795, 2795, 2798, 2799, - 2783, 2801, 2802, 2799, 2803, 2800, 2806, 2805, 2790, 2791, + 2733, 2739, 2740, 2742, 2741, 2738, 2747, 2740, 2740, 2743, + 2735, 2747, 2742, 2743, 2748, 2748, 2739, 2741, 2750, 2750, + 2751, 2752, 2753, 2755, 2756, 2759, 2760, 2761, 2766, 2764, + 0, 2762, 2755, 2768, 2751, 2760, 2756, 2762, 2768, 2769, + 2753, 2764, 2770, 2770, 2769, 2771, 2752, 2761, 2773, 2766, + 2759, 2774, 2774, 2773, 2771, 2774, 2776, 2776, 2777, 2777, + 2778, 2778, 2779, 2780, 2782, 2781, 2784, 2788, 2785, 2782, + 2786, 2779, 2784, 2785, 2789, 2786, 2787, 2787, 2790, 2792, + 2794, 2801, 2791, 2780, 2781, 2788, 2789, 2791, 2793, 2795, + 2795, 2797, 2802, 2798, 2793, 2797, 2799, 2792, 2798, 2790, - 2792, 2798, 2803, 2793, 2800, 2804, 2805, 2801, 2807, 2809, - 2804, 2802, 2808, 2808, 2806, 2811, 2811, 2812, 2812, 2814, - 2816, 2816, 2818, 2819, 2821, 2820, 2823, 2823, 2809, 2821, - 2824, 2825, 2826, 2829, 2807, 2828, 2828, 2830, 2818, 2819, - 2814, 2820, 2831, 2831, 2834, 2837, 2835, 2829, 2836, 2840, - 2824, 2826, 2835, 2836, 2825, 2842, 2830, 2838, 2838, 2839, - 2839, 2841, 2841, 2843, 2834, 2844, 2842, 2837, 2845, 2840, - 2846, 2847, 2843, 2848, 2845, 2849, 2849, 2850, 2851, 2851, - 2850, 2841, 2855, 2847, 2856, 2844, 2857, 2858, 2858, 2846, - 2860, 2861, 2857, 2848, 2855, 2859, 2860, 2863, 2859, 2864, + 2801, 2799, 2800, 2800, 2803, 2794, 2804, 2802, 2806, 2806, + 2808, 2809, 2810, 2811, 2812, 2813, 2810, 2814, 2818, 2803, + 2816, 2816, 2811, 2808, 2809, 2814, 2804, 2815, 2817, 2819, + 2812, 2821, 2815, 2826, 2813, 2830, 2818, 2817, 2820, 2820, + 2823, 2823, 2824, 2824, 2828, 2828, 2831, 2832, 2833, 2836, + 2821, 2830, 2837, 2833, 2826, 2819, 2835, 2835, 2838, 2840, + 2840, 2842, 2831, 2832, 2841, 2843, 2843, 2846, 2847, 2836, + 2849, 2848, 2850, 2850, 2847, 2837, 2848, 2838, 2841, 2852, + 2842, 2851, 2851, 2853, 2853, 2854, 2855, 2846, 2856, 2859, + 2858, 2857, 2849, 2860, 2867, 2855, 2854, 2857, 2868, 2852, - 2864, 2865, 2863, 2866, 2856, 2867, 2865, 2868, 2871, 2861, - 2872, 2867, 2869, 2869, 2873, 2876, 2874, 2875, 2875, 2877, - 2871, 2878, 2866, 2877, 2868, 2868, 2880, 2880, 2872, 2874, - 2878, 2881, 2881, 2882, 2876, 2883, 2884, 2888, 2882, 2873, - 2895, 2884, 2885, 2885, 2886, 2886, 2887, 2887, 2889, 2883, - 2890, 2892, 2892, 2897, 2889, 2890, 2898, 2899, 2903, 2895, - 2900, 2900, 2904, 2888, 2902, 2902, 2910, 2905, 2906, 2906, - 2907, 2907, 2903, 2911, 2909, 2897, 2905, 0, 2898, 2899, - 2909, 2919, 2904, 2912, 2915, 2915, 2910, 2920, 2912, 2917, - 2917, 2918, 2911, 2920, 2921, 2919, 2918, 2922, 2923, 2923, + 3101, 2859, 3101, 2853, 2861, 2861, 2867, 2862, 2856, 2858, + 2862, 2863, 2863, 2860, 2869, 2870, 2870, 2872, 2868, 2871, + 2869, 2873, 2871, 2872, 2875, 2876, 2876, 2877, 2878, 2875, + 2879, 2880, 2877, 2881, 2881, 2884, 2879, 2885, 2883, 2873, + 2888, 2886, 2887, 2887, 2892, 2892, 2895, 2878, 2880, 2880, + 2883, 2889, 2890, 2884, 2886, 2889, 2893, 2893, 2894, 2888, + 2895, 2890, 2885, 2894, 2896, 2897, 2897, 2898, 2898, 2896, + 2899, 2899, 2900, 2901, 2902, 2908, 2903, 2905, 2905, 2910, + 2902, 2903, 2911, 2912, 2916, 2900, 2913, 2913, 2915, 2915, + 2917, 2918, 2919, 2919, 2908, 2920, 2920, 2922, 2916, 2901, - 2926, 2927, 2924, 2928, 2929, 2922, 2921, 2924, 2928, 2930, - 2932, 2933, 2934, 2935, 2944, 2930, 2929, 2937, 2932, 2939, - 2926, 2927, 2938, 2940, 2941, 3041, 2943, 2948, 3041, 2941, - 2933, 2943, 2934, 2935, 2944, 2937, 2939, 2939, 2938, 2945, - 2950, 2946, 2960, 2949, 2940, 2945, 2946, 2948, 2949, 2953, - 2953, 2954, 2954, 2950, 2955, 2959, 2961, 2961, 2955, 2980, - 2959, 2960, 2963, 2963, 2964, 2964, 2967, 2964, 2965, 2965, - 2967, 2965, 2966, 2966, 2970, 2966, 2969, 2969, 2974, 2971, - 2975, 2976, 2977, 2977, 2980, 2982, 2976, 2981, 2983, 2982, - 2984, 2986, 2970, 2971, 2981, 2987, 0, 2983, 2974, 2991, + 2918, 2910, 2923, 2922, 2911, 2912, 2924, 2925, 2928, 2928, + 2917, 2931, 2925, 2930, 2930, 2932, 2931, 2933, 2934, 2935, + 2936, 2936, 2923, 2933, 2939, 2924, 2937, 2935, 2940, 2932, + 2934, 2937, 2941, 2942, 2943, 2945, 2946, 2941, 2947, 2948, + 2943, 2951, 2950, 2945, 2939, 2942, 2952, 2953, 2940, 2954, + 2957, 2956, 2961, 3042, 2954, 2946, 2956, 2951, 2947, 2948, + 2950, 2958, 2963, 2952, 2952, 3042, 2959, 2958, 2953, 2962, + 2957, 2959, 2961, 2974, 2962, 2963, 2966, 2966, 2967, 2967, + 2968, 2972, 2972, 2973, 2968, 2975, 2975, 2981, 2973, 2977, + 2977, 2981, 2974, 2978, 2978, 2984, 2978, 2979, 2979, 2988, - 2975, 2988, 2988, 2992, 2987, 2984, 2989, 2989, 2992, 2986, - 2990, 2990, 2993, 2994, 2991, 2996, 2995, 2997, 2994, 2994, - 2998, 2993, 2995, 2999, 2993, 3000, 3001, 3013, 2999, 3003, - 3000, 3004, 2997, 3002, 3002, 3003, 3013, 3004, 3005, 3005, - 2996, 2998, 3006, 3006, 3008, 3001, 3007, 3007, 0, 3008, - 3011, 3011, 3012, 3012, 3016, 3016, 3017, 3017, 3018, 3018, - 3019, 3019, 3020, 3020, 3021, 3021, 3022, 3022, 3024, 3025, - 3025, 3026, 3027, 3028, 3032, 3030, 3034, 3024, 3031, 3031, - 3026, 3036, 3033, 3040, 3027, 3035, 3035, 3042, 3034, 3032, - 3037, 3037, 3044, 3028, 3030, 3033, 3036, 3043, 3043, 3046, + 2979, 2980, 2980, 2985, 2980, 2983, 2983, 2989, 2994, 2990, + 2991, 2991, 2996, 2984, 2990, 2995, 2996, 2985, 3009, 2988, + 2997, 2998, 2995, 3000, 3009, 3001, 3028, 2989, 3005, 2997, + 3002, 3002, 3010, 2994, 3001, 3028, 2998, 3003, 3003, 3004, + 3004, 3000, 3006, 3005, 3007, 3008, 3011, 3006, 3012, 3013, + 3008, 3008, 3015, 3007, 3013, 3014, 3007, 3010, 3016, 3016, + 3014, 3011, 3017, 3094, 3018, 3019, 3019, 3094, 3017, 3012, + 3018, 3015, 3020, 3020, 3021, 3021, 3022, 3025, 3025, 3027, + 3027, 3022, 3031, 3031, 3032, 3032, 3033, 3033, 3034, 3034, + 3035, 3035, 3036, 3036, 3037, 3037, 3039, 3040, 3040, 3041, - 3047, 3040, 3046, 3048, 3049, 3050, 3047, 3051, 3054, 3049, - 3044, 3052, 3055, 3042, 3054, 3059, 3062, 3048, 3072, 3070, - 3077, 3055, 3070, 0, 3050, 3051, 3080, 3052, 3073, 3073, - 3059, 3072, 3074, 3074, 3075, 3075, 3078, 3079, 3081, 3083, - 3084, 3079, 3062, 3077, 3085, 3078, 3080, 3089, 3086, 3085, - 3086, 3084, 3081, 3087, 3088, 3088, 3090, 3092, 3091, 3093, - 3089, 3095, 3083, 3094, 3097, 3096, 3098, 3099, 3087, 3100, - 3095, 3098, 3104, 3092, 3100, 3090, 3091, 3096, 3094, 3105, - 3106, 3106, 3107, 3112, 3093, 3097, 3104, 3099, 3108, 3108, - 3113, 3107, 3109, 3109, 3110, 3110, 3111, 3111, 3114, 3105, + 3043, 3047, 3045, 3046, 3046, 3039, 3048, 3055, 3041, 3051, + 3049, 3050, 3050, 3052, 3052, 3056, 3047, 3057, 3056, 3048, + 3043, 3045, 3049, 3059, 3051, 3055, 3058, 3058, 3061, 3062, + 3063, 3061, 3064, 3065, 3067, 3062, 3066, 3064, 3070, 3069, + 3074, 3059, 3077, 3057, 3063, 3069, 3085, 3070, 3087, 3085, + 3067, 3092, 3065, 3095, 3066, 3074, 3088, 3088, 3089, 3089, + 3093, 3087, 3090, 3090, 3096, 3098, 3099, 3100, 3077, 3093, + 3102, 3104, 3100, 3095, 3092, 3103, 3103, 3099, 3096, 3105, + 3107, 3106, 3108, 3110, 3104, 3102, 3109, 3112, 3098, 3113, + 3111, 3114, 3110, 3120, 3113, 3115, 3107, 3122, 3105, 3106, - 3115, 3114, 3112, 3116, 3117, 3115, 3118, 3119, 3116, 3120, - 3113, 3122, 3121, 3119, 3123, 3126, 3122, 3124, 3124, 3125, - 3125, 3118, 3127, 3120, 3121, 3128, 3128, 3130, 3132, 3117, - 3126, 3135, 3135, 3138, 3123, 3136, 3136, 3137, 3139, 3141, - 3143, 3127, 3130, 3140, 3139, 3137, 3132, 3142, 3149, 3140, - 3144, 3150, 3138, 3141, 3152, 3144, 3145, 3145, 3155, 3143, - 3142, 3146, 3146, 3153, 3157, 3156, 3158, 3153, 3152, 3149, - 3156, 3150, 3159, 3160, 3166, 3161, 3162, 3167, 3155, 3158, - 3161, 3162, 3168, 3157, 3171, 3159, 3163, 3163, 3169, 3169, - 3171, 3170, 3160, 3176, 3166, 3167, 3170, 3172, 3172, 3173, + 3115, 3109, 3111, 3119, 3121, 3121, 3122, 3108, 3112, 3123, + 3123, 3114, 3127, 3120, 3124, 3124, 3128, 3119, 3125, 3125, + 3126, 3126, 3129, 3130, 3131, 3129, 3132, 3133, 3130, 3131, + 3135, 3127, 3134, 3136, 3137, 3138, 3128, 3141, 3134, 3137, + 3139, 3139, 3133, 3142, 3135, 3136, 3140, 3140, 3143, 3143, + 3145, 3132, 3141, 3147, 3153, 3138, 3150, 3150, 3151, 3151, + 3152, 3154, 3142, 3155, 3156, 3145, 3157, 3154, 3152, 3155, + 3158, 3147, 3159, 3153, 3160, 3160, 3164, 3159, 3156, 3157, + 3161, 3161, 3165, 3168, 3167, 3170, 3171, 3168, 3172, 3158, + 3173, 3171, 3175, 3174, 3176, 3177, 3181, 3164, 3167, 3176, - 3174, 3168, 3175, 3177, 3173, 3174, 3184, 3175, 3180, 3177, - 3179, 3179, 3176, 3180, 3181, 3181, 3183, 3185, 3186, 3187, - 3183, 3188, 3189, 3190, 3185, 3184, 0, 3188, 3192, 3192, - 3194, 3194, 3197, 3195, 3196, 3198, 3190, 3186, 3187, 3196, - 3199, 3189, 3195, 3200, 3200, 3195, 3202, 3201, 3204, 3205, - 3205, 3197, 3201, 3199, 3198, 0, 3206, 3207, 3207, 3202, - 3208, 3208, 3209, 3210, 3211, 3212, 3212, 3209, 3213, 3214, - 3210, 3214, 3216, 3213, 3204, 3206, 3215, 3215, 3217, 3216, - 3218, 3219, 3220, 3211, 3223, 3217, 3219, 3222, 3222, 3225, - 3226, 3227, 3228, 3232, 3225, 3226, 3229, 3229, 3233, 3218, + 3177, 3182, 3165, 3173, 3183, 3170, 3174, 3172, 3178, 3178, + 3185, 3175, 3184, 3184, 3186, 3185, 3181, 3187, 3187, 3182, + 3186, 3188, 3189, 3183, 3190, 3191, 3188, 3189, 3192, 3190, + 3194, 3194, 3195, 3199, 3192, 3196, 3196, 3195, 3198, 3200, + 3201, 3202, 3198, 3203, 3191, 3204, 3200, 3212, 3205, 3203, + 3207, 3207, 3199, 3209, 3209, 3213, 3210, 3211, 3214, 3201, + 3202, 3205, 3211, 3217, 3204, 3210, 3212, 3216, 3210, 3215, + 3215, 3214, 3216, 3219, 3213, 3221, 3217, 3220, 3220, 3222, + 3222, 3223, 3223, 3224, 3225, 3226, 3227, 3227, 3224, 0, + 3228, 3225, 3230, 3230, 3221, 3228, 3229, 3233, 3229, 3219, - 0, 3220, 0, 3223, 3231, 3231, 3234, 3234, 3235, 3235, - 3227, 3228, 3232, 3236, 3238, 3238, 3240, 3233, 3239, 3239, - 3236, 3242, 3245, 3240, 3246, 3247, 3242, 3245, 3248, 3248, - 3249, 3249, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3246, 3247, 3253, 3253, 3253, 3253, 3253, - 3253, 3253, 3254, 3254, 3254, 3254, 3254, 3254, 3254, 3255, - 3255, 3255, 3255, 3255, 3255, 3255, 3256, 3256, 3256, 3256, - 3256, 3256, 3256, 3257, 3257, 3257, 3257, 3257, 3257, 3257, - 3258, 3258, 3258, 3258, 3258, 3258, 3258, 3259, 3259, 3259, - 3259, 3259, 3259, 3259, 3261, 3261, 0, 3261, 3261, 3261, + 3231, 3232, 3235, 3238, 3226, 3234, 3242, 3231, 3232, 3240, + 3234, 3237, 3237, 3241, 3240, 3243, 3233, 3247, 3241, 3244, + 3244, 3235, 3238, 3246, 3246, 3242, 3248, 3249, 3249, 3250, + 3250, 3251, 3253, 3253, 3243, 3255, 3247, 3261, 3251, 3254, + 3254, 3257, 3255, 3260, 3262, 3248, 3257, 0, 3260, 3263, + 3263, 3264, 3264, 0, 0, 0, 3261, 0, 0, 0, + 0, 0, 0, 3262, 3268, 3268, 3268, 3268, 3268, 3268, + 3268, 3269, 3269, 3269, 3269, 3269, 3269, 3269, 3270, 3270, + 3270, 3270, 3270, 3270, 3270, 3271, 3271, 3271, 3271, 3271, + 3271, 3271, 3272, 3272, 3272, 3272, 3272, 3272, 3272, 3273, - 3261, 3262, 3262, 0, 0, 0, 3262, 3262, 3263, 3263, - 0, 0, 3263, 0, 3263, 3264, 0, 0, 0, 0, - 0, 3264, 3265, 3265, 0, 0, 0, 3265, 3265, 3266, - 0, 0, 0, 0, 0, 3266, 3267, 3267, 0, 3267, - 3267, 3267, 3267, 3268, 0, 0, 0, 0, 0, 3268, - 3269, 3269, 0, 0, 0, 3269, 3269, 3270, 3270, 0, - 3270, 3270, 3270, 3270, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, - 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, 3252, + 3273, 3273, 3273, 3273, 3273, 3273, 3274, 3274, 3274, 3274, + 3274, 3274, 3274, 3276, 3276, 0, 3276, 3276, 3276, 3276, + 3277, 3277, 0, 0, 0, 3277, 3277, 3278, 3278, 0, + 0, 3278, 0, 3278, 3279, 0, 0, 0, 0, 0, + 3279, 3280, 3280, 0, 0, 0, 3280, 3280, 3281, 0, + 0, 0, 0, 0, 3281, 3282, 3282, 0, 3282, 3282, + 3282, 3282, 3283, 0, 0, 0, 0, 0, 3283, 3284, + 3284, 0, 0, 0, 3284, 3284, 3285, 3285, 0, 3285, + 3285, 3285, 3285, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, - 3252, 3252, 3252, 3252, 3252 + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, 3267, + 3267, 3267, 3267, 3267 } ; static yy_state_type yy_last_accepting_state; @@ -3112,7 +3121,7 @@ static void config_end_include(void) } #endif -#line 3114 "" +#line 3122 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3121,9 +3130,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3123 "" +#line 3131 "" -#line 3125 "" +#line 3133 "" #define INITIAL 0 #define quotedstring 1 @@ -3347,7 +3356,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3349 "" +#line 3357 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3380,13 +3389,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6365 ); + while ( yy_base[yy_current_state] != 6384 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3666,17 +3675,17 @@ YY_RULE_SETUP case 51: YY_RULE_SETUP #line 265 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSTEMD) } +{ YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } YY_BREAK case 52: YY_RULE_SETUP #line 266 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_DAEMONIZE) } +{ YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 53: YY_RULE_SETUP #line 267 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE) } +{ YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 54: YY_RULE_SETUP @@ -3686,217 +3695,217 @@ YY_RULE_SETUP case 55: YY_RULE_SETUP #line 269 "./util/configlexer.lex" -{ YDVAR(1, VAR_OUTGOING_INTERFACE) } +{ YDVAR(1, VAR_INTERFACE) } YY_BREAK case 56: YY_RULE_SETUP #line 270 "./util/configlexer.lex" -{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } +{ YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 57: YY_RULE_SETUP #line 271 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_RCVBUF) } +{ YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 58: YY_RULE_SETUP #line 272 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_SNDBUF) } +{ YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 59: YY_RULE_SETUP #line 273 "./util/configlexer.lex" -{ YDVAR(1, VAR_SO_REUSEPORT) } +{ YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 60: YY_RULE_SETUP #line 274 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_TRANSPARENT) } +{ YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 61: YY_RULE_SETUP #line 275 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_FREEBIND) } +{ YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 62: YY_RULE_SETUP #line 276 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_DSCP) } +{ YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 63: YY_RULE_SETUP #line 277 "./util/configlexer.lex" -{ YDVAR(1, VAR_CHROOT) } +{ YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 64: YY_RULE_SETUP #line 278 "./util/configlexer.lex" -{ YDVAR(1, VAR_USERNAME) } +{ YDVAR(1, VAR_CHROOT) } YY_BREAK case 65: YY_RULE_SETUP #line 279 "./util/configlexer.lex" -{ YDVAR(1, VAR_DIRECTORY) } +{ YDVAR(1, VAR_USERNAME) } YY_BREAK case 66: YY_RULE_SETUP #line 280 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOGFILE) } +{ YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 67: YY_RULE_SETUP #line 281 "./util/configlexer.lex" -{ YDVAR(1, VAR_PIDFILE) } +{ YDVAR(1, VAR_LOGFILE) } YY_BREAK case 68: YY_RULE_SETUP #line 282 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_HINTS) } +{ YDVAR(1, VAR_PIDFILE) } YY_BREAK case 69: YY_RULE_SETUP #line 283 "./util/configlexer.lex" -{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } +{ YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 70: YY_RULE_SETUP #line 284 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } +{ YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 71: YY_RULE_SETUP #line 285 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } +{ YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 72: YY_RULE_SETUP #line 286 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 73: YY_RULE_SETUP #line 287 "./util/configlexer.lex" -{ YDVAR(1, VAR_MSG_CACHE_SLABS) } +{ YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 74: YY_RULE_SETUP #line 288 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } +{ YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 75: YY_RULE_SETUP #line 289 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } +{ YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 76: YY_RULE_SETUP #line 290 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_TTL) } +{ YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 77: YY_RULE_SETUP #line 291 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 78: YY_RULE_SETUP #line 292 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHE_MIN_TTL) } +{ YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 79: YY_RULE_SETUP #line 293 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_HOST_TTL) } +{ YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 80: YY_RULE_SETUP #line 294 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_LAME_TTL) } +{ YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 81: YY_RULE_SETUP #line 295 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } +{ YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 82: YY_RULE_SETUP #line 296 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } +{ YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 83: YY_RULE_SETUP #line 297 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } +{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 84: YY_RULE_SETUP #line 298 "./util/configlexer.lex" -{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } +{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 85: YY_RULE_SETUP #line 299 "./util/configlexer.lex" -{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } +{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 86: YY_RULE_SETUP #line 300 "./util/configlexer.lex" -{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } +{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 87: YY_RULE_SETUP #line 301 "./util/configlexer.lex" -{ YDVAR(1, VAR_DELAY_CLOSE) } +{ YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 88: YY_RULE_SETUP #line 302 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 89: YY_RULE_SETUP #line 303 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 98: YY_RULE_SETUP @@ -3906,72 +3915,72 @@ YY_RULE_SETUP case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 100: YY_RULE_SETUP #line 314 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 113: YY_RULE_SETUP @@ -3981,32 +3990,32 @@ YY_RULE_SETUP case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 115: YY_RULE_SETUP #line 329 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 120: YY_RULE_SETUP @@ -4016,47 +4025,47 @@ YY_RULE_SETUP case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 122: YY_RULE_SETUP #line 336 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 130: YY_RULE_SETUP @@ -4066,701 +4075,701 @@ YY_RULE_SETUP case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 132: YY_RULE_SETUP #line 346 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 185: YY_RULE_SETUP -#line 400 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 399 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 186: YY_RULE_SETUP #line 401 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 187: YY_RULE_SETUP #line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 188: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 189: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 190: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 245: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 246: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 247: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 248: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 249: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 250: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 251: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 252: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 471 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 253: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 254: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 255: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 477 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 256: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 257: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 258: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 259: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 260: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 269: YY_RULE_SETUP @@ -4775,99 +4784,99 @@ YY_RULE_SETUP case 271: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 272: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 282: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" +#line 505 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 283: YY_RULE_SETUP -#line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 507 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 284: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 285: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 286: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 290: YY_RULE_SETUP @@ -4877,113 +4886,118 @@ YY_RULE_SETUP case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 292: YY_RULE_SETUP #line 517 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } YY_BREAK case 306: -/* rule 306 can match eol */ YY_RULE_SETUP #line 531 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } + YY_BREAK +case 307: +/* rule 307 can match eol */ +YY_RULE_SETUP +#line 532 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 307: +case 308: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 535 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 535 "./util/configlexer.lex" +#line 536 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 308: -YY_RULE_SETUP -#line 540 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 541 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 542 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 544 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4996,34 +5010,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 311: +case 312: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 556 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 556 "./util/configlexer.lex" +#line 557 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 312: -YY_RULE_SETUP -#line 561 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 313: -/* rule 313 can match eol */ YY_RULE_SETUP #line 562 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 314: +/* rule 314 can match eol */ +YY_RULE_SETUP +#line 563 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 565 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5036,38 +5050,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 315: +case 316: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 577 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 316: -YY_RULE_SETUP -#line 582 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 317: -/* rule 317 can match eol */ YY_RULE_SETUP #line 583 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 318: +/* rule 318 can match eol */ YY_RULE_SETUP #line 584 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 319: YY_RULE_SETUP #line 585 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 320: +YY_RULE_SETUP +#line 586 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5075,27 +5089,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 590 "./util/configlexer.lex" +#line 591 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 320: -YY_RULE_SETUP -#line 594 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 321: -/* rule 321 can match eol */ YY_RULE_SETUP #line 595 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 322: +/* rule 322 can match eol */ +YY_RULE_SETUP +#line 596 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 322: +case 323: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 598 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5105,7 +5119,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5120,39 +5134,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 323: +case 324: YY_RULE_SETUP -#line 617 "./util/configlexer.lex" +#line 618 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 620 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 324: -YY_RULE_SETUP -#line 624 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 325: -/* rule 325 can match eol */ YY_RULE_SETUP #line 625 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 326: +/* rule 326 can match eol */ YY_RULE_SETUP #line 626 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 327: YY_RULE_SETUP #line 627 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 328: +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5161,29 +5175,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 633 "./util/configlexer.lex" +#line 634 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 328: -YY_RULE_SETUP -#line 637 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 329: -/* rule 329 can match eol */ YY_RULE_SETUP #line 638 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 330: +/* rule 330 can match eol */ +YY_RULE_SETUP +#line 639 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 330: +case 331: YY_RULE_SETUP -#line 642 "./util/configlexer.lex" +#line 643 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5192,33 +5206,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 331: +case 332: YY_RULE_SETUP -#line 650 "./util/configlexer.lex" +#line 651 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 332: +case 333: YY_RULE_SETUP -#line 654 "./util/configlexer.lex" +#line 655 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 333: +case 334: YY_RULE_SETUP -#line 658 "./util/configlexer.lex" +#line 659 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 334: +case 335: YY_RULE_SETUP -#line 662 "./util/configlexer.lex" +#line 663 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5220 "" +#line 5233 "" case YY_END_OF_BUFFER: { @@ -5513,7 +5527,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5541,11 +5555,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3253 ) + if ( yy_current_state >= 3268 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3252); + yy_is_jam = (yy_current_state == 3267); return yy_is_jam ? 0 : yy_current_state; } @@ -6184,6 +6198,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 662 "./util/configlexer.lex" +#line 663 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index ea7c1cf72..a4af4e8cb 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -262,6 +262,7 @@ http-max-streams{COLON} { YDVAR(1, VAR_HTTP_MAX_STREAMS) } http-query-buffer-size{COLON} { YDVAR(1, VAR_HTTP_QUERY_BUFFER_SIZE) } http-response-buffer-size{COLON} { YDVAR(1, VAR_HTTP_RESPONSE_BUFFER_SIZE) } http-nodelay{COLON} { YDVAR(1, VAR_HTTP_NODELAY) } +http-notls-downstream{COLON} { YDVAR(1, VAR_HTTP_NOTLS_DOWNSTREAM) } use-systemd{COLON} { YDVAR(1, VAR_USE_SYSTEMD) } do-daemonize{COLON} { YDVAR(1, VAR_DO_DAEMONIZE) } interface{COLON} { YDVAR(1, VAR_INTERFACE) } diff --git a/util/configparser.c b/util/configparser.c index 50788a0c5..85565951e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -279,158 +279,159 @@ extern int yydebug; VAR_HTTP_QUERY_BUFFER_SIZE = 400, VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, VAR_HTTP_NODELAY = 402, - VAR_STUB_FIRST = 403, - VAR_MINIMAL_RESPONSES = 404, - VAR_RRSET_ROUNDROBIN = 405, - VAR_MAX_UDP_SIZE = 406, - VAR_DELAY_CLOSE = 407, - VAR_UNBLOCK_LAN_ZONES = 408, - VAR_INSECURE_LAN_ZONES = 409, - VAR_INFRA_CACHE_MIN_RTT = 410, - VAR_DNS64_PREFIX = 411, - VAR_DNS64_SYNTHALL = 412, - VAR_DNS64_IGNORE_AAAA = 413, - VAR_DNSTAP = 414, - VAR_DNSTAP_ENABLE = 415, - VAR_DNSTAP_SOCKET_PATH = 416, - VAR_DNSTAP_IP = 417, - VAR_DNSTAP_TLS = 418, - VAR_DNSTAP_TLS_SERVER_NAME = 419, - VAR_DNSTAP_TLS_CERT_BUNDLE = 420, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 421, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 422, - VAR_DNSTAP_SEND_IDENTITY = 423, - VAR_DNSTAP_SEND_VERSION = 424, - VAR_DNSTAP_BIDIRECTIONAL = 425, - VAR_DNSTAP_IDENTITY = 426, - VAR_DNSTAP_VERSION = 427, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 428, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 429, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 433, - VAR_RESPONSE_IP_TAG = 434, - VAR_RESPONSE_IP = 435, - VAR_RESPONSE_IP_DATA = 436, - VAR_HARDEN_ALGO_DOWNGRADE = 437, - VAR_IP_TRANSPARENT = 438, - VAR_IP_DSCP = 439, - VAR_DISABLE_DNSSEC_LAME_CHECK = 440, - VAR_IP_RATELIMIT = 441, - VAR_IP_RATELIMIT_SLABS = 442, - VAR_IP_RATELIMIT_SIZE = 443, - VAR_RATELIMIT = 444, - VAR_RATELIMIT_SLABS = 445, - VAR_RATELIMIT_SIZE = 446, - VAR_RATELIMIT_FOR_DOMAIN = 447, - VAR_RATELIMIT_BELOW_DOMAIN = 448, - VAR_IP_RATELIMIT_FACTOR = 449, - VAR_RATELIMIT_FACTOR = 450, - VAR_SEND_CLIENT_SUBNET = 451, - VAR_CLIENT_SUBNET_ZONE = 452, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 453, - VAR_CLIENT_SUBNET_OPCODE = 454, - VAR_MAX_CLIENT_SUBNET_IPV4 = 455, - VAR_MAX_CLIENT_SUBNET_IPV6 = 456, - VAR_MIN_CLIENT_SUBNET_IPV4 = 457, - VAR_MIN_CLIENT_SUBNET_IPV6 = 458, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 459, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 460, - VAR_CAPS_WHITELIST = 461, - VAR_CACHE_MAX_NEGATIVE_TTL = 462, - VAR_PERMIT_SMALL_HOLDDOWN = 463, - VAR_QNAME_MINIMISATION = 464, - VAR_QNAME_MINIMISATION_STRICT = 465, - VAR_IP_FREEBIND = 466, - VAR_DEFINE_TAG = 467, - VAR_LOCAL_ZONE_TAG = 468, - VAR_ACCESS_CONTROL_TAG = 469, - VAR_LOCAL_ZONE_OVERRIDE = 470, - VAR_ACCESS_CONTROL_TAG_ACTION = 471, - VAR_ACCESS_CONTROL_TAG_DATA = 472, - VAR_VIEW = 473, - VAR_ACCESS_CONTROL_VIEW = 474, - VAR_VIEW_FIRST = 475, - VAR_SERVE_EXPIRED = 476, - VAR_SERVE_EXPIRED_TTL = 477, - VAR_SERVE_EXPIRED_TTL_RESET = 478, - VAR_SERVE_EXPIRED_REPLY_TTL = 479, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 480, - VAR_FAKE_DSA = 481, - VAR_FAKE_SHA1 = 482, - VAR_LOG_IDENTITY = 483, - VAR_HIDE_TRUSTANCHOR = 484, - VAR_TRUST_ANCHOR_SIGNALING = 485, - VAR_AGGRESSIVE_NSEC = 486, - VAR_USE_SYSTEMD = 487, - VAR_SHM_ENABLE = 488, - VAR_SHM_KEY = 489, - VAR_ROOT_KEY_SENTINEL = 490, - VAR_DNSCRYPT = 491, - VAR_DNSCRYPT_ENABLE = 492, - VAR_DNSCRYPT_PORT = 493, - VAR_DNSCRYPT_PROVIDER = 494, - VAR_DNSCRYPT_SECRET_KEY = 495, - VAR_DNSCRYPT_PROVIDER_CERT = 496, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 497, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 498, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 499, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 500, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 501, - VAR_IPSECMOD_ENABLED = 502, - VAR_IPSECMOD_HOOK = 503, - VAR_IPSECMOD_IGNORE_BOGUS = 504, - VAR_IPSECMOD_MAX_TTL = 505, - VAR_IPSECMOD_WHITELIST = 506, - VAR_IPSECMOD_STRICT = 507, - VAR_CACHEDB = 508, - VAR_CACHEDB_BACKEND = 509, - VAR_CACHEDB_SECRETSEED = 510, - VAR_CACHEDB_REDISHOST = 511, - VAR_CACHEDB_REDISPORT = 512, - VAR_CACHEDB_REDISTIMEOUT = 513, - VAR_CACHEDB_REDISEXPIRERECORDS = 514, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 515, - VAR_FOR_UPSTREAM = 516, - VAR_AUTH_ZONE = 517, - VAR_ZONEFILE = 518, - VAR_MASTER = 519, - VAR_URL = 520, - VAR_FOR_DOWNSTREAM = 521, - VAR_FALLBACK_ENABLED = 522, - VAR_TLS_ADDITIONAL_PORT = 523, - VAR_LOW_RTT = 524, - VAR_LOW_RTT_PERMIL = 525, - VAR_FAST_SERVER_PERMIL = 526, - VAR_FAST_SERVER_NUM = 527, - VAR_ALLOW_NOTIFY = 528, - VAR_TLS_WIN_CERT = 529, - VAR_TCP_CONNECTION_LIMIT = 530, - VAR_FORWARD_NO_CACHE = 531, - VAR_STUB_NO_CACHE = 532, - VAR_LOG_SERVFAIL = 533, - VAR_DENY_ANY = 534, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 535, - VAR_LOG_TAG_QUERYREPLY = 536, - VAR_STREAM_WAIT_SIZE = 537, - VAR_TLS_CIPHERS = 538, - VAR_TLS_CIPHERSUITES = 539, - VAR_TLS_USE_SNI = 540, - VAR_IPSET = 541, - VAR_IPSET_NAME_V4 = 542, - VAR_IPSET_NAME_V6 = 543, - VAR_TLS_SESSION_TICKET_KEYS = 544, - VAR_RPZ = 545, - VAR_TAGS = 546, - VAR_RPZ_ACTION_OVERRIDE = 547, - VAR_RPZ_CNAME_OVERRIDE = 548, - VAR_RPZ_LOG = 549, - VAR_RPZ_LOG_NAME = 550, - VAR_DYNLIB = 551, - VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UNBLOCK_LAN_ZONES = 409, + VAR_INSECURE_LAN_ZONES = 410, + VAR_INFRA_CACHE_MIN_RTT = 411, + VAR_DNS64_PREFIX = 412, + VAR_DNS64_SYNTHALL = 413, + VAR_DNS64_IGNORE_AAAA = 414, + VAR_DNSTAP = 415, + VAR_DNSTAP_ENABLE = 416, + VAR_DNSTAP_SOCKET_PATH = 417, + VAR_DNSTAP_IP = 418, + VAR_DNSTAP_TLS = 419, + VAR_DNSTAP_TLS_SERVER_NAME = 420, + VAR_DNSTAP_TLS_CERT_BUNDLE = 421, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 422, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 423, + VAR_DNSTAP_SEND_IDENTITY = 424, + VAR_DNSTAP_SEND_VERSION = 425, + VAR_DNSTAP_BIDIRECTIONAL = 426, + VAR_DNSTAP_IDENTITY = 427, + VAR_DNSTAP_VERSION = 428, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 429, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 430, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 434, + VAR_RESPONSE_IP_TAG = 435, + VAR_RESPONSE_IP = 436, + VAR_RESPONSE_IP_DATA = 437, + VAR_HARDEN_ALGO_DOWNGRADE = 438, + VAR_IP_TRANSPARENT = 439, + VAR_IP_DSCP = 440, + VAR_DISABLE_DNSSEC_LAME_CHECK = 441, + VAR_IP_RATELIMIT = 442, + VAR_IP_RATELIMIT_SLABS = 443, + VAR_IP_RATELIMIT_SIZE = 444, + VAR_RATELIMIT = 445, + VAR_RATELIMIT_SLABS = 446, + VAR_RATELIMIT_SIZE = 447, + VAR_RATELIMIT_FOR_DOMAIN = 448, + VAR_RATELIMIT_BELOW_DOMAIN = 449, + VAR_IP_RATELIMIT_FACTOR = 450, + VAR_RATELIMIT_FACTOR = 451, + VAR_SEND_CLIENT_SUBNET = 452, + VAR_CLIENT_SUBNET_ZONE = 453, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 454, + VAR_CLIENT_SUBNET_OPCODE = 455, + VAR_MAX_CLIENT_SUBNET_IPV4 = 456, + VAR_MAX_CLIENT_SUBNET_IPV6 = 457, + VAR_MIN_CLIENT_SUBNET_IPV4 = 458, + VAR_MIN_CLIENT_SUBNET_IPV6 = 459, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 460, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 461, + VAR_CAPS_WHITELIST = 462, + VAR_CACHE_MAX_NEGATIVE_TTL = 463, + VAR_PERMIT_SMALL_HOLDDOWN = 464, + VAR_QNAME_MINIMISATION = 465, + VAR_QNAME_MINIMISATION_STRICT = 466, + VAR_IP_FREEBIND = 467, + VAR_DEFINE_TAG = 468, + VAR_LOCAL_ZONE_TAG = 469, + VAR_ACCESS_CONTROL_TAG = 470, + VAR_LOCAL_ZONE_OVERRIDE = 471, + VAR_ACCESS_CONTROL_TAG_ACTION = 472, + VAR_ACCESS_CONTROL_TAG_DATA = 473, + VAR_VIEW = 474, + VAR_ACCESS_CONTROL_VIEW = 475, + VAR_VIEW_FIRST = 476, + VAR_SERVE_EXPIRED = 477, + VAR_SERVE_EXPIRED_TTL = 478, + VAR_SERVE_EXPIRED_TTL_RESET = 479, + VAR_SERVE_EXPIRED_REPLY_TTL = 480, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 481, + VAR_FAKE_DSA = 482, + VAR_FAKE_SHA1 = 483, + VAR_LOG_IDENTITY = 484, + VAR_HIDE_TRUSTANCHOR = 485, + VAR_TRUST_ANCHOR_SIGNALING = 486, + VAR_AGGRESSIVE_NSEC = 487, + VAR_USE_SYSTEMD = 488, + VAR_SHM_ENABLE = 489, + VAR_SHM_KEY = 490, + VAR_ROOT_KEY_SENTINEL = 491, + VAR_DNSCRYPT = 492, + VAR_DNSCRYPT_ENABLE = 493, + VAR_DNSCRYPT_PORT = 494, + VAR_DNSCRYPT_PROVIDER = 495, + VAR_DNSCRYPT_SECRET_KEY = 496, + VAR_DNSCRYPT_PROVIDER_CERT = 497, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 498, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 499, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 500, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 501, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 502, + VAR_IPSECMOD_ENABLED = 503, + VAR_IPSECMOD_HOOK = 504, + VAR_IPSECMOD_IGNORE_BOGUS = 505, + VAR_IPSECMOD_MAX_TTL = 506, + VAR_IPSECMOD_WHITELIST = 507, + VAR_IPSECMOD_STRICT = 508, + VAR_CACHEDB = 509, + VAR_CACHEDB_BACKEND = 510, + VAR_CACHEDB_SECRETSEED = 511, + VAR_CACHEDB_REDISHOST = 512, + VAR_CACHEDB_REDISPORT = 513, + VAR_CACHEDB_REDISTIMEOUT = 514, + VAR_CACHEDB_REDISEXPIRERECORDS = 515, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 516, + VAR_FOR_UPSTREAM = 517, + VAR_AUTH_ZONE = 518, + VAR_ZONEFILE = 519, + VAR_MASTER = 520, + VAR_URL = 521, + VAR_FOR_DOWNSTREAM = 522, + VAR_FALLBACK_ENABLED = 523, + VAR_TLS_ADDITIONAL_PORT = 524, + VAR_LOW_RTT = 525, + VAR_LOW_RTT_PERMIL = 526, + VAR_FAST_SERVER_PERMIL = 527, + VAR_FAST_SERVER_NUM = 528, + VAR_ALLOW_NOTIFY = 529, + VAR_TLS_WIN_CERT = 530, + VAR_TCP_CONNECTION_LIMIT = 531, + VAR_FORWARD_NO_CACHE = 532, + VAR_STUB_NO_CACHE = 533, + VAR_LOG_SERVFAIL = 534, + VAR_DENY_ANY = 535, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 536, + VAR_LOG_TAG_QUERYREPLY = 537, + VAR_STREAM_WAIT_SIZE = 538, + VAR_TLS_CIPHERS = 539, + VAR_TLS_CIPHERSUITES = 540, + VAR_TLS_USE_SNI = 541, + VAR_IPSET = 542, + VAR_IPSET_NAME_V4 = 543, + VAR_IPSET_NAME_V6 = 544, + VAR_TLS_SESSION_TICKET_KEYS = 545, + VAR_RPZ = 546, + VAR_TAGS = 547, + VAR_RPZ_ACTION_OVERRIDE = 548, + VAR_RPZ_CNAME_OVERRIDE = 549, + VAR_RPZ_LOG = 550, + VAR_RPZ_LOG_NAME = 551, + VAR_DYNLIB = 552, + VAR_DYNLIB_FILE = 553, + VAR_EDNS_CLIENT_TAG = 554, + VAR_EDNS_CLIENT_TAG_OPCODE = 555 }; #endif /* Tokens. */ @@ -579,158 +580,159 @@ extern int yydebug; #define VAR_HTTP_QUERY_BUFFER_SIZE 400 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 #define VAR_HTTP_NODELAY 402 -#define VAR_STUB_FIRST 403 -#define VAR_MINIMAL_RESPONSES 404 -#define VAR_RRSET_ROUNDROBIN 405 -#define VAR_MAX_UDP_SIZE 406 -#define VAR_DELAY_CLOSE 407 -#define VAR_UNBLOCK_LAN_ZONES 408 -#define VAR_INSECURE_LAN_ZONES 409 -#define VAR_INFRA_CACHE_MIN_RTT 410 -#define VAR_DNS64_PREFIX 411 -#define VAR_DNS64_SYNTHALL 412 -#define VAR_DNS64_IGNORE_AAAA 413 -#define VAR_DNSTAP 414 -#define VAR_DNSTAP_ENABLE 415 -#define VAR_DNSTAP_SOCKET_PATH 416 -#define VAR_DNSTAP_IP 417 -#define VAR_DNSTAP_TLS 418 -#define VAR_DNSTAP_TLS_SERVER_NAME 419 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 420 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 421 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 422 -#define VAR_DNSTAP_SEND_IDENTITY 423 -#define VAR_DNSTAP_SEND_VERSION 424 -#define VAR_DNSTAP_BIDIRECTIONAL 425 -#define VAR_DNSTAP_IDENTITY 426 -#define VAR_DNSTAP_VERSION 427 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 428 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 429 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 433 -#define VAR_RESPONSE_IP_TAG 434 -#define VAR_RESPONSE_IP 435 -#define VAR_RESPONSE_IP_DATA 436 -#define VAR_HARDEN_ALGO_DOWNGRADE 437 -#define VAR_IP_TRANSPARENT 438 -#define VAR_IP_DSCP 439 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 440 -#define VAR_IP_RATELIMIT 441 -#define VAR_IP_RATELIMIT_SLABS 442 -#define VAR_IP_RATELIMIT_SIZE 443 -#define VAR_RATELIMIT 444 -#define VAR_RATELIMIT_SLABS 445 -#define VAR_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT_FOR_DOMAIN 447 -#define VAR_RATELIMIT_BELOW_DOMAIN 448 -#define VAR_IP_RATELIMIT_FACTOR 449 -#define VAR_RATELIMIT_FACTOR 450 -#define VAR_SEND_CLIENT_SUBNET 451 -#define VAR_CLIENT_SUBNET_ZONE 452 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 453 -#define VAR_CLIENT_SUBNET_OPCODE 454 -#define VAR_MAX_CLIENT_SUBNET_IPV4 455 -#define VAR_MAX_CLIENT_SUBNET_IPV6 456 -#define VAR_MIN_CLIENT_SUBNET_IPV4 457 -#define VAR_MIN_CLIENT_SUBNET_IPV6 458 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 459 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 460 -#define VAR_CAPS_WHITELIST 461 -#define VAR_CACHE_MAX_NEGATIVE_TTL 462 -#define VAR_PERMIT_SMALL_HOLDDOWN 463 -#define VAR_QNAME_MINIMISATION 464 -#define VAR_QNAME_MINIMISATION_STRICT 465 -#define VAR_IP_FREEBIND 466 -#define VAR_DEFINE_TAG 467 -#define VAR_LOCAL_ZONE_TAG 468 -#define VAR_ACCESS_CONTROL_TAG 469 -#define VAR_LOCAL_ZONE_OVERRIDE 470 -#define VAR_ACCESS_CONTROL_TAG_ACTION 471 -#define VAR_ACCESS_CONTROL_TAG_DATA 472 -#define VAR_VIEW 473 -#define VAR_ACCESS_CONTROL_VIEW 474 -#define VAR_VIEW_FIRST 475 -#define VAR_SERVE_EXPIRED 476 -#define VAR_SERVE_EXPIRED_TTL 477 -#define VAR_SERVE_EXPIRED_TTL_RESET 478 -#define VAR_SERVE_EXPIRED_REPLY_TTL 479 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 480 -#define VAR_FAKE_DSA 481 -#define VAR_FAKE_SHA1 482 -#define VAR_LOG_IDENTITY 483 -#define VAR_HIDE_TRUSTANCHOR 484 -#define VAR_TRUST_ANCHOR_SIGNALING 485 -#define VAR_AGGRESSIVE_NSEC 486 -#define VAR_USE_SYSTEMD 487 -#define VAR_SHM_ENABLE 488 -#define VAR_SHM_KEY 489 -#define VAR_ROOT_KEY_SENTINEL 490 -#define VAR_DNSCRYPT 491 -#define VAR_DNSCRYPT_ENABLE 492 -#define VAR_DNSCRYPT_PORT 493 -#define VAR_DNSCRYPT_PROVIDER 494 -#define VAR_DNSCRYPT_SECRET_KEY 495 -#define VAR_DNSCRYPT_PROVIDER_CERT 496 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 497 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 498 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 499 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 500 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 501 -#define VAR_IPSECMOD_ENABLED 502 -#define VAR_IPSECMOD_HOOK 503 -#define VAR_IPSECMOD_IGNORE_BOGUS 504 -#define VAR_IPSECMOD_MAX_TTL 505 -#define VAR_IPSECMOD_WHITELIST 506 -#define VAR_IPSECMOD_STRICT 507 -#define VAR_CACHEDB 508 -#define VAR_CACHEDB_BACKEND 509 -#define VAR_CACHEDB_SECRETSEED 510 -#define VAR_CACHEDB_REDISHOST 511 -#define VAR_CACHEDB_REDISPORT 512 -#define VAR_CACHEDB_REDISTIMEOUT 513 -#define VAR_CACHEDB_REDISEXPIRERECORDS 514 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 515 -#define VAR_FOR_UPSTREAM 516 -#define VAR_AUTH_ZONE 517 -#define VAR_ZONEFILE 518 -#define VAR_MASTER 519 -#define VAR_URL 520 -#define VAR_FOR_DOWNSTREAM 521 -#define VAR_FALLBACK_ENABLED 522 -#define VAR_TLS_ADDITIONAL_PORT 523 -#define VAR_LOW_RTT 524 -#define VAR_LOW_RTT_PERMIL 525 -#define VAR_FAST_SERVER_PERMIL 526 -#define VAR_FAST_SERVER_NUM 527 -#define VAR_ALLOW_NOTIFY 528 -#define VAR_TLS_WIN_CERT 529 -#define VAR_TCP_CONNECTION_LIMIT 530 -#define VAR_FORWARD_NO_CACHE 531 -#define VAR_STUB_NO_CACHE 532 -#define VAR_LOG_SERVFAIL 533 -#define VAR_DENY_ANY 534 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 535 -#define VAR_LOG_TAG_QUERYREPLY 536 -#define VAR_STREAM_WAIT_SIZE 537 -#define VAR_TLS_CIPHERS 538 -#define VAR_TLS_CIPHERSUITES 539 -#define VAR_TLS_USE_SNI 540 -#define VAR_IPSET 541 -#define VAR_IPSET_NAME_V4 542 -#define VAR_IPSET_NAME_V6 543 -#define VAR_TLS_SESSION_TICKET_KEYS 544 -#define VAR_RPZ 545 -#define VAR_TAGS 546 -#define VAR_RPZ_ACTION_OVERRIDE 547 -#define VAR_RPZ_CNAME_OVERRIDE 548 -#define VAR_RPZ_LOG 549 -#define VAR_RPZ_LOG_NAME 550 -#define VAR_DYNLIB 551 -#define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_HTTP_NOTLS_DOWNSTREAM 403 +#define VAR_STUB_FIRST 404 +#define VAR_MINIMAL_RESPONSES 405 +#define VAR_RRSET_ROUNDROBIN 406 +#define VAR_MAX_UDP_SIZE 407 +#define VAR_DELAY_CLOSE 408 +#define VAR_UNBLOCK_LAN_ZONES 409 +#define VAR_INSECURE_LAN_ZONES 410 +#define VAR_INFRA_CACHE_MIN_RTT 411 +#define VAR_DNS64_PREFIX 412 +#define VAR_DNS64_SYNTHALL 413 +#define VAR_DNS64_IGNORE_AAAA 414 +#define VAR_DNSTAP 415 +#define VAR_DNSTAP_ENABLE 416 +#define VAR_DNSTAP_SOCKET_PATH 417 +#define VAR_DNSTAP_IP 418 +#define VAR_DNSTAP_TLS 419 +#define VAR_DNSTAP_TLS_SERVER_NAME 420 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 421 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 422 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 423 +#define VAR_DNSTAP_SEND_IDENTITY 424 +#define VAR_DNSTAP_SEND_VERSION 425 +#define VAR_DNSTAP_BIDIRECTIONAL 426 +#define VAR_DNSTAP_IDENTITY 427 +#define VAR_DNSTAP_VERSION 428 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 429 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 430 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 434 +#define VAR_RESPONSE_IP_TAG 435 +#define VAR_RESPONSE_IP 436 +#define VAR_RESPONSE_IP_DATA 437 +#define VAR_HARDEN_ALGO_DOWNGRADE 438 +#define VAR_IP_TRANSPARENT 439 +#define VAR_IP_DSCP 440 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 441 +#define VAR_IP_RATELIMIT 442 +#define VAR_IP_RATELIMIT_SLABS 443 +#define VAR_IP_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT 445 +#define VAR_RATELIMIT_SLABS 446 +#define VAR_RATELIMIT_SIZE 447 +#define VAR_RATELIMIT_FOR_DOMAIN 448 +#define VAR_RATELIMIT_BELOW_DOMAIN 449 +#define VAR_IP_RATELIMIT_FACTOR 450 +#define VAR_RATELIMIT_FACTOR 451 +#define VAR_SEND_CLIENT_SUBNET 452 +#define VAR_CLIENT_SUBNET_ZONE 453 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 454 +#define VAR_CLIENT_SUBNET_OPCODE 455 +#define VAR_MAX_CLIENT_SUBNET_IPV4 456 +#define VAR_MAX_CLIENT_SUBNET_IPV6 457 +#define VAR_MIN_CLIENT_SUBNET_IPV4 458 +#define VAR_MIN_CLIENT_SUBNET_IPV6 459 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 460 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 461 +#define VAR_CAPS_WHITELIST 462 +#define VAR_CACHE_MAX_NEGATIVE_TTL 463 +#define VAR_PERMIT_SMALL_HOLDDOWN 464 +#define VAR_QNAME_MINIMISATION 465 +#define VAR_QNAME_MINIMISATION_STRICT 466 +#define VAR_IP_FREEBIND 467 +#define VAR_DEFINE_TAG 468 +#define VAR_LOCAL_ZONE_TAG 469 +#define VAR_ACCESS_CONTROL_TAG 470 +#define VAR_LOCAL_ZONE_OVERRIDE 471 +#define VAR_ACCESS_CONTROL_TAG_ACTION 472 +#define VAR_ACCESS_CONTROL_TAG_DATA 473 +#define VAR_VIEW 474 +#define VAR_ACCESS_CONTROL_VIEW 475 +#define VAR_VIEW_FIRST 476 +#define VAR_SERVE_EXPIRED 477 +#define VAR_SERVE_EXPIRED_TTL 478 +#define VAR_SERVE_EXPIRED_TTL_RESET 479 +#define VAR_SERVE_EXPIRED_REPLY_TTL 480 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 481 +#define VAR_FAKE_DSA 482 +#define VAR_FAKE_SHA1 483 +#define VAR_LOG_IDENTITY 484 +#define VAR_HIDE_TRUSTANCHOR 485 +#define VAR_TRUST_ANCHOR_SIGNALING 486 +#define VAR_AGGRESSIVE_NSEC 487 +#define VAR_USE_SYSTEMD 488 +#define VAR_SHM_ENABLE 489 +#define VAR_SHM_KEY 490 +#define VAR_ROOT_KEY_SENTINEL 491 +#define VAR_DNSCRYPT 492 +#define VAR_DNSCRYPT_ENABLE 493 +#define VAR_DNSCRYPT_PORT 494 +#define VAR_DNSCRYPT_PROVIDER 495 +#define VAR_DNSCRYPT_SECRET_KEY 496 +#define VAR_DNSCRYPT_PROVIDER_CERT 497 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 498 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 499 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 500 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 501 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 502 +#define VAR_IPSECMOD_ENABLED 503 +#define VAR_IPSECMOD_HOOK 504 +#define VAR_IPSECMOD_IGNORE_BOGUS 505 +#define VAR_IPSECMOD_MAX_TTL 506 +#define VAR_IPSECMOD_WHITELIST 507 +#define VAR_IPSECMOD_STRICT 508 +#define VAR_CACHEDB 509 +#define VAR_CACHEDB_BACKEND 510 +#define VAR_CACHEDB_SECRETSEED 511 +#define VAR_CACHEDB_REDISHOST 512 +#define VAR_CACHEDB_REDISPORT 513 +#define VAR_CACHEDB_REDISTIMEOUT 514 +#define VAR_CACHEDB_REDISEXPIRERECORDS 515 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 516 +#define VAR_FOR_UPSTREAM 517 +#define VAR_AUTH_ZONE 518 +#define VAR_ZONEFILE 519 +#define VAR_MASTER 520 +#define VAR_URL 521 +#define VAR_FOR_DOWNSTREAM 522 +#define VAR_FALLBACK_ENABLED 523 +#define VAR_TLS_ADDITIONAL_PORT 524 +#define VAR_LOW_RTT 525 +#define VAR_LOW_RTT_PERMIL 526 +#define VAR_FAST_SERVER_PERMIL 527 +#define VAR_FAST_SERVER_NUM 528 +#define VAR_ALLOW_NOTIFY 529 +#define VAR_TLS_WIN_CERT 530 +#define VAR_TCP_CONNECTION_LIMIT 531 +#define VAR_FORWARD_NO_CACHE 532 +#define VAR_STUB_NO_CACHE 533 +#define VAR_LOG_SERVFAIL 534 +#define VAR_DENY_ANY 535 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 536 +#define VAR_LOG_TAG_QUERYREPLY 537 +#define VAR_STREAM_WAIT_SIZE 538 +#define VAR_TLS_CIPHERS 539 +#define VAR_TLS_CIPHERSUITES 540 +#define VAR_TLS_USE_SNI 541 +#define VAR_IPSET 542 +#define VAR_IPSET_NAME_V4 543 +#define VAR_IPSET_NAME_V6 544 +#define VAR_TLS_SESSION_TICKET_KEYS 545 +#define VAR_RPZ 546 +#define VAR_TAGS 547 +#define VAR_RPZ_ACTION_OVERRIDE 548 +#define VAR_RPZ_CNAME_OVERRIDE 549 +#define VAR_RPZ_LOG 550 +#define VAR_RPZ_LOG_NAME 551 +#define VAR_DYNLIB 552 +#define VAR_DYNLIB_FILE 553 +#define VAR_EDNS_CLIENT_TAG 554 +#define VAR_EDNS_CLIENT_TAG_OPCODE 555 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -740,7 +742,7 @@ union YYSTYPE char* str; -#line 744 "util/configparser.c" +#line 746 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -990,19 +992,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 635 +#define YYLAST 637 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 300 +#define YYNTOKENS 301 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 325 +#define YYNNTS 326 /* YYNRULES -- Number of rules. */ -#define YYNRULES 626 +#define YYNRULES 628 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 930 +#define YYNSTATES 933 #define YYUNDEFTOK 2 -#define YYMAXUTOK 554 +#define YYMAXUTOK 555 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1068,7 +1070,7 @@ static const yytype_uint16 yytranslate[] = 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 + 295, 296, 297, 298, 299, 300 }; #if YYDEBUG @@ -1088,56 +1090,56 @@ static const yytype_uint16 yyrline[] = 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 247, 248, 249, 249, 249, 250, 250, 250, - 251, 251, 252, 253, 253, 253, 254, 254, 255, 255, - 256, 256, 256, 257, 257, 258, 258, 258, 259, 260, - 260, 261, 261, 262, 263, 263, 264, 264, 265, 265, - 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, - 271, 272, 272, 272, 273, 273, 274, 274, 275, 275, - 276, 276, 277, 277, 278, 278, 279, 279, 279, 280, - 280, 280, 281, 281, 281, 282, 282, 283, 284, 284, - 285, 285, 286, 286, 287, 287, 288, 288, 288, 289, - 289, 289, 290, 290, 290, 291, 291, 292, 292, 293, - 293, 294, 294, 295, 297, 309, 310, 311, 311, 311, - 311, 311, 312, 312, 314, 326, 327, 328, 328, 328, - 328, 329, 329, 331, 345, 346, 347, 347, 347, 347, - 348, 348, 348, 350, 367, 368, 369, 369, 369, 369, - 370, 370, 370, 371, 374, 393, 410, 418, 428, 436, - 453, 454, 455, 455, 455, 455, 455, 456, 456, 456, - 457, 457, 459, 468, 477, 488, 497, 506, 515, 526, - 535, 547, 561, 576, 587, 604, 621, 638, 655, 670, - 685, 698, 713, 722, 731, 740, 749, 758, 767, 776, - 785, 794, 803, 812, 821, 830, 839, 852, 861, 874, - 883, 892, 901, 908, 915, 924, 931, 940, 948, 955, - 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, 1044, - 1053, 1067, 1076, 1085, 1094, 1103, 1112, 1121, 1128, 1135, - 1161, 1169, 1176, 1183, 1190, 1197, 1205, 1213, 1221, 1228, - 1239, 1250, 1257, 1266, 1275, 1284, 1291, 1298, 1306, 1314, - 1324, 1334, 1344, 1358, 1366, 1379, 1390, 1398, 1411, 1420, - 1429, 1438, 1448, 1458, 1466, 1479, 1488, 1496, 1505, 1513, - 1526, 1535, 1542, 1552, 1562, 1572, 1582, 1592, 1602, 1612, - 1622, 1629, 1636, 1643, 1652, 1661, 1670, 1679, 1686, 1696, - 1716, 1723, 1741, 1754, 1767, 1776, 1785, 1794, 1803, 1813, - 1823, 1834, 1843, 1852, 1861, 1870, 1879, 1888, 1901, 1914, - 1923, 1930, 1939, 1948, 1957, 1966, 1974, 1987, 1995, 2036, - 2043, 2058, 2068, 2078, 2085, 2092, 2099, 2108, 2116, 2130, - 2151, 2172, 2184, 2196, 2208, 2217, 2238, 2248, 2257, 2265, - 2273, 2286, 2299, 2314, 2329, 2338, 2347, 2353, 2362, 2371, - 2381, 2391, 2404, 2417, 2429, 2443, 2455, 2469, 2484, 2495, - 2505, 2512, 2519, 2528, 2537, 2547, 2557, 2567, 2574, 2581, - 2590, 2599, 2609, 2619, 2626, 2633, 2640, 2648, 2658, 2668, - 2678, 2688, 2727, 2737, 2745, 2753, 2768, 2777, 2782, 2783, - 2784, 2784, 2784, 2785, 2785, 2785, 2786, 2786, 2788, 2798, - 2807, 2814, 2821, 2828, 2835, 2842, 2849, 2854, 2855, 2856, - 2856, 2856, 2857, 2857, 2857, 2858, 2859, 2859, 2860, 2860, - 2861, 2861, 2862, 2863, 2864, 2865, 2866, 2867, 2869, 2878, - 2888, 2895, 2902, 2911, 2918, 2925, 2932, 2939, 2948, 2957, - 2964, 2971, 2981, 2991, 3001, 3011, 3021, 3031, 3036, 3037, - 3038, 3040, 3046, 3051, 3052, 3053, 3055, 3061, 3071, 3078, - 3087, 3095, 3100, 3101, 3103, 3103, 3103, 3104, 3104, 3105, - 3106, 3107, 3108, 3109, 3111, 3121, 3130, 3137, 3146, 3153, - 3162, 3170, 3183, 3191, 3204, 3209, 3210, 3211, 3211, 3212, - 3212, 3212, 3213, 3215, 3227, 3239, 3251, 3266, 3279, 3292, - 3303, 3308, 3309, 3310, 3310, 3312, 3327 + 251, 251, 252, 252, 253, 253, 253, 254, 254, 255, + 255, 256, 256, 256, 257, 257, 258, 258, 258, 259, + 260, 260, 261, 261, 262, 263, 263, 264, 264, 265, + 265, 266, 267, 267, 268, 268, 269, 269, 270, 270, + 271, 271, 272, 272, 272, 273, 273, 274, 274, 275, + 275, 276, 276, 277, 277, 278, 278, 279, 279, 279, + 280, 280, 280, 281, 281, 281, 282, 282, 283, 284, + 284, 285, 285, 286, 286, 287, 287, 288, 288, 288, + 289, 289, 289, 290, 290, 290, 291, 291, 292, 292, + 293, 293, 294, 294, 295, 297, 309, 310, 311, 311, + 311, 311, 311, 312, 312, 314, 326, 327, 328, 328, + 328, 328, 329, 329, 331, 345, 346, 347, 347, 347, + 347, 348, 348, 348, 350, 367, 368, 369, 369, 369, + 369, 370, 370, 370, 371, 374, 393, 410, 418, 428, + 436, 453, 454, 455, 455, 455, 455, 455, 456, 456, + 456, 457, 457, 459, 468, 477, 488, 497, 506, 515, + 526, 535, 547, 561, 576, 587, 604, 621, 638, 655, + 670, 685, 698, 713, 722, 731, 740, 749, 758, 767, + 776, 785, 794, 803, 812, 821, 830, 839, 852, 861, + 874, 883, 892, 901, 908, 915, 924, 931, 940, 948, + 955, 962, 970, 979, 987, 1003, 1011, 1019, 1027, 1035, + 1043, 1052, 1061, 1075, 1084, 1093, 1102, 1111, 1120, 1129, + 1136, 1143, 1169, 1177, 1184, 1191, 1198, 1205, 1213, 1221, + 1229, 1236, 1247, 1258, 1265, 1274, 1283, 1292, 1299, 1306, + 1314, 1322, 1332, 1342, 1352, 1366, 1374, 1387, 1398, 1406, + 1419, 1428, 1437, 1446, 1456, 1466, 1474, 1487, 1496, 1504, + 1513, 1521, 1534, 1543, 1550, 1560, 1570, 1580, 1590, 1600, + 1610, 1620, 1630, 1637, 1644, 1651, 1660, 1669, 1678, 1687, + 1694, 1704, 1724, 1731, 1749, 1762, 1775, 1784, 1793, 1802, + 1811, 1821, 1831, 1842, 1851, 1860, 1869, 1878, 1887, 1896, + 1909, 1922, 1931, 1938, 1947, 1956, 1965, 1974, 1982, 1995, + 2003, 2044, 2051, 2066, 2076, 2086, 2093, 2100, 2107, 2116, + 2124, 2138, 2159, 2180, 2192, 2204, 2216, 2225, 2246, 2256, + 2265, 2273, 2281, 2294, 2307, 2322, 2337, 2346, 2355, 2361, + 2370, 2379, 2389, 2399, 2412, 2425, 2437, 2451, 2463, 2477, + 2492, 2503, 2513, 2520, 2527, 2536, 2545, 2555, 2565, 2575, + 2582, 2589, 2598, 2607, 2617, 2627, 2634, 2641, 2648, 2656, + 2666, 2676, 2686, 2696, 2735, 2745, 2753, 2761, 2776, 2785, + 2790, 2791, 2792, 2792, 2792, 2793, 2793, 2793, 2794, 2794, + 2796, 2806, 2815, 2822, 2829, 2836, 2843, 2850, 2857, 2862, + 2863, 2864, 2864, 2864, 2865, 2865, 2865, 2866, 2867, 2867, + 2868, 2868, 2869, 2869, 2870, 2871, 2872, 2873, 2874, 2875, + 2877, 2886, 2896, 2903, 2910, 2919, 2926, 2933, 2940, 2947, + 2956, 2965, 2972, 2979, 2989, 2999, 3009, 3019, 3029, 3039, + 3044, 3045, 3046, 3048, 3054, 3059, 3060, 3061, 3063, 3069, + 3079, 3086, 3095, 3103, 3108, 3109, 3111, 3111, 3111, 3112, + 3112, 3113, 3114, 3115, 3116, 3117, 3119, 3129, 3138, 3145, + 3154, 3161, 3170, 3178, 3191, 3199, 3212, 3217, 3218, 3219, + 3219, 3220, 3220, 3220, 3221, 3223, 3235, 3247, 3259, 3274, + 3287, 3300, 3311, 3316, 3317, 3318, 3318, 3320, 3335 }; #endif @@ -1194,9 +1196,9 @@ static const char *const yytname[] = "VAR_FORWARD_SSL_UPSTREAM", "VAR_TLS_CERT_BUNDLE", "VAR_HTTPS_PORT", "VAR_HTTP_ENDPOINT", "VAR_HTTP_MAX_STREAMS", "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", - "VAR_HTTP_NODELAY", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", - "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", "VAR_DELAY_CLOSE", - "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", + "VAR_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", + "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", + "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", @@ -1288,47 +1290,47 @@ static const char *const yytname[] = "server_tls_use_sni", "server_https_port", "server_http_endpoint", "server_http_max_streams", "server_http_query_buffer_size", "server_http_response_buffer_size", "server_http_nodelay", - "server_use_systemd", "server_do_daemonize", "server_use_syslog", - "server_log_time_ascii", "server_log_queries", "server_log_replies", - "server_log_tag_queryreply", "server_log_servfail", - "server_log_local_actions", "server_chroot", "server_username", - "server_directory", "server_logfile", "server_pidfile", - "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor", - "server_auto_trust_anchor_file", "server_trust_anchor_file", - "server_trusted_keys_file", "server_trust_anchor", - "server_trust_anchor_signaling", "server_root_key_sentinel", - "server_domain_insecure", "server_hide_identity", "server_hide_version", - "server_hide_trustanchor", "server_identity", "server_version", - "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", - "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", - "server_stream_wait_size", "server_edns_buffer_size", - "server_msg_buffer_size", "server_msg_cache_size", - "server_msg_cache_slabs", "server_num_queries_per_thread", - "server_jostle_timeout", "server_delay_close", - "server_unblock_lan_zones", "server_insecure_lan_zones", - "server_rrset_cache_size", "server_rrset_cache_slabs", - "server_infra_host_ttl", "server_infra_lame_ttl", - "server_infra_cache_numhosts", "server_infra_cache_lame_size", - "server_infra_cache_slabs", "server_infra_cache_min_rtt", - "server_target_fetch_policy", "server_harden_short_bufsize", - "server_harden_large_queries", "server_harden_glue", - "server_harden_dnssec_stripped", "server_harden_below_nxdomain", - "server_harden_referral_path", "server_harden_algo_downgrade", - "server_use_caps_for_id", "server_caps_whitelist", - "server_private_address", "server_private_domain", "server_prefetch", - "server_prefetch_key", "server_deny_any", - "server_unwanted_reply_threshold", "server_do_not_query_address", - "server_do_not_query_localhost", "server_access_control", - "server_module_conf", "server_val_override_date", - "server_val_sig_skew_min", "server_val_sig_skew_max", - "server_cache_max_ttl", "server_cache_max_negative_ttl", - "server_cache_min_ttl", "server_bogus_ttl", - "server_val_clean_additional", "server_val_permissive_mode", - "server_aggressive_nsec", "server_ignore_cd_flag", - "server_serve_expired", "server_serve_expired_ttl", - "server_serve_expired_ttl_reset", "server_serve_expired_reply_ttl", - "server_serve_expired_client_timeout", "server_fake_dsa", - "server_fake_sha1", "server_val_log_level", + "server_http_notls_downstream", "server_use_systemd", + "server_do_daemonize", "server_use_syslog", "server_log_time_ascii", + "server_log_queries", "server_log_replies", "server_log_tag_queryreply", + "server_log_servfail", "server_log_local_actions", "server_chroot", + "server_username", "server_directory", "server_logfile", + "server_pidfile", "server_root_hints", "server_dlv_anchor_file", + "server_dlv_anchor", "server_auto_trust_anchor_file", + "server_trust_anchor_file", "server_trusted_keys_file", + "server_trust_anchor", "server_trust_anchor_signaling", + "server_root_key_sentinel", "server_domain_insecure", + "server_hide_identity", "server_hide_version", "server_hide_trustanchor", + "server_identity", "server_version", "server_so_rcvbuf", + "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", + "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", + "server_edns_buffer_size", "server_msg_buffer_size", + "server_msg_cache_size", "server_msg_cache_slabs", + "server_num_queries_per_thread", "server_jostle_timeout", + "server_delay_close", "server_unblock_lan_zones", + "server_insecure_lan_zones", "server_rrset_cache_size", + "server_rrset_cache_slabs", "server_infra_host_ttl", + "server_infra_lame_ttl", "server_infra_cache_numhosts", + "server_infra_cache_lame_size", "server_infra_cache_slabs", + "server_infra_cache_min_rtt", "server_target_fetch_policy", + "server_harden_short_bufsize", "server_harden_large_queries", + "server_harden_glue", "server_harden_dnssec_stripped", + "server_harden_below_nxdomain", "server_harden_referral_path", + "server_harden_algo_downgrade", "server_use_caps_for_id", + "server_caps_whitelist", "server_private_address", + "server_private_domain", "server_prefetch", "server_prefetch_key", + "server_deny_any", "server_unwanted_reply_threshold", + "server_do_not_query_address", "server_do_not_query_localhost", + "server_access_control", "server_module_conf", + "server_val_override_date", "server_val_sig_skew_min", + "server_val_sig_skew_max", "server_cache_max_ttl", + "server_cache_max_negative_ttl", "server_cache_min_ttl", + "server_bogus_ttl", "server_val_clean_additional", + "server_val_permissive_mode", "server_aggressive_nsec", + "server_ignore_cd_flag", "server_serve_expired", + "server_serve_expired_ttl", "server_serve_expired_ttl_reset", + "server_serve_expired_reply_ttl", "server_serve_expired_client_timeout", + "server_fake_dsa", "server_fake_sha1", "server_val_log_level", "server_val_nsec3_keysize_iterations", "server_add_holddown", "server_del_holddown", "server_keep_missing", "server_permit_small_holddown", "server_key_cache_size", @@ -1424,14 +1426,15 @@ static const yytype_uint16 yytoknum[] = 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 + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555 }; # endif -#define YYPACT_NINF -288 +#define YYPACT_NINF -289 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-288))) + (!!((Yystate) == (-289))) #define YYTABLE_NINF -1 @@ -1442,99 +1445,100 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -288, 0, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, 284, -42, -38, -43, -21, -44, -11, -93, - -109, -287, -212, -237, -279, 3, 4, 13, 25, 26, + -289, 0, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 285, -42, -38, -43, -21, -44, -11, -94, + -109, -288, -213, -238, -280, 3, 4, 13, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 84, 85, 88, 89, 91, 93, - 94, 95, 97, 98, 99, 100, 101, 103, 104, 105, + 94, 95, 96, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 126, 127, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 168, 169, + 148, 149, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 212, 213, - 214, 215, 216, 217, 218, 220, 221, 222, 223, 224, - 227, 229, 231, 244, 245, 246, 247, 248, 249, 250, - 251, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 213, + 214, 215, 216, 217, 218, 219, 221, 222, 223, 224, + 225, 228, 230, 232, 245, 246, 247, 248, 249, 250, + 251, 252, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 277, 278, 279, 281, 282, 283, - 285, 319, 320, 321, 322, 326, 327, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 328, 370, 371, 372, 373, 374, 375, -288, -288, -288, - -288, -288, -288, -288, -288, 376, 377, 378, 382, 386, - 387, -288, -288, -288, -288, -288, -288, -288, 412, 413, - 414, 422, 433, 434, 435, -288, -288, -288, -288, -288, - -288, -288, -288, 436, 437, 438, 439, 440, 441, 442, - 443, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 444, 445, 446, 447, 448, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, 449, 450, 451, 452, - 492, 494, 510, 511, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 527, 528, 529, 530, 531, 532, 533, 535, - 536, 537, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, 538, -288, -288, 539, -288, -288, 540, 541, - 544, 547, 550, 551, 560, 561, 562, 564, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, 565, - 566, 567, 568, 569, 570, -288, -288, -288, -288, -288, - -288, -288, 571, 574, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 575, 576, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - 577, 578, 579, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 580, 581, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, 582, 583, 584, 585, 586, 587, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 588, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 589, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, 590, -288, -288, 591, 592, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, 593, 594, - 595, -288, -288, -288, -288, -288, -288, -288, -288, -288 + 272, 273, 274, 275, 276, 278, 279, 280, 282, 283, + 284, 286, 320, 321, 322, 323, 327, 328, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 329, 371, 372, 373, 374, 375, 376, -289, + -289, -289, -289, -289, -289, -289, -289, 377, 378, 379, + 383, 387, 388, -289, -289, -289, -289, -289, -289, -289, + 413, 414, 415, 424, 435, 436, 437, -289, -289, -289, + -289, -289, -289, -289, -289, 438, 439, 440, 441, 442, + 443, 444, 445, -289, -289, -289, -289, -289, -289, -289, + -289, -289, 446, 447, 448, 449, 450, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 451, 452, + 453, 454, 494, 496, 512, 513, -289, -289, -289, -289, + -289, -289, -289, -289, -289, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 529, 530, 531, 532, 533, 534, + 535, 537, 538, 539, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, 540, -289, -289, 541, -289, -289, + 542, 543, 546, 549, 552, 553, 562, 563, 564, 566, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, 567, 568, 569, 570, 571, 572, -289, -289, -289, + -289, -289, -289, -289, 573, 576, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, 577, + 578, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, 579, 580, 581, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, 582, 583, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, 584, 585, 586, + 587, 588, 589, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + 590, -289, -289, -289, -289, -289, -289, -289, -289, -289, + 591, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, 592, -289, -289, 593, + 594, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, 595, 596, 597, -289, -289, -289, -289, -289, -289, + -289, -289, -289 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1542,10 +1546,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 18, 19, 224, 234, 507, 567, 526, - 243, 581, 604, 253, 620, 269, 572, 3, 17, 21, - 226, 236, 245, 255, 271, 509, 528, 569, 574, 583, - 606, 622, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 225, 235, 509, 569, 528, + 244, 583, 606, 254, 622, 270, 574, 3, 17, 21, + 227, 237, 246, 256, 272, 511, 530, 571, 576, 585, + 608, 624, 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, @@ -1566,151 +1570,152 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 20, 22, 23, - 86, 89, 98, 192, 193, 24, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 37, 77, 25, 90, - 91, 48, 70, 85, 26, 27, 30, 31, 28, 29, - 32, 33, 34, 35, 36, 121, 204, 122, 124, 125, - 126, 206, 211, 207, 218, 219, 220, 221, 127, 128, - 129, 130, 131, 132, 188, 87, 76, 102, 119, 120, - 216, 213, 123, 38, 39, 40, 41, 42, 78, 92, - 93, 108, 64, 74, 65, 196, 197, 103, 58, 59, - 195, 60, 61, 112, 116, 136, 145, 171, 148, 217, - 113, 71, 43, 44, 45, 100, 137, 138, 139, 46, - 47, 49, 50, 52, 53, 51, 143, 54, 55, 56, - 62, 81, 117, 95, 144, 88, 167, 96, 97, 114, - 115, 214, 101, 57, 79, 82, 63, 66, 104, 105, - 80, 168, 106, 67, 68, 69, 205, 118, 181, 182, - 183, 184, 185, 186, 194, 107, 75, 109, 110, 111, - 169, 72, 73, 94, 83, 84, 99, 133, 134, 215, - 135, 140, 141, 142, 172, 173, 175, 177, 178, 176, - 179, 189, 146, 147, 151, 152, 149, 150, 153, 154, - 156, 155, 208, 210, 209, 170, 180, 198, 200, 199, - 201, 202, 203, 222, 223, 174, 187, 190, 191, 212, - 0, 0, 0, 0, 0, 0, 0, 225, 227, 228, - 229, 231, 232, 233, 230, 0, 0, 0, 0, 0, - 0, 235, 237, 238, 239, 240, 241, 242, 0, 0, - 0, 0, 0, 0, 0, 244, 246, 247, 250, 251, - 248, 252, 249, 0, 0, 0, 0, 0, 0, 0, - 0, 254, 256, 257, 258, 259, 263, 260, 261, 262, - 0, 0, 0, 0, 0, 274, 278, 279, 280, 281, - 270, 272, 273, 275, 276, 277, 0, 0, 0, 0, - 0, 0, 0, 0, 508, 510, 512, 511, 517, 513, - 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 22, + 23, 86, 89, 98, 193, 194, 24, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 37, 77, 25, + 90, 91, 48, 70, 85, 26, 27, 30, 31, 28, + 29, 32, 33, 34, 35, 36, 121, 205, 122, 124, + 125, 126, 207, 212, 208, 219, 220, 221, 222, 127, + 128, 129, 130, 131, 132, 133, 189, 87, 76, 102, + 119, 120, 217, 214, 123, 38, 39, 40, 41, 42, + 78, 92, 93, 108, 64, 74, 65, 197, 198, 103, + 58, 59, 196, 60, 61, 112, 116, 137, 146, 172, + 149, 218, 113, 71, 43, 44, 45, 100, 138, 139, + 140, 46, 47, 49, 50, 52, 53, 51, 144, 54, + 55, 56, 62, 81, 117, 95, 145, 88, 168, 96, + 97, 114, 115, 215, 101, 57, 79, 82, 63, 66, + 104, 105, 80, 169, 106, 67, 68, 69, 206, 118, + 182, 183, 184, 185, 186, 187, 195, 107, 75, 109, + 110, 111, 170, 72, 73, 94, 83, 84, 99, 134, + 135, 216, 136, 141, 142, 143, 173, 174, 176, 178, + 179, 177, 180, 190, 147, 148, 152, 153, 150, 151, + 154, 155, 157, 156, 209, 211, 210, 171, 181, 199, + 201, 200, 202, 203, 204, 223, 224, 175, 188, 191, + 192, 213, 0, 0, 0, 0, 0, 0, 0, 226, + 228, 229, 230, 232, 233, 234, 231, 0, 0, 0, + 0, 0, 0, 236, 238, 239, 240, 241, 242, 243, + 0, 0, 0, 0, 0, 0, 0, 245, 247, 248, + 251, 252, 249, 253, 250, 0, 0, 0, 0, 0, + 0, 0, 0, 255, 257, 258, 259, 260, 264, 261, + 262, 263, 0, 0, 0, 0, 0, 275, 279, 280, + 281, 282, 271, 273, 274, 276, 277, 278, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 512, 514, 513, + 519, 515, 516, 517, 518, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 527, 529, 531, 530, 532, 533, 534, 535, + 0, 0, 0, 0, 529, 531, 533, 532, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 0, 568, 570, 0, 573, 575, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 582, 584, - 585, 586, 588, 589, 587, 590, 591, 592, 593, 0, - 0, 0, 0, 0, 0, 605, 607, 608, 609, 610, - 611, 612, 0, 0, 621, 623, 624, 283, 282, 289, - 302, 300, 312, 308, 309, 313, 310, 311, 314, 315, - 316, 317, 318, 347, 348, 349, 350, 351, 376, 377, - 378, 383, 384, 305, 385, 386, 389, 387, 388, 391, - 392, 393, 407, 362, 363, 365, 366, 394, 410, 356, - 358, 411, 417, 418, 419, 306, 375, 435, 436, 357, - 430, 340, 301, 352, 408, 414, 395, 0, 0, 439, - 307, 284, 339, 399, 285, 303, 304, 353, 354, 437, - 397, 401, 402, 286, 440, 379, 406, 341, 361, 412, - 413, 416, 429, 355, 433, 431, 432, 367, 374, 403, - 404, 368, 369, 396, 421, 342, 343, 346, 319, 321, - 322, 323, 324, 325, 332, 333, 334, 335, 336, 337, - 441, 442, 444, 380, 381, 382, 390, 445, 446, 447, - 0, 0, 0, 398, 370, 372, 577, 456, 460, 458, - 457, 461, 459, 0, 0, 464, 465, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 400, 415, 434, - 469, 470, 371, 448, 0, 0, 0, 0, 0, 0, - 422, 423, 424, 425, 426, 427, 428, 578, 364, 359, - 420, 338, 287, 288, 360, 471, 473, 472, 474, 475, - 476, 320, 327, 466, 468, 467, 326, 0, 345, 405, - 443, 344, 373, 328, 329, 331, 330, 0, 478, 479, - 480, 481, 485, 484, 482, 483, 486, 487, 488, 489, - 491, 490, 500, 0, 504, 505, 0, 0, 506, 492, - 498, 493, 494, 495, 497, 499, 496, 264, 265, 266, - 267, 268, 518, 520, 519, 522, 523, 524, 525, 521, - 548, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 549, 559, 560, 561, 562, 563, 564, 565, 566, 571, - 576, 594, 595, 596, 599, 597, 598, 600, 601, 602, - 603, 613, 614, 615, 616, 617, 618, 625, 626, 409, - 438, 455, 579, 580, 462, 463, 449, 450, 0, 0, - 0, 454, 619, 477, 501, 502, 503, 453, 451, 452 + 546, 547, 548, 549, 0, 570, 572, 0, 575, 577, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 584, 586, 587, 588, 590, 591, 589, 592, 593, 594, + 595, 0, 0, 0, 0, 0, 0, 607, 609, 610, + 611, 612, 613, 614, 0, 0, 623, 625, 626, 284, + 283, 290, 303, 301, 313, 309, 310, 314, 311, 312, + 315, 316, 317, 318, 319, 349, 350, 351, 352, 353, + 378, 379, 380, 385, 386, 306, 387, 388, 391, 389, + 390, 393, 394, 395, 409, 364, 365, 367, 368, 396, + 412, 358, 360, 413, 419, 420, 421, 307, 377, 437, + 438, 359, 432, 342, 302, 354, 410, 416, 397, 0, + 0, 441, 308, 285, 341, 401, 286, 304, 305, 355, + 356, 439, 399, 403, 404, 287, 442, 381, 408, 343, + 363, 414, 415, 418, 431, 357, 435, 433, 434, 369, + 376, 405, 406, 370, 371, 398, 423, 344, 345, 348, + 320, 322, 323, 324, 325, 326, 333, 334, 335, 336, + 337, 338, 339, 443, 444, 446, 382, 383, 384, 392, + 447, 448, 449, 0, 0, 0, 400, 372, 374, 579, + 458, 462, 460, 459, 463, 461, 0, 0, 466, 467, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 402, 417, 436, 471, 472, 373, 450, 0, 0, 0, + 0, 0, 0, 424, 425, 426, 427, 428, 429, 430, + 580, 366, 361, 422, 340, 288, 289, 362, 473, 475, + 474, 476, 477, 478, 321, 328, 468, 470, 469, 327, + 0, 347, 407, 445, 346, 375, 329, 330, 332, 331, + 0, 480, 481, 482, 483, 487, 486, 484, 485, 488, + 489, 490, 491, 493, 492, 502, 0, 506, 507, 0, + 0, 508, 494, 500, 495, 496, 497, 499, 501, 498, + 265, 266, 267, 268, 269, 520, 522, 521, 524, 525, + 526, 527, 523, 550, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 551, 561, 562, 563, 564, 565, 566, + 567, 568, 573, 578, 596, 597, 598, 601, 599, 600, + 602, 603, 604, 605, 615, 616, 617, 618, 619, 620, + 627, 628, 411, 440, 457, 581, 582, 464, 465, 451, + 452, 0, 0, 0, 456, 621, 479, 503, 504, 505, + 455, 453, 454 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, 572, 573, 596, - 597, 598, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288, -288, -288, -288, -288, -288, - -288, -288, -288, -288, -288 + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, 574, 575, + 598, 599, 600, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289, -289, -289, -289, -289, + -289, -289, -289, -289, -289, -289 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 247, 20, 33, 457, - 21, 34, 471, 22, 35, 485, 23, 36, 501, 515, - 516, 517, 518, 519, 24, 37, 520, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, - 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 458, 459, 460, 461, 462, 463, - 464, 472, 473, 474, 475, 476, 477, 502, 503, 504, - 505, 506, 507, 508, 509, 486, 487, 488, 489, 490, - 491, 492, 25, 38, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 26, 39, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 27, 40, 583, 584, 28, - 41, 586, 587, 445, 446, 447, 448, 29, 42, 598, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 30, 43, 615, 616, 617, 618, 619, 620, 621, 449, - 31, 44, 624, 625, 626 + -1, 1, 17, 18, 19, 32, 248, 20, 33, 459, + 21, 34, 473, 22, 35, 487, 23, 36, 503, 517, + 518, 519, 520, 521, 24, 37, 522, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 460, 461, 462, 463, 464, + 465, 466, 474, 475, 476, 477, 478, 479, 504, 505, + 506, 507, 508, 509, 510, 511, 488, 489, 490, 491, + 492, 493, 494, 25, 38, 536, 537, 538, 539, 540, + 541, 542, 543, 544, 26, 39, 564, 565, 566, 567, + 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 27, 40, 585, 586, + 28, 41, 588, 589, 447, 448, 449, 450, 29, 42, + 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, + 610, 30, 43, 617, 618, 619, 620, 621, 622, 623, + 451, 31, 44, 626, 627, 628 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1718,149 +1723,149 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 493, 478, 450, 582, 451, 452, 465, 622, 623, - 585, 3, 4, 627, 628, 466, 467, 609, 610, 611, - 612, 613, 614, 629, 493, 588, 589, 590, 591, 592, - 593, 594, 595, 596, 597, 630, 631, 632, 479, 480, - 633, 634, 635, 636, 637, 638, 5, 639, 640, 641, - 642, 643, 6, 644, 645, 646, 647, 648, 649, 650, - 651, 652, 653, 481, 654, 655, 453, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, - 556, 557, 558, 559, 560, 561, 526, 527, 528, 529, - 530, 531, 532, 533, 656, 657, 7, 454, 658, 659, - 468, 660, 469, 661, 662, 663, 455, 664, 665, 666, - 667, 668, 8, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 688, 689, 690, 691, 692, 482, 483, 693, - 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, - 704, 705, 706, 707, 708, 709, 710, 711, 712, 9, - 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, - 723, 724, 725, 726, 727, 728, 729, 484, 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, 757, 758, 759, 760, 761, - 762, 763, 764, 765, 766, 767, 768, 769, 10, 495, - 496, 497, 770, 771, 772, 773, 774, 775, 776, 500, - 777, 778, 779, 780, 781, 456, 11, 782, 470, 783, - 494, 784, 495, 496, 497, 498, 499, 510, 511, 512, - 513, 514, 500, 12, 785, 786, 787, 788, 789, 790, - 791, 792, 13, 793, 794, 795, 796, 797, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, - 810, 811, 812, 813, 814, 815, 14, 816, 817, 818, - 15, 819, 820, 821, 0, 822, 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, 823, - 824, 825, 826, 77, 78, 79, 827, 828, 829, 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, - 830, 831, 832, 833, 834, 835, 836, 837, 838, 121, - 122, 123, 839, 124, 125, 126, 840, 841, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 842, 843, 844, 151, 152, 153, 154, 155, - 156, 157, 845, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 864, 865, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 866, 207, 867, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 868, 869, 870, 871, 872, 873, 874, 875, 876, 877, - 878, 223, 224, 225, 226, 227, 228, 879, 880, 881, - 882, 883, 884, 885, 229, 886, 887, 888, 889, 890, - 891, 892, 230, 231, 893, 232, 233, 894, 234, 235, - 895, 896, 236, 237, 238, 239, 240, 241, 242, 243, - 897, 898, 899, 244, 900, 901, 902, 903, 904, 905, - 906, 907, 245, 246, 908, 909, 910, 911, 912, 913, - 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, - 924, 925, 926, 927, 928, 929, 0, 0, 0, 521, - 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 495, 480, 452, 584, 453, 454, 467, 624, 625, + 587, 3, 4, 629, 630, 468, 469, 611, 612, 613, + 614, 615, 616, 631, 495, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 632, 633, 634, 481, 482, + 635, 636, 637, 638, 639, 640, 5, 641, 642, 643, + 644, 645, 6, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 483, 656, 657, 455, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 528, 529, 530, 531, + 532, 533, 534, 535, 658, 659, 7, 456, 660, 661, + 470, 662, 471, 663, 664, 665, 666, 457, 667, 668, + 669, 670, 8, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, + 688, 689, 690, 691, 692, 693, 694, 695, 484, 485, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, + 9, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 486, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, + 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, + 764, 765, 766, 767, 768, 769, 770, 771, 772, 10, + 497, 498, 499, 773, 774, 775, 776, 777, 778, 779, + 502, 780, 781, 782, 783, 784, 458, 11, 785, 472, + 786, 496, 787, 497, 498, 499, 500, 501, 512, 513, + 514, 515, 516, 502, 12, 788, 789, 790, 791, 792, + 793, 794, 795, 13, 796, 797, 798, 799, 800, 801, + 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, + 812, 813, 814, 815, 816, 817, 818, 14, 819, 820, + 821, 15, 822, 823, 824, 0, 825, 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, + 826, 827, 828, 829, 77, 78, 79, 830, 831, 832, + 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, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 121, 122, 123, 842, 124, 125, 126, 843, 844, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 845, 846, 847, 151, 152, 153, 154, + 155, 156, 157, 158, 848, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 867, 868, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 869, 208, 870, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 871, 872, 873, 874, 875, 876, 877, 878, + 879, 880, 881, 224, 225, 226, 227, 228, 229, 882, + 883, 884, 885, 886, 887, 888, 230, 889, 890, 891, + 892, 893, 894, 895, 231, 232, 896, 233, 234, 897, + 235, 236, 898, 899, 237, 238, 239, 240, 241, 242, + 243, 244, 900, 901, 902, 245, 903, 904, 905, 906, + 907, 908, 909, 910, 246, 247, 911, 912, 913, 914, + 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, + 925, 926, 927, 928, 929, 930, 931, 932, 0, 0, + 0, 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 523, 524, 525 + 0, 0, 0, 0, 0, 525, 526, 527 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 113, 47, 48, 45, 287, 288, - 297, 11, 12, 10, 10, 53, 54, 254, 255, 256, - 257, 258, 259, 10, 45, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 10, 10, 10, 81, 82, + 0, 45, 45, 45, 113, 47, 48, 45, 288, 289, + 298, 11, 12, 10, 10, 53, 54, 255, 256, 257, + 258, 259, 260, 10, 45, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 10, 10, 10, 81, 82, 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 106, 10, 10, 108, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 97, 98, 99, 100, + 10, 10, 10, 106, 10, 10, 108, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 97, 98, 99, 100, 101, 102, 103, 104, 10, 10, 96, 139, 10, 10, - 138, 10, 140, 10, 10, 10, 148, 10, 10, 10, + 138, 10, 140, 10, 10, 10, 10, 149, 10, 10, 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 180, 181, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 181, 182, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 159, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 220, 10, 10, + 160, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 221, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 218, 263, - 264, 265, 10, 10, 10, 10, 10, 10, 10, 273, - 10, 10, 10, 10, 10, 277, 236, 10, 276, 10, - 261, 10, 263, 264, 265, 266, 267, 291, 292, 293, - 294, 295, 273, 253, 10, 10, 10, 10, 10, 10, - 10, 10, 262, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 219, + 264, 265, 266, 10, 10, 10, 10, 10, 10, 10, + 274, 10, 10, 10, 10, 10, 278, 237, 10, 277, + 10, 262, 10, 264, 265, 266, 267, 268, 292, 293, + 294, 295, 296, 274, 254, 10, 10, 10, 10, 10, + 10, 10, 10, 263, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 286, 10, 10, 10, - 290, 10, 10, 10, -1, 10, 296, 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, 10, 109, 110, 111, 10, 10, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 10, 10, 10, 141, 142, 143, 144, 145, - 146, 147, 10, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 287, 10, 10, + 10, 291, 10, 10, 10, -1, 10, 297, 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, 10, 109, 110, 111, 10, 10, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 10, 10, 10, 141, 142, 143, 144, + 145, 146, 147, 148, 10, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 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, 10, 219, 10, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 10, 10, 10, 10, 10, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 10, 220, 10, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 248, 249, 250, 251, 252, 253, 10, + 10, 10, 10, 10, 10, 10, 261, 10, 10, 10, + 10, 10, 10, 10, 269, 270, 10, 272, 273, 10, + 275, 276, 10, 10, 279, 280, 281, 282, 283, 284, + 285, 286, 10, 10, 10, 290, 10, 10, 10, 10, + 10, 10, 10, 10, 299, 300, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 247, 248, 249, 250, 251, 252, 10, 10, 10, - 10, 10, 10, 10, 260, 10, 10, 10, 10, 10, - 10, 10, 268, 269, 10, 271, 272, 10, 274, 275, - 10, 10, 278, 279, 280, 281, 282, 283, 284, 285, - 10, 10, 10, 289, 10, 10, 10, 10, 10, 10, - 10, 10, 298, 299, 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, 37, - 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, + -1, 37, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 37, 37, 37 + -1, -1, -1, -1, -1, 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 301, 0, 11, 12, 46, 52, 96, 112, 159, - 218, 236, 253, 262, 286, 290, 296, 302, 303, 304, - 307, 310, 313, 316, 324, 552, 563, 585, 589, 597, - 610, 620, 305, 308, 311, 314, 317, 325, 553, 564, - 586, 590, 598, 611, 621, 13, 14, 15, 16, 17, + 0, 302, 0, 11, 12, 46, 52, 96, 112, 160, + 219, 237, 254, 263, 287, 291, 297, 303, 304, 305, + 308, 311, 314, 317, 325, 554, 565, 587, 591, 599, + 612, 622, 306, 309, 312, 315, 318, 326, 555, 566, + 588, 592, 600, 613, 623, 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, @@ -1871,16 +1876,16 @@ static const yytype_uint16 yystos[] = 95, 105, 106, 107, 109, 110, 111, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 141, 142, 143, 144, 145, 146, 147, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 179, 180, + 137, 141, 142, 143, 144, 145, 146, 147, 148, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 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, 219, 221, 222, + 211, 212, 213, 214, 215, 216, 217, 218, 220, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 247, 248, 249, 250, 251, 252, 260, - 268, 269, 271, 272, 274, 275, 278, 279, 280, 281, - 282, 283, 284, 285, 289, 298, 299, 306, 327, 328, + 233, 234, 235, 236, 248, 249, 250, 251, 252, 253, + 261, 269, 270, 272, 273, 275, 276, 279, 280, 281, + 282, 283, 284, 285, 286, 290, 299, 300, 307, 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, @@ -1900,25 +1905,25 @@ static const yytype_uint16 yystos[] = 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, 593, 594, 595, 596, 619, - 45, 47, 48, 108, 139, 148, 277, 309, 524, 525, - 526, 527, 528, 529, 530, 45, 53, 54, 138, 140, - 276, 312, 531, 532, 533, 534, 535, 536, 45, 81, - 82, 106, 180, 181, 220, 315, 545, 546, 547, 548, - 549, 550, 551, 45, 261, 263, 264, 265, 266, 267, - 273, 318, 537, 538, 539, 540, 541, 542, 543, 544, - 291, 292, 293, 294, 295, 319, 320, 321, 322, 323, - 326, 537, 538, 539, 540, 541, 97, 98, 99, 100, - 101, 102, 103, 104, 554, 555, 556, 557, 558, 559, - 560, 561, 562, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 565, 566, 567, 568, 569, 570, 571, 572, + 519, 520, 521, 522, 523, 524, 525, 595, 596, 597, + 598, 621, 45, 47, 48, 108, 139, 149, 278, 310, + 526, 527, 528, 529, 530, 531, 532, 45, 53, 54, + 138, 140, 277, 313, 533, 534, 535, 536, 537, 538, + 45, 81, 82, 106, 181, 182, 221, 316, 547, 548, + 549, 550, 551, 552, 553, 45, 262, 264, 265, 266, + 267, 268, 274, 319, 539, 540, 541, 542, 543, 544, + 545, 546, 292, 293, 294, 295, 296, 320, 321, 322, + 323, 324, 327, 539, 540, 541, 542, 543, 97, 98, + 99, 100, 101, 102, 103, 104, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 113, 587, 588, 297, 591, 592, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 599, 600, - 601, 602, 603, 604, 605, 606, 607, 608, 609, 254, - 255, 256, 257, 258, 259, 612, 613, 614, 615, 616, - 617, 618, 287, 288, 622, 623, 624, 10, 10, 10, + 583, 584, 585, 586, 113, 589, 590, 298, 593, 594, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 255, 256, 257, 258, 259, 260, 614, 615, 616, + 617, 618, 619, 620, 288, 289, 624, 625, 626, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1948,41 +1953,42 @@ static const yytype_uint16 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, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 300, 301, 301, 302, 302, 302, 302, 302, 302, - 302, 302, 302, 302, 302, 302, 302, 302, 303, 304, - 305, 305, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, 306, - 306, 306, 306, 306, 307, 308, 308, 309, 309, 309, - 309, 309, 309, 309, 310, 311, 311, 312, 312, 312, - 312, 312, 312, 313, 314, 314, 315, 315, 315, 315, - 315, 315, 315, 316, 317, 317, 318, 318, 318, 318, - 318, 318, 318, 318, 319, 320, 321, 322, 323, 324, - 325, 325, 326, 326, 326, 326, 326, 326, 326, 326, - 326, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 0, 301, 302, 302, 303, 303, 303, 303, 303, 303, + 303, 303, 303, 303, 303, 303, 303, 303, 304, 305, + 306, 306, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, + 307, 307, 307, 307, 307, 308, 309, 309, 310, 310, + 310, 310, 310, 310, 310, 311, 312, 312, 313, 313, + 313, 313, 313, 313, 314, 315, 315, 316, 316, 316, + 316, 316, 316, 316, 317, 318, 318, 319, 319, 319, + 319, 319, 319, 319, 319, 320, 321, 322, 323, 324, + 325, 326, 326, 327, 327, 327, 327, 327, 327, 327, + 327, 327, 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, @@ -2004,19 +2010,19 @@ static const yytype_uint16 yyr1[] = 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, 553, - 554, 554, 554, 554, 554, 554, 554, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 565, 565, - 565, 565, 565, 565, 565, 565, 565, 565, 566, 567, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 555, 556, 556, 556, 556, 556, 556, 556, 556, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 567, 567, 567, 567, 567, 567, 567, 567, + 567, 567, 567, 567, 567, 567, 567, 567, 567, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, - 578, 579, 580, 581, 582, 583, 584, 585, 586, 586, - 587, 588, 589, 590, 590, 591, 592, 593, 594, 595, - 596, 597, 598, 598, 599, 599, 599, 599, 599, 599, - 599, 599, 599, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 611, 612, 612, 612, - 612, 612, 612, 613, 614, 615, 616, 617, 618, 619, - 620, 621, 621, 622, 622, 623, 624 + 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, + 588, 588, 589, 590, 591, 592, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 600, 601, 601, 601, 601, + 601, 601, 601, 601, 601, 601, 602, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 613, 613, 614, + 614, 614, 614, 614, 614, 615, 616, 617, 618, 619, + 620, 621, 622, 623, 623, 624, 624, 625, 626 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2044,47 +2050,47 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 4, 4, 4, 3, 3, 2, 2, + 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 3, 4, 4, 4, 3, 3, 2, 2, 2, 2, - 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 3, 3, 2, 2, 2, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2773,7 +2779,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2777 "util/configparser.c" +#line 2783 "util/configparser.c" break; case 19: @@ -2781,10 +2787,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2785 "util/configparser.c" +#line 2791 "util/configparser.c" break; - case 224: + case 225: #line 298 "./util/configparser.y" { struct config_stub* s; @@ -2796,10 +2802,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2800 "util/configparser.c" +#line 2806 "util/configparser.c" break; - case 234: + case 235: #line 315 "./util/configparser.y" { struct config_stub* s; @@ -2811,10 +2817,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2815 "util/configparser.c" +#line 2821 "util/configparser.c" break; - case 243: + case 244: #line 332 "./util/configparser.y" { struct config_view* s; @@ -2828,10 +2834,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2832 "util/configparser.c" +#line 2838 "util/configparser.c" break; - case 253: + case 254: #line 351 "./util/configparser.y" { struct config_auth* s; @@ -2848,10 +2854,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2858 "util/configparser.c" break; - case 264: + case 265: #line 375 "./util/configparser.y" { uint8_t* bitlist; @@ -2869,10 +2875,10 @@ yyreduce: } } -#line 2873 "util/configparser.c" +#line 2879 "util/configparser.c" break; - case 265: + case 266: #line 394 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2888,20 +2894,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2892 "util/configparser.c" +#line 2898 "util/configparser.c" break; - case 266: + case 267: #line 411 "./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 2902 "util/configparser.c" +#line 2908 "util/configparser.c" break; - case 267: + case 268: #line 419 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2910,20 +2916,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2914 "util/configparser.c" +#line 2920 "util/configparser.c" break; - case 268: + case 269: #line 429 "./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 2924 "util/configparser.c" +#line 2930 "util/configparser.c" break; - case 269: + case 270: #line 437 "./util/configparser.y" { struct config_auth* s; @@ -2940,10 +2946,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2944 "util/configparser.c" +#line 2950 "util/configparser.c" break; - case 282: + case 283: #line 460 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2952,10 +2958,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2956 "util/configparser.c" +#line 2962 "util/configparser.c" break; - case 283: + case 284: #line 469 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -2964,10 +2970,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2968 "util/configparser.c" +#line 2974 "util/configparser.c" break; - case 284: + case 285: #line 478 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -2978,10 +2984,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2982 "util/configparser.c" +#line 2988 "util/configparser.c" break; - case 285: + case 286: #line 489 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -2990,10 +2996,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2994 "util/configparser.c" +#line 3000 "util/configparser.c" break; - case 286: + case 287: #line 498 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3002,10 +3008,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3006 "util/configparser.c" +#line 3012 "util/configparser.c" break; - case 287: + case 288: #line 507 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3014,10 +3020,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3018 "util/configparser.c" +#line 3024 "util/configparser.c" break; - case 288: + case 289: #line 516 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3028,10 +3034,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3032 "util/configparser.c" +#line 3038 "util/configparser.c" break; - case 289: + case 290: #line 527 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3040,10 +3046,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3044 "util/configparser.c" +#line 3050 "util/configparser.c" break; - case 290: + case 291: #line 536 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3055,10 +3061,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3059 "util/configparser.c" +#line 3065 "util/configparser.c" break; - case 291: + case 292: #line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3071,10 +3077,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3075 "util/configparser.c" +#line 3081 "util/configparser.c" break; - case 292: + case 293: #line 562 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3089,10 +3095,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3093 "util/configparser.c" +#line 3099 "util/configparser.c" break; - case 293: + case 294: #line 577 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3103,10 +3109,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 294: + case 295: #line 588 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3123,10 +3129,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 295: + case 296: #line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3143,10 +3149,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3147 "util/configparser.c" +#line 3153 "util/configparser.c" break; - case 296: + case 297: #line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3163,10 +3169,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3167 "util/configparser.c" +#line 3173 "util/configparser.c" break; - case 297: + case 298: #line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3183,10 +3189,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3187 "util/configparser.c" +#line 3193 "util/configparser.c" break; - case 298: + case 299: #line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3201,10 +3207,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" +#line 3211 "util/configparser.c" break; - case 299: + case 300: #line 671 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3219,10 +3225,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3223 "util/configparser.c" +#line 3229 "util/configparser.c" break; - case 300: + case 301: #line 686 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3235,10 +3241,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3239 "util/configparser.c" +#line 3245 "util/configparser.c" break; - case 301: + case 302: #line 699 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3253,10 +3259,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3257 "util/configparser.c" +#line 3263 "util/configparser.c" break; - case 302: + case 303: #line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3265,10 +3271,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3275 "util/configparser.c" break; - case 303: + case 304: #line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3277,10 +3283,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3287 "util/configparser.c" break; - case 304: + case 305: #line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3289,10 +3295,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3299 "util/configparser.c" break; - case 305: + case 306: #line 741 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3301,10 +3307,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3311 "util/configparser.c" break; - case 306: + case 307: #line 750 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3313,10 +3319,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3323 "util/configparser.c" break; - case 307: + case 308: #line 759 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3325,10 +3331,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3335 "util/configparser.c" break; - case 308: + case 309: #line 768 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3337,10 +3343,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 309: + case 310: #line 777 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3349,10 +3355,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 310: + case 311: #line 786 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3361,10 +3367,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 311: + case 312: #line 795 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3373,10 +3379,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3377 "util/configparser.c" +#line 3383 "util/configparser.c" break; - case 312: + case 313: #line 804 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3385,10 +3391,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3389 "util/configparser.c" +#line 3395 "util/configparser.c" break; - case 313: + case 314: #line 813 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3397,10 +3403,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3401 "util/configparser.c" +#line 3407 "util/configparser.c" break; - case 314: + case 315: #line 822 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3409,10 +3415,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3413 "util/configparser.c" +#line 3419 "util/configparser.c" break; - case 315: + case 316: #line 831 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3421,10 +3427,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3425 "util/configparser.c" +#line 3431 "util/configparser.c" break; - case 316: + case 317: #line 840 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3437,10 +3443,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3447 "util/configparser.c" break; - case 317: + case 318: #line 853 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3449,10 +3455,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3459 "util/configparser.c" break; - case 318: + case 319: #line 862 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3465,10 +3471,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3469 "util/configparser.c" +#line 3475 "util/configparser.c" break; - case 319: + case 320: #line 875 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3477,10 +3483,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3481 "util/configparser.c" +#line 3487 "util/configparser.c" break; - case 320: + case 321: #line 884 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3489,10 +3495,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3499 "util/configparser.c" break; - case 321: + case 322: #line 893 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3501,30 +3507,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3511 "util/configparser.c" break; - case 322: + case 323: #line 902 "./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 3515 "util/configparser.c" +#line 3521 "util/configparser.c" break; - case 323: + case 324: #line 909 "./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 3525 "util/configparser.c" +#line 3531 "util/configparser.c" break; - case 324: + case 325: #line 916 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3533,20 +3539,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3537 "util/configparser.c" +#line 3543 "util/configparser.c" break; - case 325: + case 326: #line 925 "./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 3547 "util/configparser.c" +#line 3553 "util/configparser.c" break; - case 326: + case 327: #line 932 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3555,10 +3561,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3559 "util/configparser.c" +#line 3565 "util/configparser.c" break; - case 327: + case 328: #line 941 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3566,30 +3572,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3570 "util/configparser.c" +#line 3576 "util/configparser.c" break; - case 328: + case 329: #line 949 "./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 3580 "util/configparser.c" +#line 3586 "util/configparser.c" break; - case 329: + case 330: #line 956 "./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 3590 "util/configparser.c" +#line 3596 "util/configparser.c" break; - case 330: + case 331: #line 963 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3597,10 +3603,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3601 "util/configparser.c" +#line 3607 "util/configparser.c" break; - case 331: + case 332: #line 971 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3609,10 +3615,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3613 "util/configparser.c" +#line 3619 "util/configparser.c" break; - case 332: + case 333: #line 980 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -3621,10 +3627,10 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3625 "util/configparser.c" +#line 3631 "util/configparser.c" break; - case 333: + case 334: #line 988 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -3641,10 +3647,10 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3645 "util/configparser.c" +#line 3651 "util/configparser.c" break; - case 334: + case 335: #line 1004 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -3653,10 +3659,10 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3657 "util/configparser.c" +#line 3663 "util/configparser.c" break; - case 335: + case 336: #line 1012 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3665,10 +3671,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3669 "util/configparser.c" +#line 3675 "util/configparser.c" break; - case 336: + case 337: #line 1020 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3677,10 +3683,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3681 "util/configparser.c" +#line 3687 "util/configparser.c" break; - case 337: + case 338: #line 1028 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -3689,11 +3695,23 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3693 "util/configparser.c" +#line 3699 "util/configparser.c" break; - case 338: + case 339: #line 1036 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 3711 "util/configparser.c" + break; + + case 340: +#line 1044 "./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) @@ -3701,11 +3719,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3705 "util/configparser.c" +#line 3723 "util/configparser.c" break; - case 339: -#line 1045 "./util/configparser.y" + case 341: +#line 1053 "./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) @@ -3713,11 +3731,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3717 "util/configparser.c" +#line 3735 "util/configparser.c" break; - case 340: -#line 1054 "./util/configparser.y" + case 342: +#line 1062 "./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) @@ -3730,11 +3748,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3734 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 341: -#line 1068 "./util/configparser.y" + case 343: +#line 1076 "./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) @@ -3742,11 +3760,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3746 "util/configparser.c" +#line 3764 "util/configparser.c" break; - case 342: -#line 1077 "./util/configparser.y" + case 344: +#line 1085 "./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) @@ -3754,11 +3772,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3758 "util/configparser.c" +#line 3776 "util/configparser.c" break; - case 343: -#line 1086 "./util/configparser.y" + case 345: +#line 1094 "./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) @@ -3766,11 +3784,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3788 "util/configparser.c" break; - case 344: -#line 1095 "./util/configparser.y" + case 346: +#line 1103 "./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) @@ -3778,11 +3796,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3782 "util/configparser.c" +#line 3800 "util/configparser.c" break; - case 345: -#line 1104 "./util/configparser.y" + case 347: +#line 1112 "./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) @@ -3790,11 +3808,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3794 "util/configparser.c" +#line 3812 "util/configparser.c" break; - case 346: -#line 1113 "./util/configparser.y" + case 348: +#line 1121 "./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) @@ -3802,31 +3820,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3806 "util/configparser.c" +#line 3824 "util/configparser.c" break; - case 347: -#line 1122 "./util/configparser.y" + case 349: +#line 1130 "./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 3816 "util/configparser.c" +#line 3834 "util/configparser.c" break; - case 348: -#line 1129 "./util/configparser.y" + case 350: +#line 1137 "./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 3826 "util/configparser.c" +#line 3844 "util/configparser.c" break; - case 349: -#line 1136 "./util/configparser.y" + case 351: +#line 1144 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3851,105 +3869,105 @@ yyreduce: } } } -#line 3855 "util/configparser.c" +#line 3873 "util/configparser.c" break; - case 350: -#line 1162 "./util/configparser.y" + case 352: +#line 1170 "./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 3866 "util/configparser.c" +#line 3884 "util/configparser.c" break; - case 351: -#line 1170 "./util/configparser.y" + case 353: +#line 1178 "./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 3876 "util/configparser.c" +#line 3894 "util/configparser.c" break; - case 352: -#line 1177 "./util/configparser.y" + case 354: +#line 1185 "./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 3886 "util/configparser.c" +#line 3904 "util/configparser.c" break; - case 353: -#line 1184 "./util/configparser.y" + case 355: +#line 1192 "./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 3896 "util/configparser.c" +#line 3914 "util/configparser.c" break; - case 354: -#line 1191 "./util/configparser.y" + case 356: +#line 1199 "./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 3906 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 355: -#line 1198 "./util/configparser.y" + case 357: +#line 1206 "./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 3917 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 356: -#line 1206 "./util/configparser.y" + case 358: +#line 1214 "./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 3928 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 357: -#line 1214 "./util/configparser.y" + case 359: +#line 1222 "./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 3939 "util/configparser.c" +#line 3957 "util/configparser.c" break; - case 358: -#line 1222 "./util/configparser.y" + case 360: +#line 1230 "./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 3949 "util/configparser.c" +#line 3967 "util/configparser.c" break; - case 359: -#line 1229 "./util/configparser.y" + case 361: +#line 1237 "./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) @@ -3959,11 +3977,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3963 "util/configparser.c" +#line 3981 "util/configparser.c" break; - case 360: -#line 1240 "./util/configparser.y" + case 362: +#line 1248 "./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) @@ -3973,21 +3991,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3977 "util/configparser.c" +#line 3995 "util/configparser.c" break; - case 361: -#line 1251 "./util/configparser.y" + case 363: +#line 1259 "./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 3987 "util/configparser.c" +#line 4005 "util/configparser.c" break; - case 362: -#line 1258 "./util/configparser.y" + case 364: +#line 1266 "./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) @@ -3995,11 +4013,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3999 "util/configparser.c" +#line 4017 "util/configparser.c" break; - case 363: -#line 1267 "./util/configparser.y" + case 365: +#line 1275 "./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) @@ -4007,11 +4025,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4011 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 364: -#line 1276 "./util/configparser.y" + case 366: +#line 1284 "./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) @@ -4019,53 +4037,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4023 "util/configparser.c" +#line 4041 "util/configparser.c" break; - case 365: -#line 1285 "./util/configparser.y" + case 367: +#line 1293 "./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 4033 "util/configparser.c" +#line 4051 "util/configparser.c" break; - case 366: -#line 1292 "./util/configparser.y" + case 368: +#line 1300 "./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 4043 "util/configparser.c" +#line 4061 "util/configparser.c" break; - case 367: -#line 1299 "./util/configparser.y" + case 369: +#line 1307 "./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 4054 "util/configparser.c" +#line 4072 "util/configparser.c" break; - case 368: -#line 1307 "./util/configparser.y" + case 370: +#line 1315 "./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 4065 "util/configparser.c" +#line 4083 "util/configparser.c" break; - case 369: -#line 1315 "./util/configparser.y" + case 371: +#line 1323 "./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) @@ -4074,11 +4092,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 370: -#line 1325 "./util/configparser.y" + case 372: +#line 1333 "./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) @@ -4087,11 +4105,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4109 "util/configparser.c" break; - case 371: -#line 1335 "./util/configparser.y" + case 373: +#line 1343 "./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) @@ -4100,11 +4118,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 372: -#line 1345 "./util/configparser.y" + case 374: +#line 1353 "./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) @@ -4117,22 +4135,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4121 "util/configparser.c" +#line 4139 "util/configparser.c" break; - case 373: -#line 1359 "./util/configparser.y" + case 375: +#line 1367 "./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 4132 "util/configparser.c" +#line 4150 "util/configparser.c" break; - case 374: -#line 1367 "./util/configparser.y" + case 376: +#line 1375 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4144,11 +4162,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4148 "util/configparser.c" +#line 4166 "util/configparser.c" break; - case 375: -#line 1380 "./util/configparser.y" + case 377: +#line 1388 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4158,22 +4176,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4162 "util/configparser.c" +#line 4180 "util/configparser.c" break; - case 376: -#line 1391 "./util/configparser.y" + case 378: +#line 1399 "./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 4173 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 377: -#line 1399 "./util/configparser.y" + case 379: +#line 1407 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4185,11 +4203,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4189 "util/configparser.c" +#line 4207 "util/configparser.c" break; - case 378: -#line 1412 "./util/configparser.y" + case 380: +#line 1420 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4197,11 +4215,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4201 "util/configparser.c" +#line 4219 "util/configparser.c" break; - case 379: -#line 1421 "./util/configparser.y" + case 381: +#line 1429 "./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) @@ -4209,11 +4227,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4213 "util/configparser.c" +#line 4231 "util/configparser.c" break; - case 380: -#line 1430 "./util/configparser.y" + case 382: +#line 1438 "./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) @@ -4221,11 +4239,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4225 "util/configparser.c" +#line 4243 "util/configparser.c" break; - case 381: -#line 1439 "./util/configparser.y" + case 383: +#line 1447 "./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) @@ -4234,11 +4252,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4238 "util/configparser.c" +#line 4256 "util/configparser.c" break; - case 382: -#line 1449 "./util/configparser.y" + case 384: +#line 1457 "./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) @@ -4247,22 +4265,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4251 "util/configparser.c" +#line 4269 "util/configparser.c" break; - case 383: -#line 1459 "./util/configparser.y" + case 385: +#line 1467 "./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 4262 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 384: -#line 1467 "./util/configparser.y" + case 386: +#line 1475 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4274,11 +4292,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4278 "util/configparser.c" +#line 4296 "util/configparser.c" break; - case 385: -#line 1480 "./util/configparser.y" + case 387: +#line 1488 "./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) @@ -4286,22 +4304,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4290 "util/configparser.c" +#line 4308 "util/configparser.c" break; - case 386: -#line 1489 "./util/configparser.y" + case 388: +#line 1497 "./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 4301 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 387: -#line 1497 "./util/configparser.y" + case 389: +#line 1505 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4309,22 +4327,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4331 "util/configparser.c" break; - case 388: -#line 1506 "./util/configparser.y" + case 390: +#line 1514 "./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 4324 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 389: -#line 1514 "./util/configparser.y" + case 391: +#line 1522 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4336,11 +4354,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4340 "util/configparser.c" +#line 4358 "util/configparser.c" break; - case 390: -#line 1527 "./util/configparser.y" + case 392: +#line 1535 "./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) @@ -4348,21 +4366,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4352 "util/configparser.c" +#line 4370 "util/configparser.c" break; - case 391: -#line 1536 "./util/configparser.y" + case 393: +#line 1544 "./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 4362 "util/configparser.c" +#line 4380 "util/configparser.c" break; - case 392: -#line 1543 "./util/configparser.y" + case 394: +#line 1551 "./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) @@ -4371,11 +4389,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4375 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 393: -#line 1553 "./util/configparser.y" + case 395: +#line 1561 "./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) @@ -4384,11 +4402,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4388 "util/configparser.c" +#line 4406 "util/configparser.c" break; - case 394: -#line 1563 "./util/configparser.y" + case 396: +#line 1571 "./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) @@ -4397,11 +4415,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4401 "util/configparser.c" +#line 4419 "util/configparser.c" break; - case 395: -#line 1573 "./util/configparser.y" + case 397: +#line 1581 "./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) @@ -4410,11 +4428,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4414 "util/configparser.c" +#line 4432 "util/configparser.c" break; - case 396: -#line 1583 "./util/configparser.y" + case 398: +#line 1591 "./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) @@ -4423,11 +4441,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4445 "util/configparser.c" break; - case 397: -#line 1593 "./util/configparser.y" + case 399: +#line 1601 "./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) @@ -4436,11 +4454,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4440 "util/configparser.c" +#line 4458 "util/configparser.c" break; - case 398: -#line 1603 "./util/configparser.y" + case 400: +#line 1611 "./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) @@ -4449,11 +4467,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4453 "util/configparser.c" +#line 4471 "util/configparser.c" break; - case 399: -#line 1613 "./util/configparser.y" + case 401: +#line 1621 "./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) @@ -4462,41 +4480,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4466 "util/configparser.c" +#line 4484 "util/configparser.c" break; - case 400: -#line 1623 "./util/configparser.y" + case 402: +#line 1631 "./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 4476 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 401: -#line 1630 "./util/configparser.y" + case 403: +#line 1638 "./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 4486 "util/configparser.c" +#line 4504 "util/configparser.c" break; - case 402: -#line 1637 "./util/configparser.y" + case 404: +#line 1645 "./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 4496 "util/configparser.c" +#line 4514 "util/configparser.c" break; - case 403: -#line 1644 "./util/configparser.y" + case 405: +#line 1652 "./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) @@ -4504,11 +4522,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4508 "util/configparser.c" +#line 4526 "util/configparser.c" break; - case 404: -#line 1653 "./util/configparser.y" + case 406: +#line 1661 "./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) @@ -4516,11 +4534,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4520 "util/configparser.c" +#line 4538 "util/configparser.c" break; - case 405: -#line 1662 "./util/configparser.y" + case 407: +#line 1670 "./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) @@ -4528,11 +4546,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4532 "util/configparser.c" +#line 4550 "util/configparser.c" break; - case 406: -#line 1671 "./util/configparser.y" + case 408: +#line 1679 "./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) @@ -4540,21 +4558,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4544 "util/configparser.c" +#line 4562 "util/configparser.c" break; - case 407: -#line 1680 "./util/configparser.y" + case 409: +#line 1688 "./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 4554 "util/configparser.c" +#line 4572 "util/configparser.c" break; - case 408: -#line 1687 "./util/configparser.y" + case 410: +#line 1695 "./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) @@ -4563,11 +4581,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4585 "util/configparser.c" break; - case 409: -#line 1697 "./util/configparser.y" + case 411: +#line 1705 "./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 && @@ -4586,21 +4604,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4590 "util/configparser.c" +#line 4608 "util/configparser.c" break; - case 410: -#line 1717 "./util/configparser.y" + case 412: +#line 1725 "./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 4600 "util/configparser.c" +#line 4618 "util/configparser.c" break; - case 411: -#line 1724 "./util/configparser.y" + case 413: +#line 1732 "./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) { @@ -4617,11 +4635,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4639 "util/configparser.c" break; - case 412: -#line 1742 "./util/configparser.y" + case 414: +#line 1750 "./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) { @@ -4633,11 +4651,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 413: -#line 1755 "./util/configparser.y" + case 415: +#line 1763 "./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) { @@ -4649,11 +4667,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4653 "util/configparser.c" +#line 4671 "util/configparser.c" break; - case 414: -#line 1768 "./util/configparser.y" + case 416: +#line 1776 "./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) @@ -4661,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4665 "util/configparser.c" +#line 4683 "util/configparser.c" break; - case 415: -#line 1777 "./util/configparser.y" + case 417: +#line 1785 "./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) @@ -4673,11 +4691,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4677 "util/configparser.c" +#line 4695 "util/configparser.c" break; - case 416: -#line 1786 "./util/configparser.y" + case 418: +#line 1794 "./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) @@ -4685,11 +4703,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4707 "util/configparser.c" break; - case 417: -#line 1795 "./util/configparser.y" + case 419: +#line 1803 "./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) @@ -4697,11 +4715,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4701 "util/configparser.c" +#line 4719 "util/configparser.c" break; - case 418: -#line 1804 "./util/configparser.y" + case 420: +#line 1812 "./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) @@ -4710,11 +4728,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4714 "util/configparser.c" +#line 4732 "util/configparser.c" break; - case 419: -#line 1814 "./util/configparser.y" + case 421: +#line 1822 "./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) @@ -4723,11 +4741,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4727 "util/configparser.c" +#line 4745 "util/configparser.c" break; - case 420: -#line 1824 "./util/configparser.y" + case 422: +#line 1832 "./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) @@ -4737,11 +4755,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4741 "util/configparser.c" +#line 4759 "util/configparser.c" break; - case 421: -#line 1835 "./util/configparser.y" + case 423: +#line 1843 "./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) @@ -4749,11 +4767,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4753 "util/configparser.c" +#line 4771 "util/configparser.c" break; - case 422: -#line 1844 "./util/configparser.y" + case 424: +#line 1852 "./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) @@ -4761,11 +4779,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4765 "util/configparser.c" +#line 4783 "util/configparser.c" break; - case 423: -#line 1853 "./util/configparser.y" + case 425: +#line 1861 "./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) @@ -4773,11 +4791,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4777 "util/configparser.c" +#line 4795 "util/configparser.c" break; - case 424: -#line 1862 "./util/configparser.y" + case 426: +#line 1870 "./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) @@ -4785,11 +4803,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4789 "util/configparser.c" +#line 4807 "util/configparser.c" break; - case 425: -#line 1871 "./util/configparser.y" + case 427: +#line 1879 "./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) @@ -4797,11 +4815,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4819 "util/configparser.c" break; - case 426: -#line 1880 "./util/configparser.y" + case 428: +#line 1888 "./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) @@ -4809,11 +4827,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4813 "util/configparser.c" +#line 4831 "util/configparser.c" break; - case 427: -#line 1889 "./util/configparser.y" + case 429: +#line 1897 "./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) @@ -4825,11 +4843,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4847 "util/configparser.c" break; - case 428: -#line 1902 "./util/configparser.y" + case 430: +#line 1910 "./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) @@ -4841,11 +4859,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4845 "util/configparser.c" +#line 4863 "util/configparser.c" break; - case 429: -#line 1915 "./util/configparser.y" + case 431: +#line 1923 "./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) @@ -4853,21 +4871,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4857 "util/configparser.c" +#line 4875 "util/configparser.c" break; - case 430: -#line 1924 "./util/configparser.y" + case 432: +#line 1932 "./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 4867 "util/configparser.c" +#line 4885 "util/configparser.c" break; - case 431: -#line 1931 "./util/configparser.y" + case 433: +#line 1939 "./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) @@ -4875,11 +4893,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4879 "util/configparser.c" +#line 4897 "util/configparser.c" break; - case 432: -#line 1940 "./util/configparser.y" + case 434: +#line 1948 "./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) @@ -4887,11 +4905,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4891 "util/configparser.c" +#line 4909 "util/configparser.c" break; - case 433: -#line 1949 "./util/configparser.y" + case 435: +#line 1957 "./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) @@ -4899,11 +4917,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4903 "util/configparser.c" +#line 4921 "util/configparser.c" break; - case 434: -#line 1958 "./util/configparser.y" + case 436: +#line 1966 "./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) @@ -4912,22 +4930,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4916 "util/configparser.c" +#line 4934 "util/configparser.c" break; - case 435: -#line 1967 "./util/configparser.y" + case 437: +#line 1975 "./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 4927 "util/configparser.c" +#line 4945 "util/configparser.c" break; - case 436: -#line 1975 "./util/configparser.y" + case 438: +#line 1983 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4939,22 +4957,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4943 "util/configparser.c" +#line 4961 "util/configparser.c" break; - case 437: -#line 1988 "./util/configparser.y" + case 439: +#line 1996 "./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 4954 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 438: -#line 1996 "./util/configparser.y" + case 440: +#line 2004 "./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 && @@ -4994,21 +5012,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4998 "util/configparser.c" +#line 5016 "util/configparser.c" break; - case 439: -#line 2037 "./util/configparser.y" + case 441: +#line 2045 "./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 5008 "util/configparser.c" +#line 5026 "util/configparser.c" break; - case 440: -#line 2044 "./util/configparser.y" + case 442: +#line 2052 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5022,11 +5040,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5026 "util/configparser.c" +#line 5044 "util/configparser.c" break; - case 441: -#line 2059 "./util/configparser.y" + case 443: +#line 2067 "./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) @@ -5035,11 +5053,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5039 "util/configparser.c" +#line 5057 "util/configparser.c" break; - case 442: -#line 2069 "./util/configparser.y" + case 444: +#line 2077 "./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) @@ -5048,41 +5066,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5052 "util/configparser.c" +#line 5070 "util/configparser.c" break; - case 443: -#line 2079 "./util/configparser.y" + case 445: +#line 2087 "./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 5062 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 444: -#line 2086 "./util/configparser.y" + case 446: +#line 2094 "./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 5072 "util/configparser.c" +#line 5090 "util/configparser.c" break; - case 445: -#line 2093 "./util/configparser.y" + case 447: +#line 2101 "./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 5082 "util/configparser.c" +#line 5100 "util/configparser.c" break; - case 446: -#line 2100 "./util/configparser.y" + case 448: +#line 2108 "./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) @@ -5090,22 +5108,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5112 "util/configparser.c" break; - case 447: -#line 2109 "./util/configparser.y" + case 449: +#line 2117 "./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 5105 "util/configparser.c" +#line 5123 "util/configparser.c" break; - case 448: -#line 2117 "./util/configparser.y" + case 450: +#line 2125 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5118,11 +5136,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5122 "util/configparser.c" +#line 5140 "util/configparser.c" break; - case 449: -#line 2131 "./util/configparser.y" + case 451: +#line 2139 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5142,11 +5160,11 @@ yyreduce: } } } -#line 5146 "util/configparser.c" +#line 5164 "util/configparser.c" break; - case 450: -#line 2152 "./util/configparser.y" + case 452: +#line 2160 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5166,11 +5184,11 @@ yyreduce: } } } -#line 5170 "util/configparser.c" +#line 5188 "util/configparser.c" break; - case 451: -#line 2173 "./util/configparser.y" + case 453: +#line 2181 "./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, @@ -5181,11 +5199,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5185 "util/configparser.c" +#line 5203 "util/configparser.c" break; - case 452: -#line 2185 "./util/configparser.y" + case 454: +#line 2193 "./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, @@ -5196,11 +5214,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5200 "util/configparser.c" +#line 5218 "util/configparser.c" break; - case 453: -#line 2197 "./util/configparser.y" + case 455: +#line 2205 "./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, @@ -5211,11 +5229,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5215 "util/configparser.c" +#line 5233 "util/configparser.c" break; - case 454: -#line 2209 "./util/configparser.y" + case 456: +#line 2217 "./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, @@ -5223,11 +5241,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5227 "util/configparser.c" +#line 5245 "util/configparser.c" break; - case 455: -#line 2218 "./util/configparser.y" + case 457: +#line 2226 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5247,11 +5265,11 @@ yyreduce: } } } -#line 5251 "util/configparser.c" +#line 5269 "util/configparser.c" break; - case 456: -#line 2239 "./util/configparser.y" + case 458: +#line 2247 "./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) @@ -5259,11 +5277,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5281 "util/configparser.c" break; - case 457: -#line 2249 "./util/configparser.y" + case 459: +#line 2257 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5271,33 +5289,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5293 "util/configparser.c" break; - case 458: -#line 2258 "./util/configparser.y" + case 460: +#line 2266 "./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 5286 "util/configparser.c" +#line 5304 "util/configparser.c" break; - case 459: -#line 2266 "./util/configparser.y" + case 461: +#line 2274 "./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 5297 "util/configparser.c" +#line 5315 "util/configparser.c" break; - case 460: -#line 2274 "./util/configparser.y" + case 462: +#line 2282 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5309,11 +5327,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5313 "util/configparser.c" +#line 5331 "util/configparser.c" break; - case 461: -#line 2287 "./util/configparser.y" + case 463: +#line 2295 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5325,11 +5343,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5329 "util/configparser.c" +#line 5347 "util/configparser.c" break; - case 462: -#line 2300 "./util/configparser.y" + case 464: +#line 2308 "./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) { @@ -5343,11 +5361,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5347 "util/configparser.c" +#line 5365 "util/configparser.c" break; - case 463: -#line 2315 "./util/configparser.y" + case 465: +#line 2323 "./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) { @@ -5361,11 +5379,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5365 "util/configparser.c" +#line 5383 "util/configparser.c" break; - case 464: -#line 2330 "./util/configparser.y" + case 466: +#line 2338 "./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) @@ -5373,11 +5391,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5377 "util/configparser.c" +#line 5395 "util/configparser.c" break; - case 465: -#line 2339 "./util/configparser.y" + case 467: +#line 2347 "./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) @@ -5385,20 +5403,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5389 "util/configparser.c" +#line 5407 "util/configparser.c" break; - case 466: -#line 2348 "./util/configparser.y" + case 468: +#line 2356 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5398 "util/configparser.c" +#line 5416 "util/configparser.c" break; - case 467: -#line 2354 "./util/configparser.y" + case 469: +#line 2362 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5406,11 +5424,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5410 "util/configparser.c" +#line 5428 "util/configparser.c" break; - case 468: -#line 2363 "./util/configparser.y" + case 470: +#line 2371 "./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) @@ -5418,11 +5436,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5422 "util/configparser.c" +#line 5440 "util/configparser.c" break; - case 469: -#line 2372 "./util/configparser.y" + case 471: +#line 2380 "./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) @@ -5431,11 +5449,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5435 "util/configparser.c" +#line 5453 "util/configparser.c" break; - case 470: -#line 2382 "./util/configparser.y" + case 472: +#line 2390 "./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) @@ -5444,11 +5462,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5448 "util/configparser.c" +#line 5466 "util/configparser.c" break; - case 471: -#line 2392 "./util/configparser.y" + case 473: +#line 2400 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5460,11 +5478,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5464 "util/configparser.c" +#line 5482 "util/configparser.c" break; - case 472: -#line 2405 "./util/configparser.y" + case 474: +#line 2413 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5476,11 +5494,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5498 "util/configparser.c" break; - case 473: -#line 2418 "./util/configparser.y" + case 475: +#line 2426 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5491,11 +5509,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5495 "util/configparser.c" +#line 5513 "util/configparser.c" break; - case 474: -#line 2430 "./util/configparser.y" + case 476: +#line 2438 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5508,11 +5526,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5512 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 475: -#line 2444 "./util/configparser.y" + case 477: +#line 2452 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5523,11 +5541,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5527 "util/configparser.c" +#line 5545 "util/configparser.c" break; - case 476: -#line 2456 "./util/configparser.y" + case 478: +#line 2464 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5540,11 +5558,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5544 "util/configparser.c" +#line 5562 "util/configparser.c" break; - case 477: -#line 2470 "./util/configparser.y" + case 479: +#line 2478 "./util/configparser.y" { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5558,11 +5576,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5562 "util/configparser.c" +#line 5580 "util/configparser.c" break; - case 478: -#line 2485 "./util/configparser.y" + case 480: +#line 2493 "./util/configparser.y" { OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5572,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); } -#line 5576 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 479: -#line 2496 "./util/configparser.y" + case 481: +#line 2504 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5585,31 +5603,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5589 "util/configparser.c" +#line 5607 "util/configparser.c" break; - case 480: -#line 2506 "./util/configparser.y" + case 482: +#line 2514 "./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 5599 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 481: -#line 2513 "./util/configparser.y" + case 483: +#line 2521 "./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 5609 "util/configparser.c" +#line 5627 "util/configparser.c" break; - case 482: -#line 2520 "./util/configparser.y" + case 484: +#line 2528 "./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) @@ -5617,11 +5635,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5621 "util/configparser.c" +#line 5639 "util/configparser.c" break; - case 483: -#line 2529 "./util/configparser.y" + case 485: +#line 2537 "./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) @@ -5629,11 +5647,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5633 "util/configparser.c" +#line 5651 "util/configparser.c" break; - case 484: -#line 2538 "./util/configparser.y" + case 486: +#line 2546 "./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) @@ -5642,11 +5660,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5646 "util/configparser.c" +#line 5664 "util/configparser.c" break; - case 485: -#line 2548 "./util/configparser.y" + case 487: +#line 2556 "./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) @@ -5655,11 +5673,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5659 "util/configparser.c" +#line 5677 "util/configparser.c" break; - case 486: -#line 2558 "./util/configparser.y" + case 488: +#line 2566 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5668,31 +5686,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5672 "util/configparser.c" +#line 5690 "util/configparser.c" break; - case 487: -#line 2568 "./util/configparser.y" + case 489: +#line 2576 "./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 5682 "util/configparser.c" +#line 5700 "util/configparser.c" break; - case 488: -#line 2575 "./util/configparser.y" + case 490: +#line 2583 "./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 5692 "util/configparser.c" +#line 5710 "util/configparser.c" break; - case 489: -#line 2582 "./util/configparser.y" + case 491: +#line 2590 "./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) @@ -5700,11 +5718,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5704 "util/configparser.c" +#line 5722 "util/configparser.c" break; - case 490: -#line 2591 "./util/configparser.y" + case 492: +#line 2599 "./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) @@ -5712,11 +5730,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5716 "util/configparser.c" +#line 5734 "util/configparser.c" break; - case 491: -#line 2600 "./util/configparser.y" + case 493: +#line 2608 "./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) @@ -5725,11 +5743,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5729 "util/configparser.c" +#line 5747 "util/configparser.c" break; - case 492: -#line 2610 "./util/configparser.y" + case 494: +#line 2618 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5738,52 +5756,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5742 "util/configparser.c" +#line 5760 "util/configparser.c" break; - case 493: -#line 2620 "./util/configparser.y" + case 495: +#line 2628 "./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 5752 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 494: -#line 2627 "./util/configparser.y" + case 496: +#line 2635 "./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 5762 "util/configparser.c" +#line 5780 "util/configparser.c" break; - case 495: -#line 2634 "./util/configparser.y" + case 497: +#line 2642 "./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 5772 "util/configparser.c" +#line 5790 "util/configparser.c" break; - case 496: -#line 2641 "./util/configparser.y" + case 498: +#line 2649 "./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 5783 "util/configparser.c" +#line 5801 "util/configparser.c" break; - case 497: -#line 2649 "./util/configparser.y" + case 499: +#line 2657 "./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) @@ -5792,11 +5810,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5814 "util/configparser.c" break; - case 498: -#line 2659 "./util/configparser.y" + case 500: +#line 2667 "./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) @@ -5805,11 +5823,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5809 "util/configparser.c" +#line 5827 "util/configparser.c" break; - case 499: -#line 2669 "./util/configparser.y" + case 501: +#line 2677 "./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) @@ -5818,11 +5836,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5822 "util/configparser.c" +#line 5840 "util/configparser.c" break; - case 500: -#line 2679 "./util/configparser.y" + case 502: +#line 2687 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5831,11 +5849,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5835 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 501: -#line 2689 "./util/configparser.y" + case 503: +#line 2697 "./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 && @@ -5873,11 +5891,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5877 "util/configparser.c" +#line 5895 "util/configparser.c" break; - case 502: -#line 2728 "./util/configparser.y" + case 504: +#line 2736 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5886,33 +5904,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5890 "util/configparser.c" +#line 5908 "util/configparser.c" break; - case 503: -#line 2738 "./util/configparser.y" + case 505: +#line 2746 "./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 5901 "util/configparser.c" +#line 5919 "util/configparser.c" break; - case 504: -#line 2746 "./util/configparser.y" + case 506: +#line 2754 "./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 5912 "util/configparser.c" +#line 5930 "util/configparser.c" break; - case 505: -#line 2754 "./util/configparser.y" + case 507: +#line 2762 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5926,11 +5944,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5930 "util/configparser.c" +#line 5948 "util/configparser.c" break; - case 506: -#line 2769 "./util/configparser.y" + case 508: +#line 2777 "./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) @@ -5938,19 +5956,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5942 "util/configparser.c" +#line 5960 "util/configparser.c" break; - case 507: -#line 2778 "./util/configparser.y" + case 509: +#line 2786 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5950 "util/configparser.c" +#line 5968 "util/configparser.c" break; - case 518: -#line 2789 "./util/configparser.y" + case 520: +#line 2797 "./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) @@ -5959,11 +5977,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5963 "util/configparser.c" +#line 5981 "util/configparser.c" break; - case 519: -#line 2799 "./util/configparser.y" + case 521: +#line 2807 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5971,79 +5989,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5975 "util/configparser.c" +#line 5993 "util/configparser.c" break; - case 520: -#line 2808 "./util/configparser.y" + case 522: +#line 2816 "./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 5985 "util/configparser.c" +#line 6003 "util/configparser.c" break; - case 521: -#line 2815 "./util/configparser.y" + case 523: +#line 2823 "./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 5995 "util/configparser.c" +#line 6013 "util/configparser.c" break; - case 522: -#line 2822 "./util/configparser.y" + case 524: +#line 2830 "./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 6005 "util/configparser.c" +#line 6023 "util/configparser.c" break; - case 523: -#line 2829 "./util/configparser.y" + case 525: +#line 2837 "./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 6015 "util/configparser.c" +#line 6033 "util/configparser.c" break; - case 524: -#line 2836 "./util/configparser.y" + case 526: +#line 2844 "./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 6025 "util/configparser.c" +#line 6043 "util/configparser.c" break; - case 525: -#line 2843 "./util/configparser.y" + case 527: +#line 2851 "./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 6035 "util/configparser.c" +#line 6053 "util/configparser.c" break; - case 526: -#line 2850 "./util/configparser.y" + case 528: +#line 2858 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6043 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 548: -#line 2870 "./util/configparser.y" + case 550: +#line 2878 "./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) @@ -6051,11 +6069,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6055 "util/configparser.c" +#line 6073 "util/configparser.c" break; - case 549: -#line 2879 "./util/configparser.y" + case 551: +#line 2887 "./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) @@ -6064,31 +6082,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6068 "util/configparser.c" +#line 6086 "util/configparser.c" break; - case 550: -#line 2889 "./util/configparser.y" + case 552: +#line 2897 "./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 6078 "util/configparser.c" +#line 6096 "util/configparser.c" break; - case 551: -#line 2896 "./util/configparser.y" + case 553: +#line 2904 "./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 6088 "util/configparser.c" +#line 6106 "util/configparser.c" break; - case 552: -#line 2903 "./util/configparser.y" + case 554: +#line 2911 "./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) @@ -6096,51 +6114,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6100 "util/configparser.c" +#line 6118 "util/configparser.c" break; - case 553: -#line 2912 "./util/configparser.y" + case 555: +#line 2920 "./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 6110 "util/configparser.c" +#line 6128 "util/configparser.c" break; - case 554: -#line 2919 "./util/configparser.y" + case 556: +#line 2927 "./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 6120 "util/configparser.c" +#line 6138 "util/configparser.c" break; - case 555: -#line 2926 "./util/configparser.y" + case 557: +#line 2934 "./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 6130 "util/configparser.c" +#line 6148 "util/configparser.c" break; - case 556: -#line 2933 "./util/configparser.y" + case 558: +#line 2941 "./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 6140 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 557: -#line 2940 "./util/configparser.y" + case 559: +#line 2948 "./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) @@ -6148,11 +6166,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6152 "util/configparser.c" +#line 6170 "util/configparser.c" break; - case 558: -#line 2949 "./util/configparser.y" + case 560: +#line 2957 "./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) @@ -6160,31 +6178,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6164 "util/configparser.c" +#line 6182 "util/configparser.c" break; - case 559: -#line 2958 "./util/configparser.y" + case 561: +#line 2966 "./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 6174 "util/configparser.c" +#line 6192 "util/configparser.c" break; - case 560: -#line 2965 "./util/configparser.y" + case 562: +#line 2973 "./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 6184 "util/configparser.c" +#line 6202 "util/configparser.c" break; - case 561: -#line 2972 "./util/configparser.y" + case 563: +#line 2980 "./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) @@ -6193,11 +6211,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6197 "util/configparser.c" +#line 6215 "util/configparser.c" break; - case 562: -#line 2982 "./util/configparser.y" + case 564: +#line 2990 "./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) @@ -6206,11 +6224,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6210 "util/configparser.c" +#line 6228 "util/configparser.c" break; - case 563: -#line 2992 "./util/configparser.y" + case 565: +#line 3000 "./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) @@ -6219,11 +6237,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6223 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 564: -#line 3002 "./util/configparser.y" + case 566: +#line 3010 "./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) @@ -6232,11 +6250,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6236 "util/configparser.c" +#line 6254 "util/configparser.c" break; - case 565: -#line 3012 "./util/configparser.y" + case 567: +#line 3020 "./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) @@ -6245,11 +6263,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6249 "util/configparser.c" +#line 6267 "util/configparser.c" break; - case 566: -#line 3022 "./util/configparser.y" + case 568: +#line 3030 "./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) @@ -6258,47 +6276,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6280 "util/configparser.c" break; - case 567: -#line 3032 "./util/configparser.y" + case 569: +#line 3040 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6270 "util/configparser.c" +#line 6288 "util/configparser.c" break; - case 571: -#line 3041 "./util/configparser.y" + case 573: +#line 3049 "./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 6280 "util/configparser.c" +#line 6298 "util/configparser.c" break; - case 572: -#line 3047 "./util/configparser.y" + case 574: +#line 3055 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6288 "util/configparser.c" +#line 6306 "util/configparser.c" break; - case 576: -#line 3056 "./util/configparser.y" + case 578: +#line 3064 "./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 6298 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 577: -#line 3062 "./util/configparser.y" + case 579: +#line 3070 "./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) @@ -6307,21 +6325,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6311 "util/configparser.c" +#line 6329 "util/configparser.c" break; - case 578: -#line 3072 "./util/configparser.y" + case 580: +#line 3080 "./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 6321 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 579: -#line 3079 "./util/configparser.y" + case 581: +#line 3087 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6329,30 +6347,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6333 "util/configparser.c" +#line 6351 "util/configparser.c" break; - case 580: -#line 3088 "./util/configparser.y" + case 582: +#line 3096 "./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 6344 "util/configparser.c" +#line 6362 "util/configparser.c" break; - case 581: -#line 3096 "./util/configparser.y" + case 583: +#line 3104 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6352 "util/configparser.c" +#line 6370 "util/configparser.c" break; - case 594: -#line 3112 "./util/configparser.y" + case 596: +#line 3120 "./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) @@ -6360,11 +6378,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6364 "util/configparser.c" +#line 6382 "util/configparser.c" break; - case 595: -#line 3122 "./util/configparser.y" + case 597: +#line 3130 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6372,21 +6390,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 596: -#line 3131 "./util/configparser.y" + case 598: +#line 3139 "./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 6386 "util/configparser.c" +#line 6404 "util/configparser.c" break; - case 597: -#line 3138 "./util/configparser.y" + case 599: +#line 3146 "./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))) @@ -6394,21 +6412,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 6398 "util/configparser.c" +#line 6416 "util/configparser.c" break; - case 598: -#line 3147 "./util/configparser.y" + case 600: +#line 3155 "./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 6408 "util/configparser.c" +#line 6426 "util/configparser.c" break; - case 599: -#line 3154 "./util/configparser.y" + case 601: +#line 3162 "./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))) @@ -6416,22 +6434,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 6420 "util/configparser.c" +#line 6438 "util/configparser.c" break; - case 600: -#line 3163 "./util/configparser.y" + case 602: +#line 3171 "./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 6431 "util/configparser.c" +#line 6449 "util/configparser.c" break; - case 601: -#line 3171 "./util/configparser.y" + case 603: +#line 3179 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6443,22 +6461,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6447 "util/configparser.c" +#line 6465 "util/configparser.c" break; - case 602: -#line 3184 "./util/configparser.y" + case 604: +#line 3192 "./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 6458 "util/configparser.c" +#line 6476 "util/configparser.c" break; - case 603: -#line 3192 "./util/configparser.y" + case 605: +#line 3200 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6470,19 +6488,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6474 "util/configparser.c" +#line 6492 "util/configparser.c" break; - case 604: -#line 3205 "./util/configparser.y" + case 606: +#line 3213 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6482 "util/configparser.c" +#line 6500 "util/configparser.c" break; - case 613: -#line 3216 "./util/configparser.y" + case 615: +#line 3224 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6493,11 +6511,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6497 "util/configparser.c" +#line 6515 "util/configparser.c" break; - case 614: -#line 3228 "./util/configparser.y" + case 616: +#line 3236 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6508,11 +6526,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6512 "util/configparser.c" +#line 6530 "util/configparser.c" break; - case 615: -#line 3240 "./util/configparser.y" + case 617: +#line 3248 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6523,11 +6541,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6527 "util/configparser.c" +#line 6545 "util/configparser.c" break; - case 616: -#line 3252 "./util/configparser.y" + case 618: +#line 3260 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6541,11 +6559,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6545 "util/configparser.c" +#line 6563 "util/configparser.c" break; - case 617: -#line 3267 "./util/configparser.y" + case 619: +#line 3275 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6557,11 +6575,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6561 "util/configparser.c" +#line 6579 "util/configparser.c" break; - case 618: -#line 3280 "./util/configparser.y" + case 620: +#line 3288 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6573,11 +6591,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6577 "util/configparser.c" +#line 6595 "util/configparser.c" break; - case 619: -#line 3293 "./util/configparser.y" + case 621: +#line 3301 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6587,19 +6605,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6591 "util/configparser.c" +#line 6609 "util/configparser.c" break; - case 620: -#line 3304 "./util/configparser.y" + case 622: +#line 3312 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6599 "util/configparser.c" +#line 6617 "util/configparser.c" break; - case 625: -#line 3313 "./util/configparser.y" + case 627: +#line 3321 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6613,11 +6631,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6617 "util/configparser.c" +#line 6635 "util/configparser.c" break; - case 626: -#line 3328 "./util/configparser.y" + case 628: +#line 3336 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6631,11 +6649,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6635 "util/configparser.c" +#line 6653 "util/configparser.c" break; -#line 6639 "util/configparser.c" +#line 6657 "util/configparser.c" default: break; } @@ -6867,7 +6885,7 @@ yyreturn: #endif return yyresult; } -#line 3342 "./util/configparser.y" +#line 3350 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 627d4cbf9..6dcafd644 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -194,158 +194,159 @@ extern int yydebug; VAR_HTTP_QUERY_BUFFER_SIZE = 400, VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, VAR_HTTP_NODELAY = 402, - VAR_STUB_FIRST = 403, - VAR_MINIMAL_RESPONSES = 404, - VAR_RRSET_ROUNDROBIN = 405, - VAR_MAX_UDP_SIZE = 406, - VAR_DELAY_CLOSE = 407, - VAR_UNBLOCK_LAN_ZONES = 408, - VAR_INSECURE_LAN_ZONES = 409, - VAR_INFRA_CACHE_MIN_RTT = 410, - VAR_DNS64_PREFIX = 411, - VAR_DNS64_SYNTHALL = 412, - VAR_DNS64_IGNORE_AAAA = 413, - VAR_DNSTAP = 414, - VAR_DNSTAP_ENABLE = 415, - VAR_DNSTAP_SOCKET_PATH = 416, - VAR_DNSTAP_IP = 417, - VAR_DNSTAP_TLS = 418, - VAR_DNSTAP_TLS_SERVER_NAME = 419, - VAR_DNSTAP_TLS_CERT_BUNDLE = 420, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 421, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 422, - VAR_DNSTAP_SEND_IDENTITY = 423, - VAR_DNSTAP_SEND_VERSION = 424, - VAR_DNSTAP_BIDIRECTIONAL = 425, - VAR_DNSTAP_IDENTITY = 426, - VAR_DNSTAP_VERSION = 427, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 428, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 429, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 433, - VAR_RESPONSE_IP_TAG = 434, - VAR_RESPONSE_IP = 435, - VAR_RESPONSE_IP_DATA = 436, - VAR_HARDEN_ALGO_DOWNGRADE = 437, - VAR_IP_TRANSPARENT = 438, - VAR_IP_DSCP = 439, - VAR_DISABLE_DNSSEC_LAME_CHECK = 440, - VAR_IP_RATELIMIT = 441, - VAR_IP_RATELIMIT_SLABS = 442, - VAR_IP_RATELIMIT_SIZE = 443, - VAR_RATELIMIT = 444, - VAR_RATELIMIT_SLABS = 445, - VAR_RATELIMIT_SIZE = 446, - VAR_RATELIMIT_FOR_DOMAIN = 447, - VAR_RATELIMIT_BELOW_DOMAIN = 448, - VAR_IP_RATELIMIT_FACTOR = 449, - VAR_RATELIMIT_FACTOR = 450, - VAR_SEND_CLIENT_SUBNET = 451, - VAR_CLIENT_SUBNET_ZONE = 452, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 453, - VAR_CLIENT_SUBNET_OPCODE = 454, - VAR_MAX_CLIENT_SUBNET_IPV4 = 455, - VAR_MAX_CLIENT_SUBNET_IPV6 = 456, - VAR_MIN_CLIENT_SUBNET_IPV4 = 457, - VAR_MIN_CLIENT_SUBNET_IPV6 = 458, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 459, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 460, - VAR_CAPS_WHITELIST = 461, - VAR_CACHE_MAX_NEGATIVE_TTL = 462, - VAR_PERMIT_SMALL_HOLDDOWN = 463, - VAR_QNAME_MINIMISATION = 464, - VAR_QNAME_MINIMISATION_STRICT = 465, - VAR_IP_FREEBIND = 466, - VAR_DEFINE_TAG = 467, - VAR_LOCAL_ZONE_TAG = 468, - VAR_ACCESS_CONTROL_TAG = 469, - VAR_LOCAL_ZONE_OVERRIDE = 470, - VAR_ACCESS_CONTROL_TAG_ACTION = 471, - VAR_ACCESS_CONTROL_TAG_DATA = 472, - VAR_VIEW = 473, - VAR_ACCESS_CONTROL_VIEW = 474, - VAR_VIEW_FIRST = 475, - VAR_SERVE_EXPIRED = 476, - VAR_SERVE_EXPIRED_TTL = 477, - VAR_SERVE_EXPIRED_TTL_RESET = 478, - VAR_SERVE_EXPIRED_REPLY_TTL = 479, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 480, - VAR_FAKE_DSA = 481, - VAR_FAKE_SHA1 = 482, - VAR_LOG_IDENTITY = 483, - VAR_HIDE_TRUSTANCHOR = 484, - VAR_TRUST_ANCHOR_SIGNALING = 485, - VAR_AGGRESSIVE_NSEC = 486, - VAR_USE_SYSTEMD = 487, - VAR_SHM_ENABLE = 488, - VAR_SHM_KEY = 489, - VAR_ROOT_KEY_SENTINEL = 490, - VAR_DNSCRYPT = 491, - VAR_DNSCRYPT_ENABLE = 492, - VAR_DNSCRYPT_PORT = 493, - VAR_DNSCRYPT_PROVIDER = 494, - VAR_DNSCRYPT_SECRET_KEY = 495, - VAR_DNSCRYPT_PROVIDER_CERT = 496, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 497, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 498, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 499, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 500, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 501, - VAR_IPSECMOD_ENABLED = 502, - VAR_IPSECMOD_HOOK = 503, - VAR_IPSECMOD_IGNORE_BOGUS = 504, - VAR_IPSECMOD_MAX_TTL = 505, - VAR_IPSECMOD_WHITELIST = 506, - VAR_IPSECMOD_STRICT = 507, - VAR_CACHEDB = 508, - VAR_CACHEDB_BACKEND = 509, - VAR_CACHEDB_SECRETSEED = 510, - VAR_CACHEDB_REDISHOST = 511, - VAR_CACHEDB_REDISPORT = 512, - VAR_CACHEDB_REDISTIMEOUT = 513, - VAR_CACHEDB_REDISEXPIRERECORDS = 514, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 515, - VAR_FOR_UPSTREAM = 516, - VAR_AUTH_ZONE = 517, - VAR_ZONEFILE = 518, - VAR_MASTER = 519, - VAR_URL = 520, - VAR_FOR_DOWNSTREAM = 521, - VAR_FALLBACK_ENABLED = 522, - VAR_TLS_ADDITIONAL_PORT = 523, - VAR_LOW_RTT = 524, - VAR_LOW_RTT_PERMIL = 525, - VAR_FAST_SERVER_PERMIL = 526, - VAR_FAST_SERVER_NUM = 527, - VAR_ALLOW_NOTIFY = 528, - VAR_TLS_WIN_CERT = 529, - VAR_TCP_CONNECTION_LIMIT = 530, - VAR_FORWARD_NO_CACHE = 531, - VAR_STUB_NO_CACHE = 532, - VAR_LOG_SERVFAIL = 533, - VAR_DENY_ANY = 534, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 535, - VAR_LOG_TAG_QUERYREPLY = 536, - VAR_STREAM_WAIT_SIZE = 537, - VAR_TLS_CIPHERS = 538, - VAR_TLS_CIPHERSUITES = 539, - VAR_TLS_USE_SNI = 540, - VAR_IPSET = 541, - VAR_IPSET_NAME_V4 = 542, - VAR_IPSET_NAME_V6 = 543, - VAR_TLS_SESSION_TICKET_KEYS = 544, - VAR_RPZ = 545, - VAR_TAGS = 546, - VAR_RPZ_ACTION_OVERRIDE = 547, - VAR_RPZ_CNAME_OVERRIDE = 548, - VAR_RPZ_LOG = 549, - VAR_RPZ_LOG_NAME = 550, - VAR_DYNLIB = 551, - VAR_DYNLIB_FILE = 552, - VAR_EDNS_CLIENT_TAG = 553, - VAR_EDNS_CLIENT_TAG_OPCODE = 554 + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UNBLOCK_LAN_ZONES = 409, + VAR_INSECURE_LAN_ZONES = 410, + VAR_INFRA_CACHE_MIN_RTT = 411, + VAR_DNS64_PREFIX = 412, + VAR_DNS64_SYNTHALL = 413, + VAR_DNS64_IGNORE_AAAA = 414, + VAR_DNSTAP = 415, + VAR_DNSTAP_ENABLE = 416, + VAR_DNSTAP_SOCKET_PATH = 417, + VAR_DNSTAP_IP = 418, + VAR_DNSTAP_TLS = 419, + VAR_DNSTAP_TLS_SERVER_NAME = 420, + VAR_DNSTAP_TLS_CERT_BUNDLE = 421, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 422, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 423, + VAR_DNSTAP_SEND_IDENTITY = 424, + VAR_DNSTAP_SEND_VERSION = 425, + VAR_DNSTAP_BIDIRECTIONAL = 426, + VAR_DNSTAP_IDENTITY = 427, + VAR_DNSTAP_VERSION = 428, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 429, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 430, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 434, + VAR_RESPONSE_IP_TAG = 435, + VAR_RESPONSE_IP = 436, + VAR_RESPONSE_IP_DATA = 437, + VAR_HARDEN_ALGO_DOWNGRADE = 438, + VAR_IP_TRANSPARENT = 439, + VAR_IP_DSCP = 440, + VAR_DISABLE_DNSSEC_LAME_CHECK = 441, + VAR_IP_RATELIMIT = 442, + VAR_IP_RATELIMIT_SLABS = 443, + VAR_IP_RATELIMIT_SIZE = 444, + VAR_RATELIMIT = 445, + VAR_RATELIMIT_SLABS = 446, + VAR_RATELIMIT_SIZE = 447, + VAR_RATELIMIT_FOR_DOMAIN = 448, + VAR_RATELIMIT_BELOW_DOMAIN = 449, + VAR_IP_RATELIMIT_FACTOR = 450, + VAR_RATELIMIT_FACTOR = 451, + VAR_SEND_CLIENT_SUBNET = 452, + VAR_CLIENT_SUBNET_ZONE = 453, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 454, + VAR_CLIENT_SUBNET_OPCODE = 455, + VAR_MAX_CLIENT_SUBNET_IPV4 = 456, + VAR_MAX_CLIENT_SUBNET_IPV6 = 457, + VAR_MIN_CLIENT_SUBNET_IPV4 = 458, + VAR_MIN_CLIENT_SUBNET_IPV6 = 459, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 460, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 461, + VAR_CAPS_WHITELIST = 462, + VAR_CACHE_MAX_NEGATIVE_TTL = 463, + VAR_PERMIT_SMALL_HOLDDOWN = 464, + VAR_QNAME_MINIMISATION = 465, + VAR_QNAME_MINIMISATION_STRICT = 466, + VAR_IP_FREEBIND = 467, + VAR_DEFINE_TAG = 468, + VAR_LOCAL_ZONE_TAG = 469, + VAR_ACCESS_CONTROL_TAG = 470, + VAR_LOCAL_ZONE_OVERRIDE = 471, + VAR_ACCESS_CONTROL_TAG_ACTION = 472, + VAR_ACCESS_CONTROL_TAG_DATA = 473, + VAR_VIEW = 474, + VAR_ACCESS_CONTROL_VIEW = 475, + VAR_VIEW_FIRST = 476, + VAR_SERVE_EXPIRED = 477, + VAR_SERVE_EXPIRED_TTL = 478, + VAR_SERVE_EXPIRED_TTL_RESET = 479, + VAR_SERVE_EXPIRED_REPLY_TTL = 480, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 481, + VAR_FAKE_DSA = 482, + VAR_FAKE_SHA1 = 483, + VAR_LOG_IDENTITY = 484, + VAR_HIDE_TRUSTANCHOR = 485, + VAR_TRUST_ANCHOR_SIGNALING = 486, + VAR_AGGRESSIVE_NSEC = 487, + VAR_USE_SYSTEMD = 488, + VAR_SHM_ENABLE = 489, + VAR_SHM_KEY = 490, + VAR_ROOT_KEY_SENTINEL = 491, + VAR_DNSCRYPT = 492, + VAR_DNSCRYPT_ENABLE = 493, + VAR_DNSCRYPT_PORT = 494, + VAR_DNSCRYPT_PROVIDER = 495, + VAR_DNSCRYPT_SECRET_KEY = 496, + VAR_DNSCRYPT_PROVIDER_CERT = 497, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 498, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 499, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 500, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 501, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 502, + VAR_IPSECMOD_ENABLED = 503, + VAR_IPSECMOD_HOOK = 504, + VAR_IPSECMOD_IGNORE_BOGUS = 505, + VAR_IPSECMOD_MAX_TTL = 506, + VAR_IPSECMOD_WHITELIST = 507, + VAR_IPSECMOD_STRICT = 508, + VAR_CACHEDB = 509, + VAR_CACHEDB_BACKEND = 510, + VAR_CACHEDB_SECRETSEED = 511, + VAR_CACHEDB_REDISHOST = 512, + VAR_CACHEDB_REDISPORT = 513, + VAR_CACHEDB_REDISTIMEOUT = 514, + VAR_CACHEDB_REDISEXPIRERECORDS = 515, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 516, + VAR_FOR_UPSTREAM = 517, + VAR_AUTH_ZONE = 518, + VAR_ZONEFILE = 519, + VAR_MASTER = 520, + VAR_URL = 521, + VAR_FOR_DOWNSTREAM = 522, + VAR_FALLBACK_ENABLED = 523, + VAR_TLS_ADDITIONAL_PORT = 524, + VAR_LOW_RTT = 525, + VAR_LOW_RTT_PERMIL = 526, + VAR_FAST_SERVER_PERMIL = 527, + VAR_FAST_SERVER_NUM = 528, + VAR_ALLOW_NOTIFY = 529, + VAR_TLS_WIN_CERT = 530, + VAR_TCP_CONNECTION_LIMIT = 531, + VAR_FORWARD_NO_CACHE = 532, + VAR_STUB_NO_CACHE = 533, + VAR_LOG_SERVFAIL = 534, + VAR_DENY_ANY = 535, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 536, + VAR_LOG_TAG_QUERYREPLY = 537, + VAR_STREAM_WAIT_SIZE = 538, + VAR_TLS_CIPHERS = 539, + VAR_TLS_CIPHERSUITES = 540, + VAR_TLS_USE_SNI = 541, + VAR_IPSET = 542, + VAR_IPSET_NAME_V4 = 543, + VAR_IPSET_NAME_V6 = 544, + VAR_TLS_SESSION_TICKET_KEYS = 545, + VAR_RPZ = 546, + VAR_TAGS = 547, + VAR_RPZ_ACTION_OVERRIDE = 548, + VAR_RPZ_CNAME_OVERRIDE = 549, + VAR_RPZ_LOG = 550, + VAR_RPZ_LOG_NAME = 551, + VAR_DYNLIB = 552, + VAR_DYNLIB_FILE = 553, + VAR_EDNS_CLIENT_TAG = 554, + VAR_EDNS_CLIENT_TAG_OPCODE = 555 }; #endif /* Tokens. */ @@ -494,158 +495,159 @@ extern int yydebug; #define VAR_HTTP_QUERY_BUFFER_SIZE 400 #define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 #define VAR_HTTP_NODELAY 402 -#define VAR_STUB_FIRST 403 -#define VAR_MINIMAL_RESPONSES 404 -#define VAR_RRSET_ROUNDROBIN 405 -#define VAR_MAX_UDP_SIZE 406 -#define VAR_DELAY_CLOSE 407 -#define VAR_UNBLOCK_LAN_ZONES 408 -#define VAR_INSECURE_LAN_ZONES 409 -#define VAR_INFRA_CACHE_MIN_RTT 410 -#define VAR_DNS64_PREFIX 411 -#define VAR_DNS64_SYNTHALL 412 -#define VAR_DNS64_IGNORE_AAAA 413 -#define VAR_DNSTAP 414 -#define VAR_DNSTAP_ENABLE 415 -#define VAR_DNSTAP_SOCKET_PATH 416 -#define VAR_DNSTAP_IP 417 -#define VAR_DNSTAP_TLS 418 -#define VAR_DNSTAP_TLS_SERVER_NAME 419 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 420 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 421 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 422 -#define VAR_DNSTAP_SEND_IDENTITY 423 -#define VAR_DNSTAP_SEND_VERSION 424 -#define VAR_DNSTAP_BIDIRECTIONAL 425 -#define VAR_DNSTAP_IDENTITY 426 -#define VAR_DNSTAP_VERSION 427 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 428 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 429 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 433 -#define VAR_RESPONSE_IP_TAG 434 -#define VAR_RESPONSE_IP 435 -#define VAR_RESPONSE_IP_DATA 436 -#define VAR_HARDEN_ALGO_DOWNGRADE 437 -#define VAR_IP_TRANSPARENT 438 -#define VAR_IP_DSCP 439 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 440 -#define VAR_IP_RATELIMIT 441 -#define VAR_IP_RATELIMIT_SLABS 442 -#define VAR_IP_RATELIMIT_SIZE 443 -#define VAR_RATELIMIT 444 -#define VAR_RATELIMIT_SLABS 445 -#define VAR_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT_FOR_DOMAIN 447 -#define VAR_RATELIMIT_BELOW_DOMAIN 448 -#define VAR_IP_RATELIMIT_FACTOR 449 -#define VAR_RATELIMIT_FACTOR 450 -#define VAR_SEND_CLIENT_SUBNET 451 -#define VAR_CLIENT_SUBNET_ZONE 452 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 453 -#define VAR_CLIENT_SUBNET_OPCODE 454 -#define VAR_MAX_CLIENT_SUBNET_IPV4 455 -#define VAR_MAX_CLIENT_SUBNET_IPV6 456 -#define VAR_MIN_CLIENT_SUBNET_IPV4 457 -#define VAR_MIN_CLIENT_SUBNET_IPV6 458 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 459 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 460 -#define VAR_CAPS_WHITELIST 461 -#define VAR_CACHE_MAX_NEGATIVE_TTL 462 -#define VAR_PERMIT_SMALL_HOLDDOWN 463 -#define VAR_QNAME_MINIMISATION 464 -#define VAR_QNAME_MINIMISATION_STRICT 465 -#define VAR_IP_FREEBIND 466 -#define VAR_DEFINE_TAG 467 -#define VAR_LOCAL_ZONE_TAG 468 -#define VAR_ACCESS_CONTROL_TAG 469 -#define VAR_LOCAL_ZONE_OVERRIDE 470 -#define VAR_ACCESS_CONTROL_TAG_ACTION 471 -#define VAR_ACCESS_CONTROL_TAG_DATA 472 -#define VAR_VIEW 473 -#define VAR_ACCESS_CONTROL_VIEW 474 -#define VAR_VIEW_FIRST 475 -#define VAR_SERVE_EXPIRED 476 -#define VAR_SERVE_EXPIRED_TTL 477 -#define VAR_SERVE_EXPIRED_TTL_RESET 478 -#define VAR_SERVE_EXPIRED_REPLY_TTL 479 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 480 -#define VAR_FAKE_DSA 481 -#define VAR_FAKE_SHA1 482 -#define VAR_LOG_IDENTITY 483 -#define VAR_HIDE_TRUSTANCHOR 484 -#define VAR_TRUST_ANCHOR_SIGNALING 485 -#define VAR_AGGRESSIVE_NSEC 486 -#define VAR_USE_SYSTEMD 487 -#define VAR_SHM_ENABLE 488 -#define VAR_SHM_KEY 489 -#define VAR_ROOT_KEY_SENTINEL 490 -#define VAR_DNSCRYPT 491 -#define VAR_DNSCRYPT_ENABLE 492 -#define VAR_DNSCRYPT_PORT 493 -#define VAR_DNSCRYPT_PROVIDER 494 -#define VAR_DNSCRYPT_SECRET_KEY 495 -#define VAR_DNSCRYPT_PROVIDER_CERT 496 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 497 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 498 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 499 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 500 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 501 -#define VAR_IPSECMOD_ENABLED 502 -#define VAR_IPSECMOD_HOOK 503 -#define VAR_IPSECMOD_IGNORE_BOGUS 504 -#define VAR_IPSECMOD_MAX_TTL 505 -#define VAR_IPSECMOD_WHITELIST 506 -#define VAR_IPSECMOD_STRICT 507 -#define VAR_CACHEDB 508 -#define VAR_CACHEDB_BACKEND 509 -#define VAR_CACHEDB_SECRETSEED 510 -#define VAR_CACHEDB_REDISHOST 511 -#define VAR_CACHEDB_REDISPORT 512 -#define VAR_CACHEDB_REDISTIMEOUT 513 -#define VAR_CACHEDB_REDISEXPIRERECORDS 514 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 515 -#define VAR_FOR_UPSTREAM 516 -#define VAR_AUTH_ZONE 517 -#define VAR_ZONEFILE 518 -#define VAR_MASTER 519 -#define VAR_URL 520 -#define VAR_FOR_DOWNSTREAM 521 -#define VAR_FALLBACK_ENABLED 522 -#define VAR_TLS_ADDITIONAL_PORT 523 -#define VAR_LOW_RTT 524 -#define VAR_LOW_RTT_PERMIL 525 -#define VAR_FAST_SERVER_PERMIL 526 -#define VAR_FAST_SERVER_NUM 527 -#define VAR_ALLOW_NOTIFY 528 -#define VAR_TLS_WIN_CERT 529 -#define VAR_TCP_CONNECTION_LIMIT 530 -#define VAR_FORWARD_NO_CACHE 531 -#define VAR_STUB_NO_CACHE 532 -#define VAR_LOG_SERVFAIL 533 -#define VAR_DENY_ANY 534 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 535 -#define VAR_LOG_TAG_QUERYREPLY 536 -#define VAR_STREAM_WAIT_SIZE 537 -#define VAR_TLS_CIPHERS 538 -#define VAR_TLS_CIPHERSUITES 539 -#define VAR_TLS_USE_SNI 540 -#define VAR_IPSET 541 -#define VAR_IPSET_NAME_V4 542 -#define VAR_IPSET_NAME_V6 543 -#define VAR_TLS_SESSION_TICKET_KEYS 544 -#define VAR_RPZ 545 -#define VAR_TAGS 546 -#define VAR_RPZ_ACTION_OVERRIDE 547 -#define VAR_RPZ_CNAME_OVERRIDE 548 -#define VAR_RPZ_LOG 549 -#define VAR_RPZ_LOG_NAME 550 -#define VAR_DYNLIB 551 -#define VAR_DYNLIB_FILE 552 -#define VAR_EDNS_CLIENT_TAG 553 -#define VAR_EDNS_CLIENT_TAG_OPCODE 554 +#define VAR_HTTP_NOTLS_DOWNSTREAM 403 +#define VAR_STUB_FIRST 404 +#define VAR_MINIMAL_RESPONSES 405 +#define VAR_RRSET_ROUNDROBIN 406 +#define VAR_MAX_UDP_SIZE 407 +#define VAR_DELAY_CLOSE 408 +#define VAR_UNBLOCK_LAN_ZONES 409 +#define VAR_INSECURE_LAN_ZONES 410 +#define VAR_INFRA_CACHE_MIN_RTT 411 +#define VAR_DNS64_PREFIX 412 +#define VAR_DNS64_SYNTHALL 413 +#define VAR_DNS64_IGNORE_AAAA 414 +#define VAR_DNSTAP 415 +#define VAR_DNSTAP_ENABLE 416 +#define VAR_DNSTAP_SOCKET_PATH 417 +#define VAR_DNSTAP_IP 418 +#define VAR_DNSTAP_TLS 419 +#define VAR_DNSTAP_TLS_SERVER_NAME 420 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 421 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 422 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 423 +#define VAR_DNSTAP_SEND_IDENTITY 424 +#define VAR_DNSTAP_SEND_VERSION 425 +#define VAR_DNSTAP_BIDIRECTIONAL 426 +#define VAR_DNSTAP_IDENTITY 427 +#define VAR_DNSTAP_VERSION 428 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 429 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 430 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 434 +#define VAR_RESPONSE_IP_TAG 435 +#define VAR_RESPONSE_IP 436 +#define VAR_RESPONSE_IP_DATA 437 +#define VAR_HARDEN_ALGO_DOWNGRADE 438 +#define VAR_IP_TRANSPARENT 439 +#define VAR_IP_DSCP 440 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 441 +#define VAR_IP_RATELIMIT 442 +#define VAR_IP_RATELIMIT_SLABS 443 +#define VAR_IP_RATELIMIT_SIZE 444 +#define VAR_RATELIMIT 445 +#define VAR_RATELIMIT_SLABS 446 +#define VAR_RATELIMIT_SIZE 447 +#define VAR_RATELIMIT_FOR_DOMAIN 448 +#define VAR_RATELIMIT_BELOW_DOMAIN 449 +#define VAR_IP_RATELIMIT_FACTOR 450 +#define VAR_RATELIMIT_FACTOR 451 +#define VAR_SEND_CLIENT_SUBNET 452 +#define VAR_CLIENT_SUBNET_ZONE 453 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 454 +#define VAR_CLIENT_SUBNET_OPCODE 455 +#define VAR_MAX_CLIENT_SUBNET_IPV4 456 +#define VAR_MAX_CLIENT_SUBNET_IPV6 457 +#define VAR_MIN_CLIENT_SUBNET_IPV4 458 +#define VAR_MIN_CLIENT_SUBNET_IPV6 459 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 460 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 461 +#define VAR_CAPS_WHITELIST 462 +#define VAR_CACHE_MAX_NEGATIVE_TTL 463 +#define VAR_PERMIT_SMALL_HOLDDOWN 464 +#define VAR_QNAME_MINIMISATION 465 +#define VAR_QNAME_MINIMISATION_STRICT 466 +#define VAR_IP_FREEBIND 467 +#define VAR_DEFINE_TAG 468 +#define VAR_LOCAL_ZONE_TAG 469 +#define VAR_ACCESS_CONTROL_TAG 470 +#define VAR_LOCAL_ZONE_OVERRIDE 471 +#define VAR_ACCESS_CONTROL_TAG_ACTION 472 +#define VAR_ACCESS_CONTROL_TAG_DATA 473 +#define VAR_VIEW 474 +#define VAR_ACCESS_CONTROL_VIEW 475 +#define VAR_VIEW_FIRST 476 +#define VAR_SERVE_EXPIRED 477 +#define VAR_SERVE_EXPIRED_TTL 478 +#define VAR_SERVE_EXPIRED_TTL_RESET 479 +#define VAR_SERVE_EXPIRED_REPLY_TTL 480 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 481 +#define VAR_FAKE_DSA 482 +#define VAR_FAKE_SHA1 483 +#define VAR_LOG_IDENTITY 484 +#define VAR_HIDE_TRUSTANCHOR 485 +#define VAR_TRUST_ANCHOR_SIGNALING 486 +#define VAR_AGGRESSIVE_NSEC 487 +#define VAR_USE_SYSTEMD 488 +#define VAR_SHM_ENABLE 489 +#define VAR_SHM_KEY 490 +#define VAR_ROOT_KEY_SENTINEL 491 +#define VAR_DNSCRYPT 492 +#define VAR_DNSCRYPT_ENABLE 493 +#define VAR_DNSCRYPT_PORT 494 +#define VAR_DNSCRYPT_PROVIDER 495 +#define VAR_DNSCRYPT_SECRET_KEY 496 +#define VAR_DNSCRYPT_PROVIDER_CERT 497 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 498 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 499 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 500 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 501 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 502 +#define VAR_IPSECMOD_ENABLED 503 +#define VAR_IPSECMOD_HOOK 504 +#define VAR_IPSECMOD_IGNORE_BOGUS 505 +#define VAR_IPSECMOD_MAX_TTL 506 +#define VAR_IPSECMOD_WHITELIST 507 +#define VAR_IPSECMOD_STRICT 508 +#define VAR_CACHEDB 509 +#define VAR_CACHEDB_BACKEND 510 +#define VAR_CACHEDB_SECRETSEED 511 +#define VAR_CACHEDB_REDISHOST 512 +#define VAR_CACHEDB_REDISPORT 513 +#define VAR_CACHEDB_REDISTIMEOUT 514 +#define VAR_CACHEDB_REDISEXPIRERECORDS 515 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 516 +#define VAR_FOR_UPSTREAM 517 +#define VAR_AUTH_ZONE 518 +#define VAR_ZONEFILE 519 +#define VAR_MASTER 520 +#define VAR_URL 521 +#define VAR_FOR_DOWNSTREAM 522 +#define VAR_FALLBACK_ENABLED 523 +#define VAR_TLS_ADDITIONAL_PORT 524 +#define VAR_LOW_RTT 525 +#define VAR_LOW_RTT_PERMIL 526 +#define VAR_FAST_SERVER_PERMIL 527 +#define VAR_FAST_SERVER_NUM 528 +#define VAR_ALLOW_NOTIFY 529 +#define VAR_TLS_WIN_CERT 530 +#define VAR_TCP_CONNECTION_LIMIT 531 +#define VAR_FORWARD_NO_CACHE 532 +#define VAR_STUB_NO_CACHE 533 +#define VAR_LOG_SERVFAIL 534 +#define VAR_DENY_ANY 535 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 536 +#define VAR_LOG_TAG_QUERYREPLY 537 +#define VAR_STREAM_WAIT_SIZE 538 +#define VAR_TLS_CIPHERS 539 +#define VAR_TLS_CIPHERSUITES 540 +#define VAR_TLS_USE_SNI 541 +#define VAR_IPSET 542 +#define VAR_IPSET_NAME_V4 543 +#define VAR_IPSET_NAME_V6 544 +#define VAR_TLS_SESSION_TICKET_KEYS 545 +#define VAR_RPZ 546 +#define VAR_TAGS 547 +#define VAR_RPZ_ACTION_OVERRIDE 548 +#define VAR_RPZ_CNAME_OVERRIDE 549 +#define VAR_RPZ_LOG 550 +#define VAR_RPZ_LOG_NAME 551 +#define VAR_DYNLIB 552 +#define VAR_DYNLIB_FILE 553 +#define VAR_EDNS_CLIENT_TAG 554 +#define VAR_EDNS_CLIENT_TAG_OPCODE 555 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -655,7 +657,7 @@ union YYSTYPE char* str; -#line 659 "util/configparser.h" +#line 661 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 675645fbd..2b20707c7 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -114,7 +114,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STUB_SSL_UPSTREAM VAR_FORWARD_SSL_UPSTREAM VAR_TLS_CERT_BUNDLE %token VAR_HTTPS_PORT VAR_HTTP_ENDPOINT VAR_HTTP_MAX_STREAMS %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE -%token VAR_HTTP_NODELAY +%token VAR_HTTP_NODELAY VAR_HTTP_NOTLS_DOWNSTREAM %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN %token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES @@ -249,7 +249,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_ssl_service_key | server_ssl_service_pem | server_ssl_port | server_https_port | server_http_endpoint | server_http_max_streams | server_http_query_buffer_size | server_http_response_buffer_size | - server_http_nodelay | + server_http_nodelay | server_http_notls_downstream | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | server_so_reuseport | server_delay_close | server_unblock_lan_zones | server_insecure_lan_zones | @@ -1031,6 +1031,14 @@ server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp($2, "yes")==0); free($2); + } +server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG + { + OUTYY(("P(server_http_notls_downstream:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->http_notls_downstream = (strcmp($2, "yes")==0); + free($2); }; server_use_systemd: VAR_USE_SYSTEMD STRING_ARG { diff --git a/util/netevent.c b/util/netevent.c index 545f09742..e8aba4736 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -978,6 +978,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) log_warn("failed to submit http2 settings"); return; } + if(!c->ssl) { + c_hdl->tcp_do_toggle_rw = 0; + c_hdl->use_h2 = 1; + } #endif c_hdl->ev->ev = ub_event_new(c_hdl->ev->base->eb->base, -1, UB_EV_PERSIST | UB_EV_READ | UB_EV_TIMEOUT, @@ -2359,48 +2363,76 @@ int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session), ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { -#ifdef HAVE_SSL struct http2_session* h2_session = (struct http2_session*)cb_arg; - int r; + ssize_t ret; log_assert(h2_session->c->type == comm_http); log_assert(h2_session->c->h2_session); - if(!h2_session->c->ssl) - return 0; - - ERR_clear_error(); - r = SSL_read(h2_session->c->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->c->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { - return NGHTTP2_ERR_EOF; - } else if(want == SSL_ERROR_WANT_READ) { - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_WANT_WRITE) { - h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write; - comm_point_listen_for_rw(h2_session->c, 0, 1); - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_SYSCALL) { +#ifdef HAVE_SSL + if(h2_session->c->ssl) { + int r; + ERR_clear_error(); + r = SSL_read(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + return NGHTTP2_ERR_EOF; + } else if(want == SSL_ERROR_WANT_READ) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_write; + comm_point_listen_for_rw(h2_session->c, 0, 1); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { #ifdef ECONNRESET - if(errno == ECONNRESET && verbosity < 2) - return NGHTTP2_ERR_CALLBACK_FAILURE; + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; #endif - if(errno != 0) - log_err("SSL_read syscall: %s", - strerror(errno)); + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_read"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_read"); + return r; + } +#endif /* HAVE_SSL */ + + ret = recv(h2_session->c->fd, buf, len, 0); + if(ret == 0) { + return NGHTTP2_ERR_EOF; + } else if(ret < 0) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return NGHTTP2_ERR_WOULDBLOCK; +#ifdef ECONNRESET + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + log_err_addr("could not http2 recv: %s", strerror(errno), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#else /* USE_WINSOCK */ + if(WSAGetLastError() == WSAECONNRESET) + return NGHTTP2_ERR_CALLBACK_FAILURE; + if(WSAGetLastError() == WSAEINPROGRESS) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(h2_session->c->ev->ev, + UB_EV_READ); + return NGHTTP2_ERR_WOULDBLOCK; + } + log_err_addr("could not http2 recv: %s", + wsa_strerror(WSAGetLastError()), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#endif return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; -#else - (void)buf; - (void)len; - (void)cb_arg; - return -1; -#endif + return ret; } #endif /* HAVE_NGHTTP2 */ @@ -2411,7 +2443,6 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) #ifdef HAVE_NGHTTP2 int ret; log_assert(c->h2_session); - log_assert(c->ssl); /* reading until recv cb returns NGHTTP2_ERR_WOULDBLOCK */ ret = nghttp2_session_recv(c->h2_session->session); @@ -2648,47 +2679,81 @@ http_write_more(int fd, struct comm_point* c) ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg) { -#ifdef HAVE_SSL - int r; + ssize_t ret; struct http2_session* h2_session = (struct http2_session*)cb_arg; log_assert(h2_session->c->type == comm_http); log_assert(h2_session->c->h2_session); - if(!h2_session->c->ssl) - return 0; - - ERR_clear_error(); - r = SSL_write(h2_session->c->ssl, buf, len); - if(r <= 0) { - int want = SSL_get_error(h2_session->c->ssl, r); - if(want == SSL_ERROR_ZERO_RETURN) { - return NGHTTP2_ERR_CALLBACK_FAILURE; - } else if(want == SSL_ERROR_WANT_READ) { - h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read; - comm_point_listen_for_rw(h2_session->c, 1, 0); - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_WANT_WRITE) { - return NGHTTP2_ERR_WOULDBLOCK; - } else if(want == SSL_ERROR_SYSCALL) { -#ifdef EPIPE - if(errno == EPIPE && verbosity < 2) +#ifdef HAVE_SSL + if(h2_session->c->ssl) { + int r; + ERR_clear_error(); + r = SSL_write(h2_session->c->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(h2_session->c->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(want == SSL_ERROR_WANT_READ) { + h2_session->c->ssl_shake_state = comm_ssl_shake_hs_read; + comm_point_listen_for_rw(h2_session->c, 1, 0); + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_WANT_WRITE) { + return NGHTTP2_ERR_WOULDBLOCK; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef EPIPE + if(errno == EPIPE && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; #endif - if(errno != 0) - log_err("SSL_write syscall: %s", - strerror(errno)); + if(errno != 0) + log_err("SSL_write syscall: %s", + strerror(errno)); + return NGHTTP2_ERR_CALLBACK_FAILURE; + } + log_crypto_err("could not SSL_write"); return NGHTTP2_ERR_CALLBACK_FAILURE; } - log_crypto_err("could not SSL_write"); + return r; + } +#endif /* HAVE_SSL */ + + ret = send(h2_session->c->fd, buf, len, 0); + if(ret == 0) { + return NGHTTP2_ERR_CALLBACK_FAILURE; + } else if(ret < 0) { +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return NGHTTP2_ERR_WOULDBLOCK; +#ifdef EPIPE + if(errno == EPIPE && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif +#ifdef ECONNRESET + if(errno == ECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; +#endif + log_err_addr("could not http2 write: %s", strerror(errno), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#else /* USE_WINSOCK */ + if(WSAGetLastError() == WSAENOTCONN) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEINPROGRESS) + return NGHTTP2_ERR_WOULDBLOCK; + if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock(h2_session->c->ev->ev, + UB_EV_WRITE); + return NGHTTP2_ERR_WOULDBLOCK; + } + if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) + return NGHTTP2_ERR_CALLBACK_FAILURE; + log_err_addr("could not http2 write: %s", + wsa_strerror(WSAGetLastError()), + &h2_session->c->repinfo.addr, + h2_session->c->repinfo.addrlen); +#endif return NGHTTP2_ERR_CALLBACK_FAILURE; } - return r; -#else - (void)buf; - (void)len; - (void)cb_arg; - return -1; -#endif + return ret; } #endif /* HAVE_NGHTTP2 */ @@ -2699,7 +2764,6 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) #ifdef HAVE_NGHTTP2 int ret; log_assert(c->h2_session); - log_assert(c->ssl); ret = nghttp2_session_send(c->h2_session->session); if(ret) { From c8390e390d8f4d966a268e9ac4e81d6982ef4325 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:41:03 +0200 Subject: [PATCH 241/394] - Fix python documentation warning on functions.rst inplace_cb_reply. --- doc/Changelog | 1 + pythonmod/doc/modules/functions.rst | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 24d544c7a..978febe61 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix #330: [Feature request] Add unencrypted DNS over HTTPS support. This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. + - Fix python documentation warning on functions.rst inplace_cb_reply. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/pythonmod/doc/modules/functions.rst b/pythonmod/doc/modules/functions.rst index 6ded3bf7a..333f696b8 100644 --- a/pythonmod/doc/modules/functions.rst +++ b/pythonmod/doc/modules/functions.rst @@ -103,7 +103,7 @@ Inplace callbacks :param opt_list_out: :class:`edns_option`. EDNS option list to append options to. :param region: :class:`regional` :param \*\*kwargs: Dictionary that may contain parameters added in a future - release. Current parameters: + release. Current parameters: ``repinfo``: :class:`comm_reply`. Reply information for a communication point. .. function:: inplace_cb_query(qinfo, flags, qstate, addr, zone, region) From 5cd2d10fe5263fe71e407c55015f66fc4663fc98 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:43:35 +0200 Subject: [PATCH 242/394] - Fix dnstap test to wait for log timer to see if queries are logged. --- doc/Changelog | 1 + testdata/dnstap.tdir/dnstap.test | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 978febe61..7bcef8c94 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ This adds the option http-notls-downstream: yesno to change that, and the dohclient test code has the -n option. - Fix python documentation warning on functions.rst inplace_cb_reply. + - Fix dnstap test to wait for log timer to see if queries are logged. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/testdata/dnstap.tdir/dnstap.test b/testdata/dnstap.tdir/dnstap.test index d548e2dad..fbf8565ff 100644 --- a/testdata/dnstap.tdir/dnstap.test +++ b/testdata/dnstap.tdir/dnstap.test @@ -59,6 +59,8 @@ dig @127.0.0.1 -p $UNBOUND_PORT q7.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q8.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q9.example.net. dig @127.0.0.1 -p $UNBOUND_PORT q10.example.net. +echo "> wait for log to happen on timer" +sleep 3 for x in q1 q2 q3 q4 5 q6 q7 q8 q9 q10; do if grep "$x.example.net" tap.log >/dev/null; then :; else sleep 1; fi if grep "$x.example.net" tap.log >/dev/null; then :; else sleep 1; fi From ca6e8ec6c29a4ca8592d08fab297a4c572474558 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 10:59:41 +0200 Subject: [PATCH 243/394] Unit test for doh downstream notls. --- .../doh_downstream_notls.conf | 28 ++ .../doh_downstream_notls.dsc | 16 + .../doh_downstream_notls.post | 13 + .../doh_downstream_notls.pre | 33 ++ .../doh_downstream_notls.test | 339 ++++++++++++++++++ .../doh_downstream_notls.testns | 74 ++++ .../unbound_server.key | 15 + .../unbound_server.pem | 11 + 8 files changed, 529 insertions(+) create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.post create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.test create mode 100644 testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns create mode 100644 testdata/doh_downstream_notls.tdir/unbound_server.key create mode 100644 testdata/doh_downstream_notls.tdir/unbound_server.pem diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf new file mode 100644 index 000000000..bdca45645 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.conf @@ -0,0 +1,28 @@ +server: + verbosity: 2 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + https-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + http-query-buffer-size: 1G + http-response-buffer-size: 1G + http-max-streams: 200 + http-notls-downstream: yes + + local-zone: "example.net" static + local-data: "www1.example.net. IN A 1.2.3.1" + local-data: "www2.example.net. IN A 1.2.3.2" + local-data: "www3.example.net. IN A 1.2.3.3" + local-zone: "drop.net" deny + tcp-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc new file mode 100644 index 000000000..4b908e052 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.dsc @@ -0,0 +1,16 @@ +BaseName: doh_downstream_notls +Version: 1.0 +Description: Test DNS-over-HTTP query processing with no-tls +CreationDate: Mon Jun 12 12:00:00 CET 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: doh_downstream_notls.pre +Post: doh_downstream_notls.post +Test: doh_downstream_notls.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post new file mode 100644 index 000000000..3ceaeade8 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.post @@ -0,0 +1,13 @@ +# #-- doh_downstream_notls.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +PRE="../.." +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +. ../common.sh +kill_pid $FWD_PID +kill_pid $UNBOUND_PID +cat unbound.log diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre new file mode 100644 index 000000000..e1f30a575 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.pre @@ -0,0 +1,33 @@ +# #-- doh_downstream_notls.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 2 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT doh_downstream_notls.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < doh_downstream_notls.conf > ub.conf +# start unbound in the background +$PRE/unbound -vvvv -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log + diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test new file mode 100644 index 000000000..87ff560d3 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.test @@ -0,0 +1,339 @@ +# #-- doh_downstream_notls.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define HAVE_NGHTTP2 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +get_make +(cd $PRE; $MAKE dohclient) + + +# this test query should just work (server is up) +echo "> query www1.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +echo "OK" + +# multiple requests (from localdata) +echo "> query www1.example.net. www2.example.net. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www2.example.net A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www2.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www2.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.com" outfile | grep "10.20.30.42"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www.example.com. www2.example.net. www.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www.example.com. A IN www2.example.net A IN www.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www.example.com" outfile | grep "10.20.30.40"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +# out of order requests, the example.com elements take 2 seconds to wait. +# www3.example.com present twice, answered twice. +echo "" +echo "> query www1.example.net. www3.example.com. www2.example.net. www3.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www1.example.net. A IN www3.example.com. A IN www2.example.net A IN www3.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www1.example.net" outfile | grep "1.2.3.1"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www2.example.net" outfile | grep "1.2.3.2"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www3.example.com" outfile | grep "10.20.30.43"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + +echo "" +echo "> query www4.example.com. www3.example.net." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www4.example.com. A IN www3.example.net A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +if grep "www3.example.net" outfile | grep "1.2.3.3"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi +if grep "www4.example.com" outfile | grep "10.20.30.44"; then + echo "content OK" +else + echo "result contents not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "result contents not OK" + exit 1 +fi + + +echo "" +echo "> query a1.example.com. - a90.example.com." +$PRE/dohclient -n -s 127.0.0.1 -p $UNBOUND_PORT www6.example.com. A IN a1.a.example.com. A IN a2.a.example.com. A IN a3.a.example.com. A IN a4.a.example.com. A IN a5.a.example.com. A IN a6.a.example.com. A IN a7.a.example.com. A IN a8.a.example.com. A IN a9.a.example.com. A IN a10.a.example.com. A IN a11.a.example.com. A IN a12.a.example.com. A IN a13.a.example.com. A IN a14.a.example.com. A IN a15.a.example.com. A IN a16.a.example.com. A IN a17.a.example.com. A IN a18.a.example.com. A IN a19.a.example.com. A IN a20.a.example.com. A IN a21.a.example.com. A IN a22.a.example.com. A IN a23.a.example.com. A IN a24.a.example.com. A IN a25.a.example.com. A IN a26.a.example.com. A IN a27.a.example.com. A IN a28.a.example.com. A IN a29.a.example.com. A IN a30.a.example.com. A IN a31.a.example.com. A IN a32.a.example.com. A IN a33.a.example.com. A IN a34.a.example.com. A IN a35.a.example.com. A IN a36.a.example.com. A IN a37.a.example.com. A IN a38.a.example.com. A IN a39.a.example.com. A IN a40.a.example.com. A IN a41.a.example.com. A IN a42.a.example.com. A IN a43.a.example.com. A IN a44.a.example.com. A IN a45.a.example.com. A IN a46.a.example.com. A IN a47.a.example.com. A IN a48.a.example.com. A IN a49.a.example.com. A IN a50.a.example.com. A IN a51.a.example.com. A IN a52.a.example.com. A IN a53.a.example.com. A IN a54.a.example.com. A IN a55.a.example.com. A IN a56.a.example.com. A IN a57.a.example.com. A IN a58.a.example.com. A IN a59.a.example.com. A IN a60.a.example.com. A IN a61.a.example.com. A IN a62.a.example.com. A IN a63.a.example.com. A IN a64.a.example.com. A IN a65.a.example.com. A IN a66.a.example.com. A IN a67.a.example.com. A IN a68.a.example.com. A IN a69.a.example.com. A IN a70.a.example.com. A IN a71.a.example.com. A IN a72.a.example.com. A IN a73.a.example.com. A IN a74.a.example.com. A IN a75.a.example.com. A IN a76.a.example.com. A IN a77.a.example.com. A IN a78.a.example.com. A IN a79.a.example.com. A IN a80.a.example.com. A IN a81.a.example.com. A IN a82.a.example.com. A IN a83.a.example.com. A IN a84.a.example.com. A IN a85.a.example.com. A IN a86.a.example.com. A IN a87.a.example.com. A IN a88.a.example.com. A IN a89.a.example.com. A IN a90.a.example.com. A IN >outfile 2>&1 +cat outfile +if test "$?" -ne 0; then + echo "exit status not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi +num_ans=$(grep -B 3 "a.example.com. IN A" outfile | grep "rcode: NOERROR" | wc -l ) +if test "$num_ans" -ne 90; then + echo "number of answers not OK" + echo "> cat logfiles" + cat outfile + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "OK" +exit 0 diff --git a/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns new file mode 100644 index 000000000..c53941b67 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/doh_downstream_notls.testns @@ -0,0 +1,74 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www2 IN A +SECTION ANSWER +www2 IN A 10.20.30.42 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www3 IN A +SECTION ANSWER +www3 IN A 10.20.30.43 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www4 IN A +SECTION ANSWER +www4 IN A 10.20.30.44 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www5 IN A +SECTION ANSWER +www5 IN A 10.20.30.45 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id sleep=2 +SECTION QUESTION +www6 IN A +SECTION ANSWER +www6 IN A 10.20.30.46 +ENTRY_END + +; lots of noerror/nodata answers for other queries (a.. queries) +ENTRY_BEGIN +MATCH opcode qtype subdomain +REPLY QR AA NOERROR +ADJUST copy_id copy_query +SECTION QUESTION +a.example.com. IN A +SECTION AUTHORITY +example.com. IN SOA ns hostmaster 2019 28800 7200 604800 3600 +ENTRY_END diff --git a/testdata/doh_downstream_notls.tdir/unbound_server.key b/testdata/doh_downstream_notls.tdir/unbound_server.key new file mode 100644 index 000000000..4256c421d --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/unbound_server.key @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA +3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s +RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB +AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS +6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds +sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi +XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 +fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL +CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP +0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 +oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l +In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S +LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +-----END RSA PRIVATE KEY----- diff --git a/testdata/doh_downstream_notls.tdir/unbound_server.pem b/testdata/doh_downstream_notls.tdir/unbound_server.pem new file mode 100644 index 000000000..aeda3ff11 --- /dev/null +++ b/testdata/doh_downstream_notls.tdir/unbound_server.pem @@ -0,0 +1,11 @@ +-----BEGIN CERTIFICATE----- +MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 +bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE +AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS +y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ +/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu +g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ +9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG +l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH +Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +-----END CERTIFICATE----- From ab9d732796901a4851491934d130320c45610387 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 11:06:55 +0200 Subject: [PATCH 244/394] - Log ip address when http session recv fails, eg. due to tls fail. --- doc/Changelog | 1 + util/netevent.c | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 7bcef8c94..a84f73edf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ and the dohclient test code has the -n option. - Fix python documentation warning on functions.rst inplace_cb_reply. - Fix dnstap test to wait for log timer to see if queries are logged. + - Log ip address when http session recv fails, eg. due to tls fail. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/netevent.c b/util/netevent.c index e8aba4736..a40f44dd0 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2449,8 +2449,11 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) if(ret) { if(ret != NGHTTP2_ERR_EOF && ret != NGHTTP2_ERR_CALLBACK_FAILURE) { - verbose(VERB_QUERY, "http2: session_recv failed, " - "error: %s", nghttp2_strerror(ret)); + char a[256]; + addr_to_str(&c->repinfo.addr, c->repinfo.addrlen, + a, sizeof(a)); + verbose(VERB_QUERY, "http2: session_recv from %s failed, " + "error: %s", a, nghttp2_strerror(ret)); } return 0; } From 8861fb17fa1f0b71dbab787b66f23aa4b9ba46c7 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 19 Oct 2020 11:22:38 +0200 Subject: [PATCH 245/394] Changelog entry for local-zone out of chunk regional allocation --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a84f73edf..b09e0aeee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +19 October 2020: Ralph + - local-zone regional allocations outside of chunk + 19 October 2020: Wouter - Fix that http settings have colon in set_option, for http-endpoint, http-max-streams, http-query-buffer-size, From 68c57314c4e02079569ed697b9273fa9faaafeb6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 12:55:43 +0200 Subject: [PATCH 246/394] - Fix to set the tcp handler event toggle flag back to default when the handler structure is reused. --- doc/Changelog | 2 ++ util/netevent.c | 1 + 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b09e0aeee..3f1c70a8d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -12,6 +12,8 @@ - Fix python documentation warning on functions.rst inplace_cb_reply. - Fix dnstap test to wait for log timer to see if queries are logged. - Log ip address when http session recv fails, eg. due to tls fail. + - Fix to set the tcp handler event toggle flag back to default when + the handler structure is reused. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/util/netevent.c b/util/netevent.c index a40f44dd0..1e501b9ab 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -965,6 +965,7 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); + c_hdl->tcp_do_toggle_rw = 1; if(c_hdl->type == comm_http) { #ifdef HAVE_NGHTTP2 From 531ce9e85c4d715c0e5f801fcaf0c56c71602b8a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 13:36:53 +0200 Subject: [PATCH 247/394] Fixup for clear of tcp handler structure. --- util/netevent.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/util/netevent.c b/util/netevent.c index 1e501b9ab..2428417fa 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -965,7 +965,10 @@ comm_point_tcp_accept_callback(int fd, short event, void* arg) /* clear leftover flags from previous use, and then set the * correct event base for the event structure for libevent */ ub_event_free(c_hdl->ev->ev); - c_hdl->tcp_do_toggle_rw = 1; + if((c_hdl->type == comm_tcp && c_hdl->tcp_req_info) || + c_hdl->type == comm_local || c_hdl->type == comm_raw) + c_hdl->tcp_do_toggle_rw = 0; + else c_hdl->tcp_do_toggle_rw = 1; if(c_hdl->type == comm_http) { #ifdef HAVE_NGHTTP2 From 61922ce9dacb7f4088d66d38ba1644170cc46105 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 19 Oct 2020 13:39:02 +0200 Subject: [PATCH 248/394] - Clean the fix for out of order TCP processing limits on number of queries. It was tested to work. --- doc/Changelog | 2 ++ services/listen_dnsport.c | 6 +----- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3f1c70a8d..89c26958f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -14,6 +14,8 @@ - Log ip address when http session recv fails, eg. due to tls fail. - Fix to set the tcp handler event toggle flag back to default when the handler structure is reused. + - Clean the fix for out of order TCP processing limits on number + of queries. It was tested to work. 16 October 2020: Wouter - Fix that the out of order TCP processing does not limit the diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index d4f912db5..e506eeb31 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -81,9 +81,6 @@ /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 -/** number of simultaneous requests a client can have */ -/* #define TCP_MAX_REQ_SIMULTANEOUS 32 */ - #ifndef THREADS_DISABLED /** lock on the counter of stream buffer memory */ static lock_basic_type stream_wait_count_lock; @@ -1809,8 +1806,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) if(!req->cp->tcp_is_reading) wr = 1; - if(/*req->num_open_req + req->num_done_req < TCP_MAX_REQ_SIMULTANEOUS &&*/ - !req->read_is_closed) + if(!req->read_is_closed) rd = 1; if(wr) { From 50178d764aa2a0b42128e739a13a648deb4af296 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 19 Oct 2020 15:00:30 +0200 Subject: [PATCH 249/394] - Fix for attaching the X509v3 extensions to the client certificate. --- smallapp/unbound-control-setup.sh.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/smallapp/unbound-control-setup.sh.in b/smallapp/unbound-control-setup.sh.in index 6b5e0dbbf..eaf1d082c 100644 --- a/smallapp/unbound-control-setup.sh.in +++ b/smallapp/unbound-control-setup.sh.in @@ -120,6 +120,7 @@ if [ ! -f "$SVR_BASE.key" ]; then fi cat >server.cnf < Date: Mon, 19 Oct 2020 15:10:17 +0200 Subject: [PATCH 250/394] - Changelog entry for PR #324: Add modern X.509v3 extensions to unbound-control TLS certificates, by James Renken. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 89c26958f..61d2d4859 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +19 October 2020: George + - Merge PR #324 from James Renken: Add modern X.509v3 extensions to + unbound-control TLS certificates. + - Fix for PR #324 to attach the x509v3 extensions to the client + certificate. + 19 October 2020: Ralph - local-zone regional allocations outside of chunk From 2eb39abbaf28d491893743c0a473e86378fdc4f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Oct 2020 09:49:55 +0200 Subject: [PATCH 251/394] - Fix that reuse_tcp_close_oldest sets item_on_lru_list to 0. - Fix to add assertions to reuse_tcp_select_id and unit test. - Fix that if no tcp buffers then pending tcp query stops. --- services/outside_network.c | 16 +++++++++---- services/outside_network.h | 13 +++++++++++ testcode/unitmain.c | 47 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 5 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 5f60b847c..355f48ecb 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -403,7 +403,7 @@ static void reuse_write_wait_push_back(struct reuse_tcp* reuse, } /** insert element in tree by id */ -static void +void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) { log_assert(w->id_node.key == NULL); @@ -412,7 +412,7 @@ reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w) } /** find element in tree by id */ -static struct waiting_tcp* +struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id) { struct waiting_tcp key_w; @@ -885,7 +885,7 @@ static void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg)) } /** delete readwait waiting_tcp elements, deletes the elements in the list */ -static void reuse_del_readwait(rbtree_type* tree_by_id) +void reuse_del_readwait(rbtree_type* tree_by_id) { if(tree_by_id->root == NULL || tree_by_id->root == RBTREE_NULL) @@ -1946,6 +1946,7 @@ reuse_tcp_close_oldest(struct outside_network* outnet) outnet->tcp_reuse_last = NULL; outnet->tcp_reuse_first = NULL; } + pend->reuse.item_on_lru_list = 0; /* free up */ reuse_cb_and_decommission(outnet, pend, NETEVENT_CLOSED); @@ -1953,7 +1954,7 @@ reuse_tcp_close_oldest(struct outside_network* outnet) /** find spare ID value for reuse tcp stream. That is random and also does * not collide with an existing query ID that is in use or waiting */ -static uint16_t +uint16_t reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) { uint16_t id = 0, curid, nextid; @@ -1996,9 +1997,11 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) if(next && next != RBTREE_NULL) { curid = tree_by_id_get_id(node); nextid = tree_by_id_get_id(next); + log_assert(curid < nextid); if(curid != 0xffff && curid + 1 < nextid) { /* space between nodes */ space = nextid - curid - 1; + log_assert(select >= count); if(select < count + space) { /* here it is */ return curid + 1 + (select - count); @@ -2015,6 +2018,7 @@ reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network* outnet) node = rbtree_last(&reuse->tree_by_id); log_assert(node && node != RBTREE_NULL); /* tree not empty */ curid = tree_by_id_get_id(node); + log_assert(count + (0xffff-curid) + reuse->tree_by_id.count == 0xffff); return curid + 1 + (select - count); } @@ -2277,7 +2281,9 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, * the stream itself. also keep it as an entry in the tree_by_id, * in case the answer returns (that we no longer want), but we cannot * pick the same ID number meanwhile */ - pend_tcp->query->cb = NULL; + if(pend_tcp->query) { + pend_tcp->query->cb = NULL; + } /* see if can be entered in reuse tree * for that the FD has to be non-1 */ if(pend_tcp->c->fd == -1) { diff --git a/services/outside_network.h b/services/outside_network.h index 26705c56d..5ca074183 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -636,6 +636,19 @@ size_t outnet_get_mem(struct outside_network* outnet); */ size_t serviced_get_mem(struct serviced_query* sq); +/** Pick random ID value for a tcp stream, avoids existing IDs. */ +uint16_t reuse_tcp_select_id(struct reuse_tcp* reuse, + struct outside_network* outnet); + +/** find element in tree by id */ +struct waiting_tcp* reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id); + +/** insert element in tree by id */ +void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp* w); + +/** delete readwait waiting_tcp elements, deletes the elements in the list */ +void reuse_del_readwait(rbtree_type* tree_by_id); + /** get TCP file descriptor for address, returns -1 on failure, * tcp_mss is 0 or maxseg size to set for TCP packets. */ int outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, int dscp); diff --git a/testcode/unitmain.c b/testcode/unitmain.c index a42be424e..c61026f26 100644 --- a/testcode/unitmain.c +++ b/testcode/unitmain.c @@ -839,6 +839,52 @@ static void respip_test(void) respip_conf_actions_test(); } +#include "services/outside_network.h" +/** add number of new IDs to the reuse tree, randomly chosen */ +static void tcpid_addmore(struct reuse_tcp* reuse, + struct outside_network* outnet, unsigned int addnum) +{ + unsigned int i; + struct waiting_tcp* w; + for(i=0; iid = id; + w->outnet = outnet; + w->next_waiting = (void*)reuse->pending; + reuse_tree_by_id_insert(reuse, w); + } +} + +/** fill up the reuse ID tree and test assertions */ +static void tcpid_fillup(struct reuse_tcp* reuse, + struct outside_network* outnet) +{ + int t, numtest=3; + for(t=0; ttree_by_id, reuse_id_cmp); + tcpid_addmore(reuse, outnet, 65535); + reuse_del_readwait(&reuse->tree_by_id); + } +} + +/** test TCP ID selection */ +static void tcpid_test(void) +{ + struct pending_tcp pend; + struct outside_network outnet; + unit_show_func("services/outside_network.c", "reuse_tcp_select_id"); + memset(&pend, 0, sizeof(pend)); + pend.reuse.pending = &pend; + memset(&outnet, 0, sizeof(outnet)); + outnet.rnd = ub_initstate(NULL); + rbtree_init(&pend.reuse.tree_by_id, reuse_id_cmp); + tcpid_fillup(&pend.reuse, &outnet); + ub_randfree(outnet.rnd); +} + void unit_show_func(const char* file, const char* func) { printf("test %s:%s\n", file, func); @@ -907,6 +953,7 @@ main(int argc, char* argv[]) infra_test(); ldns_test(); msgparse_test(); + tcpid_test(); #ifdef CLIENT_SUBNET ecs_test(); #endif /* CLIENT_SUBNET */ From 725d4822e7ba0fbf6c4d07b6e38fc989d03139a5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Oct 2020 10:35:47 +0200 Subject: [PATCH 252/394] Changelog note for #228 - Merge PR #228 : infra-keep-probing option to probe hosts that are down. Add infra-keep-probing: yes option. Hosts that are down are probed more frequently. With the option turned on, it probes about every 120 seconds, eventually after exponential backoff, and that keeps that way. If traffic keeps up for the domain. It probes with one at a time, eg. one query is allowed to probe, other queries within that 120 second interval are turned away. --- doc/Changelog | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 61d2d4859..b7e5928ca 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,13 @@ +21 October 2020: Wouter + - Merge PR #228 : infra-keep-probing option to probe hosts that are + down. Add infra-keep-probing: yes option. Hosts that are down are + probed more frequently. + With the option turned on, it probes about every 120 seconds, + eventually after exponential backoff, and that keeps that way. If + traffic keeps up for the domain. It probes with one at a time, eg. + one query is allowed to probe, other queries within that 120 second + interval are turned away. + 19 October 2020: George - Merge PR #324 from James Renken: Add modern X.509v3 extensions to unbound-control TLS certificates. From ee3f26bb3d989c68868800321a228208d4892ade Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 21 Oct 2020 10:56:51 +0200 Subject: [PATCH 253/394] Add verbosity to debug occasional missing q1-10.example.net, from timer. --- testdata/dnstap.tdir/dnstap.pre | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/dnstap.tdir/dnstap.pre b/testdata/dnstap.tdir/dnstap.pre index 95216949c..6561d77e9 100644 --- a/testdata/dnstap.tdir/dnstap.pre +++ b/testdata/dnstap.tdir/dnstap.pre @@ -45,7 +45,7 @@ fi # make config file sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < dnstap.conf > ub.conf # start unbound in the background -$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +$PRE/unbound -d -c ub.conf -vvvv >unbound.log 2>&1 & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test From 7c39cbc0a9a5917f3e1e4e6e5ab773364c563d21 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 21 Oct 2020 16:45:18 +0200 Subject: [PATCH 254/394] - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. --- configure | 30 +++++++++++++++++++++++++++++- configure.ac | 18 +++++++++++++++++- doc/Changelog | 4 ++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 9a96bb232..3e5e562ae 100755 --- a/configure +++ b/configure @@ -14745,7 +14745,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -14759,6 +14759,34 @@ fi done +# net/if.h portability for Darwin see: +# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html +for ac_header in net/if.h +do : + ac_fn_c_check_header_compile "$LINENO" "net/if.h" "ac_cv_header_net_if_h" " +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_SYS_SOCKET_H +# include +#endif + +" +if test "x$ac_cv_header_net_if_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_IF_H 1 +_ACEOF + +fi + +done + # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH for ac_header in TargetConditionals.h diff --git a/configure.ac b/configure.ac index 2bd44353d..b4caa37dd 100644 --- a/configure.ac +++ b/configure.ac @@ -400,7 +400,23 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h],,, [AC_INCLUDES_DEFAULT]) +# net/if.h portability for Darwin see: +# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Header-Portability.html +AC_CHECK_HEADERS([net/if.h],,, [ +#include +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_SYS_SOCKET_H +# include +#endif +]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) diff --git a/doc/Changelog b/doc/Changelog index b7e5928ca..9d484a96d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +21 October 2020: George + - Fix #327: net/if.h check fails on some darwin versions; contribution by + Joshua Root. + 21 October 2020: Wouter - Merge PR #228 : infra-keep-probing option to probe hosts that are down. Add infra-keep-probing: yes option. Hosts that are down are From 0272889c44139b187ba1b0bc681c81b4894f8956 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 21 Oct 2020 17:44:04 +0200 Subject: [PATCH 255/394] - Fix #320: potential memory corruption due to size miscomputation upton custom region alloc init. --- doc/Changelog | 2 ++ util/regional.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9d484a96d..d3aa5d2ad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. + - Fix #320: potential memory corruption due to size miscomputation upton + custom region alloc init. 21 October 2020: Wouter - Merge PR #228 : infra-keep-probing option to probe hosts that are diff --git a/util/regional.c b/util/regional.c index 01a042b61..bd67ecf50 100644 --- a/util/regional.c +++ b/util/regional.c @@ -89,8 +89,9 @@ regional_init(struct regional* r) static struct regional* regional_create_custom_large_object(size_t size, size_t large_object_size) { - struct regional* r = (struct regional*)malloc(size); + struct regional* r; size = ALIGN_UP(size, ALIGNMENT); + r = (struct regional*)malloc(size); log_assert(sizeof(struct regional) <= size); if(!r) return NULL; r->first_size = size; From ca39cfd6ae73e3c97dd2a21f62b5134994e4b146 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Oct 2020 08:47:40 +0200 Subject: [PATCH 256/394] - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. --- doc/Changelog | 4 ++++ pythonmod/interface.i | 26 ++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d3aa5d2ad..776643c46 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 October 2020: Wouter + - Fix #333: Unbound Segmentation Fault w/ log_info Functions From + Python Mod. + 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by Joshua Root. diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 71f2bf774..cbee4f714 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1413,6 +1413,19 @@ struct delegpt* find_delegation(struct module_qstate* qstate, char *nm, size_t n /****************************** * Various debugging functions * ******************************/ + +/* rename the variadic functions because python does the formatting already*/ +%rename (unbound_log_info) log_info; +%rename (unbound_log_err) log_err; +%rename (unbound_log_warn) log_warn; +%rename (unbound_verbose) verbose; +/* provide functions that take one string as argument, so python can cook +the string */ +%rename (log_info) pymod_log_info; +%rename (log_warn) pymod_log_warn; +%rename (log_err) pymod_log_err; +%rename (verbose) pymod_verbose; + void verbose(enum verbosity_value level, const char* format, ...); void log_info(const char* format, ...); void log_err(const char* format, ...); @@ -1422,6 +1435,19 @@ void log_dns_msg(const char* str, struct query_info* qinfo, struct reply_info* r void log_query_info(enum verbosity_value v, const char* str, struct query_info* qinf); void regional_log_stats(struct regional *r); +/* the one argument string log functions */ +void pymod_log_info(const char* str); +void pymod_log_err(const char* str); +void pymod_log_warn(const char* str); +void pymod_verbose(enum verbosity_value level, const char* str); +%{ +void pymod_log_info(const char* str) { log_info("%s", str); } +void pymod_log_err(const char* str) { log_err("%s", str); } +void pymod_log_warn(const char* str) { log_warn("%s", str); } +void pymod_verbose(enum verbosity_value level, const char* str) { + verbose(level, "%s", str); } +%} + /*************************************************************************** * Free allocated memory from marked sources returning corresponding types * ***************************************************************************/ From 4990dae87d6c28c8b2323d353ceca8489a3c4ca9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 22 Oct 2020 09:26:27 +0200 Subject: [PATCH 257/394] - Fix that minimal-responses does not remove addresses from a priming query response. --- doc/Changelog | 2 ++ util/data/msgencode.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 776643c46..1201081d2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 22 October 2020: Wouter - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. + - Fix that minimal-responses does not remove addresses from a priming + query response. 21 October 2020: George - Fix #327: net/if.h check fails on some darwin versions; contribution by diff --git a/util/data/msgencode.c b/util/data/msgencode.c index be69f628a..1746cfbb8 100644 --- a/util/data/msgencode.c +++ b/util/data/msgencode.c @@ -624,6 +624,9 @@ positive_answer(struct reply_info* rep, uint16_t qtype) { for(i=0;ian_numrrsets; i++) { if(ntohs(rep->rrsets[i]->rk.type) == qtype) { + /* for priming queries, type NS, include addresses */ + if(qtype == LDNS_RR_TYPE_NS) + return 0; /* in case it is a wildcard with DNSSEC, there will * be NSEC/NSEC3 records in the authority section * that we cannot remove */ From d104727c911cc6147bdec458831c606ecc853da6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 27 Oct 2020 09:00:26 +0100 Subject: [PATCH 258/394] - In man page note that tls-cert-bundle is read before permission drop and chroot. --- doc/Changelog | 4 ++++ doc/unbound.conf.5.in | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 1201081d2..181aaad05 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 October 2020: Wouter + - In man page note that tls-cert-bundle is read before permission + drop and chroot. + 22 October 2020: Wouter - Fix #333: Unbound Segmentation Fault w/ log_info Functions From Python Mod. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 0b73480aa..84805f90f 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -522,7 +522,8 @@ Alternate syntax for \fBtls\-port\fR. If null or "", no file is used. Set it to the certificate bundle file, for example "/etc/pki/tls/certs/ca\-bundle.crt". These certificates are used for authenticating connections made to outside peers. For example auth\-zone -urls, and also DNS over TLS connections. +urls, and also DNS over TLS connections. It is read at start up before +permission drop and chroot. .TP .B ssl\-cert\-bundle: \fI Alternate syntax for \fBtls\-cert\-bundle\fR. From 9fb65e2b9edbcf6c739686710a3347de3cd890b1 Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Wed, 28 Oct 2020 14:15:23 +0100 Subject: [PATCH 259/394] Sprinkle in some static to prevent missing prototype warnings. --- util/netevent.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index 2428417fa..974c59996 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2248,7 +2248,7 @@ http_chunked_segment(struct comm_point* c) #ifdef HAVE_NGHTTP2 /** Create new http2 session. Called when creating handling comm point. */ -struct http2_session* http2_session_create(struct comm_point* c) +static struct http2_session* http2_session_create(struct comm_point* c) { struct http2_session* session = calloc(1, sizeof(*session)); if(!session) { @@ -2262,7 +2262,7 @@ struct http2_session* http2_session_create(struct comm_point* c) #endif /** Delete http2 session. After closing connection or on error */ -void http2_session_delete(struct http2_session* h2_session) +static void http2_session_delete(struct http2_session* h2_session) { #ifdef HAVE_NGHTTP2 if(h2_session->callbacks) @@ -2338,7 +2338,7 @@ void http2_session_add_stream(struct http2_session* h2_session, /** remove stream from session linked list. After stream close callback or * closing connection */ -void http2_session_remove_stream(struct http2_session* h2_session, +static void http2_session_remove_stream(struct http2_session* h2_session, struct http2_stream* h2_stream) { if(h2_stream->prev) From 18226f1c17e552e60800f4bc734f6c23e6054ea2 Mon Sep 17 00:00:00 2001 From: ihsinme <61293369+ihsinme@users.noreply.github.com> Date: Mon, 9 Nov 2020 18:41:22 +0300 Subject: [PATCH 260/394] fixing a possible memory leak. --- services/listen_dnsport.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index e506eeb31..744f204ac 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1404,6 +1404,7 @@ static int resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) { struct ifaddrs *ifa; + void * tmpbuf; int last_ip_addresses_size = *ip_addresses_size; for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { @@ -1468,10 +1469,13 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres } verbose(4, "interface %s has address %s", search_ifa, addr_buf); - *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); - if(!*ip_addresses) { + tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!tmpbuf) { + free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; + } else { + *ip_addresses = tmpbuf; } (*ip_addresses)[*ip_addresses_size] = strdup(addr_buf); if(!(*ip_addresses)[*ip_addresses_size]) { @@ -1482,10 +1486,13 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres } if (*ip_addresses_size == last_ip_addresses_size) { - *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); - if(!*ip_addresses) { + tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!tmpbuf) { + free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; + } else { + *ip_addresses = tmpbuf; } (*ip_addresses)[*ip_addresses_size] = strdup(search_ifa); if(!(*ip_addresses)[*ip_addresses_size]) { From 3926035f30b4eaeece1453dbfb5a7b866530a05c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 08:07:28 +0100 Subject: [PATCH 261/394] Changelog note for #341 and layout change. - Fix #341: fixing a possible memory leak. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 181aaad05..e8314747e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 November 2020: Wouter + - Fix #341: fixing a possible memory leak. + 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission drop and chroot. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 744f204ac..71c8eb159 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1404,7 +1404,7 @@ static int resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) { struct ifaddrs *ifa; - void * tmpbuf; + void *tmpbuf; int last_ip_addresses_size = *ip_addresses_size; for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { From 7977e1c4cb78c99e5a7aa449275b7a8e8998221c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 13:51:56 +0100 Subject: [PATCH 262/394] - Fix memory leak after fix for possible memory leak failure. --- doc/Changelog | 1 + services/listen_dnsport.c | 2 -- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index e8314747e..c9e871011 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. + - Fix memory leak after fix for possible memory leak failure. 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 71c8eb159..15ee6a389 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1471,7 +1471,6 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); if(!tmpbuf) { - free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; } else { @@ -1488,7 +1487,6 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres if (*ip_addresses_size == last_ip_addresses_size) { tmpbuf = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); if(!tmpbuf) { - free(*ip_addresses); log_err("realloc failed: out of memory"); return 0; } else { From 5385e2e09444d60df1bcbd3a173846ba933b03df Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 10 Nov 2020 15:31:20 +0100 Subject: [PATCH 263/394] - Fix #343: Fail to build --with-libnghttp2 with error: 'SSIZE_MAX' undeclared. --- doc/Changelog | 2 ++ services/listen_dnsport.c | 1 + 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index c9e871011..47fcd9178 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. - Fix memory leak after fix for possible memory leak failure. + - Fix #343: Fail to build --with-libnghttp2 with error: 'SSIZE_MAX' + undeclared. 27 October 2020: Wouter - In man page note that tls-cert-bundle is read before permission diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 15ee6a389..10a7aec60 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -43,6 +43,7 @@ # include #endif #include +#include #ifdef USE_TCP_FASTOPEN #include #endif From 26aa550bd246079b26366627fecbbe7d6e30dabd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Nov 2020 12:27:41 +0100 Subject: [PATCH 264/394] - Fix to connect() to UDP destinations, default turned on, this lowers vulnerability to ICMP side channels. --- services/outside_network.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 41a1d83f1..cef76053c 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1115,13 +1115,23 @@ select_ifport(struct outside_network* outnet, struct pending* pend, my_if = ub_random_max(outnet->rnd, num_if); pif = &ifs[my_if]; #ifndef DISABLE_EXPLICIT_PORT_RANDOMISATION - my_port = ub_random_max(outnet->rnd, pif->avail_total); - if(my_port < pif->inuse) { - /* port already open */ - pend->pc = pif->out[my_port]; - verbose(VERB_ALGO, "using UDP if=%d port=%d", - my_if, pend->pc->number); - break; + if(1) { + /* if we connect() we cannot reuse fds for a port */ + if(pif->inuse >= pif->avail_total) { + log_err("failed to find an open port, drop msg"); + return 0; + } + my_port = pif->inuse + ub_random_max(outnet->rnd, + pif->avail_total - pif->inuse); + } else { + my_port = ub_random_max(outnet->rnd, pif->avail_total); + if(my_port < pif->inuse) { + /* port already open */ + pend->pc = pif->out[my_port]; + verbose(VERB_ALGO, "using UDP if=%d port=%d", + my_if, pend->pc->number); + break; + } } /* try to open new port, if fails, loop to try again */ log_assert(pif->inuse < pif->maxout); @@ -1138,6 +1148,17 @@ select_ifport(struct outside_network* outnet, struct pending* pend, if(fd != -1) { verbose(VERB_ALGO, "opened UDP if=%d port=%d", my_if, portno); + if(1) { + /* connect() to the destination */ + if(connect(fd, (struct sockaddr*)&pend->addr, + pend->addrlen) < 0) { + log_err_addr("udp connect failed", + strerror(errno), &pend->addr, + pend->addrlen); + sock_close(fd); + return 0; + } + } /* grab fd */ pend->pc = outnet->unused_fds; outnet->unused_fds = pend->pc->next; From 48b40b305a946c590a005a1923070b95b5b61c3c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Nov 2020 12:28:10 +0100 Subject: [PATCH 265/394] Changelog note. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 47fcd9178..e9b8649fd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 November 2020: Wouter + - Fix to connect() to UDP destinations, default turned on, + this lowers vulnerability to ICMP side channels. + 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. - Fix memory leak after fix for possible memory leak failure. From b891fe113ca9d9a2a19552531d8e91b8dcf02164 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 12 Nov 2020 13:36:37 +0100 Subject: [PATCH 266/394] - Retry for interfaces with unused ports if possible. --- doc/Changelog | 1 + services/outside_network.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e9b8649fd..613d14cb7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, this lowers vulnerability to ICMP side channels. + - Retry for interfaces with unused ports if possible. 10 November 2020: Wouter - Fix #341: fixing a possible memory leak. diff --git a/services/outside_network.c b/services/outside_network.c index cef76053c..d184da545 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1118,6 +1118,9 @@ select_ifport(struct outside_network* outnet, struct pending* pend, if(1) { /* if we connect() we cannot reuse fds for a port */ if(pif->inuse >= pif->avail_total) { + tries++; + if(tries < MAX_PORT_RETRY) + continue; log_err("failed to find an open port, drop msg"); return 0; } From c48f01445e22686a0cb83451ab055cb405940b58 Mon Sep 17 00:00:00 2001 From: David Runge Date: Sat, 21 Nov 2020 14:10:39 +0100 Subject: [PATCH 267/394] Add AF_NETLINK to set of allowed socket address families contrib/unbound{,_portable}.service.in: With the changes introduced in f6a527c25ad2e60e2dc129fff3605e6ec48c30f2 it is now necessary to also allow access to the AF_NETLINK socket address family to be able to get information from interfaces. Without the AF_NETLINK address family the systemd service errors with: ``` error: failed to list interfaces: getifaddrs: Address family not supported by protocol ``` Fixes #350 --- contrib/unbound.service.in | 2 +- contrib/unbound_portable.service.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index c95ab94b3..a4596978d 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -66,7 +66,7 @@ ProtectSystem=strict RuntimeDirectory=unbound ConfigurationDirectory=unbound StateDirectory=unbound -RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX +RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX RestrictRealtime=true SystemCallArchitectures=native SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module mount @obsolete @resources diff --git a/contrib/unbound_portable.service.in b/contrib/unbound_portable.service.in index 998b66dec..e763763f0 100644 --- a/contrib/unbound_portable.service.in +++ b/contrib/unbound_portable.service.in @@ -38,7 +38,7 @@ ProtectSystem=strict RuntimeDirectory=unbound ConfigurationDirectory=unbound StateDirectory=unbound -RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX +RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX RestrictRealtime=true SystemCallArchitectures=native SystemCallFilter=~@clock @cpu-emulation @debug @keyring @module mount @obsolete @resources From 097e530c49ef418fdfe423a6557a374cae2cc95e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 08:58:41 +0100 Subject: [PATCH 268/394] Changelog notes for #350 and #351 - Merge #351 from dvzrv: Add AF_NETLINK to set of allowed socket address families. - Fix #350: with the AF_NETLINK permission, to fix 1.12.0 error: failed to list interfaces: getifaddrs: Address family not supported by protocol. --- doc/Changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 613d14cb7..a4c4792ff 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,10 @@ +23 November 2020: Wouter + - Merge #351 from dvzrv: Add AF_NETLINK to set of allowed socket + address families. + - Fix #350: with the AF_NETLINK permission, to fix 1.12.0 error: + failed to list interfaces: getifaddrs: Address family not + supported by protocol. + 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, this lowers vulnerability to ICMP side channels. From d83b1979c49ba24ea97afca25a2551c993f671e4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:29:26 +0100 Subject: [PATCH 269/394] stream reuse, debug output with verbose level instead of number. --- services/outside_network.c | 70 +++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 201489f62..a949846a2 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -423,14 +423,14 @@ tree_by_id_get_id(rbnode_type* node) static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { - log_reuse_tcp(5, "reuse_tcp_insert", &pend_tcp->reuse); + log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse); if(pend_tcp->reuse.item_on_lru_list) return 1; pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { /* this is a duplicate connection, close this one */ - verbose(5, "reuse_tcp_insert: duplicate connection"); + verbose(VERB_CLIENT, "reuse_tcp_insert: duplicate connection"); pend_tcp->reuse.node.key = NULL; return 0; } @@ -457,7 +457,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, struct pending_tcp key_p; struct comm_point c; rbnode_type* result = NULL, *prev; - verbose(5, "reuse_tcp_find"); + verbose(VERB_CLIENT, "reuse_tcp_find"); memset(&key_w, 0, sizeof(key_w)); memset(&key_p, 0, sizeof(key_p)); memset(&c, 0, sizeof(c)); @@ -472,7 +472,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, memmove(&key_p.reuse.addr, addr, addrlen); key_p.reuse.addrlen = addrlen; - verbose(5, "reuse_tcp_find: num reuse streams %u", + verbose(VERB_CLIENT, "reuse_tcp_find: num reuse streams %u", (unsigned)outnet->tcp_reuse.count); if(outnet->tcp_reuse.root == NULL || outnet->tcp_reuse.root == RBTREE_NULL) @@ -487,7 +487,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, /* not found, return null */ if(!result || result == RBTREE_NULL) return NULL; - verbose(5, "reuse_tcp_find check inexact match"); + verbose(VERB_CLIENT, "reuse_tcp_find check inexact match"); /* inexact match, find one of possibly several connections to the * same destination address, with the correct port, ssl, and * also less than max number of open queries, or else, fail to open @@ -520,7 +520,7 @@ outnet_tcp_take_query_setup(int s, struct pending_tcp* pend, struct waiting_tcp* w) { struct timeval tv; - verbose(5, "outnet_tcp_take_query_setup: setup packet to write " + verbose(VERB_CLIENT, "outnet_tcp_take_query_setup: setup packet to write " "len %d timeout %d msec", (int)w->pkt_len, w->timeout); pend->c->tcp_write_pkt = w->pkt; @@ -716,7 +716,7 @@ use_free_buffer(struct outside_network* outnet) reuse = reuse_tcp_find(outnet, &w->addr, w->addrlen, w->ssl_upstream); if(reuse) { - log_reuse_tcp(5, "use free buffer for waiting tcp: " + log_reuse_tcp(VERB_CLIENT, "use free buffer for waiting tcp: " "found reuse", reuse); reuse_tcp_lru_touch(outnet, reuse); comm_timer_disable(w->timer); @@ -795,7 +795,7 @@ reuse_move_writewait_away(struct outside_network* outnet, dname_valid(pend->query->pkt+12, pend->query->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; dname_str(pend->query->pkt+12, buf); - verbose(5, "reuse_move_writewait_away current %s %d bytes were written", + verbose(VERB_CLIENT, "reuse_move_writewait_away current %s %d bytes were written", buf, (int)pend->c->tcp_write_byte_count); } pend->c->tcp_write_pkt = NULL; @@ -820,7 +820,7 @@ reuse_move_writewait_away(struct outside_network* outnet, dname_valid(w->pkt+12, w->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; dname_str(w->pkt+12, buf); - verbose(5, "reuse_move_writewait_away item %s", buf); + verbose(VERB_CLIENT, "reuse_move_writewait_away item %s", buf); } reuse_tree_by_id_delete(&pend->reuse, w); outnet_add_tcp_waiting(outnet, w); @@ -832,7 +832,7 @@ static void reuse_tcp_remove_tree_list(struct outside_network* outnet, struct reuse_tcp* reuse) { - verbose(5, "reuse_tcp_remove_tree_list"); + verbose(VERB_CLIENT, "reuse_tcp_remove_tree_list"); if(reuse->node.key) { /* delete it from reuse tree */ (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node); @@ -885,7 +885,7 @@ static void decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { - verbose(5, "decommission_pending_tcp"); + verbose(VERB_CLIENT, "decommission_pending_tcp"); if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -946,7 +946,7 @@ static void reuse_cb_and_decommission(struct outside_network* outnet, static void reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp) { - log_reuse_tcp(5, "reuse_tcp_setup_timeout", &pend_tcp->reuse); + log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_timeout", &pend_tcp->reuse); comm_point_start_listening(pend_tcp->c, -1, REUSE_TIMEOUT); } @@ -954,7 +954,7 @@ reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp) static void reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp) { - log_reuse_tcp(5, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse); + log_reuse_tcp(VERB_CLIENT, "reuse_tcp_setup_readtimeout", &pend_tcp->reuse); sldns_buffer_clear(pend_tcp->c->buffer); pend_tcp->c->tcp_is_reading = 1; pend_tcp->c->tcp_byte_count = 0; @@ -1049,14 +1049,14 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } if(w) { reuse_tree_by_id_delete(&pend->reuse, w); - verbose(5, "outnet tcp callback query err %d buflen %d", + verbose(VERB_CLIENT, "outnet tcp callback query err %d buflen %d", error, (int)sldns_buffer_limit(c->buffer)); waiting_tcp_callback(w, c, error, reply_info); waiting_tcp_delete(w); } - verbose(5, "outnet_tcp_cb reuse after cb"); + verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb"); if(error == NETEVENT_NOERROR && pend->reuse.node.key) { - verbose(5, "outnet_tcp_cb reuse after cb: keep it"); + verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb: keep it"); /* it is in the reuse_tcp tree, with other queries, or * on the empty list. do not decommission it */ /* if there are more outstanding queries, we could try to @@ -1068,7 +1068,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, reuse_tcp_setup_read_and_timeout(pend); return 0; } - verbose(5, "outnet_tcp_cb reuse after cb: decommission it"); + verbose(VERB_CLIENT, "outnet_tcp_cb reuse after cb: decommission it"); /* no queries on it, no space to keep it. or timeout or closed due * to error. Close it */ reuse_cb_and_decommission(outnet, pend, (error==NETEVENT_TIMEOUT? @@ -1899,7 +1899,7 @@ outnet_tcptimer(void* arg) { struct waiting_tcp* w = (struct waiting_tcp*)arg; struct outside_network* outnet = w->outnet; - verbose(5, "outnet_tcptimer"); + verbose(VERB_CLIENT, "outnet_tcptimer"); if(w->on_tcp_waiting_list) { /* it is on the waiting list */ waiting_list_remove(outnet, w); @@ -1919,7 +1919,7 @@ static void reuse_tcp_close_oldest(struct outside_network* outnet) { struct pending_tcp* pend; - verbose(5, "reuse_tcp_close_oldest"); + verbose(VERB_CLIENT, "reuse_tcp_close_oldest"); if(!outnet->tcp_reuse_last) return; pend = outnet->tcp_reuse_last->pending; @@ -2016,9 +2016,9 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, struct reuse_tcp* reuse = NULL; struct waiting_tcp* w; - verbose(5, "pending_tcp_query"); + verbose(VERB_CLIENT, "pending_tcp_query"); if(sldns_buffer_limit(packet) < sizeof(uint16_t)) { - verbose(4, "pending tcp query with too short buffer < 2"); + verbose(VERB_ALGO, "pending tcp query with too short buffer < 2"); return NULL; } @@ -2027,7 +2027,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, reuse = reuse_tcp_find(sq->outnet, &sq->addr, sq->addrlen, sq->ssl_upstream); if(reuse) { - log_reuse_tcp(5, "pending_tcp_query: found reuse", reuse); + log_reuse_tcp(VERB_CLIENT, "pending_tcp_query: found reuse", reuse); log_assert(reuse->pending); pend = reuse->pending; reuse_tcp_lru_touch(sq->outnet, reuse); @@ -2079,7 +2079,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, if(reuse) { /* reuse existing fd, write query and continue */ /* store query in tree by id */ - verbose(5, "pending_tcp_query: reuse, store"); + verbose(VERB_CLIENT, "pending_tcp_query: reuse, store"); w->next_waiting = (void*)pend; reuse_tree_by_id_insert(&pend->reuse, w); /* can we write right now? */ @@ -2098,7 +2098,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, } else { /* create new fd and connect to addr, setup to * write query */ - verbose(5, "pending_tcp_query: new fd, connect"); + verbose(VERB_CLIENT, "pending_tcp_query: new fd, connect"); rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); pend->reuse.pending = pend; memcpy(&pend->reuse.addr, &sq->addr, sq->addrlen); @@ -2112,7 +2112,7 @@ pending_tcp_query(struct serviced_query* sq, sldns_buffer* packet, /* queue up */ /* waiting for a buffer on the outside network buffer wait * list */ - verbose(5, "pending_tcp_query: queue to wait"); + verbose(VERB_CLIENT, "pending_tcp_query: queue to wait"); outnet_add_tcp_waiting(sq->outnet, w); } #ifdef USE_DNSTAP @@ -2262,7 +2262,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, struct serviced_query* sq) { struct pending_tcp* pend_tcp = (struct pending_tcp*)w->next_waiting; - verbose(5, "reuse_tcp_remove_serviced_keep"); + verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep"); /* remove the callback. let query continue to write to not cancel * the stream itself. also keep it as an entry in the tree_by_id, * in case the answer returns (that we no longer want), but we cannot @@ -2273,12 +2273,12 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, /* see if can be entered in reuse tree * for that the FD has to be non-1 */ if(pend_tcp->c->fd == -1) { - verbose(5, "reuse_tcp_remove_serviced_keep: -1 fd"); + verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: -1 fd"); return 0; } /* if in tree and used by other queries */ if(pend_tcp->reuse.node.key) { - verbose(5, "reuse_tcp_remove_serviced_keep: in use by other queries"); + verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: in use by other queries"); /* do not reset the keepalive timer, for that * we'd need traffic, and this is where the serviced is * removed due to state machine internal reasons, @@ -2288,7 +2288,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, /* if still open and want to keep it open */ if(pend_tcp->c->fd != -1 && sq->outnet->tcp_reuse.count < sq->outnet->tcp_reuse_max) { - verbose(5, "reuse_tcp_remove_serviced_keep: keep open"); + verbose(VERB_CLIENT, "reuse_tcp_remove_serviced_keep: keep open"); /* set a keepalive timer on it */ if(!reuse_tcp_insert(sq->outnet, pend_tcp)) { return 0; @@ -2303,7 +2303,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, static void serviced_delete(struct serviced_query* sq) { - verbose(5, "serviced_delete"); + verbose(VERB_CLIENT, "serviced_delete"); if(sq->pending) { /* clear up the pending query */ if(sq->status == serviced_query_UDP_EDNS || @@ -2311,7 +2311,7 @@ serviced_delete(struct serviced_query* sq) sq->status == serviced_query_UDP_EDNS_FRAG || sq->status == serviced_query_UDP_EDNS_fallback) { struct pending* p = (struct pending*)sq->pending; - verbose(5, "serviced_delete: UDP"); + verbose(VERB_CLIENT, "serviced_delete: UDP"); if(p->pc) portcomm_loweruse(sq->outnet, p->pc); pending_delete(sq->outnet, p); @@ -2321,20 +2321,20 @@ serviced_delete(struct serviced_query* sq) } else { struct waiting_tcp* w = (struct waiting_tcp*) sq->pending; - verbose(5, "serviced_delete: TCP"); + verbose(VERB_CLIENT, "serviced_delete: TCP"); /* if on stream-write-waiting list then * remove from waiting list and waiting_tcp_delete */ if(w->write_wait_queued) { struct pending_tcp* pend = (struct pending_tcp*)w->next_waiting; - verbose(5, "serviced_delete: writewait"); + verbose(VERB_CLIENT, "serviced_delete: writewait"); reuse_tree_by_id_delete(&pend->reuse, w); reuse_write_wait_remove(&pend->reuse, w); waiting_tcp_delete(w); } else if(!w->on_tcp_waiting_list) { struct pending_tcp* pend = (struct pending_tcp*)w->next_waiting; - verbose(5, "serviced_delete: tcpreusekeep"); + verbose(VERB_CLIENT, "serviced_delete: tcpreusekeep"); if(!reuse_tcp_remove_serviced_keep(w, sq)) { reuse_cb_and_decommission(sq->outnet, pend, NETEVENT_CLOSED); @@ -2342,7 +2342,7 @@ serviced_delete(struct serviced_query* sq) } sq->pending = NULL; } else { - verbose(5, "serviced_delete: tcpwait"); + verbose(VERB_CLIENT, "serviced_delete: tcpwait"); waiting_list_remove(sq->outnet, w); waiting_tcp_delete(w); } From 6ded710013c6a10b76c200b51080f57a220e922c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:33:28 +0100 Subject: [PATCH 270/394] stream reuse, renamed ssl_reuse.tdir to tls_reuse.tdir. --- .../ssl_reuse.conf => tls_reuse.tdir/tls_reuse.conf} | 0 .../ssl_reuse.conf2 => tls_reuse.tdir/tls_reuse.conf2} | 0 .../ssl_reuse.dsc => tls_reuse.tdir/tls_reuse.dsc} | 0 .../ssl_reuse.post => tls_reuse.tdir/tls_reuse.post} | 0 .../ssl_reuse.pre => tls_reuse.tdir/tls_reuse.pre} | 0 .../ssl_reuse.test => tls_reuse.tdir/tls_reuse.test} | 0 testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_control.key | 0 testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_control.pem | 0 testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_server.key | 0 testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_server.pem | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename testdata/{ssl_reuse.tdir/ssl_reuse.conf => tls_reuse.tdir/tls_reuse.conf} (100%) rename testdata/{ssl_reuse.tdir/ssl_reuse.conf2 => tls_reuse.tdir/tls_reuse.conf2} (100%) rename testdata/{ssl_reuse.tdir/ssl_reuse.dsc => tls_reuse.tdir/tls_reuse.dsc} (100%) rename testdata/{ssl_reuse.tdir/ssl_reuse.post => tls_reuse.tdir/tls_reuse.post} (100%) rename testdata/{ssl_reuse.tdir/ssl_reuse.pre => tls_reuse.tdir/tls_reuse.pre} (100%) rename testdata/{ssl_reuse.tdir/ssl_reuse.test => tls_reuse.tdir/tls_reuse.test} (100%) rename testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_control.key (100%) rename testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_control.pem (100%) rename testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_server.key (100%) rename testdata/{ssl_reuse.tdir => tls_reuse.tdir}/unbound_server.pem (100%) diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.conf b/testdata/tls_reuse.tdir/tls_reuse.conf similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.conf rename to testdata/tls_reuse.tdir/tls_reuse.conf diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.conf2 b/testdata/tls_reuse.tdir/tls_reuse.conf2 similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.conf2 rename to testdata/tls_reuse.tdir/tls_reuse.conf2 diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.dsc b/testdata/tls_reuse.tdir/tls_reuse.dsc similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.dsc rename to testdata/tls_reuse.tdir/tls_reuse.dsc diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.post b/testdata/tls_reuse.tdir/tls_reuse.post similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.post rename to testdata/tls_reuse.tdir/tls_reuse.post diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.pre b/testdata/tls_reuse.tdir/tls_reuse.pre similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.pre rename to testdata/tls_reuse.tdir/tls_reuse.pre diff --git a/testdata/ssl_reuse.tdir/ssl_reuse.test b/testdata/tls_reuse.tdir/tls_reuse.test similarity index 100% rename from testdata/ssl_reuse.tdir/ssl_reuse.test rename to testdata/tls_reuse.tdir/tls_reuse.test diff --git a/testdata/ssl_reuse.tdir/unbound_control.key b/testdata/tls_reuse.tdir/unbound_control.key similarity index 100% rename from testdata/ssl_reuse.tdir/unbound_control.key rename to testdata/tls_reuse.tdir/unbound_control.key diff --git a/testdata/ssl_reuse.tdir/unbound_control.pem b/testdata/tls_reuse.tdir/unbound_control.pem similarity index 100% rename from testdata/ssl_reuse.tdir/unbound_control.pem rename to testdata/tls_reuse.tdir/unbound_control.pem diff --git a/testdata/ssl_reuse.tdir/unbound_server.key b/testdata/tls_reuse.tdir/unbound_server.key similarity index 100% rename from testdata/ssl_reuse.tdir/unbound_server.key rename to testdata/tls_reuse.tdir/unbound_server.key diff --git a/testdata/ssl_reuse.tdir/unbound_server.pem b/testdata/tls_reuse.tdir/unbound_server.pem similarity index 100% rename from testdata/ssl_reuse.tdir/unbound_server.pem rename to testdata/tls_reuse.tdir/unbound_server.pem From fd94b0bc9befe5db80cc041a42cf66fe98724cf9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:35:58 +0100 Subject: [PATCH 271/394] stream reuse, rename ssl_reuse test to tls_reuse test. --- testdata/tls_reuse.tdir/tls_reuse.dsc | 10 +++++----- testdata/tls_reuse.tdir/tls_reuse.post | 2 +- testdata/tls_reuse.tdir/tls_reuse.pre | 6 +++--- testdata/tls_reuse.tdir/tls_reuse.test | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/testdata/tls_reuse.tdir/tls_reuse.dsc b/testdata/tls_reuse.tdir/tls_reuse.dsc index ab2b67f66..76a80cdad 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.dsc +++ b/testdata/tls_reuse.tdir/tls_reuse.dsc @@ -1,6 +1,6 @@ -BaseName: ssl_reuse +BaseName: tls_reuse Version: 1.0 -Description: Test ssl stream reuse. +Description: Test tls stream reuse. CreationDate: Wed Jun 30 16:37:00 CET 2020 Maintainer: Wouter Wijngaards Category: @@ -8,9 +8,9 @@ Component: CmdDepends: Depends: Help: -Pre: ssl_reuse.pre -Post: ssl_reuse.post -Test: ssl_reuse.test +Pre: tls_reuse.pre +Post: tls_reuse.post +Test: tls_reuse.test AuxFiles: Passed: Failure: diff --git a/testdata/tls_reuse.tdir/tls_reuse.post b/testdata/tls_reuse.tdir/tls_reuse.post index 4337af204..2eef0da96 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.post +++ b/testdata/tls_reuse.tdir/tls_reuse.post @@ -1,4 +1,4 @@ -# #-- ssl_reuse.post --# +# #-- tls_reuse.post --# # source the master var file when it's there [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # source the test var file when it's there diff --git a/testdata/tls_reuse.tdir/tls_reuse.pre b/testdata/tls_reuse.tdir/tls_reuse.pre index 048ca6813..ddd6ff4d3 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.pre +++ b/testdata/tls_reuse.tdir/tls_reuse.pre @@ -1,4 +1,4 @@ -# #-- ssl_reuse.pre--# +# #-- tls_reuse.pre--# # source the master var file when it's there [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing @@ -13,7 +13,7 @@ echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test # make config file -sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < ssl_reuse.conf > ub.conf +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tls_reuse.conf > ub.conf # start unbound in the background #$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & valgrind $PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & @@ -22,7 +22,7 @@ echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test wait_unbound_up unbound.log # make upstream config file -sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < ssl_reuse.conf2 > ub2.conf +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tls_reuse.conf2 > ub2.conf # start upstream unbound in the background #$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & $PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & diff --git a/testdata/tls_reuse.tdir/tls_reuse.test b/testdata/tls_reuse.tdir/tls_reuse.test index d0106c17e..fe488cbb2 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.test +++ b/testdata/tls_reuse.tdir/tls_reuse.test @@ -1,4 +1,4 @@ -# #-- ssl_reuse.test --# +# #-- tls_reuse.test --# # source the master var file when it's there [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing From 6f4c79ab95a0f9cd7683b316a114507988e46066 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:37:26 +0100 Subject: [PATCH 272/394] stream reuse, fix review comments. --- services/outside_network.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index a949846a2..a6d787e6d 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -790,7 +790,7 @@ reuse_move_writewait_away(struct outside_network* outnet, pend->c->tcp_write_pkt_len == pend->query->pkt_len) { /* since the current query is not written, it can also * move to a free buffer */ - if(verbosity >= 5 && pend->query->pkt_len > 12+2+2 && + if(verbosity >= VERB_CLIENT && pend->query->pkt_len > 12+2+2 && LDNS_QDCOUNT(pend->query->pkt) > 0 && dname_valid(pend->query->pkt+12, pend->query->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; @@ -815,7 +815,7 @@ reuse_move_writewait_away(struct outside_network* outnet, outnet_add_tcp_waiting(outnet, w); } while((w = reuse_write_wait_pop(&pend->reuse)) != NULL) { - if(verbosity >= 5 && w->pkt_len > 12+2+2 && + if(verbosity >= VERB_CLIENT && w->pkt_len > 12+2+2 && LDNS_QDCOUNT(w->pkt) > 0 && dname_valid(w->pkt+12, w->pkt_len-12)) { char buf[LDNS_MAX_DOMAINLEN+1]; From 8143ce6967f640f3b538c180ca92b41e1b7c9b06 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:40:15 +0100 Subject: [PATCH 273/394] stream reuse, review comments. --- services/outside_network.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index a6d787e6d..d0dac9087 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -971,16 +971,17 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, struct waiting_tcp* w = NULL; verbose(VERB_ALGO, "outnettcp cb"); if(error == NETEVENT_TIMEOUT) { - if(pend->c->tcp_write_and_read) + if(pend->c->tcp_write_and_read) { verbose(VERB_QUERY, "outnettcp got tcp timeout " "for read, ignored because write underway"); - else verbose(VERB_QUERY, "outnettcp got tcp timeout %s", - (pend->reuse.tree_by_id.count?"for reading pkt": - "for keepalive for reuse")); - /* if we are writing, ignore readtimer, wait for write timer - * or write is done */ - if(pend->c->tcp_write_and_read) + /* if we are writing, ignore readtimer, wait for write timer + * or write is done */ return 0; + } else { + verbose(VERB_QUERY, "outnettcp got tcp timeout %s", + (pend->reuse.tree_by_id.count?"for reading pkt": + "for keepalive for reuse")); + } /* must be timeout for reading or keepalive reuse, * close it. */ reuse_tcp_remove_tree_list(outnet, &pend->reuse); From 4445d9c5aa0d0b5d53355e8e371ecb91f3c6f60f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:44:56 +0100 Subject: [PATCH 274/394] stream reuse, fix review comments. --- services/outside_network.h | 7 +++++-- testdata/tls_reuse.tdir/tls_reuse.conf | 2 +- testdata/tls_reuse.tdir/tls_reuse.test | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/services/outside_network.h b/services/outside_network.h index 5ca074183..15b33094f 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -233,8 +233,11 @@ struct port_comm { struct reuse_tcp { /** rbtree node with links in tcp_reuse tree. key is NULL when not * in tree. Both active and empty connections are in the tree. - * key is this structure, the sockaddr and and then is-ssl bool, - * and then ptr value for several times same address in tree */ + * key is a pointer to this structure, the members used to compare + * are the sockaddr and and then is-ssl bool, and then ptr value is + * used in case the same address exists several times in the tree + * when there are multiple connections to the same destination to + * make the rbtree items unique. */ rbnode_type node; /** the key for the tcp_reuse tree. address of peer, ip4 or ip6, * and port number of peer */ diff --git a/testdata/tls_reuse.tdir/tls_reuse.conf b/testdata/tls_reuse.tdir/tls_reuse.conf index 52857ca37..e8200b28b 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.conf +++ b/testdata/tls_reuse.tdir/tls_reuse.conf @@ -11,7 +11,7 @@ server: do-not-query-localhost: no tls-cert-bundle: "unbound_server.pem" - ssl-upstream: yes + tls-upstream: yes forward-zone: name: "." diff --git a/testdata/tls_reuse.tdir/tls_reuse.test b/testdata/tls_reuse.tdir/tls_reuse.test index fe488cbb2..0f392fba8 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.test +++ b/testdata/tls_reuse.tdir/tls_reuse.test @@ -190,7 +190,7 @@ for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do done # make the server timeout to drop the upstream connection -echo "> sleep 20" +echo "> sleep 15" sleep 15 # see if we are still up. echo "> query a7.more.net" From dde9fade2630afa353573379b193cc665efdab66 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:46:26 +0100 Subject: [PATCH 275/394] stream reuse, fix review comments. --- testdata/tcp_reuse.tdir/tcp_reuse.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.test b/testdata/tcp_reuse.tdir/tcp_reuse.test index e98afe0e6..b62ec0d19 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.test +++ b/testdata/tcp_reuse.tdir/tcp_reuse.test @@ -190,7 +190,7 @@ for x in a1.more.net a2.more.net a3.more.net a4.more.net a5.more.net; do done # make the server timeout to drop the upstream connection -echo "> sleep 20" +echo "> sleep 15" sleep 15 # see if we are still up. echo "> query a7.more.net" From cca128b871d7e74fec1496149fefebeb4fa6a8ce Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 09:56:01 +0100 Subject: [PATCH 276/394] + - Fix #347: IP_DONTFRAG broken on Apple xcode 12.2. --- doc/Changelog | 1 + services/listen_dnsport.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a4c4792ff..8ac0d50e4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix #350: with the AF_NETLINK permission, to fix 1.12.0 error: failed to list interfaces: getifaddrs: Address family not supported by protocol. + - Fix #347: IP_DONTFRAG broken on Apple xcode 12.2. 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 10a7aec60..bd87aac56 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -531,7 +531,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } } -# elif defined(IP_DONTFRAG) +# elif defined(IP_DONTFRAG) && !defined(__APPLE__) + /* the IP_DONTFRAG option if defined in the 11.0 OSX headers, + * but does not work on that version, so we exclude it */ int off = 0; if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG, &off, (socklen_t)sizeof(off)) < 0) { From 6b97cb1dd127125f99ac44df62bfcfc07b5fe1c3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 10:36:22 +0100 Subject: [PATCH 277/394] stream reuse, up connection reuse time to 60 seconds. --- services/outside_network.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/outside_network.h b/services/outside_network.h index 15b33094f..c90f9d02d 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -281,7 +281,7 @@ struct reuse_tcp { /** max number of queries on a reuse connection */ #define MAX_REUSE_TCP_QUERIES 200 /** timeout for REUSE entries in milliseconds. */ -#define REUSE_TIMEOUT 30000 +#define REUSE_TIMEOUT 60000 /** * A query that has an answer pending for it. From 9cc8aa1ddfc42ec9e8dc0607f1f051c89de55c65 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 11:06:53 +0100 Subject: [PATCH 278/394] - Option to toggle udp-connect, default is enabled. --- daemon/worker.c | 2 +- doc/Changelog | 1 + doc/example.conf.in | 3 + doc/unbound.conf.5.in | 4 + libunbound/libworker.c | 2 +- services/outside_network.c | 10 +- services/outside_network.h | 7 +- testcode/fake_event.c | 2 +- util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 4874 ++++++++++++++++++------------------ util/configlexer.lex | 1 + util/configparser.c | 3182 +++++++++++------------ util/configparser.h | 596 ++--- util/configparser.y | 13 +- 15 files changed, 4382 insertions(+), 4320 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 458afa04e..427ab4a92 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1807,7 +1807,7 @@ worker_init(struct worker* worker, struct config_file *cfg, &worker_alloc_cleanup, worker, cfg->do_udp || cfg->udp_upstream_without_downstream, worker->daemon->connect_sslctx, cfg->delay_close, - cfg->tls_use_sni, dtenv); + cfg->tls_use_sni, dtenv, cfg->udp_connect); if(!worker->back) { log_err("could not create outgoing sockets"); worker_delete(worker); diff --git a/doc/Changelog b/doc/Changelog index 8ac0d50e4..cfaa3d098 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ failed to list interfaces: getifaddrs: Address family not supported by protocol. - Fix #347: IP_DONTFRAG broken on Apple xcode 12.2. + - Option to toggle udp-connect, default is enabled. 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, diff --git a/doc/example.conf.in b/doc/example.conf.in index 85d475ea3..9269461cf 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -161,6 +161,9 @@ server: # msec to wait before close of port on timeout UDP. 0 disables. # delay-close: 0 + # perform connect for UDP sockets to mitigate ICMP side channel. + # udp-connect: yes + # msec for waiting for an unknown server to reply. Increase if you # are behind a slow satellite link, to eg. 1128. # unknown-server-time-limit: 376 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 84805f90f..8b15fbaea 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -274,6 +274,10 @@ eg. 1500 msec. When timeouts happen you need extra sockets, it checks the ID and remote IP of packets, and unwanted packets are added to the unwanted packet counter. .TP +.B udp\-connect: \fI +Perform connect for UDP sockets that mitigates ICMP side channel leakage. +Default is yes. +.TP .B unknown\-server\-time\-limit: \fI The wait time in msec for waiting for an unknown server to reply. Increase this if you are behind a slow satellite link, to eg. 1128. diff --git a/libunbound/libworker.c b/libunbound/libworker.c index bd42462e1..06cbb8869 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -238,7 +238,7 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb) ports, numports, cfg->unwanted_threshold, cfg->outgoing_tcp_mss, &libworker_alloc_cleanup, w, cfg->do_udp || cfg->udp_upstream_without_downstream, w->sslctx, - cfg->delay_close, cfg->tls_use_sni, NULL); + cfg->delay_close, cfg->tls_use_sni, NULL, cfg->udp_connect); w->env->outnet = w->back; if(!w->is_bg || w->is_bg_thread) { lock_basic_unlock(&ctx->cfglock); diff --git a/services/outside_network.c b/services/outside_network.c index d184da545..e06e4fcd3 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -723,7 +723,8 @@ outside_network_create(struct comm_base *base, size_t bufsize, struct ub_randstate* rnd, int use_caps_for_id, int* availports, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, - void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv) + void* sslctx, int delayclose, int tls_use_sni, struct dt_env* dtenv, + int udp_connect) { struct outside_network* outnet = (struct outside_network*) calloc(1, sizeof(struct outside_network)); @@ -761,6 +762,9 @@ outside_network_create(struct comm_base *base, size_t bufsize, outnet->delay_tv.tv_usec = (delayclose%1000)*1000; } #endif + if(udp_connect) { + outnet->udp_connect = 1; + } if(numavailports == 0 || num_ports == 0) { log_err("no outgoing ports available"); outside_network_delete(outnet); @@ -1115,7 +1119,7 @@ select_ifport(struct outside_network* outnet, struct pending* pend, my_if = ub_random_max(outnet->rnd, num_if); pif = &ifs[my_if]; #ifndef DISABLE_EXPLICIT_PORT_RANDOMISATION - if(1) { + if(outnet->udp_connect) { /* if we connect() we cannot reuse fds for a port */ if(pif->inuse >= pif->avail_total) { tries++; @@ -1151,7 +1155,7 @@ select_ifport(struct outside_network* outnet, struct pending* pend, if(fd != -1) { verbose(VERB_ALGO, "opened UDP if=%d port=%d", my_if, portno); - if(1) { + if(outnet->udp_connect) { /* connect() to the destination */ if(connect(fd, (struct sockaddr*)&pend->addr, pend->addrlen) < 0) { diff --git a/services/outside_network.h b/services/outside_network.h index c8f6d5724..76da03588 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -106,6 +106,9 @@ struct outside_network { int delayclose; /** timeout for delayclose */ struct timeval delay_tv; + /** if we perform udp-connect, connect() for UDP socket to mitigate + * ICMP side channel leakage */ + int udp_connect; /** array of outgoing IP4 interfaces */ struct port_if* ip4_ifs; @@ -421,6 +424,7 @@ struct serviced_query { * msec to wait on timeouted udp sockets. * @param tls_use_sni: if SNI is used for TLS connections. * @param dtenv: environment to send dnstap events with (if enabled). + * @param udp_connect: if the udp_connect option is enabled. * @return: the new structure (with no pending answers) or NULL on error. */ struct outside_network* outside_network_create(struct comm_base* base, @@ -429,7 +433,8 @@ struct outside_network* outside_network_create(struct comm_base* base, struct ub_randstate* rnd, int use_caps_for_id, int* availports, int numavailports, size_t unwanted_threshold, int tcp_mss, void (*unwanted_action)(void*), void* unwanted_param, int do_udp, - void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv); + void* sslctx, int delayclose, int tls_use_sni, struct dt_env *dtenv, + int udp_connect); /** * Delete outside_network structure. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index e8fc84746..e6cc07f0c 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1045,7 +1045,7 @@ outside_network_create(struct comm_base* base, size_t bufsize, void (*unwanted_action)(void*), void* ATTR_UNUSED(unwanted_param), int ATTR_UNUSED(do_udp), void* ATTR_UNUSED(sslctx), int ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni), - struct dt_env* ATTR_UNUSED(dtenv)) + struct dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect)) { struct replay_runtime* runtime = (struct replay_runtime*)base; struct outside_network* outnet = calloc(1, diff --git a/util/config_file.c b/util/config_file.c index 406911ecc..911b5716f 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -172,6 +172,7 @@ config_create(void) cfg->infra_cache_min_rtt = 50; cfg->infra_keep_probing = 0; cfg->delay_close = 0; + cfg->udp_connect = 1; if(!(cfg->outgoing_avail_ports = (int*)calloc(65536, sizeof(int)))) goto error_exit; init_outgoing_availports(cfg->outgoing_avail_ports, 65536); @@ -569,6 +570,7 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_POW2("infra-cache-slabs:", infra_cache_slabs) else S_SIZET_NONZERO("infra-cache-numhosts:", infra_cache_numhosts) else S_NUMBER_OR_ZERO("delay-close:", delay_close) + else S_YNO("udp-connect:", udp_connect) else S_STR("chroot:", chrootdir) else S_STR("username:", username) else S_STR("directory:", directory) @@ -964,6 +966,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "infra-keep-probing", infra_keep_probing) else O_MEM(opt, "infra-cache-numhosts", infra_cache_numhosts) else O_UNS(opt, "delay-close", delay_close) + else O_YNO(opt, "udp-connect", udp_connect) else O_YNO(opt, "do-ip4", do_ip4) else O_YNO(opt, "do-ip6", do_ip6) else O_YNO(opt, "do-udp", do_udp) diff --git a/util/config_file.h b/util/config_file.h index a12a078f7..20fad68e8 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -185,6 +185,8 @@ struct config_file { int infra_keep_probing; /** delay close of udp-timeouted ports, if 0 no delayclose. in msec */ int delay_close; + /** udp_connect enable uses UDP connect to mitigate ICMP side channel */ + int udp_connect; /** the target fetch policy for the iterator */ char* target_fetch_policy; diff --git a/util/configlexer.c b/util/configlexer.c index 9fc565e0c..aac33c0b2 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 336 -#define YY_END_OF_BUFFER 337 +#define YY_NUM_RULES 337 +#define YY_END_OF_BUFFER 338 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,368 +363,369 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3281] = +static const flex_int16_t yy_accept[3289] = { 0, - 1, 1, 310, 310, 314, 314, 318, 318, 322, 322, - 1, 1, 326, 326, 330, 330, 337, 334, 1, 308, - 308, 335, 2, 335, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 310, 311, 311, 312, - 335, 314, 315, 315, 316, 335, 321, 318, 319, 319, - 320, 335, 322, 323, 323, 324, 335, 333, 309, 2, - 313, 335, 333, 329, 326, 327, 327, 328, 335, 330, - 331, 331, 332, 335, 334, 0, 1, 2, 2, 2, - 2, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 1, 1, 311, 311, 315, 315, 319, 319, 323, 323, + 1, 1, 327, 327, 331, 331, 338, 335, 1, 309, + 309, 336, 2, 336, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 311, 312, 312, 313, + 336, 315, 316, 316, 317, 336, 322, 319, 320, 320, + 321, 336, 323, 324, 324, 325, 336, 334, 310, 2, + 314, 336, 334, 330, 327, 328, 328, 329, 336, 331, + 332, 332, 333, 336, 335, 0, 1, 2, 2, 2, + 2, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 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, 310, 0, 314, - 0, 321, 0, 318, 322, 0, 333, 0, 2, 2, - 333, 329, 0, 326, 330, 0, 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, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 311, 0, 315, + 0, 322, 0, 319, 323, 0, 334, 0, 2, 2, + 334, 330, 0, 327, 331, 0, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 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, 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, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 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, 124, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 133, 334, 334, 334, 334, 334, 334, - 334, 333, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 125, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 134, 335, 335, 335, 335, 335, 335, + 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 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, - 108, 334, 334, 334, 334, 334, 334, 8, 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, 125, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 109, 335, 335, 335, 335, 335, 335, 8, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 126, 335, 335, - 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, 138, 334, 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, 301, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 139, 335, + 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 302, 335, - 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, 333, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 64, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 237, 334, 14, - 15, 334, 19, 18, 334, 334, 221, 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, 131, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 64, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 238, + 335, 14, 15, 335, 19, 18, 335, 335, 222, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 132, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 219, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 3, - 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, 333, 334, 334, 334, 334, 334, 334, - 334, 295, 334, 334, 294, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 220, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 3, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 334, 335, 335, 335, + 335, 335, 335, 335, 296, 335, 335, 295, 335, 335, - 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, 317, 334, 334, 334, 334, 334, 334, 334, - 334, 63, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 67, 334, - 268, 334, 334, 334, 334, 334, 334, 334, 334, 302, - 303, 334, 334, 334, 334, 334, 68, 334, 334, 132, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 318, 335, 335, 335, 335, + 335, 335, 335, 335, 63, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 67, 335, 269, 335, 335, 335, 335, 335, 335, + 335, 335, 303, 304, 335, 335, 335, 335, 335, 68, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 128, 334, 334, 334, 334, 334, - 334, 334, 334, 208, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 21, 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, 157, 334, 334, 333, 317, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 106, + 335, 335, 133, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 129, 335, 335, + 335, 335, 335, 335, 335, 335, 209, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 21, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 158, 335, 335, + 334, 318, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 276, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 180, 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, 156, 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, 105, 334, + 335, 335, 335, 107, 335, 335, 335, 335, 335, 335, + 335, 277, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 181, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 157, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 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, 32, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 33, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 65, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 130, 333, 334, 334, 334, 334, 334, 123, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 66, 334, 334, 334, 334, 334, + 335, 335, 106, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 32, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 33, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 65, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 131, 334, 335, 335, + 335, 335, 335, 124, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 66, - 334, 334, 334, 334, 334, 334, 334, 241, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 181, 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, 54, - 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, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 242, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 182, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 54, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 259, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 58, - 334, 59, 334, 334, 334, 334, 334, 109, 334, 110, - 334, 334, 334, 334, 107, 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, 7, 334, 333, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 230, 334, 334, 334, 334, 159, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 260, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 58, 335, 59, 335, 335, 335, + 335, 335, 110, 335, 111, 335, 335, 335, 335, 108, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 7, + 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 242, 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, 45, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 55, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 200, 334, - 199, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 231, 335, 335, 335, 335, 160, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 243, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 45, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 55, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 201, 335, 200, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 16, 17, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 69, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 207, 334, 334, 334, 334, 334, - 334, 112, 334, 111, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 191, 334, 334, 334, 334, - 334, 334, 334, 334, 139, 333, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 100, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 89, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 16, 17, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 69, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 208, 335, 335, 335, 335, 335, 335, 113, 335, 112, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 192, 335, 335, 335, 335, 335, 335, 335, + 335, 140, 334, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 101, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 220, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 93, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 62, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 194, 195, 334, 334, 334, 270, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 89, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 221, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 94, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 62, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 195, + 196, 335, 335, 335, 271, 335, 335, 335, 335, 335, - 6, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 274, 334, 334, 334, 334, 334, 334, 296, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 42, 334, 334, 334, 334, 44, 334, 334, 334, 334, - 334, 334, 334, 334, 52, 334, 334, 334, 334, 334, - 334, 334, 333, 334, 187, 334, 334, 334, 134, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 212, - 334, 188, 334, 334, 334, 227, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 6, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 275, + 335, 335, 335, 335, 335, 335, 297, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 42, 335, 335, + 335, 335, 44, 335, 335, 335, 90, 335, 335, 335, + 335, 335, 52, 335, 335, 335, 335, 335, 335, 335, + 334, 335, 188, 335, 335, 335, 135, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 213, 335, 189, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 53, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 136, 117, 334, - 118, 334, 334, 334, 116, 334, 334, 334, 334, 334, - 334, 334, 334, 154, 334, 334, 50, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 258, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 189, 334, 334, 334, 334, 334, 192, - 334, 198, 334, 334, 334, 334, 334, 226, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 228, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 53, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 137, 118, 335, 119, 335, + 335, 335, 117, 335, 335, 335, 335, 335, 335, 335, + 335, 155, 335, 335, 50, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 259, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 190, 335, 335, 335, 335, 335, 193, 335, 199, + 335, 335, 335, 335, 335, 227, 335, 335, 335, 335, - 334, 334, 104, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 129, 334, 334, 334, 334, 334, 334, 60, 334, - 334, 334, 26, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 20, 334, 334, 334, 334, 334, 334, 27, - 36, 334, 164, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 333, 334, 334, 334, - 334, 334, 334, 77, 79, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 278, 334, - 334, 334, 334, 238, 334, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 105, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 130, + 335, 335, 335, 335, 335, 335, 60, 335, 335, 335, + 26, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 20, 335, 335, 335, 335, 335, 335, 27, 36, 335, + 165, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 334, 335, 335, 335, 335, 335, + 335, 77, 79, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 279, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 119, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 153, 334, 46, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 289, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 158, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 218, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 299, 334, 334, 334, 334, 334, 334, + 335, 239, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 120, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 154, 335, 46, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 290, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 159, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 219, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 175, 334, 334, 334, 334, - 334, 334, 334, 334, 113, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 170, 334, 182, 334, 334, 334, - 334, 333, 334, 142, 334, 334, 334, 334, 334, 99, - 334, 334, 334, 334, 210, 334, 334, 334, 334, 334, - 334, 228, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 250, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 135, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, + 335, 300, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 176, 335, 335, 335, 335, 335, 335, + 335, 335, 114, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 171, 335, 183, 335, 335, 335, 335, 334, + 335, 143, 335, 335, 335, 335, 335, 100, 335, 335, + 335, 335, 211, 335, 335, 335, 335, 335, 335, 229, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 251, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 136, 335, 335, - 334, 334, 334, 334, 174, 334, 334, 334, 334, 334, - 334, 80, 334, 81, 334, 334, 334, 334, 334, 61, - 292, 334, 334, 334, 334, 334, 88, 183, 334, 201, - 334, 231, 334, 334, 193, 271, 334, 334, 334, 334, - 334, 73, 334, 185, 334, 334, 334, 334, 334, 9, - 334, 334, 334, 103, 334, 334, 334, 334, 263, 334, - 334, 334, 334, 209, 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, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 175, 335, 335, 335, 335, 335, 335, 80, + 335, 81, 335, 335, 335, 335, 335, 61, 293, 335, + 335, 335, 335, 335, 88, 184, 335, 202, 335, 232, + 335, 335, 194, 272, 335, 335, 335, 335, 335, 73, + 335, 186, 335, 335, 335, 335, 335, 9, 335, 335, + 335, 104, 335, 335, 335, 335, 264, 335, 335, 335, + 335, 210, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 333, - 334, 334, 334, 334, 173, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 160, 334, 277, 334, 334, - 334, 334, 334, 249, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 222, 334, 334, 306, 334, - 334, 334, 269, 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, 293, 334, 184, 334, 334, 334, 334, - 334, 334, 334, 72, 74, 334, 334, 334, 334, 334, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, + 335, 335, 174, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 161, 335, 278, 335, 335, 335, 335, + 335, 250, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 223, 335, 335, 307, 335, 335, 335, + 270, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 294, 335, 185, 335, 335, 335, 335, 335, 335, - 334, 334, 102, 334, 334, 334, 334, 261, 334, 334, - 334, 334, 273, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 214, 34, 28, 30, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 35, 334, 29, - 31, 334, 334, 334, 334, 334, 334, 334, 334, 98, - 334, 334, 334, 334, 334, 334, 333, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 216, 213, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 71, 334, - 334, 334, 137, 334, 120, 334, 334, 334, 334, 334, + 335, 72, 74, 335, 335, 335, 335, 335, 335, 335, + 103, 335, 335, 335, 335, 262, 335, 335, 335, 335, + 274, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 215, 34, 28, 30, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 35, 335, 29, 31, 335, + 335, 335, 335, 335, 335, 335, 335, 99, 335, 335, + 335, 335, 335, 335, 334, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 217, 214, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 71, 335, 335, 335, - 334, 334, 334, 155, 47, 334, 334, 334, 325, 13, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 287, 334, 290, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 12, 334, 334, 22, 334, 334, 334, - 267, 334, 334, 334, 334, 275, 334, 334, 334, 75, - 334, 224, 334, 334, 334, 334, 215, 334, 334, 70, - 334, 334, 334, 334, 23, 334, 43, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 169, - 168, 325, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 217, 211, 334, 229, 334, 334, 279, 334, 334, + 138, 335, 121, 335, 335, 335, 335, 335, 335, 335, + 335, 156, 47, 335, 335, 335, 326, 13, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 288, 335, + 291, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 12, 335, 335, 22, 335, 335, 335, 268, 335, + 335, 335, 335, 276, 335, 335, 335, 75, 335, 225, + 335, 335, 335, 335, 216, 335, 335, 70, 335, 335, + 335, 335, 23, 335, 43, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 170, 169, 326, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 218, - 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, - 82, 334, 334, 334, 334, 262, 334, 334, 334, 334, - 197, 334, 334, 334, 334, 223, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 297, 298, 166, 334, 334, - 76, 334, 334, 334, 334, 176, 334, 334, 114, 115, - 334, 334, 334, 334, 161, 334, 163, 334, 202, 334, - 334, 334, 334, 167, 334, 334, 232, 334, 334, 334, - 334, 334, 334, 334, 144, 334, 334, 334, 334, 334, + 212, 335, 230, 335, 335, 280, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 82, 335, + 335, 335, 335, 263, 335, 335, 335, 335, 198, 335, + 335, 335, 335, 224, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 298, 299, 167, 335, 335, 76, 335, + 335, 335, 335, 177, 335, 335, 115, 116, 335, 335, + 335, 335, 162, 335, 164, 335, 203, 335, 335, 335, + 335, 168, 335, 335, 233, 335, 335, 335, 335, 335, - 334, 334, 334, 334, 334, 334, 334, 240, 334, 334, - 334, 334, 334, 334, 334, 334, 24, 334, 272, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 86, 203, 334, 334, 260, 334, 291, - 334, 196, 334, 334, 334, 334, 56, 334, 334, 334, - 334, 4, 334, 334, 334, 334, 127, 143, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 235, 37, 38, 334, - 334, 334, 334, 334, 334, 334, 280, 334, 334, 334, - 334, 334, 334, 334, 248, 334, 334, 334, 334, 334, + 335, 335, 145, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 241, 335, 335, 335, 335, + 335, 335, 335, 335, 24, 335, 273, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 86, 204, 335, 335, 261, 335, 292, 335, 197, + 335, 335, 335, 335, 56, 335, 335, 335, 335, 4, + 335, 335, 335, 335, 128, 144, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 236, 37, 38, 335, 335, 335, + 335, 335, 335, 335, 281, 335, 335, 335, 335, 335, - 334, 334, 334, 206, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 85, 334, 57, 266, - 334, 236, 334, 334, 334, 334, 11, 334, 334, 334, - 334, 334, 334, 126, 334, 334, 334, 334, 204, 90, - 334, 40, 334, 334, 334, 334, 334, 334, 334, 334, - 172, 334, 334, 334, 334, 334, 146, 334, 334, 334, - 334, 239, 334, 334, 334, 334, 334, 247, 334, 334, - 334, 334, 140, 334, 334, 334, 121, 122, 334, 334, - 334, 92, 96, 91, 334, 334, 334, 334, 83, 334, - 334, 334, 334, 334, 10, 334, 334, 334, 264, 300, + 335, 335, 249, 335, 335, 335, 335, 335, 335, 335, + 335, 207, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 85, 335, 57, 267, 335, 237, + 335, 335, 335, 335, 11, 335, 335, 335, 335, 335, + 335, 127, 335, 335, 335, 335, 205, 91, 335, 40, + 335, 335, 335, 335, 335, 335, 335, 335, 173, 335, + 335, 335, 335, 335, 147, 335, 335, 335, 335, 240, + 335, 335, 335, 335, 335, 248, 335, 335, 335, 335, + 141, 335, 335, 335, 122, 123, 335, 335, 335, 93, + 97, 92, 335, 335, 335, 335, 83, 335, 335, 335, - 334, 334, 334, 334, 305, 39, 334, 334, 334, 334, - 334, 171, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 97, 95, 334, 51, 334, - 334, 84, 288, 334, 334, 334, 334, 334, 334, 334, - 190, 334, 334, 334, 334, 334, 205, 334, 334, 334, - 334, 334, 334, 334, 334, 162, 78, 334, 334, 334, - 334, 334, 281, 334, 334, 334, 334, 334, 334, 334, - 244, 334, 334, 243, 141, 307, 334, 94, 48, 334, - 147, 148, 151, 152, 149, 150, 87, 334, 265, 334, + 335, 335, 10, 335, 335, 335, 265, 301, 335, 335, + 335, 335, 306, 39, 335, 335, 335, 335, 335, 172, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 98, 96, 335, 51, 335, 335, 84, + 289, 335, 335, 335, 335, 335, 335, 335, 191, 335, + 335, 335, 335, 335, 206, 335, 335, 335, 335, 335, + 335, 335, 335, 163, 78, 335, 335, 335, 335, 335, + 282, 335, 335, 335, 335, 335, 335, 335, 245, 335, + 335, 244, 142, 308, 335, 95, 48, 335, 148, 149, - 334, 334, 334, 165, 334, 334, 334, 334, 334, 234, - 334, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 178, 177, - 41, 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, 101, 334, 233, 334, - 257, 285, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 49, 5, 334, 334, 225, 334, - 334, 286, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 245, 25, 334, 334, 334, 334, 334, 334, 334, + 152, 153, 150, 151, 87, 335, 266, 335, 335, 335, + 335, 166, 335, 335, 335, 335, 335, 235, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 179, 178, 41, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 102, 335, 234, 335, 258, 286, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 49, 5, 335, 335, 226, 335, 335, 287, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 246, - 334, 334, 334, 334, 334, 246, 334, 334, 334, 145, - 334, 334, 334, 334, 334, 334, 334, 334, 179, 334, - 186, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 282, 334, 334, 334, 334, 334, 334, 334, 334, 334, - 334, 334, 334, 334, 334, 334, 334, 334, 304, 334, - 334, 253, 334, 334, 334, 334, 334, 283, 334, 334, - 334, 334, 334, 334, 284, 334, 334, 334, 251, 334, - 254, 255, 334, 334, 334, 334, 334, 252, 256, 0 + 25, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 247, 335, 335, 335, 146, 335, 335, + 335, 335, 335, 335, 335, 335, 180, 335, 187, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 283, 335, + 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 335, 335, 335, 335, 335, 335, 305, 335, 335, 254, + 335, 335, 335, 335, 335, 284, 335, 335, 335, 335, + 335, 335, 285, 335, 335, 335, 252, 335, 255, 256, + 335, 335, 335, 335, 335, 253, 257, 0 } ; static const YY_CHAR yy_ec[256] = @@ -767,17 +768,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[3299] = +static const flex_int16_t yy_base[3307] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3790, 3594, 81, 6407, - 6407, 6407, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3493, 3402, 81, 6428, + 6428, 6428, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 2749, 6407, 6407, 6407, - 107, 2656, 6407, 6407, 6407, 154, 2610, 2162, 6407, 6407, - 6407, 226, 2040, 6407, 6407, 6407, 163, 1972, 6407, 238, - 6407, 242, 148, 1845, 1693, 6407, 6407, 6407, 246, 1651, - 6407, 6407, 6407, 250, 1521, 254, 219, 0, 258, 0, + 185, 205, 194, 204, 178, 123, 3176, 6428, 6428, 6428, + 107, 2960, 6428, 6428, 6428, 154, 2373, 2342, 6428, 6428, + 6428, 226, 2208, 6428, 6428, 6428, 163, 2071, 6428, 238, + 6428, 242, 148, 1858, 1710, 6428, 6428, 6428, 246, 1553, + 6428, 6428, 6428, 250, 1440, 254, 219, 0, 258, 0, 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, @@ -785,8 +786,8 @@ static const flex_int16_t yy_base[3299] = 313, 314, 307, 323, 317, 312, 328, 326, 330, 334, 337, 340, 342, 343, 344, 346, 349, 354, 348, 356, 364, 357, 361, 359, 372, 376, 365, 360, 377, 380, - 384, 385, 387, 388, 391, 399, 389, 1437, 411, 1203, - 415, 1088, 422, 1027, 689, 426, 406, 430, 434, 0, + 384, 385, 387, 388, 391, 399, 389, 1400, 411, 1086, + 415, 984, 422, 871, 689, 426, 406, 430, 434, 0, 411, 280, 438, 233, 181, 442, 430, 442, 419, 438, 439, 441, 440, 443, 444, 445, 446, 449, 463, 455, 456, 467, 471, 472, 469, 476, 474, 460, 482, 488, @@ -807,701 +808,703 @@ static const flex_int16_t yy_base[3299] = 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6407, 817, 820, 833, 826, 834, 835, 836, - 841, 842, 823, 849, 847, 848, 852, 874, 856, 858, - 854, 863, 866, 6407, 864, 868, 898, 870, 872, 892, - 888, 884, 887, 889, 899, 896, 909, 902, 907, 911, - 922, 918, 919, 920, 921, 924, 930, 937, 932, 934, + 822, 818, 6428, 817, 820, 833, 826, 834, 835, 836, + 841, 842, 823, 849, 847, 848, 852, 874, 856, 863, + 854, 864, 858, 6428, 867, 868, 898, 881, 871, 889, + 885, 878, 887, 892, 894, 902, 911, 904, 908, 909, + 922, 915, 919, 924, 918, 927, 925, 935, 936, 931, - 859, 935, 944, 942, 943, 946, 950, 952, 953, 955, - 956, 769, 958, 962, 964, 973, 957, 965, 963, 975, - 977, 981, 982, 992, 985, 984, 998, 988, 1010, 1005, - 1006, 1007, 1013, 1009, 1008, 1017, 1019, 1021, 1022, 1023, - 1024, 1035, 1030, 1031, 1033, 1037, 1038, 1039, 1041, 1044, - 1045, 1047, 1049, 1051, 1050, 1056, 1060, 1058, 1066, 1061, - 6407, 1068, 1070, 1072, 1073, 1074, 1075, 6407, 1077, 1071, - 1076, 1078, 1090, 1093, 1104, 1081, 1085, 1100, 1103, 1101, - 1105, 1113, 1109, 1114, 1116, 1112, 1118, 1119, 1121, 1124, - 1122, 1125, 1130, 1131, 1132, 1133, 1152, 6407, 1136, 1139, + 934, 941, 948, 943, 945, 947, 956, 949, 950, 957, + 958, 769, 960, 967, 970, 964, 959, 975, 976, 977, + 979, 982, 983, 987, 985, 998, 1005, 999, 1012, 986, + 1010, 1011, 1014, 1013, 1019, 1020, 1022, 1024, 1025, 1027, + 1028, 1032, 1033, 1031, 1034, 1036, 1038, 1044, 1042, 1047, + 1048, 1049, 1056, 1058, 1051, 1064, 1052, 1050, 1068, 1060, + 6428, 1072, 1070, 1075, 1076, 1074, 1077, 6428, 1078, 1079, + 1080, 1081, 1090, 1092, 1093, 1099, 1088, 1103, 1105, 1106, + 1107, 1115, 1110, 1113, 1118, 1117, 1119, 1121, 1123, 1125, + 1127, 1126, 1128, 1134, 1135, 1138, 1155, 6428, 1137, 1145, - 1144, 1138, 1143, 1145, 1164, 1150, 1162, 1161, 1170, 1181, - 1174, 1182, 1176, 1163, 1187, 1184, 1191, 1189, 1193, 1195, - 1194, 1196, 1197, 1198, 1200, 1201, 1206, 6407, 1208, 1211, - 1220, 1221, 1222, 1223, 1224, 1225, 1137, 1226, 1228, 1227, - 1231, 1235, 1245, 1252, 1236, 1253, 1239, 1254, 1249, 1250, - 1256, 1259, 1258, 1260, 1270, 1266, 1272, 1281, 1284, 1283, - 1286, 1293, 1295, 1275, 1288, 1298, 1268, 1290, 1291, 1302, - 1292, 1303, 1304, 1306, 1313, 1308, 1311, 1314, 1316, 1317, - 1320, 1315, 1322, 1321, 1324, 1331, 1328, 1332, 1339, 1334, - 1340, 1338, 1343, 1348, 1349, 1355, 1345, 6407, 1363, 1358, + 1142, 1139, 1148, 1149, 1167, 1147, 1165, 1166, 1159, 1179, + 1177, 1178, 1180, 1186, 1187, 1188, 1190, 1195, 1191, 1140, + 1193, 1197, 1198, 1199, 1201, 1200, 1202, 1205, 6428, 1203, + 1214, 1227, 1213, 1222, 1223, 1224, 1226, 1228, 1229, 1230, + 1232, 1231, 1236, 1240, 1251, 1235, 1254, 1249, 1250, 1252, + 1256, 1257, 1260, 1258, 1259, 1270, 1265, 1273, 1280, 1282, + 1284, 1286, 1287, 1294, 1268, 1290, 1292, 1291, 1297, 1298, + 1300, 1299, 1301, 1307, 1305, 1314, 1311, 1310, 1312, 1313, + 1318, 1320, 1321, 1325, 1322, 1323, 1337, 1329, 1332, 1333, + 1339, 1347, 1340, 1349, 1350, 1351, 1352, 1353, 6428, 1360, - 1361, 1362, 1365, 1368, 1372, 1373, 1374, 1375, 1378, 1376, - 1379, 1384, 1385, 1386, 1380, 1393, 1395, 1403, 1398, 1387, - 1411, 1410, 1401, 1400, 1412, 1420, 1416, 1423, 1419, 1415, - 1424, 1431, 1428, 1432, 1433, 1442, 1427, 1434, 1439, 1435, - 1447, 1449, 1451, 1463, 1450, 1459, 1466, 1467, 1458, 1232, - 1461, 1470, 1471, 1473, 1474, 1475, 1476, 1484, 1477, 1479, - 1482, 1485, 1486, 1487, 1490, 1493, 1501, 1498, 1499, 1503, - 1505, 1509, 1507, 1510, 1514, 1515, 1516, 1518, 1517, 1519, - 1536, 1527, 1528, 1529, 1537, 1538, 1530, 1544, 1541, 1545, - 1551, 1547, 1555, 1553, 1556, 1559, 1561, 1564, 1562, 1565, + 1361, 1359, 1363, 1364, 1371, 1372, 1375, 1376, 1373, 1379, + 1378, 1381, 1385, 1386, 1387, 1382, 1388, 1390, 1399, 1403, + 1404, 1413, 1405, 1412, 1396, 1415, 1422, 1418, 1425, 1421, + 1420, 1426, 1433, 1428, 1430, 1434, 1442, 1437, 1435, 1446, + 1438, 1447, 1450, 1449, 1461, 1459, 1460, 1469, 1472, 1462, + 1464, 1470, 1474, 1475, 1477, 1478, 1479, 1480, 1488, 1481, + 1483, 1484, 1486, 1490, 1491, 1494, 1497, 1509, 1502, 1505, + 1504, 1507, 1511, 1513, 1514, 1518, 1519, 1520, 1522, 1521, + 1524, 1528, 1529, 1533, 1534, 1540, 1541, 1542, 1544, 1547, + 1548, 1551, 1550, 1559, 1561, 1549, 1562, 1565, 1568, 1570, - 1566, 1572, 1567, 1577, 1578, 1580, 1579, 1583, 1587, 1585, - 1590, 1589, 6407, 1591, 1603, 1592, 1601, 1599, 1602, 1604, - 1613, 1606, 1608, 1616, 1617, 1609, 1643, 6407, 1618, 6407, - 6407, 315, 6407, 6407, 1619, 1620, 6407, 1624, 1623, 1621, - 1631, 1638, 1640, 1625, 1646, 1644, 1647, 1656, 1668, 1649, - 1653, 1659, 1657, 1660, 1678, 1666, 1673, 1676, 1679, 1685, - 1695, 1683, 1696, 1693, 1700, 1701, 1706, 1707, 1709, 1713, - 1715, 1716, 1699, 1719, 1720, 1703, 1721, 1724, 1726, 1730, - 1731, 1727, 1734, 1733, 1742, 1738, 1748, 1757, 6407, 1749, - 1758, 1759, 1760, 1767, 1763, 1762, 1764, 1770, 1774, 1771, + 1571, 1572, 1573, 1580, 1575, 1578, 1581, 1585, 1586, 1591, + 1592, 1595, 1597, 1600, 6428, 1598, 1610, 1588, 1611, 1606, + 1603, 1605, 1619, 1612, 1614, 1616, 1622, 1624, 1648, 6428, + 1625, 6428, 6428, 315, 6428, 6428, 1626, 1627, 6428, 1630, + 1629, 1639, 1637, 1631, 1642, 1645, 1646, 1649, 1651, 1658, + 1672, 1654, 1661, 1662, 1665, 1675, 1677, 1678, 1666, 1686, + 1687, 1689, 1694, 1695, 1703, 1696, 1700, 1706, 1708, 1714, + 1710, 1719, 1720, 1709, 1716, 1723, 1724, 1726, 1725, 1728, + 1731, 1734, 1736, 1732, 1730, 1738, 1747, 1749, 1740, 1757, + 6428, 1753, 1761, 1765, 1762, 1769, 1768, 1764, 1766, 1773, - 1775, 1776, 1777, 1778, 1783, 1780, 1786, 1788, 1791, 1790, - 6407, 1792, 1795, 1796, 1798, 1799, 1802, 1806, 1800, 1807, - 1810, 1737, 1818, 1815, 1813, 1821, 1822, 1823, 1824, 6407, - 1834, 1826, 1829, 1833, 1830, 1837, 1839, 1841, 1842, 1843, - 1844, 1735, 1846, 1849, 1854, 1856, 1858, 1853, 1855, 1860, - 1861, 1871, 1874, 1877, 1878, 1879, 1880, 1881, 1882, 1883, - 1885, 1890, 1892, 1889, 1900, 1891, 1912, 1913, 1910, 1896, - 1908, 1893, 1895, 1917, 1925, 1921, 1909, 1922, 1929, 1926, - 1931, 1932, 1933, 1940, 1936, 1937, 1942, 1944, 1945, 1947, - 1948, 6407, 1949, 1954, 6407, 1956, 1955, 1953, 1976, 1957, + 1776, 1777, 1778, 1779, 1780, 1781, 1783, 1743, 1786, 1789, + 1797, 1790, 6428, 1792, 1793, 1795, 1798, 1799, 1804, 1805, + 1806, 1811, 1812, 1813, 1823, 1814, 1816, 1818, 1824, 1825, + 1827, 6428, 1832, 1829, 1835, 1839, 1840, 1842, 1843, 1845, + 1846, 1841, 1847, 1848, 1851, 1853, 1860, 1855, 1859, 1857, + 1865, 1868, 1873, 1875, 1878, 1881, 1882, 1883, 1884, 1885, + 1886, 1888, 1889, 1896, 1899, 1897, 1900, 1898, 1895, 1910, + 1919, 1902, 1914, 1916, 1917, 1918, 1920, 1929, 1924, 1925, + 1931, 1932, 1930, 1935, 1937, 1940, 1947, 1938, 1948, 1956, + 1942, 1949, 1954, 1951, 6428, 1958, 1960, 6428, 1962, 1961, - 1959, 1962, 1961, 1964, 1978, 1971, 1970, 1983, 1980, 1996, - 1991, 1993, 1998, 2001, 2003, 1999, 2004, 2005, 2006, 2010, - 2012, 2017, 2015, 2028, 2031, 2030, 2037, 2039, 2013, 2026, - 2034, 2053, 2036, 2038, 2041, 2044, 2046, 2057, 2042, 2049, - 2051, 2058, 2060, 2071, 2064, 2066, 2068, 2074, 2075, 2081, - 2083, 2082, 6407, 2091, 2089, 2084, 2094, 2088, 2104, 2095, - 2096, 6407, 2097, 2105, 2107, 2116, 2108, 2109, 2113, 2111, - 2112, 2119, 2120, 2121, 2124, 2129, 2125, 2140, 6407, 2122, - 6407, 2127, 2136, 2143, 2137, 2145, 2144, 2147, 2148, 6407, - 6407, 2149, 2146, 2157, 2166, 2161, 6407, 2164, 2171, 6407, + 1963, 1985, 1965, 1967, 1968, 1973, 1977, 1976, 1978, 1986, + 1987, 1989, 2005, 1998, 1995, 2008, 2010, 2011, 1979, 2013, + 2014, 2015, 2017, 2020, 2021, 2030, 2038, 2039, 2023, 2042, + 2040, 1997, 2041, 2043, 2062, 2044, 2045, 2051, 2046, 2047, + 2049, 2059, 2052, 2053, 2055, 2057, 2075, 2078, 2077, 2079, + 2064, 2084, 2086, 2087, 2090, 6428, 2098, 2093, 2094, 2095, + 2099, 2107, 2103, 2104, 6428, 2105, 2106, 2109, 2117, 2118, + 2116, 2119, 2120, 2122, 2121, 2126, 2128, 2130, 2142, 2129, + 2149, 6428, 2131, 6428, 2144, 2132, 2134, 2145, 2133, 2150, + 2155, 2156, 6428, 6428, 2157, 2154, 2166, 2170, 2168, 6428, - 2168, 2173, 2167, 2175, 2177, 2178, 2179, 2182, 2189, 2184, - 2191, 2186, 2194, 2188, 6407, 2187, 2198, 2200, 2203, 2206, - 2207, 2209, 2211, 6407, 2210, 2213, 2215, 2224, 2226, 2227, - 2217, 2228, 2232, 2220, 2230, 2234, 2237, 2239, 2247, 2248, - 2245, 2246, 2253, 2261, 6407, 2244, 2243, 2265, 2264, 2257, - 2266, 2267, 2260, 2268, 2270, 2271, 2272, 2277, 2279, 2280, - 2288, 2290, 2281, 2289, 2286, 2292, 2293, 2297, 2302, 2300, - 2301, 2303, 2304, 6407, 2305, 2313, 2306, 171, 2314, 2308, - 2315, 2316, 2325, 2320, 2317, 2336, 2338, 2331, 2335, 2339, - 2343, 2342, 2344, 2345, 2346, 2333, 2353, 2349, 2351, 6407, + 2169, 2177, 6428, 2174, 2179, 2172, 2173, 2180, 2183, 2184, + 2187, 2194, 2189, 2198, 2190, 2195, 2199, 6428, 2203, 2191, + 2210, 2211, 2204, 2214, 2217, 2218, 6428, 2221, 2207, 2225, + 2232, 2229, 2224, 2234, 2235, 2236, 2239, 2240, 2241, 2242, + 2243, 2250, 2253, 2246, 2249, 2255, 2264, 6428, 2248, 2262, + 2269, 2265, 2268, 2271, 2272, 2273, 2274, 2275, 2276, 2277, + 2284, 2283, 2285, 2286, 2296, 2298, 2287, 2294, 2304, 2295, + 2306, 2300, 2311, 2308, 2309, 2310, 2313, 6428, 2315, 2317, + 2319, 171, 2321, 2322, 2324, 2323, 2331, 2333, 2325, 2347, + 2348, 2327, 2344, 2350, 2346, 2353, 2354, 2355, 2356, 2357, - 2355, 2357, 2359, 2363, 2362, 2365, 2367, 6407, 2369, 2374, - 2379, 2388, 2382, 2366, 2390, 2376, 2391, 2392, 2394, 2396, - 2398, 2397, 2400, 2405, 2403, 6407, 2407, 2408, 2412, 2404, - 2418, 2421, 2411, 2419, 2426, 2427, 2428, 2429, 2430, 2431, - 2432, 2433, 2435, 2436, 2445, 2438, 2439, 2447, 2448, 2449, - 2450, 2452, 2455, 2457, 2461, 6407, 2470, 2467, 2465, 2466, - 2469, 2475, 2473, 2476, 2493, 2477, 2483, 2485, 2494, 2499, - 2490, 2501, 2511, 2513, 2515, 2516, 2523, 2519, 2521, 2527, - 2509, 2531, 2533, 2486, 2484, 2534, 2529, 2535, 2537, 2539, - 2547, 2548, 2545, 2552, 2544, 2554, 2568, 2559, 6407, 2563, + 2358, 2359, 2361, 6428, 2363, 2364, 2366, 2370, 2369, 2372, + 2377, 6428, 2379, 2386, 2389, 2398, 2381, 2390, 2399, 2395, + 2400, 2401, 2403, 2405, 2407, 2406, 2409, 2415, 2412, 6428, + 2417, 2420, 2422, 2413, 2429, 2428, 2421, 2435, 2436, 2437, + 2440, 2438, 2439, 2442, 2441, 2443, 2444, 2449, 2448, 2445, + 2447, 2457, 2458, 2459, 2468, 2469, 2461, 2470, 2471, 6428, + 2481, 2472, 2476, 2474, 2477, 2479, 2484, 2492, 2499, 2483, + 2494, 2496, 2500, 2510, 2503, 2505, 2512, 2520, 2517, 2525, + 2513, 2526, 2527, 2535, 2524, 2537, 2539, 2528, 2540, 2541, + 2543, 2546, 2547, 2549, 2559, 2560, 2552, 2562, 2555, 2576, - 2546, 2569, 2571, 2578, 2573, 2574, 2576, 2575, 2579, 2583, - 2584, 2585, 2592, 2590, 2593, 2594, 2595, 2597, 2598, 2604, - 2605, 2609, 2613, 2606, 2616, 2617, 6407, 2620, 2624, 2618, - 2625, 2627, 2628, 2632, 2635, 2633, 2639, 2640, 2642, 2643, - 2644, 2645, 2646, 2649, 2650, 2653, 6407, 2654, 2655, 2659, - 2662, 2667, 2666, 2668, 2675, 2677, 2679, 2669, 2682, 2683, - 2681, 6407, 2691, 2692, 2693, 2695, 2696, 2697, 2699, 2701, - 2702, 6407, 2703, 2704, 2706, 2713, 2714, 2709, 6407, 2717, - 2712, 2719, 2720, 2721, 2723, 2725, 2727, 2730, 2731, 2734, - 2736, 2745, 2735, 2742, 6407, 2738, 2754, 2746, 2751, 2755, + 2581, 2572, 6428, 2570, 2565, 2568, 2582, 2590, 2585, 2587, + 2588, 2592, 2595, 2596, 2597, 2598, 2605, 2600, 2602, 2603, + 2608, 2607, 2611, 2614, 2618, 2619, 2623, 2625, 2627, 2628, + 6428, 2631, 2633, 2629, 2635, 2637, 2639, 2642, 2645, 2647, + 2649, 2650, 2654, 2655, 2657, 2656, 2658, 2664, 2665, 2651, + 6428, 2674, 2666, 2678, 2668, 2679, 2672, 2685, 2686, 2687, + 2661, 2688, 2691, 2694, 2695, 2697, 6428, 2704, 2705, 2696, + 2712, 2707, 2703, 2708, 2714, 2711, 6428, 2715, 2717, 2718, + 2726, 2727, 2723, 6428, 2734, 2724, 2725, 2732, 2735, 2736, + 2733, 2739, 2742, 2743, 2746, 2748, 2755, 2749, 2756, 6428, - 2759, 2761, 2762, 2766, 2769, 2765, 2768, 6407, 2781, 2779, - 2784, 2791, 2770, 2772, 2786, 2787, 2788, 2794, 2796, 2797, - 2799, 6407, 2800, 2803, 2805, 2806, 2809, 2808, 2801, 2817, - 2810, 2815, 2818, 2824, 2825, 2827, 2828, 2829, 2830, 2831, - 2838, 2841, 2837, 2844, 2843, 2850, 2854, 2861, 2845, 2857, - 2858, 2860, 2862, 2865, 2872, 2873, 2874, 2877, 2879, 6407, - 2882, 2871, 2884, 2869, 2885, 2886, 2888, 2889, 2890, 2892, - 2894, 2899, 2895, 2898, 2907, 2911, 2908, 2913, 2915, 2916, - 2918, 2919, 2920, 2921, 2922, 2929, 2925, 2926, 2937, 2932, - 2936, 2944, 2943, 2945, 2946, 2947, 2949, 2933, 2953, 2955, + 2757, 2766, 2759, 2758, 2763, 2769, 2770, 2773, 2774, 2775, + 2778, 2781, 6428, 2792, 2789, 2787, 2800, 2790, 2530, 2796, + 2797, 2801, 2803, 2804, 2805, 2807, 6428, 2808, 2811, 2812, + 2815, 2813, 2818, 2819, 2826, 2823, 2825, 2828, 2831, 2832, + 2833, 2834, 2841, 2840, 2837, 2849, 2850, 2853, 2854, 2856, + 2859, 2867, 2870, 2843, 2866, 2869, 2862, 2871, 2872, 2879, + 2880, 2887, 2882, 2884, 6428, 2889, 2886, 2891, 2893, 2894, + 2895, 2897, 2896, 2898, 2901, 2902, 2908, 2904, 2905, 2920, + 2923, 2907, 2915, 2925, 2926, 2928, 2929, 2930, 2931, 2932, + 2939, 2935, 2936, 2947, 2938, 2942, 2952, 2953, 2954, 2955, - 2957, 2958, 2972, 2974, 2975, 2977, 2948, 2950, 2969, 2983, - 6407, 2976, 2979, 2978, 2967, 2988, 2991, 2992, 3001, 2996, - 2986, 2998, 3005, 3006, 3000, 3007, 3008, 3018, 3014, 6407, - 3015, 6407, 3016, 3017, 3023, 3027, 3019, 6407, 3030, 6407, - 3031, 3036, 3026, 3032, 6407, 3038, 3040, 3043, 3044, 3046, - 3047, 3050, 3049, 3051, 3055, 3053, 3057, 3058, 3059, 3063, - 3066, 3067, 3071, 3072, 3078, 3070, 3079, 3081, 3083, 3086, - 3088, 3089, 3090, 6407, 3094, 3091, 3096, 3098, 3100, 3101, - 3102, 3103, 3106, 3109, 3110, 3117, 3113, 3118, 3121, 3124, - 3128, 3131, 3132, 3140, 6407, 3135, 3137, 3138, 3139, 6407, + 2956, 2963, 2943, 2961, 2958, 2965, 2966, 2970, 2980, 2981, + 2967, 2982, 2983, 2984, 2985, 6428, 2988, 2989, 2990, 2993, + 2996, 2999, 3002, 3009, 3000, 3001, 3011, 3017, 3018, 3008, + 3019, 3010, 3026, 3024, 6428, 3025, 6428, 3027, 3029, 3031, + 3039, 3035, 6428, 3041, 6428, 3042, 3047, 3036, 3038, 6428, + 3050, 3044, 3049, 3056, 3051, 3059, 3060, 3062, 3061, 3068, + 3063, 3065, 3070, 3071, 3073, 3076, 3074, 3081, 3082, 3086, + 3090, 3091, 3078, 3102, 3084, 3094, 3100, 3092, 3107, 6428, + 3109, 3097, 3110, 3115, 3114, 3116, 3117, 3118, 3120, 3121, + 3123, 3127, 3122, 3132, 3124, 3136, 3135, 3145, 3146, 3153, - 3142, 3143, 3150, 3153, 3144, 3146, 3148, 3156, 3160, 3155, - 3162, 3165, 3166, 3176, 3175, 3168, 6407, 3177, 3178, 3179, - 3188, 3182, 3195, 3196, 3192, 3193, 3198, 3206, 3202, 3201, - 3203, 3205, 3208, 3209, 3216, 3217, 3213, 3225, 3215, 3222, - 3230, 3226, 3223, 3220, 3232, 3233, 3234, 3235, 3236, 3237, - 3239, 3242, 3245, 6407, 3246, 3251, 3253, 3256, 3255, 3257, - 3259, 3260, 3261, 6407, 3268, 3265, 3271, 3269, 3277, 3272, - 3270, 3280, 3283, 3286, 3288, 3289, 3290, 3291, 6407, 3293, - 6407, 3292, 3294, 3306, 3310, 3300, 3298, 3311, 3319, 3315, - 3320, 3321, 3322, 3323, 3324, 3325, 3329, 3332, 3336, 3337, + 6428, 3148, 3150, 3151, 3152, 6428, 3154, 3155, 3156, 3160, + 3163, 3164, 3165, 3168, 3172, 3167, 3169, 3174, 3183, 3184, + 3187, 3188, 6428, 3190, 3193, 3175, 3202, 3196, 3203, 3210, + 3206, 3208, 3212, 3220, 3216, 3215, 3217, 3218, 3219, 3222, + 3229, 3230, 3226, 3233, 3232, 3236, 3243, 3240, 3234, 3238, + 3244, 3246, 3247, 3248, 3249, 3250, 3253, 3254, 3251, 6428, + 3259, 3265, 3263, 3272, 3268, 3269, 3273, 3278, 3274, 6428, + 3280, 3281, 3282, 3284, 3289, 3283, 3286, 3291, 3294, 3297, + 3299, 3302, 3304, 3303, 6428, 3305, 6428, 3307, 3308, 3318, + 3322, 3323, 3310, 3324, 3330, 3326, 3331, 3333, 3336, 3334, - 3347, 3330, 3338, 3335, 3343, 3333, 3352, 6407, 6407, 3354, - 3355, 3358, 3356, 3360, 3361, 3362, 3371, 3365, 3367, 3368, - 3374, 3382, 6407, 3384, 3375, 3378, 3386, 3393, 3388, 3395, - 3402, 3399, 3403, 3401, 6407, 3405, 3408, 3415, 3410, 3411, - 3418, 6407, 3413, 6407, 3416, 3417, 3419, 3424, 3426, 3428, - 3429, 3430, 3432, 3440, 3448, 3437, 3446, 3438, 3447, 3449, - 3451, 3460, 3452, 3455, 3457, 6407, 3462, 3456, 3459, 3467, - 3473, 3477, 3470, 3466, 6407, 3469, 3480, 3484, 3485, 3486, - 3487, 3491, 3488, 3492, 3493, 3496, 6407, 3494, 3497, 3507, - 3500, 3503, 3509, 3511, 3516, 3523, 6407, 3520, 3518, 3530, + 3340, 3337, 3342, 3343, 3345, 3357, 3348, 3344, 3349, 3358, + 3359, 3363, 3360, 6428, 6428, 3365, 3366, 3367, 3369, 3371, + 3370, 3377, 3374, 3382, 3381, 3388, 3389, 3397, 6428, 3394, + 3395, 3393, 3398, 3406, 3401, 3405, 3417, 3413, 3420, 3416, + 6428, 3412, 3421, 3429, 3424, 3425, 3433, 6428, 3430, 6428, + 3426, 3431, 3436, 3439, 3440, 3441, 3442, 3443, 3447, 3455, + 3458, 3451, 3460, 3461, 3462, 3463, 3466, 3470, 3473, 3469, + 3471, 3472, 6428, 3475, 3476, 3484, 3489, 3492, 3493, 3477, + 3478, 6428, 3495, 3485, 3503, 3499, 3504, 3505, 3509, 3506, + 3510, 3511, 3513, 6428, 3512, 3514, 3521, 3526, 3519, 3522, - 3529, 3514, 3531, 3532, 3534, 3536, 3537, 3538, 3539, 3540, - 3541, 3547, 3542, 3543, 3551, 3546, 3562, 3563, 3549, 3553, - 3571, 3561, 6407, 3569, 3570, 3575, 3572, 3576, 3579, 3580, - 3584, 3586, 3577, 3599, 3600, 3587, 3589, 3603, 3605, 3612, - 3604, 6407, 3617, 3596, 3619, 3615, 3618, 3623, 3616, 3620, - 3627, 3624, 3628, 3629, 3630, 3632, 3641, 3633, 3638, 3642, - 3643, 3650, 3648, 6407, 3657, 3653, 3654, 3659, 3655, 3662, - 3670, 3665, 3671, 3672, 3676, 3673, 3678, 3680, 3681, 3682, - 3685, 3686, 6407, 6407, 3688, 3689, 3692, 6407, 3695, 3690, - 3702, 3698, 3694, 3705, 3709, 3708, 3707, 3712, 3710, 3718, + 3530, 3532, 3540, 6428, 3536, 3533, 3549, 3545, 3546, 3548, + 3551, 3527, 3552, 3553, 3555, 3556, 3557, 3559, 3560, 3563, + 3564, 3566, 3565, 3577, 3576, 3579, 3584, 3586, 3570, 6428, + 3587, 3590, 3592, 3593, 3595, 3598, 3599, 3602, 3604, 3596, + 3618, 3619, 3605, 3607, 3622, 3611, 3629, 3624, 6428, 3631, + 3630, 3638, 3609, 3633, 3640, 3635, 3637, 3644, 3641, 3645, + 3646, 3649, 3647, 3659, 3657, 3654, 3660, 3661, 3664, 3662, + 6428, 3673, 3663, 3665, 3683, 3668, 3675, 3692, 3684, 3687, + 3688, 3695, 3689, 3696, 3691, 3698, 3699, 3702, 3703, 6428, + 6428, 3705, 3706, 3708, 6428, 3710, 3712, 3722, 3714, 3718, - 6407, 3719, 3727, 3722, 3723, 3731, 3732, 3729, 3735, 3737, - 3738, 3741, 3739, 3744, 3743, 3745, 3748, 3756, 3759, 3752, - 3754, 3762, 6407, 3755, 3757, 3763, 3765, 3767, 3770, 6407, - 3773, 3774, 3777, 3780, 3788, 3790, 3784, 3797, 3781, 3791, - 3793, 3798, 3799, 3801, 3810, 3807, 3806, 3809, 3813, 3816, - 6407, 3815, 3817, 3818, 3826, 6407, 3830, 3837, 3840, 3841, - 3823, 3827, 3839, 3848, 6407, 3843, 3846, 3844, 3845, 3853, - 3852, 3860, 3857, 3859, 6407, 3861, 3858, 3863, 6407, 3864, - 3865, 3876, 3879, 3869, 3886, 3881, 3883, 3884, 3882, 6407, - 3892, 6407, 3893, 3894, 3898, 6407, 3895, 3900, 3903, 3902, + 3721, 3725, 3726, 3724, 3727, 3729, 3730, 6428, 3737, 3740, + 3738, 3741, 3749, 3751, 3753, 3754, 3747, 3744, 3757, 3760, + 3762, 3761, 3763, 3766, 3774, 3775, 3770, 3771, 3773, 6428, + 3778, 3780, 3782, 3784, 3781, 3788, 6428, 3785, 3791, 3799, + 3792, 3797, 3806, 3807, 3809, 3794, 3811, 3812, 3814, 3813, + 3816, 3826, 3817, 3822, 3829, 3834, 3837, 6428, 3821, 3838, + 3824, 3840, 6428, 3843, 3851, 3852, 6428, 3853, 3848, 3855, + 3856, 3863, 6428, 3858, 3861, 3859, 3862, 3872, 3864, 3873, + 3875, 3869, 6428, 3876, 3877, 3878, 6428, 3879, 3884, 3890, + 3892, 3893, 3900, 3895, 3897, 3898, 3899, 6428, 3905, 6428, - 3904, 3905, 3909, 3915, 3917, 3911, 3919, 3920, 3921, 3922, - 3924, 3933, 3923, 3925, 3930, 3932, 6407, 3935, 3937, 3942, - 3943, 3949, 3945, 3952, 3939, 3953, 3872, 6407, 6407, 3957, - 6407, 3959, 3961, 3963, 6407, 3965, 3967, 3972, 3968, 3969, - 3971, 3975, 3976, 6407, 3983, 3986, 6407, 3978, 3988, 3995, - 3990, 3991, 3992, 3998, 3993, 3996, 4003, 4004, 4005, 4006, - 4000, 4007, 4008, 6407, 4009, 4010, 4011, 4025, 4019, 4021, - 4028, 4030, 4032, 6407, 4034, 4036, 4040, 4042, 4043, 6407, - 4044, 6407, 4045, 4046, 4048, 4049, 4054, 6407, 4057, 4056, - 4062, 4064, 4066, 4065, 4069, 4072, 4068, 4075, 4082, 4078, + 3903, 3907, 3911, 6428, 3909, 3914, 3915, 3917, 3918, 3923, + 3924, 3922, 3931, 3932, 3933, 3935, 3936, 3934, 3939, 3943, + 3940, 3941, 3945, 3946, 6428, 3947, 3949, 3956, 3961, 3968, + 3957, 3964, 3951, 3970, 3971, 6428, 6428, 3974, 6428, 3977, + 3978, 3979, 6428, 3981, 3983, 3988, 3985, 3986, 3989, 3993, + 3990, 6428, 4000, 4003, 6428, 4001, 4005, 4012, 4007, 4008, + 4009, 4015, 4010, 4013, 4020, 4021, 4022, 4023, 4017, 4025, + 4036, 6428, 4018, 4026, 4027, 4045, 4028, 4031, 4047, 4048, + 4041, 6428, 4052, 4054, 4058, 4059, 4060, 6428, 4062, 6428, + 4063, 4065, 4066, 4068, 4069, 6428, 4073, 4072, 4080, 4077, - 4079, 4080, 6407, 4081, 4084, 4094, 4096, 4087, 4085, 4107, - 4099, 4089, 4103, 4106, 4109, 4111, 4112, 4115, 4110, 4120, - 4117, 6407, 4118, 4124, 4128, 4137, 4129, 4132, 6407, 4133, - 4134, 4141, 6407, 4140, 4142, 4143, 4148, 4150, 4151, 4154, - 4157, 4158, 6407, 4155, 4160, 4156, 4159, 4161, 4165, 6407, - 6407, 4175, 6407, 4177, 4163, 4178, 4179, 4180, 4182, 4185, - 4187, 4189, 4190, 4195, 4198, 4200, 4192, 4207, 4208, 4210, - 4212, 4211, 4216, 6407, 6407, 4218, 4220, 4222, 4224, 4225, - 4227, 4229, 4234, 4232, 4240, 4243, 4233, 4250, 6407, 4245, - 4248, 4251, 4252, 6407, 4253, 4254, 4256, 4258, 4257, 4263, + 4082, 4083, 4084, 4090, 4091, 4092, 4099, 4096, 4094, 4097, + 6428, 4098, 4100, 4111, 4115, 4104, 4102, 4124, 4108, 4121, + 4120, 4125, 4127, 4128, 4129, 4131, 4134, 4137, 4135, 6428, + 4136, 4144, 4139, 4155, 4147, 4150, 6428, 4151, 4152, 4159, + 6428, 4158, 4161, 4165, 4167, 4168, 4169, 4172, 4170, 4175, + 6428, 4173, 4177, 4176, 4178, 4192, 4182, 6428, 6428, 4193, + 6428, 4194, 4179, 4180, 4198, 4201, 4204, 4206, 4208, 4210, + 4203, 4207, 4214, 4215, 4218, 4230, 4227, 4231, 4220, 4233, + 4232, 6428, 6428, 4235, 4236, 4238, 4243, 4244, 4246, 4239, + 4254, 4250, 4259, 4264, 4256, 4271, 6428, 4249, 4266, 4268, - 4260, 4264, 4261, 4265, 4270, 4267, 4274, 4275, 4277, 4283, - 4282, 4285, 4286, 4288, 4292, 4296, 6407, 4297, 4293, 4298, - 4299, 4300, 4302, 4306, 4307, 4308, 6407, 4311, 6407, 4315, - 4309, 4314, 4316, 4331, 4332, 4333, 4325, 4334, 4339, 4340, - 4343, 4344, 4350, 4345, 4351, 4353, 4347, 4358, 4362, 4363, - 6407, 4365, 4335, 4366, 4367, 4372, 4374, 4369, 4376, 4377, - 4381, 4378, 4382, 4384, 4390, 4385, 4391, 4392, 4394, 6407, - 4396, 4398, 4402, 4404, 4405, 4408, 4407, 4411, 4416, 4409, - 4417, 4418, 4420, 6407, 4422, 4424, 4425, 4426, 4434, 4429, - 4431, 4435, 4438, 6407, 4444, 4439, 4445, 4441, 4446, 4449, + 4267, 6428, 4269, 4270, 4273, 4274, 4276, 4277, 4282, 4279, + 4278, 4280, 4285, 4288, 4290, 4301, 4291, 4293, 4297, 4303, + 4307, 4308, 4310, 4314, 6428, 4311, 4304, 4315, 4316, 4318, + 4324, 4320, 4325, 4326, 6428, 4329, 6428, 4327, 4331, 4330, + 4333, 4349, 4346, 4350, 4352, 4354, 4356, 4357, 4360, 4361, + 4367, 4355, 4362, 4371, 4364, 4378, 4380, 4381, 6428, 4382, + 4374, 4383, 4384, 4389, 4391, 4385, 4393, 4395, 4398, 4399, + 4400, 4402, 4407, 4408, 4409, 4410, 4411, 6428, 4412, 4416, + 4419, 4421, 4423, 4332, 4425, 4426, 4432, 4429, 4434, 4433, + 4436, 6428, 4437, 4439, 4440, 4443, 4445, 4446, 4451, 4453, - 4451, 4456, 4454, 4458, 4462, 6407, 4461, 4466, 4469, 4468, - 4470, 4475, 4476, 4472, 6407, 4479, 4485, 4486, 4494, 4478, - 4495, 4487, 4497, 4491, 4500, 4503, 4505, 4508, 4509, 4510, - 4507, 4526, 4528, 4511, 6407, 4504, 6407, 4523, 4529, 4531, - 4533, 4535, 4527, 6407, 4536, 4537, 4539, 4541, 4545, 6407, - 4543, 4544, 4546, 4550, 6407, 4548, 4558, 4557, 4559, 4565, - 4566, 6407, 4569, 4570, 4574, 4578, 4581, 4576, 4583, 4580, - 4586, 4584, 4588, 4589, 4590, 4598, 4593, 4595, 6407, 4597, - 4603, 4605, 4609, 4616, 4611, 4599, 4613, 4622, 4612, 6407, - 4618, 4624, 4626, 4627, 4628, 4629, 4630, 4637, 4633, 4634, + 4454, 6428, 4459, 4450, 4460, 4461, 4463, 4464, 4466, 4471, + 4474, 4476, 4477, 6428, 4473, 4479, 4486, 4487, 4488, 4489, + 4493, 4490, 6428, 4494, 4500, 4496, 4508, 4503, 4513, 4504, + 4514, 4506, 4515, 4517, 4518, 4521, 4523, 4525, 4522, 4535, + 4539, 4537, 6428, 4526, 6428, 4538, 4542, 4550, 4548, 4540, + 4551, 6428, 4552, 4553, 4555, 4559, 4556, 6428, 4558, 4560, + 4562, 4563, 6428, 4561, 4567, 4566, 4578, 4580, 4581, 6428, + 4584, 4585, 4587, 4595, 4597, 4593, 4599, 4594, 4600, 4603, + 4596, 4604, 4605, 4613, 4611, 4609, 6428, 4612, 4617, 4619, + 4621, 4628, 4624, 4629, 4630, 4632, 4635, 6428, 4636, 4637, - 4636, 4638, 4640, 4642, 6407, 4647, 4648, 4651, 4660, 4650, - 4665, 6407, 4653, 6407, 4661, 4668, 4670, 4666, 4671, 6407, - 6407, 4674, 4682, 4677, 4680, 4681, 6407, 6407, 4684, 6407, - 4685, 6407, 4686, 4688, 6407, 6407, 4691, 4687, 4693, 4694, - 4702, 6407, 4706, 6407, 4714, 4709, 4695, 4697, 4707, 6407, - 4715, 4716, 4718, 6407, 4720, 4727, 4722, 4723, 6407, 4725, - 4730, 4726, 4731, 6407, 4735, 4742, 4732, 4739, 4743, 4746, - 4748, 4744, 4747, 4753, 4754, 4755, 4762, 4764, 4769, 4771, - 4773, 4766, 4756, 4776, 4779, 4782, 4777, 4784, 4785, 4786, - 4788, 4790, 4792, 4794, 4795, 4798, 4797, 4799, 4800, 4803, + 4638, 4639, 4640, 4642, 4645, 4652, 4654, 4643, 4647, 4651, + 4659, 4655, 6428, 4656, 4663, 4667, 4671, 4669, 4673, 6428, + 4674, 6428, 4678, 4680, 4682, 4684, 4686, 6428, 6428, 4689, + 4694, 4690, 4696, 4691, 6428, 6428, 4698, 6428, 4699, 6428, + 4701, 4703, 6428, 6428, 4704, 4705, 4706, 4707, 4714, 6428, + 4721, 6428, 4722, 4723, 4718, 4708, 4727, 6428, 4725, 4726, + 4729, 6428, 4733, 4741, 4736, 4737, 6428, 4740, 4743, 4745, + 4747, 6428, 4748, 4751, 4753, 4755, 4757, 4756, 4760, 4763, + 4767, 4759, 4769, 4768, 4770, 4779, 4783, 4785, 4787, 4780, + 4772, 4789, 4795, 4797, 4791, 4793, 4799, 4800, 4802, 4804, - 4801, 4807, 4813, 4814, 4815, 4816, 4817, 4818, 4819, 4822, - 4824, 4826, 4828, 4829, 6407, 4831, 4832, 4837, 4845, 4838, - 4846, 4850, 4840, 4857, 4858, 6407, 4861, 6407, 4863, 4847, - 4866, 4853, 4867, 6407, 4868, 4869, 4870, 4871, 4874, 4873, - 4876, 4875, 4879, 4880, 4884, 6407, 4890, 4881, 6407, 4886, - 4894, 4900, 6407, 4901, 4905, 4902, 4906, 4907, 4911, 4909, - 4912, 4913, 4915, 4917, 4919, 4921, 4922, 4925, 4933, 4936, - 4943, 4928, 4923, 4939, 4942, 4944, 4945, 4947, 4948, 4950, - 4955, 4957, 4961, 6407, 4951, 6407, 4962, 4963, 4964, 4966, - 4968, 4969, 4972, 6407, 6407, 4974, 4975, 4980, 4977, 4981, + 4807, 4809, 4810, 4812, 4811, 4813, 4814, 4815, 4817, 4822, + 4827, 4829, 4828, 4830, 4831, 4832, 4833, 4836, 4839, 4843, + 4845, 4846, 6428, 4835, 4841, 4849, 4855, 4851, 4857, 4859, + 4867, 4869, 4870, 6428, 4873, 6428, 4875, 4877, 4878, 4879, + 4881, 6428, 4880, 4883, 4882, 4885, 4884, 4886, 4888, 4887, + 4891, 4892, 4902, 6428, 4912, 4899, 6428, 4894, 4908, 4919, + 6428, 4913, 4921, 4897, 4923, 4924, 4925, 4926, 4927, 4930, + 4928, 4933, 4935, 4929, 4936, 4937, 4939, 4951, 4948, 4952, + 4953, 4955, 4957, 4956, 4958, 4959, 4960, 4962, 4967, 4973, + 4977, 6428, 4963, 6428, 4972, 4969, 4980, 4983, 4984, 4985, - 4984, 4993, 6407, 4985, 4998, 4988, 4990, 6407, 4995, 4996, - 5001, 5005, 6407, 5006, 5008, 5007, 5013, 5009, 5015, 5019, - 5020, 5022, 5023, 5026, 6407, 6407, 6407, 6407, 5030, 5027, - 5033, 5034, 5037, 5036, 5039, 5041, 5042, 6407, 5044, 6407, - 6407, 5046, 5053, 5052, 5054, 5055, 5056, 5060, 5062, 6407, - 5061, 5067, 5068, 5064, 5078, 5081, 5083, 5084, 5085, 5071, - 5074, 5093, 5094, 5095, 5086, 5097, 5104, 5106, 6407, 6407, - 5098, 5108, 5109, 5116, 5113, 5114, 5117, 5126, 5121, 5122, - 5123, 5124, 5128, 5129, 5140, 5141, 5133, 5088, 6407, 5130, - 5137, 5144, 6407, 5143, 6407, 5148, 5149, 5145, 5151, 5152, + 4987, 6428, 6428, 4990, 4991, 4996, 4986, 4993, 4998, 5000, + 6428, 4999, 5008, 5016, 5007, 6428, 5002, 5009, 5013, 5019, + 6428, 5022, 5021, 5023, 5025, 5026, 5032, 5035, 5028, 5036, + 5038, 5042, 6428, 6428, 6428, 6428, 5043, 5039, 5047, 5049, + 5051, 5048, 5054, 5056, 5053, 6428, 5059, 6428, 6428, 5060, + 5066, 5067, 5069, 5070, 5072, 5073, 5075, 6428, 5077, 5079, + 5080, 5086, 5088, 5090, 5094, 5095, 5098, 5096, 5097, 5105, + 5104, 5106, 5108, 5111, 5113, 5118, 6428, 6428, 5119, 5121, + 5122, 5130, 5126, 5128, 5127, 5140, 5135, 5137, 5136, 5138, + 5143, 5144, 5152, 5154, 5150, 5147, 6428, 5156, 5157, 5158, - 5156, 5157, 5159, 6407, 6407, 5160, 5172, 5167, 6407, 6407, - 5162, 5169, 5171, 5175, 5170, 5176, 5179, 5182, 5184, 5180, - 6407, 5185, 6407, 5186, 5187, 5193, 5194, 5202, 5204, 5207, - 5209, 5203, 5205, 6407, 5212, 5213, 6407, 5214, 5215, 5216, - 6407, 5222, 5217, 5225, 5228, 6407, 5233, 5230, 5236, 6407, - 5238, 6407, 5220, 5239, 5242, 5249, 6407, 5245, 5246, 6407, - 5251, 5253, 5255, 5256, 6407, 5257, 6407, 5259, 5261, 5262, - 5267, 5268, 5271, 5264, 5272, 5273, 5280, 5282, 5284, 6407, - 6407, 135, 5292, 5276, 5278, 5285, 5289, 5300, 5293, 5297, - 5303, 6407, 6407, 5304, 6407, 5306, 5307, 6407, 5296, 5308, + 6428, 5163, 6428, 5164, 5166, 5149, 5160, 5168, 5170, 5180, + 5174, 6428, 6428, 5176, 5184, 5182, 6428, 6428, 5185, 5186, + 5189, 5191, 5192, 5193, 5187, 5195, 5198, 5200, 6428, 5201, + 6428, 5202, 5203, 5214, 5205, 5215, 5217, 5224, 5221, 5223, + 5227, 6428, 5225, 5226, 6428, 5229, 5228, 5235, 6428, 5236, + 5238, 5241, 5244, 6428, 5246, 5247, 5248, 6428, 5255, 6428, + 5249, 5252, 5258, 5265, 6428, 5260, 5261, 6428, 5267, 5272, + 5273, 5268, 6428, 5274, 6428, 5263, 5278, 5284, 5287, 5275, + 5289, 5282, 5279, 5291, 5299, 5301, 5294, 6428, 6428, 135, + 5308, 5296, 5303, 5304, 5306, 5315, 5310, 5313, 5321, 6428, - 5312, 5315, 5317, 5316, 5319, 5323, 5325, 5326, 5327, 5328, - 5329, 5335, 5341, 5351, 5336, 5347, 5352, 5356, 5358, 5360, - 5349, 5362, 5354, 5363, 5364, 5366, 5368, 5370, 5371, 5372, - 6407, 5376, 5378, 5380, 5381, 6407, 5387, 5388, 5394, 5396, - 6407, 5398, 5400, 5402, 5403, 6407, 5390, 5405, 5406, 5407, - 5413, 5420, 5417, 5415, 5418, 6407, 6407, 6407, 5421, 5432, - 6407, 5434, 5423, 5425, 5427, 6407, 5429, 5435, 6407, 6407, - 5436, 5439, 5440, 5449, 6407, 5441, 6407, 5442, 6407, 5446, - 5452, 5454, 5456, 6407, 5459, 5466, 6407, 5469, 5472, 5474, - 5475, 5458, 5462, 5477, 6407, 5485, 5483, 5486, 5490, 5476, + 6428, 5311, 6428, 5314, 5325, 6428, 5318, 5326, 5330, 5327, + 5332, 5333, 5334, 5336, 5339, 5341, 5346, 5342, 5340, 5352, + 5358, 5368, 5347, 5364, 5369, 5371, 5373, 5375, 5365, 5348, + 5377, 5378, 5379, 5380, 5382, 5383, 5385, 5386, 6428, 5389, + 5391, 5393, 5394, 6428, 5401, 5395, 5408, 5398, 6428, 5410, + 5411, 5413, 5414, 6428, 5415, 5417, 5421, 5418, 5419, 5430, + 5426, 5428, 5431, 6428, 6428, 6428, 5436, 5443, 6428, 5445, + 5432, 5438, 5440, 6428, 5447, 5448, 6428, 6428, 5449, 5450, + 5451, 5461, 6428, 5452, 6428, 5454, 6428, 5457, 5465, 5466, + 5468, 6428, 5473, 5479, 6428, 5482, 5485, 5487, 5488, 5469, - 5480, 5487, 5493, 5495, 5502, 5497, 5500, 6407, 5501, 5504, - 5506, 5514, 5507, 5503, 5510, 5512, 6407, 5517, 6407, 5520, - 5521, 5519, 5527, 5524, 5528, 5529, 5530, 5538, 5541, 5531, - 5542, 5544, 5545, 6407, 6407, 5552, 5554, 6407, 5546, 6407, - 5556, 6407, 5557, 5558, 5559, 5560, 6407, 5562, 5563, 5548, - 5566, 6407, 5569, 5572, 5576, 5578, 6407, 6407, 5579, 5587, - 5584, 5580, 5591, 5593, 5588, 5597, 5320, 5594, 5598, 5606, - 5582, 5605, 5604, 5610, 5611, 5612, 6407, 6407, 6407, 5607, - 5615, 5626, 5622, 5625, 5629, 5627, 6407, 5631, 5633, 5634, - 5630, 5643, 5638, 5641, 6407, 5642, 5644, 5646, 5647, 5651, + 5453, 5490, 6428, 5498, 5491, 5494, 5501, 5493, 5502, 5503, + 5504, 5505, 5512, 5507, 5516, 6428, 5513, 5520, 5521, 5518, + 5508, 5522, 5528, 5510, 6428, 5534, 6428, 5529, 5531, 5535, + 5536, 5538, 5540, 5541, 5546, 5547, 5552, 5550, 5553, 5556, + 5557, 6428, 6428, 5563, 5565, 6428, 5560, 6428, 5567, 6428, + 5558, 5569, 5570, 5572, 6428, 5583, 5571, 5573, 5575, 6428, + 5587, 5578, 5580, 5590, 6428, 6428, 5584, 5601, 5593, 5597, + 5603, 5606, 5600, 5608, 5610, 5609, 5611, 5622, 5613, 5612, + 5614, 5626, 5630, 5628, 6428, 6428, 6428, 5623, 5617, 5642, + 5639, 5640, 5647, 5644, 6428, 5645, 5649, 5646, 5652, 5659, - 5648, 5653, 5652, 6407, 5659, 5664, 5665, 5666, 5668, 5675, - 5677, 5679, 5669, 5672, 5687, 5683, 6407, 5685, 6407, 6407, - 5686, 6407, 5689, 5690, 5691, 5692, 6407, 5695, 5696, 5697, - 5699, 5701, 5703, 6407, 5715, 5704, 5706, 5714, 6407, 6407, - 5721, 6407, 5723, 5726, 5716, 5733, 5728, 5729, 5735, 5736, - 6407, 5718, 5732, 5739, 5742, 5743, 6407, 5745, 5746, 5747, - 5748, 6407, 5751, 5750, 5755, 5756, 5757, 6407, 5758, 5759, - 5770, 5771, 6407, 5760, 5778, 5761, 6407, 6407, 5782, 5785, - 5786, 6407, 6407, 6407, 5788, 5789, 5791, 5793, 6407, 5796, - 5800, 5804, 5808, 5799, 6407, 5812, 5807, 5809, 6407, 6407, + 5655, 5657, 6428, 5654, 5658, 5660, 5661, 5664, 5665, 5675, + 5668, 6428, 5670, 5681, 5678, 5682, 5686, 5688, 5690, 5693, + 5694, 5695, 5703, 5699, 6428, 5701, 6428, 6428, 5698, 6428, + 5702, 5705, 5706, 5708, 6428, 5711, 5712, 5713, 5714, 5716, + 5719, 6428, 5731, 5720, 5722, 5729, 6428, 6428, 5736, 6428, + 5738, 5739, 5732, 5748, 5743, 5745, 5750, 5747, 6428, 5751, + 5754, 5756, 5757, 5758, 6428, 5759, 5760, 5762, 5763, 6428, + 5766, 5765, 5768, 5770, 5772, 6428, 5773, 5775, 5793, 5789, + 6428, 5776, 5792, 5788, 6428, 6428, 5799, 5803, 5800, 6428, + 6428, 6428, 5806, 5807, 5790, 5811, 6428, 5814, 5818, 5822, - 5813, 5814, 5815, 5817, 6407, 6407, 5818, 5819, 5824, 5821, - 5822, 6407, 5827, 5829, 5831, 5836, 5840, 5841, 5842, 5846, - 5850, 5854, 5851, 5852, 5853, 5857, 5859, 5860, 5866, 5869, - 5871, 5873, 5881, 5883, 5870, 6407, 6407, 5885, 6407, 5887, - 5888, 6407, 6407, 5890, 5892, 5894, 5896, 5899, 5901, 5903, - 6407, 5904, 5906, 5907, 5908, 5909, 6407, 5911, 5915, 5910, - 5918, 5912, 5921, 5917, 5927, 6407, 6407, 5919, 5933, 5923, - 5934, 5928, 6407, 5938, 5945, 5940, 5942, 5943, 5948, 5944, - 6407, 5950, 5952, 6407, 6407, 6407, 5953, 6407, 6407, 5951, - 6407, 6407, 6407, 6407, 6407, 6407, 6407, 5955, 6407, 5957, + 5826, 5817, 6428, 5828, 5825, 5830, 6428, 6428, 5829, 5831, + 5832, 5834, 6428, 6428, 5835, 5838, 5836, 5839, 5841, 6428, + 5846, 5850, 5852, 5855, 5858, 5847, 5861, 5863, 5871, 5873, + 5868, 5869, 5874, 5876, 5877, 5878, 5880, 5889, 5885, 5887, + 5899, 5901, 5902, 6428, 6428, 5904, 6428, 5906, 5908, 6428, + 6428, 5910, 5912, 5914, 5916, 5919, 5921, 5923, 6428, 5924, + 5926, 5927, 5928, 5929, 6428, 5931, 5935, 5930, 5938, 5932, + 5941, 5937, 5947, 6428, 6428, 5939, 5953, 5943, 5954, 5948, + 6428, 5958, 5894, 5959, 5960, 5962, 5964, 5963, 6428, 5890, + 5967, 6428, 6428, 6428, 5968, 6428, 6428, 5970, 6428, 6428, - 5964, 5972, 5974, 6407, 5959, 5967, 5965, 5975, 5978, 6407, - 5979, 5980, 5981, 5382, 5983, 5984, 5987, 5988, 5990, 5989, - 5993, 5994, 5997, 5999, 5996, 6010, 6001, 6014, 6407, 6407, - 6407, 6012, 6003, 6025, 6004, 6028, 6029, 6032, 6034, 6016, - 6020, 6036, 6037, 6038, 6022, 6041, 6050, 6045, 6046, 6048, - 6049, 6052, 6055, 6057, 6060, 6062, 6407, 6063, 6407, 6064, - 6407, 6407, 6066, 6067, 6073, 6070, 6077, 6080, 6076, 6075, - 6083, 6086, 6085, 6093, 6407, 6407, 6087, 6094, 6407, 6095, - 6096, 6407, 6097, 6098, 6099, 6106, 6107, 6104, 6105, 6111, - 6113, 6407, 6407, 6101, 6115, 6122, 6125, 6126, 6134, 6129, + 6428, 6428, 6428, 6428, 6428, 5971, 6428, 5972, 5978, 5987, + 5989, 6428, 5975, 5984, 5990, 5980, 5991, 6428, 5992, 5995, + 5997, 5999, 6003, 6007, 6004, 6009, 6011, 6010, 6012, 6016, + 6013, 6020, 6014, 6019, 6021, 6025, 6428, 6428, 6428, 6033, + 6023, 6039, 6027, 6045, 6048, 6051, 6053, 6040, 6034, 6055, + 6056, 6057, 6042, 6060, 6069, 6064, 6065, 6066, 6068, 6073, + 6080, 6070, 6074, 6082, 6428, 6076, 6428, 6083, 6428, 6428, + 6087, 6089, 6084, 6094, 6102, 6103, 6095, 6098, 6099, 6100, + 6107, 6115, 6428, 6428, 6104, 6108, 6428, 6110, 6112, 6428, + 6117, 6121, 6119, 6120, 6122, 6123, 6127, 6129, 6131, 6428, - 6127, 6135, 6137, 6136, 6144, 6407, 6146, 6143, 6150, 6407, - 6147, 6139, 5861, 6152, 6153, 6160, 6156, 6157, 6407, 6161, - 6407, 6164, 6165, 6168, 6159, 6166, 6167, 6181, 6179, 6176, - 6407, 6169, 6186, 6183, 6190, 6192, 6194, 6196, 6188, 6198, - 6200, 6204, 6209, 6210, 6211, 6201, 6214, 6212, 6407, 6216, - 6213, 6407, 6221, 6222, 6223, 6224, 6228, 6407, 6234, 6225, - 6230, 6235, 6238, 6239, 6407, 6241, 6248, 6245, 6407, 6250, - 6407, 6407, 6251, 6253, 6254, 6258, 6260, 6407, 6407, 6407, - 6287, 6294, 6301, 6308, 6315, 6322, 6329, 88, 6336, 6343, - 6350, 6357, 6364, 6371, 6378, 6385, 6392, 6399 + 6428, 6136, 6139, 6140, 6144, 6141, 6151, 6147, 6149, 6150, + 6153, 6152, 6166, 6428, 6162, 6163, 6165, 6428, 6169, 6167, + 6170, 6172, 6174, 6181, 6176, 6179, 6428, 6182, 6428, 6185, + 6178, 6189, 6180, 6188, 6196, 6197, 6200, 6201, 6428, 6202, + 6203, 6206, 6210, 6212, 6215, 6216, 6208, 6218, 6219, 6229, + 6222, 6226, 6230, 6232, 6234, 6235, 6428, 6241, 6236, 6428, + 6238, 6242, 6244, 6245, 6248, 6428, 6253, 6246, 6250, 6256, + 6259, 6260, 6428, 6262, 6271, 6266, 6428, 6272, 6428, 6428, + 6274, 6268, 6275, 6281, 6283, 6428, 6428, 6428, 6308, 6315, + 6322, 6329, 6336, 6343, 6350, 88, 6357, 6364, 6371, 6378, + 6385, 6392, 6399, 6406, 6413, 6420 } ; -static const flex_int16_t yy_def[3299] = +static const flex_int16_t yy_def[3307] = { 0, - 3280, 1, 3281, 3281, 3282, 3282, 3283, 3283, 3284, 3284, - 3285, 3285, 3286, 3286, 3287, 3287, 3280, 3288, 3280, 3280, - 3280, 3280, 3289, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3290, 3280, 3280, 3280, - 3290, 3291, 3280, 3280, 3280, 3291, 3292, 3280, 3280, 3280, - 3280, 3292, 3293, 3280, 3280, 3280, 3293, 3294, 3280, 3295, - 3280, 3294, 3294, 3296, 3280, 3280, 3280, 3280, 3296, 3297, - 3280, 3280, 3280, 3297, 3288, 3288, 3280, 3298, 3289, 3298, - 3289, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 1, 3289, 3289, 3290, 3290, 3291, 3291, 3292, 3292, + 3293, 3293, 3294, 3294, 3295, 3295, 3288, 3296, 3288, 3288, + 3288, 3288, 3297, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3298, 3288, 3288, 3288, + 3298, 3299, 3288, 3288, 3288, 3299, 3300, 3288, 3288, 3288, + 3288, 3300, 3301, 3288, 3288, 3288, 3301, 3302, 3288, 3303, + 3288, 3302, 3302, 3304, 3288, 3288, 3288, 3288, 3304, 3305, + 3288, 3288, 3288, 3305, 3296, 3296, 3288, 3306, 3297, 3306, + 3297, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3290, 3290, 3291, - 3291, 3292, 3292, 3280, 3293, 3293, 3294, 3294, 3295, 3295, - 3294, 3296, 3296, 3280, 3297, 3297, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3298, 3298, 3299, + 3299, 3300, 3300, 3288, 3301, 3301, 3302, 3302, 3303, 3303, + 3302, 3304, 3304, 3288, 3305, 3305, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3302, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3288, 3288, 3296, 3288, 3288, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3302, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3288, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, 3288, + + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3302, 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3302, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3288, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3302, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3288, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3302, 3296, 3288, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3288, + + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3296, 3288, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3302, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3302, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3296, + 3296, 3296, 3296, 3296, 3288, 3288, 3296, 3288, 3296, 3288, + 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3302, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3288, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + + 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3288, 3288, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3302, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + + 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3288, 3296, 3296, 3296, 3288, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3302, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + + 3288, 3296, 3288, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3288, 3288, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3288, 3288, 3296, 3296, + 3296, 3296, 3288, 3296, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3288, 3296, 3296, 3288, 3296, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3288, 3288, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + + 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3288, 3288, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3288, + 3288, 3288, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, + + 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3288, 3296, 3296, + 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3288, 3296, 3288, 3296, 3296, 3288, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3288, 3296, 3296, 3296, 3296, 3296, + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3288, 3288, 3288, 3296, 3288, 3288, 3296, 3288, 3288, + + 3288, 3288, 3288, 3288, 3288, 3296, 3288, 3296, 3296, 3296, + 3296, 3288, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3288, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, 3288, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3288, 3296, 3296, 3288, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, + + 3288, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3288, + 3296, 3296, 3296, 3296, 3296, 3288, 3296, 3296, 3296, 3296, + 3296, 3296, 3288, 3296, 3296, 3296, 3288, 3296, 3288, 3288, + 3296, 3296, 3296, 3296, 3296, 3288, 3288, 0, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3294, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3294, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3294, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3294, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, - 3280, 3288, 3280, 3280, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3294, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3280, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3294, 3294, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3294, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3294, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3280, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3294, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3294, 3288, 3280, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3280, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3288, - 3280, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3294, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, 3288, 3288, - 3288, 3294, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, - 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3280, - 3288, 3280, 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3294, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3280, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3280, 3280, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3294, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3280, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3280, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, - 3280, 3294, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3280, 3288, 3280, 3288, 3288, 3280, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3280, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3280, 3280, - 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, 3280, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3280, 3288, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3280, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3280, 3280, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3280, 3280, 3288, 3288, - 3288, 3280, 3280, 3280, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3280, 3280, - - 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3288, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3280, 3288, - 3288, 3280, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3288, - 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3280, 3280, 3280, 3288, 3280, 3280, 3288, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3288, 3280, 3288, - - 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3280, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3280, 3288, - 3280, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3280, 3288, 3288, 3280, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3280, 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - - 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3280, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3280, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, - 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3280, 3288, - 3288, 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3288, 3288, - 3288, 3288, 3288, 3288, 3280, 3288, 3288, 3288, 3280, 3288, - 3280, 3280, 3288, 3288, 3288, 3288, 3288, 3280, 3280, 0, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280 - + 3288, 3288, 3288, 3288, 3288, 3288 } ; -static const flex_int16_t yy_nxt[6448] = +static const flex_int16_t yy_nxt[6469] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1540,7 +1543,7 @@ static const flex_int16_t yy_nxt[6448] = 204, 199, 86, 202, 207, 209, 86, 213, 210, 86, 86, 206, 208, 86, 216, 86, 86, 86, 86, 218, 86, 211, 212, 219, 223, 215, 86, 225, 226, 86, - 224, 86, 214, 86, 217, 919, 221, 86, 227, 220, + 224, 86, 214, 86, 217, 922, 221, 86, 227, 220, 86, 222, 228, 86, 231, 86, 86, 86, 236, 86, 233, 86, 86, 229, 234, 230, 238, 86, 248, 86, 86, 232, 86, 86, 86, 239, 235, 86, 86, 237, @@ -1588,7 +1591,7 @@ static const flex_int16_t yy_nxt[6448] = 435, 86, 86, 426, 440, 431, 86, 427, 86, 424, 86, 437, 86, 86, 433, 441, 434, 86, 439, 436, 450, 86, 86, 86, 455, 442, 449, 451, 438, 86, - 86, 86, 86, 452, 563, 453, 456, 86, 443, 458, + 86, 86, 86, 452, 564, 453, 456, 86, 443, 458, 459, 444, 86, 457, 86, 462, 445, 446, 447, 448, 460, 454, 86, 86, 86, 461, 86, 468, 86, 86, @@ -1598,623 +1601,625 @@ static const flex_int16_t yy_nxt[6448] = 484, 477, 475, 481, 485, 476, 86, 86, 86, 86, 482, 488, 486, 489, 86, 86, 497, 491, 487, 498, 86, 86, 86, 490, 495, 86, 499, 86, 500, 86, - 492, 86, 86, 493, 501, 494, 86, 86, 502, 86, - 515, 86, 512, 86, 551, 86, 503, 86, 504, 510, - 505, 513, 511, 514, 526, 517, 516, 168, 525, 527, + 492, 86, 164, 493, 501, 494, 86, 86, 502, 511, + 86, 86, 513, 516, 86, 515, 503, 86, 504, 510, + 505, 168, 514, 527, 86, 518, 528, 512, 86, 517, - 86, 86, 86, 506, 528, 86, 507, 529, 508, 86, - 509, 86, 86, 518, 519, 86, 535, 532, 530, 531, - 86, 533, 86, 520, 86, 521, 522, 523, 534, 539, - 524, 86, 86, 86, 86, 86, 541, 86, 538, 540, - 537, 536, 546, 86, 548, 86, 549, 86, 86, 545, - 86, 553, 543, 544, 542, 86, 86, 86, 547, 86, - 557, 558, 552, 86, 556, 86, 86, 550, 86, 86, - 86, 86, 555, 564, 565, 86, 86, 86, 86, 567, - 554, 568, 560, 562, 561, 559, 86, 570, 86, 571, - 86, 566, 573, 572, 86, 86, 569, 86, 86, 584, + 86, 529, 86, 506, 530, 86, 507, 86, 508, 526, + 509, 86, 531, 519, 520, 86, 534, 86, 536, 532, + 533, 86, 86, 521, 86, 522, 523, 524, 86, 540, + 525, 86, 86, 542, 535, 86, 539, 86, 86, 541, + 86, 538, 549, 537, 86, 547, 546, 86, 86, 86, + 550, 543, 544, 548, 86, 554, 86, 545, 86, 552, + 86, 86, 86, 86, 551, 557, 558, 559, 553, 86, + 86, 86, 86, 86, 556, 565, 566, 86, 571, 561, + 86, 555, 560, 86, 568, 563, 562, 569, 86, 86, + 86, 572, 86, 567, 585, 86, 86, 163, 86, 86, - 579, 86, 586, 576, 575, 86, 574, 585, 580, 581, - 588, 86, 582, 583, 577, 587, 578, 589, 86, 86, - 86, 86, 86, 86, 592, 591, 86, 594, 164, 593, - 86, 596, 86, 598, 86, 86, 86, 86, 601, 590, - 599, 595, 602, 86, 86, 597, 86, 603, 86, 600, - 86, 86, 86, 608, 86, 606, 607, 86, 86, 604, - 86, 609, 86, 86, 86, 614, 610, 605, 615, 86, - 617, 86, 613, 86, 86, 616, 612, 611, 618, 86, - 620, 86, 622, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 619, 624, 86, 625, 621, 633, 86, 636, + 86, 580, 570, 573, 577, 574, 576, 586, 575, 581, + 582, 86, 86, 583, 584, 578, 587, 579, 86, 590, + 591, 589, 588, 86, 86, 86, 86, 86, 593, 592, + 594, 595, 86, 86, 597, 86, 599, 86, 86, 603, + 86, 86, 602, 600, 86, 86, 86, 86, 598, 86, + 604, 86, 596, 601, 607, 86, 608, 86, 609, 605, + 86, 86, 86, 86, 86, 86, 610, 611, 606, 86, + 619, 86, 615, 86, 614, 616, 617, 86, 618, 613, + 612, 86, 621, 86, 620, 86, 623, 86, 86, 86, + 86, 86, 86, 86, 86, 622, 625, 634, 626, 161, - 627, 163, 630, 86, 623, 632, 86, 626, 628, 631, - 629, 635, 637, 86, 86, 634, 86, 86, 86, 640, - 643, 638, 86, 646, 639, 86, 86, 86, 641, 86, - 645, 86, 86, 642, 86, 86, 649, 86, 86, 648, - 653, 652, 644, 86, 86, 86, 86, 647, 655, 86, - 86, 86, 86, 654, 650, 651, 86, 86, 86, 658, - 656, 669, 672, 86, 657, 86, 659, 668, 707, 667, - 670, 660, 671, 661, 86, 86, 86, 86, 675, 662, - 676, 663, 673, 86, 664, 665, 674, 86, 680, 86, - 677, 666, 679, 678, 86, 86, 685, 86, 683, 681, + 636, 86, 628, 86, 624, 86, 86, 627, 633, 629, + 631, 630, 86, 632, 635, 638, 86, 637, 86, 86, + 86, 641, 644, 86, 639, 647, 86, 640, 86, 646, + 86, 86, 86, 642, 86, 643, 86, 650, 86, 86, + 86, 86, 653, 645, 649, 654, 656, 86, 86, 648, + 86, 86, 86, 86, 655, 86, 651, 652, 86, 670, + 86, 86, 86, 657, 659, 692, 673, 658, 86, 660, + 668, 671, 86, 669, 661, 676, 662, 672, 86, 86, + 86, 680, 663, 677, 664, 674, 681, 665, 666, 675, + 86, 86, 86, 86, 667, 678, 685, 682, 679, 86, - 86, 686, 86, 682, 86, 688, 86, 86, 86, 86, - 86, 86, 684, 86, 86, 694, 161, 689, 690, 86, - 695, 86, 687, 691, 168, 698, 692, 701, 700, 697, - 699, 693, 696, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 710, 708, 86, 86, 702, 833, 86, 86, - 703, 705, 86, 706, 709, 704, 712, 713, 86, 714, - 716, 715, 86, 86, 717, 86, 86, 86, 711, 86, - 718, 86, 86, 86, 721, 722, 719, 727, 720, 86, - 723, 86, 728, 86, 730, 86, 741, 724, 86, 726, - 725, 732, 729, 731, 86, 733, 86, 86, 734, 86, + 86, 86, 688, 86, 86, 683, 86, 684, 86, 690, + 86, 86, 86, 86, 86, 86, 86, 696, 86, 691, + 687, 693, 686, 697, 700, 701, 86, 168, 689, 694, + 699, 702, 698, 695, 703, 86, 86, 86, 704, 86, + 86, 86, 86, 86, 86, 86, 710, 712, 86, 86, + 705, 707, 715, 86, 708, 706, 711, 714, 716, 709, + 717, 718, 86, 86, 86, 86, 720, 86, 713, 86, + 86, 86, 86, 86, 719, 723, 724, 729, 86, 721, + 725, 86, 730, 86, 722, 732, 86, 726, 728, 734, + 727, 731, 733, 86, 737, 86, 735, 86, 736, 86, - 735, 86, 736, 86, 86, 86, 86, 737, 86, 738, - 745, 86, 743, 739, 740, 86, 86, 86, 744, 86, - 749, 86, 742, 748, 86, 750, 86, 86, 86, 86, - 86, 754, 752, 86, 86, 86, 747, 86, 760, 746, - 757, 86, 751, 753, 86, 86, 761, 86, 755, 756, - 758, 86, 86, 86, 768, 763, 86, 759, 86, 762, - 764, 86, 86, 765, 766, 767, 771, 772, 86, 769, - 775, 86, 770, 774, 86, 86, 86, 777, 86, 778, - 776, 86, 773, 780, 781, 86, 86, 86, 86, 86, - 782, 86, 86, 86, 787, 785, 789, 86, 86, 86, + 86, 738, 740, 86, 86, 86, 739, 86, 742, 743, + 86, 86, 86, 86, 86, 741, 746, 747, 86, 745, + 86, 751, 750, 86, 86, 86, 86, 86, 752, 744, + 754, 86, 756, 86, 86, 86, 86, 748, 86, 749, + 755, 753, 86, 759, 762, 86, 86, 763, 757, 765, + 86, 760, 86, 86, 766, 758, 761, 767, 768, 764, + 86, 770, 86, 86, 86, 86, 86, 777, 773, 774, + 769, 771, 86, 86, 86, 779, 86, 86, 772, 775, + 780, 776, 782, 778, 86, 86, 86, 783, 86, 86, + 784, 86, 86, 787, 86, 86, 789, 791, 86, 86, - 86, 779, 783, 797, 786, 784, 86, 790, 86, 792, - 795, 86, 788, 86, 86, 793, 86, 796, 791, 801, - 794, 798, 799, 86, 86, 86, 800, 804, 86, 86, - 806, 802, 86, 86, 805, 807, 86, 86, 810, 803, - 86, 86, 809, 811, 86, 86, 86, 86, 86, 817, - 159, 814, 86, 808, 812, 86, 819, 820, 813, 818, - 86, 822, 86, 86, 86, 815, 816, 824, 821, 823, - 826, 86, 86, 829, 86, 827, 86, 828, 830, 86, - 86, 831, 825, 86, 86, 835, 86, 86, 86, 86, - 86, 841, 86, 834, 842, 86, 832, 86, 86, 86, + 86, 86, 781, 86, 785, 788, 797, 786, 792, 86, + 795, 794, 86, 159, 790, 796, 86, 86, 86, 793, + 799, 802, 798, 800, 801, 86, 86, 804, 86, 806, + 803, 86, 808, 86, 86, 86, 807, 809, 86, 86, + 812, 86, 805, 86, 811, 813, 86, 86, 86, 819, + 86, 86, 816, 86, 814, 86, 815, 821, 810, 86, + 86, 824, 86, 86, 822, 826, 817, 818, 828, 820, + 825, 823, 86, 86, 86, 86, 831, 86, 830, 835, + 827, 832, 86, 86, 829, 86, 833, 86, 86, 837, + 86, 86, 86, 86, 86, 843, 86, 86, 844, 86, - 86, 843, 836, 86, 837, 838, 86, 839, 850, 840, - 844, 86, 86, 845, 86, 848, 86, 846, 86, 847, - 86, 849, 86, 86, 852, 851, 855, 86, 86, 86, - 86, 86, 86, 864, 86, 853, 862, 854, 856, 857, - 86, 86, 86, 86, 863, 858, 859, 860, 861, 86, - 86, 86, 867, 865, 86, 869, 868, 86, 86, 866, - 86, 873, 871, 874, 86, 876, 86, 870, 86, 86, - 872, 875, 86, 877, 86, 86, 879, 86, 168, 86, - 86, 880, 885, 884, 878, 86, 882, 883, 881, 886, - 86, 86, 86, 86, 887, 892, 86, 895, 86, 888, + 834, 86, 836, 86, 86, 845, 838, 86, 839, 840, + 86, 841, 846, 842, 847, 86, 852, 86, 86, 850, + 86, 848, 86, 849, 86, 851, 86, 86, 857, 853, + 854, 86, 86, 86, 86, 86, 855, 86, 866, 856, + 864, 86, 86, 859, 858, 867, 86, 86, 865, 860, + 861, 862, 863, 86, 86, 86, 868, 86, 870, 872, + 86, 86, 86, 86, 86, 869, 176, 871, 876, 877, + 878, 873, 86, 875, 86, 86, 874, 879, 86, 880, + 881, 86, 882, 86, 86, 168, 86, 883, 86, 888, + 887, 86, 885, 86, 86, 884, 886, 889, 86, 86, - 86, 893, 86, 86, 86, 86, 889, 890, 896, 894, - 899, 897, 86, 891, 86, 86, 86, 86, 901, 86, - 905, 86, 86, 898, 902, 900, 86, 906, 907, 86, - 86, 86, 86, 86, 86, 904, 86, 86, 86, 921, - 903, 920, 910, 922, 86, 923, 918, 908, 925, 928, - 924, 86, 926, 86, 927, 909, 86, 86, 911, 86, - 86, 912, 86, 932, 176, 913, 86, 940, 914, 86, - 86, 930, 86, 86, 943, 915, 916, 929, 917, 86, - 931, 86, 933, 934, 947, 935, 86, 941, 936, 86, - 942, 86, 86, 937, 174, 945, 86, 944, 86, 938, + 891, 86, 890, 895, 86, 86, 896, 898, 86, 892, + 86, 86, 893, 86, 897, 899, 86, 902, 86, 86, + 894, 903, 900, 86, 86, 86, 908, 86, 904, 86, + 901, 905, 86, 909, 910, 86, 907, 86, 86, 86, + 86, 906, 86, 86, 86, 929, 924, 911, 923, 925, + 86, 926, 86, 921, 928, 86, 930, 913, 86, 86, + 912, 86, 86, 914, 86, 935, 915, 86, 927, 931, + 916, 86, 943, 917, 86, 86, 933, 932, 86, 86, + 918, 919, 946, 920, 934, 86, 936, 937, 86, 938, + 86, 86, 939, 945, 948, 944, 950, 940, 951, 86, - 939, 951, 952, 954, 949, 948, 86, 953, 86, 86, - 955, 946, 86, 86, 86, 958, 86, 950, 957, 86, - 86, 956, 86, 960, 959, 962, 86, 961, 86, 86, - 963, 965, 86, 86, 86, 968, 966, 86, 970, 86, - 86, 964, 969, 86, 86, 973, 86, 86, 86, 977, - 86, 86, 1034, 967, 971, 86, 978, 972, 974, 975, - 979, 86, 86, 1013, 980, 983, 984, 982, 976, 981, - 86, 86, 86, 86, 986, 86, 86, 86, 985, 987, - 86, 988, 990, 86, 86, 989, 991, 86, 86, 86, - 86, 86, 992, 86, 994, 997, 86, 995, 1001, 86, + 86, 955, 86, 941, 942, 954, 956, 86, 86, 86, + 949, 174, 947, 86, 952, 957, 86, 958, 960, 86, + 961, 86, 86, 86, 959, 953, 962, 86, 964, 86, + 963, 965, 86, 86, 967, 966, 86, 86, 86, 86, + 969, 86, 973, 86, 86, 86, 972, 86, 968, 86, + 976, 86, 982, 86, 980, 978, 86, 970, 971, 974, + 86, 975, 86, 977, 983, 1001, 86, 981, 986, 984, + 86, 985, 987, 979, 86, 86, 989, 86, 86, 86, + 988, 86, 86, 991, 990, 993, 86, 992, 994, 86, + 86, 86, 86, 86, 86, 1000, 86, 997, 995, 86, - 1000, 86, 998, 86, 86, 86, 993, 999, 86, 86, - 996, 86, 86, 86, 1003, 86, 1006, 1004, 1008, 86, - 86, 1007, 1002, 86, 1009, 1014, 86, 1010, 86, 1016, - 1015, 86, 1012, 1005, 86, 86, 86, 86, 1024, 86, - 1021, 1017, 86, 86, 1019, 1011, 86, 86, 1022, 1023, - 86, 1026, 86, 1018, 86, 86, 86, 86, 173, 86, - 1020, 1037, 86, 1025, 1027, 1032, 86, 86, 86, 86, - 1028, 86, 1029, 86, 86, 1031, 1030, 1035, 1038, 1042, - 1033, 1036, 1041, 1039, 86, 1040, 1045, 86, 1043, 1044, - 86, 86, 86, 86, 86, 86, 86, 1054, 86, 1055, + 998, 1003, 86, 86, 1004, 86, 86, 1002, 86, 996, + 86, 86, 86, 999, 1006, 1007, 1009, 86, 86, 86, + 1011, 1010, 1005, 1012, 86, 86, 86, 86, 1019, 86, + 1017, 86, 1008, 1013, 1015, 1018, 86, 86, 86, 1016, + 86, 1027, 86, 1024, 1020, 86, 1022, 1026, 86, 1014, + 1021, 1025, 86, 86, 86, 86, 86, 1029, 86, 86, + 86, 86, 1023, 1035, 86, 1037, 86, 1040, 86, 1028, + 86, 173, 86, 86, 1030, 1031, 1032, 1041, 86, 1034, + 1033, 86, 1038, 1036, 1042, 1039, 86, 1045, 86, 1043, + 1048, 86, 1044, 1047, 86, 86, 86, 86, 86, 86, - 1047, 1049, 86, 86, 86, 86, 86, 1057, 86, 86, - 1046, 1065, 1048, 86, 1050, 1052, 1056, 1051, 1053, 1059, - 1060, 86, 86, 86, 1058, 86, 86, 1061, 1062, 1066, - 86, 1067, 1068, 1063, 86, 86, 1072, 1069, 86, 86, - 1070, 1064, 86, 1074, 86, 86, 86, 1077, 1071, 86, - 86, 1076, 1078, 168, 1080, 86, 1081, 86, 86, 1073, - 86, 86, 86, 1075, 1079, 1084, 86, 86, 86, 86, - 86, 1097, 86, 1100, 86, 86, 1098, 86, 1083, 1082, - 1085, 1087, 1088, 86, 86, 168, 1086, 1090, 1089, 86, - 1099, 86, 1091, 86, 1092, 1102, 86, 1104, 1093, 1103, + 1046, 86, 86, 1057, 1050, 1052, 1058, 1060, 86, 86, + 86, 86, 86, 86, 1049, 86, 1051, 1063, 1053, 1065, + 1055, 1054, 1056, 86, 1059, 1061, 1064, 86, 1062, 86, + 86, 86, 86, 86, 1071, 1069, 1072, 86, 86, 1076, + 1073, 1067, 86, 86, 86, 86, 1066, 1078, 86, 1068, + 86, 86, 1070, 86, 1081, 86, 1074, 1075, 1080, 1082, + 168, 86, 86, 1077, 86, 1084, 1083, 86, 1079, 86, + 1085, 86, 1088, 86, 86, 86, 86, 1086, 86, 1101, + 86, 86, 1087, 1089, 1102, 1104, 86, 1091, 1092, 86, + 86, 86, 86, 1106, 1093, 1090, 1103, 1094, 86, 86, - 1094, 1105, 1101, 1107, 86, 1095, 86, 1106, 1108, 86, - 1096, 86, 86, 1109, 86, 1111, 86, 86, 86, 86, - 1110, 1114, 1117, 86, 1116, 86, 86, 1112, 86, 1113, - 86, 1115, 1118, 1123, 1121, 1124, 1122, 1120, 1125, 86, - 1119, 86, 1126, 86, 86, 1127, 1128, 86, 1129, 86, - 86, 86, 86, 166, 86, 86, 1140, 86, 1130, 86, - 1143, 1139, 86, 1145, 86, 1131, 86, 1132, 1141, 1142, - 86, 86, 1133, 86, 1134, 1144, 1146, 86, 1150, 86, - 1135, 86, 1151, 1147, 86, 1136, 1137, 86, 86, 1149, - 1148, 1152, 1138, 1156, 86, 86, 86, 86, 1159, 1153, + 86, 1095, 86, 1096, 1120, 1109, 1107, 1097, 86, 1098, + 86, 86, 1111, 1108, 1099, 1105, 1110, 1112, 86, 1100, + 1113, 86, 1114, 86, 86, 1115, 86, 86, 86, 1118, + 86, 1121, 1133, 86, 86, 1130, 86, 1116, 1117, 1119, + 1126, 1122, 1125, 86, 1124, 1128, 1129, 1132, 1127, 1123, + 1131, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 1147, 86, 1144, 86, 86, 86, 1148, 86, 1143, + 86, 1146, 86, 1134, 1135, 86, 1136, 86, 1145, 1150, + 1149, 1137, 1154, 1138, 168, 1151, 1153, 1152, 86, 1139, + 86, 86, 86, 1158, 1140, 1141, 1155, 86, 1160, 86, - 1157, 86, 86, 1154, 86, 1160, 1155, 86, 86, 86, - 86, 1164, 1162, 1165, 1163, 1158, 1161, 86, 86, 1167, - 86, 86, 86, 1170, 86, 86, 86, 1168, 1166, 86, - 1171, 1173, 86, 86, 86, 86, 1169, 86, 86, 1175, - 86, 1172, 86, 1178, 1174, 1177, 1179, 1182, 1180, 86, - 86, 1183, 1176, 86, 1184, 1181, 86, 86, 86, 86, - 86, 86, 86, 164, 1187, 1190, 1191, 1192, 1193, 1185, - 86, 1194, 1189, 1195, 86, 1186, 1188, 86, 1198, 86, - 86, 86, 1200, 1199, 86, 1201, 86, 1196, 86, 1202, - 86, 86, 86, 1197, 1203, 86, 1209, 86, 1211, 86, + 86, 1142, 1156, 86, 1161, 1163, 86, 86, 86, 1164, + 1157, 86, 86, 1166, 1168, 1159, 86, 86, 86, 86, + 86, 1169, 86, 1162, 1174, 1167, 1165, 1171, 1172, 86, + 86, 86, 86, 86, 86, 86, 1170, 1177, 1173, 86, + 1175, 86, 86, 86, 86, 86, 86, 86, 1176, 1179, + 1182, 1181, 1183, 1178, 1180, 86, 1186, 86, 86, 1185, + 1187, 1184, 86, 86, 1192, 1189, 1190, 86, 86, 86, + 86, 1188, 1191, 1194, 1195, 1196, 1197, 1199, 1193, 86, + 1198, 86, 86, 86, 1202, 86, 86, 86, 1204, 1203, + 86, 1205, 86, 86, 1200, 1206, 86, 86, 1201, 1207, - 86, 86, 86, 1215, 86, 1207, 1205, 86, 1204, 1206, - 1208, 86, 1213, 86, 1212, 1214, 86, 1210, 1217, 86, - 86, 1218, 86, 86, 86, 1220, 86, 1221, 86, 1223, - 86, 1226, 1216, 86, 1225, 1219, 1222, 86, 1227, 86, - 86, 86, 1224, 86, 1230, 86, 1231, 86, 1229, 1228, - 86, 1232, 86, 1235, 1237, 1238, 86, 86, 86, 86, - 86, 86, 1233, 1239, 1240, 1236, 86, 1234, 1242, 1247, - 86, 1241, 1245, 86, 86, 1243, 1244, 86, 86, 86, - 86, 86, 1246, 86, 86, 86, 1252, 1253, 1248, 1249, - 86, 1250, 86, 86, 86, 1258, 1254, 1259, 1262, 86, + 86, 1213, 86, 86, 86, 1215, 1208, 86, 86, 1209, + 1211, 86, 86, 1217, 1210, 1212, 86, 86, 1216, 1219, + 86, 166, 1214, 86, 86, 1220, 1218, 86, 1221, 1222, + 86, 86, 1224, 1223, 86, 1225, 1228, 86, 86, 1230, + 1227, 1231, 86, 1226, 1229, 86, 1232, 86, 86, 86, + 1235, 1234, 86, 86, 86, 86, 86, 1241, 1239, 86, + 1242, 86, 86, 86, 1243, 1233, 86, 1244, 86, 1240, + 1236, 1246, 1237, 1245, 1238, 86, 1249, 86, 86, 1247, + 1251, 86, 86, 1250, 86, 86, 86, 86, 86, 86, + 86, 1256, 1257, 1252, 1253, 1248, 86, 86, 86, 86, - 1251, 86, 86, 86, 1256, 86, 86, 1261, 1255, 1260, - 86, 1266, 1257, 86, 86, 86, 86, 86, 86, 168, - 1264, 86, 1265, 1268, 1263, 1272, 86, 86, 86, 86, - 86, 1267, 1279, 86, 1277, 1269, 1275, 1271, 86, 1273, - 1276, 1274, 1270, 1281, 86, 1282, 86, 1278, 86, 86, - 1280, 86, 86, 1284, 1285, 86, 86, 86, 86, 86, - 1283, 1286, 86, 1289, 86, 1291, 86, 1295, 86, 1287, - 86, 1288, 86, 1292, 1290, 86, 86, 1293, 86, 86, - 86, 1299, 86, 1294, 1296, 1301, 1305, 86, 1306, 86, - 1297, 1298, 86, 1310, 1302, 86, 1303, 1307, 1300, 1304, + 86, 1258, 1259, 1263, 1254, 1264, 1255, 86, 86, 86, + 1261, 86, 1266, 86, 1260, 1265, 1267, 86, 1262, 86, + 1271, 86, 86, 86, 86, 1270, 86, 1268, 86, 1277, + 86, 1273, 168, 1269, 86, 86, 86, 86, 86, 1272, + 86, 1282, 1274, 164, 86, 1284, 86, 1276, 1279, 1281, + 1280, 1275, 1278, 1283, 1286, 1287, 1288, 86, 1285, 86, + 86, 86, 1289, 86, 1291, 1290, 86, 86, 86, 86, + 86, 86, 86, 1294, 86, 1300, 86, 86, 1297, 86, + 1292, 1293, 86, 86, 1295, 86, 163, 1298, 1304, 1296, + 86, 1301, 86, 1299, 86, 1306, 1310, 1302, 1303, 86, - 1308, 86, 1309, 86, 86, 86, 1311, 86, 1312, 86, - 86, 86, 1315, 86, 1314, 1318, 86, 86, 86, 1322, - 86, 86, 1313, 1317, 86, 86, 1323, 1319, 1316, 1320, - 1324, 86, 86, 1328, 86, 1321, 1326, 1325, 1327, 86, - 86, 86, 86, 86, 86, 86, 86, 1329, 86, 86, - 1334, 86, 86, 1332, 1330, 1339, 1335, 1333, 86, 1331, - 86, 86, 86, 86, 1336, 86, 1338, 1337, 86, 1343, - 86, 1341, 1342, 1340, 86, 1346, 1344, 1351, 86, 86, - 86, 1345, 86, 86, 1347, 1349, 86, 1354, 86, 86, - 86, 1357, 1353, 1348, 1350, 1352, 86, 86, 86, 86, + 1311, 1314, 86, 86, 1307, 1305, 1308, 1312, 86, 1309, + 1313, 86, 86, 86, 86, 1316, 86, 1315, 86, 86, + 86, 1320, 86, 1319, 1323, 86, 86, 1317, 86, 1327, + 86, 1318, 1322, 86, 86, 86, 1324, 1321, 1328, 1325, + 1329, 86, 86, 1333, 1326, 1332, 1330, 1331, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 1339, + 86, 86, 86, 1334, 1335, 1337, 1338, 1340, 1344, 1336, + 86, 86, 86, 1341, 86, 1343, 1345, 1342, 1346, 1348, + 1347, 86, 86, 86, 86, 86, 1349, 86, 1356, 86, + 86, 1350, 86, 1351, 86, 1359, 86, 86, 1354, 1353, - 1359, 1358, 1355, 86, 1356, 1360, 86, 86, 1364, 1361, - 1362, 1363, 86, 1365, 86, 1387, 1372, 1366, 1374, 1386, - 1367, 1368, 86, 1373, 86, 1369, 86, 1375, 86, 86, - 1378, 1370, 86, 1376, 86, 1371, 86, 1379, 1377, 1380, - 86, 1381, 86, 1382, 86, 1383, 86, 86, 86, 1384, - 86, 1385, 86, 1390, 1393, 1394, 1388, 86, 86, 86, - 86, 86, 1389, 1395, 1391, 86, 1397, 86, 1402, 1396, - 1392, 1398, 86, 1399, 1407, 1400, 86, 1401, 1403, 1404, - 1406, 86, 86, 1405, 86, 1410, 86, 86, 86, 86, - 1411, 86, 86, 1409, 1414, 1412, 86, 86, 86, 1420, + 1357, 1352, 1362, 1358, 1355, 86, 1364, 86, 1361, 86, + 1360, 1365, 86, 86, 1369, 1366, 86, 1363, 86, 1379, + 1383, 1367, 1368, 86, 1370, 86, 86, 1378, 1371, 1377, + 86, 1372, 1373, 86, 1380, 1381, 1374, 86, 86, 86, + 86, 86, 1375, 86, 1384, 1385, 1376, 1382, 86, 1386, + 86, 1388, 86, 86, 86, 1389, 86, 1390, 1387, 86, + 86, 1391, 86, 1393, 1395, 86, 1398, 1399, 86, 1525, + 1400, 1392, 86, 86, 1396, 86, 1394, 1402, 86, 1401, + 1397, 86, 1403, 86, 1404, 86, 1405, 1411, 1406, 86, + 1407, 1408, 1409, 1412, 86, 86, 1410, 1415, 86, 1413, - 1408, 1416, 1415, 86, 1421, 86, 86, 86, 86, 1413, - 86, 86, 1419, 1424, 1422, 1417, 1418, 86, 86, 86, - 1426, 1423, 86, 163, 1425, 1430, 86, 1429, 1432, 86, - 86, 86, 1433, 86, 1431, 1427, 1434, 86, 86, 1438, - 86, 86, 1435, 1428, 1440, 86, 86, 1437, 86, 1441, - 1436, 1442, 86, 86, 1445, 86, 86, 86, 86, 86, - 1447, 1439, 86, 86, 1449, 1451, 86, 86, 86, 161, - 1453, 1450, 86, 1443, 1444, 86, 1446, 1455, 1448, 86, - 86, 86, 86, 1454, 1452, 1457, 1459, 1458, 86, 1456, - 86, 1461, 86, 1460, 86, 86, 86, 1462, 1467, 1468, + 86, 86, 1416, 86, 1414, 86, 1419, 1417, 86, 86, + 86, 86, 1425, 86, 1426, 86, 86, 1421, 86, 1420, + 86, 86, 1418, 1427, 86, 1424, 1429, 86, 1422, 1423, + 1428, 86, 86, 1431, 1430, 1435, 86, 1434, 86, 1437, + 86, 86, 86, 1438, 86, 1432, 86, 1439, 86, 1443, + 86, 1440, 86, 1436, 1445, 86, 1433, 1442, 86, 1446, + 86, 1441, 86, 86, 86, 1447, 1450, 86, 86, 86, + 86, 86, 1444, 1452, 86, 1467, 1454, 86, 86, 86, + 1456, 86, 1457, 1448, 1449, 86, 1455, 86, 1451, 1453, + 1458, 86, 86, 1463, 1459, 1461, 1460, 1462, 86, 86, - 1463, 1464, 1470, 1465, 86, 86, 86, 1466, 86, 86, - 86, 1469, 86, 1474, 86, 86, 168, 86, 1471, 86, - 1479, 1480, 86, 1473, 1482, 86, 86, 86, 1481, 1472, - 86, 1476, 86, 86, 86, 1475, 86, 1477, 86, 1483, - 86, 1490, 1478, 86, 86, 1484, 1487, 86, 86, 86, - 1488, 86, 1485, 1486, 1494, 86, 1489, 1495, 86, 86, - 1497, 1499, 159, 1491, 86, 1493, 1500, 86, 86, 1492, - 1498, 1496, 86, 1502, 86, 86, 1503, 1501, 86, 86, - 1511, 86, 86, 86, 1508, 86, 1504, 1509, 1513, 1505, - 1506, 1510, 86, 1507, 86, 1512, 1514, 86, 1516, 86, + 86, 86, 1465, 1464, 86, 1466, 1468, 86, 86, 86, + 86, 1473, 1474, 1470, 1475, 1471, 86, 86, 86, 1476, + 86, 86, 1469, 1472, 86, 86, 1480, 86, 168, 1477, + 86, 86, 1479, 1485, 1486, 1478, 86, 86, 86, 86, + 86, 1488, 1487, 1482, 1481, 86, 86, 86, 86, 86, + 1483, 1489, 86, 1496, 1484, 86, 86, 1490, 1491, 86, + 1493, 86, 86, 1494, 1495, 1492, 1500, 1501, 86, 86, + 86, 86, 86, 1505, 1503, 1497, 86, 1499, 1506, 86, + 1508, 1498, 86, 86, 1509, 1502, 86, 86, 86, 1504, + 1507, 86, 1514, 1517, 86, 1515, 1510, 1516, 1511, 1519, - 86, 86, 1518, 1517, 86, 1521, 1522, 86, 1515, 86, - 86, 1519, 86, 86, 86, 1525, 86, 1520, 86, 86, - 1530, 86, 86, 86, 1534, 1523, 1531, 1527, 86, 1524, - 86, 86, 1526, 1533, 1528, 1535, 1529, 86, 86, 1532, - 86, 86, 86, 86, 86, 1537, 1541, 1536, 1543, 1542, - 86, 86, 1538, 1539, 86, 1546, 86, 86, 86, 1540, - 1545, 1551, 1544, 86, 1550, 1547, 1548, 86, 1552, 1554, - 86, 86, 1553, 86, 86, 86, 1549, 1555, 86, 1559, - 1560, 1561, 86, 1558, 86, 86, 86, 86, 1565, 1556, - 86, 1562, 86, 1563, 1564, 86, 1557, 86, 86, 86, + 86, 1512, 86, 86, 1513, 86, 1520, 1522, 1518, 86, + 86, 1521, 1523, 86, 86, 1527, 86, 86, 86, 1528, + 86, 86, 1524, 1531, 86, 86, 86, 1526, 86, 1536, + 1537, 86, 86, 1540, 1529, 1533, 86, 1530, 86, 86, + 1532, 86, 1534, 1535, 86, 86, 86, 86, 1541, 1538, + 86, 1539, 1547, 86, 86, 1543, 86, 1542, 1549, 1544, + 1545, 1548, 86, 86, 1552, 1546, 86, 86, 1550, 86, + 1559, 1551, 86, 1556, 1557, 86, 1554, 1558, 1560, 86, + 86, 1553, 86, 86, 86, 86, 1565, 1566, 1561, 1555, + 1564, 1562, 86, 86, 1567, 86, 1568, 86, 1569, 86, - 1567, 86, 86, 86, 1572, 86, 1566, 86, 86, 1571, - 1568, 86, 86, 1569, 1578, 1574, 1570, 1575, 1580, 1579, - 86, 86, 1576, 1581, 86, 1573, 86, 1583, 86, 86, - 1577, 86, 86, 86, 86, 86, 1591, 1587, 86, 86, - 1586, 1582, 86, 1592, 1594, 86, 86, 1584, 1585, 86, - 86, 1597, 1588, 1590, 1589, 1596, 86, 86, 86, 86, - 86, 86, 86, 86, 1595, 1593, 86, 1603, 86, 1605, - 86, 86, 1613, 1606, 1612, 1598, 1602, 1599, 1600, 1601, - 86, 1604, 86, 1607, 1608, 86, 1609, 86, 86, 86, - 86, 86, 86, 1610, 1611, 1614, 86, 1619, 1615, 86, + 86, 1570, 86, 1571, 86, 1563, 86, 86, 86, 86, + 86, 86, 1578, 1572, 86, 86, 1577, 86, 86, 1574, + 86, 86, 1575, 1580, 1573, 1576, 1581, 1584, 86, 1589, + 1586, 1582, 1585, 86, 1579, 1587, 86, 1583, 86, 86, + 1588, 86, 86, 86, 86, 86, 1597, 1593, 86, 86, + 1592, 86, 86, 1598, 1600, 86, 86, 1590, 1591, 1603, + 86, 1602, 1594, 1596, 1595, 86, 86, 86, 86, 86, + 1601, 86, 1611, 161, 86, 1599, 86, 1609, 86, 86, + 86, 1612, 1614, 86, 1617, 1604, 1605, 1606, 1607, 1610, + 1608, 1613, 1615, 86, 86, 86, 86, 86, 86, 1616, - 1621, 86, 1616, 1623, 86, 86, 1620, 1618, 1625, 86, - 1624, 86, 1627, 86, 86, 1617, 1628, 1622, 86, 86, - 86, 86, 1629, 1630, 1626, 1634, 1635, 86, 86, 86, - 86, 86, 86, 1631, 1640, 1638, 86, 1639, 1632, 86, - 86, 1633, 1642, 86, 86, 86, 1636, 1643, 1644, 86, - 1637, 86, 1641, 86, 1647, 1645, 86, 86, 1650, 86, - 86, 1646, 86, 86, 86, 1649, 86, 1654, 86, 1656, - 86, 86, 86, 1648, 1651, 1657, 86, 1661, 1655, 86, - 86, 1652, 1653, 86, 86, 86, 1659, 1667, 1658, 1664, - 1666, 86, 86, 1662, 86, 1669, 86, 1660, 1663, 86, + 1621, 86, 86, 86, 1622, 1619, 86, 1625, 1618, 86, + 1620, 1629, 86, 86, 86, 86, 1631, 1623, 1626, 1624, + 1630, 86, 86, 86, 86, 1628, 1627, 1633, 1632, 1634, + 86, 86, 86, 1640, 1635, 1636, 1641, 86, 86, 86, + 86, 1637, 86, 1639, 86, 1645, 1646, 1644, 86, 86, + 1638, 86, 86, 1648, 86, 86, 1642, 86, 1649, 1650, + 86, 1643, 86, 86, 86, 1651, 1653, 1652, 1647, 86, + 1656, 1655, 86, 86, 86, 86, 86, 1654, 86, 1657, + 1660, 86, 1662, 86, 86, 1663, 86, 86, 1661, 86, + 1668, 86, 1659, 1658, 86, 86, 1664, 86, 1665, 86, - 1665, 86, 86, 86, 168, 1672, 1675, 86, 1674, 86, - 1671, 86, 1668, 86, 86, 86, 86, 1683, 1670, 86, - 1676, 1673, 86, 86, 1684, 1678, 86, 1677, 1681, 1687, - 86, 86, 1679, 1680, 86, 1688, 1689, 86, 1693, 1691, - 1682, 86, 1685, 1686, 86, 86, 1692, 1695, 86, 1697, - 86, 86, 86, 86, 1690, 86, 86, 86, 1699, 86, - 1700, 86, 1696, 86, 1702, 1694, 86, 1703, 86, 86, - 1698, 1704, 1707, 86, 1708, 86, 1706, 1705, 86, 86, - 1701, 86, 1712, 1715, 1717, 1713, 1709, 1710, 86, 86, - 86, 86, 86, 1716, 1723, 86, 1720, 1714, 1711, 1719, + 1671, 1669, 1673, 86, 86, 86, 1667, 86, 1674, 1666, + 168, 1675, 1670, 86, 1672, 86, 1676, 1679, 1678, 1677, + 86, 1682, 86, 86, 1680, 1681, 1683, 86, 86, 86, + 86, 86, 1690, 86, 86, 86, 86, 86, 1691, 1694, + 86, 1684, 1685, 1688, 1695, 86, 1686, 1687, 86, 86, + 1696, 1698, 1700, 1699, 1692, 1689, 1693, 1697, 86, 86, + 1702, 86, 1704, 86, 86, 86, 86, 86, 86, 86, + 1709, 1706, 1707, 86, 1710, 1703, 86, 86, 86, 1701, + 86, 86, 86, 1705, 1714, 86, 1715, 86, 86, 159, + 1711, 1722, 1708, 1713, 1717, 1712, 86, 86, 1716, 1719, - 1718, 86, 1724, 1725, 1722, 86, 86, 1727, 86, 86, - 1726, 86, 1728, 1729, 86, 86, 86, 1721, 86, 86, - 1730, 86, 86, 1736, 1737, 1735, 86, 1731, 86, 86, - 86, 1738, 1739, 86, 1732, 86, 86, 1733, 86, 86, - 1741, 1734, 1742, 86, 1743, 86, 86, 86, 86, 86, - 86, 1740, 86, 1745, 1744, 86, 1752, 1753, 86, 86, - 1747, 1748, 1749, 1758, 86, 1746, 86, 1750, 86, 86, - 86, 1755, 86, 86, 86, 1751, 1756, 1754, 86, 1757, - 1764, 86, 86, 86, 86, 86, 1760, 1762, 1759, 1766, - 86, 1768, 1761, 86, 1767, 1763, 86, 1770, 1765, 86, + 86, 86, 1720, 86, 1724, 1723, 86, 1718, 1730, 86, + 1731, 1727, 1726, 1728, 1721, 86, 86, 1732, 1729, 86, + 1725, 86, 1734, 86, 1733, 86, 1735, 1736, 86, 86, + 86, 86, 86, 86, 1737, 86, 1743, 1744, 1742, 86, + 1746, 1738, 86, 86, 1745, 86, 86, 86, 1739, 86, + 1740, 86, 1741, 86, 1748, 1749, 86, 86, 1750, 86, + 86, 86, 86, 86, 86, 1751, 86, 86, 1747, 1760, + 1759, 1752, 86, 1754, 1755, 1756, 86, 1753, 86, 1765, + 1757, 86, 86, 1761, 1762, 86, 86, 86, 1758, 1764, + 1763, 86, 1771, 86, 86, 86, 86, 86, 1767, 86, - 1769, 86, 86, 86, 86, 86, 86, 86, 1773, 1775, - 1782, 86, 1776, 86, 1772, 1777, 1774, 1771, 1783, 86, - 1778, 1779, 1784, 86, 86, 1785, 1780, 1787, 86, 1786, - 1781, 1788, 86, 86, 86, 86, 86, 86, 86, 1791, - 1792, 1789, 86, 86, 1800, 86, 86, 1795, 86, 86, - 86, 86, 1790, 1794, 1797, 1793, 86, 1798, 1799, 1801, - 86, 1796, 1806, 1802, 1803, 86, 1804, 86, 86, 86, - 1805, 86, 1810, 86, 86, 86, 1814, 1807, 86, 1813, - 86, 86, 1812, 1818, 86, 1811, 1809, 86, 86, 1822, - 1815, 86, 1808, 1816, 1823, 86, 1817, 86, 1819, 86, + 1773, 1766, 86, 1775, 86, 1769, 1768, 86, 1770, 1774, + 86, 1776, 86, 1777, 1772, 86, 86, 86, 86, 1780, + 86, 86, 1782, 86, 1789, 1779, 1783, 1781, 1778, 1784, + 1790, 86, 1785, 1786, 1791, 86, 86, 86, 1787, 86, + 1794, 1793, 1795, 86, 86, 1788, 86, 86, 1792, 86, + 86, 1798, 1796, 86, 1799, 86, 86, 86, 86, 1802, + 1808, 86, 86, 1797, 1807, 1804, 1800, 1806, 1805, 1801, + 86, 86, 86, 86, 1803, 1810, 86, 1809, 86, 86, + 86, 1817, 86, 86, 86, 1814, 1812, 86, 1820, 1811, + 86, 1821, 1813, 1819, 86, 86, 1823, 1816, 1818, 1824, - 1828, 86, 1820, 1825, 1827, 1821, 86, 1830, 86, 1831, - 1833, 1824, 86, 1826, 86, 86, 86, 1832, 86, 1829, - 1834, 86, 1837, 86, 86, 1841, 86, 1839, 86, 86, - 86, 86, 86, 1840, 1842, 1836, 1838, 86, 1835, 86, - 1845, 86, 86, 86, 1851, 86, 1846, 1853, 1843, 1844, - 86, 86, 1847, 86, 1848, 1854, 1849, 1850, 1856, 86, - 86, 86, 86, 1855, 86, 86, 1852, 1861, 86, 86, - 86, 1857, 86, 86, 1865, 86, 1867, 1860, 1858, 86, - 86, 1859, 168, 86, 1863, 1868, 86, 1862, 1864, 1866, - 86, 1869, 1871, 86, 1873, 1870, 1875, 86, 86, 86, + 1825, 86, 86, 1815, 1829, 1822, 86, 86, 86, 1830, + 86, 86, 1826, 1835, 86, 86, 1834, 1837, 86, 86, + 1828, 1831, 1827, 1832, 1838, 86, 86, 1840, 1833, 86, + 86, 1839, 1836, 86, 86, 1841, 1844, 86, 86, 86, + 1848, 1846, 86, 86, 86, 1842, 86, 1847, 1843, 86, + 1845, 1849, 86, 86, 86, 86, 86, 1852, 1850, 1858, + 86, 1853, 1860, 1851, 86, 1861, 1854, 1855, 86, 1856, + 1857, 86, 1863, 86, 86, 86, 86, 1862, 1867, 86, + 1869, 1859, 86, 86, 86, 86, 86, 1873, 86, 86, + 86, 86, 3288, 1865, 1864, 1866, 1868, 86, 86, 1879, - 86, 86, 1872, 1879, 86, 86, 86, 86, 1874, 86, - 86, 1877, 1881, 86, 1886, 1880, 86, 1876, 1882, 1878, - 86, 1883, 86, 1890, 86, 1887, 1884, 86, 1889, 86, - 1885, 86, 1891, 86, 1888, 1892, 86, 1895, 1893, 1897, - 1894, 1896, 86, 86, 86, 86, 1898, 86, 1899, 86, - 86, 86, 86, 86, 86, 86, 86, 1904, 1905, 86, - 86, 1909, 86, 1906, 86, 1917, 86, 1900, 1902, 1903, - 1908, 1901, 1907, 1910, 86, 86, 86, 1916, 1918, 1912, - 1913, 1915, 86, 86, 86, 86, 1911, 1914, 86, 86, - 86, 1924, 86, 86, 1927, 1919, 1928, 86, 1929, 86, + 1871, 1875, 86, 1872, 1870, 86, 86, 1876, 168, 1874, + 1877, 1878, 86, 1882, 1880, 1883, 86, 86, 86, 86, + 1881, 1887, 86, 86, 86, 86, 86, 86, 1894, 1885, + 1889, 1884, 86, 1888, 86, 86, 1890, 1886, 1891, 86, + 86, 1897, 1898, 86, 1892, 86, 86, 1893, 1899, 86, + 1896, 1895, 1900, 86, 1901, 1902, 1903, 1904, 86, 86, + 1908, 86, 86, 1906, 86, 86, 86, 1907, 86, 86, + 86, 1905, 86, 86, 1912, 1913, 86, 86, 86, 86, + 3288, 1914, 1917, 86, 1910, 1915, 1911, 1909, 1918, 86, + 86, 1916, 86, 1926, 1923, 1921, 1925, 86, 1920, 86, - 86, 1920, 86, 1921, 1922, 1923, 1925, 86, 1926, 86, - 1930, 1931, 86, 86, 1932, 1935, 86, 86, 86, 1937, - 1938, 1933, 1936, 1934, 1939, 86, 1941, 1940, 86, 86, - 86, 86, 86, 86, 1943, 1944, 86, 86, 1946, 1947, - 86, 86, 86, 86, 1951, 86, 86, 1950, 1953, 1945, - 1952, 86, 1948, 1942, 86, 86, 86, 1961, 1954, 1955, - 1956, 86, 1949, 86, 1963, 1957, 86, 86, 86, 1964, - 86, 1958, 86, 1959, 1967, 86, 1960, 1970, 86, 1968, - 1965, 1962, 1966, 86, 86, 86, 86, 1971, 1974, 86, - 1969, 86, 1976, 86, 86, 86, 1979, 1980, 86, 86, + 86, 1919, 1922, 86, 1927, 86, 86, 1924, 86, 86, + 1932, 86, 86, 1935, 1936, 86, 1937, 86, 86, 1928, + 86, 1930, 86, 1929, 86, 1933, 1931, 1934, 1944, 1938, + 1939, 86, 86, 1940, 1943, 86, 1945, 86, 1947, 1941, + 1946, 1942, 86, 86, 86, 1949, 86, 1950, 86, 1951, + 86, 86, 1952, 86, 86, 1954, 1955, 86, 86, 86, + 86, 1948, 86, 1959, 1958, 1960, 1961, 86, 1953, 1956, + 86, 1969, 86, 86, 86, 86, 86, 86, 86, 1957, + 1971, 86, 1962, 1963, 1964, 1972, 86, 1966, 86, 1965, + 1973, 1967, 1976, 1974, 1968, 1970, 86, 86, 1975, 1978, - 1982, 86, 86, 86, 1972, 86, 1973, 86, 86, 1987, - 1988, 86, 1975, 1977, 1984, 86, 1978, 1985, 86, 1981, - 86, 86, 86, 86, 1986, 86, 1994, 1983, 1989, 1991, - 1992, 86, 86, 1990, 1998, 86, 86, 1997, 2001, 2002, - 86, 2003, 86, 2000, 86, 86, 1993, 1996, 86, 1995, - 86, 86, 86, 2004, 86, 1999, 86, 86, 86, 2005, - 2009, 86, 2012, 2013, 2008, 86, 2014, 86, 86, 86, - 86, 2006, 86, 2007, 2010, 86, 86, 2022, 86, 2017, - 86, 2021, 2016, 86, 2011, 2015, 86, 86, 2019, 3280, - 86, 2026, 2020, 86, 86, 2018, 2027, 86, 2024, 2023, + 86, 86, 86, 1977, 86, 86, 1979, 1982, 86, 86, + 1984, 86, 86, 1987, 1988, 86, 86, 1990, 86, 86, + 1980, 86, 1981, 86, 1985, 86, 1996, 86, 1983, 1995, + 1992, 86, 1993, 1986, 86, 86, 1989, 86, 86, 86, + 86, 2002, 86, 86, 1991, 1999, 1994, 2006, 2000, 1998, + 86, 86, 1997, 86, 86, 2005, 2009, 86, 2010, 2004, + 86, 2008, 86, 2001, 86, 2011, 86, 86, 2003, 2013, + 86, 2007, 2012, 86, 86, 86, 86, 2014, 2017, 86, + 2020, 2021, 2022, 86, 86, 2016, 86, 86, 86, 2015, + 2025, 86, 2018, 86, 86, 86, 2030, 86, 86, 2024, - 2029, 86, 2028, 86, 86, 2025, 86, 2030, 2031, 2033, - 86, 86, 86, 2032, 86, 2034, 2037, 2040, 2035, 86, - 86, 2043, 86, 86, 2042, 2036, 86, 2044, 86, 86, - 86, 86, 2038, 2045, 2039, 2041, 86, 2046, 2050, 86, - 86, 2047, 2051, 86, 2052, 2057, 2048, 2054, 2055, 2053, - 86, 2049, 86, 86, 86, 2059, 86, 86, 86, 86, - 2064, 86, 2056, 2061, 2058, 86, 86, 2066, 2060, 2062, - 168, 86, 86, 86, 86, 2067, 86, 86, 86, 2073, - 2072, 2071, 86, 2063, 2068, 86, 2069, 2065, 2074, 86, - 2070, 2075, 86, 2077, 86, 86, 86, 86, 2116, 86, + 2029, 86, 2019, 2023, 86, 86, 2026, 86, 2034, 2037, + 86, 2027, 86, 2031, 2036, 2028, 2032, 2033, 2035, 86, + 86, 2041, 86, 2038, 86, 86, 86, 86, 2042, 86, + 86, 2039, 2045, 2048, 86, 86, 2040, 86, 2043, 86, + 2050, 2051, 86, 2054, 2044, 2049, 2046, 86, 2052, 2047, + 86, 86, 2058, 86, 2053, 2059, 86, 2057, 2060, 2062, + 2063, 86, 2055, 2061, 86, 86, 86, 2056, 86, 86, + 2067, 86, 86, 2065, 86, 86, 86, 86, 2069, 2072, + 2074, 2066, 86, 2068, 2070, 86, 86, 2064, 168, 86, + 86, 86, 86, 2075, 2076, 2080, 2079, 86, 2081, 2073, - 2078, 2079, 2076, 2080, 2081, 86, 86, 86, 86, 2083, - 2082, 86, 2085, 86, 2089, 86, 86, 86, 86, 2084, - 2086, 2088, 86, 2091, 86, 2087, 2090, 2092, 86, 2094, - 86, 2093, 86, 86, 86, 86, 86, 86, 86, 2099, - 2101, 2096, 2100, 86, 2095, 86, 86, 2103, 86, 2106, - 86, 2097, 86, 2098, 2102, 86, 86, 2110, 86, 2105, - 2107, 2104, 86, 2111, 2109, 86, 86, 2112, 2108, 2117, - 86, 2115, 86, 2114, 86, 2118, 86, 2113, 86, 2123, - 86, 86, 86, 2125, 86, 86, 2126, 2127, 86, 86, - 2119, 86, 2120, 2121, 2122, 2129, 86, 2128, 2124, 86, + 2071, 2077, 2082, 86, 2083, 86, 86, 2085, 86, 2078, + 86, 86, 86, 86, 2086, 2087, 86, 2088, 86, 2091, + 86, 2089, 86, 2090, 86, 2093, 2084, 86, 86, 2097, + 86, 86, 2092, 2096, 2094, 86, 86, 86, 2101, 2095, + 2098, 2099, 2100, 2102, 86, 86, 86, 86, 86, 86, + 2109, 2107, 86, 86, 86, 2104, 86, 2108, 86, 86, + 86, 2114, 86, 2111, 86, 2103, 2105, 3288, 2106, 86, + 86, 2110, 2115, 2113, 86, 2118, 2112, 86, 2117, 2120, + 2116, 86, 2119, 86, 86, 2122, 2125, 86, 2123, 2121, + 86, 86, 86, 2126, 86, 2131, 86, 2124, 86, 86, - 2130, 86, 2133, 86, 86, 86, 86, 2132, 86, 86, - 2134, 86, 2137, 86, 2131, 2138, 86, 86, 86, 86, - 86, 86, 86, 86, 86, 2136, 2135, 2146, 2140, 2141, - 2139, 2143, 86, 2142, 86, 2145, 2150, 2151, 86, 2144, - 2147, 86, 2148, 86, 2154, 86, 2149, 86, 2155, 86, - 2152, 2158, 2157, 86, 2153, 86, 86, 86, 86, 86, - 2160, 86, 86, 2161, 2166, 2156, 2162, 86, 2164, 86, - 86, 2159, 2168, 2165, 2170, 86, 2163, 86, 86, 86, - 2173, 86, 86, 2169, 2172, 86, 2167, 2174, 86, 2178, - 2175, 86, 86, 86, 86, 86, 2179, 86, 86, 2176, + 2133, 86, 86, 86, 2134, 2135, 86, 2127, 2128, 2129, + 2130, 2136, 2137, 86, 86, 2132, 86, 2138, 86, 2141, + 86, 86, 86, 86, 2140, 86, 86, 2142, 86, 2145, + 86, 86, 2146, 86, 86, 86, 86, 2139, 86, 86, + 86, 86, 2144, 2143, 86, 2148, 2149, 2147, 2151, 86, + 2150, 2156, 2158, 2153, 86, 2154, 2152, 2159, 86, 2160, + 86, 86, 2157, 2162, 2161, 86, 2163, 86, 2155, 2166, + 2165, 86, 86, 86, 2164, 86, 86, 2168, 86, 86, + 2169, 86, 86, 2174, 2170, 86, 86, 2172, 2176, 2167, + 86, 2173, 2178, 86, 2171, 86, 86, 86, 2181, 2177, - 86, 2181, 86, 2171, 2190, 2180, 2184, 86, 2177, 86, - 2185, 2183, 86, 2182, 2188, 2186, 86, 2189, 2187, 86, - 86, 2194, 86, 86, 86, 86, 2196, 2192, 86, 2197, - 86, 86, 2198, 86, 2191, 2193, 2195, 86, 2199, 2203, - 2201, 86, 86, 2202, 2205, 86, 86, 86, 2200, 2206, - 86, 2207, 2210, 86, 86, 86, 86, 2208, 2209, 2211, - 2215, 86, 2204, 86, 86, 2214, 2212, 86, 86, 86, - 86, 86, 86, 86, 86, 2213, 86, 2224, 86, 2225, - 2221, 2216, 2217, 2218, 2219, 2222, 2220, 2226, 86, 2223, - 86, 86, 86, 86, 2227, 86, 2229, 2235, 86, 2230, + 2180, 2175, 2182, 86, 86, 86, 2186, 86, 2183, 86, + 86, 86, 86, 86, 2187, 86, 2179, 86, 2189, 3288, + 2188, 86, 2184, 2192, 86, 2185, 2197, 2191, 86, 2193, + 2190, 2196, 2194, 86, 86, 2195, 2198, 86, 86, 2202, + 86, 86, 86, 2204, 86, 2205, 2200, 86, 86, 86, + 86, 2199, 86, 2203, 2201, 2207, 2206, 86, 2209, 2211, + 86, 2210, 2213, 86, 86, 86, 2208, 2214, 86, 2215, + 2218, 86, 86, 2212, 86, 2216, 2217, 2219, 86, 2223, + 86, 86, 86, 86, 2220, 86, 86, 2222, 86, 86, + 86, 86, 86, 86, 2221, 86, 2232, 2227, 2229, 2224, - 86, 2237, 86, 86, 2234, 168, 2231, 2228, 86, 2236, - 2232, 86, 2239, 86, 2243, 2245, 2240, 2246, 2233, 2244, - 86, 86, 2238, 86, 86, 86, 2241, 2242, 2247, 86, - 2250, 86, 2248, 86, 2251, 86, 2255, 86, 86, 2256, - 86, 2259, 86, 3280, 2254, 86, 86, 86, 2252, 2249, - 2260, 2263, 2257, 86, 2261, 2262, 86, 2264, 86, 2253, - 2258, 86, 2265, 86, 86, 86, 86, 86, 2267, 86, - 86, 86, 2270, 86, 86, 2273, 86, 86, 86, 2277, - 86, 2266, 2279, 86, 2280, 2268, 2272, 86, 86, 2275, - 86, 2269, 2271, 2282, 2274, 86, 86, 2276, 86, 86, + 2225, 2226, 2230, 2228, 2234, 86, 86, 86, 2239, 2231, + 2233, 86, 2235, 2237, 86, 2238, 86, 86, 2243, 86, + 86, 86, 2245, 86, 2247, 2236, 2242, 86, 86, 2240, + 2244, 168, 2248, 86, 2253, 2246, 2255, 2251, 2254, 2241, + 86, 2249, 2252, 86, 86, 86, 86, 2258, 86, 86, + 2259, 86, 86, 2250, 2256, 2263, 86, 86, 2264, 86, + 2262, 2267, 86, 86, 2260, 2257, 2273, 86, 2268, 86, + 2266, 2265, 86, 2269, 2271, 2261, 2270, 86, 2272, 86, + 86, 86, 86, 86, 86, 2275, 86, 86, 2278, 86, + 86, 86, 86, 86, 2281, 86, 2285, 2287, 86, 2274, - 2278, 86, 2281, 2284, 2287, 86, 86, 2285, 2290, 86, - 86, 86, 86, 86, 2288, 86, 2283, 2286, 2291, 86, - 86, 86, 86, 2289, 86, 2292, 3280, 86, 86, 86, - 2293, 2304, 2298, 2303, 2296, 2294, 2302, 2295, 86, 2300, - 2297, 2301, 2299, 2305, 86, 86, 86, 86, 86, 2307, - 2306, 2308, 86, 86, 2311, 2312, 86, 86, 86, 2313, - 86, 2309, 2314, 86, 86, 2310, 86, 2317, 2324, 2318, - 2320, 86, 2319, 2315, 2321, 86, 86, 2316, 86, 86, - 86, 2322, 86, 2323, 2327, 86, 2328, 86, 2330, 86, - 86, 86, 2326, 2332, 86, 86, 2335, 86, 86, 2325, + 2276, 86, 2280, 86, 86, 2288, 86, 2277, 2282, 2279, + 86, 2283, 2284, 2292, 86, 2286, 86, 86, 2289, 2290, + 86, 86, 2293, 86, 86, 2295, 2298, 86, 86, 86, + 2291, 86, 2299, 86, 2296, 2294, 2300, 86, 86, 86, + 86, 2297, 86, 86, 86, 86, 86, 2301, 2312, 2311, + 2306, 2354, 2302, 2309, 2305, 2303, 2304, 2308, 2310, 86, + 2307, 2313, 86, 86, 2314, 86, 2315, 86, 86, 86, + 86, 2319, 2320, 86, 86, 86, 2321, 86, 2316, 2322, + 86, 2317, 2318, 2323, 86, 2325, 2326, 86, 2324, 2327, + 2328, 86, 2329, 86, 86, 86, 86, 86, 86, 2330, - 2334, 2329, 2336, 86, 86, 86, 2333, 86, 2331, 86, - 2342, 86, 2337, 2338, 2341, 86, 2344, 86, 86, 2339, - 86, 86, 86, 2347, 86, 2348, 2340, 2346, 2350, 86, - 86, 86, 2354, 86, 2343, 86, 2345, 86, 86, 86, - 2349, 2351, 86, 2358, 86, 2352, 2359, 86, 86, 2361, - 2353, 86, 86, 2357, 86, 2355, 2364, 86, 86, 86, - 2356, 2360, 86, 2362, 86, 2366, 2363, 86, 2367, 86, - 2371, 86, 2365, 2373, 86, 86, 2372, 2368, 2374, 86, - 2369, 86, 86, 86, 2378, 86, 2377, 2379, 86, 86, - 2370, 86, 86, 2375, 2383, 2376, 2381, 2385, 86, 86, + 2331, 2335, 86, 2336, 86, 2338, 86, 2332, 86, 2334, + 2340, 86, 86, 86, 2343, 86, 2333, 2337, 2342, 2344, + 86, 86, 86, 86, 86, 86, 2339, 2341, 2350, 86, + 2349, 2346, 86, 2352, 86, 2345, 86, 2347, 86, 86, + 2356, 2355, 86, 2348, 2358, 86, 86, 86, 2362, 86, + 86, 2351, 86, 86, 2353, 2357, 86, 2367, 86, 86, + 2366, 2359, 2360, 86, 86, 2361, 86, 86, 2365, 2369, + 2363, 2372, 86, 86, 86, 2364, 86, 86, 2368, 86, + 2374, 2370, 2371, 2373, 86, 2379, 86, 86, 2375, 86, + 86, 2381, 86, 2382, 2376, 2377, 2380, 2386, 2385, 86, - 86, 2388, 2390, 2386, 86, 2391, 2380, 86, 86, 2382, - 86, 2384, 2389, 86, 2387, 2392, 86, 86, 86, 2395, - 86, 86, 86, 86, 86, 3280, 2394, 2396, 2403, 2393, - 2397, 2398, 2399, 2401, 2400, 2402, 86, 2404, 2407, 86, - 86, 86, 86, 2406, 86, 2405, 86, 2408, 168, 86, - 86, 2415, 86, 2410, 86, 2409, 86, 86, 86, 86, - 2411, 86, 2412, 86, 2422, 2413, 2414, 2417, 2418, 2416, - 86, 86, 86, 2419, 2420, 2421, 2423, 2426, 86, 86, - 2427, 2428, 86, 86, 2425, 2431, 2429, 86, 2432, 86, - 2424, 86, 2430, 86, 86, 2434, 86, 86, 2433, 86, + 86, 86, 86, 86, 2387, 2378, 86, 86, 2383, 86, + 2384, 2391, 2393, 86, 2389, 2396, 86, 86, 2394, 86, + 2398, 86, 2399, 2390, 2395, 2388, 86, 86, 86, 2392, + 86, 86, 2400, 2403, 86, 86, 86, 2397, 86, 86, + 2404, 2402, 2409, 2405, 2401, 2406, 2410, 2407, 86, 2408, + 86, 86, 86, 168, 2411, 86, 2414, 2415, 2418, 2412, + 2413, 86, 2416, 86, 86, 86, 86, 2423, 86, 86, + 2417, 86, 86, 86, 86, 86, 86, 2430, 2425, 86, + 86, 2421, 2422, 2426, 2419, 2431, 2420, 2424, 2429, 2427, + 2428, 86, 2434, 86, 86, 2435, 2436, 86, 86, 2432, - 2436, 86, 86, 86, 2440, 2441, 86, 2435, 86, 2437, - 86, 86, 86, 2443, 2444, 2438, 86, 2446, 86, 2445, - 2442, 2439, 86, 2448, 86, 86, 86, 2447, 2449, 86, - 2452, 86, 2451, 2450, 2453, 86, 2455, 86, 2454, 86, - 86, 86, 86, 86, 2462, 2459, 86, 86, 2461, 86, - 86, 86, 2463, 86, 2458, 86, 3280, 2456, 2467, 2457, - 86, 86, 2460, 86, 86, 2464, 86, 2472, 2465, 2471, - 2466, 2473, 2469, 86, 86, 2475, 2468, 2470, 86, 86, - 2474, 86, 2477, 86, 86, 2480, 2478, 86, 2476, 2482, - 86, 2481, 2484, 86, 86, 86, 2486, 86, 86, 86, + 86, 2437, 2439, 2433, 2440, 2438, 86, 86, 86, 86, + 86, 2442, 86, 86, 2444, 2441, 86, 86, 86, 2448, + 2449, 2443, 86, 2446, 86, 86, 86, 2451, 2445, 2452, + 86, 2454, 86, 2453, 86, 2456, 2447, 86, 2450, 2455, + 2457, 86, 86, 86, 2461, 86, 2458, 2460, 86, 86, + 86, 86, 86, 86, 2463, 86, 86, 2467, 86, 2470, + 86, 2462, 2459, 2469, 86, 86, 2466, 86, 86, 86, + 2464, 2465, 86, 2471, 2472, 2468, 86, 2475, 2480, 2473, + 86, 2477, 86, 2474, 86, 2479, 86, 86, 2482, 2476, + 2481, 86, 2478, 86, 2485, 86, 2483, 86, 2486, 86, - 86, 86, 2483, 2485, 86, 2479, 86, 86, 86, 2490, - 86, 2492, 2493, 2488, 2494, 86, 2487, 2489, 2495, 86, - 86, 2496, 86, 2497, 2498, 2500, 2491, 86, 86, 86, - 2503, 86, 2499, 86, 2505, 86, 86, 2508, 86, 86, - 86, 2502, 2504, 86, 86, 86, 2509, 2501, 86, 2512, - 2514, 2507, 86, 2506, 2513, 86, 86, 86, 2510, 86, - 86, 86, 2511, 2518, 2517, 2516, 86, 86, 86, 86, - 2515, 2519, 2522, 3280, 2520, 86, 2525, 86, 2521, 86, - 2524, 2526, 86, 2527, 86, 2528, 86, 2530, 2523, 86, - 86, 2529, 86, 2532, 2531, 86, 2533, 86, 86, 86, + 2488, 2490, 86, 86, 86, 2484, 2489, 86, 2492, 86, + 2494, 86, 86, 2493, 86, 2491, 86, 86, 86, 86, + 86, 86, 2498, 2487, 2500, 2501, 2502, 86, 2496, 2504, + 2495, 86, 2497, 2503, 86, 86, 86, 2505, 86, 86, + 86, 2511, 86, 2507, 2499, 2508, 86, 2506, 2513, 86, + 86, 2510, 2516, 86, 86, 2512, 86, 2509, 86, 2517, + 86, 86, 2520, 2521, 86, 2515, 86, 2514, 86, 86, + 86, 2522, 86, 86, 2525, 2526, 86, 2518, 2519, 2524, + 86, 86, 86, 86, 2529, 86, 2523, 2530, 2532, 3288, + 2527, 2533, 86, 86, 2528, 2534, 86, 2535, 86, 2536, - 2538, 86, 2534, 86, 2540, 86, 2541, 86, 86, 2535, - 86, 86, 86, 86, 86, 2537, 86, 2544, 2536, 2542, - 86, 2547, 2539, 2543, 2545, 2550, 86, 86, 86, 86, - 86, 86, 86, 2546, 2548, 168, 2551, 86, 2558, 86, - 2549, 86, 86, 2554, 86, 86, 2556, 2557, 2559, 2553, - 86, 86, 2569, 86, 2552, 2555, 2560, 2561, 86, 86, - 86, 2565, 2562, 86, 2567, 2566, 86, 2563, 2568, 2570, - 86, 86, 2571, 2564, 86, 2572, 86, 2573, 2574, 86, - 86, 86, 86, 86, 86, 2576, 86, 86, 86, 86, - 2575, 2584, 86, 86, 86, 2577, 2582, 86, 2588, 86, + 86, 2531, 86, 2538, 86, 2537, 86, 2539, 86, 2540, + 86, 2541, 86, 86, 2546, 86, 2542, 86, 2543, 2548, + 86, 2549, 86, 86, 86, 86, 86, 86, 86, 2545, + 86, 2552, 2544, 2555, 2550, 86, 2547, 2551, 2553, 2558, + 86, 86, 86, 86, 86, 86, 86, 2554, 86, 168, + 2556, 2559, 86, 2566, 86, 2557, 86, 2562, 86, 86, + 2564, 2565, 86, 2561, 86, 2567, 2570, 2560, 86, 2563, + 86, 2573, 86, 2568, 2569, 2575, 2571, 2576, 2574, 2577, + 86, 2578, 86, 86, 2579, 2572, 86, 2580, 86, 2581, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 2579, 2578, 2589, 86, 2581, 2580, 2583, 86, 2585, 2590, - 2586, 2587, 2593, 86, 86, 86, 2592, 2595, 86, 86, - 86, 2591, 86, 2594, 86, 86, 86, 2598, 86, 2604, - 86, 2605, 86, 2596, 86, 86, 86, 2597, 86, 2599, - 2600, 86, 2602, 2601, 2608, 2609, 86, 2603, 2610, 86, - 2611, 2613, 86, 2607, 2606, 86, 86, 86, 86, 2612, - 86, 86, 2616, 86, 86, 2620, 2619, 2621, 86, 2615, - 86, 2614, 2622, 2623, 86, 86, 86, 86, 2617, 86, - 2618, 86, 86, 2624, 2625, 86, 2629, 86, 86, 2627, - 86, 2633, 2634, 86, 86, 2626, 2637, 86, 86, 2628, + 86, 86, 2583, 2592, 86, 86, 2590, 86, 2582, 2585, + 86, 2584, 86, 2586, 2587, 86, 2596, 2588, 2589, 2591, + 2593, 86, 2594, 2595, 2597, 86, 86, 2598, 2604, 2599, + 2600, 2601, 86, 2603, 86, 2602, 86, 86, 86, 86, + 86, 86, 86, 86, 2606, 2612, 86, 2613, 86, 86, + 86, 2617, 86, 2607, 2605, 2619, 2616, 2608, 2609, 2610, + 2611, 86, 2614, 2618, 86, 86, 86, 2615, 86, 86, + 86, 86, 86, 86, 2624, 86, 86, 2628, 2627, 2629, + 86, 2621, 86, 2620, 2623, 86, 86, 2622, 2630, 2631, + 86, 2625, 2626, 86, 2633, 2632, 86, 86, 86, 86, - 2641, 86, 2630, 86, 2631, 2635, 86, 2632, 86, 86, - 2638, 86, 2636, 2639, 86, 2640, 2642, 2646, 86, 86, - 86, 86, 86, 2643, 2649, 2650, 86, 2652, 86, 2644, - 2648, 2647, 86, 86, 2645, 86, 86, 2653, 2657, 86, - 86, 2651, 2654, 86, 2658, 2660, 86, 86, 2656, 86, - 86, 2655, 86, 2665, 86, 86, 2667, 86, 2663, 86, - 2661, 2664, 2659, 2662, 2668, 86, 86, 86, 86, 86, - 2666, 2669, 2671, 86, 86, 86, 2672, 86, 3280, 2670, - 86, 86, 2674, 2675, 86, 2677, 2678, 86, 2673, 2676, - 2680, 86, 2679, 2681, 86, 2682, 168, 86, 86, 86, + 86, 2634, 2637, 86, 86, 2635, 86, 2641, 2642, 86, + 2645, 86, 86, 86, 2643, 86, 2636, 2646, 2638, 2639, + 86, 86, 86, 2640, 2644, 2648, 86, 2647, 2649, 86, + 2651, 2654, 86, 2650, 86, 86, 86, 2658, 86, 86, + 2657, 86, 2652, 2656, 2660, 86, 2653, 2655, 86, 86, + 2662, 86, 86, 2661, 2665, 86, 86, 2666, 2659, 2668, + 86, 86, 86, 2664, 86, 2663, 86, 86, 2673, 86, + 2671, 2675, 86, 86, 2667, 2669, 2672, 2670, 2676, 86, + 86, 2674, 86, 86, 2677, 86, 86, 2679, 86, 3288, + 86, 2680, 86, 86, 2678, 2682, 2683, 2685, 2686, 86, - 2687, 86, 2685, 2684, 2683, 2686, 86, 86, 86, 2689, - 86, 86, 2688, 2712, 2690, 2691, 2692, 86, 2693, 86, - 2695, 86, 86, 2697, 2694, 2696, 86, 86, 2698, 86, - 86, 2699, 2700, 2702, 86, 86, 86, 86, 2703, 86, - 2704, 86, 86, 86, 2701, 2705, 86, 2709, 2710, 2707, - 86, 2711, 2706, 86, 86, 2714, 86, 86, 86, 2713, - 2715, 86, 86, 2708, 86, 86, 2717, 2718, 2716, 86, - 86, 2723, 86, 86, 2721, 86, 2719, 2720, 2722, 2726, - 86, 2724, 86, 86, 86, 86, 2727, 2731, 86, 86, - 2732, 2725, 86, 86, 2728, 86, 2736, 86, 86, 86, + 2688, 86, 2689, 86, 2681, 2684, 2690, 168, 86, 86, + 86, 86, 2695, 3288, 2687, 2691, 2692, 86, 86, 86, + 2697, 86, 2696, 3288, 86, 2700, 86, 2693, 2694, 2699, + 2701, 86, 86, 2703, 86, 86, 2698, 2705, 2704, 86, + 86, 86, 2706, 86, 2707, 2702, 2708, 2710, 86, 86, + 86, 86, 2711, 86, 2709, 2712, 86, 86, 2713, 2717, + 86, 2718, 86, 86, 2715, 86, 2714, 86, 2719, 86, + 86, 86, 2720, 86, 2723, 2722, 86, 86, 2716, 86, + 2727, 86, 2725, 86, 2726, 2721, 2728, 86, 2724, 86, + 2729, 2734, 2730, 86, 2731, 86, 2732, 86, 86, 86, - 86, 2734, 2729, 2730, 2740, 2741, 86, 86, 2733, 2743, - 2735, 2744, 2737, 2738, 2745, 86, 86, 86, 86, 2739, - 86, 2746, 86, 2748, 2747, 86, 86, 86, 86, 86, - 86, 2751, 2742, 86, 2749, 86, 2754, 2756, 86, 2750, - 2757, 86, 2752, 86, 2753, 2758, 86, 2759, 2755, 86, - 2761, 86, 86, 2762, 2760, 86, 2765, 2763, 86, 86, - 2768, 2766, 86, 2769, 86, 2770, 86, 2764, 86, 86, - 86, 2771, 86, 2775, 86, 86, 2776, 86, 2767, 2777, - 86, 86, 2772, 2779, 86, 86, 86, 2783, 2773, 86, - 2780, 86, 2774, 86, 2784, 86, 2778, 86, 86, 2786, + 86, 2735, 86, 2739, 86, 86, 86, 2733, 86, 2742, + 2744, 86, 2740, 86, 86, 86, 86, 2736, 86, 2737, + 2748, 2738, 2751, 2743, 2752, 2741, 2749, 86, 86, 2746, + 86, 2753, 2745, 2754, 86, 2747, 86, 86, 86, 86, + 86, 86, 86, 2750, 2755, 2756, 2759, 2757, 86, 86, + 2762, 86, 2758, 2764, 86, 2760, 2765, 86, 2766, 86, + 86, 86, 86, 2761, 2767, 86, 2768, 2769, 86, 2763, + 2771, 86, 2773, 86, 86, 2776, 86, 2774, 86, 2777, + 86, 86, 2770, 2772, 2778, 86, 86, 86, 86, 2779, + 2783, 86, 86, 2775, 2780, 86, 2782, 86, 2784, 2785, - 2782, 2785, 86, 2781, 2787, 86, 86, 2792, 2791, 86, - 86, 2789, 2788, 86, 2794, 2795, 86, 86, 2790, 86, - 86, 86, 2796, 2798, 2800, 86, 2801, 2797, 86, 86, - 86, 2793, 86, 86, 2799, 2804, 86, 2808, 86, 86, - 86, 86, 86, 2810, 2944, 2802, 2803, 2805, 86, 86, - 2807, 2811, 2806, 2809, 86, 2812, 2814, 2815, 2816, 2819, - 86, 2813, 86, 2817, 86, 86, 2820, 86, 2818, 86, - 2821, 86, 2822, 86, 2823, 86, 86, 86, 2824, 86, - 2825, 86, 2828, 86, 86, 86, 2830, 2826, 2834, 86, - 2835, 86, 2831, 86, 86, 86, 2836, 3140, 2829, 2838, + 86, 2787, 86, 2786, 86, 2781, 2791, 86, 2788, 86, + 2789, 2793, 86, 2792, 86, 2794, 86, 86, 2790, 86, + 2795, 86, 2800, 86, 86, 2799, 86, 86, 86, 2804, + 2802, 86, 2796, 2803, 86, 2805, 2797, 2798, 86, 86, + 86, 2806, 2808, 86, 2809, 86, 86, 86, 2801, 86, + 2812, 2816, 86, 86, 86, 86, 2807, 2810, 2811, 86, + 86, 86, 2818, 2815, 2813, 86, 2833, 2814, 2817, 2820, + 2819, 86, 2821, 2822, 2823, 2824, 2827, 86, 86, 2826, + 2825, 86, 86, 2828, 86, 2829, 86, 2830, 86, 2831, + 86, 86, 86, 86, 2832, 86, 86, 2836, 86, 86, - 86, 86, 2827, 86, 2832, 2833, 2840, 86, 2839, 86, - 2842, 86, 2837, 86, 2841, 86, 86, 2847, 86, 86, - 86, 2846, 2843, 2848, 2844, 2845, 86, 2851, 86, 2849, - 86, 86, 2852, 86, 86, 2855, 86, 2854, 86, 2856, - 86, 2850, 86, 2853, 2857, 86, 2858, 86, 86, 86, - 2859, 2862, 86, 86, 86, 86, 2867, 3280, 2861, 86, - 2863, 2865, 86, 2860, 2870, 86, 2868, 86, 2872, 86, - 2871, 86, 86, 2866, 2864, 86, 2869, 2874, 2873, 86, - 2875, 2877, 86, 2876, 2878, 86, 2879, 86, 86, 86, - 86, 2881, 2884, 86, 2882, 2883, 86, 2880, 86, 86, + 2838, 2842, 86, 2843, 86, 2839, 86, 86, 86, 2844, + 2834, 86, 2837, 2846, 86, 2847, 2849, 2835, 2840, 2841, + 2848, 86, 2850, 86, 86, 2845, 86, 86, 86, 2855, + 86, 86, 86, 2851, 86, 2852, 2853, 2859, 2856, 86, + 2857, 86, 2860, 86, 86, 86, 2854, 2858, 2863, 86, + 2862, 86, 2861, 86, 2864, 2865, 86, 2866, 86, 2867, + 86, 86, 86, 86, 86, 86, 86, 86, 2875, 2870, + 86, 2869, 2873, 2871, 86, 2878, 2868, 2876, 86, 86, + 2880, 86, 86, 2879, 2874, 2890, 86, 2872, 2877, 3288, + 2881, 2882, 86, 2883, 2885, 86, 2884, 2886, 86, 2887, - 86, 2885, 2887, 86, 2886, 2889, 86, 2888, 86, 2893, - 86, 2891, 2895, 86, 86, 86, 86, 86, 2896, 86, - 86, 2890, 2897, 86, 2898, 86, 2892, 86, 2899, 2904, - 86, 2901, 86, 86, 86, 2894, 2907, 86, 2902, 2900, - 86, 86, 86, 86, 86, 2903, 2905, 2906, 2912, 2908, - 2911, 86, 2913, 2909, 86, 86, 2917, 86, 86, 86, - 2910, 86, 2915, 2914, 2919, 86, 2920, 86, 2922, 86, - 86, 86, 86, 86, 2927, 86, 86, 2918, 2926, 86, - 2921, 2916, 86, 2931, 2929, 86, 2923, 2924, 2925, 86, - 2934, 86, 86, 86, 2936, 86, 2928, 86, 2930, 2932, + 86, 86, 2889, 86, 86, 2892, 86, 86, 2891, 2893, + 2888, 86, 2894, 2895, 86, 86, 86, 86, 86, 2901, + 86, 86, 2899, 86, 2896, 86, 86, 2897, 2903, 86, + 2904, 86, 2907, 86, 86, 86, 2900, 2898, 2905, 2906, + 2908, 86, 86, 2911, 86, 2902, 2912, 86, 86, 86, + 2909, 86, 2915, 86, 86, 2913, 2910, 2914, 2916, 86, + 86, 2921, 2919, 86, 2920, 86, 86, 2917, 2925, 86, + 86, 86, 2918, 86, 2922, 2927, 86, 2928, 86, 2930, + 86, 2923, 86, 86, 86, 86, 86, 2931, 86, 2926, + 2934, 86, 2924, 86, 2929, 2935, 86, 86, 2932, 2933, - 86, 86, 2937, 2939, 86, 2940, 86, 86, 2933, 2942, - 86, 86, 2935, 2947, 2948, 2938, 2945, 86, 86, 86, - 86, 2941, 2951, 86, 86, 86, 2953, 2952, 86, 2943, - 2949, 2946, 2954, 2956, 2957, 86, 2959, 2950, 86, 86, - 86, 2958, 86, 86, 86, 2962, 86, 86, 2955, 2961, - 2965, 86, 2963, 2968, 86, 86, 86, 86, 2960, 86, - 86, 86, 2964, 2973, 86, 86, 86, 2969, 2966, 2967, - 2975, 2977, 86, 2972, 2976, 2970, 2978, 86, 86, 86, - 2974, 86, 86, 2979, 2971, 86, 2981, 2982, 86, 2983, - 86, 2984, 86, 2980, 2987, 2985, 86, 2989, 86, 86, + 86, 2939, 2942, 86, 2936, 2940, 86, 2938, 2944, 2937, + 86, 2945, 2941, 86, 86, 2947, 86, 2943, 2948, 86, + 2950, 86, 86, 86, 86, 86, 86, 86, 3288, 2955, + 86, 2953, 2946, 2949, 2952, 86, 86, 2957, 2959, 86, + 2951, 86, 2961, 86, 2954, 2956, 2960, 2958, 2962, 2964, + 2963, 2965, 86, 86, 2967, 86, 2966, 86, 86, 86, + 86, 2970, 86, 2969, 2971, 86, 2973, 86, 86, 2976, + 86, 86, 86, 86, 86, 2968, 2981, 86, 86, 2977, + 3288, 86, 2985, 86, 2972, 2974, 2975, 2980, 86, 2978, + 2984, 86, 2983, 2986, 86, 86, 2987, 2982, 2979, 86, - 86, 2988, 86, 86, 86, 86, 2994, 2995, 86, 86, - 86, 2986, 86, 2999, 86, 3000, 86, 86, 2990, 86, - 3280, 2998, 3001, 2996, 2991, 2992, 2993, 86, 86, 86, - 2997, 86, 3004, 3005, 86, 3006, 86, 3002, 3003, 86, - 3009, 86, 86, 3008, 3007, 86, 86, 3012, 86, 86, - 3011, 3014, 86, 3010, 3013, 86, 86, 3016, 86, 86, - 86, 86, 3018, 86, 86, 3015, 3019, 3017, 86, 86, - 86, 86, 86, 86, 86, 3028, 3029, 3031, 3020, 3024, - 3021, 3022, 3023, 86, 86, 3025, 3026, 3035, 3280, 3032, - 3027, 86, 3030, 3033, 3036, 86, 3034, 3037, 86, 86, + 2990, 86, 2991, 86, 2989, 2992, 86, 86, 86, 2988, + 2995, 86, 86, 2997, 86, 86, 86, 2996, 86, 86, + 2993, 86, 3002, 3003, 86, 86, 86, 86, 3007, 86, + 2998, 3008, 86, 86, 2994, 86, 3006, 2999, 3009, 3004, + 3000, 3001, 86, 3288, 86, 86, 3005, 3012, 3013, 86, + 3014, 86, 86, 3010, 3011, 3017, 86, 3015, 86, 3016, + 86, 86, 3020, 86, 86, 3021, 3019, 86, 3018, 86, + 86, 86, 86, 86, 3024, 86, 86, 3026, 86, 86, + 3027, 86, 3025, 86, 3022, 86, 86, 3023, 86, 86, + 3036, 3037, 3028, 3288, 3032, 3029, 3030, 3031, 3033, 3034, - 3039, 86, 86, 3038, 86, 3042, 86, 3040, 3043, 86, - 3044, 3045, 86, 86, 3046, 3047, 3050, 86, 3048, 3049, - 86, 86, 86, 3041, 3051, 86, 86, 86, 86, 3057, - 86, 86, 86, 3056, 86, 86, 3053, 86, 3052, 3059, - 86, 3060, 86, 3061, 86, 3065, 3054, 3055, 3066, 86, - 3062, 3064, 3067, 86, 86, 86, 3058, 3072, 3063, 86, - 3069, 3074, 3073, 86, 86, 86, 86, 86, 3070, 3068, - 86, 3071, 86, 86, 86, 3078, 3082, 3079, 3081, 86, - 3076, 3224, 86, 86, 86, 3084, 86, 3077, 3087, 3075, - 3083, 3280, 3080, 3085, 86, 3086, 86, 3088, 86, 3089, + 3039, 86, 86, 86, 3035, 86, 86, 3040, 3038, 3041, + 3042, 3044, 86, 86, 3043, 3045, 86, 3046, 3047, 86, + 86, 3288, 3049, 3050, 86, 3048, 3051, 86, 3052, 3053, + 86, 86, 3054, 3055, 3058, 86, 3056, 3057, 86, 86, + 3059, 86, 86, 86, 86, 86, 3065, 86, 86, 86, + 3064, 86, 86, 3068, 86, 3288, 3060, 3061, 3067, 86, + 86, 3069, 3062, 86, 3063, 86, 3073, 3074, 86, 3070, + 3075, 86, 3072, 3066, 86, 3076, 86, 3071, 3080, 3077, + 3082, 86, 86, 3081, 86, 3078, 86, 86, 3079, 86, + 86, 86, 3089, 86, 3086, 3087, 3090, 3084, 86, 3092, - 86, 86, 3091, 86, 3092, 86, 3093, 86, 3094, 86, - 3090, 3095, 86, 3096, 86, 3097, 86, 86, 3099, 86, - 86, 86, 86, 86, 86, 86, 3098, 3104, 86, 3100, - 86, 86, 86, 3101, 86, 3108, 86, 3107, 3105, 3110, - 86, 86, 3102, 3103, 3106, 3109, 86, 86, 3114, 3112, - 3111, 86, 3117, 86, 3116, 86, 86, 86, 86, 3115, - 3119, 86, 3113, 86, 86, 86, 86, 3118, 86, 3123, - 86, 3127, 86, 3122, 3124, 3120, 3129, 86, 86, 3121, - 86, 3125, 3134, 3128, 3130, 86, 3131, 86, 86, 3133, - 3126, 86, 86, 86, 86, 3132, 86, 86, 3142, 3139, + 86, 3125, 86, 86, 3091, 3288, 3083, 86, 3085, 3131, + 3088, 3093, 86, 3094, 86, 86, 3096, 86, 3097, 86, + 3095, 86, 3099, 86, 3100, 86, 3101, 86, 3102, 86, + 3098, 3103, 86, 3104, 86, 3105, 86, 86, 3107, 86, + 86, 86, 86, 86, 86, 86, 3106, 3112, 86, 3108, + 86, 86, 86, 3109, 86, 3116, 86, 3115, 3113, 3118, + 86, 86, 3110, 3111, 3114, 3117, 86, 86, 3122, 3120, + 3119, 86, 86, 86, 3124, 86, 86, 86, 3127, 3123, + 86, 86, 3121, 86, 86, 86, 3126, 3135, 86, 3132, + 3137, 86, 3130, 86, 3128, 3129, 3133, 86, 3136, 3138, - 86, 86, 86, 86, 3138, 3136, 86, 86, 3135, 86, - 86, 3141, 86, 3143, 86, 3137, 86, 86, 3146, 3149, - 3144, 3145, 3148, 86, 3150, 86, 3158, 86, 3152, 86, - 3151, 3147, 3154, 86, 3153, 86, 3156, 3157, 86, 3155, - 3159, 86, 86, 3160, 3161, 86, 3162, 86, 3163, 86, - 86, 86, 3165, 3164, 86, 3166, 3167, 3170, 86, 86, - 3168, 86, 86, 86, 3175, 86, 3173, 3176, 86, 3169, - 86, 3172, 3171, 86, 3179, 86, 86, 86, 3182, 86, - 86, 3183, 3174, 86, 3186, 3177, 86, 3187, 86, 86, - 86, 3180, 3178, 86, 3184, 3181, 86, 3192, 86, 86, + 86, 3139, 86, 86, 86, 86, 3141, 3142, 86, 3134, + 86, 3140, 86, 3143, 3148, 3147, 86, 86, 3144, 3146, + 86, 3150, 86, 86, 86, 86, 86, 86, 3145, 86, + 3151, 3149, 86, 86, 86, 3157, 86, 3160, 86, 3154, + 86, 3152, 3153, 3162, 3156, 3158, 86, 86, 3159, 3166, + 3155, 3165, 86, 86, 3161, 86, 3164, 3167, 86, 3288, + 3163, 86, 3168, 3169, 86, 3170, 86, 3172, 86, 86, + 86, 3173, 3171, 86, 3174, 3175, 3178, 86, 86, 86, + 3176, 86, 86, 86, 3181, 3183, 86, 86, 3177, 86, + 3180, 3179, 3184, 86, 3187, 86, 86, 86, 3185, 3190, - 86, 3189, 3185, 3188, 3191, 3193, 86, 86, 86, 86, - 86, 86, 86, 3197, 86, 3190, 3199, 86, 86, 86, - 86, 3194, 3196, 3204, 86, 3206, 86, 3195, 86, 3205, - 3198, 3200, 3201, 3202, 3207, 86, 3203, 3210, 86, 86, - 86, 3212, 86, 3213, 3211, 3214, 3208, 86, 86, 86, - 86, 3218, 86, 3215, 3209, 3216, 86, 86, 3219, 86, - 86, 3220, 3221, 86, 3222, 86, 86, 3227, 3217, 86, - 86, 3223, 86, 86, 86, 3230, 3231, 86, 86, 86, - 86, 86, 86, 3229, 3225, 3226, 3234, 3232, 3228, 86, - 3233, 3235, 86, 3237, 86, 3238, 86, 3239, 3236, 86, + 86, 3182, 86, 3191, 3188, 3192, 3186, 86, 86, 3194, + 3195, 86, 86, 86, 3189, 86, 86, 86, 3199, 3200, + 86, 86, 3196, 86, 3197, 86, 3193, 3201, 86, 3205, + 86, 3198, 86, 86, 86, 86, 86, 3204, 3202, 3207, + 86, 3203, 86, 3214, 86, 3212, 3209, 3213, 3210, 86, + 3206, 3208, 86, 86, 86, 3211, 3218, 86, 3220, 3219, + 86, 3221, 86, 86, 86, 86, 86, 3222, 3223, 3215, + 3216, 3224, 3217, 3226, 3227, 86, 86, 3229, 86, 86, + 86, 3228, 86, 86, 3225, 86, 3230, 86, 3235, 86, + 3232, 86, 86, 86, 86, 86, 3238, 3239, 86, 3231, - 3242, 86, 3240, 86, 3244, 86, 3245, 86, 3241, 86, - 3249, 86, 3246, 86, 86, 3243, 3247, 86, 3250, 3251, - 3248, 3252, 86, 86, 86, 86, 86, 86, 3258, 86, - 3253, 3254, 3256, 3255, 86, 86, 86, 86, 86, 3260, - 3261, 86, 3264, 86, 3257, 3259, 3265, 86, 86, 3268, - 3269, 86, 86, 3271, 86, 3262, 3263, 3266, 86, 3270, - 3272, 86, 3267, 86, 86, 3273, 86, 86, 3274, 3275, - 3278, 86, 3279, 86, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3276, 3277, 47, 47, 47, - 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, + 3240, 86, 86, 3241, 3233, 3237, 3234, 3242, 3236, 86, + 86, 3246, 3243, 86, 86, 86, 86, 3250, 3247, 86, + 3244, 86, 3245, 86, 3252, 86, 3253, 3248, 86, 86, + 3257, 86, 86, 3254, 3260, 86, 3255, 3258, 3251, 86, + 3256, 3249, 86, 86, 3259, 86, 3261, 86, 86, 86, + 3262, 86, 3264, 3266, 86, 86, 3268, 86, 86, 86, + 3269, 86, 3272, 86, 3263, 3273, 86, 3265, 3267, 86, + 3276, 3277, 86, 86, 3279, 86, 3270, 3271, 3274, 86, + 3278, 86, 3275, 3280, 86, 86, 3281, 86, 86, 3288, + 3282, 3288, 3283, 3286, 86, 3287, 86, 3288, 3288, 3288, - 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, 3280, 89, - 89, 89, 89, 158, 158, 3280, 3280, 3280, 158, 158, - 160, 160, 3280, 3280, 160, 3280, 160, 162, 3280, 3280, - 3280, 3280, 3280, 162, 165, 165, 3280, 3280, 3280, 165, - 165, 167, 3280, 3280, 3280, 3280, 3280, 167, 169, 169, - 3280, 169, 169, 169, 169, 172, 3280, 3280, 3280, 3280, - 3280, 172, 175, 175, 3280, 3280, 3280, 175, 175, 90, + 3284, 3288, 3288, 3288, 3288, 3288, 3288, 3285, 47, 47, + 47, 47, 47, 47, 47, 52, 52, 52, 52, 52, + 52, 52, 57, 57, 57, 57, 57, 57, 57, 63, + 63, 63, 63, 63, 63, 63, 68, 68, 68, 68, + 68, 68, 68, 74, 74, 74, 74, 74, 74, 74, + 80, 80, 80, 80, 80, 80, 80, 89, 89, 3288, + 89, 89, 89, 89, 158, 158, 3288, 3288, 3288, 158, + 158, 160, 160, 3288, 3288, 160, 3288, 160, 162, 3288, + 3288, 3288, 3288, 3288, 162, 165, 165, 3288, 3288, 3288, + 165, 165, 167, 3288, 3288, 3288, 3288, 3288, 167, 169, - 90, 3280, 90, 90, 90, 90, 17, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280 + 169, 3288, 169, 169, 169, 169, 172, 3288, 3288, 3288, + 3288, 3288, 172, 175, 175, 3288, 3288, 3288, 175, 175, + 90, 90, 3288, 90, 90, 90, 90, 17, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288 } ; -static const flex_int16_t yy_chk[6448] = +static const flex_int16_t yy_chk[6469] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2224,18 +2229,18 @@ static const flex_int16_t yy_chk[6448] = 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, 3288, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3296, 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, 2682, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2690, 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, - 28, 92, 31, 32, 1078, 32, 36, 36, 37, 37, + 28, 92, 31, 32, 1082, 32, 36, 36, 37, 37, 28, 45, 45, 37, 175, 36, 45, 39, 41, 41, 45, 36, 39, 41, 94, 36, 39, 43, 43, 37, @@ -2251,9 +2256,9 @@ static const flex_int16_t yy_chk[6448] = 104, 114, 111, 113, 108, 110, 110, 113, 116, 115, 112, 109, 117, 110, 115, 117, 119, 118, 117, 120, - 123, 114, 116, 118, 120, 126, 121, 122, 732, 121, + 123, 114, 116, 118, 120, 126, 121, 122, 734, 121, 125, 117, 117, 121, 123, 119, 124, 125, 126, 128, - 124, 127, 118, 129, 120, 732, 122, 130, 127, 121, + 124, 127, 118, 129, 120, 734, 122, 130, 127, 121, 131, 122, 128, 132, 131, 133, 134, 135, 135, 136, 133, 139, 137, 129, 133, 130, 137, 138, 143, 140, 142, 132, 144, 148, 143, 137, 134, 141, 147, 136, @@ -2311,620 +2316,622 @@ static const flex_int16_t yy_chk[6448] = 356, 350, 348, 352, 357, 349, 356, 358, 359, 360, 354, 359, 358, 359, 361, 362, 364, 361, 358, 365, 365, 366, 364, 360, 362, 367, 366, 371, 367, 369, - 361, 370, 401, 361, 367, 361, 372, 375, 367, 373, - 375, 376, 371, 378, 401, 379, 367, 368, 368, 369, - 368, 372, 370, 373, 379, 376, 375, 382, 378, 380, + 361, 373, 164, 361, 367, 361, 370, 372, 367, 370, + 375, 376, 371, 375, 379, 373, 367, 368, 368, 369, + 368, 382, 372, 379, 378, 376, 380, 370, 381, 375, - 383, 381, 384, 368, 380, 380, 368, 381, 368, 386, - 368, 377, 385, 377, 377, 388, 387, 384, 382, 383, - 389, 385, 387, 377, 390, 377, 377, 377, 386, 391, - 377, 392, 393, 394, 395, 391, 392, 396, 390, 391, - 389, 388, 396, 397, 398, 399, 399, 400, 402, 395, - 398, 403, 393, 394, 392, 404, 405, 403, 397, 406, - 407, 407, 402, 407, 406, 408, 409, 400, 410, 411, - 417, 413, 405, 413, 413, 414, 419, 415, 418, 414, - 404, 415, 409, 411, 410, 408, 416, 416, 420, 417, - 421, 413, 419, 418, 422, 423, 415, 426, 425, 424, + 383, 380, 380, 368, 381, 384, 368, 385, 368, 378, + 368, 377, 382, 377, 377, 386, 385, 388, 387, 383, + 384, 389, 390, 377, 387, 377, 377, 377, 392, 391, + 377, 395, 393, 392, 386, 391, 390, 394, 397, 391, + 396, 389, 398, 388, 400, 396, 395, 401, 398, 399, + 399, 392, 393, 397, 402, 403, 404, 394, 405, 401, + 406, 403, 408, 409, 400, 406, 407, 407, 402, 407, + 410, 411, 417, 413, 405, 413, 413, 416, 416, 409, + 414, 404, 408, 415, 414, 411, 410, 415, 418, 419, + 420, 417, 421, 413, 424, 422, 423, 162, 425, 430, - 423, 428, 426, 422, 421, 424, 420, 425, 423, 423, - 428, 427, 423, 423, 422, 427, 422, 429, 430, 431, - 432, 435, 434, 429, 432, 431, 433, 434, 164, 433, - 436, 436, 437, 438, 438, 439, 440, 441, 441, 430, - 439, 435, 442, 443, 444, 437, 445, 443, 442, 440, - 446, 447, 448, 448, 449, 446, 447, 450, 451, 444, - 452, 448, 453, 455, 454, 453, 449, 445, 454, 456, - 456, 458, 452, 457, 460, 455, 451, 450, 457, 459, - 459, 462, 462, 463, 470, 464, 465, 466, 467, 471, - 469, 472, 458, 464, 476, 465, 460, 473, 477, 476, + 424, 423, 415, 418, 422, 419, 421, 425, 420, 423, + 423, 426, 428, 423, 423, 422, 426, 422, 427, 429, + 430, 428, 427, 431, 432, 429, 434, 433, 432, 431, + 433, 434, 435, 436, 436, 437, 438, 438, 439, 442, + 440, 441, 441, 439, 444, 442, 443, 445, 437, 446, + 443, 447, 435, 440, 446, 449, 447, 448, 448, 444, + 450, 451, 452, 458, 455, 457, 448, 449, 445, 453, + 457, 454, 453, 460, 452, 454, 455, 456, 456, 451, + 450, 459, 459, 463, 458, 462, 462, 466, 464, 465, + 467, 469, 470, 471, 472, 460, 464, 473, 465, 160, - 467, 162, 470, 473, 463, 472, 474, 466, 469, 471, - 469, 475, 477, 478, 480, 474, 479, 475, 481, 479, - 482, 478, 483, 485, 478, 486, 482, 484, 480, 485, - 484, 487, 488, 481, 489, 491, 487, 490, 492, 486, - 491, 490, 483, 493, 494, 495, 496, 485, 493, 499, - 537, 502, 500, 492, 488, 489, 503, 501, 504, 496, - 494, 501, 504, 506, 495, 497, 497, 500, 537, 499, - 502, 497, 503, 497, 508, 507, 514, 505, 506, 497, - 507, 497, 505, 509, 497, 497, 505, 511, 510, 513, - 508, 497, 509, 508, 510, 512, 514, 516, 512, 510, + 475, 477, 467, 473, 463, 474, 475, 466, 472, 469, + 470, 469, 476, 471, 474, 477, 478, 476, 479, 480, + 481, 479, 482, 483, 478, 485, 484, 478, 482, 484, + 486, 485, 487, 480, 488, 481, 489, 487, 490, 492, + 491, 493, 490, 483, 486, 491, 493, 494, 495, 485, + 499, 496, 502, 520, 492, 501, 488, 489, 500, 501, + 506, 503, 504, 494, 496, 520, 504, 495, 497, 497, + 499, 502, 509, 500, 497, 506, 497, 503, 507, 508, + 505, 509, 497, 507, 497, 505, 510, 497, 497, 505, + 511, 512, 510, 513, 497, 508, 513, 510, 508, 514, - 515, 515, 518, 511, 517, 517, 519, 521, 520, 522, - 523, 524, 513, 525, 526, 523, 160, 518, 519, 527, - 524, 529, 516, 520, 530, 527, 521, 531, 530, 526, - 529, 522, 525, 531, 532, 533, 534, 535, 536, 538, - 540, 539, 540, 538, 541, 650, 532, 650, 542, 545, - 533, 535, 547, 536, 539, 534, 542, 543, 543, 544, - 546, 545, 549, 550, 547, 544, 546, 548, 541, 551, - 548, 553, 552, 554, 551, 552, 549, 555, 550, 556, - 553, 567, 555, 555, 557, 557, 567, 553, 564, 554, - 553, 559, 556, 558, 558, 560, 560, 559, 561, 561, + 515, 516, 516, 517, 519, 511, 521, 512, 518, 518, + 522, 523, 524, 526, 525, 527, 530, 524, 528, 519, + 515, 521, 514, 525, 528, 530, 533, 531, 517, 522, + 527, 531, 526, 523, 532, 534, 535, 536, 533, 537, + 532, 538, 539, 540, 542, 541, 539, 541, 546, 543, + 534, 536, 544, 544, 537, 535, 540, 543, 545, 538, + 546, 547, 548, 549, 545, 550, 549, 547, 542, 551, + 552, 554, 555, 553, 548, 552, 553, 556, 557, 550, + 554, 565, 556, 556, 551, 558, 558, 554, 555, 560, + 554, 557, 559, 559, 563, 560, 561, 561, 562, 562, - 562, 565, 563, 568, 569, 571, 562, 563, 563, 564, - 571, 566, 569, 565, 566, 570, 572, 573, 570, 574, - 575, 576, 568, 574, 577, 576, 575, 578, 582, 579, - 580, 580, 578, 581, 584, 583, 573, 585, 586, 572, - 583, 587, 577, 579, 586, 588, 587, 590, 581, 582, - 584, 592, 589, 591, 591, 589, 593, 585, 597, 588, - 589, 594, 595, 589, 589, 590, 594, 595, 596, 592, - 599, 600, 593, 597, 601, 602, 599, 601, 603, 602, - 600, 604, 596, 603, 604, 605, 606, 607, 608, 610, - 605, 609, 611, 615, 610, 608, 612, 612, 613, 614, + 563, 564, 565, 566, 568, 567, 564, 564, 567, 568, + 569, 570, 572, 571, 573, 566, 571, 572, 575, 570, + 574, 576, 575, 578, 577, 579, 580, 576, 577, 569, + 579, 581, 581, 582, 583, 585, 586, 573, 584, 574, + 580, 578, 588, 584, 587, 589, 590, 588, 582, 590, + 587, 585, 591, 593, 590, 583, 586, 590, 590, 589, + 592, 592, 594, 595, 596, 597, 598, 600, 595, 596, + 591, 593, 602, 600, 601, 602, 603, 604, 594, 597, + 603, 598, 604, 601, 605, 606, 609, 605, 607, 608, + 606, 611, 610, 609, 612, 616, 611, 613, 613, 614, - 620, 602, 606, 620, 609, 607, 616, 613, 617, 615, - 618, 619, 611, 624, 623, 616, 618, 619, 614, 623, - 617, 621, 621, 622, 621, 625, 622, 626, 630, 627, - 628, 624, 629, 626, 627, 629, 628, 631, 632, 625, - 637, 633, 631, 632, 632, 634, 635, 638, 640, 636, - 158, 635, 639, 630, 633, 636, 638, 639, 634, 637, - 641, 641, 642, 645, 643, 635, 635, 643, 640, 642, - 644, 649, 646, 647, 651, 645, 644, 646, 647, 647, - 648, 648, 643, 652, 653, 652, 654, 655, 656, 657, - 659, 658, 660, 651, 659, 661, 649, 658, 662, 663, + 615, 617, 603, 618, 607, 610, 619, 608, 614, 625, + 617, 616, 619, 158, 612, 618, 620, 621, 623, 615, + 621, 623, 620, 622, 622, 624, 622, 625, 626, 627, + 624, 628, 629, 631, 630, 627, 628, 630, 629, 632, + 633, 634, 626, 635, 632, 633, 633, 636, 639, 637, + 638, 641, 636, 85, 634, 637, 635, 639, 631, 640, + 642, 642, 644, 643, 640, 644, 636, 636, 645, 638, + 643, 641, 646, 647, 645, 650, 648, 651, 647, 651, + 644, 648, 648, 652, 646, 649, 649, 653, 654, 653, + 655, 656, 657, 658, 660, 659, 661, 662, 660, 663, - 664, 660, 653, 665, 654, 655, 666, 656, 667, 657, - 661, 668, 669, 662, 667, 665, 670, 663, 671, 664, - 673, 666, 672, 674, 669, 668, 672, 675, 676, 677, - 679, 678, 680, 680, 85, 670, 678, 671, 673, 674, - 682, 683, 684, 687, 679, 675, 676, 676, 677, 681, - 685, 686, 683, 681, 689, 685, 684, 688, 690, 682, - 692, 689, 687, 690, 691, 692, 694, 686, 693, 695, - 688, 691, 696, 693, 697, 699, 695, 698, 700, 701, - 703, 696, 701, 700, 694, 702, 698, 699, 697, 702, - 704, 705, 707, 706, 703, 708, 708, 710, 710, 704, + 650, 659, 652, 664, 665, 661, 654, 666, 655, 656, + 667, 657, 662, 658, 663, 669, 668, 671, 670, 666, + 672, 664, 668, 665, 673, 667, 674, 675, 673, 669, + 670, 676, 677, 678, 680, 679, 671, 681, 681, 672, + 679, 682, 683, 675, 674, 682, 684, 685, 680, 676, + 677, 677, 678, 686, 687, 688, 683, 689, 685, 687, + 690, 691, 696, 693, 692, 684, 80, 686, 691, 692, + 693, 688, 694, 690, 695, 697, 689, 694, 698, 695, + 696, 699, 697, 700, 701, 702, 703, 698, 705, 703, + 702, 706, 700, 704, 707, 699, 701, 704, 708, 709, - 709, 709, 712, 711, 714, 716, 705, 706, 711, 709, - 715, 712, 718, 707, 717, 719, 715, 720, 717, 722, - 721, 723, 726, 714, 718, 716, 721, 722, 723, 724, - 725, 729, 735, 736, 740, 720, 739, 738, 744, 736, - 719, 735, 726, 738, 741, 739, 729, 724, 741, 744, - 740, 742, 742, 743, 743, 725, 727, 746, 727, 745, - 747, 727, 750, 748, 80, 727, 751, 750, 727, 748, - 753, 746, 752, 754, 753, 727, 727, 745, 727, 756, - 747, 749, 749, 749, 756, 749, 757, 751, 749, 758, - 752, 755, 759, 749, 75, 755, 762, 754, 760, 749, + 706, 718, 705, 710, 710, 711, 711, 712, 712, 707, + 713, 716, 708, 714, 711, 713, 721, 717, 722, 720, + 709, 718, 714, 717, 719, 724, 723, 725, 719, 726, + 716, 720, 723, 724, 725, 727, 722, 728, 731, 737, + 738, 721, 741, 740, 744, 744, 738, 726, 737, 740, + 743, 741, 742, 731, 743, 745, 745, 728, 746, 747, + 727, 729, 748, 729, 749, 750, 729, 752, 742, 746, + 729, 750, 752, 729, 753, 754, 748, 747, 755, 759, + 729, 729, 755, 729, 749, 751, 751, 751, 756, 751, + 757, 758, 751, 754, 757, 753, 758, 751, 759, 760, - 749, 760, 761, 762, 758, 757, 764, 761, 761, 763, - 763, 755, 773, 765, 766, 766, 776, 759, 765, 767, - 768, 764, 769, 768, 767, 770, 770, 769, 771, 772, - 771, 773, 774, 775, 777, 776, 774, 778, 778, 779, - 782, 772, 777, 780, 781, 781, 784, 783, 842, 785, - 822, 786, 842, 775, 779, 785, 786, 780, 782, 783, - 787, 787, 790, 822, 788, 791, 792, 790, 784, 788, - 788, 791, 792, 793, 794, 796, 795, 797, 793, 795, - 794, 796, 798, 798, 800, 797, 799, 799, 801, 802, - 803, 804, 800, 806, 802, 805, 805, 803, 809, 807, + 761, 763, 762, 751, 751, 762, 763, 763, 764, 766, + 757, 75, 756, 767, 760, 764, 765, 765, 767, 768, + 768, 769, 774, 771, 766, 761, 769, 770, 771, 775, + 770, 772, 772, 773, 774, 773, 776, 777, 779, 778, + 776, 780, 780, 785, 781, 784, 779, 782, 775, 783, + 783, 786, 789, 789, 787, 785, 808, 777, 778, 781, + 787, 782, 788, 784, 790, 808, 792, 788, 793, 790, + 790, 792, 794, 786, 793, 795, 796, 798, 794, 799, + 795, 797, 796, 798, 797, 800, 800, 799, 801, 801, + 802, 803, 804, 805, 806, 807, 807, 804, 802, 809, - 808, 808, 806, 810, 809, 812, 801, 807, 813, 814, - 804, 815, 816, 819, 812, 817, 815, 813, 817, 818, - 820, 816, 810, 821, 818, 823, 825, 819, 824, 824, - 823, 823, 821, 814, 826, 827, 828, 829, 832, 832, - 829, 825, 833, 835, 827, 820, 834, 831, 829, 831, - 836, 834, 837, 826, 838, 839, 840, 841, 74, 843, - 828, 845, 844, 833, 835, 840, 848, 845, 849, 846, - 836, 847, 837, 850, 851, 839, 838, 843, 846, 850, - 841, 844, 849, 847, 852, 848, 853, 853, 851, 852, - 854, 855, 856, 857, 858, 859, 860, 862, 861, 863, + 805, 810, 810, 812, 811, 814, 815, 809, 816, 803, + 811, 817, 818, 806, 814, 815, 817, 819, 820, 821, + 819, 818, 812, 820, 822, 823, 824, 826, 826, 827, + 825, 828, 816, 821, 823, 825, 825, 829, 830, 824, + 831, 834, 834, 831, 827, 833, 829, 833, 835, 822, + 828, 831, 836, 837, 842, 838, 839, 836, 840, 841, + 843, 844, 830, 842, 845, 844, 846, 847, 848, 835, + 850, 74, 849, 847, 837, 838, 839, 848, 851, 841, + 840, 852, 845, 843, 849, 846, 853, 852, 854, 850, + 855, 855, 851, 854, 856, 857, 858, 859, 860, 861, - 855, 857, 864, 862, 866, 863, 872, 865, 873, 870, - 854, 872, 856, 865, 858, 860, 864, 859, 861, 867, - 868, 871, 877, 869, 866, 867, 868, 869, 870, 873, - 874, 874, 875, 871, 876, 878, 879, 876, 875, 880, - 877, 871, 879, 881, 881, 882, 883, 884, 878, 885, - 886, 883, 884, 884, 886, 887, 887, 888, 889, 880, - 890, 891, 893, 882, 885, 890, 898, 894, 897, 896, - 900, 900, 901, 903, 903, 902, 901, 904, 889, 888, - 891, 894, 896, 907, 906, 68, 893, 898, 897, 899, - 902, 905, 899, 909, 899, 905, 908, 907, 899, 906, + 853, 862, 863, 864, 857, 859, 865, 867, 869, 864, + 866, 868, 865, 867, 856, 872, 858, 870, 860, 872, + 862, 861, 863, 870, 866, 868, 871, 873, 869, 874, + 875, 876, 871, 877, 877, 875, 878, 879, 880, 882, + 879, 874, 878, 883, 881, 882, 873, 884, 884, 874, + 885, 888, 876, 886, 887, 891, 880, 881, 886, 887, + 887, 889, 892, 883, 894, 889, 888, 893, 885, 890, + 890, 896, 893, 897, 900, 899, 901, 891, 903, 903, + 904, 905, 892, 894, 904, 906, 906, 897, 899, 908, + 907, 909, 919, 908, 900, 896, 905, 901, 902, 910, - 899, 908, 904, 910, 911, 899, 912, 909, 910, 910, - 899, 913, 916, 911, 914, 913, 915, 917, 918, 919, - 912, 915, 917, 920, 916, 921, 929, 913, 923, 914, - 922, 915, 918, 923, 921, 924, 922, 920, 925, 930, - 919, 924, 926, 926, 925, 927, 928, 931, 929, 933, - 927, 934, 928, 63, 935, 939, 934, 936, 930, 937, - 937, 933, 940, 939, 941, 931, 932, 932, 935, 936, - 938, 942, 932, 943, 932, 938, 940, 945, 944, 946, - 932, 947, 945, 941, 944, 932, 932, 948, 949, 943, - 942, 946, 932, 950, 950, 952, 951, 956, 954, 947, + 911, 902, 912, 902, 919, 911, 909, 902, 915, 902, + 932, 914, 913, 910, 902, 907, 912, 913, 913, 902, + 914, 916, 915, 917, 918, 916, 920, 921, 922, 918, + 923, 920, 932, 924, 925, 929, 929, 916, 917, 918, + 925, 921, 924, 926, 923, 927, 928, 931, 926, 922, + 930, 927, 928, 931, 933, 930, 934, 936, 937, 939, + 940, 940, 941, 937, 938, 943, 944, 941, 945, 936, + 946, 939, 942, 933, 934, 935, 935, 951, 938, 943, + 942, 935, 947, 935, 68, 944, 946, 945, 947, 935, + 949, 948, 950, 951, 935, 935, 948, 952, 953, 953, - 951, 958, 955, 948, 954, 955, 949, 957, 960, 961, - 963, 959, 957, 960, 958, 952, 956, 959, 964, 963, - 965, 967, 968, 966, 970, 971, 969, 964, 961, 966, - 967, 969, 972, 973, 974, 980, 965, 975, 977, 971, - 982, 968, 976, 974, 970, 973, 975, 978, 976, 983, - 985, 980, 972, 978, 982, 977, 984, 987, 986, 993, - 988, 989, 992, 58, 985, 988, 989, 992, 993, 983, - 994, 994, 987, 995, 996, 984, 986, 998, 999, 995, - 1003, 1001, 1001, 999, 999, 1001, 1002, 996, 1004, 1002, - 1005, 1006, 1007, 998, 1003, 1008, 1009, 1010, 1011, 1012, + 954, 935, 949, 955, 954, 957, 958, 959, 960, 958, + 950, 957, 961, 960, 962, 952, 963, 964, 966, 967, + 962, 963, 968, 955, 969, 961, 959, 966, 967, 971, + 969, 970, 972, 973, 975, 974, 964, 972, 968, 976, + 970, 977, 980, 978, 983, 986, 989, 987, 971, 974, + 977, 976, 978, 973, 975, 979, 981, 985, 988, 980, + 983, 979, 981, 990, 989, 986, 987, 996, 991, 992, + 995, 985, 988, 991, 992, 995, 996, 998, 990, 997, + 997, 999, 1001, 998, 1002, 1006, 1007, 1004, 1004, 1002, + 1002, 1004, 1005, 1008, 999, 1005, 1009, 1010, 1001, 1006, - 1016, 1014, 1009, 1016, 1011, 1007, 1005, 1013, 1004, 1006, - 1008, 1017, 1013, 1018, 1012, 1014, 1019, 1010, 1018, 1020, - 1021, 1019, 1022, 1025, 1023, 1021, 1026, 1022, 1027, 1025, - 1031, 1028, 1017, 1034, 1027, 1020, 1023, 1028, 1029, 1029, - 1030, 1032, 1026, 1035, 1032, 1033, 1033, 1036, 1031, 1030, - 1037, 1034, 1038, 1037, 1039, 1040, 1047, 1046, 1041, 1042, - 1039, 1040, 1035, 1041, 1042, 1038, 1043, 1036, 1044, 1050, - 1050, 1043, 1048, 1053, 1044, 1046, 1047, 1049, 1048, 1051, - 1052, 1054, 1049, 1055, 1056, 1057, 1055, 1056, 1051, 1052, - 1058, 1053, 1059, 1060, 1063, 1061, 1057, 1062, 1065, 1065, + 1011, 1012, 1013, 1015, 1020, 1014, 1007, 1012, 1016, 1008, + 1010, 1014, 1017, 1016, 1009, 1011, 1019, 1023, 1015, 1019, + 1029, 63, 1013, 1021, 1022, 1020, 1017, 1024, 1021, 1022, + 1025, 1026, 1024, 1023, 1028, 1025, 1029, 1033, 1030, 1031, + 1028, 1032, 1032, 1026, 1030, 1031, 1033, 1034, 1035, 1036, + 1036, 1035, 1037, 1038, 1039, 1040, 1041, 1042, 1040, 1044, + 1043, 1049, 1045, 1042, 1044, 1034, 1043, 1045, 1046, 1041, + 1037, 1047, 1038, 1046, 1039, 1050, 1051, 1047, 1052, 1049, + 1053, 1053, 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1059, + 1060, 1058, 1059, 1054, 1055, 1050, 1062, 1061, 1063, 1064, - 1054, 1061, 1064, 1062, 1059, 1066, 1067, 1064, 1058, 1063, - 1068, 1069, 1060, 1070, 1071, 1069, 1072, 1073, 1075, 1077, - 1067, 1080, 1068, 1071, 1066, 1076, 1076, 1079, 1081, 1082, - 1085, 1070, 1084, 1084, 1082, 1072, 1080, 1075, 1083, 1077, - 1081, 1079, 1073, 1086, 1088, 1087, 1096, 1083, 1089, 1086, - 1085, 1087, 1090, 1089, 1090, 1092, 1091, 1093, 1094, 1095, - 1088, 1091, 1098, 1094, 1099, 1096, 1097, 1101, 1101, 1092, - 1102, 1093, 1103, 1097, 1095, 1105, 1104, 1098, 1106, 1114, - 1107, 1105, 1109, 1099, 1102, 1107, 1109, 1110, 1110, 1116, - 1103, 1104, 1111, 1114, 1107, 1113, 1107, 1111, 1106, 1107, + 1067, 1060, 1061, 1065, 1056, 1066, 1057, 1068, 1070, 1065, + 1063, 1066, 1068, 1072, 1062, 1067, 1069, 1069, 1064, 1071, + 1073, 1074, 1075, 1076, 1073, 1072, 1077, 1070, 1079, 1080, + 1080, 1075, 1081, 1071, 1083, 1084, 1086, 1085, 1089, 1074, + 1092, 1086, 1076, 58, 1087, 1088, 1088, 1079, 1083, 1085, + 1084, 1077, 1081, 1087, 1090, 1091, 1092, 1093, 1089, 1095, + 1090, 1091, 1093, 1094, 1095, 1094, 1096, 1097, 1098, 1099, + 1100, 1101, 1102, 1098, 1103, 1105, 1105, 1106, 1101, 1107, + 1096, 1097, 1109, 1108, 1099, 1110, 57, 1102, 1109, 1100, + 1111, 1106, 1113, 1103, 1117, 1111, 1113, 1107, 1108, 1114, - 1112, 1112, 1113, 1115, 1117, 1118, 1115, 1119, 1116, 1120, - 1122, 1121, 1119, 1123, 1118, 1122, 1125, 1130, 1124, 1127, - 1127, 1128, 1117, 1121, 1133, 1129, 1128, 1123, 1120, 1124, - 1129, 1131, 1134, 1133, 1132, 1125, 1131, 1130, 1132, 1135, - 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1134, 1143, 1144, - 1139, 1146, 1147, 1137, 1135, 1144, 1140, 1138, 1145, 1136, - 1148, 1149, 1150, 1151, 1141, 1152, 1143, 1142, 1153, 1148, - 1154, 1146, 1147, 1145, 1155, 1151, 1149, 1157, 1159, 1160, - 1158, 1150, 1161, 1157, 1152, 1154, 1163, 1160, 1162, 1164, - 1166, 1163, 1159, 1153, 1155, 1158, 1167, 1185, 1168, 1184, + 1114, 1117, 1115, 1118, 1111, 1110, 1111, 1115, 1120, 1111, + 1116, 1116, 1119, 1121, 1122, 1119, 1123, 1118, 1124, 1126, + 1125, 1123, 1127, 1122, 1126, 1129, 1134, 1120, 1128, 1131, + 1131, 1121, 1125, 1132, 1137, 1133, 1127, 1124, 1132, 1128, + 1133, 1136, 1135, 1137, 1129, 1136, 1134, 1135, 1138, 1139, + 1140, 1142, 1143, 1141, 1145, 1144, 1146, 1147, 1150, 1143, + 1151, 1149, 1148, 1138, 1139, 1141, 1142, 1144, 1148, 1140, + 1152, 1153, 1154, 1145, 1157, 1147, 1149, 1146, 1150, 1152, + 1151, 1155, 1156, 1158, 1159, 1162, 1153, 1164, 1161, 1163, + 1165, 1154, 1166, 1155, 1161, 1164, 1170, 1167, 1158, 1157, - 1165, 1164, 1161, 1171, 1162, 1165, 1165, 1169, 1169, 1166, - 1167, 1168, 1170, 1170, 1172, 1185, 1171, 1170, 1173, 1184, - 1170, 1170, 1181, 1172, 1173, 1170, 1174, 1174, 1175, 1176, - 1177, 1170, 1178, 1175, 1179, 1170, 1177, 1178, 1176, 1179, - 1180, 1180, 1187, 1181, 1182, 1182, 1183, 1186, 1188, 1183, - 1189, 1183, 1190, 1188, 1191, 1192, 1186, 1195, 1193, 1201, - 1191, 1192, 1187, 1193, 1189, 1194, 1195, 1196, 1196, 1194, - 1190, 1195, 1198, 1195, 1201, 1195, 1200, 1195, 1197, 1197, - 1200, 1197, 1202, 1198, 1203, 1204, 1205, 1206, 1208, 1207, - 1204, 1204, 1209, 1203, 1207, 1205, 1210, 1211, 1212, 1213, + 1162, 1156, 1167, 1163, 1159, 1168, 1169, 1171, 1166, 1172, + 1165, 1169, 1169, 1173, 1173, 1170, 1175, 1168, 1176, 1177, + 1181, 1171, 1172, 1174, 1174, 1177, 1181, 1176, 1174, 1175, + 1179, 1174, 1174, 1178, 1178, 1179, 1174, 1185, 1180, 1182, + 1183, 1188, 1174, 1319, 1182, 1183, 1174, 1180, 1184, 1184, + 1186, 1186, 1187, 1189, 1190, 1187, 1191, 1187, 1185, 1192, + 1193, 1188, 1194, 1190, 1192, 1197, 1195, 1196, 1199, 1319, + 1197, 1189, 1195, 1196, 1193, 1198, 1191, 1199, 1205, 1198, + 1194, 1206, 1199, 1204, 1199, 1202, 1199, 1204, 1199, 1200, + 1200, 1201, 1201, 1205, 1201, 1207, 1202, 1208, 1209, 1206, - 1202, 1209, 1208, 1214, 1214, 1213, 1215, 1216, 1217, 1206, - 1218, 1219, 1212, 1217, 1215, 1210, 1211, 1220, 1221, 1224, - 1219, 1216, 1222, 57, 1218, 1223, 1223, 1222, 1225, 1225, - 1226, 1230, 1226, 1228, 1224, 1220, 1228, 1229, 1231, 1232, - 1232, 1233, 1229, 1221, 1234, 1234, 1236, 1231, 1235, 1235, - 1230, 1236, 1237, 1238, 1239, 1239, 1240, 1241, 1242, 1243, - 1241, 1233, 1244, 1245, 1243, 1245, 1246, 1248, 1249, 52, - 1248, 1244, 1250, 1237, 1238, 1251, 1240, 1250, 1242, 1253, - 1252, 1254, 1258, 1249, 1246, 1252, 1254, 1253, 1255, 1251, - 1256, 1256, 1257, 1255, 1261, 1259, 1260, 1257, 1263, 1264, + 1210, 1211, 1208, 1208, 1207, 1212, 1211, 1209, 1213, 1214, + 1215, 1216, 1217, 1218, 1218, 1219, 1220, 1213, 1217, 1212, + 1222, 1221, 1210, 1219, 1223, 1216, 1221, 1224, 1214, 1215, + 1220, 1225, 1226, 1223, 1222, 1227, 1227, 1226, 1228, 1229, + 1229, 1230, 1234, 1230, 1232, 1224, 1233, 1232, 1235, 1236, + 1236, 1233, 1237, 1228, 1238, 1238, 1225, 1235, 1239, 1239, + 1240, 1234, 1241, 1242, 1250, 1240, 1243, 1243, 1244, 1246, + 1245, 1247, 1237, 1245, 1261, 1261, 1247, 1248, 1249, 1253, + 1249, 1255, 1250, 1241, 1242, 1257, 1248, 1252, 1244, 1246, + 1252, 1254, 1256, 1257, 1253, 1255, 1254, 1256, 1258, 1259, - 1258, 1259, 1266, 1260, 1263, 1264, 1265, 1261, 1266, 1267, - 1268, 1265, 1269, 1270, 1270, 1271, 1273, 1274, 1267, 1275, - 1276, 1277, 1278, 1269, 1280, 1281, 1276, 1277, 1278, 1268, - 1280, 1273, 1282, 1283, 1284, 1271, 1285, 1274, 1286, 1281, - 1287, 1287, 1275, 1288, 1289, 1281, 1284, 1290, 1293, 1291, - 1285, 1296, 1282, 1283, 1291, 1294, 1286, 1292, 1292, 1298, - 1294, 1297, 47, 1288, 1299, 1290, 1297, 1297, 1300, 1289, - 1296, 1293, 1301, 1299, 1302, 1303, 1300, 1298, 1306, 1304, - 1306, 1307, 1305, 1313, 1304, 1314, 1301, 1304, 1309, 1302, - 1303, 1305, 1310, 1303, 1309, 1307, 1310, 1311, 1312, 1315, + 1260, 1262, 1259, 1258, 1263, 1260, 1262, 1264, 1265, 1270, + 1266, 1268, 1269, 1264, 1270, 1265, 1273, 1268, 1269, 1271, + 1272, 1274, 1263, 1266, 1276, 1271, 1275, 1275, 1278, 1272, + 1279, 1280, 1274, 1281, 1282, 1273, 1283, 1286, 1287, 1281, + 1282, 1285, 1283, 1278, 1276, 1288, 1291, 1285, 1289, 1290, + 1279, 1286, 1292, 1292, 1280, 1293, 1294, 1286, 1287, 1295, + 1289, 1296, 1298, 1290, 1291, 1288, 1296, 1297, 1297, 1299, + 1301, 1304, 1303, 1302, 1299, 1293, 1305, 1295, 1302, 1302, + 1304, 1294, 1306, 1307, 1305, 1298, 1308, 1309, 1310, 1301, + 1303, 1311, 1309, 1311, 1312, 1309, 1306, 1310, 1307, 1314, - 1316, 1317, 1313, 1312, 1312, 1316, 1317, 1318, 1311, 1319, - 1320, 1314, 1321, 1323, 1329, 1320, 1324, 1315, 1325, 1326, - 1326, 1328, 1327, 1331, 1330, 1318, 1327, 1323, 1332, 1319, - 1330, 1333, 1321, 1329, 1324, 1331, 1325, 1334, 1335, 1328, - 1336, 1337, 1338, 1339, 1340, 1333, 1337, 1332, 1339, 1338, - 1343, 1341, 1334, 1335, 1342, 1342, 1345, 1344, 1349, 1336, - 1341, 1347, 1340, 1346, 1346, 1343, 1344, 1347, 1348, 1350, - 1350, 1351, 1349, 1352, 1348, 1353, 1345, 1351, 1354, 1355, - 1356, 1357, 1364, 1354, 1362, 1355, 1356, 1357, 1362, 1352, - 1358, 1358, 1359, 1359, 1361, 1361, 1353, 1363, 1365, 1366, + 1316, 1308, 1315, 1318, 1308, 1314, 1315, 1317, 1312, 1320, + 1321, 1316, 1317, 1317, 1322, 1321, 1323, 1324, 1325, 1322, + 1326, 1328, 1318, 1325, 1329, 1330, 1332, 1320, 1331, 1331, + 1332, 1333, 1334, 1335, 1323, 1328, 1336, 1324, 1337, 1335, + 1326, 1338, 1329, 1330, 1339, 1340, 1341, 1342, 1336, 1333, + 1345, 1334, 1342, 1344, 1343, 1338, 1354, 1337, 1344, 1339, + 1340, 1343, 1346, 1347, 1347, 1341, 1348, 1349, 1345, 1350, + 1354, 1346, 1351, 1351, 1352, 1357, 1349, 1353, 1355, 1355, + 1352, 1348, 1356, 1353, 1358, 1359, 1360, 1361, 1356, 1350, + 1359, 1357, 1360, 1361, 1362, 1363, 1363, 1364, 1364, 1367, - 1364, 1367, 1368, 1369, 1369, 1370, 1363, 1371, 1373, 1368, - 1365, 1374, 1372, 1366, 1375, 1371, 1367, 1372, 1376, 1375, - 1375, 1377, 1373, 1376, 1376, 1370, 1378, 1378, 1379, 1380, - 1374, 1381, 1382, 1383, 1384, 1385, 1386, 1382, 1387, 1388, - 1381, 1377, 1386, 1387, 1389, 1390, 1398, 1379, 1380, 1391, - 1389, 1392, 1383, 1385, 1384, 1391, 1393, 1392, 1394, 1395, - 1396, 1407, 1397, 1408, 1390, 1388, 1399, 1398, 1400, 1400, - 1401, 1402, 1408, 1401, 1407, 1393, 1397, 1394, 1395, 1396, - 1415, 1399, 1409, 1402, 1403, 1403, 1404, 1404, 1405, 1412, - 1406, 1414, 1413, 1405, 1406, 1409, 1410, 1413, 1410, 1421, + 1362, 1366, 1366, 1367, 1368, 1358, 1369, 1370, 1371, 1373, + 1372, 1374, 1374, 1368, 1375, 1376, 1373, 1378, 1379, 1370, + 1382, 1377, 1371, 1376, 1369, 1372, 1377, 1380, 1383, 1383, + 1381, 1378, 1380, 1380, 1375, 1381, 1381, 1379, 1384, 1385, + 1382, 1386, 1387, 1388, 1389, 1390, 1391, 1387, 1392, 1393, + 1386, 1395, 1391, 1392, 1394, 1396, 1403, 1384, 1385, 1397, + 1394, 1396, 1388, 1390, 1389, 1397, 1398, 1399, 1400, 1401, + 1395, 1405, 1405, 52, 1404, 1393, 1402, 1403, 1406, 1407, + 1411, 1406, 1408, 1408, 1411, 1398, 1399, 1400, 1401, 1404, + 1402, 1407, 1409, 1409, 1410, 1412, 1413, 1414, 1415, 1410, - 1415, 1416, 1410, 1417, 1417, 1418, 1414, 1412, 1419, 1420, - 1418, 1422, 1421, 1425, 1419, 1410, 1422, 1416, 1423, 1424, - 1426, 1427, 1423, 1424, 1420, 1428, 1429, 1429, 1431, 1433, - 1434, 1428, 1437, 1425, 1436, 1434, 1435, 1435, 1426, 1443, - 1436, 1427, 1439, 1439, 1441, 1444, 1431, 1441, 1442, 1442, - 1433, 1446, 1437, 1447, 1446, 1443, 1448, 1449, 1449, 1450, - 1451, 1444, 1453, 1452, 1454, 1448, 1456, 1453, 1455, 1455, - 1457, 1458, 1459, 1447, 1450, 1456, 1460, 1460, 1454, 1461, - 1462, 1451, 1452, 1466, 1463, 1464, 1458, 1466, 1457, 1463, - 1465, 1465, 1467, 1461, 1468, 1468, 1469, 1459, 1462, 1470, + 1415, 1417, 1418, 1419, 1415, 1413, 1420, 1418, 1412, 1421, + 1414, 1422, 1422, 1425, 1426, 1423, 1424, 1415, 1419, 1417, + 1423, 1430, 1424, 1432, 1427, 1421, 1420, 1426, 1425, 1427, + 1428, 1429, 1431, 1433, 1428, 1429, 1434, 1434, 1436, 1433, + 1438, 1430, 1439, 1432, 1440, 1440, 1441, 1439, 1442, 1448, + 1431, 1449, 1441, 1444, 1444, 1446, 1436, 1452, 1446, 1447, + 1447, 1438, 1453, 1451, 1455, 1448, 1451, 1449, 1442, 1454, + 1454, 1453, 1456, 1457, 1459, 1458, 1461, 1452, 1462, 1455, + 1458, 1460, 1460, 1463, 1464, 1461, 1465, 1467, 1459, 1466, + 1466, 1473, 1457, 1456, 1468, 1469, 1462, 1475, 1463, 1470, - 1464, 1471, 1472, 1473, 1476, 1471, 1475, 1475, 1473, 1477, - 1470, 1478, 1467, 1479, 1480, 1481, 1482, 1482, 1469, 1483, - 1476, 1472, 1484, 1485, 1483, 1478, 1487, 1477, 1480, 1486, - 1486, 1488, 1479, 1479, 1489, 1487, 1488, 1490, 1492, 1490, - 1481, 1491, 1484, 1485, 1492, 1493, 1491, 1494, 1496, 1497, - 1497, 1498, 1499, 1494, 1489, 1501, 1502, 1505, 1499, 1506, - 1501, 1507, 1496, 1503, 1503, 1493, 1504, 1504, 1510, 1508, - 1498, 1505, 1508, 1509, 1509, 1511, 1507, 1506, 1512, 1513, - 1502, 1516, 1513, 1514, 1516, 1513, 1510, 1511, 1515, 1514, - 1518, 1519, 1520, 1515, 1522, 1522, 1519, 1513, 1512, 1518, + 1469, 1467, 1471, 1471, 1472, 1478, 1465, 1476, 1472, 1464, + 1482, 1473, 1468, 1477, 1470, 1474, 1474, 1477, 1476, 1475, + 1479, 1481, 1481, 1483, 1478, 1479, 1482, 1485, 1484, 1486, + 1487, 1488, 1488, 1489, 1490, 1493, 1491, 1495, 1489, 1492, + 1492, 1483, 1484, 1486, 1493, 1494, 1485, 1485, 1497, 1496, + 1494, 1496, 1498, 1497, 1490, 1487, 1491, 1495, 1498, 1499, + 1500, 1502, 1503, 1503, 1504, 1505, 1500, 1507, 1508, 1509, + 1509, 1505, 1507, 1510, 1510, 1502, 1511, 1512, 1513, 1499, + 1516, 1514, 1517, 1504, 1514, 1515, 1515, 1518, 1526, 47, + 1511, 1520, 1508, 1513, 1517, 1512, 1519, 1520, 1516, 1519, - 1516, 1521, 1523, 1524, 1521, 1525, 1526, 1526, 1523, 1524, - 1525, 1527, 1527, 1528, 1530, 1529, 1531, 1520, 1532, 1528, - 1529, 1533, 1534, 1535, 1536, 1534, 1537, 1530, 1539, 1535, - 1536, 1537, 1538, 1544, 1531, 1540, 1543, 1532, 1538, 1542, - 1540, 1533, 1541, 1541, 1542, 1545, 1546, 1547, 1548, 1549, - 1550, 1539, 1551, 1544, 1543, 1552, 1551, 1552, 1553, 1555, - 1546, 1547, 1548, 1558, 1556, 1545, 1557, 1549, 1559, 1558, - 1560, 1555, 1561, 1562, 1563, 1550, 1556, 1553, 1566, 1557, - 1565, 1565, 1568, 1571, 1567, 1570, 1560, 1562, 1559, 1567, - 1569, 1569, 1561, 1572, 1568, 1563, 1573, 1571, 1566, 1574, + 1521, 1522, 1519, 1524, 1522, 1521, 1525, 1518, 1528, 1528, + 1529, 1525, 1524, 1526, 1519, 1527, 1529, 1530, 1527, 1531, + 1522, 1532, 1532, 1530, 1531, 1533, 1533, 1534, 1536, 1535, + 1537, 1538, 1539, 1534, 1535, 1540, 1541, 1542, 1540, 1543, + 1544, 1536, 1541, 1542, 1543, 1545, 1544, 1549, 1537, 1546, + 1538, 1550, 1539, 1548, 1546, 1547, 1547, 1551, 1548, 1552, + 1553, 1554, 1555, 1556, 1559, 1549, 1557, 1558, 1545, 1558, + 1557, 1550, 1561, 1552, 1553, 1554, 1563, 1551, 1562, 1564, + 1555, 1565, 1566, 1559, 1561, 1564, 1567, 1569, 1556, 1563, + 1562, 1568, 1571, 1571, 1572, 1573, 1576, 1574, 1566, 1577, - 1570, 1575, 1576, 1577, 1578, 1582, 1580, 1583, 1574, 1576, - 1583, 1587, 1577, 1586, 1573, 1577, 1575, 1572, 1584, 1584, - 1578, 1580, 1585, 1585, 1588, 1586, 1580, 1588, 1590, 1587, - 1582, 1589, 1589, 1591, 1592, 1593, 1594, 1595, 1596, 1592, - 1593, 1590, 1597, 1602, 1600, 1598, 1606, 1596, 1604, 1599, - 1600, 1603, 1591, 1595, 1598, 1594, 1605, 1598, 1599, 1601, - 1601, 1597, 1606, 1602, 1603, 1607, 1604, 1610, 1611, 1613, - 1605, 1612, 1612, 1614, 1615, 1616, 1616, 1607, 1618, 1615, - 1619, 1620, 1614, 1618, 1617, 1613, 1611, 1621, 1625, 1622, - 1616, 1626, 1610, 1617, 1622, 1622, 1617, 1624, 1619, 1627, + 1573, 1565, 1575, 1575, 1578, 1568, 1567, 1579, 1569, 1574, + 1580, 1576, 1581, 1577, 1572, 1582, 1584, 1583, 1586, 1580, + 1588, 1589, 1582, 1593, 1589, 1579, 1583, 1581, 1578, 1583, + 1590, 1590, 1584, 1586, 1591, 1591, 1592, 1594, 1586, 1596, + 1594, 1593, 1595, 1595, 1597, 1588, 1598, 1600, 1592, 1599, + 1602, 1598, 1596, 1601, 1599, 1603, 1604, 1608, 1605, 1602, + 1607, 1607, 1609, 1597, 1606, 1604, 1600, 1605, 1604, 1601, + 1606, 1610, 1611, 1613, 1603, 1609, 1612, 1608, 1616, 1617, + 1618, 1618, 1619, 1621, 1620, 1613, 1611, 1623, 1621, 1610, + 1622, 1622, 1612, 1620, 1625, 1624, 1623, 1617, 1619, 1623, - 1628, 1629, 1620, 1625, 1627, 1621, 1628, 1630, 1630, 1631, - 1633, 1624, 1632, 1626, 1634, 1631, 1633, 1632, 1636, 1629, - 1634, 1637, 1638, 1639, 1640, 1641, 1643, 1640, 1638, 1645, - 1646, 1641, 1647, 1640, 1643, 1637, 1639, 1648, 1636, 1649, - 1647, 1650, 1651, 1652, 1653, 1653, 1648, 1654, 1645, 1646, - 1656, 1658, 1649, 1654, 1650, 1655, 1651, 1652, 1657, 1657, - 1659, 1655, 1660, 1656, 1661, 1663, 1653, 1662, 1664, 1668, - 1665, 1658, 1669, 1662, 1667, 1667, 1669, 1661, 1659, 1674, - 1670, 1660, 1676, 1673, 1664, 1670, 1671, 1663, 1665, 1668, - 1672, 1671, 1673, 1677, 1676, 1672, 1678, 1678, 1679, 1680, + 1624, 1626, 1627, 1616, 1628, 1622, 1632, 1630, 1631, 1628, + 1628, 1633, 1625, 1634, 1635, 18, 1633, 1636, 1636, 1634, + 1627, 1630, 1626, 1631, 1637, 1642, 1638, 1639, 1632, 1640, + 1637, 1638, 1635, 1639, 1643, 1640, 1644, 1645, 1646, 1651, + 1647, 1646, 1644, 1649, 1652, 1642, 1647, 1646, 1643, 1653, + 1645, 1649, 1654, 1655, 1656, 1657, 1658, 1653, 1651, 1659, + 1659, 1654, 1660, 1652, 1662, 1661, 1655, 1656, 1660, 1657, + 1658, 1661, 1663, 1663, 1664, 1665, 1666, 1662, 1667, 1667, + 1669, 1659, 1670, 1668, 1671, 1672, 1669, 1674, 1674, 1675, + 1680, 1681, 17, 1665, 1664, 1666, 1668, 1676, 1684, 1680, - 1681, 1683, 1674, 1682, 1682, 1684, 1685, 1688, 1677, 1686, - 1689, 1680, 1684, 1691, 1690, 1683, 1692, 1679, 1685, 1681, - 1690, 1686, 1693, 1694, 1694, 1691, 1688, 1702, 1693, 1695, - 1689, 1699, 1695, 1698, 1692, 1696, 1696, 1700, 1698, 1702, - 1699, 1701, 1701, 1700, 1703, 1704, 1703, 1705, 1704, 1706, - 1707, 1708, 1709, 1710, 1711, 1713, 1714, 1709, 1710, 1716, - 1712, 1714, 1719, 1711, 1715, 1720, 1720, 1705, 1707, 1708, - 1713, 1706, 1712, 1715, 1722, 1717, 1718, 1719, 1721, 1716, - 1717, 1718, 1724, 1725, 1721, 1727, 1715, 1717, 1726, 1728, - 1733, 1728, 1729, 1730, 1730, 1722, 1731, 1731, 1732, 1732, + 1671, 1676, 1677, 1672, 1670, 1678, 1679, 1677, 1683, 1675, + 1678, 1679, 1686, 1684, 1681, 1685, 1685, 1687, 1688, 1690, + 1683, 1689, 1689, 1691, 1692, 1695, 1693, 1696, 1697, 1687, + 1691, 1686, 1699, 1690, 1697, 1700, 1692, 1688, 1693, 1698, + 1712, 1700, 1701, 1701, 1695, 1702, 1706, 1696, 1702, 1705, + 1699, 1698, 1703, 1703, 1705, 1706, 1707, 1708, 1708, 1709, + 1712, 1710, 1707, 1710, 1711, 1713, 1714, 1711, 1715, 1716, + 1717, 1709, 1718, 1719, 1716, 1717, 1720, 1721, 1723, 1722, + 0, 1718, 1721, 1729, 1714, 1719, 1715, 1713, 1722, 1725, + 1724, 1720, 1726, 1728, 1725, 1724, 1727, 1727, 1723, 1728, - 1736, 1724, 1737, 1725, 1726, 1727, 1729, 18, 1729, 1744, - 1733, 1734, 1734, 1735, 1735, 1738, 1738, 1741, 1739, 1740, - 1741, 1736, 1739, 1737, 1743, 1740, 1745, 1744, 1746, 1749, - 1743, 1747, 1745, 1750, 1747, 1748, 1748, 1752, 1750, 1751, - 1751, 1753, 1754, 1755, 1755, 1756, 1758, 1754, 1757, 1749, - 1756, 1759, 1752, 1746, 1757, 1760, 1761, 1762, 1758, 1758, - 1758, 1763, 1753, 1762, 1765, 1758, 1766, 1767, 1769, 1765, - 1765, 1759, 1768, 1760, 1768, 1770, 1761, 1771, 1772, 1769, - 1766, 1763, 1767, 1771, 1773, 1774, 1776, 1772, 1775, 1775, - 1770, 1777, 1777, 1778, 1779, 1780, 1780, 1781, 1781, 1782, + 1731, 1722, 1724, 1732, 1729, 1733, 1734, 1726, 1735, 1740, + 1735, 1736, 1737, 1737, 1738, 1738, 1739, 1739, 1743, 1731, + 1744, 1733, 1753, 1732, 1746, 1736, 1734, 1736, 1746, 1740, + 1741, 1741, 1742, 1742, 1745, 1745, 1747, 1748, 1750, 1743, + 1748, 1744, 1747, 1751, 1750, 1752, 1754, 1753, 1756, 1754, + 1757, 1752, 1755, 1755, 1759, 1757, 1758, 1758, 1760, 1761, + 1763, 1751, 1762, 1762, 1761, 1763, 1764, 1766, 1756, 1759, + 1765, 1769, 1764, 1767, 1768, 1770, 1773, 1769, 1774, 1760, + 1772, 1776, 1765, 1765, 1765, 1772, 1772, 1766, 1777, 1765, + 1773, 1767, 1776, 1774, 1768, 1770, 1775, 1779, 1775, 1778, - 1785, 1785, 1786, 1790, 1773, 1787, 1774, 1793, 1789, 1791, - 1792, 1792, 1776, 1778, 1787, 1791, 1779, 1789, 1794, 1782, - 1797, 1796, 1795, 1799, 1790, 1798, 1798, 1786, 1793, 1795, - 1796, 1800, 1802, 1794, 1803, 1804, 1805, 1802, 1806, 1807, - 1803, 1808, 1808, 1805, 1806, 1807, 1797, 1800, 1809, 1799, - 1810, 1811, 1813, 1809, 1812, 1804, 1815, 1814, 1816, 1810, - 1814, 1817, 1817, 1818, 1813, 1820, 1819, 1821, 1824, 1818, - 1825, 1811, 1819, 1812, 1815, 1822, 1826, 1827, 1827, 1822, - 1828, 1826, 1821, 1829, 1816, 1820, 1831, 1832, 1824, 17, - 1833, 1832, 1825, 1834, 1839, 1822, 1833, 1837, 1829, 1828, + 1780, 1781, 1783, 1777, 1785, 1778, 1779, 1782, 1782, 1784, + 1784, 1786, 1787, 1787, 1788, 1788, 1789, 1792, 1792, 1793, + 1780, 1794, 1781, 1796, 1785, 1797, 1799, 1799, 1783, 1798, + 1794, 1800, 1796, 1786, 1801, 1798, 1789, 1804, 1802, 1803, + 1805, 1805, 1806, 1807, 1793, 1802, 1797, 1810, 1803, 1801, + 1809, 1811, 1800, 1810, 1812, 1809, 1813, 1818, 1814, 1807, + 1817, 1812, 1813, 1804, 1814, 1815, 1815, 1816, 1806, 1817, + 1819, 1811, 1816, 1820, 1822, 1821, 1823, 1818, 1821, 1824, + 1824, 1825, 1826, 1827, 1828, 1820, 1829, 1825, 1826, 1819, + 1829, 1831, 1822, 1832, 1835, 1833, 1834, 1834, 1838, 1828, - 1835, 1835, 1834, 1836, 1840, 1831, 1841, 1836, 1837, 1838, - 1838, 1842, 1843, 1837, 1844, 1839, 1842, 1845, 1840, 1847, - 1846, 1848, 1848, 1845, 1847, 1841, 1849, 1849, 1852, 1850, - 1853, 1854, 1843, 1850, 1844, 1846, 1861, 1852, 1855, 1855, - 1862, 1853, 1857, 1857, 1858, 1862, 1853, 1859, 1860, 1858, - 1858, 1854, 1863, 1859, 1860, 1864, 1866, 1868, 1869, 1867, - 1870, 1864, 1861, 1867, 1863, 1871, 1870, 1872, 1866, 1868, - 1873, 1877, 1874, 1872, 1876, 1873, 1878, 1880, 1881, 1881, - 1880, 1878, 1884, 1869, 1874, 1927, 1876, 1871, 1882, 1882, - 1877, 1883, 1883, 1885, 1886, 1889, 1887, 1888, 1927, 1885, + 1833, 1836, 1823, 1827, 1839, 1841, 1829, 1846, 1839, 1842, + 1842, 1831, 1840, 1835, 1841, 1832, 1836, 1838, 1840, 1843, + 1844, 1845, 1845, 1843, 1847, 1848, 1850, 1849, 1846, 1851, + 1853, 1844, 1849, 1852, 1859, 1854, 1844, 1861, 1847, 1852, + 1854, 1855, 1855, 1859, 1848, 1853, 1850, 1856, 1856, 1851, + 1857, 1860, 1862, 1862, 1857, 1864, 1864, 1861, 1865, 1866, + 1868, 1869, 1860, 1865, 1865, 1866, 1868, 1860, 1870, 1871, + 1872, 1874, 1876, 1870, 1875, 1877, 1872, 1879, 1875, 1878, + 1880, 1871, 1882, 1874, 1876, 1878, 1880, 1869, 1881, 1884, + 1885, 1886, 1888, 1881, 1882, 1888, 1886, 1889, 1889, 1879, - 1886, 1887, 1884, 1888, 1889, 1891, 1893, 1894, 1897, 1893, - 1891, 1895, 1895, 1898, 1900, 1900, 1899, 1901, 1902, 1894, - 1897, 1899, 1903, 1902, 1906, 1898, 1901, 1903, 1904, 1905, - 1905, 1904, 1907, 1908, 1909, 1910, 1913, 1911, 1914, 1910, - 1912, 1907, 1911, 1915, 1906, 1916, 1912, 1914, 1918, 1918, - 1919, 1908, 1925, 1909, 1913, 1920, 1921, 1921, 1923, 1916, - 1918, 1915, 1922, 1922, 1920, 1924, 1926, 1923, 1919, 1930, - 1930, 1926, 1932, 1925, 1933, 1932, 1934, 1924, 1936, 1938, - 1937, 1939, 1940, 1940, 1941, 1938, 1941, 1942, 1942, 1943, - 1933, 1948, 1934, 1936, 1937, 1945, 1945, 1943, 1939, 1946, + 1877, 1884, 1890, 1890, 1891, 1891, 1892, 1893, 1894, 1885, + 1895, 1896, 1897, 1893, 1894, 1895, 1901, 1896, 1899, 1901, + 1902, 1897, 1905, 1899, 1903, 1903, 1892, 1906, 1907, 1908, + 1908, 1909, 1902, 1907, 1905, 1912, 1910, 1911, 1912, 1906, + 1909, 1910, 1911, 1913, 1913, 1914, 1915, 1918, 1916, 1917, + 1920, 1918, 1919, 1921, 1922, 1915, 1920, 1919, 1923, 1924, + 1926, 1926, 1927, 1922, 1933, 1914, 1916, 0, 1917, 1928, + 1931, 1921, 1926, 1924, 1929, 1929, 1923, 1932, 1928, 1931, + 1927, 1930, 1930, 1934, 1935, 1933, 1938, 1938, 1934, 1932, + 1940, 1941, 1942, 1940, 1944, 1946, 1945, 1935, 1947, 1948, - 1946, 1949, 1950, 1951, 1952, 1953, 1955, 1949, 1950, 1956, - 1951, 1954, 1954, 1961, 1948, 1955, 1957, 1958, 1959, 1960, - 1962, 1963, 1965, 1966, 1967, 1953, 1952, 1963, 1957, 1958, - 1956, 1960, 1969, 1959, 1970, 1962, 1967, 1968, 1968, 1961, - 1963, 1971, 1965, 1972, 1971, 1973, 1966, 1975, 1972, 1976, - 1969, 1976, 1975, 1977, 1970, 1978, 1979, 1981, 1983, 1984, - 1978, 1985, 1986, 1979, 1986, 1973, 1981, 1987, 1984, 1990, - 1989, 1977, 1989, 1985, 1991, 1991, 1983, 1992, 1994, 1993, - 1994, 1997, 1995, 1990, 1993, 1996, 1987, 1995, 1998, 1999, - 1996, 2000, 2001, 2002, 2004, 1999, 2000, 2005, 2009, 1997, + 1948, 1946, 1949, 1951, 1949, 1950, 1950, 1941, 1942, 1944, + 1945, 1951, 1953, 1953, 1956, 1947, 1954, 1954, 1957, 1958, + 1959, 1960, 1961, 1963, 1957, 1958, 1964, 1959, 1962, 1962, + 1969, 1973, 1963, 1965, 1966, 1967, 1968, 1956, 1970, 1974, + 1975, 1977, 1961, 1960, 1978, 1965, 1966, 1964, 1968, 1971, + 1967, 1973, 1975, 1970, 1981, 1971, 1969, 1976, 1976, 1977, + 1979, 1980, 1974, 1979, 1978, 1983, 1980, 1984, 1971, 1984, + 1983, 1985, 1986, 1987, 1981, 1989, 1991, 1986, 1992, 1993, + 1987, 1994, 1995, 1994, 1989, 1998, 1997, 1992, 1997, 1985, + 2000, 1993, 1999, 1999, 1991, 2001, 2002, 2003, 2002, 1998, - 2008, 2002, 2012, 1992, 2012, 2001, 2006, 2006, 1998, 2007, - 2007, 2005, 2011, 2004, 2010, 2008, 2013, 2011, 2009, 2014, - 2010, 2015, 2015, 2019, 2016, 2017, 2017, 2014, 2018, 2018, - 2021, 2023, 2019, 2020, 2013, 2014, 2016, 2024, 2020, 2024, - 2023, 2025, 2027, 2023, 2026, 2028, 2030, 2031, 2021, 2026, - 2026, 2027, 2031, 2034, 2032, 2035, 2036, 2028, 2030, 2032, - 2037, 2037, 2025, 2038, 2039, 2036, 2034, 2040, 2044, 2046, - 2041, 2042, 2047, 2045, 2048, 2035, 2055, 2047, 2049, 2048, - 2044, 2038, 2039, 2040, 2041, 2045, 2042, 2049, 2052, 2046, - 2054, 2056, 2057, 2058, 2052, 2059, 2054, 2060, 2060, 2055, + 2001, 1995, 2003, 2004, 2005, 2006, 2007, 2009, 2004, 2008, + 2010, 2012, 2007, 2013, 2008, 2017, 2000, 2016, 2010, 0, + 2009, 2019, 2005, 2014, 2014, 2006, 2019, 2013, 2015, 2015, + 2012, 2018, 2016, 2021, 2020, 2017, 2020, 2018, 2022, 2023, + 2023, 2024, 2025, 2025, 2026, 2026, 2022, 2027, 2029, 2031, + 2028, 2021, 2033, 2024, 2022, 2028, 2027, 2032, 2031, 2032, + 2035, 2031, 2034, 2036, 2038, 2039, 2029, 2034, 2034, 2035, + 2039, 2042, 2040, 2033, 2043, 2036, 2038, 2040, 2044, 2045, + 2045, 2046, 2047, 2049, 2042, 2048, 2052, 2044, 2050, 2054, + 2053, 2055, 2063, 2064, 2043, 2057, 2055, 2049, 2052, 2046, - 2061, 2062, 2062, 2063, 2059, 2067, 2056, 2052, 2064, 2061, - 2057, 2065, 2064, 2066, 2068, 2069, 2065, 2070, 2058, 2068, - 2068, 2069, 2063, 2070, 2072, 2071, 2066, 2067, 2071, 2073, - 2076, 2076, 2072, 2077, 2077, 2078, 2079, 2079, 2080, 2080, - 2081, 2083, 2082, 0, 2078, 2084, 2087, 2083, 2077, 2073, - 2084, 2087, 2081, 2085, 2085, 2086, 2086, 2088, 2090, 2077, - 2082, 2091, 2090, 2088, 2092, 2093, 2095, 2096, 2092, 2097, - 2099, 2098, 2096, 2101, 2103, 2099, 2100, 2102, 2104, 2103, - 2106, 2091, 2105, 2105, 2106, 2093, 2098, 2107, 2108, 2101, - 2109, 2095, 2097, 2108, 2100, 2111, 2110, 2102, 2112, 2113, + 2047, 2048, 2053, 2050, 2057, 2056, 2060, 2062, 2064, 2054, + 2056, 2065, 2060, 2062, 2066, 2063, 2071, 2067, 2068, 2068, + 2072, 2069, 2070, 2070, 2072, 2060, 2067, 2073, 2074, 2065, + 2069, 2075, 2073, 2079, 2077, 2071, 2079, 2076, 2078, 2066, + 2077, 2074, 2076, 2076, 2078, 2081, 2080, 2084, 2084, 2085, + 2085, 2086, 2090, 2075, 2080, 2087, 2087, 2088, 2088, 2089, + 2086, 2091, 2098, 2092, 2085, 2081, 2098, 2091, 2092, 2095, + 2090, 2089, 2093, 2093, 2095, 2085, 2094, 2094, 2096, 2099, + 2101, 2100, 2103, 2104, 2096, 2100, 2105, 2106, 2104, 2107, + 2108, 2111, 2110, 2112, 2107, 2109, 2111, 2113, 2113, 2099, - 2104, 2114, 2107, 2110, 2113, 2115, 2119, 2111, 2116, 2116, - 2118, 2120, 2121, 2122, 2114, 2123, 2109, 2112, 2118, 2124, - 2125, 2126, 2131, 2115, 2128, 2119, 0, 2132, 2130, 2133, - 2120, 2133, 2125, 2132, 2123, 2121, 2131, 2122, 2137, 2128, - 2124, 2130, 2126, 2134, 2134, 2135, 2136, 2138, 2153, 2136, - 2135, 2137, 2139, 2140, 2140, 2141, 2141, 2142, 2144, 2142, - 2147, 2138, 2143, 2143, 2145, 2139, 2146, 2146, 2153, 2147, - 2148, 2148, 2147, 2144, 2149, 2149, 2150, 2145, 2152, 2154, - 2155, 2150, 2158, 2152, 2156, 2156, 2157, 2157, 2159, 2159, - 2160, 2162, 2155, 2161, 2161, 2163, 2164, 2164, 2166, 2154, + 2101, 2114, 2106, 2115, 2117, 2114, 2118, 2103, 2108, 2105, + 2119, 2109, 2110, 2118, 2116, 2112, 2120, 2127, 2115, 2116, + 2121, 2122, 2119, 2123, 2126, 2121, 2124, 2124, 2128, 2129, + 2117, 2130, 2126, 2132, 2122, 2120, 2127, 2131, 2133, 2134, + 2138, 2123, 2136, 2140, 2139, 2184, 2141, 2128, 2141, 2140, + 2133, 2184, 2129, 2138, 2132, 2130, 2131, 2136, 2139, 2143, + 2134, 2142, 2142, 2144, 2143, 2145, 2144, 2146, 2152, 2147, + 2148, 2148, 2149, 2149, 2150, 2153, 2150, 2155, 2145, 2151, + 2151, 2146, 2147, 2152, 2154, 2154, 2155, 2161, 2153, 2155, + 2156, 2156, 2157, 2157, 2158, 2160, 2162, 2163, 2166, 2158, - 2163, 2158, 2165, 2165, 2167, 2168, 2162, 2169, 2160, 2171, - 2172, 2172, 2166, 2167, 2171, 2173, 2174, 2174, 2175, 2168, - 2177, 2176, 2180, 2177, 2178, 2178, 2169, 2176, 2179, 2179, - 2181, 2182, 2183, 2183, 2173, 2185, 2175, 2186, 2187, 2188, - 2178, 2180, 2190, 2188, 2191, 2181, 2189, 2189, 2192, 2191, - 2182, 2193, 2196, 2187, 2198, 2185, 2195, 2195, 2197, 2199, - 2186, 2190, 2200, 2192, 2201, 2197, 2193, 2203, 2198, 2202, - 2202, 2204, 2196, 2204, 2207, 2205, 2203, 2199, 2205, 2208, - 2200, 2210, 2209, 2211, 2208, 2214, 2207, 2209, 2212, 2213, - 2201, 2220, 2216, 2205, 2213, 2205, 2211, 2216, 2217, 2218, + 2160, 2164, 2164, 2165, 2165, 2167, 2167, 2161, 2168, 2163, + 2169, 2169, 2170, 2171, 2172, 2172, 2162, 2166, 2171, 2173, + 2173, 2174, 2175, 2176, 2177, 2179, 2168, 2170, 2180, 2180, + 2179, 2175, 2181, 2182, 2182, 2174, 2183, 2176, 2185, 2186, + 2186, 2185, 2188, 2177, 2187, 2187, 2190, 2189, 2191, 2191, + 2193, 2181, 2194, 2195, 2183, 2186, 2196, 2197, 2197, 2198, + 2196, 2188, 2189, 2204, 2199, 2190, 2200, 2201, 2195, 2199, + 2193, 2203, 2203, 2205, 2206, 2194, 2207, 2208, 2198, 2209, + 2205, 2200, 2201, 2204, 2210, 2210, 2215, 2211, 2206, 2212, + 2213, 2212, 2216, 2213, 2207, 2208, 2211, 2216, 2215, 2217, - 2222, 2219, 2221, 2217, 2224, 2222, 2210, 2219, 2221, 2212, - 2223, 2214, 2220, 2225, 2218, 2223, 2226, 2236, 2227, 2226, - 2231, 2228, 2229, 2230, 2234, 0, 2225, 2227, 2234, 2224, - 2228, 2229, 2230, 2232, 2231, 2233, 2238, 2236, 2240, 2232, - 2243, 2233, 2239, 2239, 2240, 2238, 2241, 2241, 2242, 2245, - 2246, 2247, 2247, 2242, 2248, 2241, 2251, 2252, 2249, 2253, - 2243, 2256, 2243, 2254, 2256, 2245, 2246, 2249, 2251, 2248, - 2258, 2257, 2259, 2252, 2253, 2254, 2257, 2260, 2260, 2261, - 2261, 2263, 2263, 2264, 2259, 2266, 2264, 2265, 2267, 2268, - 2258, 2266, 2265, 2270, 2267, 2269, 2269, 2272, 2268, 2271, + 2218, 2219, 2220, 2222, 2217, 2209, 2221, 2224, 2213, 2226, + 2213, 2221, 2224, 2225, 2219, 2227, 2228, 2230, 2225, 2232, + 2229, 2227, 2230, 2220, 2226, 2218, 2229, 2231, 2233, 2222, + 2234, 2235, 2231, 2234, 2236, 2239, 2237, 2228, 2238, 2244, + 2235, 2233, 2240, 2236, 2232, 2237, 2241, 2238, 2240, 2239, + 2242, 2246, 2241, 2250, 2242, 2247, 2247, 2248, 2250, 2244, + 2246, 2249, 2249, 2248, 2251, 2253, 2254, 2255, 2255, 2257, + 2249, 2259, 2256, 2260, 2264, 2261, 2262, 2264, 2257, 2266, + 2265, 2253, 2254, 2259, 2251, 2265, 2251, 2256, 2262, 2260, + 2261, 2267, 2268, 2268, 2269, 2269, 2271, 2271, 2272, 2266, - 2271, 2273, 2274, 2275, 2275, 2276, 2277, 2270, 2278, 2272, - 2280, 2276, 2286, 2278, 2280, 2273, 2281, 2282, 2282, 2281, - 2277, 2274, 2283, 2284, 2285, 2289, 2287, 2283, 2284, 2284, - 2287, 2291, 2286, 2285, 2288, 2288, 2291, 2292, 2289, 2293, - 2294, 2295, 2296, 2297, 2298, 2295, 2299, 2300, 2297, 2301, - 2298, 2302, 2299, 2303, 2294, 2304, 0, 2292, 2303, 2293, - 2306, 2307, 2296, 2310, 2308, 2300, 2313, 2309, 2301, 2308, - 2302, 2310, 2306, 2309, 2315, 2313, 2304, 2307, 2311, 2318, - 2311, 2316, 2316, 2317, 2319, 2319, 2317, 2322, 2315, 2323, - 2324, 2322, 2325, 2325, 2326, 2323, 2329, 2329, 2331, 2333, + 2273, 2272, 2274, 2267, 2275, 2273, 2276, 2278, 2274, 2281, + 2275, 2277, 2277, 2279, 2279, 2276, 2280, 2282, 2283, 2283, + 2284, 2278, 2286, 2281, 2285, 2288, 2284, 2286, 2280, 2288, + 2289, 2290, 2290, 2289, 2291, 2292, 2282, 2293, 2285, 2291, + 2292, 2292, 2294, 2295, 2296, 2296, 2293, 2295, 2297, 2299, + 2300, 2301, 2302, 2303, 2299, 2304, 2308, 2303, 2305, 2306, + 2309, 2297, 2294, 2305, 2310, 2306, 2302, 2307, 2312, 2314, + 2300, 2301, 2311, 2307, 2308, 2304, 2315, 2311, 2317, 2309, + 2316, 2314, 2318, 2310, 2317, 2316, 2319, 2321, 2319, 2312, + 2318, 2323, 2315, 2324, 2324, 2325, 2321, 2326, 2325, 2327, - 2338, 2334, 2324, 2326, 2337, 2318, 2339, 2340, 2347, 2337, - 2348, 2339, 2340, 2333, 2341, 2341, 2331, 2334, 2343, 2343, - 2349, 2345, 2346, 2346, 2347, 2349, 2338, 2345, 2351, 2352, - 2353, 2353, 2348, 2355, 2356, 2357, 2358, 2360, 2360, 2362, - 2356, 2352, 2355, 2361, 2363, 2367, 2361, 2351, 2365, 2365, - 2367, 2358, 2368, 2357, 2366, 2366, 2369, 2372, 2362, 2370, - 2373, 2371, 2363, 2371, 2370, 2369, 2374, 2375, 2376, 2383, - 2368, 2372, 2375, 0, 2373, 2377, 2378, 2378, 2374, 2382, - 2377, 2379, 2379, 2380, 2380, 2381, 2381, 2383, 2376, 2384, - 2387, 2382, 2385, 2385, 2384, 2386, 2386, 2388, 2389, 2390, + 2327, 2331, 2330, 2332, 2334, 2323, 2330, 2331, 2333, 2333, + 2337, 2337, 2339, 2334, 2341, 2332, 2342, 2345, 2346, 2347, + 2348, 2356, 2345, 2326, 2347, 2348, 2349, 2349, 2341, 2353, + 2339, 2355, 2342, 2351, 2351, 2353, 2354, 2354, 2359, 2360, + 2357, 2361, 2361, 2356, 2346, 2357, 2363, 2355, 2364, 2365, + 2366, 2360, 2368, 2368, 2364, 2363, 2369, 2359, 2370, 2369, + 2371, 2373, 2373, 2374, 2374, 2366, 2375, 2365, 2376, 2378, + 2377, 2375, 2382, 2379, 2378, 2379, 2380, 2370, 2371, 2377, + 2381, 2384, 2383, 2385, 2382, 2391, 2376, 2383, 2385, 0, + 2380, 2386, 2386, 2390, 2381, 2387, 2387, 2388, 2388, 2389, - 2391, 2391, 2387, 2392, 2393, 2393, 2394, 2394, 2395, 2388, - 2397, 2396, 2398, 2399, 2401, 2390, 2400, 2397, 2389, 2395, - 2402, 2400, 2392, 2396, 2398, 2403, 2403, 2404, 2405, 2406, - 2407, 2408, 2409, 2399, 2401, 2410, 2404, 2411, 2411, 2412, - 2402, 2413, 2414, 2407, 2416, 2417, 2409, 2410, 2412, 2406, - 2418, 2420, 2423, 2423, 2405, 2408, 2413, 2414, 2419, 2421, - 2430, 2419, 2416, 2422, 2421, 2420, 2432, 2417, 2422, 2424, - 2424, 2425, 2425, 2418, 2427, 2427, 2429, 2429, 2430, 2431, - 2433, 2435, 2436, 2437, 2438, 2432, 2440, 2439, 2442, 2441, - 2431, 2441, 2443, 2444, 2448, 2433, 2439, 2445, 2445, 2450, + 2389, 2384, 2392, 2391, 2395, 2390, 2396, 2392, 2393, 2393, + 2394, 2394, 2397, 2398, 2399, 2399, 2395, 2400, 2396, 2401, + 2401, 2402, 2402, 2403, 2405, 2404, 2406, 2407, 2408, 2398, + 2409, 2405, 2397, 2408, 2403, 2410, 2400, 2404, 2406, 2411, + 2411, 2413, 2412, 2414, 2415, 2416, 2417, 2407, 2424, 2418, + 2409, 2412, 2419, 2419, 2425, 2410, 2420, 2415, 2421, 2422, + 2417, 2418, 2426, 2414, 2428, 2420, 2424, 2413, 2427, 2416, + 2429, 2427, 2430, 2421, 2422, 2429, 2425, 2430, 2428, 2431, + 2431, 2432, 2432, 2433, 2433, 2426, 2435, 2435, 2437, 2437, + 2438, 2439, 2440, 2443, 2441, 2445, 2444, 2447, 2446, 2448, - 2436, 2435, 2447, 2447, 2438, 2437, 2440, 2451, 2442, 2448, - 2443, 2444, 2452, 2452, 2454, 2456, 2451, 2455, 2455, 2457, - 2458, 2450, 2460, 2454, 2459, 2461, 2462, 2458, 2463, 2464, - 2464, 2465, 2465, 2456, 2466, 2467, 2473, 2457, 2468, 2459, - 2460, 2472, 2462, 2461, 2468, 2469, 2469, 2463, 2470, 2470, - 2471, 2473, 2474, 2467, 2466, 2475, 2471, 2476, 2477, 2472, - 2478, 2479, 2476, 2480, 2485, 2480, 2479, 2481, 2481, 2475, - 2482, 2474, 2482, 2483, 2483, 2487, 2488, 2489, 2477, 2490, - 2478, 2491, 2492, 2485, 2487, 2493, 2491, 2496, 2497, 2489, - 2499, 2497, 2498, 2498, 2500, 2488, 2501, 2501, 2504, 2490, + 2450, 2449, 2439, 2449, 2451, 2452, 2447, 2458, 2438, 2441, + 2464, 2440, 2456, 2443, 2444, 2453, 2453, 2445, 2446, 2448, + 2450, 2459, 2451, 2452, 2455, 2455, 2462, 2456, 2464, 2458, + 2459, 2460, 2460, 2463, 2463, 2462, 2465, 2466, 2467, 2468, + 2469, 2471, 2474, 2470, 2466, 2472, 2472, 2473, 2473, 2475, + 2476, 2477, 2477, 2467, 2465, 2479, 2476, 2468, 2469, 2470, + 2471, 2479, 2474, 2478, 2478, 2480, 2481, 2475, 2482, 2484, + 2483, 2485, 2486, 2487, 2484, 2488, 2493, 2488, 2487, 2489, + 2489, 2481, 2496, 2480, 2483, 2495, 2490, 2482, 2490, 2491, + 2491, 2485, 2486, 2497, 2495, 2493, 2498, 2499, 2500, 2507, - 2506, 2506, 2492, 2507, 2493, 2499, 2502, 2496, 2509, 2510, - 2502, 2505, 2500, 2504, 2511, 2505, 2507, 2512, 2512, 2514, - 2516, 2515, 2518, 2509, 2516, 2517, 2517, 2519, 2519, 2510, - 2515, 2514, 2520, 2521, 2511, 2522, 2523, 2520, 2524, 2524, - 2530, 2518, 2521, 2529, 2529, 2531, 2531, 2532, 2523, 2534, - 2533, 2522, 2535, 2536, 2536, 2537, 2539, 2539, 2534, 2542, - 2532, 2535, 2530, 2533, 2542, 2544, 2543, 2545, 2546, 2547, - 2537, 2543, 2545, 2548, 2551, 2549, 2546, 2554, 0, 2544, - 2552, 2553, 2548, 2549, 2560, 2552, 2553, 2561, 2547, 2551, - 2555, 2555, 2554, 2556, 2556, 2557, 2557, 2558, 2559, 2565, + 2501, 2496, 2499, 2504, 2505, 2497, 2508, 2505, 2506, 2506, + 2509, 2509, 2512, 2510, 2507, 2517, 2498, 2510, 2500, 2501, + 2515, 2513, 2518, 2504, 2508, 2513, 2519, 2512, 2514, 2514, + 2517, 2520, 2520, 2515, 2523, 2522, 2524, 2525, 2525, 2526, + 2524, 2529, 2518, 2523, 2527, 2527, 2519, 2522, 2528, 2530, + 2529, 2531, 2538, 2528, 2532, 2532, 2537, 2537, 2526, 2539, + 2539, 2542, 2540, 2531, 2541, 2530, 2545, 2543, 2544, 2544, + 2542, 2547, 2547, 2550, 2538, 2540, 2543, 2541, 2550, 2551, + 2552, 2545, 2553, 2554, 2551, 2555, 2556, 2553, 2557, 0, + 2559, 2554, 2560, 2561, 2552, 2556, 2557, 2560, 2561, 2562, - 2562, 2588, 2560, 2559, 2558, 2561, 2562, 2563, 2564, 2564, - 2566, 2571, 2563, 2588, 2565, 2566, 2567, 2567, 2568, 2568, - 2572, 2572, 2573, 2574, 2571, 2573, 2575, 2576, 2574, 2574, - 2577, 2575, 2576, 2578, 2579, 2580, 2581, 2582, 2579, 2578, - 2580, 2583, 2584, 2590, 2577, 2581, 2587, 2585, 2586, 2583, - 2591, 2587, 2582, 2585, 2586, 2591, 2594, 2592, 2598, 2590, - 2592, 2596, 2597, 2584, 2599, 2600, 2596, 2597, 2594, 2601, - 2602, 2602, 2603, 2606, 2600, 2611, 2598, 2599, 2601, 2607, - 2608, 2603, 2612, 2615, 2613, 2607, 2608, 2614, 2614, 2616, - 2615, 2606, 2617, 2620, 2611, 2618, 2619, 2619, 2622, 2624, + 2563, 2563, 2564, 2564, 2555, 2559, 2565, 2565, 2566, 2568, + 2569, 2567, 2570, 0, 2562, 2566, 2567, 2571, 2570, 2572, + 2572, 2573, 2571, 0, 2574, 2575, 2575, 2568, 2569, 2574, + 2576, 2576, 2579, 2580, 2580, 2581, 2573, 2582, 2581, 2583, + 2585, 2584, 2582, 2582, 2583, 2579, 2584, 2586, 2587, 2589, + 2588, 2590, 2587, 2586, 2585, 2588, 2591, 2592, 2589, 2593, + 2596, 2594, 2606, 2595, 2591, 2593, 2590, 2594, 2595, 2598, + 2599, 2600, 2596, 2607, 2600, 2599, 2602, 2604, 2592, 2605, + 2606, 2608, 2604, 2609, 2605, 2598, 2607, 2611, 2602, 2614, + 2608, 2615, 2609, 2610, 2610, 2616, 2611, 2615, 2619, 2620, - 2625, 2617, 2612, 2613, 2625, 2626, 2626, 2627, 2616, 2628, - 2618, 2629, 2620, 2622, 2630, 2628, 2632, 2629, 2633, 2624, - 2630, 2631, 2631, 2633, 2632, 2635, 2636, 2638, 2639, 2640, - 2643, 2638, 2627, 2653, 2635, 2642, 2642, 2644, 2644, 2636, - 2645, 2645, 2639, 2648, 2640, 2647, 2647, 2648, 2643, 2649, - 2651, 2651, 2654, 2653, 2649, 2655, 2656, 2654, 2658, 2659, - 2659, 2656, 2656, 2661, 2661, 2662, 2662, 2655, 2663, 2664, - 2666, 2663, 2668, 2669, 2669, 2670, 2670, 2674, 2658, 2671, - 2671, 2672, 2664, 2673, 2673, 2675, 2676, 2677, 2666, 2684, - 2674, 2685, 2668, 2677, 2678, 2678, 2672, 2679, 2686, 2683, + 2625, 2616, 2621, 2622, 2622, 2623, 2624, 2614, 2626, 2625, + 2627, 2627, 2623, 2628, 2630, 2632, 2633, 2619, 2635, 2620, + 2633, 2621, 2636, 2626, 2637, 2624, 2634, 2634, 2636, 2630, + 2637, 2638, 2628, 2639, 2639, 2632, 2640, 2638, 2643, 2644, + 2641, 2647, 2646, 2635, 2640, 2641, 2646, 2643, 2648, 2650, + 2650, 2651, 2644, 2652, 2652, 2647, 2653, 2653, 2655, 2655, + 2656, 2657, 2661, 2648, 2656, 2662, 2657, 2659, 2659, 2651, + 2662, 2663, 2664, 2666, 2667, 2667, 2676, 2664, 2664, 2669, + 2669, 2672, 2661, 2663, 2670, 2670, 2671, 2674, 2680, 2671, + 2677, 2677, 2683, 2666, 2672, 2682, 2676, 2678, 2678, 2679, - 2676, 2679, 2687, 2675, 2683, 2683, 2689, 2688, 2687, 2699, - 2690, 2685, 2684, 2688, 2690, 2691, 2691, 2694, 2686, 2696, - 2697, 2700, 2694, 2697, 2700, 2701, 2701, 2696, 2702, 2704, - 2703, 2689, 2705, 2867, 2699, 2703, 2706, 2707, 2707, 2708, - 2709, 2710, 2711, 2709, 2867, 2702, 2702, 2704, 2712, 2715, - 2706, 2709, 2705, 2708, 2713, 2710, 2712, 2713, 2714, 2716, - 2716, 2711, 2721, 2714, 2714, 2717, 2717, 2723, 2715, 2718, - 2718, 2719, 2719, 2720, 2720, 2722, 2724, 2725, 2721, 2726, - 2722, 2727, 2725, 2728, 2729, 2730, 2727, 2723, 2732, 2732, - 2733, 2733, 2728, 2734, 2735, 3114, 2734, 3114, 2726, 2737, + 2679, 2681, 2681, 2680, 2684, 2674, 2685, 2687, 2682, 2692, + 2683, 2687, 2685, 2686, 2686, 2691, 2693, 2694, 2684, 2695, + 2691, 2691, 2696, 2697, 2702, 2695, 2698, 2704, 2696, 2702, + 2698, 2707, 2692, 2699, 2699, 2704, 2693, 2694, 2705, 2708, + 2710, 2705, 2708, 2709, 2709, 2711, 2712, 2713, 2697, 2714, + 2711, 2715, 2715, 2719, 2716, 2718, 2707, 2710, 2710, 2717, + 2723, 2730, 2717, 2714, 2712, 2720, 2730, 2713, 2716, 2718, + 2717, 2721, 2719, 2720, 2721, 2722, 2724, 2724, 2729, 2723, + 2722, 2722, 2725, 2725, 2726, 2726, 2727, 2727, 2728, 2728, + 2731, 2732, 2733, 2734, 2729, 2735, 2736, 2733, 2737, 2738, - 2737, 2738, 2724, 2747, 2729, 2730, 2739, 2739, 2738, 2740, - 2742, 2742, 2735, 2743, 2740, 2744, 2745, 2748, 2748, 2749, - 2750, 2747, 2743, 2749, 2744, 2745, 2751, 2752, 2754, 2750, - 2753, 2755, 2752, 2752, 2759, 2755, 2763, 2754, 2764, 2759, - 2765, 2751, 2767, 2753, 2760, 2760, 2762, 2762, 2768, 2771, - 2763, 2767, 2772, 2773, 2776, 2778, 2774, 0, 2765, 2780, - 2768, 2772, 2774, 2764, 2780, 2781, 2776, 2782, 2782, 2783, - 2781, 2792, 2785, 2773, 2771, 2793, 2778, 2785, 2783, 2786, - 2786, 2788, 2788, 2786, 2789, 2789, 2790, 2790, 2791, 2800, - 2794, 2792, 2796, 2801, 2793, 2794, 2797, 2791, 2796, 2798, + 2735, 2740, 2740, 2741, 2741, 2736, 2742, 2743, 2746, 2742, + 2731, 2748, 2734, 2745, 2745, 2746, 2748, 2732, 2737, 2738, + 2747, 2747, 2750, 2750, 2751, 2743, 2752, 2753, 2755, 2756, + 2756, 2758, 2759, 2751, 2757, 2752, 2753, 2760, 2757, 2761, + 2758, 2762, 2760, 2760, 2763, 2771, 2755, 2759, 2763, 2767, + 2762, 2772, 2761, 2773, 2767, 2768, 2768, 2770, 2770, 2771, + 2775, 2776, 2779, 2780, 2781, 2784, 2801, 2786, 2782, 2775, + 2788, 2773, 2780, 2776, 2782, 2788, 2772, 2784, 2789, 2790, + 2790, 2791, 2800, 2789, 2781, 2801, 2793, 2779, 2786, 0, + 2791, 2793, 2794, 2794, 2796, 2796, 2794, 2797, 2797, 2798, - 2802, 2797, 2799, 2799, 2798, 2801, 2803, 2800, 2804, 2805, - 2806, 2803, 2807, 2807, 2809, 2805, 2814, 2810, 2809, 2811, - 2813, 2802, 2810, 2815, 2811, 2816, 2804, 2812, 2812, 2818, - 2818, 2814, 2822, 2820, 2821, 2806, 2822, 2824, 2815, 2813, - 2823, 2825, 2826, 2827, 2830, 2816, 2820, 2821, 2827, 2823, - 2826, 2828, 2828, 2824, 2829, 2831, 2832, 2832, 2833, 2839, - 2825, 2850, 2830, 2829, 2836, 2836, 2837, 2837, 2841, 2841, - 2843, 2844, 2845, 2846, 2848, 2848, 2849, 2833, 2846, 2851, - 2839, 2831, 2853, 2853, 2850, 2854, 2843, 2844, 2845, 2855, - 2856, 2856, 2859, 2862, 2860, 2871, 2849, 2861, 2851, 2854, + 2798, 2799, 2800, 2802, 2805, 2804, 2808, 2806, 2802, 2805, + 2799, 2804, 2806, 2807, 2807, 2809, 2810, 2811, 2812, 2813, + 2814, 2821, 2811, 2824, 2808, 2813, 2817, 2809, 2815, 2815, + 2817, 2820, 2820, 2818, 2819, 2822, 2812, 2810, 2818, 2819, + 2821, 2823, 2828, 2824, 2829, 2814, 2826, 2826, 2830, 2831, + 2822, 2832, 2830, 2833, 2834, 2828, 2823, 2829, 2831, 2835, + 2836, 2836, 2834, 2838, 2835, 2837, 2839, 2832, 2840, 2840, + 2841, 2851, 2833, 2847, 2837, 2844, 2844, 2845, 2845, 2849, + 2849, 2838, 2852, 2853, 2857, 2854, 2858, 2851, 2859, 2841, + 2854, 2862, 2839, 2863, 2847, 2856, 2856, 2867, 2852, 2853, - 2860, 2865, 2861, 2863, 2863, 2864, 2864, 2868, 2855, 2866, - 2866, 2869, 2859, 2870, 2871, 2862, 2868, 2873, 2872, 2870, - 2880, 2865, 2874, 2874, 2875, 2876, 2876, 2875, 2881, 2866, - 2872, 2869, 2880, 2882, 2883, 2883, 2885, 2873, 2884, 2882, - 2886, 2884, 2885, 2891, 2888, 2889, 2889, 2890, 2881, 2888, - 2892, 2893, 2890, 2894, 2894, 2896, 2892, 2897, 2886, 2898, - 2899, 2901, 2891, 2900, 2900, 2903, 2902, 2896, 2893, 2893, - 2902, 2905, 2905, 2899, 2903, 2897, 2906, 2906, 2907, 2908, - 2901, 2909, 2913, 2907, 2898, 2914, 2909, 2910, 2910, 2911, - 2911, 2912, 2912, 2908, 2915, 2913, 2916, 2918, 2918, 2921, + 2861, 2861, 2864, 2864, 2857, 2862, 2869, 2859, 2868, 2858, + 2870, 2869, 2863, 2873, 2868, 2871, 2871, 2867, 2872, 2872, + 2874, 2874, 2876, 2875, 2877, 2880, 2879, 2881, 0, 2878, + 2889, 2876, 2870, 2873, 2875, 2878, 2888, 2880, 2882, 2882, + 2874, 2884, 2884, 2883, 2877, 2879, 2883, 2881, 2888, 2890, + 2889, 2891, 2891, 2892, 2893, 2890, 2892, 2894, 2896, 2898, + 2893, 2897, 2897, 2896, 2898, 2899, 2900, 2904, 2901, 2902, + 2902, 2905, 2900, 2906, 2907, 2894, 2908, 2908, 2909, 2904, + 0, 2911, 2913, 2913, 2899, 2901, 2901, 2907, 2910, 2905, + 2911, 2915, 2910, 2914, 2914, 2916, 2915, 2909, 2906, 2917, - 2915, 2916, 2923, 2924, 2925, 2926, 2926, 2928, 2928, 2929, - 2930, 2914, 2931, 2932, 2932, 2933, 2933, 2936, 2921, 2937, - 0, 2931, 2935, 2929, 2923, 2924, 2925, 2938, 2935, 2945, - 2930, 2952, 2938, 2941, 2941, 2943, 2943, 2936, 2937, 2944, - 2946, 2947, 2948, 2945, 2944, 2953, 2946, 2949, 2949, 2950, - 2948, 2952, 2954, 2947, 2950, 2955, 2956, 2954, 2958, 2959, - 2960, 2961, 2956, 2964, 2963, 2953, 2958, 2955, 2965, 2966, - 2967, 2969, 2970, 2974, 2976, 2967, 2969, 2971, 2959, 2964, - 2960, 2961, 2963, 2971, 2972, 2965, 2965, 2976, 0, 2972, - 2966, 2975, 2970, 2974, 2979, 2979, 2975, 2980, 2980, 2981, + 2918, 2918, 2919, 2919, 2917, 2920, 2920, 2921, 2922, 2916, + 2923, 2929, 2924, 2926, 2926, 2931, 2923, 2924, 2932, 2933, + 2921, 2934, 2934, 2936, 2936, 2937, 2938, 2939, 2940, 2940, + 2929, 2941, 2941, 2944, 2922, 2945, 2939, 2931, 2943, 2937, + 2932, 2933, 2946, 0, 2943, 2953, 2938, 2946, 2949, 2949, + 2951, 2951, 2952, 2944, 2945, 2954, 2955, 2952, 2956, 2953, + 2958, 2954, 2957, 2957, 2960, 2958, 2956, 2961, 2955, 2962, + 2963, 2964, 2966, 2967, 2962, 2968, 2969, 2964, 2972, 2971, + 2966, 2973, 2963, 2974, 2960, 2975, 2977, 2961, 2978, 2982, + 2975, 2977, 2967, 0, 2972, 2968, 2969, 2971, 2973, 2973, - 2985, 2985, 2986, 2981, 2987, 2988, 2988, 2986, 2990, 2990, - 2991, 2991, 2994, 2991, 2992, 2992, 2994, 2992, 2993, 2993, - 2997, 2993, 2998, 2987, 2996, 2996, 3001, 3002, 3003, 3004, - 3004, 3007, 3008, 3003, 3010, 3011, 2998, 3009, 2997, 3008, - 3013, 3009, 3014, 3010, 3015, 3015, 3001, 3002, 3016, 3016, - 3011, 3014, 3017, 3017, 3018, 3019, 3007, 3021, 3013, 3020, - 3019, 3022, 3021, 3021, 3023, 3024, 3025, 3022, 3020, 3018, - 3026, 3020, 3027, 3028, 3213, 3026, 3030, 3027, 3029, 3029, - 3024, 3213, 3030, 3035, 3031, 3032, 3032, 3025, 3035, 3023, - 3031, 0, 3028, 3033, 3033, 3034, 3034, 3038, 3038, 3040, + 2979, 2984, 2980, 2995, 2974, 2983, 2979, 2980, 2978, 2982, + 2983, 2987, 2987, 2989, 2984, 2988, 2988, 2989, 2993, 2993, + 2994, 0, 2995, 2996, 2996, 2994, 2998, 2998, 2999, 2999, + 3002, 2999, 3000, 3000, 3002, 3000, 3001, 3001, 3005, 3001, + 3004, 3004, 3009, 3006, 3010, 3011, 3012, 3012, 3015, 3017, + 3011, 3016, 3018, 3017, 3019, 0, 3005, 3006, 3016, 3021, + 3026, 3018, 3009, 3022, 3010, 3023, 3023, 3024, 3024, 3019, + 3025, 3025, 3022, 3015, 3027, 3026, 3028, 3021, 3029, 3027, + 3030, 3031, 3032, 3029, 3029, 3028, 3030, 3033, 3028, 3034, + 3035, 3036, 3037, 3037, 3034, 3035, 3038, 3032, 3039, 3040, - 3040, 3041, 3044, 3044, 3045, 3045, 3046, 3046, 3047, 3047, - 3041, 3048, 3048, 3049, 3049, 3050, 3050, 3052, 3053, 3053, - 3054, 3055, 3056, 3060, 3058, 3062, 3052, 3059, 3059, 3054, - 3064, 3061, 3068, 3055, 3063, 3063, 3070, 3062, 3060, 3065, - 3065, 3072, 3056, 3058, 3061, 3064, 3069, 3071, 3071, 3069, - 3068, 3074, 3075, 3076, 3074, 3077, 3078, 3080, 3075, 3072, - 3077, 3079, 3070, 3082, 3090, 3083, 3087, 3076, 3098, 3082, - 3100, 3098, 3105, 3080, 3083, 3078, 3101, 3101, 3107, 3079, - 3106, 3087, 3107, 3100, 3102, 3102, 3103, 3103, 3108, 3106, - 3090, 3109, 3111, 3112, 3113, 3105, 3115, 3116, 3116, 3113, + 3040, 3083, 3038, 3090, 3039, 0, 3031, 3083, 3033, 3090, + 3036, 3041, 3041, 3042, 3042, 3043, 3046, 3046, 3048, 3048, + 3043, 3049, 3052, 3052, 3053, 3053, 3054, 3054, 3055, 3055, + 3049, 3056, 3056, 3057, 3057, 3058, 3058, 3060, 3061, 3061, + 3062, 3063, 3064, 3068, 3066, 3070, 3060, 3067, 3067, 3062, + 3072, 3069, 3076, 3063, 3071, 3071, 3078, 3070, 3068, 3073, + 3073, 3080, 3064, 3066, 3069, 3072, 3077, 3079, 3079, 3077, + 3076, 3082, 3084, 3085, 3082, 3086, 3088, 3087, 3085, 3080, + 3091, 3095, 3078, 3098, 3106, 3108, 3084, 3106, 3113, 3091, + 3109, 3109, 3088, 3116, 3086, 3087, 3095, 3114, 3108, 3110, - 3117, 3118, 3120, 3119, 3112, 3109, 3121, 3122, 3108, 3125, - 3123, 3115, 3124, 3117, 3127, 3111, 3133, 3135, 3120, 3123, - 3118, 3119, 3122, 3126, 3124, 3132, 3135, 3128, 3126, 3140, - 3125, 3121, 3128, 3141, 3127, 3145, 3133, 3134, 3134, 3132, - 3136, 3136, 3137, 3137, 3138, 3138, 3139, 3139, 3140, 3142, - 3143, 3144, 3142, 3141, 3146, 3143, 3144, 3147, 3148, 3149, - 3145, 3150, 3151, 3147, 3152, 3152, 3150, 3153, 3153, 3146, - 3154, 3149, 3148, 3155, 3156, 3156, 3158, 3160, 3163, 3163, - 3164, 3164, 3151, 3166, 3167, 3154, 3165, 3168, 3170, 3169, - 3167, 3158, 3155, 3168, 3165, 3160, 3171, 3173, 3173, 3172, + 3110, 3111, 3111, 3115, 3117, 3119, 3114, 3115, 3120, 3098, + 3121, 3113, 3122, 3116, 3122, 3121, 3123, 3125, 3117, 3120, + 3124, 3124, 3126, 3128, 3127, 3129, 3131, 3133, 3119, 3130, + 3125, 3123, 3134, 3132, 3135, 3131, 3141, 3134, 3136, 3128, + 3143, 3126, 3127, 3136, 3130, 3132, 3140, 3149, 3133, 3143, + 3129, 3142, 3142, 3148, 3135, 3153, 3141, 3144, 3144, 0, + 3140, 3145, 3145, 3146, 3146, 3147, 3147, 3149, 3150, 3151, + 3152, 3150, 3148, 3154, 3151, 3152, 3155, 3156, 3157, 3158, + 3153, 3159, 3155, 3162, 3158, 3160, 3160, 3163, 3154, 3166, + 3157, 3156, 3161, 3161, 3164, 3164, 3168, 3173, 3162, 3171, - 3177, 3170, 3166, 3169, 3172, 3174, 3174, 3178, 3180, 3181, - 3183, 3184, 3185, 3181, 3194, 3171, 3184, 3188, 3189, 3186, - 3187, 3177, 3180, 3189, 3190, 3191, 3191, 3178, 3195, 3190, - 3183, 3185, 3186, 3187, 3194, 3196, 3188, 3197, 3197, 3198, - 3201, 3199, 3200, 3200, 3198, 3201, 3195, 3199, 3202, 3204, - 3203, 3205, 3212, 3202, 3196, 3203, 3208, 3205, 3207, 3207, - 3211, 3208, 3209, 3209, 3211, 3214, 3215, 3216, 3204, 3217, - 3218, 3212, 3225, 3216, 3220, 3220, 3222, 3222, 3223, 3226, - 3227, 3224, 3232, 3218, 3214, 3215, 3224, 3223, 3217, 3230, - 3223, 3225, 3229, 3227, 3228, 3228, 3234, 3229, 3226, 3233, + 3171, 3159, 3172, 3172, 3166, 3173, 3163, 3174, 3177, 3175, + 3176, 3178, 3179, 3180, 3168, 3175, 3176, 3185, 3180, 3181, + 3181, 3186, 3177, 3188, 3178, 3189, 3174, 3182, 3182, 3189, + 3191, 3179, 3193, 3194, 3192, 3195, 3196, 3188, 3185, 3192, + 3197, 3186, 3198, 3199, 3199, 3197, 3194, 3198, 3195, 3202, + 3191, 3193, 3203, 3204, 3206, 3196, 3205, 3205, 3207, 3206, + 3208, 3208, 3209, 3210, 3207, 3212, 3211, 3209, 3210, 3202, + 3203, 3211, 3204, 3213, 3215, 3215, 3216, 3217, 3217, 3213, + 3220, 3216, 3219, 3221, 3212, 3222, 3219, 3223, 3224, 3225, + 3221, 3231, 3226, 3233, 3224, 3228, 3228, 3230, 3230, 3220, - 3233, 3239, 3230, 3235, 3235, 3236, 3236, 3237, 3232, 3238, - 3240, 3240, 3237, 3241, 3246, 3234, 3238, 3242, 3241, 3242, - 3239, 3243, 3243, 3244, 3245, 3248, 3251, 3247, 3250, 3250, - 3244, 3245, 3247, 3246, 3253, 3254, 3255, 3256, 3260, 3253, - 3254, 3257, 3257, 3261, 3248, 3251, 3259, 3259, 3262, 3262, - 3263, 3263, 3264, 3266, 3266, 3255, 3256, 3260, 3268, 3264, - 3267, 3267, 3261, 3270, 3273, 3268, 3274, 3275, 3270, 3273, - 3276, 3276, 3277, 3277, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3274, 3275, 3281, 3281, 3281, - 3281, 3281, 3281, 3281, 3282, 3282, 3282, 3282, 3282, 3282, + 3231, 3234, 3232, 3231, 3222, 3226, 3223, 3232, 3225, 3235, + 3236, 3236, 3233, 3237, 3238, 3240, 3241, 3241, 3237, 3242, + 3234, 3247, 3235, 3243, 3243, 3244, 3244, 3238, 3245, 3246, + 3248, 3248, 3249, 3245, 3251, 3251, 3246, 3249, 3242, 3252, + 3247, 3240, 3250, 3253, 3250, 3254, 3252, 3255, 3256, 3259, + 3253, 3261, 3255, 3258, 3258, 3262, 3261, 3263, 3264, 3268, + 3262, 3265, 3265, 3269, 3254, 3267, 3267, 3256, 3259, 3270, + 3270, 3271, 3271, 3272, 3274, 3274, 3263, 3264, 3268, 3276, + 3272, 3282, 3269, 3275, 3275, 3278, 3276, 3281, 3283, 0, + 3278, 0, 3281, 3284, 3284, 3285, 3285, 0, 0, 0, - 3282, 3283, 3283, 3283, 3283, 3283, 3283, 3283, 3284, 3284, - 3284, 3284, 3284, 3284, 3284, 3285, 3285, 3285, 3285, 3285, - 3285, 3285, 3286, 3286, 3286, 3286, 3286, 3286, 3286, 3287, - 3287, 3287, 3287, 3287, 3287, 3287, 3289, 3289, 0, 3289, - 3289, 3289, 3289, 3290, 3290, 0, 0, 0, 3290, 3290, - 3291, 3291, 0, 0, 3291, 0, 3291, 3292, 0, 0, - 0, 0, 0, 3292, 3293, 3293, 0, 0, 0, 3293, - 3293, 3294, 0, 0, 0, 0, 0, 3294, 3295, 3295, - 0, 3295, 3295, 3295, 3295, 3296, 0, 0, 0, 0, - 0, 3296, 3297, 3297, 0, 0, 0, 3297, 3297, 3298, + 3282, 0, 0, 0, 0, 0, 0, 3283, 3289, 3289, + 3289, 3289, 3289, 3289, 3289, 3290, 3290, 3290, 3290, 3290, + 3290, 3290, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3292, + 3292, 3292, 3292, 3292, 3292, 3292, 3293, 3293, 3293, 3293, + 3293, 3293, 3293, 3294, 3294, 3294, 3294, 3294, 3294, 3294, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3297, 3297, 0, + 3297, 3297, 3297, 3297, 3298, 3298, 0, 0, 0, 3298, + 3298, 3299, 3299, 0, 0, 3299, 0, 3299, 3300, 0, + 0, 0, 0, 0, 3300, 3301, 3301, 0, 0, 0, + 3301, 3301, 3302, 0, 0, 0, 0, 0, 3302, 3303, - 3298, 0, 3298, 3298, 3298, 3298, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, 3280, - 3280, 3280, 3280, 3280, 3280, 3280, 3280 + 3303, 0, 3303, 3303, 3303, 3303, 3304, 0, 0, 0, + 0, 0, 3304, 3305, 3305, 0, 0, 0, 3305, 3305, + 3306, 3306, 0, 3306, 3306, 3306, 3306, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288, + 3288, 3288, 3288, 3288, 3288, 3288, 3288, 3288 } ; static yy_state_type yy_last_accepting_state; @@ -3130,7 +3137,7 @@ static void config_end_include(void) } #endif -#line 3131 "" +#line 3138 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3139,9 +3146,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3140 "" +#line 3147 "" -#line 3142 "" +#line 3149 "" #define INITIAL 0 #define quotedstring 1 @@ -3365,7 +3372,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3366 "" +#line 3373 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3398,13 +3405,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 >= 3281 ) + if ( yy_current_state >= 3289 ) 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] != 6407 ); + while ( yy_base[yy_current_state] != 6428 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3879,52 +3886,52 @@ YY_RULE_SETUP case 90: YY_RULE_SETUP #line 304 "./util/configlexer.lex" -{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } +{ YDVAR(1, VAR_UDP_CONNECT) } YY_BREAK case 91: YY_RULE_SETUP #line 305 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } +{ YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 92: YY_RULE_SETUP #line 306 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } +{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 93: YY_RULE_SETUP #line 307 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_GLUE) } +{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 94: YY_RULE_SETUP #line 308 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } +{ YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 95: YY_RULE_SETUP #line 309 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } +{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 96: YY_RULE_SETUP #line 310 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } +{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 97: YY_RULE_SETUP #line 311 "./util/configlexer.lex" -{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } +{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 98: YY_RULE_SETUP #line 312 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } +{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 99: YY_RULE_SETUP #line 313 "./util/configlexer.lex" -{ YDVAR(1, VAR_CAPS_WHITELIST) } +{ YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 100: YY_RULE_SETUP @@ -3934,72 +3941,72 @@ YY_RULE_SETUP case 101: YY_RULE_SETUP #line 315 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } +{ YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 102: YY_RULE_SETUP #line 316 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_ADDRESS) } +{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 103: YY_RULE_SETUP #line 317 "./util/configlexer.lex" -{ YDVAR(1, VAR_PRIVATE_DOMAIN) } +{ YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 104: YY_RULE_SETUP #line 318 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH_KEY) } +{ YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 105: YY_RULE_SETUP #line 319 "./util/configlexer.lex" -{ YDVAR(1, VAR_PREFETCH) } +{ YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 106: YY_RULE_SETUP #line 320 "./util/configlexer.lex" -{ YDVAR(1, VAR_DENY_ANY) } +{ YDVAR(1, VAR_PREFETCH) } YY_BREAK case 107: YY_RULE_SETUP #line 321 "./util/configlexer.lex" -{ YDVAR(0, VAR_STUB_ZONE) } +{ YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 108: YY_RULE_SETUP #line 322 "./util/configlexer.lex" -{ YDVAR(1, VAR_NAME) } +{ YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 109: YY_RULE_SETUP #line 323 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_ADDR) } +{ YDVAR(1, VAR_NAME) } YY_BREAK case 110: YY_RULE_SETUP #line 324 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_HOST) } +{ YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 111: YY_RULE_SETUP #line 325 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_PRIME) } +{ YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 112: YY_RULE_SETUP #line 326 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_FIRST) } +{ YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 113: YY_RULE_SETUP #line 327 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_NO_CACHE) } +{ YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 114: YY_RULE_SETUP #line 328 "./util/configlexer.lex" -{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } +{ YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 115: YY_RULE_SETUP @@ -4009,32 +4016,32 @@ YY_RULE_SETUP case 116: YY_RULE_SETUP #line 330 "./util/configlexer.lex" -{ YDVAR(0, VAR_FORWARD_ZONE) } +{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 117: YY_RULE_SETUP #line 331 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_ADDR) } +{ YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 118: YY_RULE_SETUP #line 332 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_HOST) } +{ YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 119: YY_RULE_SETUP #line 333 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_FIRST) } +{ YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 120: YY_RULE_SETUP #line 334 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_NO_CACHE) } +{ YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 121: YY_RULE_SETUP #line 335 "./util/configlexer.lex" -{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } +{ YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 122: YY_RULE_SETUP @@ -4044,47 +4051,47 @@ YY_RULE_SETUP case 123: YY_RULE_SETUP #line 337 "./util/configlexer.lex" -{ YDVAR(0, VAR_AUTH_ZONE) } +{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 124: YY_RULE_SETUP #line 338 "./util/configlexer.lex" -{ YDVAR(0, VAR_RPZ) } +{ YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 125: YY_RULE_SETUP #line 339 "./util/configlexer.lex" -{ YDVAR(1, VAR_TAGS) } +{ YDVAR(0, VAR_RPZ) } YY_BREAK case 126: YY_RULE_SETUP #line 340 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } +{ YDVAR(1, VAR_TAGS) } YY_BREAK case 127: YY_RULE_SETUP #line 341 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } +{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 128: YY_RULE_SETUP #line 342 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG) } +{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 129: YY_RULE_SETUP #line 343 "./util/configlexer.lex" -{ YDVAR(1, VAR_RPZ_LOG_NAME) } +{ YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 130: YY_RULE_SETUP #line 344 "./util/configlexer.lex" -{ YDVAR(1, VAR_ZONEFILE) } +{ YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 131: YY_RULE_SETUP #line 345 "./util/configlexer.lex" -{ YDVAR(1, VAR_MASTER) } +{ YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 132: YY_RULE_SETUP @@ -4094,701 +4101,701 @@ YY_RULE_SETUP case 133: YY_RULE_SETUP #line 347 "./util/configlexer.lex" -{ YDVAR(1, VAR_URL) } +{ YDVAR(1, VAR_MASTER) } YY_BREAK case 134: YY_RULE_SETUP #line 348 "./util/configlexer.lex" -{ YDVAR(1, VAR_ALLOW_NOTIFY) } +{ YDVAR(1, VAR_URL) } YY_BREAK case 135: YY_RULE_SETUP #line 349 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_DOWNSTREAM) } +{ YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 136: YY_RULE_SETUP #line 350 "./util/configlexer.lex" -{ YDVAR(1, VAR_FOR_UPSTREAM) } +{ YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 137: YY_RULE_SETUP #line 351 "./util/configlexer.lex" -{ YDVAR(1, VAR_FALLBACK_ENABLED) } +{ YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 138: YY_RULE_SETUP #line 352 "./util/configlexer.lex" -{ YDVAR(0, VAR_VIEW) } +{ YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 139: YY_RULE_SETUP #line 353 "./util/configlexer.lex" -{ YDVAR(1, VAR_VIEW_FIRST) } +{ YDVAR(0, VAR_VIEW) } YY_BREAK case 140: YY_RULE_SETUP #line 354 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } +{ YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 141: YY_RULE_SETUP #line 355 "./util/configlexer.lex" -{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } +{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 142: YY_RULE_SETUP #line 356 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL) } +{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 143: YY_RULE_SETUP #line 357 "./util/configlexer.lex" -{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } +{ YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 144: YY_RULE_SETUP #line 358 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } +{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 145: YY_RULE_SETUP #line 359 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 146: YY_RULE_SETUP #line 360 "./util/configlexer.lex" -{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } +{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 147: YY_RULE_SETUP #line 361 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 148: YY_RULE_SETUP #line 362 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 149: YY_RULE_SETUP #line 363 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } +{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 150: YY_RULE_SETUP #line 364 "./util/configlexer.lex" -{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 151: YY_RULE_SETUP #line 365 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } +{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 152: YY_RULE_SETUP #line 366 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 153: YY_RULE_SETUP #line 367 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_IDENTITY) } +{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 154: YY_RULE_SETUP #line 368 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_VERSION) } +{ YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 155: YY_RULE_SETUP #line 369 "./util/configlexer.lex" -{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } +{ YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 156: YY_RULE_SETUP #line 370 "./util/configlexer.lex" -{ YDVAR(1, VAR_IDENTITY) } +{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 157: YY_RULE_SETUP #line 371 "./util/configlexer.lex" -{ YDVAR(1, VAR_VERSION) } +{ YDVAR(1, VAR_IDENTITY) } YY_BREAK case 158: YY_RULE_SETUP #line 372 "./util/configlexer.lex" -{ YDVAR(1, VAR_MODULE_CONF) } +{ YDVAR(1, VAR_VERSION) } YY_BREAK case 159: YY_RULE_SETUP #line 373 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR) } +{ YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 160: YY_RULE_SETUP #line 374 "./util/configlexer.lex" -{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 161: YY_RULE_SETUP #line 375 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 162: YY_RULE_SETUP #line 376 "./util/configlexer.lex" -{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } +{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 163: YY_RULE_SETUP #line 377 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } +{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 164: YY_RULE_SETUP #line 378 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR) } +{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 165: YY_RULE_SETUP #line 379 "./util/configlexer.lex" -{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } +{ YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 166: YY_RULE_SETUP #line 380 "./util/configlexer.lex" -{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } +{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 167: YY_RULE_SETUP #line 381 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } +{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 168: YY_RULE_SETUP #line 382 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } +{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 169: YY_RULE_SETUP #line 383 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 170: YY_RULE_SETUP #line 384 "./util/configlexer.lex" -{ YDVAR(1, VAR_BOGUS_TTL) } +{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 171: YY_RULE_SETUP #line 385 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } +{ YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 172: YY_RULE_SETUP #line 386 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } +{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 173: YY_RULE_SETUP #line 387 "./util/configlexer.lex" -{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } +{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 174: YY_RULE_SETUP #line 388 "./util/configlexer.lex" -{ YDVAR(1, VAR_IGNORE_CD_FLAG) } +{ YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 175: YY_RULE_SETUP #line 389 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED) } +{ YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 176: YY_RULE_SETUP #line 390 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 177: YY_RULE_SETUP #line 391 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 178: YY_RULE_SETUP #line 392 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } +{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 179: YY_RULE_SETUP #line 393 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } +{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 180: YY_RULE_SETUP #line 394 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_DSA) } +{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 181: YY_RULE_SETUP #line 395 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAKE_SHA1) } +{ YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 182: YY_RULE_SETUP #line 396 "./util/configlexer.lex" -{ YDVAR(1, VAR_VAL_LOG_LEVEL) } +{ YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 183: YY_RULE_SETUP #line 397 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SIZE) } +{ YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 184: YY_RULE_SETUP #line 398 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEY_CACHE_SLABS) } +{ YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 185: YY_RULE_SETUP #line 399 "./util/configlexer.lex" -{ YDVAR(1, VAR_NEG_CACHE_SIZE) } +{ YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 186: YY_RULE_SETUP #line 400 "./util/configlexer.lex" -{ - YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } +{ YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 187: YY_RULE_SETUP -#line 402 "./util/configlexer.lex" -{ YDVAR(1, VAR_ADD_HOLDDOWN) } +#line 401 "./util/configlexer.lex" +{ + YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 188: YY_RULE_SETUP #line 403 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEL_HOLDDOWN) } +{ YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 189: YY_RULE_SETUP #line 404 "./util/configlexer.lex" -{ YDVAR(1, VAR_KEEP_MISSING) } +{ YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 190: YY_RULE_SETUP #line 405 "./util/configlexer.lex" -{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } +{ YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 191: YY_RULE_SETUP #line 406 "./util/configlexer.lex" -{ YDVAR(1, VAR_USE_SYSLOG) } +{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 192: YY_RULE_SETUP #line 407 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_IDENTITY) } +{ YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 193: YY_RULE_SETUP #line 408 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TIME_ASCII) } +{ YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 194: YY_RULE_SETUP #line 409 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_QUERIES) } +{ YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 195: YY_RULE_SETUP #line 410 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_REPLIES) } +{ YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 196: YY_RULE_SETUP #line 411 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } +{ YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 197: YY_RULE_SETUP #line 412 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } +{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 198: YY_RULE_SETUP #line 413 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOG_SERVFAIL) } +{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 199: YY_RULE_SETUP #line 414 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE) } +{ YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 200: YY_RULE_SETUP #line 415 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA) } +{ YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 201: YY_RULE_SETUP #line 416 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOCAL_DATA_PTR) } +{ YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 202: YY_RULE_SETUP #line 417 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } +{ YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 203: YY_RULE_SETUP #line 418 "./util/configlexer.lex" -{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } +{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 204: YY_RULE_SETUP #line 419 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_INTERVAL) } +{ YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 205: YY_RULE_SETUP #line 420 "./util/configlexer.lex" -{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } +{ YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 206: YY_RULE_SETUP #line 421 "./util/configlexer.lex" -{ YDVAR(1, VAR_EXTENDED_STATISTICS) } +{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 207: YY_RULE_SETUP #line 422 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_ENABLE) } +{ YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 208: YY_RULE_SETUP #line 423 "./util/configlexer.lex" -{ YDVAR(1, VAR_SHM_KEY) } +{ YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 209: YY_RULE_SETUP #line 424 "./util/configlexer.lex" -{ YDVAR(0, VAR_REMOTE_CONTROL) } +{ YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 210: YY_RULE_SETUP #line 425 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_ENABLE) } +{ YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 211: YY_RULE_SETUP #line 426 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_INTERFACE) } +{ YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 212: YY_RULE_SETUP #line 427 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_PORT) } +{ YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 213: YY_RULE_SETUP #line 428 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_USE_CERT) } +{ YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 214: YY_RULE_SETUP #line 429 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_KEY_FILE) } +{ YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 215: YY_RULE_SETUP #line 430 "./util/configlexer.lex" -{ YDVAR(1, VAR_SERVER_CERT_FILE) } +{ YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 216: YY_RULE_SETUP #line 431 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_KEY_FILE) } +{ YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 217: YY_RULE_SETUP #line 432 "./util/configlexer.lex" -{ YDVAR(1, VAR_CONTROL_CERT_FILE) } +{ YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 218: YY_RULE_SETUP #line 433 "./util/configlexer.lex" -{ YDVAR(1, VAR_PYTHON_SCRIPT) } +{ YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 219: YY_RULE_SETUP #line 434 "./util/configlexer.lex" -{ YDVAR(0, VAR_PYTHON) } +{ YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 220: YY_RULE_SETUP #line 435 "./util/configlexer.lex" -{ YDVAR(1, VAR_DYNLIB_FILE) } +{ YDVAR(0, VAR_PYTHON) } YY_BREAK case 221: YY_RULE_SETUP #line 436 "./util/configlexer.lex" -{ YDVAR(0, VAR_DYNLIB) } +{ YDVAR(1, VAR_DYNLIB_FILE) } YY_BREAK case 222: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DOMAIN_INSECURE) } +{ YDVAR(0, VAR_DYNLIB) } YY_BREAK case 223: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_MINIMAL_RESPONSES) } +{ YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 224: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } +{ YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 225: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } +{ YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 226: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_MAX_UDP_SIZE) } +{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 227: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_PREFIX) } +{ YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 228: YY_RULE_SETUP #line 443 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_SYNTHALL) } +{ YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 229: YY_RULE_SETUP #line 444 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } +{ YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 230: YY_RULE_SETUP #line 445 "./util/configlexer.lex" -{ YDVAR(1, VAR_DEFINE_TAG) } +{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 231: YY_RULE_SETUP #line 446 "./util/configlexer.lex" -{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } +{ YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 232: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } +{ YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 233: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } +{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 234: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 235: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } +{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 236: YY_RULE_SETUP #line 451 "./util/configlexer.lex" -{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } +{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 237: YY_RULE_SETUP #line 452 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSTAP) } +{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 238: YY_RULE_SETUP #line 453 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_ENABLE) } +{ YDVAR(0, VAR_DNSTAP) } YY_BREAK case 239: YY_RULE_SETUP #line 454 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } +{ YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 240: YY_RULE_SETUP #line 455 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 241: YY_RULE_SETUP #line 456 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 242: YY_RULE_SETUP #line 457 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 243: YY_RULE_SETUP #line 458 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 244: YY_RULE_SETUP #line 459 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 245: YY_RULE_SETUP #line 460 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" +#line 461 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 247: YY_RULE_SETUP -#line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 463 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 248: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 249: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 250: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 251: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 252: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 253: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 471 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 254: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 255: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 256: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 257: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 479 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 258: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 259: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 260: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 261: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 262: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 263: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 264: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 265: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 266: YY_RULE_SETUP #line 489 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 267: YY_RULE_SETUP #line 490 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 268: YY_RULE_SETUP #line 491 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 269: YY_RULE_SETUP #line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 270: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 271: YY_RULE_SETUP @@ -4803,99 +4810,99 @@ YY_RULE_SETUP case 273: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 274: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 275: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 276: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 277: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 278: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 279: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 280: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 281: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 282: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 283: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 284: YY_RULE_SETUP -#line 508 "./util/configlexer.lex" +#line 507 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 285: YY_RULE_SETUP -#line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 509 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 286: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 287: YY_RULE_SETUP #line 512 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 288: YY_RULE_SETUP #line 513 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 289: YY_RULE_SETUP #line 514 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 290: YY_RULE_SETUP #line 515 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 291: YY_RULE_SETUP #line 516 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 292: YY_RULE_SETUP @@ -4905,113 +4912,118 @@ YY_RULE_SETUP case 293: YY_RULE_SETUP #line 518 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 294: YY_RULE_SETUP #line 519 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 295: YY_RULE_SETUP #line 520 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 296: YY_RULE_SETUP #line 521 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 297: YY_RULE_SETUP #line 522 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 298: YY_RULE_SETUP #line 523 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 299: YY_RULE_SETUP #line 524 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 300: YY_RULE_SETUP #line 525 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 301: YY_RULE_SETUP #line 526 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 302: YY_RULE_SETUP #line 527 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 303: YY_RULE_SETUP #line 528 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 304: YY_RULE_SETUP #line 529 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 305: YY_RULE_SETUP #line 530 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 306: YY_RULE_SETUP #line 531 "./util/configlexer.lex" -{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 307: YY_RULE_SETUP #line 532 "./util/configlexer.lex" -{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } YY_BREAK case 308: -/* rule 308 can match eol */ YY_RULE_SETUP #line 533 "./util/configlexer.lex" +{ YDVAR(1, VAR_EDNS_CLIENT_TAG_OPCODE) } + YY_BREAK +case 309: +/* rule 309 can match eol */ +YY_RULE_SETUP +#line 534 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 309: +case 310: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 310: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 311: -/* rule 311 can match eol */ YY_RULE_SETUP #line 543 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 312: +/* rule 312 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5024,34 +5036,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 313: +case 314: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 558 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 314: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 315: -/* rule 315 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 316: +/* rule 316 can match eol */ +YY_RULE_SETUP +#line 565 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 316: +case 317: YY_RULE_SETUP -#line 566 "./util/configlexer.lex" +#line 567 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5064,38 +5076,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 317: +case 318: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 580 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 318: -YY_RULE_SETUP -#line 584 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 319: -/* rule 319 can match eol */ YY_RULE_SETUP #line 585 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 320: +/* rule 320 can match eol */ YY_RULE_SETUP #line 586 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 321: YY_RULE_SETUP #line 587 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 322: +YY_RULE_SETUP +#line 588 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5103,27 +5115,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 322: -YY_RULE_SETUP -#line 596 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 323: -/* rule 323 can match eol */ YY_RULE_SETUP #line 597 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 324: +/* rule 324 can match eol */ +YY_RULE_SETUP +#line 598 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 324: +case 325: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5133,7 +5145,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 605 "./util/configlexer.lex" +#line 606 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5148,39 +5160,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 325: +case 326: YY_RULE_SETUP -#line 619 "./util/configlexer.lex" +#line 620 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 622 "./util/configlexer.lex" +#line 623 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 326: -YY_RULE_SETUP -#line 626 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 327: -/* rule 327 can match eol */ YY_RULE_SETUP #line 627 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 328: +/* rule 328 can match eol */ YY_RULE_SETUP #line 628 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 329: YY_RULE_SETUP #line 629 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 330: +YY_RULE_SETUP +#line 630 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5189,29 +5201,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 635 "./util/configlexer.lex" +#line 636 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 330: -YY_RULE_SETUP -#line 639 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 331: -/* rule 331 can match eol */ YY_RULE_SETUP #line 640 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 332: +/* rule 332 can match eol */ +YY_RULE_SETUP +#line 641 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 332: +case 333: YY_RULE_SETUP -#line 644 "./util/configlexer.lex" +#line 645 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5220,33 +5232,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 333: +case 334: YY_RULE_SETUP -#line 652 "./util/configlexer.lex" +#line 653 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 334: +case 335: YY_RULE_SETUP -#line 656 "./util/configlexer.lex" +#line 657 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 335: +case 336: YY_RULE_SETUP -#line 660 "./util/configlexer.lex" +#line 661 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 336: +case 337: YY_RULE_SETUP -#line 664 "./util/configlexer.lex" +#line 665 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5247 "" +#line 5259 "" case YY_END_OF_BUFFER: { @@ -5541,7 +5553,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 >= 3281 ) + if ( yy_current_state >= 3289 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5569,11 +5581,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 >= 3281 ) + if ( yy_current_state >= 3289 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3280); + yy_is_jam = (yy_current_state == 3288); return yy_is_jam ? 0 : yy_current_state; } @@ -6212,6 +6224,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 664 "./util/configlexer.lex" +#line 665 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 4e0bf240f..b83801ab0 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -301,6 +301,7 @@ infra-keep-probing{COLON} { YDVAR(1, VAR_INFRA_KEEP_PROBING) } num-queries-per-thread{COLON} { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } jostle-timeout{COLON} { YDVAR(1, VAR_JOSTLE_TIMEOUT) } delay-close{COLON} { YDVAR(1, VAR_DELAY_CLOSE) } +udp-connect{COLON} { YDVAR(1, VAR_UDP_CONNECT) } target-fetch-policy{COLON} { YDVAR(1, VAR_TARGET_FETCH_POLICY) } harden-short-bufsize{COLON} { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } harden-large-queries{COLON} { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } diff --git a/util/configparser.c b/util/configparser.c index 0ce58427e..f22204e54 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -285,154 +285,155 @@ extern int yydebug; VAR_RRSET_ROUNDROBIN = 406, VAR_MAX_UDP_SIZE = 407, VAR_DELAY_CLOSE = 408, - VAR_UNBLOCK_LAN_ZONES = 409, - VAR_INSECURE_LAN_ZONES = 410, - VAR_INFRA_CACHE_MIN_RTT = 411, - VAR_INFRA_KEEP_PROBING = 412, - VAR_DNS64_PREFIX = 413, - VAR_DNS64_SYNTHALL = 414, - VAR_DNS64_IGNORE_AAAA = 415, - VAR_DNSTAP = 416, - VAR_DNSTAP_ENABLE = 417, - VAR_DNSTAP_SOCKET_PATH = 418, - VAR_DNSTAP_IP = 419, - VAR_DNSTAP_TLS = 420, - VAR_DNSTAP_TLS_SERVER_NAME = 421, - VAR_DNSTAP_TLS_CERT_BUNDLE = 422, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 423, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 424, - VAR_DNSTAP_SEND_IDENTITY = 425, - VAR_DNSTAP_SEND_VERSION = 426, - VAR_DNSTAP_BIDIRECTIONAL = 427, - VAR_DNSTAP_IDENTITY = 428, - VAR_DNSTAP_VERSION = 429, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 433, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 435, - VAR_RESPONSE_IP_TAG = 436, - VAR_RESPONSE_IP = 437, - VAR_RESPONSE_IP_DATA = 438, - VAR_HARDEN_ALGO_DOWNGRADE = 439, - VAR_IP_TRANSPARENT = 440, - VAR_IP_DSCP = 441, - VAR_DISABLE_DNSSEC_LAME_CHECK = 442, - VAR_IP_RATELIMIT = 443, - VAR_IP_RATELIMIT_SLABS = 444, - VAR_IP_RATELIMIT_SIZE = 445, - VAR_RATELIMIT = 446, - VAR_RATELIMIT_SLABS = 447, - VAR_RATELIMIT_SIZE = 448, - VAR_RATELIMIT_FOR_DOMAIN = 449, - VAR_RATELIMIT_BELOW_DOMAIN = 450, - VAR_IP_RATELIMIT_FACTOR = 451, - VAR_RATELIMIT_FACTOR = 452, - VAR_SEND_CLIENT_SUBNET = 453, - VAR_CLIENT_SUBNET_ZONE = 454, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 455, - VAR_CLIENT_SUBNET_OPCODE = 456, - VAR_MAX_CLIENT_SUBNET_IPV4 = 457, - VAR_MAX_CLIENT_SUBNET_IPV6 = 458, - VAR_MIN_CLIENT_SUBNET_IPV4 = 459, - VAR_MIN_CLIENT_SUBNET_IPV6 = 460, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 462, - VAR_CAPS_WHITELIST = 463, - VAR_CACHE_MAX_NEGATIVE_TTL = 464, - VAR_PERMIT_SMALL_HOLDDOWN = 465, - VAR_QNAME_MINIMISATION = 466, - VAR_QNAME_MINIMISATION_STRICT = 467, - VAR_IP_FREEBIND = 468, - VAR_DEFINE_TAG = 469, - VAR_LOCAL_ZONE_TAG = 470, - VAR_ACCESS_CONTROL_TAG = 471, - VAR_LOCAL_ZONE_OVERRIDE = 472, - VAR_ACCESS_CONTROL_TAG_ACTION = 473, - VAR_ACCESS_CONTROL_TAG_DATA = 474, - VAR_VIEW = 475, - VAR_ACCESS_CONTROL_VIEW = 476, - VAR_VIEW_FIRST = 477, - VAR_SERVE_EXPIRED = 478, - VAR_SERVE_EXPIRED_TTL = 479, - VAR_SERVE_EXPIRED_TTL_RESET = 480, - VAR_SERVE_EXPIRED_REPLY_TTL = 481, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 482, - VAR_FAKE_DSA = 483, - VAR_FAKE_SHA1 = 484, - VAR_LOG_IDENTITY = 485, - VAR_HIDE_TRUSTANCHOR = 486, - VAR_TRUST_ANCHOR_SIGNALING = 487, - VAR_AGGRESSIVE_NSEC = 488, - VAR_USE_SYSTEMD = 489, - VAR_SHM_ENABLE = 490, - VAR_SHM_KEY = 491, - VAR_ROOT_KEY_SENTINEL = 492, - VAR_DNSCRYPT = 493, - VAR_DNSCRYPT_ENABLE = 494, - VAR_DNSCRYPT_PORT = 495, - VAR_DNSCRYPT_PROVIDER = 496, - VAR_DNSCRYPT_SECRET_KEY = 497, - VAR_DNSCRYPT_PROVIDER_CERT = 498, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 499, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 501, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 502, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 503, - VAR_IPSECMOD_ENABLED = 504, - VAR_IPSECMOD_HOOK = 505, - VAR_IPSECMOD_IGNORE_BOGUS = 506, - VAR_IPSECMOD_MAX_TTL = 507, - VAR_IPSECMOD_WHITELIST = 508, - VAR_IPSECMOD_STRICT = 509, - VAR_CACHEDB = 510, - VAR_CACHEDB_BACKEND = 511, - VAR_CACHEDB_SECRETSEED = 512, - VAR_CACHEDB_REDISHOST = 513, - VAR_CACHEDB_REDISPORT = 514, - VAR_CACHEDB_REDISTIMEOUT = 515, - VAR_CACHEDB_REDISEXPIRERECORDS = 516, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 517, - VAR_FOR_UPSTREAM = 518, - VAR_AUTH_ZONE = 519, - VAR_ZONEFILE = 520, - VAR_MASTER = 521, - VAR_URL = 522, - VAR_FOR_DOWNSTREAM = 523, - VAR_FALLBACK_ENABLED = 524, - VAR_TLS_ADDITIONAL_PORT = 525, - VAR_LOW_RTT = 526, - VAR_LOW_RTT_PERMIL = 527, - VAR_FAST_SERVER_PERMIL = 528, - VAR_FAST_SERVER_NUM = 529, - VAR_ALLOW_NOTIFY = 530, - VAR_TLS_WIN_CERT = 531, - VAR_TCP_CONNECTION_LIMIT = 532, - VAR_FORWARD_NO_CACHE = 533, - VAR_STUB_NO_CACHE = 534, - VAR_LOG_SERVFAIL = 535, - VAR_DENY_ANY = 536, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 537, - VAR_LOG_TAG_QUERYREPLY = 538, - VAR_STREAM_WAIT_SIZE = 539, - VAR_TLS_CIPHERS = 540, - VAR_TLS_CIPHERSUITES = 541, - VAR_TLS_USE_SNI = 542, - VAR_IPSET = 543, - VAR_IPSET_NAME_V4 = 544, - VAR_IPSET_NAME_V6 = 545, - VAR_TLS_SESSION_TICKET_KEYS = 546, - VAR_RPZ = 547, - VAR_TAGS = 548, - VAR_RPZ_ACTION_OVERRIDE = 549, - VAR_RPZ_CNAME_OVERRIDE = 550, - VAR_RPZ_LOG = 551, - VAR_RPZ_LOG_NAME = 552, - VAR_DYNLIB = 553, - VAR_DYNLIB_FILE = 554, - VAR_EDNS_CLIENT_TAG = 555, - VAR_EDNS_CLIENT_TAG_OPCODE = 556 + VAR_UDP_CONNECT = 409, + VAR_UNBLOCK_LAN_ZONES = 410, + VAR_INSECURE_LAN_ZONES = 411, + VAR_INFRA_CACHE_MIN_RTT = 412, + VAR_INFRA_KEEP_PROBING = 413, + VAR_DNS64_PREFIX = 414, + VAR_DNS64_SYNTHALL = 415, + VAR_DNS64_IGNORE_AAAA = 416, + VAR_DNSTAP = 417, + VAR_DNSTAP_ENABLE = 418, + VAR_DNSTAP_SOCKET_PATH = 419, + VAR_DNSTAP_IP = 420, + VAR_DNSTAP_TLS = 421, + VAR_DNSTAP_TLS_SERVER_NAME = 422, + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, + VAR_DNSTAP_SEND_IDENTITY = 426, + VAR_DNSTAP_SEND_VERSION = 427, + VAR_DNSTAP_BIDIRECTIONAL = 428, + VAR_DNSTAP_IDENTITY = 429, + VAR_DNSTAP_VERSION = 430, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, + VAR_RESPONSE_IP_TAG = 437, + VAR_RESPONSE_IP = 438, + VAR_RESPONSE_IP_DATA = 439, + VAR_HARDEN_ALGO_DOWNGRADE = 440, + VAR_IP_TRANSPARENT = 441, + VAR_IP_DSCP = 442, + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, + VAR_IP_RATELIMIT = 444, + VAR_IP_RATELIMIT_SLABS = 445, + VAR_IP_RATELIMIT_SIZE = 446, + VAR_RATELIMIT = 447, + VAR_RATELIMIT_SLABS = 448, + VAR_RATELIMIT_SIZE = 449, + VAR_RATELIMIT_FOR_DOMAIN = 450, + VAR_RATELIMIT_BELOW_DOMAIN = 451, + VAR_IP_RATELIMIT_FACTOR = 452, + VAR_RATELIMIT_FACTOR = 453, + VAR_SEND_CLIENT_SUBNET = 454, + VAR_CLIENT_SUBNET_ZONE = 455, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, + VAR_CLIENT_SUBNET_OPCODE = 457, + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, + VAR_CAPS_WHITELIST = 464, + VAR_CACHE_MAX_NEGATIVE_TTL = 465, + VAR_PERMIT_SMALL_HOLDDOWN = 466, + VAR_QNAME_MINIMISATION = 467, + VAR_QNAME_MINIMISATION_STRICT = 468, + VAR_IP_FREEBIND = 469, + VAR_DEFINE_TAG = 470, + VAR_LOCAL_ZONE_TAG = 471, + VAR_ACCESS_CONTROL_TAG = 472, + VAR_LOCAL_ZONE_OVERRIDE = 473, + VAR_ACCESS_CONTROL_TAG_ACTION = 474, + VAR_ACCESS_CONTROL_TAG_DATA = 475, + VAR_VIEW = 476, + VAR_ACCESS_CONTROL_VIEW = 477, + VAR_VIEW_FIRST = 478, + VAR_SERVE_EXPIRED = 479, + VAR_SERVE_EXPIRED_TTL = 480, + VAR_SERVE_EXPIRED_TTL_RESET = 481, + VAR_SERVE_EXPIRED_REPLY_TTL = 482, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, + VAR_FAKE_DSA = 484, + VAR_FAKE_SHA1 = 485, + VAR_LOG_IDENTITY = 486, + VAR_HIDE_TRUSTANCHOR = 487, + VAR_TRUST_ANCHOR_SIGNALING = 488, + VAR_AGGRESSIVE_NSEC = 489, + VAR_USE_SYSTEMD = 490, + VAR_SHM_ENABLE = 491, + VAR_SHM_KEY = 492, + VAR_ROOT_KEY_SENTINEL = 493, + VAR_DNSCRYPT = 494, + VAR_DNSCRYPT_ENABLE = 495, + VAR_DNSCRYPT_PORT = 496, + VAR_DNSCRYPT_PROVIDER = 497, + VAR_DNSCRYPT_SECRET_KEY = 498, + VAR_DNSCRYPT_PROVIDER_CERT = 499, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, + VAR_IPSECMOD_ENABLED = 505, + VAR_IPSECMOD_HOOK = 506, + VAR_IPSECMOD_IGNORE_BOGUS = 507, + VAR_IPSECMOD_MAX_TTL = 508, + VAR_IPSECMOD_WHITELIST = 509, + VAR_IPSECMOD_STRICT = 510, + VAR_CACHEDB = 511, + VAR_CACHEDB_BACKEND = 512, + VAR_CACHEDB_SECRETSEED = 513, + VAR_CACHEDB_REDISHOST = 514, + VAR_CACHEDB_REDISPORT = 515, + VAR_CACHEDB_REDISTIMEOUT = 516, + VAR_CACHEDB_REDISEXPIRERECORDS = 517, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, + VAR_FOR_UPSTREAM = 519, + VAR_AUTH_ZONE = 520, + VAR_ZONEFILE = 521, + VAR_MASTER = 522, + VAR_URL = 523, + VAR_FOR_DOWNSTREAM = 524, + VAR_FALLBACK_ENABLED = 525, + VAR_TLS_ADDITIONAL_PORT = 526, + VAR_LOW_RTT = 527, + VAR_LOW_RTT_PERMIL = 528, + VAR_FAST_SERVER_PERMIL = 529, + VAR_FAST_SERVER_NUM = 530, + VAR_ALLOW_NOTIFY = 531, + VAR_TLS_WIN_CERT = 532, + VAR_TCP_CONNECTION_LIMIT = 533, + VAR_FORWARD_NO_CACHE = 534, + VAR_STUB_NO_CACHE = 535, + VAR_LOG_SERVFAIL = 536, + VAR_DENY_ANY = 537, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, + VAR_LOG_TAG_QUERYREPLY = 539, + VAR_STREAM_WAIT_SIZE = 540, + VAR_TLS_CIPHERS = 541, + VAR_TLS_CIPHERSUITES = 542, + VAR_TLS_USE_SNI = 543, + VAR_IPSET = 544, + VAR_IPSET_NAME_V4 = 545, + VAR_IPSET_NAME_V6 = 546, + VAR_TLS_SESSION_TICKET_KEYS = 547, + VAR_RPZ = 548, + VAR_TAGS = 549, + VAR_RPZ_ACTION_OVERRIDE = 550, + VAR_RPZ_CNAME_OVERRIDE = 551, + VAR_RPZ_LOG = 552, + VAR_RPZ_LOG_NAME = 553, + VAR_DYNLIB = 554, + VAR_DYNLIB_FILE = 555, + VAR_EDNS_CLIENT_TAG = 556, + VAR_EDNS_CLIENT_TAG_OPCODE = 557 }; #endif /* Tokens. */ @@ -587,154 +588,155 @@ extern int yydebug; #define VAR_RRSET_ROUNDROBIN 406 #define VAR_MAX_UDP_SIZE 407 #define VAR_DELAY_CLOSE 408 -#define VAR_UNBLOCK_LAN_ZONES 409 -#define VAR_INSECURE_LAN_ZONES 410 -#define VAR_INFRA_CACHE_MIN_RTT 411 -#define VAR_INFRA_KEEP_PROBING 412 -#define VAR_DNS64_PREFIX 413 -#define VAR_DNS64_SYNTHALL 414 -#define VAR_DNS64_IGNORE_AAAA 415 -#define VAR_DNSTAP 416 -#define VAR_DNSTAP_ENABLE 417 -#define VAR_DNSTAP_SOCKET_PATH 418 -#define VAR_DNSTAP_IP 419 -#define VAR_DNSTAP_TLS 420 -#define VAR_DNSTAP_TLS_SERVER_NAME 421 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 422 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 423 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 424 -#define VAR_DNSTAP_SEND_IDENTITY 425 -#define VAR_DNSTAP_SEND_VERSION 426 -#define VAR_DNSTAP_BIDIRECTIONAL 427 -#define VAR_DNSTAP_IDENTITY 428 -#define VAR_DNSTAP_VERSION 429 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 433 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 435 -#define VAR_RESPONSE_IP_TAG 436 -#define VAR_RESPONSE_IP 437 -#define VAR_RESPONSE_IP_DATA 438 -#define VAR_HARDEN_ALGO_DOWNGRADE 439 -#define VAR_IP_TRANSPARENT 440 -#define VAR_IP_DSCP 441 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 442 -#define VAR_IP_RATELIMIT 443 -#define VAR_IP_RATELIMIT_SLABS 444 -#define VAR_IP_RATELIMIT_SIZE 445 -#define VAR_RATELIMIT 446 -#define VAR_RATELIMIT_SLABS 447 -#define VAR_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT_FOR_DOMAIN 449 -#define VAR_RATELIMIT_BELOW_DOMAIN 450 -#define VAR_IP_RATELIMIT_FACTOR 451 -#define VAR_RATELIMIT_FACTOR 452 -#define VAR_SEND_CLIENT_SUBNET 453 -#define VAR_CLIENT_SUBNET_ZONE 454 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 455 -#define VAR_CLIENT_SUBNET_OPCODE 456 -#define VAR_MAX_CLIENT_SUBNET_IPV4 457 -#define VAR_MAX_CLIENT_SUBNET_IPV6 458 -#define VAR_MIN_CLIENT_SUBNET_IPV4 459 -#define VAR_MIN_CLIENT_SUBNET_IPV6 460 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 461 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 462 -#define VAR_CAPS_WHITELIST 463 -#define VAR_CACHE_MAX_NEGATIVE_TTL 464 -#define VAR_PERMIT_SMALL_HOLDDOWN 465 -#define VAR_QNAME_MINIMISATION 466 -#define VAR_QNAME_MINIMISATION_STRICT 467 -#define VAR_IP_FREEBIND 468 -#define VAR_DEFINE_TAG 469 -#define VAR_LOCAL_ZONE_TAG 470 -#define VAR_ACCESS_CONTROL_TAG 471 -#define VAR_LOCAL_ZONE_OVERRIDE 472 -#define VAR_ACCESS_CONTROL_TAG_ACTION 473 -#define VAR_ACCESS_CONTROL_TAG_DATA 474 -#define VAR_VIEW 475 -#define VAR_ACCESS_CONTROL_VIEW 476 -#define VAR_VIEW_FIRST 477 -#define VAR_SERVE_EXPIRED 478 -#define VAR_SERVE_EXPIRED_TTL 479 -#define VAR_SERVE_EXPIRED_TTL_RESET 480 -#define VAR_SERVE_EXPIRED_REPLY_TTL 481 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 482 -#define VAR_FAKE_DSA 483 -#define VAR_FAKE_SHA1 484 -#define VAR_LOG_IDENTITY 485 -#define VAR_HIDE_TRUSTANCHOR 486 -#define VAR_TRUST_ANCHOR_SIGNALING 487 -#define VAR_AGGRESSIVE_NSEC 488 -#define VAR_USE_SYSTEMD 489 -#define VAR_SHM_ENABLE 490 -#define VAR_SHM_KEY 491 -#define VAR_ROOT_KEY_SENTINEL 492 -#define VAR_DNSCRYPT 493 -#define VAR_DNSCRYPT_ENABLE 494 -#define VAR_DNSCRYPT_PORT 495 -#define VAR_DNSCRYPT_PROVIDER 496 -#define VAR_DNSCRYPT_SECRET_KEY 497 -#define VAR_DNSCRYPT_PROVIDER_CERT 498 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 499 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 500 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 501 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 502 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 503 -#define VAR_IPSECMOD_ENABLED 504 -#define VAR_IPSECMOD_HOOK 505 -#define VAR_IPSECMOD_IGNORE_BOGUS 506 -#define VAR_IPSECMOD_MAX_TTL 507 -#define VAR_IPSECMOD_WHITELIST 508 -#define VAR_IPSECMOD_STRICT 509 -#define VAR_CACHEDB 510 -#define VAR_CACHEDB_BACKEND 511 -#define VAR_CACHEDB_SECRETSEED 512 -#define VAR_CACHEDB_REDISHOST 513 -#define VAR_CACHEDB_REDISPORT 514 -#define VAR_CACHEDB_REDISTIMEOUT 515 -#define VAR_CACHEDB_REDISEXPIRERECORDS 516 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 517 -#define VAR_FOR_UPSTREAM 518 -#define VAR_AUTH_ZONE 519 -#define VAR_ZONEFILE 520 -#define VAR_MASTER 521 -#define VAR_URL 522 -#define VAR_FOR_DOWNSTREAM 523 -#define VAR_FALLBACK_ENABLED 524 -#define VAR_TLS_ADDITIONAL_PORT 525 -#define VAR_LOW_RTT 526 -#define VAR_LOW_RTT_PERMIL 527 -#define VAR_FAST_SERVER_PERMIL 528 -#define VAR_FAST_SERVER_NUM 529 -#define VAR_ALLOW_NOTIFY 530 -#define VAR_TLS_WIN_CERT 531 -#define VAR_TCP_CONNECTION_LIMIT 532 -#define VAR_FORWARD_NO_CACHE 533 -#define VAR_STUB_NO_CACHE 534 -#define VAR_LOG_SERVFAIL 535 -#define VAR_DENY_ANY 536 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 537 -#define VAR_LOG_TAG_QUERYREPLY 538 -#define VAR_STREAM_WAIT_SIZE 539 -#define VAR_TLS_CIPHERS 540 -#define VAR_TLS_CIPHERSUITES 541 -#define VAR_TLS_USE_SNI 542 -#define VAR_IPSET 543 -#define VAR_IPSET_NAME_V4 544 -#define VAR_IPSET_NAME_V6 545 -#define VAR_TLS_SESSION_TICKET_KEYS 546 -#define VAR_RPZ 547 -#define VAR_TAGS 548 -#define VAR_RPZ_ACTION_OVERRIDE 549 -#define VAR_RPZ_CNAME_OVERRIDE 550 -#define VAR_RPZ_LOG 551 -#define VAR_RPZ_LOG_NAME 552 -#define VAR_DYNLIB 553 -#define VAR_DYNLIB_FILE 554 -#define VAR_EDNS_CLIENT_TAG 555 -#define VAR_EDNS_CLIENT_TAG_OPCODE 556 +#define VAR_UDP_CONNECT 409 +#define VAR_UNBLOCK_LAN_ZONES 410 +#define VAR_INSECURE_LAN_ZONES 411 +#define VAR_INFRA_CACHE_MIN_RTT 412 +#define VAR_INFRA_KEEP_PROBING 413 +#define VAR_DNS64_PREFIX 414 +#define VAR_DNS64_SYNTHALL 415 +#define VAR_DNS64_IGNORE_AAAA 416 +#define VAR_DNSTAP 417 +#define VAR_DNSTAP_ENABLE 418 +#define VAR_DNSTAP_SOCKET_PATH 419 +#define VAR_DNSTAP_IP 420 +#define VAR_DNSTAP_TLS 421 +#define VAR_DNSTAP_TLS_SERVER_NAME 422 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 423 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425 +#define VAR_DNSTAP_SEND_IDENTITY 426 +#define VAR_DNSTAP_SEND_VERSION 427 +#define VAR_DNSTAP_BIDIRECTIONAL 428 +#define VAR_DNSTAP_IDENTITY 429 +#define VAR_DNSTAP_VERSION 430 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436 +#define VAR_RESPONSE_IP_TAG 437 +#define VAR_RESPONSE_IP 438 +#define VAR_RESPONSE_IP_DATA 439 +#define VAR_HARDEN_ALGO_DOWNGRADE 440 +#define VAR_IP_TRANSPARENT 441 +#define VAR_IP_DSCP 442 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 443 +#define VAR_IP_RATELIMIT 444 +#define VAR_IP_RATELIMIT_SLABS 445 +#define VAR_IP_RATELIMIT_SIZE 446 +#define VAR_RATELIMIT 447 +#define VAR_RATELIMIT_SLABS 448 +#define VAR_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT_FOR_DOMAIN 450 +#define VAR_RATELIMIT_BELOW_DOMAIN 451 +#define VAR_IP_RATELIMIT_FACTOR 452 +#define VAR_RATELIMIT_FACTOR 453 +#define VAR_SEND_CLIENT_SUBNET 454 +#define VAR_CLIENT_SUBNET_ZONE 455 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456 +#define VAR_CLIENT_SUBNET_OPCODE 457 +#define VAR_MAX_CLIENT_SUBNET_IPV4 458 +#define VAR_MAX_CLIENT_SUBNET_IPV6 459 +#define VAR_MIN_CLIENT_SUBNET_IPV4 460 +#define VAR_MIN_CLIENT_SUBNET_IPV6 461 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 462 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 463 +#define VAR_CAPS_WHITELIST 464 +#define VAR_CACHE_MAX_NEGATIVE_TTL 465 +#define VAR_PERMIT_SMALL_HOLDDOWN 466 +#define VAR_QNAME_MINIMISATION 467 +#define VAR_QNAME_MINIMISATION_STRICT 468 +#define VAR_IP_FREEBIND 469 +#define VAR_DEFINE_TAG 470 +#define VAR_LOCAL_ZONE_TAG 471 +#define VAR_ACCESS_CONTROL_TAG 472 +#define VAR_LOCAL_ZONE_OVERRIDE 473 +#define VAR_ACCESS_CONTROL_TAG_ACTION 474 +#define VAR_ACCESS_CONTROL_TAG_DATA 475 +#define VAR_VIEW 476 +#define VAR_ACCESS_CONTROL_VIEW 477 +#define VAR_VIEW_FIRST 478 +#define VAR_SERVE_EXPIRED 479 +#define VAR_SERVE_EXPIRED_TTL 480 +#define VAR_SERVE_EXPIRED_TTL_RESET 481 +#define VAR_SERVE_EXPIRED_REPLY_TTL 482 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 +#define VAR_FAKE_DSA 484 +#define VAR_FAKE_SHA1 485 +#define VAR_LOG_IDENTITY 486 +#define VAR_HIDE_TRUSTANCHOR 487 +#define VAR_TRUST_ANCHOR_SIGNALING 488 +#define VAR_AGGRESSIVE_NSEC 489 +#define VAR_USE_SYSTEMD 490 +#define VAR_SHM_ENABLE 491 +#define VAR_SHM_KEY 492 +#define VAR_ROOT_KEY_SENTINEL 493 +#define VAR_DNSCRYPT 494 +#define VAR_DNSCRYPT_ENABLE 495 +#define VAR_DNSCRYPT_PORT 496 +#define VAR_DNSCRYPT_PROVIDER 497 +#define VAR_DNSCRYPT_SECRET_KEY 498 +#define VAR_DNSCRYPT_PROVIDER_CERT 499 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504 +#define VAR_IPSECMOD_ENABLED 505 +#define VAR_IPSECMOD_HOOK 506 +#define VAR_IPSECMOD_IGNORE_BOGUS 507 +#define VAR_IPSECMOD_MAX_TTL 508 +#define VAR_IPSECMOD_WHITELIST 509 +#define VAR_IPSECMOD_STRICT 510 +#define VAR_CACHEDB 511 +#define VAR_CACHEDB_BACKEND 512 +#define VAR_CACHEDB_SECRETSEED 513 +#define VAR_CACHEDB_REDISHOST 514 +#define VAR_CACHEDB_REDISPORT 515 +#define VAR_CACHEDB_REDISTIMEOUT 516 +#define VAR_CACHEDB_REDISEXPIRERECORDS 517 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518 +#define VAR_FOR_UPSTREAM 519 +#define VAR_AUTH_ZONE 520 +#define VAR_ZONEFILE 521 +#define VAR_MASTER 522 +#define VAR_URL 523 +#define VAR_FOR_DOWNSTREAM 524 +#define VAR_FALLBACK_ENABLED 525 +#define VAR_TLS_ADDITIONAL_PORT 526 +#define VAR_LOW_RTT 527 +#define VAR_LOW_RTT_PERMIL 528 +#define VAR_FAST_SERVER_PERMIL 529 +#define VAR_FAST_SERVER_NUM 530 +#define VAR_ALLOW_NOTIFY 531 +#define VAR_TLS_WIN_CERT 532 +#define VAR_TCP_CONNECTION_LIMIT 533 +#define VAR_FORWARD_NO_CACHE 534 +#define VAR_STUB_NO_CACHE 535 +#define VAR_LOG_SERVFAIL 536 +#define VAR_DENY_ANY 537 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 538 +#define VAR_LOG_TAG_QUERYREPLY 539 +#define VAR_STREAM_WAIT_SIZE 540 +#define VAR_TLS_CIPHERS 541 +#define VAR_TLS_CIPHERSUITES 542 +#define VAR_TLS_USE_SNI 543 +#define VAR_IPSET 544 +#define VAR_IPSET_NAME_V4 545 +#define VAR_IPSET_NAME_V6 546 +#define VAR_TLS_SESSION_TICKET_KEYS 547 +#define VAR_RPZ 548 +#define VAR_TAGS 549 +#define VAR_RPZ_ACTION_OVERRIDE 550 +#define VAR_RPZ_CNAME_OVERRIDE 551 +#define VAR_RPZ_LOG 552 +#define VAR_RPZ_LOG_NAME 553 +#define VAR_DYNLIB 554 +#define VAR_DYNLIB_FILE 555 +#define VAR_EDNS_CLIENT_TAG 556 +#define VAR_EDNS_CLIENT_TAG_OPCODE 557 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -744,7 +746,7 @@ union YYSTYPE char* str; -#line 748 "util/configparser.c" +#line 750 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -994,19 +996,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 639 +#define YYLAST 641 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 302 +#define YYNTOKENS 303 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 327 +#define YYNNTS 328 /* YYNRULES -- Number of rules. */ -#define YYNRULES 630 +#define YYNRULES 632 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 936 +#define YYNSTATES 939 #define YYUNDEFTOK 2 -#define YYMAXUTOK 556 +#define YYMAXUTOK 557 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1072,7 +1074,7 @@ static const yytype_uint16 yytranslate[] = 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 + 295, 296, 297, 298, 299, 300, 301, 302 }; #if YYDEBUG @@ -1092,57 +1094,57 @@ static const yytype_uint16 yyrline[] = 239, 240, 240, 241, 241, 242, 242, 242, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 247, 247, 247, 247, 248, 249, 249, 249, 250, 250, 250, - 251, 251, 252, 252, 253, 253, 253, 254, 254, 255, - 255, 256, 256, 256, 257, 257, 258, 258, 258, 259, - 259, 260, 260, 261, 261, 262, 263, 263, 264, 264, - 265, 265, 266, 267, 267, 268, 268, 269, 269, 270, - 270, 271, 271, 272, 272, 272, 273, 273, 274, 274, - 275, 275, 276, 276, 277, 277, 278, 278, 279, 279, - 279, 280, 280, 280, 281, 281, 281, 282, 282, 283, - 284, 284, 285, 285, 286, 286, 287, 287, 288, 288, - 288, 289, 289, 289, 290, 290, 290, 291, 291, 292, - 292, 293, 293, 294, 294, 295, 297, 309, 310, 311, - 311, 311, 311, 311, 312, 312, 314, 326, 327, 328, - 328, 328, 328, 329, 329, 331, 345, 346, 347, 347, - 347, 347, 348, 348, 348, 350, 367, 368, 369, 369, - 369, 369, 370, 370, 370, 371, 374, 393, 410, 418, - 428, 436, 453, 454, 455, 455, 455, 455, 455, 456, - 456, 456, 457, 457, 459, 468, 477, 488, 497, 506, - 515, 526, 535, 547, 561, 576, 587, 604, 621, 638, - 655, 670, 685, 698, 713, 722, 731, 740, 749, 758, - 767, 776, 785, 794, 803, 812, 821, 830, 839, 852, - 861, 874, 883, 892, 901, 908, 915, 924, 931, 940, - 948, 955, 962, 970, 979, 987, 1003, 1011, 1019, 1027, - 1035, 1043, 1052, 1061, 1075, 1084, 1093, 1102, 1111, 1120, - 1129, 1136, 1143, 1169, 1177, 1184, 1191, 1198, 1205, 1213, - 1221, 1229, 1236, 1247, 1258, 1265, 1274, 1283, 1292, 1299, - 1306, 1314, 1322, 1332, 1342, 1352, 1366, 1374, 1387, 1398, - 1406, 1419, 1428, 1437, 1446, 1456, 1466, 1474, 1487, 1496, - 1504, 1513, 1521, 1534, 1543, 1553, 1560, 1570, 1580, 1590, - 1600, 1610, 1620, 1630, 1640, 1647, 1654, 1661, 1670, 1679, - 1688, 1697, 1704, 1714, 1734, 1741, 1759, 1772, 1785, 1794, - 1803, 1812, 1821, 1831, 1841, 1852, 1861, 1870, 1879, 1888, - 1897, 1906, 1919, 1932, 1941, 1948, 1957, 1966, 1975, 1984, - 1992, 2005, 2013, 2054, 2061, 2076, 2086, 2096, 2103, 2110, - 2117, 2126, 2134, 2148, 2169, 2190, 2202, 2214, 2226, 2235, - 2256, 2266, 2275, 2283, 2291, 2304, 2317, 2332, 2347, 2356, - 2365, 2371, 2380, 2389, 2399, 2409, 2422, 2435, 2447, 2461, - 2473, 2487, 2502, 2513, 2523, 2530, 2537, 2546, 2555, 2565, - 2575, 2585, 2592, 2599, 2608, 2617, 2627, 2637, 2644, 2651, - 2658, 2666, 2676, 2686, 2696, 2706, 2745, 2755, 2763, 2771, - 2786, 2795, 2800, 2801, 2802, 2802, 2802, 2803, 2803, 2803, - 2804, 2804, 2806, 2816, 2825, 2832, 2839, 2846, 2853, 2860, - 2867, 2872, 2873, 2874, 2874, 2874, 2875, 2875, 2875, 2876, - 2877, 2877, 2878, 2878, 2879, 2879, 2880, 2881, 2882, 2883, - 2884, 2885, 2887, 2896, 2906, 2913, 2920, 2929, 2936, 2943, - 2950, 2957, 2966, 2975, 2982, 2989, 2999, 3009, 3019, 3029, - 3039, 3049, 3054, 3055, 3056, 3058, 3064, 3069, 3070, 3071, - 3073, 3079, 3089, 3096, 3105, 3113, 3118, 3119, 3121, 3121, - 3121, 3122, 3122, 3123, 3124, 3125, 3126, 3127, 3129, 3139, - 3148, 3155, 3164, 3171, 3180, 3188, 3201, 3209, 3222, 3227, - 3228, 3229, 3229, 3230, 3230, 3230, 3231, 3233, 3245, 3257, - 3269, 3284, 3297, 3310, 3321, 3326, 3327, 3328, 3328, 3330, - 3345 + 251, 251, 252, 252, 253, 253, 253, 254, 254, 254, + 255, 255, 256, 256, 256, 257, 257, 258, 258, 258, + 259, 259, 260, 260, 261, 261, 262, 263, 263, 264, + 264, 265, 265, 266, 267, 267, 268, 268, 269, 269, + 270, 270, 271, 271, 272, 272, 272, 273, 273, 274, + 274, 275, 275, 276, 276, 277, 277, 278, 278, 279, + 279, 279, 280, 280, 280, 281, 281, 281, 282, 282, + 283, 284, 284, 285, 285, 286, 286, 287, 287, 288, + 288, 288, 289, 289, 289, 290, 290, 290, 291, 291, + 292, 292, 293, 293, 294, 294, 295, 297, 309, 310, + 311, 311, 311, 311, 311, 312, 312, 314, 326, 327, + 328, 328, 328, 328, 329, 329, 331, 345, 346, 347, + 347, 347, 347, 348, 348, 348, 350, 367, 368, 369, + 369, 369, 369, 370, 370, 370, 371, 374, 393, 410, + 418, 428, 436, 453, 454, 455, 455, 455, 455, 455, + 456, 456, 456, 457, 457, 459, 468, 477, 488, 497, + 506, 515, 526, 535, 547, 561, 576, 587, 604, 621, + 638, 655, 670, 685, 698, 713, 722, 731, 740, 749, + 758, 767, 776, 785, 794, 803, 812, 821, 830, 839, + 852, 861, 874, 883, 892, 901, 908, 915, 924, 931, + 940, 948, 955, 962, 970, 979, 987, 1003, 1011, 1019, + 1027, 1035, 1043, 1052, 1061, 1075, 1084, 1093, 1102, 1111, + 1120, 1129, 1136, 1143, 1169, 1177, 1184, 1191, 1198, 1205, + 1213, 1221, 1229, 1236, 1247, 1258, 1265, 1274, 1283, 1292, + 1299, 1306, 1314, 1322, 1332, 1342, 1352, 1366, 1374, 1387, + 1398, 1406, 1419, 1428, 1437, 1446, 1455, 1465, 1475, 1483, + 1496, 1505, 1513, 1522, 1530, 1543, 1552, 1562, 1569, 1579, + 1589, 1599, 1609, 1619, 1629, 1639, 1649, 1656, 1663, 1670, + 1679, 1688, 1697, 1706, 1713, 1723, 1743, 1750, 1768, 1781, + 1794, 1803, 1812, 1821, 1830, 1840, 1850, 1861, 1870, 1879, + 1888, 1897, 1906, 1915, 1928, 1941, 1950, 1957, 1966, 1975, + 1984, 1993, 2001, 2014, 2022, 2063, 2070, 2085, 2095, 2105, + 2112, 2119, 2126, 2135, 2143, 2157, 2178, 2199, 2211, 2223, + 2235, 2244, 2265, 2275, 2284, 2292, 2300, 2313, 2326, 2341, + 2356, 2365, 2374, 2380, 2389, 2398, 2408, 2418, 2431, 2444, + 2456, 2470, 2482, 2496, 2511, 2522, 2532, 2539, 2546, 2555, + 2564, 2574, 2584, 2594, 2601, 2608, 2617, 2626, 2636, 2646, + 2653, 2660, 2667, 2675, 2685, 2695, 2705, 2715, 2754, 2764, + 2772, 2780, 2795, 2804, 2809, 2810, 2811, 2811, 2811, 2812, + 2812, 2812, 2813, 2813, 2815, 2825, 2834, 2841, 2848, 2855, + 2862, 2869, 2876, 2881, 2882, 2883, 2883, 2883, 2884, 2884, + 2884, 2885, 2886, 2886, 2887, 2887, 2888, 2888, 2889, 2890, + 2891, 2892, 2893, 2894, 2896, 2905, 2915, 2922, 2929, 2938, + 2945, 2952, 2959, 2966, 2975, 2984, 2991, 2998, 3008, 3018, + 3028, 3038, 3048, 3058, 3063, 3064, 3065, 3067, 3073, 3078, + 3079, 3080, 3082, 3088, 3098, 3105, 3114, 3122, 3127, 3128, + 3130, 3130, 3130, 3131, 3131, 3132, 3133, 3134, 3135, 3136, + 3138, 3148, 3157, 3164, 3173, 3180, 3189, 3197, 3210, 3218, + 3231, 3236, 3237, 3238, 3238, 3239, 3239, 3239, 3240, 3242, + 3254, 3266, 3278, 3293, 3306, 3319, 3330, 3335, 3336, 3337, + 3337, 3339, 3354 }; #endif @@ -1201,15 +1203,15 @@ static const char *const yytname[] = "VAR_HTTP_QUERY_BUFFER_SIZE", "VAR_HTTP_RESPONSE_BUFFER_SIZE", "VAR_HTTP_NODELAY", "VAR_HTTP_NOTLS_DOWNSTREAM", "VAR_STUB_FIRST", "VAR_MINIMAL_RESPONSES", "VAR_RRSET_ROUNDROBIN", "VAR_MAX_UDP_SIZE", - "VAR_DELAY_CLOSE", "VAR_UNBLOCK_LAN_ZONES", "VAR_INSECURE_LAN_ZONES", - "VAR_INFRA_CACHE_MIN_RTT", "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", - "VAR_DNS64_SYNTHALL", "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", - "VAR_DNSTAP_ENABLE", "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", - "VAR_DNSTAP_TLS", "VAR_DNSTAP_TLS_SERVER_NAME", - "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", - "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", - "VAR_DNSTAP_SEND_VERSION", "VAR_DNSTAP_BIDIRECTIONAL", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_DELAY_CLOSE", "VAR_UDP_CONNECT", "VAR_UNBLOCK_LAN_ZONES", + "VAR_INSECURE_LAN_ZONES", "VAR_INFRA_CACHE_MIN_RTT", + "VAR_INFRA_KEEP_PROBING", "VAR_DNS64_PREFIX", "VAR_DNS64_SYNTHALL", + "VAR_DNS64_IGNORE_AAAA", "VAR_DNSTAP", "VAR_DNSTAP_ENABLE", + "VAR_DNSTAP_SOCKET_PATH", "VAR_DNSTAP_IP", "VAR_DNSTAP_TLS", + "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", + "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", + "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", + "VAR_DNSTAP_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1311,7 +1313,7 @@ static const char *const yytname[] = "server_edns_buffer_size", "server_msg_buffer_size", "server_msg_cache_size", "server_msg_cache_slabs", "server_num_queries_per_thread", "server_jostle_timeout", - "server_delay_close", "server_unblock_lan_zones", + "server_delay_close", "server_udp_connect", "server_unblock_lan_zones", "server_insecure_lan_zones", "server_rrset_cache_size", "server_rrset_cache_slabs", "server_infra_host_ttl", "server_infra_lame_ttl", "server_infra_cache_numhosts", @@ -1432,14 +1434,14 @@ static const yytype_uint16 yytoknum[] = 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 + 555, 556, 557 }; # endif -#define YYPACT_NINF -290 +#define YYPACT_NINF -291 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-290))) + (!!((Yystate) == (-291))) #define YYTABLE_NINF -1 @@ -1450,100 +1452,100 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - -290, 0, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, 286, -42, -38, -43, -21, -44, -11, -95, - -109, -289, -214, -239, -281, 3, 4, 13, 25, 26, + -291, 0, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, 287, -42, -38, -43, -21, -44, -11, -96, + -109, -290, -215, -240, -282, 3, 4, 13, 25, 26, 27, 30, 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 54, 55, 84, 85, 88, 89, 91, 93, 94, 95, 96, 98, 99, 100, 101, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 131, 132, 133, 134, 135, 136, 137, + 126, 127, 128, 129, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 152, 153, 154, 155, 156, 157, 158, + 148, 149, 150, 151, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 169, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 214, 215, 216, 217, 218, 219, 220, 222, 223, 224, - 225, 226, 229, 231, 233, 246, 247, 248, 249, 250, - 251, 252, 253, 255, 256, 257, 258, 259, 260, 261, + 210, 215, 216, 217, 218, 219, 220, 221, 223, 224, + 225, 226, 227, 230, 232, 234, 247, 248, 249, 250, + 251, 252, 253, 254, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 279, 280, 281, 283, - 284, 285, 287, 321, 322, 323, 324, 328, 329, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, 330, 372, 373, 374, 375, 376, - 377, -290, -290, -290, -290, -290, -290, -290, -290, 378, - 379, 380, 384, 388, 389, -290, -290, -290, -290, -290, - -290, -290, 414, 415, 416, 425, 437, 438, 439, -290, - -290, -290, -290, -290, -290, -290, -290, 440, 441, 442, - 443, 444, 445, 446, 447, -290, -290, -290, -290, -290, - -290, -290, -290, -290, 448, 449, 450, 451, 452, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - 453, 454, 455, 456, 496, 498, 514, 515, -290, -290, - -290, -290, -290, -290, -290, -290, -290, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 531, 532, 533, 534, - 535, 536, 537, 539, 540, 541, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, 542, -290, -290, 543, - -290, -290, 544, 545, 548, 551, 554, 555, 564, 565, - 566, 568, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, 569, 570, 571, 572, 573, 574, -290, - -290, -290, -290, -290, -290, -290, 575, 578, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, 579, 580, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, 581, 582, 583, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, 584, - 585, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - 586, 587, 588, 589, 590, 591, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, 592, -290, -290, -290, -290, -290, -290, - -290, -290, -290, 593, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, 594, - -290, -290, 595, 596, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, 597, 598, 599, -290, -290, -290, - -290, -290, -290, -290, -290, -290 + 272, 273, 274, 275, 276, 277, 278, 280, 281, 282, + 284, 285, 286, 288, 322, 323, 324, 325, 329, 330, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, 331, 373, 374, 375, + 376, 377, 378, -291, -291, -291, -291, -291, -291, -291, + -291, 379, 380, 381, 385, 389, 390, -291, -291, -291, + -291, -291, -291, -291, 415, 416, 417, 426, 439, 440, + 441, -291, -291, -291, -291, -291, -291, -291, -291, 442, + 443, 444, 445, 446, 447, 448, 449, -291, -291, -291, + -291, -291, -291, -291, -291, -291, 450, 451, 452, 453, + 454, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, 455, 456, 457, 458, 498, 500, 516, 517, + -291, -291, -291, -291, -291, -291, -291, -291, -291, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 533, 534, + 535, 536, 537, 538, 539, 541, 542, 543, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, 544, -291, + -291, 545, -291, -291, 546, 547, 550, 553, 556, 557, + 566, 567, 568, 570, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, 571, 572, 573, 574, 575, + 576, -291, -291, -291, -291, -291, -291, -291, 577, 580, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, 581, 582, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, 583, + 584, 585, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, 586, 587, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, 588, 589, 590, 591, 592, 593, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, 594, -291, -291, -291, + -291, -291, -291, -291, -291, -291, 595, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, 596, -291, -291, 597, 598, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, 599, 600, 601, + -291, -291, -291, -291, -291, -291, -291, -291, -291 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1551,10 +1553,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 18, 19, 226, 236, 511, 571, 530, - 245, 585, 608, 255, 624, 271, 576, 3, 17, 21, - 228, 238, 247, 257, 273, 513, 532, 573, 578, 587, - 610, 626, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 227, 237, 513, 573, 532, + 246, 587, 610, 256, 626, 272, 578, 3, 17, 21, + 229, 239, 248, 258, 274, 515, 534, 575, 580, 589, + 612, 628, 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, @@ -1575,152 +1577,152 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 86, 89, 98, 194, 195, 24, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 37, 77, - 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 35, 36, 121, 206, 122, - 124, 125, 126, 208, 213, 209, 220, 221, 222, 223, - 127, 128, 129, 130, 131, 132, 133, 190, 87, 76, - 102, 119, 120, 218, 215, 123, 38, 39, 40, 41, - 42, 78, 92, 93, 108, 64, 74, 65, 198, 199, - 103, 58, 59, 197, 60, 61, 112, 116, 137, 146, - 173, 149, 219, 113, 71, 43, 44, 45, 100, 138, - 139, 140, 46, 47, 49, 50, 52, 53, 51, 144, - 150, 54, 55, 56, 62, 81, 117, 95, 145, 88, - 169, 96, 97, 114, 115, 216, 101, 57, 79, 82, - 63, 66, 104, 105, 80, 170, 106, 67, 68, 69, - 207, 118, 183, 184, 185, 186, 187, 188, 196, 107, - 75, 109, 110, 111, 171, 72, 73, 94, 83, 84, - 99, 134, 135, 217, 136, 141, 142, 143, 174, 175, - 177, 179, 180, 178, 181, 191, 147, 148, 153, 154, - 151, 152, 155, 156, 158, 157, 210, 212, 211, 172, - 182, 200, 202, 201, 203, 204, 205, 224, 225, 176, - 189, 192, 193, 214, 0, 0, 0, 0, 0, 0, - 0, 227, 229, 230, 231, 233, 234, 235, 232, 0, - 0, 0, 0, 0, 0, 237, 239, 240, 241, 242, - 243, 244, 0, 0, 0, 0, 0, 0, 0, 246, - 248, 249, 252, 253, 250, 254, 251, 0, 0, 0, - 0, 0, 0, 0, 0, 256, 258, 259, 260, 261, - 265, 262, 263, 264, 0, 0, 0, 0, 0, 276, - 280, 281, 282, 283, 272, 274, 275, 277, 278, 279, - 0, 0, 0, 0, 0, 0, 0, 0, 512, 514, - 516, 515, 521, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 531, 533, 535, 534, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 0, 572, 574, 0, - 577, 579, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 586, 588, 589, 590, 592, 593, 591, 594, - 595, 596, 597, 0, 0, 0, 0, 0, 0, 609, - 611, 612, 613, 614, 615, 616, 0, 0, 625, 627, - 628, 285, 284, 291, 304, 302, 314, 310, 311, 315, - 312, 313, 316, 317, 318, 319, 320, 350, 351, 352, - 353, 354, 379, 380, 381, 386, 387, 307, 388, 389, - 392, 390, 391, 395, 396, 397, 411, 365, 366, 368, - 369, 398, 414, 359, 361, 415, 421, 422, 423, 308, - 378, 439, 440, 360, 434, 343, 303, 355, 412, 418, - 399, 0, 0, 443, 309, 286, 342, 403, 287, 305, - 306, 356, 357, 441, 401, 405, 406, 288, 444, 382, - 410, 344, 364, 416, 417, 420, 433, 358, 437, 435, - 436, 370, 377, 407, 408, 371, 372, 400, 425, 345, - 346, 349, 321, 323, 324, 325, 326, 327, 334, 335, - 336, 337, 338, 339, 340, 445, 446, 448, 383, 384, - 385, 393, 394, 449, 450, 451, 0, 0, 0, 402, - 373, 375, 581, 460, 464, 462, 461, 465, 463, 0, - 0, 468, 469, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 404, 419, 438, 473, 474, 374, 452, - 0, 0, 0, 0, 0, 0, 426, 427, 428, 429, - 430, 431, 432, 582, 367, 362, 424, 341, 289, 290, - 363, 475, 477, 476, 478, 479, 480, 322, 329, 470, - 472, 471, 328, 0, 348, 409, 447, 347, 376, 330, - 331, 333, 332, 0, 482, 483, 484, 485, 489, 488, - 486, 487, 490, 491, 492, 493, 495, 494, 504, 0, - 508, 509, 0, 0, 510, 496, 502, 497, 498, 499, - 501, 503, 500, 266, 267, 268, 269, 270, 522, 524, - 523, 526, 527, 528, 529, 525, 552, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 553, 563, 564, 565, - 566, 567, 568, 569, 570, 575, 580, 598, 599, 600, - 603, 601, 602, 604, 605, 606, 607, 617, 618, 619, - 620, 621, 622, 629, 630, 413, 442, 459, 583, 584, - 466, 467, 453, 454, 0, 0, 0, 458, 623, 481, - 505, 506, 507, 457, 455, 456 + 20, 22, 23, 86, 89, 98, 195, 196, 24, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 35, 36, 121, 207, + 122, 124, 125, 126, 209, 214, 210, 221, 222, 223, + 224, 127, 128, 129, 130, 131, 132, 133, 191, 87, + 76, 102, 119, 120, 219, 216, 123, 38, 39, 40, + 41, 42, 78, 92, 93, 108, 64, 74, 65, 199, + 200, 103, 58, 59, 198, 60, 61, 112, 116, 137, + 147, 174, 150, 220, 113, 71, 43, 44, 45, 100, + 138, 139, 140, 141, 46, 47, 49, 50, 52, 53, + 51, 145, 151, 54, 55, 56, 62, 81, 117, 95, + 146, 88, 170, 96, 97, 114, 115, 217, 101, 57, + 79, 82, 63, 66, 104, 105, 80, 171, 106, 67, + 68, 69, 208, 118, 184, 185, 186, 187, 188, 189, + 197, 107, 75, 109, 110, 111, 172, 72, 73, 94, + 83, 84, 99, 134, 135, 218, 136, 142, 143, 144, + 175, 176, 178, 180, 181, 179, 182, 192, 148, 149, + 154, 155, 152, 153, 156, 157, 159, 158, 211, 213, + 212, 173, 183, 201, 203, 202, 204, 205, 206, 225, + 226, 177, 190, 193, 194, 215, 0, 0, 0, 0, + 0, 0, 0, 228, 230, 231, 232, 234, 235, 236, + 233, 0, 0, 0, 0, 0, 0, 238, 240, 241, + 242, 243, 244, 245, 0, 0, 0, 0, 0, 0, + 0, 247, 249, 250, 253, 254, 251, 255, 252, 0, + 0, 0, 0, 0, 0, 0, 0, 257, 259, 260, + 261, 262, 266, 263, 264, 265, 0, 0, 0, 0, + 0, 277, 281, 282, 283, 284, 273, 275, 276, 278, + 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, + 514, 516, 518, 517, 523, 519, 520, 521, 522, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 533, 535, + 537, 536, 538, 539, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 0, 574, + 576, 0, 579, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 588, 590, 591, 592, 594, 595, + 593, 596, 597, 598, 599, 0, 0, 0, 0, 0, + 0, 611, 613, 614, 615, 616, 617, 618, 0, 0, + 627, 629, 630, 286, 285, 292, 305, 303, 315, 311, + 312, 316, 313, 314, 317, 318, 319, 320, 321, 351, + 352, 353, 354, 355, 380, 381, 382, 388, 389, 308, + 390, 391, 394, 392, 393, 397, 398, 399, 413, 366, + 367, 369, 370, 400, 416, 360, 362, 417, 423, 424, + 425, 309, 379, 441, 442, 361, 436, 344, 304, 356, + 414, 420, 401, 0, 0, 445, 310, 287, 343, 405, + 288, 306, 307, 357, 358, 443, 403, 407, 408, 289, + 446, 383, 412, 345, 365, 418, 419, 422, 435, 359, + 439, 437, 438, 371, 378, 409, 410, 372, 373, 402, + 427, 346, 347, 350, 322, 324, 325, 326, 327, 328, + 335, 336, 337, 338, 339, 340, 341, 447, 448, 450, + 384, 385, 386, 387, 395, 396, 451, 452, 453, 0, + 0, 0, 404, 374, 376, 583, 462, 466, 464, 463, + 467, 465, 0, 0, 470, 471, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 406, 421, 440, 475, + 476, 375, 454, 0, 0, 0, 0, 0, 0, 428, + 429, 430, 431, 432, 433, 434, 584, 368, 363, 426, + 342, 290, 291, 364, 477, 479, 478, 480, 481, 482, + 323, 330, 472, 474, 473, 329, 0, 349, 411, 449, + 348, 377, 331, 332, 334, 333, 0, 484, 485, 486, + 487, 491, 490, 488, 489, 492, 493, 494, 495, 497, + 496, 506, 0, 510, 511, 0, 0, 512, 498, 504, + 499, 500, 501, 503, 505, 502, 267, 268, 269, 270, + 271, 524, 526, 525, 528, 529, 530, 531, 527, 554, + 556, 557, 558, 559, 560, 561, 562, 563, 564, 555, + 565, 566, 567, 568, 569, 570, 571, 572, 577, 582, + 600, 601, 602, 605, 603, 604, 606, 607, 608, 609, + 619, 620, 621, 622, 623, 624, 631, 632, 415, 444, + 461, 585, 586, 468, 469, 455, 456, 0, 0, 0, + 460, 625, 483, 507, 508, 509, 459, 457, 458 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, 576, - 577, 600, 601, 602, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290, -290, -290, -290, - -290, -290, -290, -290, -290, -290, -290 + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + 578, 579, 602, 603, 604, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 249, 20, 33, 461, - 21, 34, 475, 22, 35, 489, 23, 36, 505, 519, - 520, 521, 522, 523, 24, 37, 524, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 462, 463, 464, 465, - 466, 467, 468, 476, 477, 478, 479, 480, 481, 506, - 507, 508, 509, 510, 511, 512, 513, 490, 491, 492, - 493, 494, 495, 496, 25, 38, 538, 539, 540, 541, - 542, 543, 544, 545, 546, 26, 39, 566, 567, 568, - 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, - 579, 580, 581, 582, 583, 584, 585, 27, 40, 587, - 588, 28, 41, 590, 591, 449, 450, 451, 452, 29, - 42, 602, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 30, 43, 619, 620, 621, 622, 623, 624, - 625, 453, 31, 44, 628, 629, 630 + -1, 1, 17, 18, 19, 32, 250, 20, 33, 463, + 21, 34, 477, 22, 35, 491, 23, 36, 507, 521, + 522, 523, 524, 525, 24, 37, 526, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 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, 464, 465, 466, + 467, 468, 469, 470, 478, 479, 480, 481, 482, 483, + 508, 509, 510, 511, 512, 513, 514, 515, 492, 493, + 494, 495, 496, 497, 498, 25, 38, 540, 541, 542, + 543, 544, 545, 546, 547, 548, 26, 39, 568, 569, + 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, + 580, 581, 582, 583, 584, 585, 586, 587, 27, 40, + 589, 590, 28, 41, 592, 593, 451, 452, 453, 454, + 29, 42, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 613, 614, 30, 43, 621, 622, 623, 624, 625, + 626, 627, 455, 31, 44, 630, 631, 632 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1728,149 +1730,151 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 497, 482, 454, 586, 455, 456, 469, 626, 627, - 589, 3, 4, 631, 632, 470, 471, 613, 614, 615, - 616, 617, 618, 633, 497, 592, 593, 594, 595, 596, - 597, 598, 599, 600, 601, 634, 635, 636, 483, 484, - 637, 638, 639, 640, 641, 642, 5, 643, 644, 645, - 646, 647, 6, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 485, 658, 659, 457, 547, 548, 549, - 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, - 560, 561, 562, 563, 564, 565, 530, 531, 532, 533, - 534, 535, 536, 537, 660, 661, 7, 458, 662, 663, - 472, 664, 473, 665, 666, 667, 668, 459, 669, 670, - 671, 672, 8, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, - 690, 691, 692, 693, 694, 695, 696, 697, 698, 486, - 487, 699, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 9, 719, 720, 721, 722, 723, 724, 725, 726, - 727, 728, 729, 730, 731, 732, 733, 734, 735, 488, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 10, 499, 500, 501, 776, 777, 778, 779, 780, 781, - 782, 504, 783, 784, 785, 786, 787, 460, 11, 788, - 474, 789, 498, 790, 499, 500, 501, 502, 503, 514, - 515, 516, 517, 518, 504, 12, 791, 792, 793, 794, - 795, 796, 797, 798, 13, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 817, 818, 819, 820, 821, 14, 822, - 823, 824, 15, 825, 826, 827, 0, 828, 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, 829, 830, 831, 832, 77, 78, 79, 833, 834, - 835, 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, 836, 837, 838, 839, 840, 841, 842, 843, - 844, 121, 122, 123, 845, 124, 125, 126, 846, 847, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 848, 849, 850, 151, 152, 153, - 154, 155, 156, 157, 158, 851, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 863, 864, - 865, 866, 867, 868, 869, 870, 871, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 872, 209, 873, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 874, 875, 876, 877, 878, 879, - 880, 881, 882, 883, 884, 225, 226, 227, 228, 229, - 230, 885, 886, 887, 888, 889, 890, 891, 231, 892, - 893, 894, 895, 896, 897, 898, 232, 233, 899, 234, - 235, 900, 236, 237, 901, 902, 238, 239, 240, 241, - 242, 243, 244, 245, 903, 904, 905, 246, 906, 907, - 908, 909, 910, 911, 912, 913, 247, 248, 914, 915, - 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, - 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, - 0, 0, 0, 525, 526, 0, 0, 0, 0, 0, + 2, 499, 484, 456, 588, 457, 458, 471, 628, 629, + 591, 3, 4, 633, 634, 472, 473, 615, 616, 617, + 618, 619, 620, 635, 499, 594, 595, 596, 597, 598, + 599, 600, 601, 602, 603, 636, 637, 638, 485, 486, + 639, 640, 641, 642, 643, 644, 5, 645, 646, 647, + 648, 649, 6, 650, 651, 652, 653, 654, 655, 656, + 657, 658, 659, 487, 660, 661, 459, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, + 562, 563, 564, 565, 566, 567, 532, 533, 534, 535, + 536, 537, 538, 539, 662, 663, 7, 460, 664, 665, + 474, 666, 475, 667, 668, 669, 670, 461, 671, 672, + 673, 674, 8, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, + 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, + 488, 489, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 9, 722, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, + 490, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 10, 501, 502, 503, 779, 780, 781, 782, 783, + 784, 785, 506, 786, 787, 788, 789, 790, 462, 11, + 791, 476, 792, 500, 793, 501, 502, 503, 504, 505, + 516, 517, 518, 519, 520, 506, 12, 794, 795, 796, + 797, 798, 799, 800, 801, 13, 802, 803, 804, 805, + 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, + 816, 817, 818, 819, 820, 821, 822, 823, 824, 14, + 825, 826, 827, 15, 828, 829, 830, 0, 831, 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, 832, 833, 834, 835, 77, 78, 79, 836, + 837, 838, 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, 839, 840, 841, 842, 843, 844, 845, + 846, 847, 121, 122, 123, 848, 124, 125, 126, 849, + 850, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 851, 852, 853, 151, 152, + 153, 154, 155, 156, 157, 158, 854, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 866, 867, 868, 869, 870, 871, 872, 873, 874, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 875, 210, + 876, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 226, 227, 228, + 229, 230, 231, 888, 889, 890, 891, 892, 893, 894, + 232, 895, 896, 897, 898, 899, 900, 901, 233, 234, + 902, 235, 236, 903, 237, 238, 904, 905, 239, 240, + 241, 242, 243, 244, 245, 246, 906, 907, 908, 247, + 909, 910, 911, 912, 913, 914, 915, 916, 248, 249, + 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, + 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, + 937, 938, 0, 0, 0, 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 527, 528, 529 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, + 530, 531 }; static const yytype_int16 yycheck[] = { - 0, 45, 45, 45, 113, 47, 48, 45, 289, 290, - 299, 11, 12, 10, 10, 53, 54, 256, 257, 258, - 259, 260, 261, 10, 45, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 10, 10, 10, 81, 82, + 0, 45, 45, 45, 113, 47, 48, 45, 290, 291, + 300, 11, 12, 10, 10, 53, 54, 257, 258, 259, + 260, 261, 262, 10, 45, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 10, 10, 10, 81, 82, 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 106, 10, 10, 108, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 97, 98, 99, 100, + 10, 10, 10, 106, 10, 10, 108, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 97, 98, 99, 100, 101, 102, 103, 104, 10, 10, 96, 139, 10, 10, 138, 10, 140, 10, 10, 10, 10, 149, 10, 10, 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 183, 184, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 162, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 223, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 221, 266, 267, 268, 10, 10, 10, 10, 10, + 10, 10, 276, 10, 10, 10, 10, 10, 280, 239, + 10, 279, 10, 264, 10, 266, 267, 268, 269, 270, + 294, 295, 296, 297, 298, 276, 256, 10, 10, 10, + 10, 10, 10, 10, 10, 265, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 289, + 10, 10, 10, 293, 10, 10, 10, -1, 10, 299, + 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, 10, 109, 110, 111, 10, + 10, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 10, 10, 10, 141, 142, + 143, 144, 145, 146, 147, 148, 10, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 182, - 183, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 161, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 222, + 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, 10, 222, + 10, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 250, 251, 252, + 253, 254, 255, 10, 10, 10, 10, 10, 10, 10, + 263, 10, 10, 10, 10, 10, 10, 10, 271, 272, + 10, 274, 275, 10, 277, 278, 10, 10, 281, 282, + 283, 284, 285, 286, 287, 288, 10, 10, 10, 292, + 10, 10, 10, 10, 10, 10, 10, 10, 301, 302, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 220, 265, 266, 267, 10, 10, 10, 10, 10, 10, - 10, 275, 10, 10, 10, 10, 10, 279, 238, 10, - 278, 10, 263, 10, 265, 266, 267, 268, 269, 293, - 294, 295, 296, 297, 275, 255, 10, 10, 10, 10, - 10, 10, 10, 10, 264, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 288, 10, - 10, 10, 292, 10, 10, 10, -1, 10, 298, 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, 10, 109, 110, 111, 10, 10, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 10, 10, 10, 141, 142, 143, - 144, 145, 146, 147, 148, 10, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 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, 10, 221, 10, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 249, 250, 251, 252, 253, - 254, 10, 10, 10, 10, 10, 10, 10, 262, 10, - 10, 10, 10, 10, 10, 10, 270, 271, 10, 273, - 274, 10, 276, 277, 10, 10, 280, 281, 282, 283, - 284, 285, 286, 287, 10, 10, 10, 291, 10, 10, - 10, 10, 10, 10, 10, 10, 300, 301, 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, 37, 37, -1, -1, -1, -1, -1, + 10, 10, -1, -1, -1, 37, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 37, 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 303, 0, 11, 12, 46, 52, 96, 112, 161, - 220, 238, 255, 264, 288, 292, 298, 304, 305, 306, - 309, 312, 315, 318, 326, 556, 567, 589, 593, 601, - 614, 624, 307, 310, 313, 316, 319, 327, 557, 568, - 590, 594, 602, 615, 625, 13, 14, 15, 16, 17, + 0, 304, 0, 11, 12, 46, 52, 96, 112, 162, + 221, 239, 256, 265, 289, 293, 299, 305, 306, 307, + 310, 313, 316, 319, 327, 558, 569, 591, 595, 603, + 616, 626, 308, 311, 314, 317, 320, 328, 559, 570, + 592, 596, 604, 617, 627, 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, @@ -1883,15 +1887,15 @@ static const yytype_uint16 yystos[] = 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 161, 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, 221, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 249, 250, 251, 252, 253, - 254, 262, 270, 271, 273, 274, 276, 277, 280, 281, - 282, 283, 284, 285, 286, 287, 291, 300, 301, 308, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 222, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 250, 251, 252, 253, + 254, 255, 263, 271, 272, 274, 275, 277, 278, 281, + 282, 283, 284, 285, 286, 287, 288, 292, 301, 302, + 309, 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, @@ -1910,26 +1914,26 @@ static const yytype_uint16 yystos[] = 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, 597, - 598, 599, 600, 623, 45, 47, 48, 108, 139, 149, - 279, 311, 528, 529, 530, 531, 532, 533, 534, 45, - 53, 54, 138, 140, 278, 314, 535, 536, 537, 538, - 539, 540, 45, 81, 82, 106, 182, 183, 222, 317, - 549, 550, 551, 552, 553, 554, 555, 45, 263, 265, - 266, 267, 268, 269, 275, 320, 541, 542, 543, 544, - 545, 546, 547, 548, 293, 294, 295, 296, 297, 321, - 322, 323, 324, 325, 328, 541, 542, 543, 544, 545, - 97, 98, 99, 100, 101, 102, 103, 104, 558, 559, - 560, 561, 562, 563, 564, 565, 566, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 569, 570, 571, 572, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 599, 600, 601, 602, 625, 45, 47, 48, 108, + 139, 149, 280, 312, 530, 531, 532, 533, 534, 535, + 536, 45, 53, 54, 138, 140, 279, 315, 537, 538, + 539, 540, 541, 542, 45, 81, 82, 106, 183, 184, + 223, 318, 551, 552, 553, 554, 555, 556, 557, 45, + 264, 266, 267, 268, 269, 270, 276, 321, 543, 544, + 545, 546, 547, 548, 549, 550, 294, 295, 296, 297, + 298, 322, 323, 324, 325, 326, 329, 543, 544, 545, + 546, 547, 97, 98, 99, 100, 101, 102, 103, 104, + 560, 561, 562, 563, 564, 565, 566, 567, 568, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 113, 591, 592, 299, - 595, 596, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 256, 257, 258, 259, 260, 261, 616, - 617, 618, 619, 620, 621, 622, 289, 290, 626, 627, - 628, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 583, 584, 585, 586, 587, 588, 589, 590, 113, 593, + 594, 300, 597, 598, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 605, 606, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 257, 258, 259, 260, 261, + 262, 618, 619, 620, 621, 622, 623, 624, 290, 291, + 628, 629, 630, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1959,41 +1963,41 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 302, 303, 303, 304, 304, 304, 304, 304, 304, - 304, 304, 304, 304, 304, 304, 304, 304, 305, 306, - 307, 307, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 309, 310, 310, 311, - 311, 311, 311, 311, 311, 311, 312, 313, 313, 314, - 314, 314, 314, 314, 314, 315, 316, 316, 317, 317, - 317, 317, 317, 317, 317, 318, 319, 319, 320, 320, - 320, 320, 320, 320, 320, 320, 321, 322, 323, 324, - 325, 326, 327, 327, 328, 328, 328, 328, 328, 328, - 328, 328, 328, 328, 329, 330, 331, 332, 333, 334, + 0, 303, 304, 304, 305, 305, 305, 305, 305, 305, + 305, 305, 305, 305, 305, 305, 305, 305, 306, 307, + 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, + 309, 309, 309, 309, 309, 309, 309, 310, 311, 311, + 312, 312, 312, 312, 312, 312, 312, 313, 314, 314, + 315, 315, 315, 315, 315, 315, 316, 317, 317, 318, + 318, 318, 318, 318, 318, 318, 319, 320, 320, 321, + 321, 321, 321, 321, 321, 321, 321, 322, 323, 324, + 325, 326, 327, 328, 328, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 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, @@ -2016,19 +2020,19 @@ static const yytype_uint16 yyr1[] = 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, 557, 558, 558, 558, 558, 558, 558, - 558, 558, 559, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 568, 569, 569, 569, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, 569, 569, 569, 569, - 569, 569, 570, 571, 572, 573, 574, 575, 576, 577, + 555, 556, 557, 558, 559, 559, 560, 560, 560, 560, + 560, 560, 560, 560, 561, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 570, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, + 571, 571, 571, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 590, 591, 592, 593, 594, 594, 595, - 596, 597, 598, 599, 600, 601, 602, 602, 603, 603, - 603, 603, 603, 603, 603, 603, 603, 603, 604, 605, + 588, 589, 590, 591, 592, 592, 593, 594, 595, 596, + 596, 597, 598, 599, 600, 601, 602, 603, 604, 604, + 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 615, 616, 616, 616, 616, 616, 616, 617, 618, 619, - 620, 621, 622, 623, 624, 625, 625, 626, 626, 627, - 628 + 616, 617, 617, 618, 618, 618, 618, 618, 618, 619, + 620, 621, 622, 623, 624, 625, 626, 627, 627, 628, + 628, 629, 630 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2056,13 +2060,13 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2075,29 +2079,29 @@ static const yytype_uint8 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, + 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, + 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 3, 4, 4, 4, 3, 3, - 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2786,7 +2790,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2790 "util/configparser.c" +#line 2794 "util/configparser.c" break; case 19: @@ -2794,10 +2798,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2798 "util/configparser.c" +#line 2802 "util/configparser.c" break; - case 226: + case 227: #line 298 "./util/configparser.y" { struct config_stub* s; @@ -2809,10 +2813,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2813 "util/configparser.c" +#line 2817 "util/configparser.c" break; - case 236: + case 237: #line 315 "./util/configparser.y" { struct config_stub* s; @@ -2824,10 +2828,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2828 "util/configparser.c" +#line 2832 "util/configparser.c" break; - case 245: + case 246: #line 332 "./util/configparser.y" { struct config_view* s; @@ -2841,10 +2845,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2845 "util/configparser.c" +#line 2849 "util/configparser.c" break; - case 255: + case 256: #line 351 "./util/configparser.y" { struct config_auth* s; @@ -2861,10 +2865,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2865 "util/configparser.c" +#line 2869 "util/configparser.c" break; - case 266: + case 267: #line 375 "./util/configparser.y" { uint8_t* bitlist; @@ -2882,10 +2886,10 @@ yyreduce: } } -#line 2886 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 267: + case 268: #line 394 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2901,20 +2905,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2905 "util/configparser.c" +#line 2909 "util/configparser.c" break; - case 268: + case 269: #line 411 "./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 2915 "util/configparser.c" +#line 2919 "util/configparser.c" break; - case 269: + case 270: #line 419 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2923,20 +2927,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2931 "util/configparser.c" break; - case 270: + case 271: #line 429 "./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 2937 "util/configparser.c" +#line 2941 "util/configparser.c" break; - case 271: + case 272: #line 437 "./util/configparser.y" { struct config_auth* s; @@ -2953,10 +2957,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2957 "util/configparser.c" +#line 2961 "util/configparser.c" break; - case 284: + case 285: #line 460 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -2965,10 +2969,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2969 "util/configparser.c" +#line 2973 "util/configparser.c" break; - case 285: + case 286: #line 469 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -2977,10 +2981,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2981 "util/configparser.c" +#line 2985 "util/configparser.c" break; - case 286: + case 287: #line 478 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -2991,10 +2995,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2995 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 287: + case 288: #line 489 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3003,10 +3007,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3007 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 288: + case 289: #line 498 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3015,10 +3019,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3019 "util/configparser.c" +#line 3023 "util/configparser.c" break; - case 289: + case 290: #line 507 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3027,10 +3031,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3031 "util/configparser.c" +#line 3035 "util/configparser.c" break; - case 290: + case 291: #line 516 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3041,10 +3045,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3045 "util/configparser.c" +#line 3049 "util/configparser.c" break; - case 291: + case 292: #line 527 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3053,10 +3057,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3057 "util/configparser.c" +#line 3061 "util/configparser.c" break; - case 292: + case 293: #line 536 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3068,10 +3072,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3072 "util/configparser.c" +#line 3076 "util/configparser.c" break; - case 293: + case 294: #line 548 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3084,10 +3088,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3088 "util/configparser.c" +#line 3092 "util/configparser.c" break; - case 294: + case 295: #line 562 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3102,10 +3106,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3106 "util/configparser.c" +#line 3110 "util/configparser.c" break; - case 295: + case 296: #line 577 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3116,10 +3120,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3124 "util/configparser.c" break; - case 296: + case 297: #line 588 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3136,10 +3140,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3140 "util/configparser.c" +#line 3144 "util/configparser.c" break; - case 297: + case 298: #line 605 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3156,10 +3160,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3160 "util/configparser.c" +#line 3164 "util/configparser.c" break; - case 298: + case 299: #line 622 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3176,10 +3180,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3180 "util/configparser.c" +#line 3184 "util/configparser.c" break; - case 299: + case 300: #line 639 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3196,10 +3200,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3200 "util/configparser.c" +#line 3204 "util/configparser.c" break; - case 300: + case 301: #line 656 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3214,10 +3218,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3218 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 301: + case 302: #line 671 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3232,10 +3236,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3236 "util/configparser.c" +#line 3240 "util/configparser.c" break; - case 302: + case 303: #line 686 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3248,10 +3252,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3252 "util/configparser.c" +#line 3256 "util/configparser.c" break; - case 303: + case 304: #line 699 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3266,10 +3270,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3270 "util/configparser.c" +#line 3274 "util/configparser.c" break; - case 304: + case 305: #line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3278,10 +3282,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3282 "util/configparser.c" +#line 3286 "util/configparser.c" break; - case 305: + case 306: #line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3290,10 +3294,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3294 "util/configparser.c" +#line 3298 "util/configparser.c" break; - case 306: + case 307: #line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3302,10 +3306,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3306 "util/configparser.c" +#line 3310 "util/configparser.c" break; - case 307: + case 308: #line 741 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3314,10 +3318,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3318 "util/configparser.c" +#line 3322 "util/configparser.c" break; - case 308: + case 309: #line 750 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3326,10 +3330,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3330 "util/configparser.c" +#line 3334 "util/configparser.c" break; - case 309: + case 310: #line 759 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3338,10 +3342,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3342 "util/configparser.c" +#line 3346 "util/configparser.c" break; - case 310: + case 311: #line 768 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3350,10 +3354,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3354 "util/configparser.c" +#line 3358 "util/configparser.c" break; - case 311: + case 312: #line 777 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3362,10 +3366,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3366 "util/configparser.c" +#line 3370 "util/configparser.c" break; - case 312: + case 313: #line 786 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3374,10 +3378,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3378 "util/configparser.c" +#line 3382 "util/configparser.c" break; - case 313: + case 314: #line 795 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3386,10 +3390,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3390 "util/configparser.c" +#line 3394 "util/configparser.c" break; - case 314: + case 315: #line 804 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3398,10 +3402,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3406 "util/configparser.c" break; - case 315: + case 316: #line 813 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3410,10 +3414,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3418 "util/configparser.c" break; - case 316: + case 317: #line 822 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3422,10 +3426,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3430 "util/configparser.c" break; - case 317: + case 318: #line 831 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3434,10 +3438,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3442 "util/configparser.c" break; - case 318: + case 319: #line 840 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3450,10 +3454,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3454 "util/configparser.c" +#line 3458 "util/configparser.c" break; - case 319: + case 320: #line 853 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3462,10 +3466,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3466 "util/configparser.c" +#line 3470 "util/configparser.c" break; - case 320: + case 321: #line 862 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3478,10 +3482,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3482 "util/configparser.c" +#line 3486 "util/configparser.c" break; - case 321: + case 322: #line 875 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3490,10 +3494,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3494 "util/configparser.c" +#line 3498 "util/configparser.c" break; - case 322: + case 323: #line 884 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3502,10 +3506,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3506 "util/configparser.c" +#line 3510 "util/configparser.c" break; - case 323: + case 324: #line 893 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3514,30 +3518,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3518 "util/configparser.c" +#line 3522 "util/configparser.c" break; - case 324: + case 325: #line 902 "./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 3528 "util/configparser.c" +#line 3532 "util/configparser.c" break; - case 325: + case 326: #line 909 "./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 3538 "util/configparser.c" +#line 3542 "util/configparser.c" break; - case 326: + case 327: #line 916 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3546,20 +3550,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3550 "util/configparser.c" +#line 3554 "util/configparser.c" break; - case 327: + case 328: #line 925 "./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 3560 "util/configparser.c" +#line 3564 "util/configparser.c" break; - case 328: + case 329: #line 932 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3568,10 +3572,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3572 "util/configparser.c" +#line 3576 "util/configparser.c" break; - case 329: + case 330: #line 941 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3579,30 +3583,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3583 "util/configparser.c" +#line 3587 "util/configparser.c" break; - case 330: + case 331: #line 949 "./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 3593 "util/configparser.c" +#line 3597 "util/configparser.c" break; - case 331: + case 332: #line 956 "./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 3603 "util/configparser.c" +#line 3607 "util/configparser.c" break; - case 332: + case 333: #line 963 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3610,10 +3614,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3614 "util/configparser.c" +#line 3618 "util/configparser.c" break; - case 333: + case 334: #line 971 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3622,10 +3626,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3626 "util/configparser.c" +#line 3630 "util/configparser.c" break; - case 334: + case 335: #line 980 "./util/configparser.y" { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); @@ -3634,10 +3638,10 @@ yyreduce: else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3638 "util/configparser.c" +#line 3642 "util/configparser.c" break; - case 335: + case 336: #line 988 "./util/configparser.y" { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); @@ -3654,10 +3658,10 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3658 "util/configparser.c" +#line 3662 "util/configparser.c" break; - case 336: + case 337: #line 1004 "./util/configparser.y" { OUTYY(("P(server_http_max_streams:%s)\n", (yyvsp[0].str))); @@ -3666,10 +3670,10 @@ yyreduce: else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3670 "util/configparser.c" +#line 3674 "util/configparser.c" break; - case 337: + case 338: #line 1012 "./util/configparser.y" { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3678,10 +3682,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3682 "util/configparser.c" +#line 3686 "util/configparser.c" break; - case 338: + case 339: #line 1020 "./util/configparser.y" { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); @@ -3690,10 +3694,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3694 "util/configparser.c" +#line 3698 "util/configparser.c" break; - case 339: + case 340: #line 1028 "./util/configparser.y" { OUTYY(("P(server_http_nodelay:%s)\n", (yyvsp[0].str))); @@ -3702,10 +3706,10 @@ yyreduce: else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 3710 "util/configparser.c" break; - case 340: + case 341: #line 1036 "./util/configparser.y" { OUTYY(("P(server_http_notls_downstream:%s)\n", (yyvsp[0].str))); @@ -3714,10 +3718,10 @@ yyreduce: else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3718 "util/configparser.c" +#line 3722 "util/configparser.c" break; - case 341: + case 342: #line 1044 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3726,10 +3730,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3734 "util/configparser.c" break; - case 342: + case 343: #line 1053 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3738,10 +3742,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3742 "util/configparser.c" +#line 3746 "util/configparser.c" break; - case 343: + case 344: #line 1062 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3755,10 +3759,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3759 "util/configparser.c" +#line 3763 "util/configparser.c" break; - case 344: + case 345: #line 1076 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3767,10 +3771,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3771 "util/configparser.c" +#line 3775 "util/configparser.c" break; - case 345: + case 346: #line 1085 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3779,10 +3783,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3783 "util/configparser.c" +#line 3787 "util/configparser.c" break; - case 346: + case 347: #line 1094 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3791,10 +3795,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3795 "util/configparser.c" +#line 3799 "util/configparser.c" break; - case 347: + case 348: #line 1103 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3803,10 +3807,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3807 "util/configparser.c" +#line 3811 "util/configparser.c" break; - case 348: + case 349: #line 1112 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3815,10 +3819,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3819 "util/configparser.c" +#line 3823 "util/configparser.c" break; - case 349: + case 350: #line 1121 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3827,30 +3831,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3831 "util/configparser.c" +#line 3835 "util/configparser.c" break; - case 350: + case 351: #line 1130 "./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 3841 "util/configparser.c" +#line 3845 "util/configparser.c" break; - case 351: + case 352: #line 1137 "./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 3851 "util/configparser.c" +#line 3855 "util/configparser.c" break; - case 352: + case 353: #line 1144 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3876,10 +3880,10 @@ yyreduce: } } } -#line 3880 "util/configparser.c" +#line 3884 "util/configparser.c" break; - case 353: + case 354: #line 1170 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3887,50 +3891,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3891 "util/configparser.c" +#line 3895 "util/configparser.c" break; - case 354: + case 355: #line 1178 "./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 3901 "util/configparser.c" +#line 3905 "util/configparser.c" break; - case 355: + case 356: #line 1185 "./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 3911 "util/configparser.c" +#line 3915 "util/configparser.c" break; - case 356: + case 357: #line 1192 "./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 3921 "util/configparser.c" +#line 3925 "util/configparser.c" break; - case 357: + case 358: #line 1199 "./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 3931 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 358: + case 359: #line 1206 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3938,10 +3942,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3942 "util/configparser.c" +#line 3946 "util/configparser.c" break; - case 359: + case 360: #line 1214 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3949,10 +3953,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3953 "util/configparser.c" +#line 3957 "util/configparser.c" break; - case 360: + case 361: #line 1222 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -3960,20 +3964,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3964 "util/configparser.c" +#line 3968 "util/configparser.c" break; - case 361: + case 362: #line 1230 "./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 3974 "util/configparser.c" +#line 3978 "util/configparser.c" break; - case 362: + case 363: #line 1237 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -3984,10 +3988,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3988 "util/configparser.c" +#line 3992 "util/configparser.c" break; - case 363: + case 364: #line 1248 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -3998,20 +4002,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4002 "util/configparser.c" +#line 4006 "util/configparser.c" break; - case 364: + case 365: #line 1259 "./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 4012 "util/configparser.c" +#line 4016 "util/configparser.c" break; - case 365: + case 366: #line 1266 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -4020,10 +4024,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4024 "util/configparser.c" +#line 4028 "util/configparser.c" break; - case 366: + case 367: #line 1275 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -4032,10 +4036,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4036 "util/configparser.c" +#line 4040 "util/configparser.c" break; - case 367: + case 368: #line 1284 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -4044,30 +4048,30 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4048 "util/configparser.c" +#line 4052 "util/configparser.c" break; - case 368: + case 369: #line 1293 "./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 4058 "util/configparser.c" +#line 4062 "util/configparser.c" break; - case 369: + case 370: #line 1300 "./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 4068 "util/configparser.c" +#line 4072 "util/configparser.c" break; - case 370: + case 371: #line 1307 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4075,10 +4079,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4079 "util/configparser.c" +#line 4083 "util/configparser.c" break; - case 371: + case 372: #line 1315 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4086,10 +4090,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4090 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 372: + case 373: #line 1323 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4099,10 +4103,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4103 "util/configparser.c" +#line 4107 "util/configparser.c" break; - case 373: + case 374: #line 1333 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4112,10 +4116,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4116 "util/configparser.c" +#line 4120 "util/configparser.c" break; - case 374: + case 375: #line 1343 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4125,10 +4129,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4129 "util/configparser.c" +#line 4133 "util/configparser.c" break; - case 375: + case 376: #line 1353 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4142,10 +4146,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4146 "util/configparser.c" +#line 4150 "util/configparser.c" break; - case 376: + case 377: #line 1367 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4153,10 +4157,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4157 "util/configparser.c" +#line 4161 "util/configparser.c" break; - case 377: + case 378: #line 1375 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4169,10 +4173,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4177 "util/configparser.c" break; - case 378: + case 379: #line 1388 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4183,10 +4187,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4187 "util/configparser.c" +#line 4191 "util/configparser.c" break; - case 379: + case 380: #line 1399 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4194,10 +4198,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4198 "util/configparser.c" +#line 4202 "util/configparser.c" break; - case 380: + case 381: #line 1407 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4210,10 +4214,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4214 "util/configparser.c" +#line 4218 "util/configparser.c" break; - case 381: + case 382: #line 1420 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4222,10 +4226,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4226 "util/configparser.c" +#line 4230 "util/configparser.c" break; - case 382: + case 383: #line 1429 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4234,10 +4238,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4238 "util/configparser.c" +#line 4242 "util/configparser.c" break; - case 383: + case 384: #line 1438 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4246,11 +4250,23 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" +#line 4254 "util/configparser.c" break; - case 384: + case 385: #line 1447 "./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) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 4266 "util/configparser.c" + break; + + case 386: +#line 1456 "./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) @@ -4259,11 +4275,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4263 "util/configparser.c" +#line 4279 "util/configparser.c" break; - case 385: -#line 1457 "./util/configparser.y" + case 387: +#line 1466 "./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) @@ -4272,22 +4288,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4276 "util/configparser.c" +#line 4292 "util/configparser.c" break; - case 386: -#line 1467 "./util/configparser.y" + case 388: +#line 1476 "./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 4287 "util/configparser.c" +#line 4303 "util/configparser.c" break; - case 387: -#line 1475 "./util/configparser.y" + case 389: +#line 1484 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4299,11 +4315,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4303 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 388: -#line 1488 "./util/configparser.y" + case 390: +#line 1497 "./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) @@ -4311,22 +4327,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4315 "util/configparser.c" +#line 4331 "util/configparser.c" break; - case 389: -#line 1497 "./util/configparser.y" + case 391: +#line 1506 "./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 4326 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 390: -#line 1505 "./util/configparser.y" + case 392: +#line 1514 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4334,22 +4350,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4338 "util/configparser.c" +#line 4354 "util/configparser.c" break; - case 391: -#line 1514 "./util/configparser.y" + case 393: +#line 1523 "./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 4349 "util/configparser.c" +#line 4365 "util/configparser.c" break; - case 392: -#line 1522 "./util/configparser.y" + case 394: +#line 1531 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4361,11 +4377,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4365 "util/configparser.c" +#line 4381 "util/configparser.c" break; - case 393: -#line 1535 "./util/configparser.y" + case 395: +#line 1544 "./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) @@ -4373,11 +4389,11 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4377 "util/configparser.c" +#line 4393 "util/configparser.c" break; - case 394: -#line 1544 "./util/configparser.y" + case 396: +#line 1553 "./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) @@ -4386,21 +4402,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4390 "util/configparser.c" +#line 4406 "util/configparser.c" break; - case 395: -#line 1554 "./util/configparser.y" + case 397: +#line 1563 "./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 4400 "util/configparser.c" +#line 4416 "util/configparser.c" break; - case 396: -#line 1561 "./util/configparser.y" + case 398: +#line 1570 "./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) @@ -4409,11 +4425,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4413 "util/configparser.c" +#line 4429 "util/configparser.c" break; - case 397: -#line 1571 "./util/configparser.y" + case 399: +#line 1580 "./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) @@ -4422,11 +4438,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4426 "util/configparser.c" +#line 4442 "util/configparser.c" break; - case 398: -#line 1581 "./util/configparser.y" + case 400: +#line 1590 "./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) @@ -4435,11 +4451,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4439 "util/configparser.c" +#line 4455 "util/configparser.c" break; - case 399: -#line 1591 "./util/configparser.y" + case 401: +#line 1600 "./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) @@ -4448,11 +4464,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4452 "util/configparser.c" +#line 4468 "util/configparser.c" break; - case 400: -#line 1601 "./util/configparser.y" + case 402: +#line 1610 "./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) @@ -4461,11 +4477,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4465 "util/configparser.c" +#line 4481 "util/configparser.c" break; - case 401: -#line 1611 "./util/configparser.y" + case 403: +#line 1620 "./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) @@ -4474,11 +4490,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4478 "util/configparser.c" +#line 4494 "util/configparser.c" break; - case 402: -#line 1621 "./util/configparser.y" + case 404: +#line 1630 "./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) @@ -4487,11 +4503,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4491 "util/configparser.c" +#line 4507 "util/configparser.c" break; - case 403: -#line 1631 "./util/configparser.y" + case 405: +#line 1640 "./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) @@ -4500,41 +4516,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4520 "util/configparser.c" break; - case 404: -#line 1641 "./util/configparser.y" + case 406: +#line 1650 "./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 4514 "util/configparser.c" +#line 4530 "util/configparser.c" break; - case 405: -#line 1648 "./util/configparser.y" + case 407: +#line 1657 "./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 4524 "util/configparser.c" +#line 4540 "util/configparser.c" break; - case 406: -#line 1655 "./util/configparser.y" + case 408: +#line 1664 "./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 4534 "util/configparser.c" +#line 4550 "util/configparser.c" break; - case 407: -#line 1662 "./util/configparser.y" + case 409: +#line 1671 "./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) @@ -4542,11 +4558,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4546 "util/configparser.c" +#line 4562 "util/configparser.c" break; - case 408: -#line 1671 "./util/configparser.y" + case 410: +#line 1680 "./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) @@ -4554,11 +4570,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4558 "util/configparser.c" +#line 4574 "util/configparser.c" break; - case 409: -#line 1680 "./util/configparser.y" + case 411: +#line 1689 "./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) @@ -4566,11 +4582,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4570 "util/configparser.c" +#line 4586 "util/configparser.c" break; - case 410: -#line 1689 "./util/configparser.y" + case 412: +#line 1698 "./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) @@ -4578,21 +4594,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4582 "util/configparser.c" +#line 4598 "util/configparser.c" break; - case 411: -#line 1698 "./util/configparser.y" + case 413: +#line 1707 "./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 4592 "util/configparser.c" +#line 4608 "util/configparser.c" break; - case 412: -#line 1705 "./util/configparser.y" + case 414: +#line 1714 "./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) @@ -4601,11 +4617,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4605 "util/configparser.c" +#line 4621 "util/configparser.c" break; - case 413: -#line 1715 "./util/configparser.y" + case 415: +#line 1724 "./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 && @@ -4624,21 +4640,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4628 "util/configparser.c" +#line 4644 "util/configparser.c" break; - case 414: -#line 1735 "./util/configparser.y" + case 416: +#line 1744 "./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 4638 "util/configparser.c" +#line 4654 "util/configparser.c" break; - case 415: -#line 1742 "./util/configparser.y" + case 417: +#line 1751 "./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) { @@ -4655,11 +4671,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4659 "util/configparser.c" +#line 4675 "util/configparser.c" break; - case 416: -#line 1760 "./util/configparser.y" + case 418: +#line 1769 "./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) { @@ -4671,11 +4687,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4675 "util/configparser.c" +#line 4691 "util/configparser.c" break; - case 417: -#line 1773 "./util/configparser.y" + case 419: +#line 1782 "./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) { @@ -4687,11 +4703,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4691 "util/configparser.c" +#line 4707 "util/configparser.c" break; - case 418: -#line 1786 "./util/configparser.y" + case 420: +#line 1795 "./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) @@ -4699,11 +4715,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4703 "util/configparser.c" +#line 4719 "util/configparser.c" break; - case 419: -#line 1795 "./util/configparser.y" + case 421: +#line 1804 "./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) @@ -4711,11 +4727,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4715 "util/configparser.c" +#line 4731 "util/configparser.c" break; - case 420: -#line 1804 "./util/configparser.y" + case 422: +#line 1813 "./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) @@ -4723,11 +4739,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4727 "util/configparser.c" +#line 4743 "util/configparser.c" break; - case 421: -#line 1813 "./util/configparser.y" + case 423: +#line 1822 "./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) @@ -4735,11 +4751,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4755 "util/configparser.c" break; - case 422: -#line 1822 "./util/configparser.y" + case 424: +#line 1831 "./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) @@ -4748,11 +4764,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4752 "util/configparser.c" +#line 4768 "util/configparser.c" break; - case 423: -#line 1832 "./util/configparser.y" + case 425: +#line 1841 "./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) @@ -4761,11 +4777,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4765 "util/configparser.c" +#line 4781 "util/configparser.c" break; - case 424: -#line 1842 "./util/configparser.y" + case 426: +#line 1851 "./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) @@ -4775,11 +4791,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4779 "util/configparser.c" +#line 4795 "util/configparser.c" break; - case 425: -#line 1853 "./util/configparser.y" + case 427: +#line 1862 "./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) @@ -4787,11 +4803,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4791 "util/configparser.c" +#line 4807 "util/configparser.c" break; - case 426: -#line 1862 "./util/configparser.y" + case 428: +#line 1871 "./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) @@ -4799,11 +4815,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4819 "util/configparser.c" break; - case 427: -#line 1871 "./util/configparser.y" + case 429: +#line 1880 "./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) @@ -4811,11 +4827,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4815 "util/configparser.c" +#line 4831 "util/configparser.c" break; - case 428: -#line 1880 "./util/configparser.y" + case 430: +#line 1889 "./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) @@ -4823,11 +4839,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4827 "util/configparser.c" +#line 4843 "util/configparser.c" break; - case 429: -#line 1889 "./util/configparser.y" + case 431: +#line 1898 "./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) @@ -4835,11 +4851,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4839 "util/configparser.c" +#line 4855 "util/configparser.c" break; - case 430: -#line 1898 "./util/configparser.y" + case 432: +#line 1907 "./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) @@ -4847,11 +4863,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4867 "util/configparser.c" break; - case 431: -#line 1907 "./util/configparser.y" + case 433: +#line 1916 "./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) @@ -4863,11 +4879,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4867 "util/configparser.c" +#line 4883 "util/configparser.c" break; - case 432: -#line 1920 "./util/configparser.y" + case 434: +#line 1929 "./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) @@ -4879,11 +4895,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4883 "util/configparser.c" +#line 4899 "util/configparser.c" break; - case 433: -#line 1933 "./util/configparser.y" + case 435: +#line 1942 "./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) @@ -4891,21 +4907,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4895 "util/configparser.c" +#line 4911 "util/configparser.c" break; - case 434: -#line 1942 "./util/configparser.y" + case 436: +#line 1951 "./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 4905 "util/configparser.c" +#line 4921 "util/configparser.c" break; - case 435: -#line 1949 "./util/configparser.y" + case 437: +#line 1958 "./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) @@ -4913,11 +4929,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4917 "util/configparser.c" +#line 4933 "util/configparser.c" break; - case 436: -#line 1958 "./util/configparser.y" + case 438: +#line 1967 "./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) @@ -4925,11 +4941,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4929 "util/configparser.c" +#line 4945 "util/configparser.c" break; - case 437: -#line 1967 "./util/configparser.y" + case 439: +#line 1976 "./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) @@ -4937,11 +4953,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4941 "util/configparser.c" +#line 4957 "util/configparser.c" break; - case 438: -#line 1976 "./util/configparser.y" + case 440: +#line 1985 "./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) @@ -4950,22 +4966,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 4970 "util/configparser.c" break; - case 439: -#line 1985 "./util/configparser.y" + case 441: +#line 1994 "./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 4965 "util/configparser.c" +#line 4981 "util/configparser.c" break; - case 440: -#line 1993 "./util/configparser.y" + case 442: +#line 2002 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4977,22 +4993,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4981 "util/configparser.c" +#line 4997 "util/configparser.c" break; - case 441: -#line 2006 "./util/configparser.y" + case 443: +#line 2015 "./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 4992 "util/configparser.c" +#line 5008 "util/configparser.c" break; - case 442: -#line 2014 "./util/configparser.y" + case 444: +#line 2023 "./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 && @@ -5032,21 +5048,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5036 "util/configparser.c" +#line 5052 "util/configparser.c" break; - case 443: -#line 2055 "./util/configparser.y" + case 445: +#line 2064 "./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 5046 "util/configparser.c" +#line 5062 "util/configparser.c" break; - case 444: -#line 2062 "./util/configparser.y" + case 446: +#line 2071 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5060,11 +5076,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5064 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 445: -#line 2077 "./util/configparser.y" + case 447: +#line 2086 "./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) @@ -5073,11 +5089,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5077 "util/configparser.c" +#line 5093 "util/configparser.c" break; - case 446: -#line 2087 "./util/configparser.y" + case 448: +#line 2096 "./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) @@ -5086,41 +5102,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5090 "util/configparser.c" +#line 5106 "util/configparser.c" break; - case 447: -#line 2097 "./util/configparser.y" + case 449: +#line 2106 "./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 5100 "util/configparser.c" +#line 5116 "util/configparser.c" break; - case 448: -#line 2104 "./util/configparser.y" + case 450: +#line 2113 "./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 5110 "util/configparser.c" +#line 5126 "util/configparser.c" break; - case 449: -#line 2111 "./util/configparser.y" + case 451: +#line 2120 "./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 5120 "util/configparser.c" +#line 5136 "util/configparser.c" break; - case 450: -#line 2118 "./util/configparser.y" + case 452: +#line 2127 "./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) @@ -5128,22 +5144,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5132 "util/configparser.c" +#line 5148 "util/configparser.c" break; - case 451: -#line 2127 "./util/configparser.y" + case 453: +#line 2136 "./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 5143 "util/configparser.c" +#line 5159 "util/configparser.c" break; - case 452: -#line 2135 "./util/configparser.y" + case 454: +#line 2144 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5156,11 +5172,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5160 "util/configparser.c" +#line 5176 "util/configparser.c" break; - case 453: -#line 2149 "./util/configparser.y" + case 455: +#line 2158 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5180,11 +5196,11 @@ yyreduce: } } } -#line 5184 "util/configparser.c" +#line 5200 "util/configparser.c" break; - case 454: -#line 2170 "./util/configparser.y" + case 456: +#line 2179 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5204,11 +5220,11 @@ yyreduce: } } } -#line 5208 "util/configparser.c" +#line 5224 "util/configparser.c" break; - case 455: -#line 2191 "./util/configparser.y" + case 457: +#line 2200 "./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, @@ -5219,11 +5235,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5223 "util/configparser.c" +#line 5239 "util/configparser.c" break; - case 456: -#line 2203 "./util/configparser.y" + case 458: +#line 2212 "./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, @@ -5234,11 +5250,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5238 "util/configparser.c" +#line 5254 "util/configparser.c" break; - case 457: -#line 2215 "./util/configparser.y" + case 459: +#line 2224 "./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, @@ -5249,11 +5265,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5253 "util/configparser.c" +#line 5269 "util/configparser.c" break; - case 458: -#line 2227 "./util/configparser.y" + case 460: +#line 2236 "./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, @@ -5261,11 +5277,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5265 "util/configparser.c" +#line 5281 "util/configparser.c" break; - case 459: -#line 2236 "./util/configparser.y" + case 461: +#line 2245 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5285,11 +5301,11 @@ yyreduce: } } } -#line 5289 "util/configparser.c" +#line 5305 "util/configparser.c" break; - case 460: -#line 2257 "./util/configparser.y" + case 462: +#line 2266 "./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) @@ -5297,11 +5313,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5317 "util/configparser.c" break; - case 461: -#line 2267 "./util/configparser.y" + case 463: +#line 2276 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5309,33 +5325,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5313 "util/configparser.c" +#line 5329 "util/configparser.c" break; - case 462: -#line 2276 "./util/configparser.y" + case 464: +#line 2285 "./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 5324 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 463: -#line 2284 "./util/configparser.y" + case 465: +#line 2293 "./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 5335 "util/configparser.c" +#line 5351 "util/configparser.c" break; - case 464: -#line 2292 "./util/configparser.y" + case 466: +#line 2301 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5347,11 +5363,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5351 "util/configparser.c" +#line 5367 "util/configparser.c" break; - case 465: -#line 2305 "./util/configparser.y" + case 467: +#line 2314 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5363,11 +5379,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5367 "util/configparser.c" +#line 5383 "util/configparser.c" break; - case 466: -#line 2318 "./util/configparser.y" + case 468: +#line 2327 "./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) { @@ -5381,11 +5397,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5385 "util/configparser.c" +#line 5401 "util/configparser.c" break; - case 467: -#line 2333 "./util/configparser.y" + case 469: +#line 2342 "./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) { @@ -5399,11 +5415,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5403 "util/configparser.c" +#line 5419 "util/configparser.c" break; - case 468: -#line 2348 "./util/configparser.y" + case 470: +#line 2357 "./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) @@ -5411,11 +5427,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5415 "util/configparser.c" +#line 5431 "util/configparser.c" break; - case 469: -#line 2357 "./util/configparser.y" + case 471: +#line 2366 "./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) @@ -5423,20 +5439,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5427 "util/configparser.c" +#line 5443 "util/configparser.c" break; - case 470: -#line 2366 "./util/configparser.y" + case 472: +#line 2375 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 5452 "util/configparser.c" break; - case 471: -#line 2372 "./util/configparser.y" + case 473: +#line 2381 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5444,11 +5460,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5448 "util/configparser.c" +#line 5464 "util/configparser.c" break; - case 472: -#line 2381 "./util/configparser.y" + case 474: +#line 2390 "./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) @@ -5456,11 +5472,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5460 "util/configparser.c" +#line 5476 "util/configparser.c" break; - case 473: -#line 2390 "./util/configparser.y" + case 475: +#line 2399 "./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) @@ -5469,11 +5485,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5473 "util/configparser.c" +#line 5489 "util/configparser.c" break; - case 474: -#line 2400 "./util/configparser.y" + case 476: +#line 2409 "./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) @@ -5482,11 +5498,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5486 "util/configparser.c" +#line 5502 "util/configparser.c" break; - case 475: -#line 2410 "./util/configparser.y" + case 477: +#line 2419 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5498,11 +5514,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5502 "util/configparser.c" +#line 5518 "util/configparser.c" break; - case 476: -#line 2423 "./util/configparser.y" + case 478: +#line 2432 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5514,11 +5530,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5518 "util/configparser.c" +#line 5534 "util/configparser.c" break; - case 477: -#line 2436 "./util/configparser.y" + case 479: +#line 2445 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5529,11 +5545,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5533 "util/configparser.c" +#line 5549 "util/configparser.c" break; - case 478: -#line 2448 "./util/configparser.y" + case 480: +#line 2457 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5546,11 +5562,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5550 "util/configparser.c" +#line 5566 "util/configparser.c" break; - case 479: -#line 2462 "./util/configparser.y" + case 481: +#line 2471 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5561,11 +5577,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5565 "util/configparser.c" +#line 5581 "util/configparser.c" break; - case 480: -#line 2474 "./util/configparser.y" + case 482: +#line 2483 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5578,11 +5594,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5582 "util/configparser.c" +#line 5598 "util/configparser.c" break; - case 481: -#line 2488 "./util/configparser.y" + case 483: +#line 2497 "./util/configparser.y" { int tag_data; OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5596,11 +5612,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-tag"); } -#line 5600 "util/configparser.c" +#line 5616 "util/configparser.c" break; - case 482: -#line 2503 "./util/configparser.y" + case 484: +#line 2512 "./util/configparser.y" { OUTYY(("P(edns_client_tag_opcode:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5610,11 +5626,11 @@ yyreduce: else cfg_parser->cfg->edns_client_tag_opcode = atoi((yyvsp[0].str)); } -#line 5614 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 483: -#line 2514 "./util/configparser.y" + case 485: +#line 2523 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5623,31 +5639,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5627 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 484: -#line 2524 "./util/configparser.y" + case 486: +#line 2533 "./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 5637 "util/configparser.c" +#line 5653 "util/configparser.c" break; - case 485: -#line 2531 "./util/configparser.y" + case 487: +#line 2540 "./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 5647 "util/configparser.c" +#line 5663 "util/configparser.c" break; - case 486: -#line 2538 "./util/configparser.y" + case 488: +#line 2547 "./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) @@ -5655,11 +5671,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5659 "util/configparser.c" +#line 5675 "util/configparser.c" break; - case 487: -#line 2547 "./util/configparser.y" + case 489: +#line 2556 "./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) @@ -5667,11 +5683,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5671 "util/configparser.c" +#line 5687 "util/configparser.c" break; - case 488: -#line 2556 "./util/configparser.y" + case 490: +#line 2565 "./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) @@ -5680,11 +5696,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5684 "util/configparser.c" +#line 5700 "util/configparser.c" break; - case 489: -#line 2566 "./util/configparser.y" + case 491: +#line 2575 "./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) @@ -5693,11 +5709,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5697 "util/configparser.c" +#line 5713 "util/configparser.c" break; - case 490: -#line 2576 "./util/configparser.y" + case 492: +#line 2585 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5706,31 +5722,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5710 "util/configparser.c" +#line 5726 "util/configparser.c" break; - case 491: -#line 2586 "./util/configparser.y" + case 493: +#line 2595 "./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 5720 "util/configparser.c" +#line 5736 "util/configparser.c" break; - case 492: -#line 2593 "./util/configparser.y" + case 494: +#line 2602 "./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 5730 "util/configparser.c" +#line 5746 "util/configparser.c" break; - case 493: -#line 2600 "./util/configparser.y" + case 495: +#line 2609 "./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) @@ -5738,11 +5754,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5742 "util/configparser.c" +#line 5758 "util/configparser.c" break; - case 494: -#line 2609 "./util/configparser.y" + case 496: +#line 2618 "./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) @@ -5750,11 +5766,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5754 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 495: -#line 2618 "./util/configparser.y" + case 497: +#line 2627 "./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) @@ -5763,11 +5779,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5767 "util/configparser.c" +#line 5783 "util/configparser.c" break; - case 496: -#line 2628 "./util/configparser.y" + case 498: +#line 2637 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5776,52 +5792,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5780 "util/configparser.c" +#line 5796 "util/configparser.c" break; - case 497: -#line 2638 "./util/configparser.y" + case 499: +#line 2647 "./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 5790 "util/configparser.c" +#line 5806 "util/configparser.c" break; - case 498: -#line 2645 "./util/configparser.y" + case 500: +#line 2654 "./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 5800 "util/configparser.c" +#line 5816 "util/configparser.c" break; - case 499: -#line 2652 "./util/configparser.y" + case 501: +#line 2661 "./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 5810 "util/configparser.c" +#line 5826 "util/configparser.c" break; - case 500: -#line 2659 "./util/configparser.y" + case 502: +#line 2668 "./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 5821 "util/configparser.c" +#line 5837 "util/configparser.c" break; - case 501: -#line 2667 "./util/configparser.y" + case 503: +#line 2676 "./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) @@ -5830,11 +5846,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5834 "util/configparser.c" +#line 5850 "util/configparser.c" break; - case 502: -#line 2677 "./util/configparser.y" + case 504: +#line 2686 "./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) @@ -5843,11 +5859,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5847 "util/configparser.c" +#line 5863 "util/configparser.c" break; - case 503: -#line 2687 "./util/configparser.y" + case 505: +#line 2696 "./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) @@ -5856,11 +5872,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5860 "util/configparser.c" +#line 5876 "util/configparser.c" break; - case 504: -#line 2697 "./util/configparser.y" + case 506: +#line 2706 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5869,11 +5885,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5873 "util/configparser.c" +#line 5889 "util/configparser.c" break; - case 505: -#line 2707 "./util/configparser.y" + case 507: +#line 2716 "./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 && @@ -5911,11 +5927,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5915 "util/configparser.c" +#line 5931 "util/configparser.c" break; - case 506: -#line 2746 "./util/configparser.y" + case 508: +#line 2755 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5924,33 +5940,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5928 "util/configparser.c" +#line 5944 "util/configparser.c" break; - case 507: -#line 2756 "./util/configparser.y" + case 509: +#line 2765 "./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 5939 "util/configparser.c" +#line 5955 "util/configparser.c" break; - case 508: -#line 2764 "./util/configparser.y" + case 510: +#line 2773 "./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 5950 "util/configparser.c" +#line 5966 "util/configparser.c" break; - case 509: -#line 2772 "./util/configparser.y" + case 511: +#line 2781 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5964,11 +5980,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5968 "util/configparser.c" +#line 5984 "util/configparser.c" break; - case 510: -#line 2787 "./util/configparser.y" + case 512: +#line 2796 "./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) @@ -5976,19 +5992,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5980 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 511: -#line 2796 "./util/configparser.y" + case 513: +#line 2805 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5988 "util/configparser.c" +#line 6004 "util/configparser.c" break; - case 522: -#line 2807 "./util/configparser.y" + case 524: +#line 2816 "./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) @@ -5997,11 +6013,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6001 "util/configparser.c" +#line 6017 "util/configparser.c" break; - case 523: -#line 2817 "./util/configparser.y" + case 525: +#line 2826 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6009,79 +6025,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6013 "util/configparser.c" +#line 6029 "util/configparser.c" break; - case 524: -#line 2826 "./util/configparser.y" + case 526: +#line 2835 "./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 6023 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 525: -#line 2833 "./util/configparser.y" + case 527: +#line 2842 "./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 6033 "util/configparser.c" +#line 6049 "util/configparser.c" break; - case 526: -#line 2840 "./util/configparser.y" + case 528: +#line 2849 "./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 6043 "util/configparser.c" +#line 6059 "util/configparser.c" break; - case 527: -#line 2847 "./util/configparser.y" + case 529: +#line 2856 "./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 6053 "util/configparser.c" +#line 6069 "util/configparser.c" break; - case 528: -#line 2854 "./util/configparser.y" + case 530: +#line 2863 "./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 6063 "util/configparser.c" +#line 6079 "util/configparser.c" break; - case 529: -#line 2861 "./util/configparser.y" + case 531: +#line 2870 "./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 6073 "util/configparser.c" +#line 6089 "util/configparser.c" break; - case 530: -#line 2868 "./util/configparser.y" + case 532: +#line 2877 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6081 "util/configparser.c" +#line 6097 "util/configparser.c" break; - case 552: -#line 2888 "./util/configparser.y" + case 554: +#line 2897 "./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) @@ -6089,11 +6105,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6093 "util/configparser.c" +#line 6109 "util/configparser.c" break; - case 553: -#line 2897 "./util/configparser.y" + case 555: +#line 2906 "./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) @@ -6102,31 +6118,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6106 "util/configparser.c" +#line 6122 "util/configparser.c" break; - case 554: -#line 2907 "./util/configparser.y" + case 556: +#line 2916 "./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 6116 "util/configparser.c" +#line 6132 "util/configparser.c" break; - case 555: -#line 2914 "./util/configparser.y" + case 557: +#line 2923 "./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 6126 "util/configparser.c" +#line 6142 "util/configparser.c" break; - case 556: -#line 2921 "./util/configparser.y" + case 558: +#line 2930 "./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) @@ -6134,51 +6150,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6138 "util/configparser.c" +#line 6154 "util/configparser.c" break; - case 557: -#line 2930 "./util/configparser.y" + case 559: +#line 2939 "./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 6148 "util/configparser.c" +#line 6164 "util/configparser.c" break; - case 558: -#line 2937 "./util/configparser.y" + case 560: +#line 2946 "./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 6158 "util/configparser.c" +#line 6174 "util/configparser.c" break; - case 559: -#line 2944 "./util/configparser.y" + case 561: +#line 2953 "./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 6168 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 560: -#line 2951 "./util/configparser.y" + case 562: +#line 2960 "./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 6178 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 561: -#line 2958 "./util/configparser.y" + case 563: +#line 2967 "./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) @@ -6186,11 +6202,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6190 "util/configparser.c" +#line 6206 "util/configparser.c" break; - case 562: -#line 2967 "./util/configparser.y" + case 564: +#line 2976 "./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) @@ -6198,31 +6214,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6218 "util/configparser.c" break; - case 563: -#line 2976 "./util/configparser.y" + case 565: +#line 2985 "./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 6212 "util/configparser.c" +#line 6228 "util/configparser.c" break; - case 564: -#line 2983 "./util/configparser.y" + case 566: +#line 2992 "./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 6222 "util/configparser.c" +#line 6238 "util/configparser.c" break; - case 565: -#line 2990 "./util/configparser.y" + case 567: +#line 2999 "./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) @@ -6231,11 +6247,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6235 "util/configparser.c" +#line 6251 "util/configparser.c" break; - case 566: -#line 3000 "./util/configparser.y" + case 568: +#line 3009 "./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) @@ -6244,11 +6260,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6248 "util/configparser.c" +#line 6264 "util/configparser.c" break; - case 567: -#line 3010 "./util/configparser.y" + case 569: +#line 3019 "./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) @@ -6257,11 +6273,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6261 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 568: -#line 3020 "./util/configparser.y" + case 570: +#line 3029 "./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) @@ -6270,11 +6286,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 6290 "util/configparser.c" break; - case 569: -#line 3030 "./util/configparser.y" + case 571: +#line 3039 "./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) @@ -6283,11 +6299,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6287 "util/configparser.c" +#line 6303 "util/configparser.c" break; - case 570: -#line 3040 "./util/configparser.y" + case 572: +#line 3049 "./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) @@ -6296,47 +6312,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6300 "util/configparser.c" +#line 6316 "util/configparser.c" break; - case 571: -#line 3050 "./util/configparser.y" + case 573: +#line 3059 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6308 "util/configparser.c" +#line 6324 "util/configparser.c" break; - case 575: -#line 3059 "./util/configparser.y" + case 577: +#line 3068 "./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 6318 "util/configparser.c" +#line 6334 "util/configparser.c" break; - case 576: -#line 3065 "./util/configparser.y" + case 578: +#line 3074 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6326 "util/configparser.c" +#line 6342 "util/configparser.c" break; - case 580: -#line 3074 "./util/configparser.y" + case 582: +#line 3083 "./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 6336 "util/configparser.c" +#line 6352 "util/configparser.c" break; - case 581: -#line 3080 "./util/configparser.y" + case 583: +#line 3089 "./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) @@ -6345,21 +6361,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6349 "util/configparser.c" +#line 6365 "util/configparser.c" break; - case 582: -#line 3090 "./util/configparser.y" + case 584: +#line 3099 "./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 6359 "util/configparser.c" +#line 6375 "util/configparser.c" break; - case 583: -#line 3097 "./util/configparser.y" + case 585: +#line 3106 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6367,30 +6383,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6371 "util/configparser.c" +#line 6387 "util/configparser.c" break; - case 584: -#line 3106 "./util/configparser.y" + case 586: +#line 3115 "./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 6382 "util/configparser.c" +#line 6398 "util/configparser.c" break; - case 585: -#line 3114 "./util/configparser.y" + case 587: +#line 3123 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6390 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 598: -#line 3130 "./util/configparser.y" + case 600: +#line 3139 "./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) @@ -6398,11 +6414,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6402 "util/configparser.c" +#line 6418 "util/configparser.c" break; - case 599: -#line 3140 "./util/configparser.y" + case 601: +#line 3149 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6410,21 +6426,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6430 "util/configparser.c" break; - case 600: -#line 3149 "./util/configparser.y" + case 602: +#line 3158 "./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 6424 "util/configparser.c" +#line 6440 "util/configparser.c" break; - case 601: -#line 3156 "./util/configparser.y" + case 603: +#line 3165 "./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))) @@ -6432,21 +6448,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 6436 "util/configparser.c" +#line 6452 "util/configparser.c" break; - case 602: -#line 3165 "./util/configparser.y" + case 604: +#line 3174 "./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 6446 "util/configparser.c" +#line 6462 "util/configparser.c" break; - case 603: -#line 3172 "./util/configparser.y" + case 605: +#line 3181 "./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))) @@ -6454,22 +6470,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 6458 "util/configparser.c" +#line 6474 "util/configparser.c" break; - case 604: -#line 3181 "./util/configparser.y" + case 606: +#line 3190 "./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 6469 "util/configparser.c" +#line 6485 "util/configparser.c" break; - case 605: -#line 3189 "./util/configparser.y" + case 607: +#line 3198 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6481,22 +6497,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6485 "util/configparser.c" +#line 6501 "util/configparser.c" break; - case 606: -#line 3202 "./util/configparser.y" + case 608: +#line 3211 "./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 6496 "util/configparser.c" +#line 6512 "util/configparser.c" break; - case 607: -#line 3210 "./util/configparser.y" + case 609: +#line 3219 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6508,19 +6524,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6512 "util/configparser.c" +#line 6528 "util/configparser.c" break; - case 608: -#line 3223 "./util/configparser.y" + case 610: +#line 3232 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6520 "util/configparser.c" +#line 6536 "util/configparser.c" break; - case 617: -#line 3234 "./util/configparser.y" + case 619: +#line 3243 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6531,11 +6547,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6535 "util/configparser.c" +#line 6551 "util/configparser.c" break; - case 618: -#line 3246 "./util/configparser.y" + case 620: +#line 3255 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6546,11 +6562,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6550 "util/configparser.c" +#line 6566 "util/configparser.c" break; - case 619: -#line 3258 "./util/configparser.y" + case 621: +#line 3267 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6561,11 +6577,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6565 "util/configparser.c" +#line 6581 "util/configparser.c" break; - case 620: -#line 3270 "./util/configparser.y" + case 622: +#line 3279 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6579,11 +6595,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6583 "util/configparser.c" +#line 6599 "util/configparser.c" break; - case 621: -#line 3285 "./util/configparser.y" + case 623: +#line 3294 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6595,11 +6611,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6599 "util/configparser.c" +#line 6615 "util/configparser.c" break; - case 622: -#line 3298 "./util/configparser.y" + case 624: +#line 3307 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6611,11 +6627,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6615 "util/configparser.c" +#line 6631 "util/configparser.c" break; - case 623: -#line 3311 "./util/configparser.y" + case 625: +#line 3320 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6625,19 +6641,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6629 "util/configparser.c" +#line 6645 "util/configparser.c" break; - case 624: -#line 3322 "./util/configparser.y" + case 626: +#line 3331 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6637 "util/configparser.c" +#line 6653 "util/configparser.c" break; - case 629: -#line 3331 "./util/configparser.y" + case 631: +#line 3340 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6651,11 +6667,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6655 "util/configparser.c" +#line 6671 "util/configparser.c" break; - case 630: -#line 3346 "./util/configparser.y" + case 632: +#line 3355 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6669,11 +6685,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6673 "util/configparser.c" +#line 6689 "util/configparser.c" break; -#line 6677 "util/configparser.c" +#line 6693 "util/configparser.c" default: break; } @@ -6905,7 +6921,7 @@ yyreturn: #endif return yyresult; } -#line 3360 "./util/configparser.y" +#line 3369 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 79ed369c4..1bce8028b 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -200,154 +200,155 @@ extern int yydebug; VAR_RRSET_ROUNDROBIN = 406, VAR_MAX_UDP_SIZE = 407, VAR_DELAY_CLOSE = 408, - VAR_UNBLOCK_LAN_ZONES = 409, - VAR_INSECURE_LAN_ZONES = 410, - VAR_INFRA_CACHE_MIN_RTT = 411, - VAR_INFRA_KEEP_PROBING = 412, - VAR_DNS64_PREFIX = 413, - VAR_DNS64_SYNTHALL = 414, - VAR_DNS64_IGNORE_AAAA = 415, - VAR_DNSTAP = 416, - VAR_DNSTAP_ENABLE = 417, - VAR_DNSTAP_SOCKET_PATH = 418, - VAR_DNSTAP_IP = 419, - VAR_DNSTAP_TLS = 420, - VAR_DNSTAP_TLS_SERVER_NAME = 421, - VAR_DNSTAP_TLS_CERT_BUNDLE = 422, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 423, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 424, - VAR_DNSTAP_SEND_IDENTITY = 425, - VAR_DNSTAP_SEND_VERSION = 426, - VAR_DNSTAP_BIDIRECTIONAL = 427, - VAR_DNSTAP_IDENTITY = 428, - VAR_DNSTAP_VERSION = 429, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 430, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 431, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 433, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 435, - VAR_RESPONSE_IP_TAG = 436, - VAR_RESPONSE_IP = 437, - VAR_RESPONSE_IP_DATA = 438, - VAR_HARDEN_ALGO_DOWNGRADE = 439, - VAR_IP_TRANSPARENT = 440, - VAR_IP_DSCP = 441, - VAR_DISABLE_DNSSEC_LAME_CHECK = 442, - VAR_IP_RATELIMIT = 443, - VAR_IP_RATELIMIT_SLABS = 444, - VAR_IP_RATELIMIT_SIZE = 445, - VAR_RATELIMIT = 446, - VAR_RATELIMIT_SLABS = 447, - VAR_RATELIMIT_SIZE = 448, - VAR_RATELIMIT_FOR_DOMAIN = 449, - VAR_RATELIMIT_BELOW_DOMAIN = 450, - VAR_IP_RATELIMIT_FACTOR = 451, - VAR_RATELIMIT_FACTOR = 452, - VAR_SEND_CLIENT_SUBNET = 453, - VAR_CLIENT_SUBNET_ZONE = 454, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 455, - VAR_CLIENT_SUBNET_OPCODE = 456, - VAR_MAX_CLIENT_SUBNET_IPV4 = 457, - VAR_MAX_CLIENT_SUBNET_IPV6 = 458, - VAR_MIN_CLIENT_SUBNET_IPV4 = 459, - VAR_MIN_CLIENT_SUBNET_IPV6 = 460, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 462, - VAR_CAPS_WHITELIST = 463, - VAR_CACHE_MAX_NEGATIVE_TTL = 464, - VAR_PERMIT_SMALL_HOLDDOWN = 465, - VAR_QNAME_MINIMISATION = 466, - VAR_QNAME_MINIMISATION_STRICT = 467, - VAR_IP_FREEBIND = 468, - VAR_DEFINE_TAG = 469, - VAR_LOCAL_ZONE_TAG = 470, - VAR_ACCESS_CONTROL_TAG = 471, - VAR_LOCAL_ZONE_OVERRIDE = 472, - VAR_ACCESS_CONTROL_TAG_ACTION = 473, - VAR_ACCESS_CONTROL_TAG_DATA = 474, - VAR_VIEW = 475, - VAR_ACCESS_CONTROL_VIEW = 476, - VAR_VIEW_FIRST = 477, - VAR_SERVE_EXPIRED = 478, - VAR_SERVE_EXPIRED_TTL = 479, - VAR_SERVE_EXPIRED_TTL_RESET = 480, - VAR_SERVE_EXPIRED_REPLY_TTL = 481, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 482, - VAR_FAKE_DSA = 483, - VAR_FAKE_SHA1 = 484, - VAR_LOG_IDENTITY = 485, - VAR_HIDE_TRUSTANCHOR = 486, - VAR_TRUST_ANCHOR_SIGNALING = 487, - VAR_AGGRESSIVE_NSEC = 488, - VAR_USE_SYSTEMD = 489, - VAR_SHM_ENABLE = 490, - VAR_SHM_KEY = 491, - VAR_ROOT_KEY_SENTINEL = 492, - VAR_DNSCRYPT = 493, - VAR_DNSCRYPT_ENABLE = 494, - VAR_DNSCRYPT_PORT = 495, - VAR_DNSCRYPT_PROVIDER = 496, - VAR_DNSCRYPT_SECRET_KEY = 497, - VAR_DNSCRYPT_PROVIDER_CERT = 498, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 499, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 501, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 502, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 503, - VAR_IPSECMOD_ENABLED = 504, - VAR_IPSECMOD_HOOK = 505, - VAR_IPSECMOD_IGNORE_BOGUS = 506, - VAR_IPSECMOD_MAX_TTL = 507, - VAR_IPSECMOD_WHITELIST = 508, - VAR_IPSECMOD_STRICT = 509, - VAR_CACHEDB = 510, - VAR_CACHEDB_BACKEND = 511, - VAR_CACHEDB_SECRETSEED = 512, - VAR_CACHEDB_REDISHOST = 513, - VAR_CACHEDB_REDISPORT = 514, - VAR_CACHEDB_REDISTIMEOUT = 515, - VAR_CACHEDB_REDISEXPIRERECORDS = 516, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 517, - VAR_FOR_UPSTREAM = 518, - VAR_AUTH_ZONE = 519, - VAR_ZONEFILE = 520, - VAR_MASTER = 521, - VAR_URL = 522, - VAR_FOR_DOWNSTREAM = 523, - VAR_FALLBACK_ENABLED = 524, - VAR_TLS_ADDITIONAL_PORT = 525, - VAR_LOW_RTT = 526, - VAR_LOW_RTT_PERMIL = 527, - VAR_FAST_SERVER_PERMIL = 528, - VAR_FAST_SERVER_NUM = 529, - VAR_ALLOW_NOTIFY = 530, - VAR_TLS_WIN_CERT = 531, - VAR_TCP_CONNECTION_LIMIT = 532, - VAR_FORWARD_NO_CACHE = 533, - VAR_STUB_NO_CACHE = 534, - VAR_LOG_SERVFAIL = 535, - VAR_DENY_ANY = 536, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 537, - VAR_LOG_TAG_QUERYREPLY = 538, - VAR_STREAM_WAIT_SIZE = 539, - VAR_TLS_CIPHERS = 540, - VAR_TLS_CIPHERSUITES = 541, - VAR_TLS_USE_SNI = 542, - VAR_IPSET = 543, - VAR_IPSET_NAME_V4 = 544, - VAR_IPSET_NAME_V6 = 545, - VAR_TLS_SESSION_TICKET_KEYS = 546, - VAR_RPZ = 547, - VAR_TAGS = 548, - VAR_RPZ_ACTION_OVERRIDE = 549, - VAR_RPZ_CNAME_OVERRIDE = 550, - VAR_RPZ_LOG = 551, - VAR_RPZ_LOG_NAME = 552, - VAR_DYNLIB = 553, - VAR_DYNLIB_FILE = 554, - VAR_EDNS_CLIENT_TAG = 555, - VAR_EDNS_CLIENT_TAG_OPCODE = 556 + VAR_UDP_CONNECT = 409, + VAR_UNBLOCK_LAN_ZONES = 410, + VAR_INSECURE_LAN_ZONES = 411, + VAR_INFRA_CACHE_MIN_RTT = 412, + VAR_INFRA_KEEP_PROBING = 413, + VAR_DNS64_PREFIX = 414, + VAR_DNS64_SYNTHALL = 415, + VAR_DNS64_IGNORE_AAAA = 416, + VAR_DNSTAP = 417, + VAR_DNSTAP_ENABLE = 418, + VAR_DNSTAP_SOCKET_PATH = 419, + VAR_DNSTAP_IP = 420, + VAR_DNSTAP_TLS = 421, + VAR_DNSTAP_TLS_SERVER_NAME = 422, + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, + VAR_DNSTAP_SEND_IDENTITY = 426, + VAR_DNSTAP_SEND_VERSION = 427, + VAR_DNSTAP_BIDIRECTIONAL = 428, + VAR_DNSTAP_IDENTITY = 429, + VAR_DNSTAP_VERSION = 430, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, + VAR_RESPONSE_IP_TAG = 437, + VAR_RESPONSE_IP = 438, + VAR_RESPONSE_IP_DATA = 439, + VAR_HARDEN_ALGO_DOWNGRADE = 440, + VAR_IP_TRANSPARENT = 441, + VAR_IP_DSCP = 442, + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, + VAR_IP_RATELIMIT = 444, + VAR_IP_RATELIMIT_SLABS = 445, + VAR_IP_RATELIMIT_SIZE = 446, + VAR_RATELIMIT = 447, + VAR_RATELIMIT_SLABS = 448, + VAR_RATELIMIT_SIZE = 449, + VAR_RATELIMIT_FOR_DOMAIN = 450, + VAR_RATELIMIT_BELOW_DOMAIN = 451, + VAR_IP_RATELIMIT_FACTOR = 452, + VAR_RATELIMIT_FACTOR = 453, + VAR_SEND_CLIENT_SUBNET = 454, + VAR_CLIENT_SUBNET_ZONE = 455, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, + VAR_CLIENT_SUBNET_OPCODE = 457, + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, + VAR_CAPS_WHITELIST = 464, + VAR_CACHE_MAX_NEGATIVE_TTL = 465, + VAR_PERMIT_SMALL_HOLDDOWN = 466, + VAR_QNAME_MINIMISATION = 467, + VAR_QNAME_MINIMISATION_STRICT = 468, + VAR_IP_FREEBIND = 469, + VAR_DEFINE_TAG = 470, + VAR_LOCAL_ZONE_TAG = 471, + VAR_ACCESS_CONTROL_TAG = 472, + VAR_LOCAL_ZONE_OVERRIDE = 473, + VAR_ACCESS_CONTROL_TAG_ACTION = 474, + VAR_ACCESS_CONTROL_TAG_DATA = 475, + VAR_VIEW = 476, + VAR_ACCESS_CONTROL_VIEW = 477, + VAR_VIEW_FIRST = 478, + VAR_SERVE_EXPIRED = 479, + VAR_SERVE_EXPIRED_TTL = 480, + VAR_SERVE_EXPIRED_TTL_RESET = 481, + VAR_SERVE_EXPIRED_REPLY_TTL = 482, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, + VAR_FAKE_DSA = 484, + VAR_FAKE_SHA1 = 485, + VAR_LOG_IDENTITY = 486, + VAR_HIDE_TRUSTANCHOR = 487, + VAR_TRUST_ANCHOR_SIGNALING = 488, + VAR_AGGRESSIVE_NSEC = 489, + VAR_USE_SYSTEMD = 490, + VAR_SHM_ENABLE = 491, + VAR_SHM_KEY = 492, + VAR_ROOT_KEY_SENTINEL = 493, + VAR_DNSCRYPT = 494, + VAR_DNSCRYPT_ENABLE = 495, + VAR_DNSCRYPT_PORT = 496, + VAR_DNSCRYPT_PROVIDER = 497, + VAR_DNSCRYPT_SECRET_KEY = 498, + VAR_DNSCRYPT_PROVIDER_CERT = 499, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, + VAR_IPSECMOD_ENABLED = 505, + VAR_IPSECMOD_HOOK = 506, + VAR_IPSECMOD_IGNORE_BOGUS = 507, + VAR_IPSECMOD_MAX_TTL = 508, + VAR_IPSECMOD_WHITELIST = 509, + VAR_IPSECMOD_STRICT = 510, + VAR_CACHEDB = 511, + VAR_CACHEDB_BACKEND = 512, + VAR_CACHEDB_SECRETSEED = 513, + VAR_CACHEDB_REDISHOST = 514, + VAR_CACHEDB_REDISPORT = 515, + VAR_CACHEDB_REDISTIMEOUT = 516, + VAR_CACHEDB_REDISEXPIRERECORDS = 517, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, + VAR_FOR_UPSTREAM = 519, + VAR_AUTH_ZONE = 520, + VAR_ZONEFILE = 521, + VAR_MASTER = 522, + VAR_URL = 523, + VAR_FOR_DOWNSTREAM = 524, + VAR_FALLBACK_ENABLED = 525, + VAR_TLS_ADDITIONAL_PORT = 526, + VAR_LOW_RTT = 527, + VAR_LOW_RTT_PERMIL = 528, + VAR_FAST_SERVER_PERMIL = 529, + VAR_FAST_SERVER_NUM = 530, + VAR_ALLOW_NOTIFY = 531, + VAR_TLS_WIN_CERT = 532, + VAR_TCP_CONNECTION_LIMIT = 533, + VAR_FORWARD_NO_CACHE = 534, + VAR_STUB_NO_CACHE = 535, + VAR_LOG_SERVFAIL = 536, + VAR_DENY_ANY = 537, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, + VAR_LOG_TAG_QUERYREPLY = 539, + VAR_STREAM_WAIT_SIZE = 540, + VAR_TLS_CIPHERS = 541, + VAR_TLS_CIPHERSUITES = 542, + VAR_TLS_USE_SNI = 543, + VAR_IPSET = 544, + VAR_IPSET_NAME_V4 = 545, + VAR_IPSET_NAME_V6 = 546, + VAR_TLS_SESSION_TICKET_KEYS = 547, + VAR_RPZ = 548, + VAR_TAGS = 549, + VAR_RPZ_ACTION_OVERRIDE = 550, + VAR_RPZ_CNAME_OVERRIDE = 551, + VAR_RPZ_LOG = 552, + VAR_RPZ_LOG_NAME = 553, + VAR_DYNLIB = 554, + VAR_DYNLIB_FILE = 555, + VAR_EDNS_CLIENT_TAG = 556, + VAR_EDNS_CLIENT_TAG_OPCODE = 557 }; #endif /* Tokens. */ @@ -502,154 +503,155 @@ extern int yydebug; #define VAR_RRSET_ROUNDROBIN 406 #define VAR_MAX_UDP_SIZE 407 #define VAR_DELAY_CLOSE 408 -#define VAR_UNBLOCK_LAN_ZONES 409 -#define VAR_INSECURE_LAN_ZONES 410 -#define VAR_INFRA_CACHE_MIN_RTT 411 -#define VAR_INFRA_KEEP_PROBING 412 -#define VAR_DNS64_PREFIX 413 -#define VAR_DNS64_SYNTHALL 414 -#define VAR_DNS64_IGNORE_AAAA 415 -#define VAR_DNSTAP 416 -#define VAR_DNSTAP_ENABLE 417 -#define VAR_DNSTAP_SOCKET_PATH 418 -#define VAR_DNSTAP_IP 419 -#define VAR_DNSTAP_TLS 420 -#define VAR_DNSTAP_TLS_SERVER_NAME 421 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 422 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 423 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 424 -#define VAR_DNSTAP_SEND_IDENTITY 425 -#define VAR_DNSTAP_SEND_VERSION 426 -#define VAR_DNSTAP_BIDIRECTIONAL 427 -#define VAR_DNSTAP_IDENTITY 428 -#define VAR_DNSTAP_VERSION 429 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 430 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 431 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 432 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 433 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 434 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 435 -#define VAR_RESPONSE_IP_TAG 436 -#define VAR_RESPONSE_IP 437 -#define VAR_RESPONSE_IP_DATA 438 -#define VAR_HARDEN_ALGO_DOWNGRADE 439 -#define VAR_IP_TRANSPARENT 440 -#define VAR_IP_DSCP 441 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 442 -#define VAR_IP_RATELIMIT 443 -#define VAR_IP_RATELIMIT_SLABS 444 -#define VAR_IP_RATELIMIT_SIZE 445 -#define VAR_RATELIMIT 446 -#define VAR_RATELIMIT_SLABS 447 -#define VAR_RATELIMIT_SIZE 448 -#define VAR_RATELIMIT_FOR_DOMAIN 449 -#define VAR_RATELIMIT_BELOW_DOMAIN 450 -#define VAR_IP_RATELIMIT_FACTOR 451 -#define VAR_RATELIMIT_FACTOR 452 -#define VAR_SEND_CLIENT_SUBNET 453 -#define VAR_CLIENT_SUBNET_ZONE 454 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 455 -#define VAR_CLIENT_SUBNET_OPCODE 456 -#define VAR_MAX_CLIENT_SUBNET_IPV4 457 -#define VAR_MAX_CLIENT_SUBNET_IPV6 458 -#define VAR_MIN_CLIENT_SUBNET_IPV4 459 -#define VAR_MIN_CLIENT_SUBNET_IPV6 460 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 461 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 462 -#define VAR_CAPS_WHITELIST 463 -#define VAR_CACHE_MAX_NEGATIVE_TTL 464 -#define VAR_PERMIT_SMALL_HOLDDOWN 465 -#define VAR_QNAME_MINIMISATION 466 -#define VAR_QNAME_MINIMISATION_STRICT 467 -#define VAR_IP_FREEBIND 468 -#define VAR_DEFINE_TAG 469 -#define VAR_LOCAL_ZONE_TAG 470 -#define VAR_ACCESS_CONTROL_TAG 471 -#define VAR_LOCAL_ZONE_OVERRIDE 472 -#define VAR_ACCESS_CONTROL_TAG_ACTION 473 -#define VAR_ACCESS_CONTROL_TAG_DATA 474 -#define VAR_VIEW 475 -#define VAR_ACCESS_CONTROL_VIEW 476 -#define VAR_VIEW_FIRST 477 -#define VAR_SERVE_EXPIRED 478 -#define VAR_SERVE_EXPIRED_TTL 479 -#define VAR_SERVE_EXPIRED_TTL_RESET 480 -#define VAR_SERVE_EXPIRED_REPLY_TTL 481 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 482 -#define VAR_FAKE_DSA 483 -#define VAR_FAKE_SHA1 484 -#define VAR_LOG_IDENTITY 485 -#define VAR_HIDE_TRUSTANCHOR 486 -#define VAR_TRUST_ANCHOR_SIGNALING 487 -#define VAR_AGGRESSIVE_NSEC 488 -#define VAR_USE_SYSTEMD 489 -#define VAR_SHM_ENABLE 490 -#define VAR_SHM_KEY 491 -#define VAR_ROOT_KEY_SENTINEL 492 -#define VAR_DNSCRYPT 493 -#define VAR_DNSCRYPT_ENABLE 494 -#define VAR_DNSCRYPT_PORT 495 -#define VAR_DNSCRYPT_PROVIDER 496 -#define VAR_DNSCRYPT_SECRET_KEY 497 -#define VAR_DNSCRYPT_PROVIDER_CERT 498 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 499 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 500 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 501 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 502 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 503 -#define VAR_IPSECMOD_ENABLED 504 -#define VAR_IPSECMOD_HOOK 505 -#define VAR_IPSECMOD_IGNORE_BOGUS 506 -#define VAR_IPSECMOD_MAX_TTL 507 -#define VAR_IPSECMOD_WHITELIST 508 -#define VAR_IPSECMOD_STRICT 509 -#define VAR_CACHEDB 510 -#define VAR_CACHEDB_BACKEND 511 -#define VAR_CACHEDB_SECRETSEED 512 -#define VAR_CACHEDB_REDISHOST 513 -#define VAR_CACHEDB_REDISPORT 514 -#define VAR_CACHEDB_REDISTIMEOUT 515 -#define VAR_CACHEDB_REDISEXPIRERECORDS 516 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 517 -#define VAR_FOR_UPSTREAM 518 -#define VAR_AUTH_ZONE 519 -#define VAR_ZONEFILE 520 -#define VAR_MASTER 521 -#define VAR_URL 522 -#define VAR_FOR_DOWNSTREAM 523 -#define VAR_FALLBACK_ENABLED 524 -#define VAR_TLS_ADDITIONAL_PORT 525 -#define VAR_LOW_RTT 526 -#define VAR_LOW_RTT_PERMIL 527 -#define VAR_FAST_SERVER_PERMIL 528 -#define VAR_FAST_SERVER_NUM 529 -#define VAR_ALLOW_NOTIFY 530 -#define VAR_TLS_WIN_CERT 531 -#define VAR_TCP_CONNECTION_LIMIT 532 -#define VAR_FORWARD_NO_CACHE 533 -#define VAR_STUB_NO_CACHE 534 -#define VAR_LOG_SERVFAIL 535 -#define VAR_DENY_ANY 536 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 537 -#define VAR_LOG_TAG_QUERYREPLY 538 -#define VAR_STREAM_WAIT_SIZE 539 -#define VAR_TLS_CIPHERS 540 -#define VAR_TLS_CIPHERSUITES 541 -#define VAR_TLS_USE_SNI 542 -#define VAR_IPSET 543 -#define VAR_IPSET_NAME_V4 544 -#define VAR_IPSET_NAME_V6 545 -#define VAR_TLS_SESSION_TICKET_KEYS 546 -#define VAR_RPZ 547 -#define VAR_TAGS 548 -#define VAR_RPZ_ACTION_OVERRIDE 549 -#define VAR_RPZ_CNAME_OVERRIDE 550 -#define VAR_RPZ_LOG 551 -#define VAR_RPZ_LOG_NAME 552 -#define VAR_DYNLIB 553 -#define VAR_DYNLIB_FILE 554 -#define VAR_EDNS_CLIENT_TAG 555 -#define VAR_EDNS_CLIENT_TAG_OPCODE 556 +#define VAR_UDP_CONNECT 409 +#define VAR_UNBLOCK_LAN_ZONES 410 +#define VAR_INSECURE_LAN_ZONES 411 +#define VAR_INFRA_CACHE_MIN_RTT 412 +#define VAR_INFRA_KEEP_PROBING 413 +#define VAR_DNS64_PREFIX 414 +#define VAR_DNS64_SYNTHALL 415 +#define VAR_DNS64_IGNORE_AAAA 416 +#define VAR_DNSTAP 417 +#define VAR_DNSTAP_ENABLE 418 +#define VAR_DNSTAP_SOCKET_PATH 419 +#define VAR_DNSTAP_IP 420 +#define VAR_DNSTAP_TLS 421 +#define VAR_DNSTAP_TLS_SERVER_NAME 422 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 423 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425 +#define VAR_DNSTAP_SEND_IDENTITY 426 +#define VAR_DNSTAP_SEND_VERSION 427 +#define VAR_DNSTAP_BIDIRECTIONAL 428 +#define VAR_DNSTAP_IDENTITY 429 +#define VAR_DNSTAP_VERSION 430 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436 +#define VAR_RESPONSE_IP_TAG 437 +#define VAR_RESPONSE_IP 438 +#define VAR_RESPONSE_IP_DATA 439 +#define VAR_HARDEN_ALGO_DOWNGRADE 440 +#define VAR_IP_TRANSPARENT 441 +#define VAR_IP_DSCP 442 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 443 +#define VAR_IP_RATELIMIT 444 +#define VAR_IP_RATELIMIT_SLABS 445 +#define VAR_IP_RATELIMIT_SIZE 446 +#define VAR_RATELIMIT 447 +#define VAR_RATELIMIT_SLABS 448 +#define VAR_RATELIMIT_SIZE 449 +#define VAR_RATELIMIT_FOR_DOMAIN 450 +#define VAR_RATELIMIT_BELOW_DOMAIN 451 +#define VAR_IP_RATELIMIT_FACTOR 452 +#define VAR_RATELIMIT_FACTOR 453 +#define VAR_SEND_CLIENT_SUBNET 454 +#define VAR_CLIENT_SUBNET_ZONE 455 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456 +#define VAR_CLIENT_SUBNET_OPCODE 457 +#define VAR_MAX_CLIENT_SUBNET_IPV4 458 +#define VAR_MAX_CLIENT_SUBNET_IPV6 459 +#define VAR_MIN_CLIENT_SUBNET_IPV4 460 +#define VAR_MIN_CLIENT_SUBNET_IPV6 461 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 462 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 463 +#define VAR_CAPS_WHITELIST 464 +#define VAR_CACHE_MAX_NEGATIVE_TTL 465 +#define VAR_PERMIT_SMALL_HOLDDOWN 466 +#define VAR_QNAME_MINIMISATION 467 +#define VAR_QNAME_MINIMISATION_STRICT 468 +#define VAR_IP_FREEBIND 469 +#define VAR_DEFINE_TAG 470 +#define VAR_LOCAL_ZONE_TAG 471 +#define VAR_ACCESS_CONTROL_TAG 472 +#define VAR_LOCAL_ZONE_OVERRIDE 473 +#define VAR_ACCESS_CONTROL_TAG_ACTION 474 +#define VAR_ACCESS_CONTROL_TAG_DATA 475 +#define VAR_VIEW 476 +#define VAR_ACCESS_CONTROL_VIEW 477 +#define VAR_VIEW_FIRST 478 +#define VAR_SERVE_EXPIRED 479 +#define VAR_SERVE_EXPIRED_TTL 480 +#define VAR_SERVE_EXPIRED_TTL_RESET 481 +#define VAR_SERVE_EXPIRED_REPLY_TTL 482 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 +#define VAR_FAKE_DSA 484 +#define VAR_FAKE_SHA1 485 +#define VAR_LOG_IDENTITY 486 +#define VAR_HIDE_TRUSTANCHOR 487 +#define VAR_TRUST_ANCHOR_SIGNALING 488 +#define VAR_AGGRESSIVE_NSEC 489 +#define VAR_USE_SYSTEMD 490 +#define VAR_SHM_ENABLE 491 +#define VAR_SHM_KEY 492 +#define VAR_ROOT_KEY_SENTINEL 493 +#define VAR_DNSCRYPT 494 +#define VAR_DNSCRYPT_ENABLE 495 +#define VAR_DNSCRYPT_PORT 496 +#define VAR_DNSCRYPT_PROVIDER 497 +#define VAR_DNSCRYPT_SECRET_KEY 498 +#define VAR_DNSCRYPT_PROVIDER_CERT 499 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504 +#define VAR_IPSECMOD_ENABLED 505 +#define VAR_IPSECMOD_HOOK 506 +#define VAR_IPSECMOD_IGNORE_BOGUS 507 +#define VAR_IPSECMOD_MAX_TTL 508 +#define VAR_IPSECMOD_WHITELIST 509 +#define VAR_IPSECMOD_STRICT 510 +#define VAR_CACHEDB 511 +#define VAR_CACHEDB_BACKEND 512 +#define VAR_CACHEDB_SECRETSEED 513 +#define VAR_CACHEDB_REDISHOST 514 +#define VAR_CACHEDB_REDISPORT 515 +#define VAR_CACHEDB_REDISTIMEOUT 516 +#define VAR_CACHEDB_REDISEXPIRERECORDS 517 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518 +#define VAR_FOR_UPSTREAM 519 +#define VAR_AUTH_ZONE 520 +#define VAR_ZONEFILE 521 +#define VAR_MASTER 522 +#define VAR_URL 523 +#define VAR_FOR_DOWNSTREAM 524 +#define VAR_FALLBACK_ENABLED 525 +#define VAR_TLS_ADDITIONAL_PORT 526 +#define VAR_LOW_RTT 527 +#define VAR_LOW_RTT_PERMIL 528 +#define VAR_FAST_SERVER_PERMIL 529 +#define VAR_FAST_SERVER_NUM 530 +#define VAR_ALLOW_NOTIFY 531 +#define VAR_TLS_WIN_CERT 532 +#define VAR_TCP_CONNECTION_LIMIT 533 +#define VAR_FORWARD_NO_CACHE 534 +#define VAR_STUB_NO_CACHE 535 +#define VAR_LOG_SERVFAIL 536 +#define VAR_DENY_ANY 537 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 538 +#define VAR_LOG_TAG_QUERYREPLY 539 +#define VAR_STREAM_WAIT_SIZE 540 +#define VAR_TLS_CIPHERS 541 +#define VAR_TLS_CIPHERSUITES 542 +#define VAR_TLS_USE_SNI 543 +#define VAR_IPSET 544 +#define VAR_IPSET_NAME_V4 545 +#define VAR_IPSET_NAME_V6 546 +#define VAR_TLS_SESSION_TICKET_KEYS 547 +#define VAR_RPZ 548 +#define VAR_TAGS 549 +#define VAR_RPZ_ACTION_OVERRIDE 550 +#define VAR_RPZ_CNAME_OVERRIDE 551 +#define VAR_RPZ_LOG 552 +#define VAR_RPZ_LOG_NAME 553 +#define VAR_DYNLIB 554 +#define VAR_DYNLIB_FILE 555 +#define VAR_EDNS_CLIENT_TAG 556 +#define VAR_EDNS_CLIENT_TAG_OPCODE 557 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -659,7 +661,7 @@ union YYSTYPE char* str; -#line 663 "util/configparser.h" +#line 665 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 340fc0f5d..d92a83cc5 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -116,7 +116,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_HTTP_QUERY_BUFFER_SIZE VAR_HTTP_RESPONSE_BUFFER_SIZE %token VAR_HTTP_NODELAY VAR_HTTP_NOTLS_DOWNSTREAM %token VAR_STUB_FIRST VAR_MINIMAL_RESPONSES VAR_RRSET_ROUNDROBIN -%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE +%token VAR_MAX_UDP_SIZE VAR_DELAY_CLOSE VAR_UDP_CONNECT %token VAR_UNBLOCK_LAN_ZONES VAR_INSECURE_LAN_ZONES %token VAR_INFRA_CACHE_MIN_RTT VAR_INFRA_KEEP_PROBING %token VAR_DNS64_PREFIX VAR_DNS64_SYNTHALL VAR_DNS64_IGNORE_AAAA @@ -251,7 +251,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_http_query_buffer_size | server_http_response_buffer_size | server_http_nodelay | server_http_notls_downstream | server_minimal_responses | server_rrset_roundrobin | server_max_udp_size | - server_so_reuseport | server_delay_close | + server_so_reuseport | server_delay_close | server_udp_connect | server_unblock_lan_zones | server_insecure_lan_zones | server_dns64_prefix | server_dns64_synthall | server_dns64_ignore_aaaa | server_infra_cache_min_rtt | server_harden_algo_downgrade | @@ -1443,6 +1443,15 @@ server_delay_close: VAR_DELAY_CLOSE STRING_ARG free($2); } ; +server_udp_connect: VAR_UDP_CONNECT STRING_ARG + { + OUTYY(("P(server_udp_connect:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->udp_connect = (strcmp($2, "yes")==0); + free($2); + } + ; server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG { OUTYY(("P(server_unblock_lan_zones:%s)\n", $2)); From ad387832979b6ce4c93f64fe706301cd7d034e87 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 13:42:11 +0100 Subject: [PATCH 279/394] - Fix for #303 CVE-2020-28935 : Fix that symlink does not interfere with chown of pidfile. --- daemon/unbound.c | 26 ++++++++++++++++++++------ doc/Changelog | 2 ++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index cd0fd69f2..45537d5c9 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -341,18 +341,32 @@ readpid (const char* file) static void writepid (const char* pidfile, pid_t pid) { - FILE* f; + int fd; + char pidbuf[32]; + size_t count = 0; + snprintf(pidbuf, sizeof(pidbuf), "%lu\n", (unsigned long)pid); - if ((f = fopen(pidfile, "w")) == NULL ) { + if((fd = open(pidfile, O_WRONLY | O_CREAT | O_TRUNC +#ifdef O_NOFOLLOW + | O_NOFOLLOW +#endif + , 0644)) == -1) { log_err("cannot open pidfile %s: %s", pidfile, strerror(errno)); return; } - if(fprintf(f, "%lu\n", (unsigned long)pid) < 0) { - log_err("cannot write to pidfile %s: %s", - pidfile, strerror(errno)); + while(count < strlen(pidbuf)) { + ssize_t r = write(fd, pidbuf+count, strlen(pidbuf)-count); + if(r == -1) { + if(errno == EAGAIN || errno == EINTR) + continue; + log_err("cannot write to pidfile %s: %s", + pidfile, strerror(errno)); + break; + } + count += r; } - fclose(f); + close(fd); } /** diff --git a/doc/Changelog b/doc/Changelog index cfaa3d098..5bb0f05f3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ supported by protocol. - Fix #347: IP_DONTFRAG broken on Apple xcode 12.2. - Option to toggle udp-connect, default is enabled. + - Fix for #303 CVE-2020-28935 : Fix that symlink does not interfere + with chown of pidfile. 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, From 19f8f4d9f99a44906ab9dcc46d44da299fde3506 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 13:48:04 +0100 Subject: [PATCH 280/394] Further fix for CVE-2020-28935, so the chown is omitted when the pidfile fails due to a symlink. --- daemon/unbound.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index 45537d5c9..0efa353da 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -337,8 +337,9 @@ readpid (const char* file) /** write pid to file. * @param pidfile: file name of pid file. * @param pid: pid to write to file. + * @return false on failure */ -static void +static int writepid (const char* pidfile, pid_t pid) { int fd; @@ -353,7 +354,7 @@ writepid (const char* pidfile, pid_t pid) , 0644)) == -1) { log_err("cannot open pidfile %s: %s", pidfile, strerror(errno)); - return; + return 0; } while(count < strlen(pidbuf)) { ssize_t r = write(fd, pidbuf+count, strlen(pidbuf)-count); @@ -362,11 +363,13 @@ writepid (const char* pidfile, pid_t pid) continue; log_err("cannot write to pidfile %s: %s", pidfile, strerror(errno)); - break; + close(fd); + return 0; } count += r; } close(fd); + return 1; } /** @@ -520,16 +523,17 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, /* write new pidfile (while still root, so can be outside chroot) */ #ifdef HAVE_KILL if(cfg->pidfile && cfg->pidfile[0] && need_pidfile) { - writepid(daemon->pidfile, getpid()); - if(cfg->username && cfg->username[0] && cfg_uid != (uid_t)-1 && - pidinchroot) { + if(writepid(daemon->pidfile, getpid())) { + if(cfg->username && cfg->username[0] && cfg_uid != (uid_t)-1 && + pidinchroot) { # ifdef HAVE_CHOWN - if(chown(daemon->pidfile, cfg_uid, cfg_gid) == -1) { - verbose(VERB_QUERY, "cannot chown %u.%u %s: %s", - (unsigned)cfg_uid, (unsigned)cfg_gid, - daemon->pidfile, strerror(errno)); - } + if(chown(daemon->pidfile, cfg_uid, cfg_gid) == -1) { + verbose(VERB_QUERY, "cannot chown %u.%u %s: %s", + (unsigned)cfg_uid, (unsigned)cfg_gid, + daemon->pidfile, strerror(errno)); + } # endif /* HAVE_CHOWN */ + } } } #else From 62152e0493a16a0d6caad8c62ecd723b2b5308bc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 23 Nov 2020 14:17:58 +0100 Subject: [PATCH 281/394] Fix writepid for retvalue 0. --- daemon/unbound.c | 5 +++++ doc/Changelog | 1 + 2 files changed, 6 insertions(+) diff --git a/daemon/unbound.c b/daemon/unbound.c index 0efa353da..bc6d2bc9e 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -365,6 +365,11 @@ writepid (const char* pidfile, pid_t pid) pidfile, strerror(errno)); close(fd); return 0; + } else if(r == 0) { + log_err("cannot write any bytes to pidfile %s: " + "write returns 0 bytes written", pidfile); + close(fd); + return 0; } count += r; } diff --git a/doc/Changelog b/doc/Changelog index 5bb0f05f3..5d158ef5d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ - Option to toggle udp-connect, default is enabled. - Fix for #303 CVE-2020-28935 : Fix that symlink does not interfere with chown of pidfile. + - Further fix for it and retvalue 0 fix for it. 12 November 2020: Wouter - Fix to connect() to UDP destinations, default turned on, From 2d184f750522d3f50b037ecda2c722e91a9218fa Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 23 Nov 2020 16:32:00 +0100 Subject: [PATCH 282/394] - Update manpage. --- doc/unbound.conf.5.in | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 84cba76d4..817048f67 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1548,12 +1548,13 @@ option, that turns this on or off. The default is to use the fastest 3 servers. .TP 5 .B edns\-client\-string: \fI Include an EDNS0 option containing configured ascii string in queries with -destination address matching the configured IP netblock. This configuration +destination address matching the configured IP netblock. This configuration option can be used multiple times. The most specific match will be used. .TP 5 .B edns\-client\-string\-opcode: \fI -EDNS0 option code for the edns-client-string option, from 0 to 65535. Default is -65001. +EDNS0 option code for the \fIedns\-client\-string\fR option, from 0 to 65535. +A value from the `Reserved for Local/Experimental` range (65001-65534) should +be used. Default is 65001. .SS "Remote Control Options" In the .B remote\-control: From f04f7fdf174352597eb198f6153b5f7cda92b597 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 23 Nov 2020 17:37:46 +0100 Subject: [PATCH 283/394] Changelog note for #313: - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with edns-client-string option. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 5d158ef5d..80602b457 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +23 November 2020: George + - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with + edns-client-string option. + 23 November 2020: Wouter - Merge #351 from dvzrv: Add AF_NETLINK to set of allowed socket address families. From de4e6ad99db833a57fe8831622fdfb568daea571 Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 24 Nov 2020 08:23:24 +0100 Subject: [PATCH 284/394] Changelog note for #283. - Merge PR #283 : Stream reuse. This implements upstream stream reuse for performing several queries over the same TCP or TLS channel. --- doc/Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 80602b457..26e7db51d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +24 November 2020: Wouter + - Merge PR #283 : Stream reuse. This implements upstream stream + reuse for performing several queries over the same TCP or TLS + channel. + 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with edns-client-string option. From 090a4e417d8c4f02029b9442a14adaf59f7c316e Mon Sep 17 00:00:00 2001 From: Wouter Wijngaards Date: Tue, 24 Nov 2020 08:28:08 +0100 Subject: [PATCH 285/394] - set version of main branch to 1.13.0 for upcoming release. --- configure | 26 +++++++++++++------------- configure.ac | 6 +++--- doc/Changelog | 1 + 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 3e5e562ae..7fa20f987 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.12.1. +# Generated by GNU Autoconf 2.69 for unbound 1.13.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.12.1' -PACKAGE_STRING='unbound 1.12.1' +PACKAGE_VERSION='1.13.0' +PACKAGE_STRING='unbound 1.13.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1459,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.12.1 to adapt to many kinds of systems. +\`configure' configures unbound 1.13.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.12.1:";; + short | recursive ) echo "Configuration of unbound 1.13.0:";; esac cat <<\_ACEOF @@ -1752,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.12.1 +unbound configure 1.13.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2461,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.12.1, which was +It was created by unbound $as_me 1.13.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2811,9 +2811,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=12 +UNBOUND_VERSION_MINOR=13 -UNBOUND_VERSION_MICRO=1 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2895,7 +2895,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 -# 1.12.1 had 9:11:1 +# 1.13.0 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21731,7 +21731,7 @@ _ACEOF -version=1.12.1 +version=1.13.0 date=`date +'%b %e, %Y'` @@ -22250,7 +22250,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.12.1, which was +This file was extended by unbound $as_me 1.13.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22316,7 +22316,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.12.1 +unbound config.status 1.13.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index b4caa37dd..5385f7747 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[12]) -m4_define([VERSION_MICRO],[1]) +m4_define([VERSION_MINOR],[13]) +m4_define([VERSION_MICRO],[0]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) @@ -96,7 +96,7 @@ LIBUNBOUND_AGE=1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 -# 1.12.1 had 9:11:1 +# 1.13.0 had 9:11:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 26e7db51d..88047e4b2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Merge PR #283 : Stream reuse. This implements upstream stream reuse for performing several queries over the same TCP or TLS channel. + - set version of main branch to 1.13.0 for upcoming release. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with From a69304011a608e480062ee96ff272f800b852d0f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 24 Nov 2020 13:17:15 +0100 Subject: [PATCH 286/394] - iana portlist updated. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 88047e4b2..039964ed7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ reuse for performing several queries over the same TCP or TLS channel. - set version of main branch to 1.13.0 for upcoming release. + - iana portlist updated. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with diff --git a/util/iana_ports.inc b/util/iana_ports.inc index fa25869d3..d9978f92e 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -5290,6 +5290,7 @@ 22005, 22273, 22305, +22333, 22335, 22343, 22347, From e78957706ca0b5de66eced7054e41da2f78c8965 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 24 Nov 2020 14:16:06 +0100 Subject: [PATCH 287/394] - Fix one port unit test for udp-connect. --- doc/Changelog | 1 + testdata/fwd_oneport.tdir/fwd_oneport.conf | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 039964ed7..6d1870f17 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ channel. - set version of main branch to 1.13.0 for upcoming release. - iana portlist updated. + - Fix one port unit test for udp-connect. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with diff --git a/testdata/fwd_oneport.tdir/fwd_oneport.conf b/testdata/fwd_oneport.tdir/fwd_oneport.conf index f3427fece..21ebc9fed 100644 --- a/testdata/fwd_oneport.tdir/fwd_oneport.conf +++ b/testdata/fwd_oneport.tdir/fwd_oneport.conf @@ -13,6 +13,7 @@ server: num-queries-per-thread: 1024 use-syslog: no do-not-query-localhost: no + udp-connect: no forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@" From 6a324a37ca0c56ef5b39177ea4c84b3dd2aa5b37 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 24 Nov 2020 15:01:44 +0100 Subject: [PATCH 288/394] - tag for the 1.13.0rc1 release. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 6d1870f17..9c609408e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - set version of main branch to 1.13.0 for upcoming release. - iana portlist updated. - Fix one port unit test for udp-connect. + - tag for the 1.13.0rc1 release. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with From 978d3840dc6a28d634b1a184a62645663b679175 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 24 Nov 2020 16:58:51 +0100 Subject: [PATCH 289/394] - Fix crash when TLS connection is closed prematurely, when reuse tree comparison is not properly identical to insertion. --- doc/Changelog | 2 ++ services/outside_network.c | 14 ++++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9c609408e..a07b4a373 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,8 @@ - iana portlist updated. - Fix one port unit test for udp-connect. - tag for the 1.13.0rc1 release. + - Fix crash when TLS connection is closed prematurely, when + reuse tree comparison is not properly identical to insertion. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with diff --git a/services/outside_network.c b/services/outside_network.c index 9391b05e2..a55cc1cd3 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -886,6 +886,14 @@ decommission_pending_tcp(struct outside_network* outnet, struct pending_tcp* pend) { verbose(VERB_CLIENT, "decommission_pending_tcp"); + pend->next_free = outnet->tcp_free; + outnet->tcp_free = pend; + if(pend->reuse.node.key) { + /* needs unlink from the reuse tree to get deleted */ + reuse_tcp_remove_tree_list(outnet, &pend->reuse); + } + /* free SSL structure after remove from outnet tcp reuse tree, + * because the c->ssl null or not is used for sorting in the tree */ if(pend->c->ssl) { #ifdef HAVE_SSL SSL_shutdown(pend->c->ssl); @@ -894,12 +902,6 @@ decommission_pending_tcp(struct outside_network* outnet, #endif } comm_point_close(pend->c); - pend->next_free = outnet->tcp_free; - outnet->tcp_free = pend; - if(pend->reuse.node.key) { - /* needs unlink from the reuse tree to get deleted */ - reuse_tcp_remove_tree_list(outnet, &pend->reuse); - } /* unlink the query and writewait list, it is part of the tree * nodes and is deleted */ pend->query = NULL; From 4e8a1ede3b41e9b4a93cb664fbc3f48b1521f62b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 24 Nov 2020 17:06:54 +0100 Subject: [PATCH 290/394] - Fix padding of struct regional for 32bit systems. --- doc/Changelog | 1 + util/regional.h | 3 +++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a07b4a373..a635698c8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -8,6 +8,7 @@ - tag for the 1.13.0rc1 release. - Fix crash when TLS connection is closed prematurely, when reuse tree comparison is not properly identical to insertion. + - Fix padding of struct regional for 32bit systems. 23 November 2020: George - Merge PR #313 from Ralph Dolmans: Replace edns-client-tag with diff --git a/util/regional.h b/util/regional.h index eeb7de7b5..b439897d5 100644 --- a/util/regional.h +++ b/util/regional.h @@ -76,6 +76,9 @@ struct regional char* data; /** threshold for outside of chunk allocations */ size_t large_object_size; + /** padding for sizeof8 alignment of sizeof(struct regional) + * for 32bit systems */ + size_t padding; }; /** From f44118408bb5a1bb4decd68d5faffa7e4487aac7 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 24 Nov 2020 19:23:08 -0500 Subject: [PATCH 291/394] Make ICANN Update CA and DS Trust Key static data --- smallapp/unbound-anchor.c | 61 ++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index a30523c76..9d0d46d9e 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -155,6 +155,36 @@ char* wsa_strerror(int err); #endif +static const char ICANN_UPDATE_CA[] = + /* The ICANN CA fetched at 24 Sep 2010. Valid to 2028 */ + "-----BEGIN CERTIFICATE-----\n" + "MIIDdzCCAl+gAwIBAgIBATANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO\n" + "TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV\n" + "BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTA5MTIyMzA0MTkxMloX\n" + "DTI5MTIxODA0MTkxMlowXTEOMAwGA1UEChMFSUNBTk4xJjAkBgNVBAsTHUlDQU5O\n" + "IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1JQ0FOTiBSb290IENB\n" + "MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKDb\n" + "cLhPNNqc1NB+u+oVvOnJESofYS9qub0/PXagmgr37pNublVThIzyLPGCJ8gPms9S\n" + "G1TaKNIsMI7d+5IgMy3WyPEOECGIcfqEIktdR1YWfJufXcMReZwU4v/AdKzdOdfg\n" + "ONiwc6r70duEr1IiqPbVm5T05l1e6D+HkAvHGnf1LtOPGs4CHQdpIUcy2kauAEy2\n" + "paKcOcHASvbTHK7TbbvHGPB+7faAztABLoneErruEcumetcNfPMIjXKdv1V1E3C7\n" + "MSJKy+jAqqQJqjZoQGB0necZgUMiUv7JK1IPQRM2CXJllcyJrm9WFxY0c1KjBO29\n" + "iIKK69fcglKcBuFShUECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B\n" + "Af8EBAMCAf4wHQYDVR0OBBYEFLpS6UmDJIZSL8eZzfyNa2kITcBQMA0GCSqGSIb3\n" + "DQEBCwUAA4IBAQAP8emCogqHny2UYFqywEuhLys7R9UKmYY4suzGO4nkbgfPFMfH\n" + "6M+Zj6owwxlwueZt1j/IaCayoKU3QsrYYoDRolpILh+FPwx7wseUEV8ZKpWsoDoD\n" + "2JFbLg2cfB8u/OlE4RYmcxxFSmXBg0yQ8/IoQt/bxOcEEhhiQ168H2yE5rxJMt9h\n" + "15nu5JBSewrCkYqYYmaxyOC3WrVGfHZxVI7MpIFcGdvSb2a1uyuua8l0BKgk3ujF\n" + "0/wsHNeP22qNyVO+XVBzrM8fk8BSUFuiT/6tZTYXRtEt5aKQZgXbKU5dUF3jT9qg\n" + "j/Br5BZw3X/zd325TvnswzMC1+ljLzHnQGGk\n" + "-----END CERTIFICATE-----\n"; + +static const char DS_TRUST_ANCHOR[] = + /* The anchors must start on a new line with ". IN DS and end with \n"[;] + * because the makedist script greps on the source here */ + /* anchor 20326 is from 2017 */ + ". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; + /** verbosity for this application */ static int verb = 0; @@ -213,41 +243,14 @@ usage(void) static const char* get_builtin_cert(void) { - return -/* The ICANN CA fetched at 24 Sep 2010. Valid to 2028 */ -"-----BEGIN CERTIFICATE-----\n" -"MIIDdzCCAl+gAwIBAgIBATANBgkqhkiG9w0BAQsFADBdMQ4wDAYDVQQKEwVJQ0FO\n" -"TjEmMCQGA1UECxMdSUNBTk4gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxFjAUBgNV\n" -"BAMTDUlDQU5OIFJvb3QgQ0ExCzAJBgNVBAYTAlVTMB4XDTA5MTIyMzA0MTkxMloX\n" -"DTI5MTIxODA0MTkxMlowXTEOMAwGA1UEChMFSUNBTk4xJjAkBgNVBAsTHUlDQU5O\n" -"IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1JQ0FOTiBSb290IENB\n" -"MQswCQYDVQQGEwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKDb\n" -"cLhPNNqc1NB+u+oVvOnJESofYS9qub0/PXagmgr37pNublVThIzyLPGCJ8gPms9S\n" -"G1TaKNIsMI7d+5IgMy3WyPEOECGIcfqEIktdR1YWfJufXcMReZwU4v/AdKzdOdfg\n" -"ONiwc6r70duEr1IiqPbVm5T05l1e6D+HkAvHGnf1LtOPGs4CHQdpIUcy2kauAEy2\n" -"paKcOcHASvbTHK7TbbvHGPB+7faAztABLoneErruEcumetcNfPMIjXKdv1V1E3C7\n" -"MSJKy+jAqqQJqjZoQGB0necZgUMiUv7JK1IPQRM2CXJllcyJrm9WFxY0c1KjBO29\n" -"iIKK69fcglKcBuFShUECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B\n" -"Af8EBAMCAf4wHQYDVR0OBBYEFLpS6UmDJIZSL8eZzfyNa2kITcBQMA0GCSqGSIb3\n" -"DQEBCwUAA4IBAQAP8emCogqHny2UYFqywEuhLys7R9UKmYY4suzGO4nkbgfPFMfH\n" -"6M+Zj6owwxlwueZt1j/IaCayoKU3QsrYYoDRolpILh+FPwx7wseUEV8ZKpWsoDoD\n" -"2JFbLg2cfB8u/OlE4RYmcxxFSmXBg0yQ8/IoQt/bxOcEEhhiQ168H2yE5rxJMt9h\n" -"15nu5JBSewrCkYqYYmaxyOC3WrVGfHZxVI7MpIFcGdvSb2a1uyuua8l0BKgk3ujF\n" -"0/wsHNeP22qNyVO+XVBzrM8fk8BSUFuiT/6tZTYXRtEt5aKQZgXbKU5dUF3jT9qg\n" -"j/Br5BZw3X/zd325TvnswzMC1+ljLzHnQGGk\n" -"-----END CERTIFICATE-----\n" - ; + return ICANN_UPDATE_CA; } /** return the built in root DS trust anchor */ static const char* get_builtin_ds(void) { - return -/* The anchors must start on a new line with ". IN DS and end with \n"[;] - * because the makedist script greps on the source here */ -/* anchor 20326 is from 2017 */ -". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; + return DS_TRUST_ANCHOR; } /** print hex data */ From 328e8d22948f1641994d3b14a269b8321b26f29c Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Tue, 24 Nov 2020 19:24:48 -0500 Subject: [PATCH 292/394] Use size_t in place of int for length --- smallapp/unbound-anchor.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index 9d0d46d9e..c4e9b3bfd 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -255,9 +255,9 @@ get_builtin_ds(void) /** print hex data */ static void -print_data(const char* msg, const char* data, int len) +print_data(const char* msg, const char* data, size_t len) { - int i; + size_t i; printf("%s: ", msg); for(i=0; i= 4) print_data("read data", data, (int)len); + if(verb >= 4) print_data("read data", data, len); m = BIO_new(BIO_s_mem()); if(!m) { if(verb) printf("out of memory\n"); From 5924a591be1491a65714413f83de5798a3c42aad Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 09:41:06 +0100 Subject: [PATCH 293/394] - with udp-connect ignore connection refused with UDP timeouts. --- doc/Changelog | 3 +++ util/netevent.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a635698c8..0f46a3694 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +25 November 2020: Wouter + - with udp-connect ignore connection refused with UDP timeouts. + 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream reuse for performing several queries over the same TCP or TLS diff --git a/util/netevent.c b/util/netevent.c index b73c6459a..7999e2c3f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -697,7 +697,8 @@ comm_point_udp_callback(int fd, short event, void* arg) (struct sockaddr*)&rep.addr, &rep.addrlen); if(rcv == -1) { #ifndef USE_WINSOCK - if(errno != EAGAIN && errno != EINTR) + if(errno != EAGAIN && errno != EINTR + && errno != ECONNREFUSED) log_err("recvfrom %d failed: %s", fd, strerror(errno)); #else From 15e8f5c6d4f85c3858c7ad8927ee50f2da8a8a54 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 09:55:01 +0100 Subject: [PATCH 294/394] - Fix udp-connect on FreeBSD, do send calls on connected UDP socket. --- doc/Changelog | 1 + services/outside_network.c | 15 +++++++++++---- util/netevent.c | 13 +++++++++---- util/netevent.h | 3 ++- 4 files changed, 23 insertions(+), 9 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0f46a3694..0ceba16b4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. + - Fix udp-connect on FreeBSD, do send calls on connected UDP socket. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/services/outside_network.c b/services/outside_network.c index a55cc1cd3..724550632 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1854,10 +1854,17 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout) log_assert(pend->pc && pend->pc->cp); /* send it over the commlink */ - if(!comm_point_send_udp_msg(pend->pc->cp, packet, - (struct sockaddr*)&pend->addr, pend->addrlen)) { - portcomm_loweruse(outnet, pend->pc); - return 0; + if(outnet->udp_connect) { + if(!comm_point_send_udp_msg(pend->pc->cp, packet, NULL, 0)) { + portcomm_loweruse(outnet, pend->pc); + return 0; + } + } else { + if(!comm_point_send_udp_msg(pend->pc->cp, packet, + (struct sockaddr*)&pend->addr, pend->addrlen)) { + portcomm_loweruse(outnet, pend->pc); + return 0; + } } /* system calls to set timeout after sending UDP to make roundtrip diff --git a/util/netevent.c b/util/netevent.c index 7999e2c3f..814ab6f0a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -341,10 +341,15 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, if(sldns_buffer_remaining(packet) == 0) log_err("error: send empty UDP packet"); #endif - log_assert(addr && addrlen > 0); - sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), - sldns_buffer_remaining(packet), 0, - addr, addrlen); + if(addr) { + log_assert(addr && addrlen > 0); + sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), + sldns_buffer_remaining(packet), 0, + addr, addrlen); + } else { + sent = send(c->fd, (void*)sldns_buffer_begin(packet), + sldns_buffer_remaining(packet), 0); + } if(sent == -1) { /* try again and block, waiting for IO to complete, * we want to send the answer, and we will wait for diff --git a/util/netevent.h b/util/netevent.h index ce07b7500..75baf2177 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -620,7 +620,8 @@ void comm_point_drop_reply(struct comm_reply* repinfo); * Send an udp message over a commpoint. * @param c: commpoint to send it from. * @param packet: what to send. - * @param addr: where to send it to. + * @param addr: where to send it to. If NULL, send is performed, + * for connected sockets, to the connected address. * @param addrlen: length of addr. * @return: false on a failure. */ From 4b644b7965e2e63f88cdee49ab1a88eba4fbded5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 10:22:11 +0100 Subject: [PATCH 295/394] - Better fix for reuse tree comparison for is-tls sockets. Where the tree key identity is preserved after cleanup of the TLS state. --- doc/Changelog | 2 ++ services/outside_network.c | 11 +++++++---- services/outside_network.h | 2 ++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0ceba16b4..646c7f6fe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. - Fix udp-connect on FreeBSD, do send calls on connected UDP socket. + - Better fix for reuse tree comparison for is-tls sockets. Where + the tree key identity is preserved after cleanup of the TLS state. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/services/outside_network.c b/services/outside_network.c index 724550632..0a940aaf2 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -146,9 +146,9 @@ reuse_cmp_addrportssl(const void* key1, const void* key2) return r; /* compare if SSL-enabled */ - if(r1->pending->c->ssl && !r2->pending->c->ssl) + if(r1->is_ssl && !r2->is_ssl) return 1; - if(!r1->pending->c->ssl && r2->pending->c->ssl) + if(!r1->is_ssl && r2->is_ssl) return -1; return 0; } @@ -465,8 +465,8 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, key_p.c = &c; key_p.reuse.pending = &key_p; key_p.reuse.node.key = &key_p.reuse; - if(use_ssl) /* something nonNULL for comparisons in tree */ - key_p.c->ssl = (void*)1; + if(use_ssl) + key_p.reuse.is_ssl = 1; if(addrlen > sizeof(key_p.reuse.addr)) return NULL; memmove(&key_p.reuse.addr, addr, addrlen); @@ -657,6 +657,9 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->c->repinfo.addrlen = w->addrlen; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; + if(pend->c->ssl) + pend->reuse.is_ssl = 1; + else pend->reuse.is_ssl = 0; /* insert in reuse by address tree if not already inserted there */ (void)reuse_tcp_insert(w->outnet, pend); reuse_tree_by_id_insert(&pend->reuse, w); diff --git a/services/outside_network.h b/services/outside_network.h index 7dade240b..48f9d3f03 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -247,6 +247,8 @@ struct reuse_tcp { struct sockaddr_storage addr; /** length of addr */ socklen_t addrlen; + /** also key for tcp_reuse tree, if ssl is used */ + int is_ssl; /** lru chain, so that the oldest can be removed to get a new * connection when all are in (re)use. oldest is last in list. * The lru only contains empty connections waiting for reuse, From 3c2b1fa801990def492ab941c85cc5f16f0f589e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 12:02:51 +0100 Subject: [PATCH 296/394] - Remove debug commands from reuse tests. --- doc/Changelog | 1 + testdata/tcp_reuse.tdir/tcp_reuse.pre | 2 +- testdata/tls_reuse.tdir/tls_reuse.pre | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 646c7f6fe..4d8c52d66 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix udp-connect on FreeBSD, do send calls on connected UDP socket. - Better fix for reuse tree comparison for is-tls sockets. Where the tree key identity is preserved after cleanup of the TLS state. + - Remove debug commands from reuse tests. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/testdata/tcp_reuse.tdir/tcp_reuse.pre b/testdata/tcp_reuse.tdir/tcp_reuse.pre index 30dbdc96f..511dbc6f7 100644 --- a/testdata/tcp_reuse.tdir/tcp_reuse.pre +++ b/testdata/tcp_reuse.tdir/tcp_reuse.pre @@ -16,7 +16,7 @@ echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tcp_reuse.conf > ub.conf # start unbound in the background #$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & -valgrind $PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test wait_unbound_up unbound.log diff --git a/testdata/tls_reuse.tdir/tls_reuse.pre b/testdata/tls_reuse.tdir/tls_reuse.pre index ddd6ff4d3..f4ba26372 100644 --- a/testdata/tls_reuse.tdir/tls_reuse.pre +++ b/testdata/tls_reuse.tdir/tls_reuse.pre @@ -16,7 +16,7 @@ echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < tls_reuse.conf > ub.conf # start unbound in the background #$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & -valgrind $PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test wait_unbound_up unbound.log From a5167e495fef3c69476048010c3cf712bde2aff4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 12:04:38 +0100 Subject: [PATCH 297/394] - Fix memory leak for edns client tag opcode config element. --- doc/Changelog | 1 + util/configparser.c | 3338 ++++++++++++++++++------------------------- util/configparser.h | 623 ++++---- util/configparser.y | 1 + 4 files changed, 1733 insertions(+), 2230 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 4d8c52d66..ef9c8a5a7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Better fix for reuse tree comparison for is-tls sockets. Where the tree key identity is preserved after cleanup of the TLS state. - Remove debug commands from reuse tests. + - Fix memory leak for edns client tag opcode config element. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/util/configparser.c b/util/configparser.c index f688310b9..4e5bf5a41 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,10 +34,6 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -45,11 +41,14 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ + /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.6.4" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -96,17 +95,8 @@ extern struct config_parser_state* cfg_parser; #endif -#line 100 "util/configparser.c" +#line 99 "util/configparser.c" -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -119,6 +109,14 @@ extern struct config_parser_state* cfg_parser; # endif # endif +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + /* Use api.header.include to #include this header instead of duplicating it here. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED @@ -131,322 +129,314 @@ extern struct config_parser_state* cfg_parser; extern int yydebug; #endif -/* Token kinds. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 367, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 379, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 417, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 476, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_FAKE_DSA = 484, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 485, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 486, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 487, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 488, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 489, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 490, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 491, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 492, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 493, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 494, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 495, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 496, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 497, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 498, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 499, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_IPSECMOD_ENABLED = 505, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 506, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 507, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 508, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 509, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 510, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 511, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 512, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 513, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 514, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 515, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 516, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 517, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 519, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 520, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 521, /* VAR_ZONEFILE */ - VAR_MASTER = 522, /* VAR_MASTER */ - VAR_URL = 523, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 524, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 525, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 526, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 527, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 528, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 529, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 530, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 531, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 532, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 533, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 534, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 535, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 536, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 537, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 539, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 540, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 541, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 542, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 543, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 544, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 545, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 546, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 547, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 548, /* VAR_RPZ */ - VAR_TAGS = 549, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 550, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 551, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 552, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 553, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 554, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 555, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 556, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 557 /* VAR_EDNS_CLIENT_STRING_OPCODE */ + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_HTTPS_PORT = 397, + VAR_HTTP_ENDPOINT = 398, + VAR_HTTP_MAX_STREAMS = 399, + VAR_HTTP_QUERY_BUFFER_SIZE = 400, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, + VAR_HTTP_NODELAY = 402, + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UDP_CONNECT = 409, + VAR_UNBLOCK_LAN_ZONES = 410, + VAR_INSECURE_LAN_ZONES = 411, + VAR_INFRA_CACHE_MIN_RTT = 412, + VAR_INFRA_KEEP_PROBING = 413, + VAR_DNS64_PREFIX = 414, + VAR_DNS64_SYNTHALL = 415, + VAR_DNS64_IGNORE_AAAA = 416, + VAR_DNSTAP = 417, + VAR_DNSTAP_ENABLE = 418, + VAR_DNSTAP_SOCKET_PATH = 419, + VAR_DNSTAP_IP = 420, + VAR_DNSTAP_TLS = 421, + VAR_DNSTAP_TLS_SERVER_NAME = 422, + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, + VAR_DNSTAP_SEND_IDENTITY = 426, + VAR_DNSTAP_SEND_VERSION = 427, + VAR_DNSTAP_BIDIRECTIONAL = 428, + VAR_DNSTAP_IDENTITY = 429, + VAR_DNSTAP_VERSION = 430, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, + VAR_RESPONSE_IP_TAG = 437, + VAR_RESPONSE_IP = 438, + VAR_RESPONSE_IP_DATA = 439, + VAR_HARDEN_ALGO_DOWNGRADE = 440, + VAR_IP_TRANSPARENT = 441, + VAR_IP_DSCP = 442, + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, + VAR_IP_RATELIMIT = 444, + VAR_IP_RATELIMIT_SLABS = 445, + VAR_IP_RATELIMIT_SIZE = 446, + VAR_RATELIMIT = 447, + VAR_RATELIMIT_SLABS = 448, + VAR_RATELIMIT_SIZE = 449, + VAR_RATELIMIT_FOR_DOMAIN = 450, + VAR_RATELIMIT_BELOW_DOMAIN = 451, + VAR_IP_RATELIMIT_FACTOR = 452, + VAR_RATELIMIT_FACTOR = 453, + VAR_SEND_CLIENT_SUBNET = 454, + VAR_CLIENT_SUBNET_ZONE = 455, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, + VAR_CLIENT_SUBNET_OPCODE = 457, + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, + VAR_CAPS_WHITELIST = 464, + VAR_CACHE_MAX_NEGATIVE_TTL = 465, + VAR_PERMIT_SMALL_HOLDDOWN = 466, + VAR_QNAME_MINIMISATION = 467, + VAR_QNAME_MINIMISATION_STRICT = 468, + VAR_IP_FREEBIND = 469, + VAR_DEFINE_TAG = 470, + VAR_LOCAL_ZONE_TAG = 471, + VAR_ACCESS_CONTROL_TAG = 472, + VAR_LOCAL_ZONE_OVERRIDE = 473, + VAR_ACCESS_CONTROL_TAG_ACTION = 474, + VAR_ACCESS_CONTROL_TAG_DATA = 475, + VAR_VIEW = 476, + VAR_ACCESS_CONTROL_VIEW = 477, + VAR_VIEW_FIRST = 478, + VAR_SERVE_EXPIRED = 479, + VAR_SERVE_EXPIRED_TTL = 480, + VAR_SERVE_EXPIRED_TTL_RESET = 481, + VAR_SERVE_EXPIRED_REPLY_TTL = 482, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, + VAR_FAKE_DSA = 484, + VAR_FAKE_SHA1 = 485, + VAR_LOG_IDENTITY = 486, + VAR_HIDE_TRUSTANCHOR = 487, + VAR_TRUST_ANCHOR_SIGNALING = 488, + VAR_AGGRESSIVE_NSEC = 489, + VAR_USE_SYSTEMD = 490, + VAR_SHM_ENABLE = 491, + VAR_SHM_KEY = 492, + VAR_ROOT_KEY_SENTINEL = 493, + VAR_DNSCRYPT = 494, + VAR_DNSCRYPT_ENABLE = 495, + VAR_DNSCRYPT_PORT = 496, + VAR_DNSCRYPT_PROVIDER = 497, + VAR_DNSCRYPT_SECRET_KEY = 498, + VAR_DNSCRYPT_PROVIDER_CERT = 499, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, + VAR_IPSECMOD_ENABLED = 505, + VAR_IPSECMOD_HOOK = 506, + VAR_IPSECMOD_IGNORE_BOGUS = 507, + VAR_IPSECMOD_MAX_TTL = 508, + VAR_IPSECMOD_WHITELIST = 509, + VAR_IPSECMOD_STRICT = 510, + VAR_CACHEDB = 511, + VAR_CACHEDB_BACKEND = 512, + VAR_CACHEDB_SECRETSEED = 513, + VAR_CACHEDB_REDISHOST = 514, + VAR_CACHEDB_REDISPORT = 515, + VAR_CACHEDB_REDISTIMEOUT = 516, + VAR_CACHEDB_REDISEXPIRERECORDS = 517, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, + VAR_FOR_UPSTREAM = 519, + VAR_AUTH_ZONE = 520, + VAR_ZONEFILE = 521, + VAR_MASTER = 522, + VAR_URL = 523, + VAR_FOR_DOWNSTREAM = 524, + VAR_FALLBACK_ENABLED = 525, + VAR_TLS_ADDITIONAL_PORT = 526, + VAR_LOW_RTT = 527, + VAR_LOW_RTT_PERMIL = 528, + VAR_FAST_SERVER_PERMIL = 529, + VAR_FAST_SERVER_NUM = 530, + VAR_ALLOW_NOTIFY = 531, + VAR_TLS_WIN_CERT = 532, + VAR_TCP_CONNECTION_LIMIT = 533, + VAR_FORWARD_NO_CACHE = 534, + VAR_STUB_NO_CACHE = 535, + VAR_LOG_SERVFAIL = 536, + VAR_DENY_ANY = 537, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, + VAR_LOG_TAG_QUERYREPLY = 539, + VAR_STREAM_WAIT_SIZE = 540, + VAR_TLS_CIPHERS = 541, + VAR_TLS_CIPHERSUITES = 542, + VAR_TLS_USE_SNI = 543, + VAR_IPSET = 544, + VAR_IPSET_NAME_V4 = 545, + VAR_IPSET_NAME_V6 = 546, + VAR_TLS_SESSION_TICKET_KEYS = 547, + VAR_RPZ = 548, + VAR_TAGS = 549, + VAR_RPZ_ACTION_OVERRIDE = 550, + VAR_RPZ_CNAME_OVERRIDE = 551, + VAR_RPZ_LOG = 552, + VAR_RPZ_LOG_NAME = 553, + VAR_DYNLIB = 554, + VAR_DYNLIB_FILE = 555, + VAR_EDNS_CLIENT_STRING = 556, + VAR_EDNS_CLIENT_STRING_OPCODE = 557 }; - typedef enum yytokentype yytoken_kind_t; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -756,7 +746,7 @@ union YYSTYPE char* str; -#line 760 "util/configparser.c" +#line 750 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -770,644 +760,6 @@ extern YYSTYPE yylval; int yyparse (void); #endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ -/* Symbol kind. */ -enum yysymbol_kind_t -{ - YYSYMBOL_YYEMPTY = -2, - YYSYMBOL_YYEOF = 0, /* "end of file" */ - YYSYMBOL_YYerror = 1, /* error */ - YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ - YYSYMBOL_SPACE = 3, /* SPACE */ - YYSYMBOL_LETTER = 4, /* LETTER */ - YYSYMBOL_NEWLINE = 5, /* NEWLINE */ - YYSYMBOL_COMMENT = 6, /* COMMENT */ - YYSYMBOL_COLON = 7, /* COLON */ - YYSYMBOL_ANY = 8, /* ANY */ - YYSYMBOL_ZONESTR = 9, /* ZONESTR */ - YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ - YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ - YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ - YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ - YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ - YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ - YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ - YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ - YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ - YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ - YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ - YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ - YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ - YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ - YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ - YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ - YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ - YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ - YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ - YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ - YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ - YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ - YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ - YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ - YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ - YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ - YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ - YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ - YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ - YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ - YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ - YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ - YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ - YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ - YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ - YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ - YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ - YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ - YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ - YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ - YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ - YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ - YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ - YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ - YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ - YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ - YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ - YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ - YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ - YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ - YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ - YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ - YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ - YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ - YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ - YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ - YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ - YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ - YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ - YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ - YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ - YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ - YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ - YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ - YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ - YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ - YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ - YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ - YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ - YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ - YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ - YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ - YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ - YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ - YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ - YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ - YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ - YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ - YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ - YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ - YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ - YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ - YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ - YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ - YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ - YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ - YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ - YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ - YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ - YYSYMBOL_VAR_EXTENDED_STATISTICS = 105, /* VAR_EXTENDED_STATISTICS */ - YYSYMBOL_VAR_LOCAL_DATA_PTR = 106, /* VAR_LOCAL_DATA_PTR */ - YYSYMBOL_VAR_JOSTLE_TIMEOUT = 107, /* VAR_JOSTLE_TIMEOUT */ - YYSYMBOL_VAR_STUB_PRIME = 108, /* VAR_STUB_PRIME */ - YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 109, /* VAR_UNWANTED_REPLY_THRESHOLD */ - YYSYMBOL_VAR_LOG_TIME_ASCII = 110, /* VAR_LOG_TIME_ASCII */ - YYSYMBOL_VAR_DOMAIN_INSECURE = 111, /* VAR_DOMAIN_INSECURE */ - YYSYMBOL_VAR_PYTHON = 112, /* VAR_PYTHON */ - YYSYMBOL_VAR_PYTHON_SCRIPT = 113, /* VAR_PYTHON_SCRIPT */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 114, /* VAR_VAL_SIG_SKEW_MIN */ - YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 115, /* VAR_VAL_SIG_SKEW_MAX */ - YYSYMBOL_VAR_CACHE_MIN_TTL = 116, /* VAR_CACHE_MIN_TTL */ - YYSYMBOL_VAR_VAL_LOG_LEVEL = 117, /* VAR_VAL_LOG_LEVEL */ - YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 118, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - YYSYMBOL_VAR_KEEP_MISSING = 119, /* VAR_KEEP_MISSING */ - YYSYMBOL_VAR_ADD_HOLDDOWN = 120, /* VAR_ADD_HOLDDOWN */ - YYSYMBOL_VAR_DEL_HOLDDOWN = 121, /* VAR_DEL_HOLDDOWN */ - YYSYMBOL_VAR_SO_RCVBUF = 122, /* VAR_SO_RCVBUF */ - YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 123, /* VAR_EDNS_BUFFER_SIZE */ - YYSYMBOL_VAR_PREFETCH = 124, /* VAR_PREFETCH */ - YYSYMBOL_VAR_PREFETCH_KEY = 125, /* VAR_PREFETCH_KEY */ - YYSYMBOL_VAR_SO_SNDBUF = 126, /* VAR_SO_SNDBUF */ - YYSYMBOL_VAR_SO_REUSEPORT = 127, /* VAR_SO_REUSEPORT */ - YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 128, /* VAR_HARDEN_BELOW_NXDOMAIN */ - YYSYMBOL_VAR_IGNORE_CD_FLAG = 129, /* VAR_IGNORE_CD_FLAG */ - YYSYMBOL_VAR_LOG_QUERIES = 130, /* VAR_LOG_QUERIES */ - YYSYMBOL_VAR_LOG_REPLIES = 131, /* VAR_LOG_REPLIES */ - YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 132, /* VAR_LOG_LOCAL_ACTIONS */ - YYSYMBOL_VAR_TCP_UPSTREAM = 133, /* VAR_TCP_UPSTREAM */ - YYSYMBOL_VAR_SSL_UPSTREAM = 134, /* VAR_SSL_UPSTREAM */ - YYSYMBOL_VAR_SSL_SERVICE_KEY = 135, /* VAR_SSL_SERVICE_KEY */ - YYSYMBOL_VAR_SSL_SERVICE_PEM = 136, /* VAR_SSL_SERVICE_PEM */ - YYSYMBOL_VAR_SSL_PORT = 137, /* VAR_SSL_PORT */ - YYSYMBOL_VAR_FORWARD_FIRST = 138, /* VAR_FORWARD_FIRST */ - YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 139, /* VAR_STUB_SSL_UPSTREAM */ - YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 140, /* VAR_FORWARD_SSL_UPSTREAM */ - YYSYMBOL_VAR_TLS_CERT_BUNDLE = 141, /* VAR_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_HTTPS_PORT = 142, /* VAR_HTTPS_PORT */ - YYSYMBOL_VAR_HTTP_ENDPOINT = 143, /* VAR_HTTP_ENDPOINT */ - YYSYMBOL_VAR_HTTP_MAX_STREAMS = 144, /* VAR_HTTP_MAX_STREAMS */ - YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 145, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 146, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - YYSYMBOL_VAR_HTTP_NODELAY = 147, /* VAR_HTTP_NODELAY */ - YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 148, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - YYSYMBOL_VAR_STUB_FIRST = 149, /* VAR_STUB_FIRST */ - YYSYMBOL_VAR_MINIMAL_RESPONSES = 150, /* VAR_MINIMAL_RESPONSES */ - YYSYMBOL_VAR_RRSET_ROUNDROBIN = 151, /* VAR_RRSET_ROUNDROBIN */ - YYSYMBOL_VAR_MAX_UDP_SIZE = 152, /* VAR_MAX_UDP_SIZE */ - YYSYMBOL_VAR_DELAY_CLOSE = 153, /* VAR_DELAY_CLOSE */ - YYSYMBOL_VAR_UDP_CONNECT = 154, /* VAR_UDP_CONNECT */ - YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 155, /* VAR_UNBLOCK_LAN_ZONES */ - YYSYMBOL_VAR_INSECURE_LAN_ZONES = 156, /* VAR_INSECURE_LAN_ZONES */ - YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 157, /* VAR_INFRA_CACHE_MIN_RTT */ - YYSYMBOL_VAR_INFRA_KEEP_PROBING = 158, /* VAR_INFRA_KEEP_PROBING */ - YYSYMBOL_VAR_DNS64_PREFIX = 159, /* VAR_DNS64_PREFIX */ - YYSYMBOL_VAR_DNS64_SYNTHALL = 160, /* VAR_DNS64_SYNTHALL */ - YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 161, /* VAR_DNS64_IGNORE_AAAA */ - YYSYMBOL_VAR_DNSTAP = 162, /* VAR_DNSTAP */ - YYSYMBOL_VAR_DNSTAP_ENABLE = 163, /* VAR_DNSTAP_ENABLE */ - YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 164, /* VAR_DNSTAP_SOCKET_PATH */ - YYSYMBOL_VAR_DNSTAP_IP = 165, /* VAR_DNSTAP_IP */ - YYSYMBOL_VAR_DNSTAP_TLS = 166, /* VAR_DNSTAP_TLS */ - YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 167, /* VAR_DNSTAP_TLS_SERVER_NAME */ - YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 168, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 169, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 170, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 171, /* VAR_DNSTAP_SEND_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 172, /* VAR_DNSTAP_SEND_VERSION */ - YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 173, /* VAR_DNSTAP_BIDIRECTIONAL */ - YYSYMBOL_VAR_DNSTAP_IDENTITY = 174, /* VAR_DNSTAP_IDENTITY */ - YYSYMBOL_VAR_DNSTAP_VERSION = 175, /* VAR_DNSTAP_VERSION */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 176, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 177, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - YYSYMBOL_VAR_RESPONSE_IP_TAG = 182, /* VAR_RESPONSE_IP_TAG */ - YYSYMBOL_VAR_RESPONSE_IP = 183, /* VAR_RESPONSE_IP */ - YYSYMBOL_VAR_RESPONSE_IP_DATA = 184, /* VAR_RESPONSE_IP_DATA */ - YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 185, /* VAR_HARDEN_ALGO_DOWNGRADE */ - YYSYMBOL_VAR_IP_TRANSPARENT = 186, /* VAR_IP_TRANSPARENT */ - YYSYMBOL_VAR_IP_DSCP = 187, /* VAR_IP_DSCP */ - YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 188, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - YYSYMBOL_VAR_IP_RATELIMIT = 189, /* VAR_IP_RATELIMIT */ - YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 190, /* VAR_IP_RATELIMIT_SLABS */ - YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 191, /* VAR_IP_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT = 192, /* VAR_RATELIMIT */ - YYSYMBOL_VAR_RATELIMIT_SLABS = 193, /* VAR_RATELIMIT_SLABS */ - YYSYMBOL_VAR_RATELIMIT_SIZE = 194, /* VAR_RATELIMIT_SIZE */ - YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 195, /* VAR_RATELIMIT_FOR_DOMAIN */ - YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 196, /* VAR_RATELIMIT_BELOW_DOMAIN */ - YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 197, /* VAR_IP_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_RATELIMIT_FACTOR = 198, /* VAR_RATELIMIT_FACTOR */ - YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 199, /* VAR_SEND_CLIENT_SUBNET */ - YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 200, /* VAR_CLIENT_SUBNET_ZONE */ - YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 201, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 202, /* VAR_CLIENT_SUBNET_OPCODE */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 203, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 204, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 205, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 206, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 207, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 208, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - YYSYMBOL_VAR_CAPS_WHITELIST = 209, /* VAR_CAPS_WHITELIST */ - YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 210, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 211, /* VAR_PERMIT_SMALL_HOLDDOWN */ - YYSYMBOL_VAR_QNAME_MINIMISATION = 212, /* VAR_QNAME_MINIMISATION */ - YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 213, /* VAR_QNAME_MINIMISATION_STRICT */ - YYSYMBOL_VAR_IP_FREEBIND = 214, /* VAR_IP_FREEBIND */ - YYSYMBOL_VAR_DEFINE_TAG = 215, /* VAR_DEFINE_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_TAG = 216, /* VAR_LOCAL_ZONE_TAG */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 217, /* VAR_ACCESS_CONTROL_TAG */ - YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 218, /* VAR_LOCAL_ZONE_OVERRIDE */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 219, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 220, /* VAR_ACCESS_CONTROL_TAG_DATA */ - YYSYMBOL_VAR_VIEW = 221, /* VAR_VIEW */ - YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 222, /* VAR_ACCESS_CONTROL_VIEW */ - YYSYMBOL_VAR_VIEW_FIRST = 223, /* VAR_VIEW_FIRST */ - YYSYMBOL_VAR_SERVE_EXPIRED = 224, /* VAR_SERVE_EXPIRED */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 225, /* VAR_SERVE_EXPIRED_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 226, /* VAR_SERVE_EXPIRED_TTL_RESET */ - YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 227, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 228, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - YYSYMBOL_VAR_FAKE_DSA = 229, /* VAR_FAKE_DSA */ - YYSYMBOL_VAR_FAKE_SHA1 = 230, /* VAR_FAKE_SHA1 */ - YYSYMBOL_VAR_LOG_IDENTITY = 231, /* VAR_LOG_IDENTITY */ - YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 232, /* VAR_HIDE_TRUSTANCHOR */ - YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 233, /* VAR_TRUST_ANCHOR_SIGNALING */ - YYSYMBOL_VAR_AGGRESSIVE_NSEC = 234, /* VAR_AGGRESSIVE_NSEC */ - YYSYMBOL_VAR_USE_SYSTEMD = 235, /* VAR_USE_SYSTEMD */ - YYSYMBOL_VAR_SHM_ENABLE = 236, /* VAR_SHM_ENABLE */ - YYSYMBOL_VAR_SHM_KEY = 237, /* VAR_SHM_KEY */ - YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 238, /* VAR_ROOT_KEY_SENTINEL */ - YYSYMBOL_VAR_DNSCRYPT = 239, /* VAR_DNSCRYPT */ - YYSYMBOL_VAR_DNSCRYPT_ENABLE = 240, /* VAR_DNSCRYPT_ENABLE */ - YYSYMBOL_VAR_DNSCRYPT_PORT = 241, /* VAR_DNSCRYPT_PORT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 242, /* VAR_DNSCRYPT_PROVIDER */ - YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 243, /* VAR_DNSCRYPT_SECRET_KEY */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 244, /* VAR_DNSCRYPT_PROVIDER_CERT */ - YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 245, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 246, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 247, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 248, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 249, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - YYSYMBOL_VAR_IPSECMOD_ENABLED = 250, /* VAR_IPSECMOD_ENABLED */ - YYSYMBOL_VAR_IPSECMOD_HOOK = 251, /* VAR_IPSECMOD_HOOK */ - YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 252, /* VAR_IPSECMOD_IGNORE_BOGUS */ - YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 253, /* VAR_IPSECMOD_MAX_TTL */ - YYSYMBOL_VAR_IPSECMOD_WHITELIST = 254, /* VAR_IPSECMOD_WHITELIST */ - YYSYMBOL_VAR_IPSECMOD_STRICT = 255, /* VAR_IPSECMOD_STRICT */ - YYSYMBOL_VAR_CACHEDB = 256, /* VAR_CACHEDB */ - YYSYMBOL_VAR_CACHEDB_BACKEND = 257, /* VAR_CACHEDB_BACKEND */ - YYSYMBOL_VAR_CACHEDB_SECRETSEED = 258, /* VAR_CACHEDB_SECRETSEED */ - YYSYMBOL_VAR_CACHEDB_REDISHOST = 259, /* VAR_CACHEDB_REDISHOST */ - YYSYMBOL_VAR_CACHEDB_REDISPORT = 260, /* VAR_CACHEDB_REDISPORT */ - YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 261, /* VAR_CACHEDB_REDISTIMEOUT */ - YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 262, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 263, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - YYSYMBOL_VAR_FOR_UPSTREAM = 264, /* VAR_FOR_UPSTREAM */ - YYSYMBOL_VAR_AUTH_ZONE = 265, /* VAR_AUTH_ZONE */ - YYSYMBOL_VAR_ZONEFILE = 266, /* VAR_ZONEFILE */ - YYSYMBOL_VAR_MASTER = 267, /* VAR_MASTER */ - YYSYMBOL_VAR_URL = 268, /* VAR_URL */ - YYSYMBOL_VAR_FOR_DOWNSTREAM = 269, /* VAR_FOR_DOWNSTREAM */ - YYSYMBOL_VAR_FALLBACK_ENABLED = 270, /* VAR_FALLBACK_ENABLED */ - YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 271, /* VAR_TLS_ADDITIONAL_PORT */ - YYSYMBOL_VAR_LOW_RTT = 272, /* VAR_LOW_RTT */ - YYSYMBOL_VAR_LOW_RTT_PERMIL = 273, /* VAR_LOW_RTT_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_PERMIL = 274, /* VAR_FAST_SERVER_PERMIL */ - YYSYMBOL_VAR_FAST_SERVER_NUM = 275, /* VAR_FAST_SERVER_NUM */ - YYSYMBOL_VAR_ALLOW_NOTIFY = 276, /* VAR_ALLOW_NOTIFY */ - YYSYMBOL_VAR_TLS_WIN_CERT = 277, /* VAR_TLS_WIN_CERT */ - YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 278, /* VAR_TCP_CONNECTION_LIMIT */ - YYSYMBOL_VAR_FORWARD_NO_CACHE = 279, /* VAR_FORWARD_NO_CACHE */ - YYSYMBOL_VAR_STUB_NO_CACHE = 280, /* VAR_STUB_NO_CACHE */ - YYSYMBOL_VAR_LOG_SERVFAIL = 281, /* VAR_LOG_SERVFAIL */ - YYSYMBOL_VAR_DENY_ANY = 282, /* VAR_DENY_ANY */ - YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 283, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 284, /* VAR_LOG_TAG_QUERYREPLY */ - YYSYMBOL_VAR_STREAM_WAIT_SIZE = 285, /* VAR_STREAM_WAIT_SIZE */ - YYSYMBOL_VAR_TLS_CIPHERS = 286, /* VAR_TLS_CIPHERS */ - YYSYMBOL_VAR_TLS_CIPHERSUITES = 287, /* VAR_TLS_CIPHERSUITES */ - YYSYMBOL_VAR_TLS_USE_SNI = 288, /* VAR_TLS_USE_SNI */ - YYSYMBOL_VAR_IPSET = 289, /* VAR_IPSET */ - YYSYMBOL_VAR_IPSET_NAME_V4 = 290, /* VAR_IPSET_NAME_V4 */ - YYSYMBOL_VAR_IPSET_NAME_V6 = 291, /* VAR_IPSET_NAME_V6 */ - YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 292, /* VAR_TLS_SESSION_TICKET_KEYS */ - YYSYMBOL_VAR_RPZ = 293, /* VAR_RPZ */ - YYSYMBOL_VAR_TAGS = 294, /* VAR_TAGS */ - YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 295, /* VAR_RPZ_ACTION_OVERRIDE */ - YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 296, /* VAR_RPZ_CNAME_OVERRIDE */ - YYSYMBOL_VAR_RPZ_LOG = 297, /* VAR_RPZ_LOG */ - YYSYMBOL_VAR_RPZ_LOG_NAME = 298, /* VAR_RPZ_LOG_NAME */ - YYSYMBOL_VAR_DYNLIB = 299, /* VAR_DYNLIB */ - YYSYMBOL_VAR_DYNLIB_FILE = 300, /* VAR_DYNLIB_FILE */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING = 301, /* VAR_EDNS_CLIENT_STRING */ - YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 302, /* VAR_EDNS_CLIENT_STRING_OPCODE */ - YYSYMBOL_YYACCEPT = 303, /* $accept */ - YYSYMBOL_toplevelvars = 304, /* toplevelvars */ - YYSYMBOL_toplevelvar = 305, /* toplevelvar */ - YYSYMBOL_force_toplevel = 306, /* force_toplevel */ - YYSYMBOL_serverstart = 307, /* serverstart */ - YYSYMBOL_contents_server = 308, /* contents_server */ - YYSYMBOL_content_server = 309, /* content_server */ - YYSYMBOL_stubstart = 310, /* stubstart */ - YYSYMBOL_contents_stub = 311, /* contents_stub */ - YYSYMBOL_content_stub = 312, /* content_stub */ - YYSYMBOL_forwardstart = 313, /* forwardstart */ - YYSYMBOL_contents_forward = 314, /* contents_forward */ - YYSYMBOL_content_forward = 315, /* content_forward */ - YYSYMBOL_viewstart = 316, /* viewstart */ - YYSYMBOL_contents_view = 317, /* contents_view */ - YYSYMBOL_content_view = 318, /* content_view */ - YYSYMBOL_authstart = 319, /* authstart */ - YYSYMBOL_contents_auth = 320, /* contents_auth */ - YYSYMBOL_content_auth = 321, /* content_auth */ - YYSYMBOL_rpz_tag = 322, /* rpz_tag */ - YYSYMBOL_rpz_action_override = 323, /* rpz_action_override */ - YYSYMBOL_rpz_cname_override = 324, /* rpz_cname_override */ - YYSYMBOL_rpz_log = 325, /* rpz_log */ - YYSYMBOL_rpz_log_name = 326, /* rpz_log_name */ - YYSYMBOL_rpzstart = 327, /* rpzstart */ - YYSYMBOL_contents_rpz = 328, /* contents_rpz */ - YYSYMBOL_content_rpz = 329, /* content_rpz */ - YYSYMBOL_server_num_threads = 330, /* server_num_threads */ - YYSYMBOL_server_verbosity = 331, /* server_verbosity */ - YYSYMBOL_server_statistics_interval = 332, /* server_statistics_interval */ - YYSYMBOL_server_statistics_cumulative = 333, /* server_statistics_cumulative */ - YYSYMBOL_server_extended_statistics = 334, /* server_extended_statistics */ - YYSYMBOL_server_shm_enable = 335, /* server_shm_enable */ - YYSYMBOL_server_shm_key = 336, /* server_shm_key */ - YYSYMBOL_server_port = 337, /* server_port */ - YYSYMBOL_server_send_client_subnet = 338, /* server_send_client_subnet */ - YYSYMBOL_server_client_subnet_zone = 339, /* server_client_subnet_zone */ - YYSYMBOL_server_client_subnet_always_forward = 340, /* server_client_subnet_always_forward */ - YYSYMBOL_server_client_subnet_opcode = 341, /* server_client_subnet_opcode */ - YYSYMBOL_server_max_client_subnet_ipv4 = 342, /* server_max_client_subnet_ipv4 */ - YYSYMBOL_server_max_client_subnet_ipv6 = 343, /* server_max_client_subnet_ipv6 */ - YYSYMBOL_server_min_client_subnet_ipv4 = 344, /* server_min_client_subnet_ipv4 */ - YYSYMBOL_server_min_client_subnet_ipv6 = 345, /* server_min_client_subnet_ipv6 */ - YYSYMBOL_server_max_ecs_tree_size_ipv4 = 346, /* server_max_ecs_tree_size_ipv4 */ - YYSYMBOL_server_max_ecs_tree_size_ipv6 = 347, /* server_max_ecs_tree_size_ipv6 */ - YYSYMBOL_server_interface = 348, /* server_interface */ - YYSYMBOL_server_outgoing_interface = 349, /* server_outgoing_interface */ - YYSYMBOL_server_outgoing_range = 350, /* server_outgoing_range */ - YYSYMBOL_server_outgoing_port_permit = 351, /* server_outgoing_port_permit */ - YYSYMBOL_server_outgoing_port_avoid = 352, /* server_outgoing_port_avoid */ - YYSYMBOL_server_outgoing_num_tcp = 353, /* server_outgoing_num_tcp */ - YYSYMBOL_server_incoming_num_tcp = 354, /* server_incoming_num_tcp */ - YYSYMBOL_server_interface_automatic = 355, /* server_interface_automatic */ - YYSYMBOL_server_do_ip4 = 356, /* server_do_ip4 */ - YYSYMBOL_server_do_ip6 = 357, /* server_do_ip6 */ - YYSYMBOL_server_do_udp = 358, /* server_do_udp */ - YYSYMBOL_server_do_tcp = 359, /* server_do_tcp */ - YYSYMBOL_server_prefer_ip4 = 360, /* server_prefer_ip4 */ - YYSYMBOL_server_prefer_ip6 = 361, /* server_prefer_ip6 */ - YYSYMBOL_server_tcp_mss = 362, /* server_tcp_mss */ - YYSYMBOL_server_outgoing_tcp_mss = 363, /* server_outgoing_tcp_mss */ - YYSYMBOL_server_tcp_idle_timeout = 364, /* server_tcp_idle_timeout */ - YYSYMBOL_server_tcp_keepalive = 365, /* server_tcp_keepalive */ - YYSYMBOL_server_tcp_keepalive_timeout = 366, /* server_tcp_keepalive_timeout */ - YYSYMBOL_server_tcp_upstream = 367, /* server_tcp_upstream */ - YYSYMBOL_server_udp_upstream_without_downstream = 368, /* server_udp_upstream_without_downstream */ - YYSYMBOL_server_ssl_upstream = 369, /* server_ssl_upstream */ - YYSYMBOL_server_ssl_service_key = 370, /* server_ssl_service_key */ - YYSYMBOL_server_ssl_service_pem = 371, /* server_ssl_service_pem */ - YYSYMBOL_server_ssl_port = 372, /* server_ssl_port */ - YYSYMBOL_server_tls_cert_bundle = 373, /* server_tls_cert_bundle */ - YYSYMBOL_server_tls_win_cert = 374, /* server_tls_win_cert */ - YYSYMBOL_server_tls_additional_port = 375, /* server_tls_additional_port */ - YYSYMBOL_server_tls_ciphers = 376, /* server_tls_ciphers */ - YYSYMBOL_server_tls_ciphersuites = 377, /* server_tls_ciphersuites */ - YYSYMBOL_server_tls_session_ticket_keys = 378, /* server_tls_session_ticket_keys */ - YYSYMBOL_server_tls_use_sni = 379, /* server_tls_use_sni */ - YYSYMBOL_server_https_port = 380, /* server_https_port */ - YYSYMBOL_server_http_endpoint = 381, /* server_http_endpoint */ - YYSYMBOL_server_http_max_streams = 382, /* server_http_max_streams */ - YYSYMBOL_server_http_query_buffer_size = 383, /* server_http_query_buffer_size */ - YYSYMBOL_server_http_response_buffer_size = 384, /* server_http_response_buffer_size */ - YYSYMBOL_server_http_nodelay = 385, /* server_http_nodelay */ - YYSYMBOL_server_http_notls_downstream = 386, /* server_http_notls_downstream */ - YYSYMBOL_server_use_systemd = 387, /* server_use_systemd */ - YYSYMBOL_server_do_daemonize = 388, /* server_do_daemonize */ - YYSYMBOL_server_use_syslog = 389, /* server_use_syslog */ - YYSYMBOL_server_log_time_ascii = 390, /* server_log_time_ascii */ - YYSYMBOL_server_log_queries = 391, /* server_log_queries */ - YYSYMBOL_server_log_replies = 392, /* server_log_replies */ - YYSYMBOL_server_log_tag_queryreply = 393, /* server_log_tag_queryreply */ - YYSYMBOL_server_log_servfail = 394, /* server_log_servfail */ - YYSYMBOL_server_log_local_actions = 395, /* server_log_local_actions */ - YYSYMBOL_server_chroot = 396, /* server_chroot */ - YYSYMBOL_server_username = 397, /* server_username */ - YYSYMBOL_server_directory = 398, /* server_directory */ - YYSYMBOL_server_logfile = 399, /* server_logfile */ - YYSYMBOL_server_pidfile = 400, /* server_pidfile */ - YYSYMBOL_server_root_hints = 401, /* server_root_hints */ - YYSYMBOL_server_dlv_anchor_file = 402, /* server_dlv_anchor_file */ - YYSYMBOL_server_dlv_anchor = 403, /* server_dlv_anchor */ - YYSYMBOL_server_auto_trust_anchor_file = 404, /* server_auto_trust_anchor_file */ - YYSYMBOL_server_trust_anchor_file = 405, /* server_trust_anchor_file */ - YYSYMBOL_server_trusted_keys_file = 406, /* server_trusted_keys_file */ - YYSYMBOL_server_trust_anchor = 407, /* server_trust_anchor */ - YYSYMBOL_server_trust_anchor_signaling = 408, /* server_trust_anchor_signaling */ - YYSYMBOL_server_root_key_sentinel = 409, /* server_root_key_sentinel */ - YYSYMBOL_server_domain_insecure = 410, /* server_domain_insecure */ - YYSYMBOL_server_hide_identity = 411, /* server_hide_identity */ - YYSYMBOL_server_hide_version = 412, /* server_hide_version */ - YYSYMBOL_server_hide_trustanchor = 413, /* server_hide_trustanchor */ - YYSYMBOL_server_identity = 414, /* server_identity */ - YYSYMBOL_server_version = 415, /* server_version */ - YYSYMBOL_server_so_rcvbuf = 416, /* server_so_rcvbuf */ - YYSYMBOL_server_so_sndbuf = 417, /* server_so_sndbuf */ - YYSYMBOL_server_so_reuseport = 418, /* server_so_reuseport */ - YYSYMBOL_server_ip_transparent = 419, /* server_ip_transparent */ - YYSYMBOL_server_ip_freebind = 420, /* server_ip_freebind */ - YYSYMBOL_server_ip_dscp = 421, /* server_ip_dscp */ - YYSYMBOL_server_stream_wait_size = 422, /* server_stream_wait_size */ - YYSYMBOL_server_edns_buffer_size = 423, /* server_edns_buffer_size */ - YYSYMBOL_server_msg_buffer_size = 424, /* server_msg_buffer_size */ - YYSYMBOL_server_msg_cache_size = 425, /* server_msg_cache_size */ - YYSYMBOL_server_msg_cache_slabs = 426, /* server_msg_cache_slabs */ - YYSYMBOL_server_num_queries_per_thread = 427, /* server_num_queries_per_thread */ - YYSYMBOL_server_jostle_timeout = 428, /* server_jostle_timeout */ - YYSYMBOL_server_delay_close = 429, /* server_delay_close */ - YYSYMBOL_server_udp_connect = 430, /* server_udp_connect */ - YYSYMBOL_server_unblock_lan_zones = 431, /* server_unblock_lan_zones */ - YYSYMBOL_server_insecure_lan_zones = 432, /* server_insecure_lan_zones */ - YYSYMBOL_server_rrset_cache_size = 433, /* server_rrset_cache_size */ - YYSYMBOL_server_rrset_cache_slabs = 434, /* server_rrset_cache_slabs */ - YYSYMBOL_server_infra_host_ttl = 435, /* server_infra_host_ttl */ - YYSYMBOL_server_infra_lame_ttl = 436, /* server_infra_lame_ttl */ - YYSYMBOL_server_infra_cache_numhosts = 437, /* server_infra_cache_numhosts */ - YYSYMBOL_server_infra_cache_lame_size = 438, /* server_infra_cache_lame_size */ - YYSYMBOL_server_infra_cache_slabs = 439, /* server_infra_cache_slabs */ - YYSYMBOL_server_infra_cache_min_rtt = 440, /* server_infra_cache_min_rtt */ - YYSYMBOL_server_infra_keep_probing = 441, /* server_infra_keep_probing */ - YYSYMBOL_server_target_fetch_policy = 442, /* server_target_fetch_policy */ - YYSYMBOL_server_harden_short_bufsize = 443, /* server_harden_short_bufsize */ - YYSYMBOL_server_harden_large_queries = 444, /* server_harden_large_queries */ - YYSYMBOL_server_harden_glue = 445, /* server_harden_glue */ - YYSYMBOL_server_harden_dnssec_stripped = 446, /* server_harden_dnssec_stripped */ - YYSYMBOL_server_harden_below_nxdomain = 447, /* server_harden_below_nxdomain */ - YYSYMBOL_server_harden_referral_path = 448, /* server_harden_referral_path */ - YYSYMBOL_server_harden_algo_downgrade = 449, /* server_harden_algo_downgrade */ - YYSYMBOL_server_use_caps_for_id = 450, /* server_use_caps_for_id */ - YYSYMBOL_server_caps_whitelist = 451, /* server_caps_whitelist */ - YYSYMBOL_server_private_address = 452, /* server_private_address */ - YYSYMBOL_server_private_domain = 453, /* server_private_domain */ - YYSYMBOL_server_prefetch = 454, /* server_prefetch */ - YYSYMBOL_server_prefetch_key = 455, /* server_prefetch_key */ - YYSYMBOL_server_deny_any = 456, /* server_deny_any */ - YYSYMBOL_server_unwanted_reply_threshold = 457, /* server_unwanted_reply_threshold */ - YYSYMBOL_server_do_not_query_address = 458, /* server_do_not_query_address */ - YYSYMBOL_server_do_not_query_localhost = 459, /* server_do_not_query_localhost */ - YYSYMBOL_server_access_control = 460, /* server_access_control */ - YYSYMBOL_server_module_conf = 461, /* server_module_conf */ - YYSYMBOL_server_val_override_date = 462, /* server_val_override_date */ - YYSYMBOL_server_val_sig_skew_min = 463, /* server_val_sig_skew_min */ - YYSYMBOL_server_val_sig_skew_max = 464, /* server_val_sig_skew_max */ - YYSYMBOL_server_cache_max_ttl = 465, /* server_cache_max_ttl */ - YYSYMBOL_server_cache_max_negative_ttl = 466, /* server_cache_max_negative_ttl */ - YYSYMBOL_server_cache_min_ttl = 467, /* server_cache_min_ttl */ - YYSYMBOL_server_bogus_ttl = 468, /* server_bogus_ttl */ - YYSYMBOL_server_val_clean_additional = 469, /* server_val_clean_additional */ - YYSYMBOL_server_val_permissive_mode = 470, /* server_val_permissive_mode */ - YYSYMBOL_server_aggressive_nsec = 471, /* server_aggressive_nsec */ - YYSYMBOL_server_ignore_cd_flag = 472, /* server_ignore_cd_flag */ - YYSYMBOL_server_serve_expired = 473, /* server_serve_expired */ - YYSYMBOL_server_serve_expired_ttl = 474, /* server_serve_expired_ttl */ - YYSYMBOL_server_serve_expired_ttl_reset = 475, /* server_serve_expired_ttl_reset */ - YYSYMBOL_server_serve_expired_reply_ttl = 476, /* server_serve_expired_reply_ttl */ - YYSYMBOL_server_serve_expired_client_timeout = 477, /* server_serve_expired_client_timeout */ - YYSYMBOL_server_fake_dsa = 478, /* server_fake_dsa */ - YYSYMBOL_server_fake_sha1 = 479, /* server_fake_sha1 */ - YYSYMBOL_server_val_log_level = 480, /* server_val_log_level */ - YYSYMBOL_server_val_nsec3_keysize_iterations = 481, /* server_val_nsec3_keysize_iterations */ - YYSYMBOL_server_add_holddown = 482, /* server_add_holddown */ - YYSYMBOL_server_del_holddown = 483, /* server_del_holddown */ - YYSYMBOL_server_keep_missing = 484, /* server_keep_missing */ - YYSYMBOL_server_permit_small_holddown = 485, /* server_permit_small_holddown */ - YYSYMBOL_server_key_cache_size = 486, /* server_key_cache_size */ - YYSYMBOL_server_key_cache_slabs = 487, /* server_key_cache_slabs */ - YYSYMBOL_server_neg_cache_size = 488, /* server_neg_cache_size */ - YYSYMBOL_server_local_zone = 489, /* server_local_zone */ - YYSYMBOL_server_local_data = 490, /* server_local_data */ - YYSYMBOL_server_local_data_ptr = 491, /* server_local_data_ptr */ - YYSYMBOL_server_minimal_responses = 492, /* server_minimal_responses */ - YYSYMBOL_server_rrset_roundrobin = 493, /* server_rrset_roundrobin */ - YYSYMBOL_server_unknown_server_time_limit = 494, /* server_unknown_server_time_limit */ - YYSYMBOL_server_max_udp_size = 495, /* server_max_udp_size */ - YYSYMBOL_server_dns64_prefix = 496, /* server_dns64_prefix */ - YYSYMBOL_server_dns64_synthall = 497, /* server_dns64_synthall */ - YYSYMBOL_server_dns64_ignore_aaaa = 498, /* server_dns64_ignore_aaaa */ - YYSYMBOL_server_define_tag = 499, /* server_define_tag */ - YYSYMBOL_server_local_zone_tag = 500, /* server_local_zone_tag */ - YYSYMBOL_server_access_control_tag = 501, /* server_access_control_tag */ - YYSYMBOL_server_access_control_tag_action = 502, /* server_access_control_tag_action */ - YYSYMBOL_server_access_control_tag_data = 503, /* server_access_control_tag_data */ - YYSYMBOL_server_local_zone_override = 504, /* server_local_zone_override */ - YYSYMBOL_server_access_control_view = 505, /* server_access_control_view */ - YYSYMBOL_server_response_ip_tag = 506, /* server_response_ip_tag */ - YYSYMBOL_server_ip_ratelimit = 507, /* server_ip_ratelimit */ - YYSYMBOL_server_ratelimit = 508, /* server_ratelimit */ - YYSYMBOL_server_ip_ratelimit_size = 509, /* server_ip_ratelimit_size */ - YYSYMBOL_server_ratelimit_size = 510, /* server_ratelimit_size */ - YYSYMBOL_server_ip_ratelimit_slabs = 511, /* server_ip_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_slabs = 512, /* server_ratelimit_slabs */ - YYSYMBOL_server_ratelimit_for_domain = 513, /* server_ratelimit_for_domain */ - YYSYMBOL_server_ratelimit_below_domain = 514, /* server_ratelimit_below_domain */ - YYSYMBOL_server_ip_ratelimit_factor = 515, /* server_ip_ratelimit_factor */ - YYSYMBOL_server_ratelimit_factor = 516, /* server_ratelimit_factor */ - YYSYMBOL_server_low_rtt = 517, /* server_low_rtt */ - YYSYMBOL_server_fast_server_num = 518, /* server_fast_server_num */ - YYSYMBOL_server_fast_server_permil = 519, /* server_fast_server_permil */ - YYSYMBOL_server_qname_minimisation = 520, /* server_qname_minimisation */ - YYSYMBOL_server_qname_minimisation_strict = 521, /* server_qname_minimisation_strict */ - YYSYMBOL_server_ipsecmod_enabled = 522, /* server_ipsecmod_enabled */ - YYSYMBOL_server_ipsecmod_ignore_bogus = 523, /* server_ipsecmod_ignore_bogus */ - YYSYMBOL_server_ipsecmod_hook = 524, /* server_ipsecmod_hook */ - YYSYMBOL_server_ipsecmod_max_ttl = 525, /* server_ipsecmod_max_ttl */ - YYSYMBOL_server_ipsecmod_whitelist = 526, /* server_ipsecmod_whitelist */ - YYSYMBOL_server_ipsecmod_strict = 527, /* server_ipsecmod_strict */ - YYSYMBOL_server_edns_client_string = 528, /* server_edns_client_string */ - YYSYMBOL_server_edns_client_string_opcode = 529, /* server_edns_client_string_opcode */ - YYSYMBOL_stub_name = 530, /* stub_name */ - YYSYMBOL_stub_host = 531, /* stub_host */ - YYSYMBOL_stub_addr = 532, /* stub_addr */ - YYSYMBOL_stub_first = 533, /* stub_first */ - YYSYMBOL_stub_no_cache = 534, /* stub_no_cache */ - YYSYMBOL_stub_ssl_upstream = 535, /* stub_ssl_upstream */ - YYSYMBOL_stub_prime = 536, /* stub_prime */ - YYSYMBOL_forward_name = 537, /* forward_name */ - YYSYMBOL_forward_host = 538, /* forward_host */ - YYSYMBOL_forward_addr = 539, /* forward_addr */ - YYSYMBOL_forward_first = 540, /* forward_first */ - YYSYMBOL_forward_no_cache = 541, /* forward_no_cache */ - YYSYMBOL_forward_ssl_upstream = 542, /* forward_ssl_upstream */ - YYSYMBOL_auth_name = 543, /* auth_name */ - YYSYMBOL_auth_zonefile = 544, /* auth_zonefile */ - YYSYMBOL_auth_master = 545, /* auth_master */ - YYSYMBOL_auth_url = 546, /* auth_url */ - YYSYMBOL_auth_allow_notify = 547, /* auth_allow_notify */ - YYSYMBOL_auth_for_downstream = 548, /* auth_for_downstream */ - YYSYMBOL_auth_for_upstream = 549, /* auth_for_upstream */ - YYSYMBOL_auth_fallback_enabled = 550, /* auth_fallback_enabled */ - YYSYMBOL_view_name = 551, /* view_name */ - YYSYMBOL_view_local_zone = 552, /* view_local_zone */ - YYSYMBOL_view_response_ip = 553, /* view_response_ip */ - YYSYMBOL_view_response_ip_data = 554, /* view_response_ip_data */ - YYSYMBOL_view_local_data = 555, /* view_local_data */ - YYSYMBOL_view_local_data_ptr = 556, /* view_local_data_ptr */ - YYSYMBOL_view_first = 557, /* view_first */ - YYSYMBOL_rcstart = 558, /* rcstart */ - YYSYMBOL_contents_rc = 559, /* contents_rc */ - YYSYMBOL_content_rc = 560, /* content_rc */ - YYSYMBOL_rc_control_enable = 561, /* rc_control_enable */ - YYSYMBOL_rc_control_port = 562, /* rc_control_port */ - YYSYMBOL_rc_control_interface = 563, /* rc_control_interface */ - YYSYMBOL_rc_control_use_cert = 564, /* rc_control_use_cert */ - YYSYMBOL_rc_server_key_file = 565, /* rc_server_key_file */ - YYSYMBOL_rc_server_cert_file = 566, /* rc_server_cert_file */ - YYSYMBOL_rc_control_key_file = 567, /* rc_control_key_file */ - YYSYMBOL_rc_control_cert_file = 568, /* rc_control_cert_file */ - YYSYMBOL_dtstart = 569, /* dtstart */ - YYSYMBOL_contents_dt = 570, /* contents_dt */ - YYSYMBOL_content_dt = 571, /* content_dt */ - YYSYMBOL_dt_dnstap_enable = 572, /* dt_dnstap_enable */ - YYSYMBOL_dt_dnstap_bidirectional = 573, /* dt_dnstap_bidirectional */ - YYSYMBOL_dt_dnstap_socket_path = 574, /* dt_dnstap_socket_path */ - YYSYMBOL_dt_dnstap_ip = 575, /* dt_dnstap_ip */ - YYSYMBOL_dt_dnstap_tls = 576, /* dt_dnstap_tls */ - YYSYMBOL_dt_dnstap_tls_server_name = 577, /* dt_dnstap_tls_server_name */ - YYSYMBOL_dt_dnstap_tls_cert_bundle = 578, /* dt_dnstap_tls_cert_bundle */ - YYSYMBOL_dt_dnstap_tls_client_key_file = 579, /* dt_dnstap_tls_client_key_file */ - YYSYMBOL_dt_dnstap_tls_client_cert_file = 580, /* dt_dnstap_tls_client_cert_file */ - YYSYMBOL_dt_dnstap_send_identity = 581, /* dt_dnstap_send_identity */ - YYSYMBOL_dt_dnstap_send_version = 582, /* dt_dnstap_send_version */ - YYSYMBOL_dt_dnstap_identity = 583, /* dt_dnstap_identity */ - YYSYMBOL_dt_dnstap_version = 584, /* dt_dnstap_version */ - YYSYMBOL_dt_dnstap_log_resolver_query_messages = 585, /* dt_dnstap_log_resolver_query_messages */ - YYSYMBOL_dt_dnstap_log_resolver_response_messages = 586, /* dt_dnstap_log_resolver_response_messages */ - YYSYMBOL_dt_dnstap_log_client_query_messages = 587, /* dt_dnstap_log_client_query_messages */ - YYSYMBOL_dt_dnstap_log_client_response_messages = 588, /* dt_dnstap_log_client_response_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 589, /* dt_dnstap_log_forwarder_query_messages */ - YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 590, /* dt_dnstap_log_forwarder_response_messages */ - YYSYMBOL_pythonstart = 591, /* pythonstart */ - YYSYMBOL_contents_py = 592, /* contents_py */ - YYSYMBOL_content_py = 593, /* content_py */ - YYSYMBOL_py_script = 594, /* py_script */ - YYSYMBOL_dynlibstart = 595, /* dynlibstart */ - YYSYMBOL_contents_dl = 596, /* contents_dl */ - YYSYMBOL_content_dl = 597, /* content_dl */ - YYSYMBOL_dl_file = 598, /* dl_file */ - YYSYMBOL_server_disable_dnssec_lame_check = 599, /* server_disable_dnssec_lame_check */ - YYSYMBOL_server_log_identity = 600, /* server_log_identity */ - YYSYMBOL_server_response_ip = 601, /* server_response_ip */ - YYSYMBOL_server_response_ip_data = 602, /* server_response_ip_data */ - YYSYMBOL_dnscstart = 603, /* dnscstart */ - YYSYMBOL_contents_dnsc = 604, /* contents_dnsc */ - YYSYMBOL_content_dnsc = 605, /* content_dnsc */ - YYSYMBOL_dnsc_dnscrypt_enable = 606, /* dnsc_dnscrypt_enable */ - YYSYMBOL_dnsc_dnscrypt_port = 607, /* dnsc_dnscrypt_port */ - YYSYMBOL_dnsc_dnscrypt_provider = 608, /* dnsc_dnscrypt_provider */ - YYSYMBOL_dnsc_dnscrypt_provider_cert = 609, /* dnsc_dnscrypt_provider_cert */ - YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 610, /* dnsc_dnscrypt_provider_cert_rotated */ - YYSYMBOL_dnsc_dnscrypt_secret_key = 611, /* dnsc_dnscrypt_secret_key */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 612, /* dnsc_dnscrypt_shared_secret_cache_size */ - YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 613, /* dnsc_dnscrypt_shared_secret_cache_slabs */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 614, /* dnsc_dnscrypt_nonce_cache_size */ - YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 615, /* dnsc_dnscrypt_nonce_cache_slabs */ - YYSYMBOL_cachedbstart = 616, /* cachedbstart */ - YYSYMBOL_contents_cachedb = 617, /* contents_cachedb */ - YYSYMBOL_content_cachedb = 618, /* content_cachedb */ - YYSYMBOL_cachedb_backend_name = 619, /* cachedb_backend_name */ - YYSYMBOL_cachedb_secret_seed = 620, /* cachedb_secret_seed */ - YYSYMBOL_redis_server_host = 621, /* redis_server_host */ - YYSYMBOL_redis_server_port = 622, /* redis_server_port */ - YYSYMBOL_redis_timeout = 623, /* redis_timeout */ - YYSYMBOL_redis_expire_records = 624, /* redis_expire_records */ - YYSYMBOL_server_tcp_connection_limit = 625, /* server_tcp_connection_limit */ - YYSYMBOL_ipsetstart = 626, /* ipsetstart */ - YYSYMBOL_contents_ipset = 627, /* contents_ipset */ - YYSYMBOL_content_ipset = 628, /* content_ipset */ - YYSYMBOL_ipset_name_v4 = 629, /* ipset_name_v4 */ - YYSYMBOL_ipset_name_v6 = 630 /* ipset_name_v6 */ -}; -typedef enum yysymbol_kind_t yysymbol_kind_t; - @@ -1415,83 +767,36 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -1499,20 +804,7 @@ typedef int yytype_uint16; # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -1526,21 +818,22 @@ typedef int yy_state_fast_t; # endif #endif - -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ @@ -1552,11 +845,11 @@ typedef int yy_state_fast_t; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -1569,22 +862,10 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - #define YY_ASSERT(E) ((void) (0 && (E))) -#if !defined yyoverflow +#if ! defined yyoverflow || YYERROR_VERBOSE /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -1649,7 +930,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* !defined yyoverflow */ +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -1658,17 +940,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -1681,11 +963,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -1697,12 +979,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -1725,19 +1007,17 @@ union yyalloc /* YYNSTATES -- Number of states. */ #define YYNSTATES 939 +#define YYUNDEFTOK 2 #define YYMAXUTOK 557 - /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK \ - ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ - : YYSYMBOL_YYUNDEF) +#define YYTRANSLATE(YYX) \ + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_int16 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1799,7 +1079,7 @@ static const yytype_int16 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint16 yyrline[] = { 0, 185, 185, 185, 186, 186, 187, 187, 188, 188, 188, 189, 189, 190, 190, 191, 191, 192, 194, 200, @@ -1849,42 +1129,35 @@ static const yytype_int16 yyrline[] = 2113, 2120, 2127, 2136, 2144, 2158, 2179, 2200, 2212, 2224, 2236, 2245, 2266, 2276, 2285, 2293, 2301, 2314, 2327, 2342, 2357, 2366, 2375, 2381, 2390, 2399, 2409, 2419, 2432, 2445, - 2457, 2471, 2483, 2497, 2506, 2517, 2527, 2534, 2541, 2550, - 2559, 2569, 2579, 2589, 2596, 2603, 2612, 2621, 2631, 2641, - 2648, 2655, 2662, 2670, 2680, 2690, 2700, 2710, 2749, 2759, - 2767, 2775, 2790, 2799, 2804, 2805, 2806, 2806, 2806, 2807, - 2807, 2807, 2808, 2808, 2810, 2820, 2829, 2836, 2843, 2850, - 2857, 2864, 2871, 2876, 2877, 2878, 2878, 2878, 2879, 2879, - 2879, 2880, 2881, 2881, 2882, 2882, 2883, 2883, 2884, 2885, - 2886, 2887, 2888, 2889, 2891, 2900, 2910, 2917, 2924, 2933, - 2940, 2947, 2954, 2961, 2970, 2979, 2986, 2993, 3003, 3013, - 3023, 3033, 3043, 3053, 3058, 3059, 3060, 3062, 3068, 3073, - 3074, 3075, 3077, 3083, 3093, 3100, 3109, 3117, 3122, 3123, - 3125, 3125, 3125, 3126, 3126, 3127, 3128, 3129, 3130, 3131, - 3133, 3143, 3152, 3159, 3168, 3175, 3184, 3192, 3205, 3213, - 3226, 3231, 3232, 3233, 3233, 3234, 3234, 3234, 3235, 3237, - 3249, 3261, 3273, 3288, 3301, 3314, 3325, 3330, 3331, 3332, - 3332, 3334, 3349 + 2457, 2471, 2483, 2497, 2506, 2518, 2528, 2535, 2542, 2551, + 2560, 2570, 2580, 2590, 2597, 2604, 2613, 2622, 2632, 2642, + 2649, 2656, 2663, 2671, 2681, 2691, 2701, 2711, 2750, 2760, + 2768, 2776, 2791, 2800, 2805, 2806, 2807, 2807, 2807, 2808, + 2808, 2808, 2809, 2809, 2811, 2821, 2830, 2837, 2844, 2851, + 2858, 2865, 2872, 2877, 2878, 2879, 2879, 2879, 2880, 2880, + 2880, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, 2886, + 2887, 2888, 2889, 2890, 2892, 2901, 2911, 2918, 2925, 2934, + 2941, 2948, 2955, 2962, 2971, 2980, 2987, 2994, 3004, 3014, + 3024, 3034, 3044, 3054, 3059, 3060, 3061, 3063, 3069, 3074, + 3075, 3076, 3078, 3084, 3094, 3101, 3110, 3118, 3123, 3124, + 3126, 3126, 3126, 3127, 3127, 3128, 3129, 3130, 3131, 3132, + 3134, 3144, 3153, 3160, 3169, 3176, 3185, 3193, 3206, 3214, + 3227, 3232, 3233, 3234, 3234, 3235, 3235, 3235, 3236, 3238, + 3250, 3262, 3274, 3289, 3302, 3315, 3326, 3331, 3332, 3333, + 3333, 3335, 3350 }; #endif -/** Accessing symbol of state STATE. */ -#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) - -#if YYDEBUG || 0 -/* The user-facing name of the symbol whose (internal) number is - YYSYMBOL. No bounds checking. */ -static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; - +#if YYDEBUG || YYERROR_VERBOSE || 0 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", - "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", - "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", - "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", - "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", + "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", + "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", + "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", + "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", @@ -2125,18 +1398,12 @@ static const char *const yytname[] = "server_tcp_connection_limit", "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR }; - -static const char * -yysymbol_name (yysymbol_kind_t yysymbol) -{ - return yytname[yysymbol]; -} #endif -#ifdef YYPRINT +# 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[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -2170,16 +1437,16 @@ static const yytype_int16 yytoknum[] = 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557 }; -#endif +# endif -#define YYPACT_NINF (-291) +#define YYPACT_NINF -291 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-291))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -2285,7 +1552,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int16 yydefact[] = +static const yytype_uint16 yydefact[] = { 2, 0, 1, 18, 19, 227, 237, 513, 573, 532, 246, 587, 610, 256, 626, 272, 578, 3, 17, 21, @@ -2462,7 +1729,7 @@ static const yytype_int16 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_uint16 yytable[] = { 2, 499, 484, 456, 588, 457, 458, 471, 628, 629, 591, 3, 4, 633, 634, 472, 473, 615, 616, 617, @@ -2602,7 +1869,7 @@ static const yytype_int16 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +static const yytype_uint16 yystos[] = { 0, 304, 0, 11, 12, 46, 52, 96, 112, 162, 221, 239, 256, 265, 289, 293, 299, 305, 306, 307, @@ -2701,7 +1968,7 @@ static const yytype_int16 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = +static const yytype_uint16 yyr1[] = { 0, 303, 304, 304, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 306, 307, @@ -2770,7 +2037,7 @@ static const yytype_int16 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2839,10 +2106,10 @@ static const yytype_int8 yyr2[] = }; -enum { YYENOMEM = -2 }; - #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -2868,9 +2135,10 @@ enum { YYENOMEM = -2 }; } \ while (0) -/* Backward compatibility with an undocumented macro. - Use YYerror or YYUNDEF. */ -#define YYERRCODE YYUNDEF +/* Error token number */ +#define YYTERROR 1 +#define YYERRCODE 256 + /* Enable debugging if requested. */ @@ -2888,18 +2156,18 @@ do { \ } while (0) /* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif +#ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +#endif -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Kind, Value); \ + Type, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -2910,20 +2178,17 @@ do { \ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); + if (yytype < YYNTOKENS) + YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); - YY_IGNORE_MAYBE_UNINITIALIZED_END + YYUSE (yytype); } @@ -2932,13 +2197,12 @@ yy_symbol_value_print (FILE *yyo, `---------------------------*/ static void -yy_symbol_print (FILE *yyo, - yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyo, "%s %s (", - yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); - yy_symbol_value_print (yyo, yykind, yyvaluep); + yy_symbol_value_print (yyo, yytype, yyvaluep); YYFPRINTF (yyo, ")"); } @@ -2948,7 +2212,7 @@ yy_symbol_print (FILE *yyo, `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2971,21 +2235,21 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, - int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), - &yyvsp[(yyi + 1) - (yynrhs)]); + yystos[yyssp[yyi + 1 - yynrhs]], + &yyvsp[(yyi + 1) - (yynrhs)] + ); YYFPRINTF (stderr, "\n"); } } @@ -3000,8 +2264,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) ((void) 0) -# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -3024,29 +2288,253 @@ int yydebug; #endif +#if YYERROR_VERBOSE +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +static YYSIZE_T +yystrlen (const char *yystr) +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +static char * +yystpcpy (char *yydest, const char *yysrc) +{ + char *yyd = yydest; + const char *yys = yysrc; + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + else + goto append; + + append: + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); +} +# endif + +/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message + about the unexpected token YYTOKEN for the state stack whose top is + YYSSP. + + Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is + not large enough to hold the message. In that case, also set + *YYMSG_ALLOC to the required number of bytes. Return 2 if the + required number of bytes is too large to store. */ +static int +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) +{ + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + /* Internationalized format string. */ + const char *yyformat = YY_NULLPTR; + /* Arguments of yyformat. */ + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ + int yycount = 0; + + /* There are many possibilities here to consider: + - If this state is a consistent state with a default action, then + the only way this function was invoked is if the default action + is an error action. In that case, don't check for expected + tokens because there are none. + - The only way there can be no lookahead present (in yychar) is if + this state is a consistent state with a default action. Thus, + detecting the absence of a lookahead is sufficient to determine + that there is no unexpected or expected token to report. In that + case, just report a simple "syntax error". + - Don't assume there isn't a lookahead just because this state is a + consistent state with a default action. There might have been a + previous inconsistent state, consistent state with a non-default + action, or user semantic action that manipulated yychar. + - Of course, the expected token list depends on states to have + correct lookahead information, and it depends on the parser not + to perform extra reductions after fetching a lookahead from the + scanner and before detecting a syntax error. Thus, state merging + (from LALR or IELR) and default reductions corrupt the expected + token list. However, the list is correct for canonical LR with + one exception: it will still contain any token that will not be + accepted due to an error action in a later state. + */ + if (yytoken != YYEMPTY) + { + int yyn = yypact[*yyssp]; + yyarg[yycount++] = yytname[yytoken]; + if (!yypact_value_is_default (yyn)) + { + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. In other words, skip the first -YYN actions for + this state because they are default actions. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yyx; + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR + && !yytable_value_is_error (yytable[yyx + yyn])) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + break; + } + yyarg[yycount++] = yytname[yyx]; + { + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } + } + } + } + + switch (yycount) + { +# define YYCASE_(N, S) \ + case N: \ + yyformat = S; \ + break + default: /* Avoid compiler warnings. */ + YYCASE_(0, YY_("syntax error")); + YYCASE_(1, YY_("syntax error, unexpected %s")); + YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); + YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); + YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); + YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); +# undef YYCASE_ + } + + { + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) + yysize = yysize1; + else + return 2; + } + + if (*yymsg_alloc < yysize) + { + *yymsg_alloc = 2 * yysize; + if (! (yysize <= *yymsg_alloc + && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) + *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; + return 1; + } + + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + { + char *yyp = *yymsg; + int yyi = 0; + while ((*yyp = *yyformat) != '\0') + if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyformat += 2; + } + else + { + yyp++; + yyformat++; + } + } + return 0; +} +#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, - yysymbol_kind_t yykind, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YYUSE (yytype); YY_IGNORE_MAYBE_UNINITIALIZED_END } + + /* The lookahead symbol. */ int yychar; @@ -3056,8 +2544,6 @@ YYSTYPE yylval; int yynerrs; - - /*----------. | yyparse. | `----------*/ @@ -3065,7 +2551,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -3076,29 +2562,32 @@ yyparse (void) Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* Their size. */ - YYPTRDIFF_T yystacksize; - /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; + YYSIZE_T yystacksize; + int yyn; - /* The return value of yyparse. */ int yyresult; /* Lookahead token as an internal (translated) token number. */ - yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; + int yytoken = 0; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; - +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -3106,17 +2595,15 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yynerrs = 0; - yystate = 0; - yyerrstatus = 0; - - yystacksize = YYINITDEPTH; yyssp = yyss = yyssa; yyvsp = yyvs = yyvsa; - + yystacksize = YYINITDEPTH; YYDPRINTF ((stderr, "Starting parse\n")); + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; @@ -3131,15 +2618,12 @@ yynewstate: /*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | +| yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END - YY_STACK_PRINT (yyss, yyssp); + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -3147,23 +2631,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -3177,15 +2661,14 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -3194,10 +2677,8 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -3224,29 +2705,18 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token\n")); + YYDPRINTF ((stderr, "Reading a token: ")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = YYEOF; - yytoken = YYSYMBOL_YYEOF; + yychar = yytoken = YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } - else if (yychar == YYerror) - { - /* The scanner already issued an error message, process directly - to error recovery. But do not keep the error token as - lookahead, it is too special and may lead us to an endless - loop in error recovery. */ - yychar = YYUNDEF; - yytoken = YYSYMBOL_YYerror; - goto yyerrlab1; - } else { yytoken = YYTRANSLATE (yychar); @@ -3274,13 +2744,14 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -3317,23 +2788,23 @@ yyreduce: { case 18: #line 195 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 3324 "util/configparser.c" +#line 2795 "util/configparser.c" break; case 19: #line 201 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 3332 "util/configparser.c" +#line 2803 "util/configparser.c" break; case 227: #line 299 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3343,12 +2814,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 3347 "util/configparser.c" +#line 2818 "util/configparser.c" break; case 237: #line 316 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -3358,12 +2829,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 3362 "util/configparser.c" +#line 2833 "util/configparser.c" break; case 246: #line 333 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -3375,12 +2846,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 3379 "util/configparser.c" +#line 2850 "util/configparser.c" break; case 256: #line 352 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3395,12 +2866,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 3399 "util/configparser.c" +#line 2870 "util/configparser.c" break; case 267: #line 376 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -3416,12 +2887,12 @@ yyreduce: } } -#line 3420 "util/configparser.c" +#line 2891 "util/configparser.c" break; case 268: #line 395 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -3435,44 +2906,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 3439 "util/configparser.c" +#line 2910 "util/configparser.c" break; case 269: #line 412 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 3449 "util/configparser.c" +#line 2920 "util/configparser.c" break; case 270: #line 420 "./util/configparser.y" - { + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3461 "util/configparser.c" +#line 2932 "util/configparser.c" break; case 271: #line 430 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 3471 "util/configparser.c" +#line 2942 "util/configparser.c" break; case 272: #line 438 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -3487,36 +2958,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 3491 "util/configparser.c" +#line 2962 "util/configparser.c" break; case 285: #line 461 "./util/configparser.y" - { + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3503 "util/configparser.c" +#line 2974 "util/configparser.c" break; case 286: #line 470 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3515 "util/configparser.c" +#line 2986 "util/configparser.c" break; case 287: #line 479 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -3525,48 +2996,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3529 "util/configparser.c" +#line 3000 "util/configparser.c" break; case 288: #line 490 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3541 "util/configparser.c" +#line 3012 "util/configparser.c" break; case 289: #line 499 "./util/configparser.y" - { + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3553 "util/configparser.c" +#line 3024 "util/configparser.c" break; case 290: #line 508 "./util/configparser.y" - { + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3565 "util/configparser.c" +#line 3036 "util/configparser.c" break; case 291: #line 517 "./util/configparser.y" - { + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -3575,24 +3046,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3579 "util/configparser.c" +#line 3050 "util/configparser.c" break; case 292: #line 528 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3591 "util/configparser.c" +#line 3062 "util/configparser.c" break; case 293: #line 537 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3602,12 +3073,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3606 "util/configparser.c" +#line 3077 "util/configparser.c" break; case 294: #line 549 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3618,12 +3089,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3622 "util/configparser.c" +#line 3093 "util/configparser.c" break; case 295: #line 563 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3636,12 +3107,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3640 "util/configparser.c" +#line 3111 "util/configparser.c" break; case 296: #line 578 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3650,12 +3121,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" +#line 3125 "util/configparser.c" break; case 297: #line 589 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3670,12 +3141,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3674 "util/configparser.c" +#line 3145 "util/configparser.c" break; case 298: #line 606 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3690,12 +3161,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3694 "util/configparser.c" +#line 3165 "util/configparser.c" break; case 299: #line 623 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3710,12 +3181,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3714 "util/configparser.c" +#line 3185 "util/configparser.c" break; case 300: #line 640 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3730,12 +3201,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3734 "util/configparser.c" +#line 3205 "util/configparser.c" break; case 301: #line 657 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3748,12 +3219,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3752 "util/configparser.c" +#line 3223 "util/configparser.c" break; case 302: #line 672 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3766,12 +3237,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3770 "util/configparser.c" +#line 3241 "util/configparser.c" break; case 303: #line 687 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3782,12 +3253,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3786 "util/configparser.c" +#line 3257 "util/configparser.c" break; case 304: #line 700 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3800,180 +3271,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3804 "util/configparser.c" +#line 3275 "util/configparser.c" break; case 305: #line 715 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3287 "util/configparser.c" break; case 306: #line 724 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3828 "util/configparser.c" +#line 3299 "util/configparser.c" break; case 307: #line 733 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3840 "util/configparser.c" +#line 3311 "util/configparser.c" break; case 308: #line 742 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3323 "util/configparser.c" break; case 309: #line 751 "./util/configparser.y" - { + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3335 "util/configparser.c" break; case 310: #line 760 "./util/configparser.y" - { + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3347 "util/configparser.c" break; case 311: #line 769 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3888 "util/configparser.c" +#line 3359 "util/configparser.c" break; case 312: #line 778 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3900 "util/configparser.c" +#line 3371 "util/configparser.c" break; case 313: #line 787 "./util/configparser.y" - { + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3912 "util/configparser.c" +#line 3383 "util/configparser.c" break; case 314: #line 796 "./util/configparser.y" - { + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3924 "util/configparser.c" +#line 3395 "util/configparser.c" break; case 315: #line 805 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3936 "util/configparser.c" +#line 3407 "util/configparser.c" break; case 316: #line 814 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3948 "util/configparser.c" +#line 3419 "util/configparser.c" break; case 317: #line 823 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3960 "util/configparser.c" +#line 3431 "util/configparser.c" break; case 318: #line 832 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3972 "util/configparser.c" +#line 3443 "util/configparser.c" break; case 319: #line 841 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3984,24 +3455,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3988 "util/configparser.c" +#line 3459 "util/configparser.c" break; case 320: #line 854 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4000 "util/configparser.c" +#line 3471 "util/configparser.c" break; case 321: #line 863 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -4012,168 +3483,168 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4016 "util/configparser.c" +#line 3487 "util/configparser.c" break; case 322: #line 876 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 3499 "util/configparser.c" break; case 323: #line 885 "./util/configparser.y" - { + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4040 "util/configparser.c" +#line 3511 "util/configparser.c" break; case 324: #line 894 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4052 "util/configparser.c" +#line 3523 "util/configparser.c" break; case 325: #line 903 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 4062 "util/configparser.c" +#line 3533 "util/configparser.c" break; case 326: #line 910 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 4072 "util/configparser.c" +#line 3543 "util/configparser.c" break; case 327: #line 917 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4084 "util/configparser.c" +#line 3555 "util/configparser.c" break; case 328: #line 926 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 4094 "util/configparser.c" +#line 3565 "util/configparser.c" break; case 329: #line 933 "./util/configparser.y" - { + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4106 "util/configparser.c" +#line 3577 "util/configparser.c" break; case 330: #line 942 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4117 "util/configparser.c" +#line 3588 "util/configparser.c" break; case 331: #line 950 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 4127 "util/configparser.c" +#line 3598 "util/configparser.c" break; case 332: #line 957 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 4137 "util/configparser.c" +#line 3608 "util/configparser.c" break; case 333: #line 964 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4148 "util/configparser.c" +#line 3619 "util/configparser.c" break; case 334: #line 972 "./util/configparser.y" - { + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4160 "util/configparser.c" +#line 3631 "util/configparser.c" break; case 335: #line 981 "./util/configparser.y" - { + { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4172 "util/configparser.c" +#line 3643 "util/configparser.c" break; case 336: #line 989 "./util/configparser.y" - { + { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { @@ -4188,96 +3659,96 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 4192 "util/configparser.c" +#line 3663 "util/configparser.c" break; case 337: #line 1005 "./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) yyerror("number expected"); else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4204 "util/configparser.c" +#line 3675 "util/configparser.c" break; case 338: #line 1013 "./util/configparser.y" - { + { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4216 "util/configparser.c" +#line 3687 "util/configparser.c" break; case 339: #line 1021 "./util/configparser.y" - { + { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 3699 "util/configparser.c" break; case 340: #line 1029 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4240 "util/configparser.c" +#line 3711 "util/configparser.c" break; case 341: #line 1037 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4252 "util/configparser.c" +#line 3723 "util/configparser.c" break; case 342: #line 1045 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4264 "util/configparser.c" +#line 3735 "util/configparser.c" break; case 343: #line 1054 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4276 "util/configparser.c" +#line 3747 "util/configparser.c" break; case 344: #line 1063 "./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) yyerror("expected yes or no."); @@ -4289,104 +3760,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 3764 "util/configparser.c" break; case 345: #line 1077 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4305 "util/configparser.c" +#line 3776 "util/configparser.c" break; case 346: #line 1086 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4317 "util/configparser.c" +#line 3788 "util/configparser.c" break; case 347: #line 1095 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4329 "util/configparser.c" +#line 3800 "util/configparser.c" break; case 348: #line 1104 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4341 "util/configparser.c" +#line 3812 "util/configparser.c" break; case 349: #line 1113 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4353 "util/configparser.c" +#line 3824 "util/configparser.c" break; case 350: #line 1122 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4365 "util/configparser.c" +#line 3836 "util/configparser.c" break; case 351: #line 1131 "./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 4375 "util/configparser.c" +#line 3846 "util/configparser.c" break; case 352: #line 1138 "./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 4385 "util/configparser.c" +#line 3856 "util/configparser.c" break; case 353: #line 1145 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -4410,106 +3881,106 @@ yyreduce: } } } -#line 4414 "util/configparser.c" +#line 3885 "util/configparser.c" break; case 354: #line 1171 "./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 4425 "util/configparser.c" +#line 3896 "util/configparser.c" break; case 355: #line 1179 "./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 4435 "util/configparser.c" +#line 3906 "util/configparser.c" break; case 356: #line 1186 "./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 4445 "util/configparser.c" +#line 3916 "util/configparser.c" break; case 357: #line 1193 "./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 4455 "util/configparser.c" +#line 3926 "util/configparser.c" break; case 358: #line 1200 "./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 4465 "util/configparser.c" +#line 3936 "util/configparser.c" break; case 359: #line 1207 "./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 4476 "util/configparser.c" +#line 3947 "util/configparser.c" break; case 360: #line 1215 "./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 4487 "util/configparser.c" +#line 3958 "util/configparser.c" break; case 361: #line 1223 "./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 4498 "util/configparser.c" +#line 3969 "util/configparser.c" break; case 362: #line 1231 "./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 4508 "util/configparser.c" +#line 3979 "util/configparser.c" break; case 363: #line 1238 "./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) yyerror("expected yes or no."); @@ -4518,12 +3989,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4522 "util/configparser.c" +#line 3993 "util/configparser.c" break; case 364: #line 1249 "./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) yyerror("expected yes or no."); @@ -4532,95 +4003,95 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4536 "util/configparser.c" +#line 4007 "util/configparser.c" break; case 365: #line 1260 "./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 4546 "util/configparser.c" +#line 4017 "util/configparser.c" break; case 366: #line 1267 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4558 "util/configparser.c" +#line 4029 "util/configparser.c" break; case 367: #line 1276 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4570 "util/configparser.c" +#line 4041 "util/configparser.c" break; case 368: #line 1285 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4582 "util/configparser.c" +#line 4053 "util/configparser.c" break; case 369: #line 1294 "./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 4592 "util/configparser.c" +#line 4063 "util/configparser.c" break; case 370: #line 1301 "./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 4602 "util/configparser.c" +#line 4073 "util/configparser.c" break; case 371: #line 1308 "./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 4613 "util/configparser.c" +#line 4084 "util/configparser.c" break; case 372: #line 1316 "./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 4624 "util/configparser.c" +#line 4095 "util/configparser.c" break; case 373: @@ -4633,7 +4104,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4108 "util/configparser.c" break; case 374: @@ -4646,7 +4117,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4650 "util/configparser.c" +#line 4121 "util/configparser.c" break; case 375: @@ -4659,12 +4130,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4663 "util/configparser.c" +#line 4134 "util/configparser.c" break; case 376: #line 1354 "./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) yyerror("number expected"); @@ -4676,23 +4147,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4680 "util/configparser.c" +#line 4151 "util/configparser.c" break; case 377: #line 1368 "./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 4691 "util/configparser.c" +#line 4162 "util/configparser.c" break; case 378: #line 1376 "./util/configparser.y" - { + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4703,12 +4174,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4707 "util/configparser.c" +#line 4178 "util/configparser.c" break; case 379: #line 1389 "./util/configparser.y" - { + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4717,23 +4188,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4721 "util/configparser.c" +#line 4192 "util/configparser.c" break; case 380: #line 1400 "./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 4732 "util/configparser.c" +#line 4203 "util/configparser.c" break; case 381: #line 1408 "./util/configparser.y" - { + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4744,60 +4215,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4748 "util/configparser.c" +#line 4219 "util/configparser.c" break; case 382: #line 1421 "./util/configparser.y" - { + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4760 "util/configparser.c" +#line 4231 "util/configparser.c" break; case 383: #line 1430 "./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) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4772 "util/configparser.c" +#line 4243 "util/configparser.c" break; case 384: #line 1439 "./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) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4784 "util/configparser.c" +#line 4255 "util/configparser.c" break; case 385: #line 1448 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4267 "util/configparser.c" break; case 386: #line 1457 "./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) yyerror("expected yes or no."); @@ -4805,12 +4276,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4809 "util/configparser.c" +#line 4280 "util/configparser.c" break; case 387: #line 1467 "./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) yyerror("expected yes or no."); @@ -4818,23 +4289,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4822 "util/configparser.c" +#line 4293 "util/configparser.c" break; case 388: #line 1477 "./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 4833 "util/configparser.c" +#line 4304 "util/configparser.c" break; case 389: #line 1485 "./util/configparser.y" - { + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4845,58 +4316,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4849 "util/configparser.c" +#line 4320 "util/configparser.c" break; case 390: #line 1498 "./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) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4861 "util/configparser.c" +#line 4332 "util/configparser.c" break; case 391: #line 1507 "./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 4872 "util/configparser.c" +#line 4343 "util/configparser.c" break; case 392: #line 1515 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4884 "util/configparser.c" +#line 4355 "util/configparser.c" break; case 393: #line 1524 "./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 4895 "util/configparser.c" +#line 4366 "util/configparser.c" break; case 394: #line 1532 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4907,24 +4378,24 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4911 "util/configparser.c" +#line 4382 "util/configparser.c" break; case 395: #line 1545 "./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) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4923 "util/configparser.c" +#line 4394 "util/configparser.c" break; case 396: #line 1554 "./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) yyerror("expected yes or no."); @@ -4932,22 +4403,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4936 "util/configparser.c" +#line 4407 "util/configparser.c" break; case 397: #line 1564 "./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 4946 "util/configparser.c" +#line 4417 "util/configparser.c" break; case 398: #line 1571 "./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) yyerror("expected yes or no."); @@ -4955,12 +4426,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4959 "util/configparser.c" +#line 4430 "util/configparser.c" break; case 399: #line 1581 "./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) yyerror("expected yes or no."); @@ -4968,12 +4439,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4972 "util/configparser.c" +#line 4443 "util/configparser.c" break; case 400: #line 1591 "./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) yyerror("expected yes or no."); @@ -4981,12 +4452,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4985 "util/configparser.c" +#line 4456 "util/configparser.c" break; case 401: #line 1601 "./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) yyerror("expected yes or no."); @@ -4994,12 +4465,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 4469 "util/configparser.c" break; case 402: #line 1611 "./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) yyerror("expected yes or no."); @@ -5007,12 +4478,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 4482 "util/configparser.c" break; case 403: #line 1621 "./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) yyerror("expected yes or no."); @@ -5020,12 +4491,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5024 "util/configparser.c" +#line 4495 "util/configparser.c" break; case 404: #line 1631 "./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) yyerror("expected yes or no."); @@ -5033,12 +4504,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5037 "util/configparser.c" +#line 4508 "util/configparser.c" break; case 405: #line 1641 "./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) yyerror("expected yes or no."); @@ -5046,100 +4517,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5050 "util/configparser.c" +#line 4521 "util/configparser.c" break; case 406: #line 1651 "./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 5060 "util/configparser.c" +#line 4531 "util/configparser.c" break; case 407: #line 1658 "./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 5070 "util/configparser.c" +#line 4541 "util/configparser.c" break; case 408: #line 1665 "./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 5080 "util/configparser.c" +#line 4551 "util/configparser.c" break; case 409: #line 1672 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5092 "util/configparser.c" +#line 4563 "util/configparser.c" break; case 410: #line 1681 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5104 "util/configparser.c" +#line 4575 "util/configparser.c" break; case 411: #line 1690 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 4587 "util/configparser.c" break; case 412: #line 1699 "./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) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 4599 "util/configparser.c" break; case 413: #line 1708 "./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 5138 "util/configparser.c" +#line 4609 "util/configparser.c" break; case 414: #line 1715 "./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) yyerror("expected yes or no."); @@ -5147,12 +4618,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5151 "util/configparser.c" +#line 4622 "util/configparser.c" break; case 415: #line 1725 "./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 && @@ -5170,22 +4641,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 5174 "util/configparser.c" +#line 4645 "util/configparser.c" break; case 416: #line 1745 "./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 5184 "util/configparser.c" +#line 4655 "util/configparser.c" break; case 417: #line 1752 "./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) { cfg_parser->cfg->val_date_override = 0; @@ -5201,12 +4672,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5205 "util/configparser.c" +#line 4676 "util/configparser.c" break; case 418: #line 1770 "./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) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -5217,12 +4688,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5221 "util/configparser.c" +#line 4692 "util/configparser.c" break; case 419: #line 1783 "./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) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -5233,60 +4704,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 4708 "util/configparser.c" break; case 420: #line 1796 "./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) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5249 "util/configparser.c" +#line 4720 "util/configparser.c" break; case 421: #line 1805 "./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) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5261 "util/configparser.c" +#line 4732 "util/configparser.c" break; case 422: #line 1814 "./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) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5273 "util/configparser.c" +#line 4744 "util/configparser.c" break; case 423: #line 1823 "./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) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 4756 "util/configparser.c" break; case 424: #line 1832 "./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) yyerror("expected yes or no."); @@ -5294,12 +4765,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5298 "util/configparser.c" +#line 4769 "util/configparser.c" break; case 425: #line 1842 "./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) yyerror("expected yes or no."); @@ -5307,12 +4778,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5311 "util/configparser.c" +#line 4782 "util/configparser.c" break; case 426: #line 1852 "./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) yyerror("expected yes or no."); @@ -5321,84 +4792,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5325 "util/configparser.c" +#line 4796 "util/configparser.c" break; case 427: #line 1863 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5337 "util/configparser.c" +#line 4808 "util/configparser.c" break; case 428: #line 1872 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 4820 "util/configparser.c" break; case 429: #line 1881 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 4832 "util/configparser.c" break; case 430: #line 1890 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5373 "util/configparser.c" +#line 4844 "util/configparser.c" break; case 431: #line 1899 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 4856 "util/configparser.c" break; case 432: #line 1908 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5397 "util/configparser.c" +#line 4868 "util/configparser.c" break; case 433: #line 1917 "./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) yyerror("expected yes or no."); @@ -5409,12 +4880,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5413 "util/configparser.c" +#line 4884 "util/configparser.c" break; case 434: #line 1930 "./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) yyerror("expected yes or no."); @@ -5425,70 +4896,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5429 "util/configparser.c" +#line 4900 "util/configparser.c" break; case 435: #line 1943 "./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) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5441 "util/configparser.c" +#line 4912 "util/configparser.c" break; case 436: #line 1952 "./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 5451 "util/configparser.c" +#line 4922 "util/configparser.c" break; case 437: #line 1959 "./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) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5463 "util/configparser.c" +#line 4934 "util/configparser.c" break; case 438: #line 1968 "./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) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5475 "util/configparser.c" +#line 4946 "util/configparser.c" break; case 439: #line 1977 "./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) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 4958 "util/configparser.c" break; case 440: #line 1986 "./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) yyerror("expected yes or no."); @@ -5496,23 +4967,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5500 "util/configparser.c" +#line 4971 "util/configparser.c" break; case 441: #line 1995 "./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 5511 "util/configparser.c" +#line 4982 "util/configparser.c" break; case 442: #line 2003 "./util/configparser.y" - { + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5523,23 +4994,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5527 "util/configparser.c" +#line 4998 "util/configparser.c" break; case 443: #line 2016 "./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 5538 "util/configparser.c" +#line 5009 "util/configparser.c" break; case 444: #line 2024 "./util/configparser.y" - { + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5578,22 +5049,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5582 "util/configparser.c" +#line 5053 "util/configparser.c" break; case 445: #line 2065 "./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 5592 "util/configparser.c" +#line 5063 "util/configparser.c" break; case 446: #line 2072 "./util/configparser.y" - { + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5606,12 +5077,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5610 "util/configparser.c" +#line 5081 "util/configparser.c" break; case 447: #line 2087 "./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) yyerror("expected yes or no."); @@ -5619,12 +5090,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5623 "util/configparser.c" +#line 5094 "util/configparser.c" break; case 448: #line 2097 "./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) yyerror("expected yes or no."); @@ -5632,65 +5103,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5636 "util/configparser.c" +#line 5107 "util/configparser.c" break; case 449: #line 2107 "./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 5646 "util/configparser.c" +#line 5117 "util/configparser.c" break; case 450: #line 2114 "./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 5656 "util/configparser.c" +#line 5127 "util/configparser.c" break; case 451: #line 2121 "./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 5666 "util/configparser.c" +#line 5137 "util/configparser.c" break; case 452: #line 2128 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5678 "util/configparser.c" +#line 5149 "util/configparser.c" break; case 453: #line 2137 "./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 5689 "util/configparser.c" +#line 5160 "util/configparser.c" break; case 454: #line 2145 "./util/configparser.y" - { + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5702,12 +5173,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5706 "util/configparser.c" +#line 5177 "util/configparser.c" break; case 455: #line 2159 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5726,12 +5197,12 @@ yyreduce: } } } -#line 5730 "util/configparser.c" +#line 5201 "util/configparser.c" break; case 456: #line 2180 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5750,12 +5221,12 @@ yyreduce: } } } -#line 5754 "util/configparser.c" +#line 5225 "util/configparser.c" break; case 457: #line 2201 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5765,12 +5236,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5769 "util/configparser.c" +#line 5240 "util/configparser.c" break; case 458: #line 2213 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5780,12 +5251,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5784 "util/configparser.c" +#line 5255 "util/configparser.c" break; case 459: #line 2225 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5795,24 +5266,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5799 "util/configparser.c" +#line 5270 "util/configparser.c" break; case 460: #line 2237 "./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, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5811 "util/configparser.c" +#line 5282 "util/configparser.c" break; case 461: #line 2246 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5831,58 +5302,58 @@ yyreduce: } } } -#line 5835 "util/configparser.c" +#line 5306 "util/configparser.c" break; case 462: #line 2267 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5847 "util/configparser.c" +#line 5318 "util/configparser.c" break; case 463: #line 2277 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" +#line 5330 "util/configparser.c" break; case 464: #line 2286 "./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 5870 "util/configparser.c" +#line 5341 "util/configparser.c" break; case 465: #line 2294 "./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 5881 "util/configparser.c" +#line 5352 "util/configparser.c" break; case 466: #line 2302 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5893,12 +5364,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5897 "util/configparser.c" +#line 5368 "util/configparser.c" break; case 467: #line 2315 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5909,12 +5380,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5913 "util/configparser.c" +#line 5384 "util/configparser.c" break; case 468: #line 2328 "./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) { yyerror("number expected"); @@ -5927,12 +5398,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5931 "util/configparser.c" +#line 5402 "util/configparser.c" break; case 469: #line 2343 "./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) { yyerror("number expected"); @@ -5945,69 +5416,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5949 "util/configparser.c" +#line 5420 "util/configparser.c" break; case 470: #line 2358 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5961 "util/configparser.c" +#line 5432 "util/configparser.c" break; case 471: #line 2367 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5973 "util/configparser.c" +#line 5444 "util/configparser.c" break; case 472: #line 2376 "./util/configparser.y" - { + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5982 "util/configparser.c" +#line 5453 "util/configparser.c" break; case 473: #line 2382 "./util/configparser.y" - { + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5994 "util/configparser.c" +#line 5465 "util/configparser.c" break; case 474: #line 2391 "./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) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6006 "util/configparser.c" +#line 5477 "util/configparser.c" break; case 475: #line 2400 "./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) yyerror("expected yes or no."); @@ -6015,12 +5486,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6019 "util/configparser.c" +#line 5490 "util/configparser.c" break; case 476: #line 2410 "./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) yyerror("expected yes or no."); @@ -6028,12 +5499,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6032 "util/configparser.c" +#line 5503 "util/configparser.c" break; case 477: #line 2420 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6044,12 +5515,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6048 "util/configparser.c" +#line 5519 "util/configparser.c" break; case 478: #line 2433 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6060,12 +5531,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 5535 "util/configparser.c" break; case 479: #line 2446 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -6075,12 +5546,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6079 "util/configparser.c" +#line 5550 "util/configparser.c" break; case 480: #line 2458 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -6092,12 +5563,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6096 "util/configparser.c" +#line 5567 "util/configparser.c" break; case 481: #line 2472 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -6107,12 +5578,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6111 "util/configparser.c" +#line 5582 "util/configparser.c" break; case 482: #line 2484 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6124,38 +5595,39 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6128 "util/configparser.c" +#line 5599 "util/configparser.c" break; case 483: #line 2498 "./util/configparser.y" - { + { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "edns-client-string"); } -#line 6140 "util/configparser.c" +#line 5611 "util/configparser.c" break; case 484: #line 2507 "./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) yyerror("option code expected"); else if(atoi((yyvsp[0].str)) > 65535 || atoi((yyvsp[0].str)) < 0) yyerror("option code must be in interval [0, 65535]"); else cfg_parser->cfg->edns_client_string_opcode = atoi((yyvsp[0].str)); + free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 5626 "util/configparser.c" break; case 485: -#line 2518 "./util/configparser.y" - { +#line 2519 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -6163,56 +5635,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 6167 "util/configparser.c" +#line 5639 "util/configparser.c" break; case 486: -#line 2528 "./util/configparser.y" - { +#line 2529 "./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 6177 "util/configparser.c" +#line 5649 "util/configparser.c" break; case 487: -#line 2535 "./util/configparser.y" - { +#line 2536 "./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 6187 "util/configparser.c" +#line 5659 "util/configparser.c" break; case 488: -#line 2542 "./util/configparser.y" - { +#line 2543 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6199 "util/configparser.c" +#line 5671 "util/configparser.c" break; case 489: -#line 2551 "./util/configparser.y" - { +#line 2552 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6211 "util/configparser.c" +#line 5683 "util/configparser.c" break; case 490: -#line 2560 "./util/configparser.y" - { +#line 2561 "./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) yyerror("expected yes or no."); @@ -6220,12 +5692,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6224 "util/configparser.c" +#line 5696 "util/configparser.c" break; case 491: -#line 2570 "./util/configparser.y" - { +#line 2571 "./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) yyerror("expected yes or no."); @@ -6233,12 +5705,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 5709 "util/configparser.c" break; case 492: -#line 2580 "./util/configparser.y" - { +#line 2581 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -6246,56 +5718,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 6250 "util/configparser.c" +#line 5722 "util/configparser.c" break; case 493: -#line 2590 "./util/configparser.y" - { +#line 2591 "./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 6260 "util/configparser.c" +#line 5732 "util/configparser.c" break; case 494: -#line 2597 "./util/configparser.y" - { +#line 2598 "./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 6270 "util/configparser.c" +#line 5742 "util/configparser.c" break; case 495: -#line 2604 "./util/configparser.y" - { +#line 2605 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6282 "util/configparser.c" +#line 5754 "util/configparser.c" break; case 496: -#line 2613 "./util/configparser.y" - { +#line 2614 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6294 "util/configparser.c" +#line 5766 "util/configparser.c" break; case 497: -#line 2622 "./util/configparser.y" - { +#line 2623 "./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) yyerror("expected yes or no."); @@ -6303,12 +5775,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6307 "util/configparser.c" +#line 5779 "util/configparser.c" break; case 498: -#line 2632 "./util/configparser.y" - { +#line 2633 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -6316,53 +5788,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 6320 "util/configparser.c" +#line 5792 "util/configparser.c" break; case 499: -#line 2642 "./util/configparser.y" - { +#line 2643 "./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 6330 "util/configparser.c" +#line 5802 "util/configparser.c" break; case 500: -#line 2649 "./util/configparser.y" - { +#line 2650 "./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 6340 "util/configparser.c" +#line 5812 "util/configparser.c" break; case 501: -#line 2656 "./util/configparser.y" - { +#line 2657 "./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 6350 "util/configparser.c" +#line 5822 "util/configparser.c" break; case 502: -#line 2663 "./util/configparser.y" - { +#line 2664 "./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 6361 "util/configparser.c" +#line 5833 "util/configparser.c" break; case 503: -#line 2671 "./util/configparser.y" - { +#line 2672 "./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) yyerror("expected yes or no."); @@ -6370,12 +5842,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6374 "util/configparser.c" +#line 5846 "util/configparser.c" break; case 504: -#line 2681 "./util/configparser.y" - { +#line 2682 "./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) yyerror("expected yes or no."); @@ -6383,12 +5855,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 5859 "util/configparser.c" break; case 505: -#line 2691 "./util/configparser.y" - { +#line 2692 "./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) yyerror("expected yes or no."); @@ -6396,12 +5868,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6400 "util/configparser.c" +#line 5872 "util/configparser.c" break; case 506: -#line 2701 "./util/configparser.y" - { +#line 2702 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -6409,12 +5881,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 6413 "util/configparser.c" +#line 5885 "util/configparser.c" break; case 507: -#line 2711 "./util/configparser.y" - { +#line 2712 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -6451,12 +5923,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 6455 "util/configparser.c" +#line 5927 "util/configparser.c" break; case 508: -#line 2750 "./util/configparser.y" - { +#line 2751 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -6464,34 +5936,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 6468 "util/configparser.c" +#line 5940 "util/configparser.c" break; case 509: -#line 2760 "./util/configparser.y" - { +#line 2761 "./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 6479 "util/configparser.c" +#line 5951 "util/configparser.c" break; case 510: -#line 2768 "./util/configparser.y" - { +#line 2769 "./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 6490 "util/configparser.c" +#line 5962 "util/configparser.c" break; case 511: -#line 2776 "./util/configparser.y" - { +#line 2777 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -6504,32 +5976,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 6508 "util/configparser.c" +#line 5980 "util/configparser.c" break; case 512: -#line 2791 "./util/configparser.y" - { +#line 2792 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6520 "util/configparser.c" +#line 5992 "util/configparser.c" break; case 513: -#line 2800 "./util/configparser.y" - { +#line 2801 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6528 "util/configparser.c" +#line 6000 "util/configparser.c" break; case 524: -#line 2811 "./util/configparser.y" - { +#line 2812 "./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) yyerror("expected yes or no."); @@ -6537,104 +6009,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6541 "util/configparser.c" +#line 6013 "util/configparser.c" break; case 525: -#line 2821 "./util/configparser.y" - { +#line 2822 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6553 "util/configparser.c" +#line 6025 "util/configparser.c" break; case 526: -#line 2830 "./util/configparser.y" - { +#line 2831 "./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 6563 "util/configparser.c" +#line 6035 "util/configparser.c" break; case 527: -#line 2837 "./util/configparser.y" - { +#line 2838 "./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 6573 "util/configparser.c" +#line 6045 "util/configparser.c" break; case 528: -#line 2844 "./util/configparser.y" - { +#line 2845 "./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 6583 "util/configparser.c" +#line 6055 "util/configparser.c" break; case 529: -#line 2851 "./util/configparser.y" - { +#line 2852 "./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 6593 "util/configparser.c" +#line 6065 "util/configparser.c" break; case 530: -#line 2858 "./util/configparser.y" - { +#line 2859 "./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 6603 "util/configparser.c" +#line 6075 "util/configparser.c" break; case 531: -#line 2865 "./util/configparser.y" - { +#line 2866 "./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 6613 "util/configparser.c" +#line 6085 "util/configparser.c" break; case 532: -#line 2872 "./util/configparser.y" - { +#line 2873 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6621 "util/configparser.c" +#line 6093 "util/configparser.c" break; case 554: -#line 2892 "./util/configparser.y" - { +#line 2893 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6633 "util/configparser.c" +#line 6105 "util/configparser.c" break; case 555: -#line 2901 "./util/configparser.y" - { +#line 2902 "./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) yyerror("expected yes or no."); @@ -6642,128 +6114,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6646 "util/configparser.c" +#line 6118 "util/configparser.c" break; case 556: -#line 2911 "./util/configparser.y" - { +#line 2912 "./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 6656 "util/configparser.c" +#line 6128 "util/configparser.c" break; case 557: -#line 2918 "./util/configparser.y" - { +#line 2919 "./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 6666 "util/configparser.c" +#line 6138 "util/configparser.c" break; case 558: -#line 2925 "./util/configparser.y" - { +#line 2926 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6678 "util/configparser.c" +#line 6150 "util/configparser.c" break; case 559: -#line 2934 "./util/configparser.y" - { +#line 2935 "./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 6688 "util/configparser.c" +#line 6160 "util/configparser.c" break; case 560: -#line 2941 "./util/configparser.y" - { +#line 2942 "./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 6698 "util/configparser.c" +#line 6170 "util/configparser.c" break; case 561: -#line 2948 "./util/configparser.y" - { +#line 2949 "./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 6708 "util/configparser.c" +#line 6180 "util/configparser.c" break; case 562: -#line 2955 "./util/configparser.y" - { +#line 2956 "./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 6718 "util/configparser.c" +#line 6190 "util/configparser.c" break; case 563: -#line 2962 "./util/configparser.y" - { +#line 2963 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6730 "util/configparser.c" +#line 6202 "util/configparser.c" break; case 564: -#line 2971 "./util/configparser.y" - { +#line 2972 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6742 "util/configparser.c" +#line 6214 "util/configparser.c" break; case 565: -#line 2980 "./util/configparser.y" - { +#line 2981 "./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 6752 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 566: -#line 2987 "./util/configparser.y" - { +#line 2988 "./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 6762 "util/configparser.c" +#line 6234 "util/configparser.c" break; case 567: -#line 2994 "./util/configparser.y" - { +#line 2995 "./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) yyerror("expected yes or no."); @@ -6771,12 +6243,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6775 "util/configparser.c" +#line 6247 "util/configparser.c" break; case 568: -#line 3004 "./util/configparser.y" - { +#line 3005 "./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) yyerror("expected yes or no."); @@ -6784,12 +6256,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6788 "util/configparser.c" +#line 6260 "util/configparser.c" break; case 569: -#line 3014 "./util/configparser.y" - { +#line 3015 "./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) yyerror("expected yes or no."); @@ -6797,12 +6269,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6801 "util/configparser.c" +#line 6273 "util/configparser.c" break; case 570: -#line 3024 "./util/configparser.y" - { +#line 3025 "./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) yyerror("expected yes or no."); @@ -6810,12 +6282,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6814 "util/configparser.c" +#line 6286 "util/configparser.c" break; case 571: -#line 3034 "./util/configparser.y" - { +#line 3035 "./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) yyerror("expected yes or no."); @@ -6823,12 +6295,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6827 "util/configparser.c" +#line 6299 "util/configparser.c" break; case 572: -#line 3044 "./util/configparser.y" - { +#line 3045 "./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) yyerror("expected yes or no."); @@ -6836,48 +6308,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6840 "util/configparser.c" +#line 6312 "util/configparser.c" break; case 573: -#line 3054 "./util/configparser.y" - { +#line 3055 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6848 "util/configparser.c" +#line 6320 "util/configparser.c" break; case 577: -#line 3063 "./util/configparser.y" - { +#line 3064 "./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 6858 "util/configparser.c" +#line 6330 "util/configparser.c" break; case 578: -#line 3069 "./util/configparser.y" - { +#line 3070 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6866 "util/configparser.c" +#line 6338 "util/configparser.c" break; case 582: -#line 3078 "./util/configparser.y" - { +#line 3079 "./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 6876 "util/configparser.c" +#line 6348 "util/configparser.c" break; case 583: -#line 3084 "./util/configparser.y" - { +#line 3085 "./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) yyerror("expected yes or no."); @@ -6885,132 +6357,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6889 "util/configparser.c" +#line 6361 "util/configparser.c" break; case 584: -#line 3094 "./util/configparser.y" - { +#line 3095 "./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 6899 "util/configparser.c" +#line 6371 "util/configparser.c" break; case 585: -#line 3101 "./util/configparser.y" - { +#line 3102 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6911 "util/configparser.c" +#line 6383 "util/configparser.c" break; case 586: -#line 3110 "./util/configparser.y" - { +#line 3111 "./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 6922 "util/configparser.c" +#line 6394 "util/configparser.c" break; case 587: -#line 3118 "./util/configparser.y" - { +#line 3119 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6930 "util/configparser.c" +#line 6402 "util/configparser.c" break; case 600: -#line 3134 "./util/configparser.y" - { +#line 3135 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6942 "util/configparser.c" +#line 6414 "util/configparser.c" break; case 601: -#line 3144 "./util/configparser.y" - { +#line 3145 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6954 "util/configparser.c" +#line 6426 "util/configparser.c" break; case 602: -#line 3153 "./util/configparser.y" - { +#line 3154 "./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 6964 "util/configparser.c" +#line 6436 "util/configparser.c" break; case 603: -#line 3160 "./util/configparser.y" - { +#line 3161 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6976 "util/configparser.c" +#line 6448 "util/configparser.c" break; case 604: -#line 3169 "./util/configparser.y" - { +#line 3170 "./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 6986 "util/configparser.c" +#line 6458 "util/configparser.c" break; case 605: -#line 3176 "./util/configparser.y" - { +#line 3177 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6998 "util/configparser.c" +#line 6470 "util/configparser.c" break; case 606: -#line 3185 "./util/configparser.y" - { +#line 3186 "./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 7009 "util/configparser.c" +#line 6481 "util/configparser.c" break; case 607: -#line 3193 "./util/configparser.y" - { +#line 3194 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -7021,23 +6493,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7025 "util/configparser.c" +#line 6497 "util/configparser.c" break; case 608: -#line 3206 "./util/configparser.y" - { +#line 3207 "./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 7036 "util/configparser.c" +#line 6508 "util/configparser.c" break; case 609: -#line 3214 "./util/configparser.y" - { +#line 3215 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -7048,20 +6520,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 7052 "util/configparser.c" +#line 6524 "util/configparser.c" break; case 610: -#line 3227 "./util/configparser.y" - { +#line 3228 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 7060 "util/configparser.c" +#line 6532 "util/configparser.c" break; case 619: -#line 3238 "./util/configparser.y" - { +#line 3239 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -7071,12 +6543,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7075 "util/configparser.c" +#line 6547 "util/configparser.c" break; case 620: -#line 3250 "./util/configparser.y" - { +#line 3251 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -7086,12 +6558,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7090 "util/configparser.c" +#line 6562 "util/configparser.c" break; case 621: -#line 3262 "./util/configparser.y" - { +#line 3263 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -7101,12 +6573,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7105 "util/configparser.c" +#line 6577 "util/configparser.c" break; case 622: -#line 3274 "./util/configparser.y" - { +#line 3275 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -7119,12 +6591,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7123 "util/configparser.c" +#line 6595 "util/configparser.c" break; case 623: -#line 3289 "./util/configparser.y" - { +#line 3290 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -7135,12 +6607,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7139 "util/configparser.c" +#line 6611 "util/configparser.c" break; case 624: -#line 3302 "./util/configparser.y" - { +#line 3303 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -7151,12 +6623,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 7155 "util/configparser.c" +#line 6627 "util/configparser.c" break; case 625: -#line 3315 "./util/configparser.y" - { +#line 3316 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -7165,20 +6637,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 7169 "util/configparser.c" +#line 6641 "util/configparser.c" break; case 626: -#line 3326 "./util/configparser.y" - { +#line 3327 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 7177 "util/configparser.c" +#line 6649 "util/configparser.c" break; case 631: -#line 3335 "./util/configparser.y" - { +#line 3336 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -7191,12 +6663,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7195 "util/configparser.c" +#line 6667 "util/configparser.c" break; case 632: -#line 3350 "./util/configparser.y" - { +#line 3351 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -7209,11 +6681,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 7213 "util/configparser.c" +#line 6685 "util/configparser.c" break; -#line 7217 "util/configparser.c" +#line 6689 "util/configparser.c" default: break; } @@ -7228,10 +6700,11 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; + YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -7255,14 +6728,50 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); + yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); + /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; +#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); +#else +# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ + yyssp, yytoken) + { + char const *yymsgp = YY_("syntax error"); + int yysyntax_error_status; + yysyntax_error_status = YYSYNTAX_ERROR; + if (yysyntax_error_status == 0) + yymsgp = yymsg; + else if (yysyntax_error_status == 1) + { + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + if (!yymsg) + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + yysyntax_error_status = 2; + } + else + { + yysyntax_error_status = YYSYNTAX_ERROR; + yymsgp = yymsg; + } + } + yyerror (yymsgp); + if (yysyntax_error_status == 2) + goto yyexhaustedlab; + } +# undef YYSYNTAX_ERROR +#endif } + + if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -7311,14 +6820,13 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ - /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYSYMBOL_YYerror; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) { yyn = yytable[yyn]; if (0 < yyn) @@ -7332,7 +6840,7 @@ yyerrlab1: yydestruct ("Error: popping", - YY_ACCESSING_SYMBOL (yystate), yyvsp); + yystos[yystate], yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -7344,7 +6852,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -7366,7 +6874,7 @@ yyabortlab: goto yyreturn; -#if !defined yyoverflow +#if !defined yyoverflow || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -7396,18 +6904,20 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); + yystos[*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif - +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif return yyresult; } - -#line 3364 "./util/configparser.y" +#line 3365 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index bc8401330..323d587dd 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.6.4. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -31,9 +31,8 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ +/* Undocumented macros, especially those whose name start with YY_, + are private implementation details. Do not rely on them. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED @@ -45,322 +44,314 @@ extern int yydebug; #endif -/* Token kinds. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - SPACE = 258, /* SPACE */ - LETTER = 259, /* LETTER */ - NEWLINE = 260, /* NEWLINE */ - COMMENT = 261, /* COMMENT */ - COLON = 262, /* COLON */ - ANY = 263, /* ANY */ - ZONESTR = 264, /* ZONESTR */ - STRING_ARG = 265, /* STRING_ARG */ - VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ - VAR_SERVER = 267, /* VAR_SERVER */ - VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ - VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ - VAR_PORT = 270, /* VAR_PORT */ - VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ - VAR_INTERFACE = 272, /* VAR_INTERFACE */ - VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ - VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ - VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ - VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ - VAR_DO_UDP = 277, /* VAR_DO_UDP */ - VAR_DO_TCP = 278, /* VAR_DO_TCP */ - VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ - VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ - VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ - VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ - VAR_CHROOT = 284, /* VAR_CHROOT */ - VAR_USERNAME = 285, /* VAR_USERNAME */ - VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ - VAR_LOGFILE = 287, /* VAR_LOGFILE */ - VAR_PIDFILE = 288, /* VAR_PIDFILE */ - VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ - VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ - VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ - VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ - VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ - VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ - VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ - VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ - VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ - VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ - VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ - VAR_NAME = 300, /* VAR_NAME */ - VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ - VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ - VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ - VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ - VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ - VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ - VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ - VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ - VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ - VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ - VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ - VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ - VAR_IDENTITY = 313, /* VAR_IDENTITY */ - VAR_VERSION = 314, /* VAR_VERSION */ - VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ - VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ - VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ - VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ - VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ - VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ - VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ - VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ - VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ - VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ - VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ - VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ - VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ - VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ - VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ - VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ - VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ - VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ - VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ - VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ - VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ - VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ - VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ - VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ - VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ - VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ - VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ - VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ - VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ - VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ - VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ - VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ - VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ - VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ - VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ - VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ - VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ - VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ - VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ - VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ - VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ - VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ - VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ - VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ - VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ - VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ - VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ - VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ - VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ - VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ - VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ - VAR_PYTHON = 367, /* VAR_PYTHON */ - VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ - VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ - VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ - VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ - VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ - VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ - VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ - VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ - VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ - VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ - VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ - VAR_PREFETCH = 379, /* VAR_PREFETCH */ - VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ - VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ - VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ - VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ - VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ - VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ - VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ - VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ - VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ - VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ - VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ - VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ - VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ - VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ - VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ - VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ - VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ - VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ - VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ - VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ - VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ - VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ - VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ - VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ - VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ - VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ - VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ - VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ - VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ - VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ - VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ - VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ - VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ - VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ - VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ - VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ - VAR_DNSTAP = 417, /* VAR_DNSTAP */ - VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ - VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ - VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ - VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ - VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ - VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ - VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ - VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ - VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ - VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ - VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ - VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ - VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ - VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ - VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ - VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ - VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ - VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ - VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ - VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ - VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ - VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ - VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ - VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ - VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ - VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ - VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ - VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ - VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ - VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ - VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ - VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ - VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ - VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ - VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ - VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ - VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ - VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ - VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ - VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ - VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ - VAR_VIEW = 476, /* VAR_VIEW */ - VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ - VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ - VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ - VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ - VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ - VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ - VAR_FAKE_DSA = 484, /* VAR_FAKE_DSA */ - VAR_FAKE_SHA1 = 485, /* VAR_FAKE_SHA1 */ - VAR_LOG_IDENTITY = 486, /* VAR_LOG_IDENTITY */ - VAR_HIDE_TRUSTANCHOR = 487, /* VAR_HIDE_TRUSTANCHOR */ - VAR_TRUST_ANCHOR_SIGNALING = 488, /* VAR_TRUST_ANCHOR_SIGNALING */ - VAR_AGGRESSIVE_NSEC = 489, /* VAR_AGGRESSIVE_NSEC */ - VAR_USE_SYSTEMD = 490, /* VAR_USE_SYSTEMD */ - VAR_SHM_ENABLE = 491, /* VAR_SHM_ENABLE */ - VAR_SHM_KEY = 492, /* VAR_SHM_KEY */ - VAR_ROOT_KEY_SENTINEL = 493, /* VAR_ROOT_KEY_SENTINEL */ - VAR_DNSCRYPT = 494, /* VAR_DNSCRYPT */ - VAR_DNSCRYPT_ENABLE = 495, /* VAR_DNSCRYPT_ENABLE */ - VAR_DNSCRYPT_PORT = 496, /* VAR_DNSCRYPT_PORT */ - VAR_DNSCRYPT_PROVIDER = 497, /* VAR_DNSCRYPT_PROVIDER */ - VAR_DNSCRYPT_SECRET_KEY = 498, /* VAR_DNSCRYPT_SECRET_KEY */ - VAR_DNSCRYPT_PROVIDER_CERT = 499, /* VAR_DNSCRYPT_PROVIDER_CERT */ - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ - VAR_IPSECMOD_ENABLED = 505, /* VAR_IPSECMOD_ENABLED */ - VAR_IPSECMOD_HOOK = 506, /* VAR_IPSECMOD_HOOK */ - VAR_IPSECMOD_IGNORE_BOGUS = 507, /* VAR_IPSECMOD_IGNORE_BOGUS */ - VAR_IPSECMOD_MAX_TTL = 508, /* VAR_IPSECMOD_MAX_TTL */ - VAR_IPSECMOD_WHITELIST = 509, /* VAR_IPSECMOD_WHITELIST */ - VAR_IPSECMOD_STRICT = 510, /* VAR_IPSECMOD_STRICT */ - VAR_CACHEDB = 511, /* VAR_CACHEDB */ - VAR_CACHEDB_BACKEND = 512, /* VAR_CACHEDB_BACKEND */ - VAR_CACHEDB_SECRETSEED = 513, /* VAR_CACHEDB_SECRETSEED */ - VAR_CACHEDB_REDISHOST = 514, /* VAR_CACHEDB_REDISHOST */ - VAR_CACHEDB_REDISPORT = 515, /* VAR_CACHEDB_REDISPORT */ - VAR_CACHEDB_REDISTIMEOUT = 516, /* VAR_CACHEDB_REDISTIMEOUT */ - VAR_CACHEDB_REDISEXPIRERECORDS = 517, /* VAR_CACHEDB_REDISEXPIRERECORDS */ - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ - VAR_FOR_UPSTREAM = 519, /* VAR_FOR_UPSTREAM */ - VAR_AUTH_ZONE = 520, /* VAR_AUTH_ZONE */ - VAR_ZONEFILE = 521, /* VAR_ZONEFILE */ - VAR_MASTER = 522, /* VAR_MASTER */ - VAR_URL = 523, /* VAR_URL */ - VAR_FOR_DOWNSTREAM = 524, /* VAR_FOR_DOWNSTREAM */ - VAR_FALLBACK_ENABLED = 525, /* VAR_FALLBACK_ENABLED */ - VAR_TLS_ADDITIONAL_PORT = 526, /* VAR_TLS_ADDITIONAL_PORT */ - VAR_LOW_RTT = 527, /* VAR_LOW_RTT */ - VAR_LOW_RTT_PERMIL = 528, /* VAR_LOW_RTT_PERMIL */ - VAR_FAST_SERVER_PERMIL = 529, /* VAR_FAST_SERVER_PERMIL */ - VAR_FAST_SERVER_NUM = 530, /* VAR_FAST_SERVER_NUM */ - VAR_ALLOW_NOTIFY = 531, /* VAR_ALLOW_NOTIFY */ - VAR_TLS_WIN_CERT = 532, /* VAR_TLS_WIN_CERT */ - VAR_TCP_CONNECTION_LIMIT = 533, /* VAR_TCP_CONNECTION_LIMIT */ - VAR_FORWARD_NO_CACHE = 534, /* VAR_FORWARD_NO_CACHE */ - VAR_STUB_NO_CACHE = 535, /* VAR_STUB_NO_CACHE */ - VAR_LOG_SERVFAIL = 536, /* VAR_LOG_SERVFAIL */ - VAR_DENY_ANY = 537, /* VAR_DENY_ANY */ - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ - VAR_LOG_TAG_QUERYREPLY = 539, /* VAR_LOG_TAG_QUERYREPLY */ - VAR_STREAM_WAIT_SIZE = 540, /* VAR_STREAM_WAIT_SIZE */ - VAR_TLS_CIPHERS = 541, /* VAR_TLS_CIPHERS */ - VAR_TLS_CIPHERSUITES = 542, /* VAR_TLS_CIPHERSUITES */ - VAR_TLS_USE_SNI = 543, /* VAR_TLS_USE_SNI */ - VAR_IPSET = 544, /* VAR_IPSET */ - VAR_IPSET_NAME_V4 = 545, /* VAR_IPSET_NAME_V4 */ - VAR_IPSET_NAME_V6 = 546, /* VAR_IPSET_NAME_V6 */ - VAR_TLS_SESSION_TICKET_KEYS = 547, /* VAR_TLS_SESSION_TICKET_KEYS */ - VAR_RPZ = 548, /* VAR_RPZ */ - VAR_TAGS = 549, /* VAR_TAGS */ - VAR_RPZ_ACTION_OVERRIDE = 550, /* VAR_RPZ_ACTION_OVERRIDE */ - VAR_RPZ_CNAME_OVERRIDE = 551, /* VAR_RPZ_CNAME_OVERRIDE */ - VAR_RPZ_LOG = 552, /* VAR_RPZ_LOG */ - VAR_RPZ_LOG_NAME = 553, /* VAR_RPZ_LOG_NAME */ - VAR_DYNLIB = 554, /* VAR_DYNLIB */ - VAR_DYNLIB_FILE = 555, /* VAR_DYNLIB_FILE */ - VAR_EDNS_CLIENT_STRING = 556, /* VAR_EDNS_CLIENT_STRING */ - VAR_EDNS_CLIENT_STRING_OPCODE = 557 /* VAR_EDNS_CLIENT_STRING_OPCODE */ + SPACE = 258, + LETTER = 259, + NEWLINE = 260, + COMMENT = 261, + COLON = 262, + ANY = 263, + ZONESTR = 264, + STRING_ARG = 265, + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_HTTPS_PORT = 397, + VAR_HTTP_ENDPOINT = 398, + VAR_HTTP_MAX_STREAMS = 399, + VAR_HTTP_QUERY_BUFFER_SIZE = 400, + VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, + VAR_HTTP_NODELAY = 402, + VAR_HTTP_NOTLS_DOWNSTREAM = 403, + VAR_STUB_FIRST = 404, + VAR_MINIMAL_RESPONSES = 405, + VAR_RRSET_ROUNDROBIN = 406, + VAR_MAX_UDP_SIZE = 407, + VAR_DELAY_CLOSE = 408, + VAR_UDP_CONNECT = 409, + VAR_UNBLOCK_LAN_ZONES = 410, + VAR_INSECURE_LAN_ZONES = 411, + VAR_INFRA_CACHE_MIN_RTT = 412, + VAR_INFRA_KEEP_PROBING = 413, + VAR_DNS64_PREFIX = 414, + VAR_DNS64_SYNTHALL = 415, + VAR_DNS64_IGNORE_AAAA = 416, + VAR_DNSTAP = 417, + VAR_DNSTAP_ENABLE = 418, + VAR_DNSTAP_SOCKET_PATH = 419, + VAR_DNSTAP_IP = 420, + VAR_DNSTAP_TLS = 421, + VAR_DNSTAP_TLS_SERVER_NAME = 422, + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, + VAR_DNSTAP_SEND_IDENTITY = 426, + VAR_DNSTAP_SEND_VERSION = 427, + VAR_DNSTAP_BIDIRECTIONAL = 428, + VAR_DNSTAP_IDENTITY = 429, + VAR_DNSTAP_VERSION = 430, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, + VAR_RESPONSE_IP_TAG = 437, + VAR_RESPONSE_IP = 438, + VAR_RESPONSE_IP_DATA = 439, + VAR_HARDEN_ALGO_DOWNGRADE = 440, + VAR_IP_TRANSPARENT = 441, + VAR_IP_DSCP = 442, + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, + VAR_IP_RATELIMIT = 444, + VAR_IP_RATELIMIT_SLABS = 445, + VAR_IP_RATELIMIT_SIZE = 446, + VAR_RATELIMIT = 447, + VAR_RATELIMIT_SLABS = 448, + VAR_RATELIMIT_SIZE = 449, + VAR_RATELIMIT_FOR_DOMAIN = 450, + VAR_RATELIMIT_BELOW_DOMAIN = 451, + VAR_IP_RATELIMIT_FACTOR = 452, + VAR_RATELIMIT_FACTOR = 453, + VAR_SEND_CLIENT_SUBNET = 454, + VAR_CLIENT_SUBNET_ZONE = 455, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, + VAR_CLIENT_SUBNET_OPCODE = 457, + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, + VAR_CAPS_WHITELIST = 464, + VAR_CACHE_MAX_NEGATIVE_TTL = 465, + VAR_PERMIT_SMALL_HOLDDOWN = 466, + VAR_QNAME_MINIMISATION = 467, + VAR_QNAME_MINIMISATION_STRICT = 468, + VAR_IP_FREEBIND = 469, + VAR_DEFINE_TAG = 470, + VAR_LOCAL_ZONE_TAG = 471, + VAR_ACCESS_CONTROL_TAG = 472, + VAR_LOCAL_ZONE_OVERRIDE = 473, + VAR_ACCESS_CONTROL_TAG_ACTION = 474, + VAR_ACCESS_CONTROL_TAG_DATA = 475, + VAR_VIEW = 476, + VAR_ACCESS_CONTROL_VIEW = 477, + VAR_VIEW_FIRST = 478, + VAR_SERVE_EXPIRED = 479, + VAR_SERVE_EXPIRED_TTL = 480, + VAR_SERVE_EXPIRED_TTL_RESET = 481, + VAR_SERVE_EXPIRED_REPLY_TTL = 482, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, + VAR_FAKE_DSA = 484, + VAR_FAKE_SHA1 = 485, + VAR_LOG_IDENTITY = 486, + VAR_HIDE_TRUSTANCHOR = 487, + VAR_TRUST_ANCHOR_SIGNALING = 488, + VAR_AGGRESSIVE_NSEC = 489, + VAR_USE_SYSTEMD = 490, + VAR_SHM_ENABLE = 491, + VAR_SHM_KEY = 492, + VAR_ROOT_KEY_SENTINEL = 493, + VAR_DNSCRYPT = 494, + VAR_DNSCRYPT_ENABLE = 495, + VAR_DNSCRYPT_PORT = 496, + VAR_DNSCRYPT_PROVIDER = 497, + VAR_DNSCRYPT_SECRET_KEY = 498, + VAR_DNSCRYPT_PROVIDER_CERT = 499, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, + VAR_IPSECMOD_ENABLED = 505, + VAR_IPSECMOD_HOOK = 506, + VAR_IPSECMOD_IGNORE_BOGUS = 507, + VAR_IPSECMOD_MAX_TTL = 508, + VAR_IPSECMOD_WHITELIST = 509, + VAR_IPSECMOD_STRICT = 510, + VAR_CACHEDB = 511, + VAR_CACHEDB_BACKEND = 512, + VAR_CACHEDB_SECRETSEED = 513, + VAR_CACHEDB_REDISHOST = 514, + VAR_CACHEDB_REDISPORT = 515, + VAR_CACHEDB_REDISTIMEOUT = 516, + VAR_CACHEDB_REDISEXPIRERECORDS = 517, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, + VAR_FOR_UPSTREAM = 519, + VAR_AUTH_ZONE = 520, + VAR_ZONEFILE = 521, + VAR_MASTER = 522, + VAR_URL = 523, + VAR_FOR_DOWNSTREAM = 524, + VAR_FALLBACK_ENABLED = 525, + VAR_TLS_ADDITIONAL_PORT = 526, + VAR_LOW_RTT = 527, + VAR_LOW_RTT_PERMIL = 528, + VAR_FAST_SERVER_PERMIL = 529, + VAR_FAST_SERVER_NUM = 530, + VAR_ALLOW_NOTIFY = 531, + VAR_TLS_WIN_CERT = 532, + VAR_TCP_CONNECTION_LIMIT = 533, + VAR_FORWARD_NO_CACHE = 534, + VAR_STUB_NO_CACHE = 535, + VAR_LOG_SERVFAIL = 536, + VAR_DENY_ANY = 537, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, + VAR_LOG_TAG_QUERYREPLY = 539, + VAR_STREAM_WAIT_SIZE = 540, + VAR_TLS_CIPHERS = 541, + VAR_TLS_CIPHERSUITES = 542, + VAR_TLS_USE_SNI = 543, + VAR_IPSET = 544, + VAR_IPSET_NAME_V4 = 545, + VAR_IPSET_NAME_V6 = 546, + VAR_TLS_SESSION_TICKET_KEYS = 547, + VAR_RPZ = 548, + VAR_TAGS = 549, + VAR_RPZ_ACTION_OVERRIDE = 550, + VAR_RPZ_CNAME_OVERRIDE = 551, + VAR_RPZ_LOG = 552, + VAR_RPZ_LOG_NAME = 553, + VAR_DYNLIB = 554, + VAR_DYNLIB_FILE = 555, + VAR_EDNS_CLIENT_STRING = 556, + VAR_EDNS_CLIENT_STRING_OPCODE = 557 }; - typedef enum yytokentype yytoken_kind_t; #endif -/* Token kinds. */ -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 +/* Tokens. */ #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -670,7 +661,7 @@ union YYSTYPE char* str; -#line 674 "util/configparser.h" +#line 665 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index baaec7a3a..4d6b5e3fb 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2511,6 +2511,7 @@ server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG else if(atoi($2) > 65535 || atoi($2) < 0) yyerror("option code must be in interval [0, 65535]"); else cfg_parser->cfg->edns_client_string_opcode = atoi($2); + free($2); } ; From d05c259458364ac7705d030d1106c4041956d908 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 12:12:35 +0100 Subject: [PATCH 298/394] - Attempt fix for libevent state in tcp reuse cases after a packet is written. --- doc/Changelog | 2 ++ services/outside_network.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ef9c8a5a7..c7b2a1b9a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ the tree key identity is preserved after cleanup of the TLS state. - Remove debug commands from reuse tests. - Fix memory leak for edns client tag opcode config element. + - Attempt fix for libevent state in tcp reuse cases after a packet + is written. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/services/outside_network.c b/services/outside_network.c index 0a940aaf2..7b5dc8459 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1010,6 +1010,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * and we can write some more. */ pend->c->tcp_more_write_again = 1; pend->query = reuse_write_wait_pop(&pend->reuse); + comm_point_stop_listening(pend->c); outnet_tcp_take_query_setup(pend->c->fd, pend, pend->query); } else { @@ -1018,6 +1019,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, pend->c->tcp_more_read_again = 0; pend->c->tcp_more_write_again = 0; pend->c->tcp_is_reading = 1; + comm_point_stop_listening(pend->c); reuse_tcp_setup_timeout(pend); } return 0; From e50152aa1f23f83a981479f7f31039f8bf2f28fc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 13:46:28 +0100 Subject: [PATCH 299/394] - Fix readagain and writeagain callback functions for comm point cleanup. --- doc/Changelog | 2 ++ services/outside_network.c | 16 ++++++++++------ services/outside_network.h | 12 ++++++++++++ util/netevent.c | 20 ++++++++++++-------- util/netevent.h | 18 ++++++++++++++---- 5 files changed, 50 insertions(+), 18 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c7b2a1b9a..0e2c254dd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,8 @@ - Fix memory leak for edns client tag opcode config element. - Attempt fix for libevent state in tcp reuse cases after a packet is written. + - Fix readagain and writeagain callback functions for comm point + cleanup. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream diff --git a/services/outside_network.c b/services/outside_network.c index 7b5dc8459..84876ff3f 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -655,6 +655,10 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->query = w; pend->reuse.outnet = w->outnet; pend->c->repinfo.addrlen = w->addrlen; + pend->c->tcp_more_read_again = &pend->reuse.cp_more_read_again; + pend->c->tcp_more_write_again = &pend->reuse.cp_more_write_again; + pend->reuse.cp_more_read_again = 0; + pend->reuse.cp_more_write_again = 0; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; if(pend->c->ssl) @@ -804,8 +808,8 @@ reuse_move_writewait_away(struct outside_network* outnet, pend->c->tcp_write_pkt = NULL; pend->c->tcp_write_pkt_len = 0; pend->c->tcp_write_and_read = 0; - pend->c->tcp_more_read_again = 0; - pend->c->tcp_more_write_again = 0; + pend->reuse.cp_more_read_again = 0; + pend->reuse.cp_more_write_again = 0; pend->c->tcp_is_reading = 1; w = pend->query; pend->query = NULL; @@ -1008,7 +1012,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * because this callback called after a tcp write * succeeded and likely more buffer space is available * and we can write some more. */ - pend->c->tcp_more_write_again = 1; + pend->reuse.cp_more_write_again = 1; pend->query = reuse_write_wait_pop(&pend->reuse); comm_point_stop_listening(pend->c); outnet_tcp_take_query_setup(pend->c->fd, pend, @@ -1016,8 +1020,8 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, } else { verbose(VERB_ALGO, "outnet tcp writes done, wait"); pend->c->tcp_write_and_read = 0; - pend->c->tcp_more_read_again = 0; - pend->c->tcp_more_write_again = 0; + pend->reuse.cp_more_read_again = 0; + pend->reuse.cp_more_write_again = 0; pend->c->tcp_is_reading = 1; comm_point_stop_listening(pend->c); reuse_tcp_setup_timeout(pend); @@ -1072,7 +1076,7 @@ outnet_tcp_cb(struct comm_point* c, void* arg, int error, * because this callback called after a successful read * and there could be more bytes to read on the input */ if(pend->reuse.tree_by_id.count != 0) - pend->c->tcp_more_read_again = 1; + pend->reuse.cp_more_read_again = 1; reuse_tcp_setup_read_and_timeout(pend); return 0; } diff --git a/services/outside_network.h b/services/outside_network.h index 48f9d3f03..2fe97fa6c 100644 --- a/services/outside_network.h +++ b/services/outside_network.h @@ -266,6 +266,18 @@ struct reuse_tcp { * or not is also part of the key to the rbtree. * There is a timeout and read event on the fd, to close it. */ struct pending_tcp* pending; + /** + * The more read again value pointed to by the commpoint + * tcp_more_read_again pointer, so that it exists after commpoint + * delete + */ + int cp_more_read_again; + /** + * The more write again value pointed to by the commpoint + * tcp_more_write_again pointer, so that it exists after commpoint + * delete + */ + int cp_more_write_again; /** rbtree with other queries waiting on the connection, by ID number, * of type struct waiting_tcp. It is for looking up received * answers to the structure for callback. And also to see if ID diff --git a/util/netevent.c b/util/netevent.c index 814ab6f0a..6bb51cc07 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1056,8 +1056,8 @@ reclaim_tcp_handler(struct comm_point* c) comm_point_start_listening(c->tcp_parent, -1, -1); } } - c->tcp_more_read_again = 0; - c->tcp_more_write_again = 0; + c->tcp_more_read_again = NULL; + c->tcp_more_write_again = NULL; } /** do the callback when writing is done */ @@ -1937,8 +1937,9 @@ tcp_more_read_again(int fd, struct comm_point* c) * the connection, the callback signals this, and we try again */ /* this continues until the read routines get EAGAIN or so, * and thus does not call the callback, and the bool is 0 */ - while(c->tcp_more_read_again) { - c->tcp_more_read_again = 0; + int* moreread = c->tcp_more_read_again; + while(moreread && *moreread) { + *moreread = 0; if(!comm_point_tcp_handle_read(fd, c, 0)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -1960,8 +1961,9 @@ tcp_more_write_again(int fd, struct comm_point* c) * the callback signals it and we try again. */ /* this continues until the write routines get EAGAIN or so, * and thus does not call the callback, and the bool is 0 */ - while(c->tcp_more_write_again) { - c->tcp_more_write_again = 0; + int* morewrite = c->tcp_more_write_again; + while(morewrite && *morewrite) { + *morewrite = 0; if(!comm_point_tcp_handle_write(fd, c)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -2015,6 +2017,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(event&UB_EV_READ) { int has_tcpq = (c->tcp_req_info != NULL); + int* moreread = c->tcp_more_read_again; if(!comm_point_tcp_handle_read(fd, c, 0)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -2026,12 +2029,13 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); - if(c->tcp_more_read_again) + if(moreread && *moreread) tcp_more_read_again(fd, c); return; } if(event&UB_EV_WRITE) { int has_tcpq = (c->tcp_req_info != NULL); + int* morewrite = c->tcp_more_write_again; if(!comm_point_tcp_handle_write(fd, c)) { reclaim_tcp_handler(c); if(!c->tcp_do_close) { @@ -2043,7 +2047,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); - if(c->tcp_more_write_again) + if(morewrite && *morewrite) tcp_more_write_again(fd, c); return; } diff --git a/util/netevent.h b/util/netevent.h index 75baf2177..daa954b64 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -299,13 +299,23 @@ struct comm_point { /** if set try to read another packet again (over connection with * multiple packets), once set, tries once, then zero again, - * so set it in the packet complete section. */ - int tcp_more_read_again; + * so set it in the packet complete section. + * The pointer itself has to be set before the callback is invoked, + * when you set things up, and continue to exist also after the + * commpoint is closed and deleted in your callback. So that after + * the callback cleans up netevent can see what it has to do. + * Or leave NULL if it is not used at all. */ + int* tcp_more_read_again; /** if set try to write another packet (over connection with * multiple packets), once set, tries once, then zero again, - * so set it in the packet complete section. */ - int tcp_more_write_again; + * so set it in the packet complete section. + * The pointer itself has to be set before the callback is invoked, + * when you set things up, and continue to exist also after the + * commpoint is closed and deleted in your callback. So that after + * the callback cleans up netevent can see what it has to do. + * Or leave NULL if it is not used at all. */ + int* tcp_more_write_again; /** if set, read/write completes: read/write state of tcp is toggled. From f6bf015f90a5e2e1e13b90f87d7f939ecdb37015 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 25 Nov 2020 14:03:32 +0100 Subject: [PATCH 300/394] - tag for the 1.13.0rc2 release. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 0e2c254dd..506aed34b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,7 @@ is written. - Fix readagain and writeagain callback functions for comm point cleanup. + - tag for the 1.13.0rc2 release. 24 November 2020: Wouter - Merge PR #283 : Stream reuse. This implements upstream stream From 4a8669612a6761e05d2776edc198dbd71c3b673b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Nov 2020 09:39:54 +0100 Subject: [PATCH 301/394] - Fix to omit UDP receive errors from log, if verbosity low. These happen because of udp-connect. --- doc/Changelog | 4 ++++ util/netevent.c | 31 +++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 506aed34b..9e6928963 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +26 November 2020: Wouter + - Fix to omit UDP receive errors from log, if verbosity low. + These happen because of udp-connect. + 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. - Fix udp-connect on FreeBSD, do send calls on connected UDP socket. diff --git a/util/netevent.c b/util/netevent.c index 6bb51cc07..714767324 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -579,6 +579,32 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, #endif /* AF_INET6 && IPV6_PKTINFO && HAVE_SENDMSG */ } +/** return true is UDP receive error needs to be logged */ +static int udp_recv_needs_log(int err) +{ + switch(err) { + case ECONNREFUSED: +# ifdef ENETUNREACH + case ENETUNREACH: +# endif +# ifdef EHOSTDOWN + case EHOSTDOWN: +# endif +# ifdef EHOSTUNREACH + case EHOSTUNREACH: +# endif +# ifdef ENETDOWN + case ENETDOWN: +# endif + if(verbosity >= VERB_ALGO) + return 1; + return 0; + default: + break; + } + return 1; +} + void comm_point_udp_ancil_callback(int fd, short event, void* arg) { @@ -621,7 +647,8 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) msg.msg_flags = 0; rcv = recvmsg(fd, &msg, 0); if(rcv == -1) { - if(errno != EAGAIN && errno != EINTR) { + if(errno != EAGAIN && errno != EINTR + && udp_recv_needs_log(errno)) { log_err("recvmsg failed: %s", strerror(errno)); } return; @@ -703,7 +730,7 @@ comm_point_udp_callback(int fd, short event, void* arg) if(rcv == -1) { #ifndef USE_WINSOCK if(errno != EAGAIN && errno != EINTR - && errno != ECONNREFUSED) + && udp_recv_needs_log(errno)) log_err("recvfrom %d failed: %s", fd, strerror(errno)); #else From e9810e1154277dc5174c6051b6bba33560809bed Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Nov 2020 11:00:48 +0100 Subject: [PATCH 302/394] - For #352: contrib/metrics.awk for Prometheus style metrics output. --- contrib/README | 2 + contrib/metrics.awk | 188 ++++++++++++++++++++++++++++++++++++++++++++ doc/Changelog | 1 + 3 files changed, 191 insertions(+) create mode 100644 contrib/metrics.awk diff --git a/contrib/README b/contrib/README index 9db078e56..ef2a0ab88 100644 --- a/contrib/README +++ b/contrib/README @@ -53,3 +53,5 @@ distribution but may be helpful. lookups for downstream clients. * drop2rpz: perl script that converts the Spamhaus DROP-List in RPZ-Format, contributed by Andreas Schulze. +* metrics.awk: awk script that can convert unbound-control stats to + Prometheus metrics format output. diff --git a/contrib/metrics.awk b/contrib/metrics.awk new file mode 100644 index 000000000..4c5a57585 --- /dev/null +++ b/contrib/metrics.awk @@ -0,0 +1,188 @@ +# read output of unbound-control stats +# and output prometheus metrics style output. +# use these options: +# server: extended-statistics: yes +# statistics-cumulative: no +# statistics-interval: 0 +# remote-control: control-enable: yes +# Can use it like unbound-control stats | awk -f "metrics.awk" + +BEGINFILE { + FS="="; +} +# everything like total.num.queries=value is put in val["total.num.queries"] +/^.*\..*=/ { + val[$1]=$2; +} +# print the output metrics +ENDFILE { + # sort array by index + asorti(val, sorted); + + print "# HELP unbound_hits_queries Unbound DNS traffic and cache hits" + print "# TYPE unbound_hits_queries gauge" + print "unbound_hits_queries{type=\"total.num.queries\"} " val["total.num.queries"]; + for (x=0; x<99; x++) { + if(val["thread" $x ".num.queries"] != "") { + print "unbound_hits_queries{type=\"thread" $x ".num.queries\"} " val["thread" $x ".num.queries"]; + } + } + print "unbound_hits_queries{type=\"total.num.cachehits\"} " val["total.num.cachehits"]; + print "unbound_hits_queries{type=\"total.num.prefetch\"} " val["total.num.prefetch"]; + print "unbound_hits_queries{type=\"num.query.tcp\"} " val["num.query.tcp"]; + print "unbound_hits_queries{type=\"num.query.tcpout\"} " val["num.query.tcpout"]; + print "unbound_hits_queries{type=\"num.query.tls\"} " val["num.query.tls"]; + print "unbound_hits_queries{type=\"num.query.tls.resume\"} " val["num.query.tls.resume"]; + print "unbound_hits_queries{type=\"num.query.ipv6\"} " val["num.query.ipv6"]; + print "unbound_hits_queries{type=\"unwanted.queries\"} " val["unwanted.queries"]; + print "" + + print "# HELP unbound_queue_queries Unbound requestlist size" + print "# TYPE unbound_queue_queries gauge" + print "unbound_queue_queries{type=\"total.requestlist.avg\"} " val["total.requestlist.avg"]; + print "unbound_queue_queries{type=\"total.requestlist.max\"} " val["total.requestlist.max"]; + print "unbound_queue_queries{type=\"total.requestlist.overwritten\"} " val["total.requestlist.overwritten"]; + print "unbound_queue_queries{type=\"total.requestlist.exceeded\"} " val["total.requestlist.exceeded"]; + print "" + + print "# HELP unbound_memory_bytes Unbound memory usage" + print "# TYPE unbound_memory_bytes gauge" + print "unbound_memory_bytes{type=\"mem.cache.rrset\"} " val["mem.cache.rrset"]; + print "unbound_memory_bytes{type=\"mem.cache.message\"} " val["mem.cache.message"]; + print "unbound_memory_bytes{type=\"mem.mod.iterator\"} " val["mem.mod.iterator"]; + if(val["mem.mod.validator"] != "") { + print "unbound_memory_bytes{type=\"mem.mod.validator\"} " val["mem.mod.validator"]; + } + if(val["mem.mod.respip"] != "") { + print "unbound_memory_bytes{type=\"mem.mod.respip\"} " val["mem.mod.respip"]; + } + if(val["mem.mod.subnet"] != "") { + print "unbound_memory_bytes{type=\"mem.mod.subnet\"} " val["mem.mod.subnet"]; + } + if(val["mem.mod.ipsecmod"] != "") { + print "unbound_memory_bytes{type=\"mem.mod.ipsecmod\"} " val["mem.mod.ipsecmod"]; + } + if(val["mem.mod.dynlibmod"] != "") { + print "unbound_memory_bytes{type=\"mem.mod.dynlibmod\"} " val["mem.mod.dynlibmod"]; + } + print "unbound_memory_bytes{type=\"msg.cache.count\"} " val["msg.cache.count"]; + print "unbound_memory_bytes{type=\"rrset.cache.count\"} " val["rrset.cache.count"]; + print "unbound_memory_bytes{type=\"infra.cache.count\"} " val["infra.cache.count"]; + print "unbound_memory_bytes{type=\"key.cache.count\"} " val["key.cache.count"]; + print "" + + print "# HELP unbound_by_type_queries Unbound DNS queries by type" + print "# TYPE unbound_by_type_queries gauge" + for(s in sorted) { + x = sorted[s]; + if(x ~ /^num.query.type./) { + if(val[x] != "") { + split(x, a, "."); + print "unbound_by_type_queries{type=\"" a[4] "\"} " val[x]; + } + } + } + print "" + + print "# HELP unbound_by_class_queries Unbound DNS queries by class" + print "# TYPE unbound_by_class_queries gauge" + for(s in sorted) { + x = sorted[s]; + if(x ~ /^num.query.class./) { + if(val[x] != "") { + split(x, a, "."); + print "unbound_by_class_queries{class=\"" a[4] "\"} " val[x]; + } + } + } + print "" + + print "# HELP unbound_by_opcode_queries Unbound DNS queries by opcode" + print "# TYPE unbound_by_opcode_queries gauge" + for(s in sorted) { + x = sorted[s]; + if(x ~ /^num.query.opcode./) { + if(val[x] != "") { + split(x, a, "."); + print "unbound_by_opcode_queries{opcode=\"" a[4] "\"} " val[x]; + } + } + } + print "" + + print "# HELP unbound_by_rcode_queries Unbound DNS answers by rcode" + print "# TYPE unbound_by_rcode_queries gauge" + for(s in sorted) { + x = sorted[s]; + if(x ~ /^num.answer.rcode./) { + if(val[x] != "") { + split(x, a, "."); + print "unbound_by_rcode_queries{rcode=\"" a[4] "\"} " val[x]; + } + } + } + print "" + + print "# HELP unbound_by_flags_queries Unbound DNS queries by flags" + print "# TYPE unbound_by_flags_queries gauge" + for(s in sorted) { + x = sorted[s]; + if(x ~ /^num.query.flags./) { + if(val[x] != "") { + split(x, a, "."); + print "unbound_by_flags_queries{flag=\"" a[4] "\"} " val[x]; + } + } + } + if(val["num.query.edns.present"] != "") { + print "unbound_by_flags_queries{flag=\"num.query.edns.present\"} " val["num.query.edns.present"]; + } + if(val["num.query.edns.DO"] != "") { + print "unbound_by_flags_queries{flag=\"num.query.edns.DO\"} " val["num.query.edns.DO"]; + } + print "" + + print "# HELP unbound_histogram_seconds Unbound DNS histogram of reply time" + print "# TYPE unbound_histogram_seconds gauge" + print "unbound_histogram_seconds{bucket=\"000000.000000.to.000000.000001\"} " val["histogram.000000.000000.to.000000.000001"]; + print "unbound_histogram_seconds{bucket=\"000000.000001.to.000000.000002\"} " val["histogram.000000.000001.to.000000.000002"]; + print "unbound_histogram_seconds{bucket=\"000000.000002.to.000000.000004\"} " val["histogram.000000.000002.to.000000.000004"]; + print "unbound_histogram_seconds{bucket=\"000000.000004.to.000000.000008\"} " val["histogram.000000.000004.to.000000.000008"]; + print "unbound_histogram_seconds{bucket=\"000000.000008.to.000000.000016\"} " val["histogram.000000.000008.to.000000.000016"]; + print "unbound_histogram_seconds{bucket=\"000000.000016.to.000000.000032\"} " val["histogram.000000.000016.to.000000.000032"]; + print "unbound_histogram_seconds{bucket=\"000000.000032.to.000000.000064\"} " val["histogram.000000.000032.to.000000.000064"]; + print "unbound_histogram_seconds{bucket=\"000000.000064.to.000000.000128\"} " val["histogram.000000.000064.to.000000.000128"]; + print "unbound_histogram_seconds{bucket=\"000000.000128.to.000000.000256\"} " val["histogram.000000.000128.to.000000.000256"]; + print "unbound_histogram_seconds{bucket=\"000000.000256.to.000000.000512\"} " val["histogram.000000.000256.to.000000.000512"]; + print "unbound_histogram_seconds{bucket=\"000000.000512.to.000000.001024\"} " val["histogram.000000.000512.to.000000.001024"]; + print "unbound_histogram_seconds{bucket=\"000000.001024.to.000000.002048\"} " val["histogram.000000.001024.to.000000.002048"]; + print "unbound_histogram_seconds{bucket=\"000000.002048.to.000000.004096\"} " val["histogram.000000.002048.to.000000.004096"]; + print "unbound_histogram_seconds{bucket=\"000000.004096.to.000000.008192\"} " val["histogram.000000.004096.to.000000.008192"]; + print "unbound_histogram_seconds{bucket=\"000000.008192.to.000000.016384\"} " val["histogram.000000.008192.to.000000.016384"]; + print "unbound_histogram_seconds{bucket=\"000000.016384.to.000000.032768\"} " val["histogram.000000.016384.to.000000.032768"]; + print "unbound_histogram_seconds{bucket=\"000000.032768.to.000000.065536\"} " val["histogram.000000.032768.to.000000.065536"]; + print "unbound_histogram_seconds{bucket=\"000000.065536.to.000000.131072\"} " val["histogram.000000.065536.to.000000.131072"]; + print "unbound_histogram_seconds{bucket=\"000000.131072.to.000000.262144\"} " val["histogram.000000.131072.to.000000.262144"]; + print "unbound_histogram_seconds{bucket=\"000000.262144.to.000000.524288\"} " val["histogram.000000.262144.to.000000.524288"]; + print "unbound_histogram_seconds{bucket=\"000000.524288.to.000001.000000\"} " val["histogram.000000.524288.to.000001.000000"]; + print "unbound_histogram_seconds{bucket=\"000001.000000.to.000002.000000\"} " val["histogram.000001.000000.to.000002.000000"]; + print "unbound_histogram_seconds{bucket=\"000002.000000.to.000004.000000\"} " val["histogram.000002.000000.to.000004.000000"]; + print "unbound_histogram_seconds{bucket=\"000004.000000.to.000008.000000\"} " val["histogram.000004.000000.to.000008.000000"]; + print "unbound_histogram_seconds{bucket=\"000008.000000.to.000016.000000\"} " val["histogram.000008.000000.to.000016.000000"]; + print "unbound_histogram_seconds{bucket=\"000016.000000.to.000032.000000\"} " val["histogram.000016.000000.to.000032.000000"]; + print "unbound_histogram_seconds{bucket=\"000032.000000.to.000064.000000\"} " val["histogram.000032.000000.to.000064.000000"]; + print "unbound_histogram_seconds{bucket=\"000064.000000.to.000128.000000\"} " val["histogram.000064.000000.to.000128.000000"]; + print "unbound_histogram_seconds{bucket=\"000128.000000.to.000256.000000\"} " val["histogram.000128.000000.to.000256.000000"]; + print "unbound_histogram_seconds{bucket=\"000256.000000.to.000512.000000\"} " val["histogram.000256.000000.to.000512.000000"]; + print "unbound_histogram_seconds{bucket=\"000512.000000.to.001024.000000\"} " val["histogram.000512.000000.to.001024.000000"]; + print "unbound_histogram_seconds{bucket=\"001024.000000.to.002048.000000\"} " val["histogram.001024.000000.to.002048.000000"]; + print "unbound_histogram_seconds{bucket=\"002048.000000.to.004096.000000\"} " val["histogram.002048.000000.to.004096.000000"]; + print "unbound_histogram_seconds{bucket=\"004096.000000.to.008192.000000\"} " val["histogram.004096.000000.to.008192.000000"]; + print "unbound_histogram_seconds{bucket=\"008192.000000.to.016384.000000\"} " val["histogram.008192.000000.to.016384.000000"]; + print "unbound_histogram_seconds{bucket=\"016384.000000.to.032768.000000\"} " val["histogram.016384.000000.to.032768.000000"]; + print "unbound_histogram_seconds{bucket=\"032768.000000.to.065536.000000\"} " val["histogram.032768.000000.to.065536.000000"]; + print "unbound_histogram_seconds{bucket=\"065536.000000.to.131072.000000\"} " val["histogram.065536.000000.to.131072.000000"]; + print "unbound_histogram_seconds{bucket=\"131072.000000.to.262144.000000\"} " val["histogram.131072.000000.to.262144.000000"]; + print "unbound_histogram_seconds{bucket=\"262144.000000.to.524288.000000\"} " val["histogram.262144.000000.to.524288.000000"]; + print "" +} diff --git a/doc/Changelog b/doc/Changelog index 9e6928963..a51da5106 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. These happen because of udp-connect. + - For #352: contrib/metrics.awk for Prometheus style metrics output. 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. From 67a0614db700aa6ed596a3563aff6767c69170fe Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Nov 2020 12:12:52 +0100 Subject: [PATCH 303/394] - Fix that after failed read, the readagain cannot activate. --- doc/Changelog | 1 + util/netevent.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index a51da5106..91d34a61e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix to omit UDP receive errors from log, if verbosity low. These happen because of udp-connect. - For #352: contrib/metrics.awk for Prometheus style metrics output. + - Fix that after failed read, the readagain cannot activate. 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. diff --git a/util/netevent.c b/util/netevent.c index 714767324..311a114ee 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2053,6 +2053,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } + return; } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); @@ -2071,6 +2072,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) (void)(*c->callback)(c, c->cb_arg, NETEVENT_CLOSED, NULL); } + return; } if(has_tcpq && c->tcp_req_info && c->tcp_req_info->read_again) tcp_req_info_read_again(fd, c); From 3fb0493d3f16010b5193b969e89998a005743d97 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 26 Nov 2020 12:23:18 +0100 Subject: [PATCH 304/394] - Clear readagain upon decommission of pending tcp structure. --- doc/Changelog | 1 + services/outside_network.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 91d34a61e..d0b9f223c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ These happen because of udp-connect. - For #352: contrib/metrics.awk for Prometheus style metrics output. - Fix that after failed read, the readagain cannot activate. + - Clear readagain upon decommission of pending tcp structure. 25 November 2020: Wouter - with udp-connect ignore connection refused with UDP timeouts. diff --git a/services/outside_network.c b/services/outside_network.c index 84876ff3f..72469323e 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -909,6 +909,8 @@ decommission_pending_tcp(struct outside_network* outnet, #endif } comm_point_close(pend->c); + pend->reuse.cp_more_read_again = 0; + pend->reuse.cp_more_write_again = 0; /* unlink the query and writewait list, it is part of the tree * nodes and is deleted */ pend->query = NULL; From 11139c1b4e32f6c629e9be430e9c9ec4304efcd5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Nov 2020 09:08:48 +0100 Subject: [PATCH 305/394] - Fix compile warning for type cast in http2_submit_dns_response. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index d0b9f223c..4664c3423 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +27 November 2020: Wouter + - Fix compile warning for type cast in http2_submit_dns_response. + 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. These happen because of udp-connect. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index bd87aac56..d63c0e0aa 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2208,7 +2208,7 @@ int http2_submit_dns_response(struct http2_session* h2_session) } rlen = sldns_buffer_remaining(h2_session->c->buffer); - snprintf(rlen_str, sizeof(rlen_str), "%u", rlen); + snprintf(rlen_str, sizeof(rlen_str), "%u", (unsigned)rlen); lock_basic_lock(&http2_response_buffer_count_lock); if(http2_response_buffer_count + rlen > http2_response_buffer_max) { From 8ffdbc2714fdf616e5d7c21c1ea9d14278b33791 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Nov 2020 09:57:08 +0100 Subject: [PATCH 306/394] - Fix when use free buffer to initialize rbtree for stream reuse. --- doc/Changelog | 1 + services/outside_network.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4664c3423..9de0334de 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. + - Fix when use free buffer to initialize rbtree for stream reuse. 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. diff --git a/services/outside_network.c b/services/outside_network.c index 72469323e..c26b83cc3 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -742,6 +742,11 @@ use_free_buffer(struct outside_network* outnet) w); } } else { + struct pending_tcp* pend = w->outnet->tcp_free; + rbtree_init(&pend->reuse.tree_by_id, reuse_id_cmp); + pend->reuse.pending = pend; + memcpy(&pend->reuse.addr, &w->addr, w->addrlen); + pend->reuse.addrlen = w->addrlen; if(!outnet_tcp_take_into_use(w)) { waiting_tcp_callback(w, NULL, NETEVENT_CLOSED, NULL); From 67d541d6909149a2de5e671292617bc5517bf867 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Nov 2020 10:01:55 +0100 Subject: [PATCH 307/394] - Fix compile warnings for windows. --- doc/Changelog | 1 + services/outside_network.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9de0334de..c4fbe4544 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. - Fix when use free buffer to initialize rbtree for stream reuse. + - Fix compile warnings for windows. 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. diff --git a/services/outside_network.c b/services/outside_network.c index c26b83cc3..2ced272b7 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -335,8 +335,8 @@ log_reuse_tcp(enum verbosity_value v, const char* msg, struct reuse_tcp* reuse) if(verbosity < v) return; addr_to_str(&reuse->addr, reuse->addrlen, addrbuf, sizeof(addrbuf)); port = ntohs(((struct sockaddr_in*)&reuse->addr)->sin_port); - verbose(v, "%s %s#%u 0x%llx fd %d", msg, addrbuf, (unsigned)port, - (unsigned long long)reuse, reuse->pending->c->fd); + verbose(v, "%s %s#%u fd %d", msg, addrbuf, (unsigned)port, + reuse->pending->c->fd); } /** pop the first element from the writewait list */ @@ -467,7 +467,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, key_p.reuse.node.key = &key_p.reuse; if(use_ssl) key_p.reuse.is_ssl = 1; - if(addrlen > sizeof(key_p.reuse.addr)) + if(addrlen > (socklen_t)sizeof(key_p.reuse.addr)) return NULL; memmove(&key_p.reuse.addr, addr, addrlen); key_p.reuse.addrlen = addrlen; From b2894e23a9fa68b98b5f4c3d48c8af5a8c8ad6b5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Nov 2020 10:11:14 +0100 Subject: [PATCH 308/394] - Fix compile warnings in rpz initialization. --- daemon/worker.c | 2 +- doc/Changelog | 1 + respip/respip.c | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 427ab4a92..76c4bb5b1 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -576,7 +576,7 @@ apply_respip_action(struct worker* worker, const struct query_info* qinfo, struct comm_reply* repinfo, struct ub_packed_rrset_key** alias_rrset, struct reply_info** encode_repp, struct auth_zones* az) { - struct respip_action_info actinfo = {0}; + struct respip_action_info actinfo = {0, 0, 0, 0, NULL, 0, NULL}; actinfo.action = respip_none; if(qinfo->qtype != LDNS_RR_TYPE_A && diff --git a/doc/Changelog b/doc/Changelog index c4fbe4544..355222bf4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix compile warning for type cast in http2_submit_dns_response. - Fix when use free buffer to initialize rbtree for stream reuse. - Fix compile warnings for windows. + - Fix compile warnings in rpz initialization. 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. diff --git a/respip/respip.c b/respip/respip.c index 6fa4f1885..9ee098def 100644 --- a/respip/respip.c +++ b/respip/respip.c @@ -914,7 +914,7 @@ respip_rewrite_reply(const struct query_info* qinfo, int ret = 1; struct ub_packed_rrset_key* redirect_rrset = NULL; struct rpz* r; - struct auth_zone* a; + struct auth_zone* a = NULL; struct ub_packed_rrset_key* data = NULL; int rpz_used = 0; int rpz_log = 0; @@ -1109,7 +1109,7 @@ respip_operate(struct module_qstate* qstate, enum module_ev event, int id, qstate->return_msg && qstate->return_msg->rep) { struct reply_info* new_rep = qstate->return_msg->rep; struct ub_packed_rrset_key* alias_rrset = NULL; - struct respip_action_info actinfo = {0}; + struct respip_action_info actinfo = {0, 0, 0, 0, NULL, 0, NULL}; actinfo.action = respip_none; if(!respip_rewrite_reply(&qstate->qinfo, @@ -1170,7 +1170,7 @@ respip_merge_cname(struct reply_info* base_rep, struct ub_packed_rrset_key* alias_rrset = NULL; /* ditto */ uint16_t tgt_rcode; size_t i, j; - struct respip_action_info actinfo = {0}; + struct respip_action_info actinfo = {0, 0, 0, 0, NULL, 0, NULL}; actinfo.action = respip_none; /* If the query for the CNAME target would result in an unusual rcode, From 56a80fbbf448df7c80ab54467b73bbf5608f129b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 27 Nov 2020 15:08:31 +0100 Subject: [PATCH 309/394] - Fix contrib/metrics.awk for FreeBSD awk compatibility. --- contrib/metrics.awk | 22 +++++++--------------- doc/Changelog | 1 + 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/contrib/metrics.awk b/contrib/metrics.awk index 4c5a57585..5a7a2569c 100644 --- a/contrib/metrics.awk +++ b/contrib/metrics.awk @@ -7,7 +7,7 @@ # remote-control: control-enable: yes # Can use it like unbound-control stats | awk -f "metrics.awk" -BEGINFILE { +BEGIN { FS="="; } # everything like total.num.queries=value is put in val["total.num.queries"] @@ -15,10 +15,7 @@ BEGINFILE { val[$1]=$2; } # print the output metrics -ENDFILE { - # sort array by index - asorti(val, sorted); - +END { print "# HELP unbound_hits_queries Unbound DNS traffic and cache hits" print "# TYPE unbound_hits_queries gauge" print "unbound_hits_queries{type=\"total.num.queries\"} " val["total.num.queries"]; @@ -73,8 +70,7 @@ ENDFILE { print "# HELP unbound_by_type_queries Unbound DNS queries by type" print "# TYPE unbound_by_type_queries gauge" - for(s in sorted) { - x = sorted[s]; + for(x in val) { if(x ~ /^num.query.type./) { if(val[x] != "") { split(x, a, "."); @@ -86,8 +82,7 @@ ENDFILE { print "# HELP unbound_by_class_queries Unbound DNS queries by class" print "# TYPE unbound_by_class_queries gauge" - for(s in sorted) { - x = sorted[s]; + for(x in val) { if(x ~ /^num.query.class./) { if(val[x] != "") { split(x, a, "."); @@ -99,8 +94,7 @@ ENDFILE { print "# HELP unbound_by_opcode_queries Unbound DNS queries by opcode" print "# TYPE unbound_by_opcode_queries gauge" - for(s in sorted) { - x = sorted[s]; + for(x in val) { if(x ~ /^num.query.opcode./) { if(val[x] != "") { split(x, a, "."); @@ -112,8 +106,7 @@ ENDFILE { print "# HELP unbound_by_rcode_queries Unbound DNS answers by rcode" print "# TYPE unbound_by_rcode_queries gauge" - for(s in sorted) { - x = sorted[s]; + for(x in val) { if(x ~ /^num.answer.rcode./) { if(val[x] != "") { split(x, a, "."); @@ -125,8 +118,7 @@ ENDFILE { print "# HELP unbound_by_flags_queries Unbound DNS queries by flags" print "# TYPE unbound_by_flags_queries gauge" - for(s in sorted) { - x = sorted[s]; + for(x in val) { if(x ~ /^num.query.flags./) { if(val[x] != "") { split(x, a, "."); diff --git a/doc/Changelog b/doc/Changelog index 355222bf4..1019e32ae 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix when use free buffer to initialize rbtree for stream reuse. - Fix compile warnings for windows. - Fix compile warnings in rpz initialization. + - Fix contrib/metrics.awk for FreeBSD awk compatibility. 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. From e4bdc527baab8ed7aea6af3b9851ce4da241a1b7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 30 Nov 2020 09:41:33 +0100 Subject: [PATCH 310/394] - Fix assertion failure on double callback when iterator loses interest in query at head of line that then has the tcp stream not kept for reuse. --- doc/Changelog | 5 +++++ services/outside_network.c | 4 +--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 1019e32ae..b1146761f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +30 November 2020: Wouter + - Fix assertion failure on double callback when iterator loses + interest in query at head of line that then has the tcp stream + not kept for reuse. + 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. - Fix when use free buffer to initialize rbtree for stream reuse. diff --git a/services/outside_network.c b/services/outside_network.c index 2ced272b7..11951adea 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2321,9 +2321,7 @@ reuse_tcp_remove_serviced_keep(struct waiting_tcp* w, * the stream itself. also keep it as an entry in the tree_by_id, * in case the answer returns (that we no longer want), but we cannot * pick the same ID number meanwhile */ - if(pend_tcp->query) { - pend_tcp->query->cb = NULL; - } + w->cb = NULL; /* see if can be entered in reuse tree * for that the FD has to be non-1 */ if(pend_tcp->c->fd == -1) { From 174bb48ae899712d7b7f0a37f3291ba47822fefd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 30 Nov 2020 12:52:04 +0100 Subject: [PATCH 311/394] Changelog entry for rc tags 1.13.0rc3 and rc4. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b1146761f..1622dd2b5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix assertion failure on double callback when iterator loses interest in query at head of line that then has the tcp stream not kept for reuse. + - tag for the 1.13.0rc4 release. 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. @@ -9,6 +10,7 @@ - Fix compile warnings for windows. - Fix compile warnings in rpz initialization. - Fix contrib/metrics.awk for FreeBSD awk compatibility. + - tag for the 1.13.0rc3 release. 26 November 2020: Wouter - Fix to omit UDP receive errors from log, if verbosity low. From 5906811ff19f005110b2edbda5aa144ad5fa05b1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 1 Dec 2020 09:09:13 +0100 Subject: [PATCH 312/394] - Fix #358: Squelch udp connect 'no route to host' errors on low verbosity. --- doc/Changelog | 4 ++++ services/outside_network.c | 35 ++++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 1622dd2b5..30b8d34a1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +1 December 2020: Wouter + - Fix #358: Squelch udp connect 'no route to host' errors on low + verbosity. + 30 November 2020: Wouter - Fix assertion failure on double callback when iterator loses interest in query at head of line that then has the tcp stream diff --git a/services/outside_network.c b/services/outside_network.c index 11951adea..0886907f7 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1745,6 +1745,33 @@ select_id(struct outside_network* outnet, struct pending* pend, return 1; } +/** return true is UDP connect error needs to be logged */ +static int udp_connect_needs_log(int err) +{ + switch(err) { + case ECONNREFUSED: +# ifdef ENETUNREACH + case ENETUNREACH: +# endif +# ifdef EHOSTDOWN + case EHOSTDOWN: +# endif +# ifdef EHOSTUNREACH + case EHOSTUNREACH: +# endif +# ifdef ENETDOWN + case ENETDOWN: +# endif + if(verbosity >= VERB_ALGO) + return 1; + return 0; + default: + break; + } + return 1; +} + + /** Select random interface and port */ static int select_ifport(struct outside_network* outnet, struct pending* pend, @@ -1804,9 +1831,11 @@ select_ifport(struct outside_network* outnet, struct pending* pend, /* connect() to the destination */ if(connect(fd, (struct sockaddr*)&pend->addr, pend->addrlen) < 0) { - log_err_addr("udp connect failed", - strerror(errno), &pend->addr, - pend->addrlen); + if(udp_connect_needs_log(errno)) { + log_err_addr("udp connect failed", + strerror(errno), &pend->addr, + pend->addrlen); + } sock_close(fd); return 0; } From ddb751751cc2a1799c3b55d9af162e5b5950e178 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 1 Dec 2020 15:19:17 +0100 Subject: [PATCH 313/394] NSID for Unbound --- util/config_file.c | 51 + util/config_file.h | 14 + util/configlexer.c | 4703 ++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 4885 ++++++++++++++++++++---------------------- util/configparser.h | 625 +++--- util/configparser.y | 20 +- util/edns.c | 5 + 8 files changed, 5132 insertions(+), 5172 deletions(-) diff --git a/util/config_file.c b/util/config_file.c index 4c827b74e..6f662b6d9 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -237,6 +237,9 @@ config_create(void) cfg->hide_trustanchor = 0; cfg->identity = NULL; cfg->version = NULL; + cfg->nsid_cfg_str = NULL; + cfg->nsid = NULL; + cfg->nsid_len = 0; cfg->auto_trust_anchor_file_list = NULL; cfg->trust_anchor_file_list = NULL; cfg->trust_anchor_list = NULL; @@ -580,6 +583,20 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_YNO("hide-trustanchor:", hide_trustanchor) else S_STR("identity:", identity) else S_STR("version:", version) + else if(strcmp(opt, "nsid:") == 0) { + free(cfg->nsid_cfg_str); + if (!(cfg->nsid_cfg_str = strdup(val))) + return 0; + /* Empty string is just validly unsetting nsid */ + if (*val == 0) { + free(cfg->nsid); + cfg->nsid = NULL; + cfg->nsid_len = 0; + return 1; + } + cfg->nsid = cfg_parse_nsid(val, &cfg->nsid_len); + return cfg->nsid != NULL; + } else S_STRLIST("root-hints:", root_hints) else S_STR("target-fetch-policy:", target_fetch_policy) else S_YNO("harden-glue:", harden_glue) @@ -1015,6 +1032,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_YNO(opt, "hide-trustanchor", hide_trustanchor) else O_STR(opt, "identity", identity) else O_STR(opt, "version", version) + else O_STR(opt, "nsid", nsid_cfg_str) else O_STR(opt, "target-fetch-policy", target_fetch_policy) else O_YNO(opt, "harden-short-bufsize", harden_short_bufsize) else O_YNO(opt, "harden-large-queries", harden_large_queries) @@ -1482,6 +1500,8 @@ config_delete(struct config_file* cfg) #endif free(cfg->identity); free(cfg->version); + free(cfg->nsid_cfg_str); + free(cfg->nsid); free(cfg->module_conf); free(cfg->outgoing_avail_ports); config_delstrlist(cfg->caps_whitelist); @@ -2020,6 +2040,37 @@ uint8_t* config_parse_taglist(struct config_file* cfg, char* str, return taglist; } +uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len) +{ + uint8_t* nsid = NULL; + + if (strncasecmp(str, "ascii_", 6) == 0) { + if ((nsid = (uint8_t *)strdup(str + 6))) + *nsid_len = strlen(str + 6); + + } else if (strlen(str) % 2) + ; /* hex string has even number of characters */ + + else if (*str && (nsid = calloc(1, strlen(str) / 2))) { + const char *ch; + uint8_t *dp; + + for ( ch = str, dp = nsid + ; isxdigit(ch[0]) && isxdigit(ch[1]) + ; ch += 2, dp++) { + *dp = (uint8_t)sldns_hexdigit_to_int(ch[0]) * 16; + *dp += (uint8_t)sldns_hexdigit_to_int(ch[1]); + } + if (*ch) { + free(nsid); + nsid = NULL; + } else + *nsid_len = strlen(str) / 2; + } + return nsid; +} + + char* config_taglist2str(struct config_file* cfg, uint8_t* taglist, size_t taglen) { diff --git a/util/config_file.h b/util/config_file.h index 556544021..05b12fbaa 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -338,6 +338,10 @@ struct config_file { char* identity; /** version, package version returned if "". */ char* version; + /** nsid */ + char *nsid_cfg_str; + uint8_t *nsid; + uint16_t nsid_len; /** the module configuration string */ char* module_conf; @@ -1070,6 +1074,16 @@ int cfg_count_numbers(const char* str); */ int cfg_parse_memsize(const char* str, size_t* res); +/** + * Parse nsid from string into binary nsid. nsid is either a hexidecimal + * string or an ascii string prepended with ascii_ in which case the + * characters after ascii_ are simply copied. + * @param str: the string to parse. + * @param nsid_len: returns length of nsid in bytes. + * @return malloced bytes or NULL on parse error or malloc failure. + */ +uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len); + /** * Add a tag name to the config. It is added at the end with a new ID value. * @param cfg: the config structure. diff --git a/util/configlexer.c b/util/configlexer.c index f845e2057..4235cd04a 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 337 -#define YY_END_OF_BUFFER 338 +#define YY_NUM_RULES 338 +#define YY_END_OF_BUFFER 339 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,370 +363,370 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3292] = +static const flex_int16_t yy_accept[3296] = { 0, - 1, 1, 311, 311, 315, 315, 319, 319, 323, 323, - 1, 1, 327, 327, 331, 331, 338, 335, 1, 309, - 309, 336, 2, 336, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 311, 312, 312, 313, - 336, 315, 316, 316, 317, 336, 322, 319, 320, 320, - 321, 336, 323, 324, 324, 325, 336, 334, 310, 2, - 314, 336, 334, 330, 327, 328, 328, 329, 336, 331, - 332, 332, 333, 336, 335, 0, 1, 2, 2, 2, - 2, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 1, 1, 312, 312, 316, 316, 320, 320, 324, 324, + 1, 1, 328, 328, 332, 332, 339, 336, 1, 310, + 310, 337, 2, 337, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 312, 313, 313, 314, + 337, 316, 317, 317, 318, 337, 323, 320, 321, 321, + 322, 337, 324, 325, 325, 326, 337, 335, 311, 2, + 315, 337, 335, 331, 328, 329, 329, 330, 337, 332, + 333, 333, 334, 337, 336, 0, 1, 2, 2, 2, + 2, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 311, 0, 315, - 0, 322, 0, 319, 323, 0, 334, 0, 2, 2, - 334, 330, 0, 327, 331, 0, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 312, 0, + 316, 0, 323, 0, 320, 324, 0, 335, 0, 2, + 2, 335, 331, 0, 328, 332, 0, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 125, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 134, 335, 335, 335, 335, 335, 335, - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 125, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 134, 336, 336, 336, + 336, 336, 336, 336, 335, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 109, 335, 335, 335, 335, 335, 335, 8, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 126, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 109, 336, 309, 336, 336, 336, 336, + 336, 8, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 139, 335, - 334, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 302, 335, + 336, 126, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 139, 336, 335, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 302, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 64, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 238, - 335, 14, 15, 335, 19, 18, 335, 335, 222, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 132, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 335, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 64, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 238, 336, 14, 15, 336, 19, 18, + 336, 336, 222, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 132, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 220, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 3, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 334, 335, 335, 335, - 335, 335, 335, 335, 296, 335, 335, 295, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 220, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 3, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 335, 336, 336, 336, 336, 336, 336, 336, 296, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 318, 335, 335, 335, 335, - 335, 335, 335, 335, 63, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 67, 335, 269, 335, 335, 335, 335, 335, 335, - 335, 335, 303, 304, 335, 335, 335, 335, 335, 68, + 336, 295, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 319, + 336, 336, 336, 336, 336, 336, 336, 336, 63, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 67, 336, 269, 336, 336, + 336, 336, 336, 336, 336, 336, 303, 304, 336, 336, - 335, 335, 133, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 129, 335, 335, - 335, 335, 335, 335, 335, 335, 209, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 21, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 158, 335, 335, - 334, 318, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 68, 336, 336, 133, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 129, 336, 336, 336, 336, 336, 336, 336, 336, + 209, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 21, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 158, 336, 336, 335, 319, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 107, 335, 335, 335, 335, 335, 335, - 335, 277, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 181, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 157, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 107, 336, 336, + 336, 336, 336, 336, 336, 277, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 181, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 157, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 106, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 32, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 33, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 65, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 131, 334, 335, 335, - 335, 335, 335, 124, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 66, + 336, 336, 336, 336, 336, 336, 106, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 32, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 33, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 65, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 131, 335, 336, 336, 336, 336, 336, 124, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 242, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 182, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 54, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 66, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 242, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 182, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 54, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 260, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 58, 335, 59, 335, 335, 335, - 335, 335, 110, 335, 111, 335, 335, 335, 335, 108, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 7, - 335, 334, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 260, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 58, 336, + 59, 336, 336, 336, 336, 336, 110, 336, 111, 336, + 336, 336, 336, 108, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 7, 336, 335, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 231, 335, 335, 335, 335, 160, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 243, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 45, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 55, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 201, 335, 200, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 231, 336, 336, 336, 336, 160, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 243, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 45, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 55, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 201, 336, + 200, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 16, 17, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 69, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 208, 335, 335, 335, 335, 335, 335, 113, 335, 112, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 192, 335, 335, 335, 335, 335, 335, 335, - 335, 140, 334, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 101, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 16, 17, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 69, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 208, 336, 336, 336, 336, 336, + 336, 113, 336, 112, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 192, 336, 336, 336, + 336, 336, 336, 336, 336, 140, 335, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 101, 336, 336, - 335, 335, 335, 89, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 221, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 94, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 62, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 195, - 196, 335, 335, 335, 271, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 89, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 221, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 94, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 62, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 195, 196, 336, 336, 336, 271, 336, - 335, 335, 335, 335, 335, 335, 335, 6, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 275, - 335, 335, 335, 335, 335, 335, 297, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 42, 335, 335, - 335, 335, 44, 335, 335, 335, 90, 335, 335, 335, - 335, 335, 52, 335, 335, 335, 335, 335, 335, 335, - 334, 335, 188, 335, 335, 335, 135, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 213, 335, 189, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 6, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 275, 336, 336, 336, 336, 336, 336, + 297, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 42, 336, 336, 336, 336, 44, 336, 336, 336, + 90, 336, 336, 336, 336, 336, 52, 336, 336, 336, + 336, 336, 336, 336, 335, 336, 188, 336, 336, 336, + 135, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 228, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 53, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 137, 118, 335, 119, 335, - 335, 335, 117, 335, 335, 335, 335, 335, 335, 335, - 335, 155, 335, 335, 50, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 259, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 190, 335, 335, 335, 335, 335, 193, 335, 199, - 335, 335, 335, 335, 335, 227, 335, 335, 335, 335, + 336, 213, 336, 189, 336, 336, 336, 228, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 53, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 137, + 118, 336, 119, 336, 336, 336, 117, 336, 336, 336, + 336, 336, 336, 336, 336, 155, 336, 336, 50, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 259, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 190, 336, 336, 336, 336, + 336, 193, 336, 199, 336, 336, 336, 336, 336, 227, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 105, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 130, - 335, 335, 335, 335, 335, 335, 60, 335, 335, 335, - 26, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 20, 335, 335, 335, 335, 335, 335, 27, 36, 335, - 165, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 334, 335, 335, 335, 335, 335, - 335, 77, 79, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 279, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 105, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 130, 336, 336, 336, 336, 336, 336, + 60, 336, 336, 336, 26, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 20, 336, 336, 336, 336, 336, + 336, 27, 36, 336, 165, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 335, 336, + 336, 336, 336, 336, 336, 77, 79, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 239, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 120, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 154, 335, 46, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 290, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 159, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 219, 335, 335, 335, 335, 335, 335, 335, 335, + 279, 336, 336, 336, 336, 239, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 120, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 154, 336, + 46, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 290, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 159, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 219, 336, 336, 336, 336, - 335, 300, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 176, 335, 335, 335, 335, 335, 335, - 335, 335, 114, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 171, 335, 183, 335, 335, 335, 335, 334, - 335, 143, 335, 335, 335, 335, 335, 100, 335, 335, - 335, 335, 211, 335, 335, 335, 335, 335, 335, 229, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 251, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 136, 335, 335, + 336, 336, 336, 336, 336, 300, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 176, 336, 336, + 336, 336, 336, 336, 336, 336, 114, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 171, 336, 183, 336, + 336, 336, 336, 335, 336, 143, 336, 336, 336, 336, + 336, 100, 336, 336, 336, 336, 211, 336, 336, 336, + 336, 336, 336, 229, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 251, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 175, 335, 335, 335, 335, 335, 335, 80, - 335, 81, 335, 335, 335, 335, 335, 61, 293, 335, - 335, 335, 335, 335, 88, 184, 335, 202, 335, 232, - 335, 335, 194, 272, 335, 335, 335, 335, 335, 73, - 335, 186, 335, 335, 335, 335, 335, 9, 335, 335, - 335, 104, 335, 335, 335, 335, 264, 335, 335, 335, - 335, 210, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, + 336, 136, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 175, 336, 336, 336, + 336, 336, 336, 80, 336, 81, 336, 336, 336, 336, + 336, 61, 293, 336, 336, 336, 336, 336, 88, 184, + 336, 202, 336, 232, 336, 336, 194, 272, 336, 336, + 336, 336, 336, 73, 336, 186, 336, 336, 336, 336, + 336, 9, 336, 336, 336, 104, 336, 336, 336, 336, + 264, 336, 336, 336, 336, 210, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 334, 335, 335, - 335, 335, 174, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 161, 335, 278, 335, 335, 335, 335, - 335, 250, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 223, 335, 335, 335, 335, 335, 270, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 294, 335, 185, 335, 335, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 335, 336, 336, 336, 336, 174, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 161, 336, 278, + 336, 336, 336, 336, 336, 250, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 223, 336, 336, + 336, 336, 336, 270, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 294, 336, 185, 336, 336, 336, - 72, 74, 335, 335, 335, 335, 335, 335, 335, 103, - 335, 335, 335, 335, 262, 335, 335, 335, 335, 274, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 215, 34, 28, 30, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 35, 335, 29, 31, 335, 335, - 335, 335, 335, 335, 335, 335, 99, 335, 335, 335, - 335, 335, 335, 334, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 217, 214, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 71, 335, 335, 335, 138, + 336, 336, 336, 336, 72, 74, 336, 336, 336, 336, + 336, 336, 336, 103, 336, 336, 336, 336, 262, 336, + 336, 336, 336, 274, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 215, 34, 28, 30, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 35, 336, + 29, 31, 336, 336, 336, 336, 336, 336, 336, 336, + 99, 336, 336, 336, 336, 336, 336, 335, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 217, + 214, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 71, - 335, 121, 335, 335, 335, 335, 335, 335, 335, 335, - 156, 47, 335, 335, 335, 326, 13, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 288, 335, 291, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 12, 335, 335, 22, 335, 335, 335, 268, 335, 335, - 335, 335, 276, 335, 335, 335, 75, 335, 225, 335, - 335, 335, 335, 216, 335, 335, 70, 335, 335, 335, - 335, 23, 335, 43, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 170, 169, 326, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 218, 212, + 336, 336, 336, 138, 336, 121, 336, 336, 336, 336, + 336, 336, 336, 336, 156, 47, 336, 336, 336, 327, + 13, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 288, 336, 291, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 12, 336, 336, 22, 336, 336, + 336, 268, 336, 336, 336, 336, 276, 336, 336, 336, + 75, 336, 225, 336, 336, 336, 336, 216, 336, 336, + 70, 336, 336, 336, 336, 23, 336, 43, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 170, 169, 327, 336, 336, 336, 336, 336, 336, 336, - 335, 230, 335, 335, 280, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 82, 335, 335, - 335, 335, 263, 335, 335, 335, 335, 198, 335, 335, - 335, 335, 224, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 298, 299, 167, 335, 335, 76, 335, 335, - 335, 335, 177, 335, 335, 115, 116, 335, 335, 335, - 335, 162, 335, 164, 335, 203, 335, 335, 335, 335, - 168, 335, 335, 233, 335, 335, 335, 335, 335, 335, + 336, 336, 218, 212, 336, 230, 336, 336, 280, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 82, 336, 336, 336, 336, 263, 336, 336, 336, + 336, 198, 336, 336, 336, 336, 224, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 298, 299, 167, 336, + 336, 76, 336, 336, 336, 336, 177, 336, 336, 115, + 116, 336, 336, 336, 336, 162, 336, 164, 336, 203, + 336, 336, 336, 336, 168, 336, 336, 233, 336, 336, - 335, 145, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 241, 335, 335, 335, 335, 335, - 335, 335, 307, 335, 24, 335, 273, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 86, 204, 335, 335, 261, 335, 292, 335, 197, - 335, 335, 335, 335, 56, 335, 335, 335, 335, 4, - 335, 335, 335, 335, 128, 144, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 236, 37, 38, 335, 335, 335, - 335, 335, 335, 335, 281, 335, 335, 335, 335, 335, + 336, 336, 336, 336, 336, 145, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 241, 336, + 336, 336, 336, 336, 336, 336, 307, 336, 24, 336, + 273, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 86, 204, 336, 336, 261, + 336, 292, 336, 197, 336, 336, 336, 336, 56, 336, + 336, 336, 336, 4, 336, 336, 336, 336, 128, 144, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 236, 37, + 38, 336, 336, 336, 336, 336, 336, 336, 281, 336, - 335, 335, 249, 335, 335, 335, 335, 335, 335, 335, - 335, 207, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 85, 335, 57, 267, 335, 237, - 335, 335, 335, 335, 11, 335, 335, 335, 335, 335, - 335, 127, 335, 335, 335, 335, 205, 91, 335, 40, - 335, 335, 335, 335, 335, 335, 335, 335, 173, 335, - 335, 335, 335, 335, 147, 335, 335, 335, 335, 240, - 335, 335, 335, 335, 335, 248, 335, 335, 335, 335, - 141, 335, 335, 335, 122, 123, 335, 335, 335, 93, - 97, 92, 335, 335, 335, 335, 83, 335, 335, 335, + 336, 336, 336, 336, 336, 336, 249, 336, 336, 336, + 336, 336, 336, 336, 336, 207, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 85, 336, + 57, 267, 336, 237, 336, 336, 336, 336, 11, 336, + 336, 336, 336, 336, 336, 127, 336, 336, 336, 336, + 205, 91, 336, 40, 336, 336, 336, 336, 336, 336, + 336, 336, 173, 336, 336, 336, 336, 336, 147, 336, + 336, 336, 336, 240, 336, 336, 336, 336, 336, 248, + 336, 336, 336, 336, 141, 336, 336, 336, 122, 123, + 336, 336, 336, 93, 97, 92, 336, 336, 336, 336, - 335, 335, 10, 335, 335, 335, 265, 301, 335, 335, - 335, 335, 306, 39, 335, 335, 335, 335, 335, 172, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 98, 96, 335, 51, 335, 335, 84, - 289, 335, 335, 335, 335, 335, 335, 335, 191, 335, - 335, 335, 335, 335, 206, 335, 335, 335, 335, 335, - 335, 335, 335, 163, 78, 335, 335, 335, 335, 335, - 282, 335, 335, 335, 335, 335, 335, 335, 245, 335, - 335, 244, 142, 335, 335, 95, 48, 335, 148, 149, + 83, 336, 336, 336, 336, 336, 10, 336, 336, 336, + 265, 301, 336, 336, 336, 336, 306, 39, 336, 336, + 336, 336, 336, 172, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 98, 96, 336, + 51, 336, 336, 84, 289, 336, 336, 336, 336, 336, + 336, 336, 191, 336, 336, 336, 336, 336, 206, 336, + 336, 336, 336, 336, 336, 336, 336, 163, 78, 336, + 336, 336, 336, 336, 282, 336, 336, 336, 336, 336, + 336, 336, 245, 336, 336, 244, 142, 336, 336, 95, - 152, 153, 150, 151, 87, 335, 266, 335, 335, 335, - 335, 166, 335, 335, 335, 335, 335, 235, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 179, 178, 41, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 102, 335, 234, 335, - 258, 286, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 308, 335, 49, 5, 335, 335, 226, - 335, 335, 287, 335, 335, 335, 335, 335, 335, 335, + 48, 336, 148, 149, 152, 153, 150, 151, 87, 336, + 266, 336, 336, 336, 336, 166, 336, 336, 336, 336, + 336, 235, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 179, 178, 41, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 102, 336, 234, 336, 258, 286, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 308, 336, 49, + 5, 336, 336, 226, 336, 336, 287, 336, 336, 336, - 335, 335, 246, 25, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 247, 335, 335, 335, - 146, 335, 335, 335, 335, 335, 335, 335, 335, 180, - 335, 187, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 283, 335, 335, 335, 335, 335, 335, 335, 335, - 335, 335, 335, 335, 335, 335, 335, 335, 335, 305, - 335, 335, 254, 335, 335, 335, 335, 335, 284, 335, - 335, 335, 335, 335, 335, 285, 335, 335, 335, 252, - 335, 255, 256, 335, 335, 335, 335, 335, 253, 257, - 0 + 336, 336, 336, 336, 336, 336, 246, 25, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 247, 336, 336, 336, 146, 336, 336, 336, 336, 336, + 336, 336, 336, 180, 336, 187, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 283, 336, 336, 336, 336, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 336, 336, 305, 336, 336, 254, 336, 336, 336, + 336, 336, 284, 336, 336, 336, 336, 336, 336, 285, + 336, 336, 336, 252, 336, 255, 256, 336, 336, 336, + 336, 336, 253, 257, 0 } ; @@ -770,743 +770,745 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3310] = +static const flex_int16_t yy_base[3314] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 3493, 3402, 81, 6426, - 6426, 6426, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 2992, 2881, 81, 6437, + 6437, 6437, 129, 52, 130, 63, 131, 152, 70, 140, 149, 156, 57, 88, 76, 173, 175, 95, 184, 145, - 185, 205, 194, 204, 178, 123, 3176, 6426, 6426, 6426, - 107, 2960, 6426, 6426, 6426, 154, 2373, 2342, 6426, 6426, - 6426, 226, 2208, 6426, 6426, 6426, 163, 2071, 6426, 238, - 6426, 242, 148, 1858, 1710, 6426, 6426, 6426, 246, 1553, - 6426, 6426, 6426, 250, 1440, 254, 219, 0, 258, 0, - 0, 165, 250, 191, 215, 243, 252, 256, 92, 260, + 185, 205, 211, 217, 178, 123, 2560, 6437, 6437, 6437, + 107, 2496, 6437, 6437, 6437, 154, 2163, 1764, 6437, 6437, + 6437, 249, 1649, 6437, 6437, 6437, 163, 1451, 6437, 253, + 6437, 257, 148, 1354, 1226, 6437, 6437, 6437, 261, 1170, + 6437, 6437, 6437, 207, 1091, 267, 203, 0, 271, 0, + 0, 165, 204, 215, 206, 207, 216, 265, 92, 263, - 261, 262, 264, 265, 266, 273, 270, 277, 278, 281, - 271, 279, 290, 288, 296, 295, 299, 310, 303, 306, - 313, 314, 307, 323, 317, 312, 328, 326, 330, 334, - 337, 340, 342, 343, 344, 346, 349, 354, 348, 356, - 364, 357, 361, 359, 372, 376, 365, 360, 377, 380, - 384, 385, 387, 388, 391, 399, 389, 1400, 411, 1086, - 415, 984, 422, 871, 689, 426, 406, 430, 434, 0, - 411, 280, 438, 233, 181, 442, 430, 442, 419, 438, - 439, 441, 440, 443, 444, 445, 446, 449, 463, 455, - 456, 467, 471, 472, 469, 476, 474, 460, 482, 488, + 269, 273, 256, 267, 276, 284, 277, 280, 282, 288, + 286, 290, 226, 292, 228, 296, 303, 311, 298, 313, + 321, 301, 315, 234, 319, 314, 332, 331, 333, 316, + 334, 337, 335, 342, 343, 348, 345, 354, 355, 350, + 356, 366, 359, 368, 371, 360, 379, 374, 377, 364, + 382, 389, 387, 388, 392, 395, 401, 394, 962, 412, + 919, 417, 872, 426, 749, 518, 430, 357, 434, 438, + 0, 415, 293, 442, 244, 181, 446, 434, 446, 405, + 441, 442, 443, 444, 445, 447, 448, 449, 451, 465, + 458, 463, 470, 467, 474, 475, 480, 473, 478, 482, - 484, 481, 491, 494, 495, 497, 502, 503, 505, 504, - 506, 507, 523, 510, 499, 509, 532, 530, 534, 539, - 535, 542, 544, 537, 551, 547, 554, 556, 557, 508, - 559, 546, 561, 549, 560, 563, 569, 570, 572, 573, - 575, 583, 580, 578, 584, 581, 592, 590, 597, 593, - 594, 598, 601, 604, 612, 616, 602, 623, 607, 614, - 624, 627, 635, 636, 631, 615, 632, 622, 639, 640, - 641, 642, 643, 651, 652, 644, 654, 662, 655, 657, - 660, 663, 664, 665, 673, 676, 680, 668, 684, 674, - 685, 687, 675, 683, 693, 695, 694, 697, 707, 700, + 486, 476, 490, 498, 499, 500, 493, 501, 502, 504, + 506, 507, 508, 522, 520, 511, 514, 533, 534, 538, + 543, 529, 545, 547, 536, 552, 548, 560, 551, 564, + 559, 550, 561, 562, 565, 568, 569, 570, 573, 575, + 572, 576, 574, 586, 588, 579, 591, 589, 602, 598, + 605, 600, 601, 409, 603, 607, 610, 615, 608, 618, + 613, 619, 623, 629, 632, 636, 635, 621, 634, 631, + 638, 640, 641, 642, 645, 652, 655, 651, 653, 665, + 660, 662, 663, 664, 666, 667, 677, 669, 680, 683, + 673, 679, 685, 687, 689, 691, 690, 694, 695, 699, - 708, 709, 710, 712, 717, 715, 719, 727, 705, 722, - 723, 605, 728, 731, 724, 726, 732, 735, 736, 738, - 745, 743, 747, 749, 750, 766, 754, 739, 759, 767, - 758, 760, 768, 774, 793, 779, 781, 789, 790, 791, - 795, 797, 805, 807, 796, 809, 803, 810, 812, 813, - 822, 818, 6426, 817, 820, 833, 826, 834, 835, 836, - 841, 842, 823, 849, 847, 848, 852, 874, 856, 863, - 854, 864, 858, 6426, 867, 868, 898, 881, 871, 889, - 885, 878, 887, 892, 894, 902, 911, 904, 908, 909, - 922, 915, 919, 924, 918, 927, 925, 935, 936, 931, + 702, 700, 707, 709, 716, 713, 718, 715, 727, 728, + 703, 712, 724, 725, 731, 726, 733, 735, 736, 740, + 741, 743, 746, 744, 754, 750, 752, 767, 759, 757, + 760, 769, 770, 778, 771, 792, 799, 777, 763, 788, + 781, 797, 800, 802, 807, 803, 810, 813, 814, 815, + 816, 817, 818, 826, 822, 6437, 821, 824, 836, 838, + 839, 842, 832, 848, 831, 852, 855, 857, 854, 862, + 884, 858, 860, 861, 873, 866, 6437, 874, 868, 908, + 879, 886, 897, 892, 904, 870, 899, 906, 890, 918, + 902, 901, 916, 932, 929, 913, 917, 931, 935, 938, - 934, 941, 948, 943, 945, 947, 956, 949, 950, 957, - 958, 769, 960, 967, 970, 964, 959, 975, 976, 977, - 979, 982, 983, 987, 985, 998, 1005, 999, 1012, 986, - 1010, 1011, 1014, 1013, 1019, 1020, 1022, 1024, 1025, 1027, - 1028, 1032, 1033, 1031, 1034, 1036, 1038, 1044, 1042, 1047, - 1048, 1049, 1056, 1058, 1051, 1064, 1052, 1050, 1068, 1060, - 6426, 1072, 1070, 1075, 1076, 1074, 1077, 6426, 1078, 1079, - 1080, 1081, 1090, 1092, 1093, 1099, 1088, 1103, 1105, 1106, - 1107, 1115, 1110, 1113, 1118, 1117, 1119, 1121, 1123, 1125, - 1127, 1126, 1128, 1134, 1135, 1138, 1155, 6426, 1137, 1145, + 945, 941, 943, 944, 947, 954, 949, 950, 955, 967, + 951, 957, 959, 958, 968, 976, 977, 980, 982, 969, + 985, 986, 987, 989, 992, 993, 997, 995, 1008, 990, + 1009, 1021, 1016, 1017, 1020, 1019, 1025, 1026, 1027, 1029, + 1032, 1033, 1034, 1035, 1045, 1040, 1041, 1043, 1048, 1049, + 1050, 1055, 1052, 1057, 1058, 1060, 1061, 1062, 1068, 1066, + 1073, 1076, 1078, 6437, 1079, 6437, 1081, 1082, 1083, 1084, + 1085, 6437, 1087, 1088, 1089, 1096, 1099, 1086, 1114, 1098, + 1101, 1111, 1113, 1112, 1117, 1124, 1120, 1125, 1127, 1123, + 1129, 1130, 1133, 1131, 1136, 1138, 1139, 1142, 1143, 1146, - 1142, 1139, 1148, 1149, 1167, 1147, 1165, 1166, 1159, 1179, - 1177, 1178, 1180, 1186, 1187, 1188, 1190, 1195, 1191, 1140, - 1193, 1197, 1198, 1199, 1201, 1200, 1202, 1205, 6426, 1203, - 1214, 1227, 1213, 1222, 1223, 1224, 1226, 1228, 1229, 1230, - 1232, 1231, 1236, 1240, 1251, 1235, 1254, 1249, 1250, 1252, - 1256, 1257, 1260, 1258, 1259, 1270, 1265, 1273, 1280, 1282, - 1284, 1286, 1287, 1294, 1268, 1290, 1292, 1291, 1297, 1298, - 1300, 1299, 1301, 1307, 1305, 1314, 1311, 1310, 1312, 1313, - 1318, 1320, 1321, 1325, 1322, 1323, 1337, 1329, 1332, 1333, - 1339, 1347, 1340, 1349, 1350, 1351, 1352, 1353, 6426, 1360, + 1163, 6437, 1147, 1150, 1151, 1149, 1156, 1157, 1175, 1166, + 1173, 1174, 1176, 1192, 1187, 1188, 1191, 1195, 1196, 1198, + 1200, 1205, 1207, 1148, 1208, 1201, 1209, 1210, 1203, 1211, + 1213, 1221, 6437, 1217, 1229, 1238, 1224, 1219, 1235, 1237, + 1240, 1239, 1241, 1243, 1242, 1246, 1250, 1248, 1259, 1249, + 1266, 1252, 1262, 1263, 1267, 1268, 1269, 1271, 1275, 1284, + 1276, 1286, 1293, 1294, 1296, 1298, 1305, 1307, 1279, 1302, + 1308, 1304, 1303, 1310, 1312, 1316, 1313, 1319, 1320, 1323, + 1325, 1326, 1327, 1328, 1330, 1333, 1334, 1335, 1337, 1339, + 1347, 1345, 1343, 1358, 1346, 1351, 1349, 1356, 1360, 1363, - 1361, 1359, 1363, 1364, 1371, 1372, 1375, 1376, 1373, 1379, - 1378, 1381, 1385, 1386, 1387, 1382, 1388, 1390, 1399, 1403, - 1404, 1413, 1405, 1412, 1396, 1415, 1422, 1418, 1425, 1421, - 1420, 1426, 1433, 1428, 1430, 1434, 1442, 1437, 1435, 1446, - 1438, 1447, 1450, 1449, 1461, 1459, 1460, 1469, 1472, 1462, - 1464, 1470, 1474, 1475, 1477, 1478, 1479, 1480, 1488, 1481, - 1483, 1484, 1486, 1490, 1491, 1494, 1497, 1509, 1502, 1505, - 1504, 1507, 1511, 1513, 1514, 1518, 1519, 1520, 1522, 1521, - 1524, 1528, 1529, 1533, 1534, 1540, 1541, 1542, 1544, 1547, - 1548, 1551, 1550, 1559, 1561, 1549, 1562, 1565, 1568, 1570, + 1362, 1371, 6437, 1379, 1374, 1375, 1377, 1380, 1384, 1388, + 1382, 1389, 782, 1391, 1390, 1392, 1397, 1399, 1394, 1400, + 1401, 1402, 1411, 1409, 1417, 1421, 1422, 1423, 1406, 1426, + 1433, 1429, 1436, 1432, 1431, 1437, 1444, 1439, 1441, 1445, + 1453, 1448, 1446, 1457, 1449, 1458, 1274, 1460, 1472, 1461, + 1470, 1477, 1479, 1468, 1481, 1482, 1484, 1474, 1485, 1487, + 1488, 1489, 1496, 1491, 1497, 1498, 1499, 1494, 1500, 1504, + 1502, 1521, 1508, 1511, 1510, 1518, 1520, 1525, 1526, 1527, + 1528, 1530, 1531, 1534, 1532, 1535, 1538, 1540, 1544, 1550, + 1551, 1541, 1553, 1554, 1558, 1561, 1562, 1563, 1570, 1560, - 1571, 1572, 1573, 1580, 1575, 1578, 1581, 1585, 1586, 1591, - 1592, 1595, 1597, 1600, 6426, 1598, 1610, 1588, 1611, 1606, - 1603, 1605, 1619, 1612, 1614, 1616, 1622, 1624, 1648, 6426, - 1625, 6426, 6426, 315, 6426, 6426, 1626, 1627, 6426, 1630, - 1629, 1639, 1637, 1631, 1642, 1645, 1646, 1649, 1651, 1658, - 1672, 1654, 1661, 1662, 1665, 1675, 1677, 1678, 1666, 1686, - 1687, 1689, 1694, 1695, 1703, 1696, 1700, 1706, 1708, 1714, - 1710, 1719, 1720, 1709, 1716, 1723, 1724, 1726, 1725, 1728, - 1731, 1734, 1736, 1732, 1730, 1738, 1747, 1749, 1740, 1757, - 6426, 1753, 1761, 1765, 1762, 1769, 1768, 1764, 1766, 1773, + 1573, 1574, 1571, 1577, 1576, 1579, 1587, 1589, 1581, 1582, + 1592, 1594, 1596, 1598, 1600, 1603, 1599, 1605, 6437, 1606, + 1616, 1611, 1615, 1612, 1613, 1618, 1626, 1621, 1623, 1622, + 1627, 1628, 1653, 6437, 1632, 6437, 6437, 1633, 6437, 6437, + 1634, 1635, 6437, 1639, 1637, 1644, 1657, 1663, 1666, 1659, + 1651, 1642, 1654, 1677, 1678, 1676, 1668, 1683, 1684, 1686, + 1687, 1693, 1692, 1694, 1695, 1699, 1706, 1708, 1703, 1712, + 1713, 1716, 1714, 1721, 1723, 1726, 1729, 1722, 1730, 1732, + 1733, 1735, 1737, 1738, 1740, 1742, 1743, 1741, 1746, 1747, + 1757, 1760, 1762, 1772, 6437, 1763, 1770, 1773, 1774, 1781, - 1776, 1777, 1778, 1779, 1780, 1781, 1783, 1743, 1786, 1789, - 1797, 1790, 6426, 1792, 1793, 1795, 1798, 1799, 1804, 1805, - 1806, 1811, 1812, 1813, 1823, 1814, 1816, 1818, 1824, 1825, - 1827, 6426, 1832, 1829, 1835, 1839, 1840, 1842, 1843, 1845, - 1846, 1841, 1847, 1848, 1851, 1853, 1860, 1855, 1859, 1857, - 1865, 1868, 1873, 1875, 1878, 1881, 1882, 1883, 1884, 1885, - 1886, 1888, 1889, 1896, 1899, 1897, 1900, 1898, 1895, 1910, - 1919, 1902, 1914, 1916, 1917, 1918, 1920, 1929, 1924, 1925, - 1931, 1932, 1930, 1935, 1937, 1940, 1947, 1938, 1948, 1956, - 1942, 1949, 1954, 1951, 6426, 1958, 1960, 6426, 1962, 1961, + 1777, 1776, 1778, 1784, 1788, 1785, 1789, 1790, 1791, 1792, + 1797, 1794, 1800, 1802, 1805, 1804, 6437, 1806, 1809, 1810, + 1812, 1813, 1816, 1820, 1814, 1821, 1824, 1826, 1836, 1831, + 1827, 1829, 1838, 1837, 1840, 6437, 1748, 1845, 1841, 1849, + 1850, 1852, 1853, 1855, 1856, 1857, 1858, 1859, 1860, 1864, + 1874, 1870, 1875, 1865, 1880, 1882, 1885, 1886, 1890, 1892, + 1893, 1895, 1896, 1897, 1898, 1900, 1901, 1909, 1911, 1908, + 1913, 1910, 1906, 1929, 1931, 1914, 1916, 1927, 1928, 1930, + 1936, 1938, 1940, 1934, 1941, 1948, 1944, 1946, 1949, 1950, + 1959, 1956, 1957, 1962, 1960, 1965, 1968, 1969, 6437, 1966, - 1963, 1985, 1965, 1967, 1968, 1973, 1977, 1976, 1978, 1986, - 1987, 1989, 2005, 1998, 1995, 2008, 2010, 2011, 1979, 2013, - 2014, 2015, 2017, 2020, 2021, 2030, 2038, 2039, 2023, 2042, - 2040, 1997, 2041, 2043, 2062, 2044, 2045, 2051, 2046, 2047, - 2049, 2059, 2052, 2053, 2055, 2057, 2075, 2078, 2077, 2079, - 2064, 2084, 2086, 2087, 2090, 6426, 2098, 2093, 2094, 2095, - 2099, 2107, 2103, 2104, 6426, 2105, 2106, 2109, 2117, 2118, - 2116, 2119, 2120, 2122, 2121, 2126, 2128, 2130, 2142, 2129, - 2149, 6426, 2131, 6426, 2144, 2132, 2134, 2145, 2133, 2150, - 2155, 2156, 6426, 6426, 2157, 2154, 2166, 2170, 2168, 6426, + 1970, 6437, 1974, 1972, 1975, 1997, 1976, 1979, 1978, 1981, + 1986, 1991, 1989, 1998, 1994, 2001, 2020, 2007, 2003, 2005, + 2010, 2022, 2023, 2024, 2026, 2028, 2030, 2032, 2033, 2031, + 2048, 2051, 2047, 2043, 2056, 2052, 2034, 2054, 2075, 2055, + 2057, 2059, 2058, 2060, 2063, 2069, 2064, 2065, 2066, 2071, + 2086, 2088, 2079, 2082, 2090, 2092, 2097, 2098, 2099, 6437, + 2109, 2104, 2105, 2108, 2112, 2117, 2115, 2114, 6437, 2118, + 2121, 2116, 2128, 2126, 2123, 2129, 2131, 2136, 2137, 2140, + 2138, 2139, 2143, 2141, 2159, 6437, 2144, 6437, 2154, 2145, + 2155, 2156, 2146, 2161, 2162, 2166, 6437, 6437, 2172, 2169, - 2169, 2177, 6426, 2174, 2179, 2172, 2173, 2180, 2183, 2184, - 2187, 2194, 2189, 2198, 2190, 2195, 2199, 6426, 2203, 2191, - 2210, 2211, 2204, 2214, 2217, 2218, 6426, 2221, 2207, 2225, - 2232, 2229, 2224, 2234, 2235, 2236, 2239, 2240, 2241, 2242, - 2243, 2250, 2253, 2246, 2249, 2255, 2264, 6426, 2248, 2262, - 2269, 2265, 2268, 2271, 2272, 2273, 2274, 2275, 2276, 2277, - 2284, 2283, 2285, 2286, 2296, 2298, 2287, 2294, 2304, 2295, - 2306, 2300, 2311, 2308, 2309, 2310, 2313, 6426, 2315, 2317, - 2319, 171, 2321, 2322, 2324, 2323, 2331, 2333, 2325, 2347, - 2348, 2327, 2344, 2350, 2346, 2353, 2354, 2355, 2356, 2357, + 2179, 2181, 2173, 6437, 2182, 2189, 6437, 2190, 2184, 2185, + 2192, 2193, 2195, 2197, 2196, 2206, 2201, 2208, 2203, 2214, + 2215, 6437, 2204, 2205, 2217, 2220, 2216, 2223, 2230, 2224, + 6437, 2227, 2231, 2234, 2243, 2239, 2241, 2242, 2245, 2251, + 2244, 2246, 2249, 2253, 2254, 2261, 2263, 2259, 2266, 2268, + 2276, 6437, 2272, 2258, 2280, 2277, 2284, 2279, 2285, 2275, + 2281, 2286, 2292, 2287, 2291, 2297, 2299, 2301, 2308, 2309, + 2304, 2305, 2307, 2312, 2313, 2314, 2321, 2316, 2323, 2318, + 2322, 6437, 2324, 2329, 2325, 171, 2330, 2333, 2338, 2335, + 2342, 2353, 2336, 2355, 2360, 2341, 2358, 1867, 2359, 2361, - 2358, 2359, 2361, 6426, 2363, 2364, 2366, 2370, 2369, 2372, - 2377, 6426, 2379, 2386, 2389, 2398, 2381, 2390, 2399, 2395, - 2400, 2401, 2403, 2405, 2407, 2406, 2409, 2415, 2412, 6426, - 2417, 2420, 2422, 2413, 2429, 2428, 2421, 2435, 2436, 2437, - 2440, 2438, 2439, 2442, 2441, 2443, 2444, 2449, 2448, 2445, - 2447, 2457, 2458, 2459, 2468, 2469, 2461, 2470, 2471, 6426, - 2481, 2472, 2476, 2474, 2477, 2479, 2484, 2492, 2499, 2483, - 2494, 2496, 2500, 2510, 2503, 2505, 2512, 2520, 2517, 2525, - 2513, 2526, 2527, 2535, 2524, 2537, 2539, 2528, 2540, 2541, - 2543, 2546, 2547, 2549, 2559, 2560, 2552, 2562, 2555, 2576, + 2362, 2365, 2366, 2367, 2339, 2368, 2369, 6437, 2372, 2373, + 2374, 2378, 2379, 2377, 2384, 6437, 2390, 2395, 2399, 2402, + 2405, 2406, 2407, 2408, 2391, 2413, 2411, 2414, 2417, 2418, + 2421, 2415, 2419, 6437, 2425, 2431, 2432, 2428, 2434, 2440, + 2441, 2430, 2442, 2443, 2446, 2449, 2447, 2451, 2452, 2453, + 2455, 2459, 2460, 2456, 2461, 2468, 2467, 2466, 2472, 2469, + 2470, 2478, 2479, 6437, 2486, 2483, 2487, 2489, 2490, 2491, + 2500, 2492, 2509, 2494, 2502, 2506, 2511, 2520, 2514, 2515, + 2523, 2530, 2532, 2526, 2540, 2536, 2542, 2544, 2538, 2548, + 2550, 2546, 2551, 2552, 2554, 2557, 2556, 2558, 2571, 2573, - 2581, 2572, 6426, 2570, 2565, 2568, 2582, 2590, 2585, 2587, - 2588, 2592, 2595, 2596, 2597, 2598, 2605, 2600, 2602, 2603, - 2608, 2607, 2611, 2614, 2618, 2619, 2623, 2625, 2627, 2628, - 6426, 2631, 2633, 2629, 2635, 2637, 2639, 2642, 2645, 2647, - 2649, 2650, 2654, 2655, 2657, 2656, 2658, 2664, 2665, 2651, - 6426, 2674, 2666, 2678, 2668, 2679, 2672, 2685, 2686, 2687, - 2661, 2688, 2691, 2694, 2695, 2697, 6426, 2704, 2705, 2696, - 2712, 2707, 2703, 2708, 2714, 2711, 6426, 2715, 2717, 2718, - 2726, 2727, 2723, 6426, 2734, 2724, 2725, 2732, 2735, 2736, - 2733, 2739, 2742, 2743, 2746, 2748, 2755, 2749, 2756, 6426, + 2563, 2518, 2572, 2577, 2582, 2564, 6437, 2583, 2584, 2585, + 2589, 2597, 2593, 2594, 2595, 2601, 2604, 2605, 2606, 2607, + 2614, 2609, 2611, 2612, 2617, 2618, 2620, 2623, 2627, 2628, + 2631, 2634, 2636, 2380, 6437, 2637, 2638, 2639, 2642, 2645, + 2646, 2648, 2653, 2650, 2656, 2657, 2660, 2661, 2662, 2663, + 2664, 2667, 2668, 2671, 6437, 2672, 2673, 2674, 2680, 2682, + 2684, 2685, 2693, 2686, 2697, 2695, 2699, 2701, 2702, 2703, + 6437, 2710, 2711, 2708, 2712, 2714, 2715, 2718, 2720, 2721, + 6437, 2722, 2724, 2725, 2732, 2733, 2730, 6437, 2745, 2735, + 2731, 2738, 2728, 2742, 2743, 2746, 2750, 2752, 2753, 2754, - 2757, 2766, 2759, 2758, 2763, 2769, 2770, 2773, 2774, 2775, - 2778, 2781, 6426, 2792, 2789, 2787, 2800, 2790, 2530, 2796, - 2797, 2801, 2803, 2804, 2805, 2807, 6426, 2808, 2811, 2812, - 2815, 2813, 2818, 2819, 2826, 2823, 2825, 2828, 2831, 2832, - 2833, 2834, 2841, 2840, 2837, 2849, 2850, 2853, 2854, 2856, - 2859, 2867, 2870, 2843, 2866, 2869, 2862, 2871, 2872, 2879, - 2880, 2887, 2882, 2884, 6426, 2889, 2886, 2891, 2893, 2894, - 2895, 2897, 2896, 2898, 2901, 2902, 2908, 2904, 2905, 2920, - 2923, 2907, 2915, 2925, 2926, 2928, 2929, 2930, 2931, 2932, - 2939, 2935, 2936, 2947, 2938, 2942, 2952, 2953, 2954, 2955, + 2763, 2757, 2760, 6437, 2764, 2773, 2766, 2769, 2768, 2774, + 2775, 2779, 2781, 2782, 2785, 2792, 6437, 2799, 2796, 2798, + 2808, 2795, 2801, 2803, 2805, 2811, 2804, 2812, 2813, 2815, + 6437, 2817, 2819, 2820, 2823, 2825, 2826, 2828, 2836, 2833, + 2834, 2840, 2841, 2842, 2839, 2843, 2852, 2846, 2849, 2855, + 2860, 2850, 2862, 2863, 2868, 2872, 2876, 2873, 2875, 2878, + 2877, 2879, 2880, 2888, 2892, 2895, 2890, 2896, 6437, 2899, + 2901, 2894, 2902, 2904, 2907, 2908, 2906, 2909, 2911, 2914, + 2912, 2915, 2918, 2925, 2933, 2926, 2934, 2928, 2930, 2936, + 2938, 2939, 2940, 2941, 2948, 2950, 2944, 2957, 2952, 2956, - 2956, 2963, 2943, 2961, 2958, 2965, 2966, 2970, 2980, 2981, - 2967, 2982, 2983, 2984, 2985, 6426, 2988, 2989, 2990, 2993, - 2996, 2999, 3002, 3009, 3000, 3001, 3011, 3017, 3018, 3008, - 3019, 3010, 3026, 3024, 6426, 3025, 6426, 3027, 3029, 3031, - 3039, 3035, 6426, 3041, 6426, 3042, 3047, 3036, 3038, 6426, - 3050, 3044, 3049, 3056, 3051, 3059, 3060, 3062, 3061, 3068, - 3063, 3065, 3070, 3071, 3073, 3076, 3074, 3081, 3082, 3086, - 3090, 3091, 3078, 3102, 3084, 3094, 3100, 3092, 3107, 6426, - 3109, 3097, 3110, 3115, 3114, 3116, 3117, 3118, 3120, 3121, - 3123, 3127, 3122, 3132, 3124, 3136, 3135, 3145, 3146, 3153, + 2967, 2953, 2954, 2963, 2964, 2965, 2966, 2969, 2974, 2977, + 2976, 2986, 2990, 2991, 2993, 2968, 2992, 2994, 2998, 6437, + 2995, 3003, 2999, 3002, 3005, 3010, 3006, 3018, 3015, 3016, + 3019, 3023, 3028, 3020, 3025, 3026, 3037, 3034, 6437, 3035, + 6437, 3036, 3039, 3041, 3051, 3038, 6437, 3048, 6437, 3049, + 3055, 3050, 3056, 6437, 3059, 3060, 3061, 3063, 3067, 3065, + 3068, 3069, 3071, 3075, 3079, 3073, 3077, 3078, 3081, 3083, + 3090, 3089, 3093, 3094, 3096, 3102, 3097, 3099, 3105, 3108, + 3110, 3111, 3113, 6437, 3116, 3112, 3120, 3121, 3122, 3123, + 3124, 3125, 3129, 3131, 3132, 3140, 3136, 3143, 3133, 3144, - 6426, 3148, 3150, 3151, 3152, 6426, 3154, 3155, 3156, 3160, - 3163, 3164, 3165, 3168, 3172, 3167, 3169, 3174, 3183, 3184, - 3187, 3188, 6426, 3190, 3193, 3175, 3202, 3196, 3203, 3210, - 3206, 3208, 3212, 3220, 3216, 3215, 3217, 3218, 3219, 3222, - 3229, 3230, 3226, 3233, 3232, 3236, 3243, 3240, 3234, 3238, - 3244, 3246, 3247, 3248, 3249, 3250, 3253, 3254, 3251, 6426, - 3259, 3265, 3263, 3272, 3268, 3269, 3273, 3278, 3274, 6426, - 3280, 3281, 3282, 3284, 3289, 3283, 3286, 3291, 3294, 3297, - 3299, 3302, 3304, 3303, 6426, 3305, 6426, 3307, 3308, 3318, - 3322, 3323, 3310, 3324, 3330, 3326, 3331, 3333, 3336, 3334, + 3150, 3160, 3147, 3162, 6437, 3157, 3159, 3161, 3163, 6437, + 3165, 3164, 3172, 3174, 3168, 3166, 3176, 3178, 3185, 3177, + 3187, 3183, 3190, 3198, 3189, 3197, 6437, 3201, 3202, 3179, + 3206, 3212, 3219, 3220, 3217, 3223, 3225, 3221, 3227, 3205, + 3228, 3229, 3230, 3231, 3239, 3241, 3237, 3244, 3236, 3240, + 3252, 3249, 3243, 3247, 3253, 3255, 3256, 3257, 3258, 3260, + 3262, 3263, 3264, 6437, 3268, 3272, 3274, 3281, 3277, 3278, + 3279, 3282, 3286, 6437, 3289, 3290, 3293, 3291, 3300, 3302, + 3292, 3295, 3304, 3305, 3308, 3309, 3312, 3311, 6437, 3313, + 6437, 3315, 3326, 3331, 3335, 3320, 3318, 3338, 3343, 3337, - 3340, 3337, 3342, 3343, 3345, 3357, 3348, 3344, 3349, 3358, - 3359, 3363, 3360, 6426, 6426, 3365, 3366, 3367, 3369, 3371, - 3370, 3377, 3374, 3382, 3381, 3388, 3389, 3397, 6426, 3394, - 3395, 3393, 3398, 3406, 3401, 3405, 3417, 3413, 3420, 3416, - 6426, 3412, 3421, 3429, 3424, 3425, 3433, 6426, 3430, 6426, - 3426, 3431, 3436, 3439, 3440, 3441, 3442, 3443, 3447, 3455, - 3458, 3451, 3460, 3461, 3462, 3463, 3466, 3470, 3473, 3469, - 3471, 3472, 6426, 3475, 3476, 3484, 3489, 3492, 3493, 3477, - 3478, 6426, 3495, 3485, 3503, 3499, 3504, 3505, 3509, 3506, - 3510, 3511, 3513, 6426, 3512, 3514, 3521, 3526, 3519, 3522, + 3325, 3346, 3347, 3339, 3345, 3348, 3349, 3353, 3354, 3366, + 3356, 3359, 3364, 3367, 3369, 3370, 3372, 6437, 6437, 3371, + 3373, 3374, 3376, 3378, 3388, 3380, 3389, 3394, 3382, 3390, + 3397, 3408, 6437, 3403, 3404, 3405, 3409, 3412, 3410, 3421, + 3422, 3413, 3429, 3424, 6437, 3425, 3426, 3437, 3433, 3432, + 3442, 6437, 3439, 6437, 3434, 3438, 3443, 3449, 3448, 3450, + 3452, 3454, 3456, 3465, 3470, 3460, 3472, 3462, 3467, 3469, + 3475, 3476, 3484, 3479, 3480, 3481, 6437, 3487, 3483, 3490, + 3492, 3493, 3495, 3502, 3491, 6437, 3504, 3505, 3507, 3508, + 3509, 3510, 3513, 3517, 3515, 3518, 3523, 6437, 3519, 3524, - 3530, 3532, 3540, 6426, 3536, 3533, 3549, 3545, 3546, 3548, - 3551, 3527, 3552, 3553, 3555, 3556, 3557, 3559, 3560, 3563, - 3564, 3566, 3565, 3577, 3576, 3579, 3584, 3586, 3570, 6426, - 3587, 3590, 3592, 3593, 3595, 3596, 3598, 3601, 3603, 3604, - 3615, 3616, 3605, 3607, 3619, 3621, 3629, 3627, 6426, 3637, - 3620, 3639, 3611, 3632, 3641, 3622, 3643, 3645, 3634, 3646, - 3647, 3650, 3653, 3660, 3656, 3657, 3655, 3659, 3671, 3661, - 6426, 3684, 3662, 3672, 3664, 3663, 3680, 3688, 3685, 3686, - 3689, 3691, 3692, 3696, 3693, 3698, 3699, 3702, 3703, 6426, - 6426, 3705, 3707, 3708, 6426, 3712, 3709, 3722, 3715, 3719, + 3532, 3525, 3528, 3533, 3541, 3542, 3548, 6437, 3549, 3534, + 3556, 3552, 3553, 3555, 3558, 3559, 3560, 3562, 3563, 3564, + 3566, 3567, 3572, 3568, 3570, 3577, 3573, 3585, 3587, 3574, + 3595, 3602, 3588, 6437, 3591, 3598, 3600, 3601, 3603, 3604, + 3606, 3612, 3614, 3608, 3623, 3624, 3615, 3619, 3627, 3629, + 3637, 3632, 6437, 3644, 3630, 3645, 3634, 3643, 3642, 3647, + 3649, 3651, 3653, 3652, 3655, 3656, 3658, 3670, 3662, 3665, + 3661, 3666, 3677, 3669, 6437, 3684, 3680, 3672, 3688, 3682, + 3691, 3698, 3695, 3696, 3697, 3700, 3701, 3702, 3705, 3707, + 3708, 3711, 3712, 6437, 6437, 3714, 3715, 3717, 6437, 3719, - 3711, 3724, 3725, 3727, 3728, 3733, 3735, 6426, 3736, 3743, - 3738, 3739, 3748, 3750, 3755, 3747, 3756, 3749, 3745, 3760, - 3763, 3757, 3761, 3767, 3776, 3777, 3762, 3773, 3774, 6426, - 3779, 3780, 3781, 3784, 3785, 3790, 6426, 3789, 3791, 3792, - 3797, 3801, 3803, 3809, 3811, 3793, 3812, 3796, 3813, 3816, - 3817, 3827, 3819, 3823, 3830, 3831, 3835, 6426, 3824, 3838, - 3822, 3841, 6426, 3844, 3851, 3852, 6426, 3853, 3848, 3855, - 3856, 3863, 6426, 3858, 3861, 3859, 3862, 3872, 3864, 3873, - 3875, 3869, 6426, 3876, 3877, 3878, 6426, 3879, 3884, 3890, - 3892, 3893, 3900, 3895, 3897, 3898, 3899, 6426, 3905, 6426, + 3720, 3730, 3722, 3723, 3731, 3735, 3734, 3733, 3736, 3738, + 3739, 6437, 3745, 3753, 3748, 3749, 3757, 3758, 3761, 3762, + 3754, 3765, 3769, 3766, 3770, 3771, 3772, 3774, 3782, 3783, + 3779, 3780, 3786, 6437, 3781, 3787, 3791, 3793, 3784, 3797, + 6437, 3794, 3800, 3802, 3805, 3811, 3815, 3807, 3817, 3820, + 3821, 3824, 3822, 3825, 3826, 3834, 3829, 3831, 3833, 3837, + 3847, 6437, 3830, 3842, 3840, 3849, 6437, 3855, 3862, 3863, + 6437, 3865, 3850, 3864, 3866, 3873, 6437, 3868, 3870, 3871, + 3852, 3881, 3872, 3885, 3882, 3884, 6437, 3886, 3888, 3890, + 6437, 3889, 3899, 3902, 3904, 3891, 3912, 3908, 3905, 3909, - 3903, 3907, 3911, 6426, 3909, 3914, 3915, 3917, 3918, 3923, - 3924, 3922, 3931, 3932, 3933, 3935, 3936, 3934, 3939, 3943, - 3940, 3941, 3945, 3946, 6426, 3947, 3949, 3956, 3951, 3961, - 3957, 3964, 3954, 3968, 3969, 6426, 6426, 3978, 6426, 3980, - 3970, 3972, 6426, 3974, 3979, 3987, 3984, 3990, 3992, 3996, - 3997, 6426, 3999, 4002, 6426, 3985, 4000, 4010, 4007, 4009, - 4012, 4015, 4011, 4013, 4017, 4018, 4021, 4023, 4019, 4022, - 4027, 6426, 4024, 4025, 4026, 4040, 4041, 4042, 4047, 4049, - 4043, 6426, 4051, 4053, 4052, 4060, 4057, 6426, 4058, 6426, - 4061, 4066, 4068, 4069, 4072, 6426, 4074, 4073, 4078, 4081, + 3913, 6437, 3916, 6437, 3917, 3918, 3923, 6437, 3919, 3925, + 3927, 3929, 3926, 3933, 3934, 3940, 3942, 3936, 3944, 3945, + 3946, 3893, 3947, 3954, 3949, 3950, 3951, 3957, 6437, 3960, + 3955, 3966, 3958, 3976, 3970, 3962, 3964, 3981, 3980, 6437, + 6437, 3983, 6437, 3984, 3988, 3989, 6437, 3991, 3994, 3996, + 3992, 3997, 3999, 4003, 4007, 6437, 4011, 4012, 6437, 3995, + 4014, 4022, 4017, 4019, 4023, 4025, 4021, 4027, 4028, 4032, + 4031, 4033, 4029, 4034, 4047, 6437, 4036, 4035, 4038, 4052, + 4039, 4042, 4060, 4054, 4061, 6437, 4064, 4065, 4068, 4070, + 4071, 6437, 4073, 6437, 4072, 4074, 4076, 4077, 4080, 6437, - 4083, 4082, 4085, 4089, 4086, 4092, 4099, 4095, 4096, 4097, - 6426, 4098, 4101, 4103, 4110, 4106, 4108, 4119, 4118, 4114, - 4120, 4124, 4126, 4122, 4129, 4135, 4133, 4139, 4127, 6426, - 4137, 4141, 4131, 4154, 4147, 4150, 6426, 4151, 4155, 4159, - 6426, 4157, 4158, 4165, 4167, 4161, 4168, 4169, 4173, 4175, - 6426, 4171, 4172, 4176, 4177, 4188, 4180, 6426, 6426, 4191, - 6426, 4192, 4181, 4194, 4195, 4199, 4202, 4201, 4203, 4206, - 4207, 4214, 4215, 4208, 4216, 4223, 4225, 4233, 4228, 4229, - 4230, 6426, 6426, 4235, 4239, 4232, 4243, 4244, 4236, 4246, - 4253, 4251, 4257, 4260, 4261, 4255, 6426, 4263, 4252, 4269, + 4085, 4084, 4092, 4089, 4095, 4094, 4097, 4101, 4093, 4103, + 4110, 4107, 4105, 4108, 6437, 4109, 4113, 4120, 4121, 4114, + 4117, 4130, 4126, 4132, 4125, 4133, 4136, 4138, 4139, 4144, + 4142, 4147, 4146, 6437, 4148, 4153, 4154, 4162, 4158, 4159, + 6437, 4165, 4163, 4169, 6437, 4166, 4170, 4172, 4183, 4173, + 4176, 4180, 4178, 4184, 6437, 4185, 4186, 4187, 4188, 4195, + 4201, 6437, 6437, 4202, 6437, 4203, 4189, 4204, 4205, 4206, + 4211, 4214, 4215, 4217, 4218, 4222, 4225, 4227, 4228, 4235, + 4238, 4239, 4241, 4243, 4236, 6437, 6437, 4246, 4247, 4249, + 4253, 4254, 4257, 4242, 4265, 4261, 4263, 4268, 4270, 4277, - 4262, 6426, 4268, 4270, 4271, 4274, 4276, 4277, 4280, 4278, - 4279, 4283, 4286, 4287, 4288, 4292, 4290, 4299, 4300, 4301, - 4302, 4306, 4304, 4309, 6426, 4310, 4311, 4313, 4314, 4315, - 4321, 4323, 4324, 4325, 6426, 4326, 6426, 4329, 4331, 4327, - 4347, 4335, 4338, 4348, 4350, 4352, 4354, 4355, 4358, 4359, - 4365, 4353, 4360, 4369, 4362, 4376, 4378, 4379, 6426, 4380, - 4372, 4381, 4382, 4387, 4389, 4383, 4391, 4393, 4396, 4397, - 4398, 4400, 4405, 4406, 4407, 4408, 4409, 6426, 4410, 4414, - 4417, 4419, 4421, 4423, 4424, 4425, 4431, 4432, 4433, 4434, - 4438, 6426, 4435, 4440, 4442, 4443, 4445, 4446, 4449, 4452, + 6437, 4272, 4274, 4278, 4279, 6437, 4280, 4281, 4283, 4285, + 4284, 4290, 4287, 4291, 4288, 4292, 4296, 4297, 4298, 4302, + 4304, 4309, 4310, 4312, 4315, 4316, 4317, 4319, 6437, 4324, + 4321, 4323, 4325, 4326, 4328, 4333, 4334, 4336, 6437, 4337, + 6437, 4338, 4339, 4343, 4356, 4345, 4355, 4359, 4361, 4363, + 4365, 4366, 4369, 4370, 4376, 4364, 4371, 4380, 4373, 4387, + 4389, 4390, 6437, 4391, 4383, 4392, 4393, 4398, 4400, 4394, + 4402, 4404, 4407, 4408, 4409, 4411, 4416, 4417, 4418, 4419, + 4420, 6437, 4421, 4425, 4428, 4430, 4432, 4434, 4435, 4436, + 4442, 4443, 4444, 4445, 4449, 6437, 4446, 4451, 4453, 4454, - 4456, 6426, 4459, 4450, 4461, 4460, 4462, 4464, 4466, 4472, - 4469, 4475, 4476, 6426, 4481, 4483, 4484, 4485, 4486, 4487, - 4490, 4491, 6426, 4497, 4498, 4500, 4507, 4504, 4511, 4509, - 4513, 4506, 4516, 4519, 4512, 4523, 4524, 4526, 4520, 4536, - 4543, 4538, 6426, 4527, 6426, 4539, 4540, 4550, 4545, 4551, - 4549, 6426, 4552, 4557, 4559, 4555, 4553, 6426, 4560, 4561, - 4563, 4564, 6426, 4579, 4575, 4565, 4574, 4567, 4583, 6426, - 4588, 4589, 4590, 4597, 4599, 4594, 4601, 4596, 4604, 4602, - 4598, 4606, 4607, 4615, 4613, 4611, 6426, 4617, 4619, 4624, - 4626, 4620, 4628, 4618, 4630, 4633, 4635, 6426, 4636, 4639, + 4456, 4457, 4460, 4463, 4467, 6437, 4470, 4461, 4472, 4471, + 4473, 4475, 4477, 4483, 4480, 4486, 4487, 6437, 4492, 4494, + 4495, 4496, 4497, 4498, 4501, 4502, 6437, 4508, 4509, 4511, + 4518, 4515, 4522, 4520, 4524, 4517, 4527, 4530, 4523, 4534, + 4535, 4537, 4531, 4547, 4554, 4549, 6437, 4538, 6437, 4550, + 4551, 4561, 4556, 4562, 4560, 6437, 4563, 4568, 4570, 4566, + 4564, 6437, 4571, 4572, 4574, 4575, 6437, 4590, 4586, 4576, + 4585, 4578, 4594, 6437, 4599, 4600, 4601, 4608, 4610, 4605, + 4612, 4607, 4615, 4613, 4609, 4617, 4618, 4626, 4624, 4622, + 6437, 4628, 4630, 4635, 4637, 4631, 4639, 4629, 4641, 4644, - 4640, 4642, 4643, 4644, 4645, 4652, 4649, 4651, 4653, 4654, - 4657, 4658, 6426, 4663, 4661, 4665, 4674, 4676, 4678, 6426, - 4681, 6426, 4671, 4666, 4683, 4682, 4687, 6426, 6426, 4689, - 4697, 4692, 4695, 4696, 6426, 6426, 4699, 6426, 4700, 6426, - 4701, 4703, 6426, 6426, 4702, 4706, 4709, 4711, 4713, 6426, - 4721, 6426, 4723, 4724, 4710, 4722, 4728, 6426, 4727, 4729, - 4731, 6426, 4734, 4742, 4735, 4737, 6426, 4739, 4745, 4740, - 4747, 6426, 4749, 4755, 4751, 4757, 4758, 4761, 4760, 4763, - 4764, 4768, 4769, 4770, 4771, 4773, 4782, 4784, 4786, 4779, - 4787, 4788, 4794, 4796, 4789, 4792, 4798, 4799, 4803, 4800, + 4646, 6437, 4647, 4650, 4651, 4653, 4654, 4655, 4656, 4663, + 4660, 4662, 4664, 4665, 4668, 4669, 6437, 4674, 4672, 4676, + 4685, 4687, 4689, 6437, 4692, 6437, 4682, 4677, 4694, 4693, + 4698, 6437, 6437, 4700, 4708, 4703, 4706, 4707, 6437, 6437, + 4710, 6437, 4711, 6437, 4712, 4714, 6437, 6437, 4713, 4717, + 4720, 4722, 4724, 6437, 4732, 6437, 4734, 4735, 4721, 4733, + 4739, 6437, 4738, 4740, 4742, 6437, 4745, 4753, 4746, 4748, + 6437, 4750, 4756, 4751, 4758, 6437, 4760, 4766, 4762, 4768, + 4769, 4772, 4771, 4774, 4775, 4779, 4780, 4781, 4782, 4784, + 4793, 4795, 4797, 4790, 4798, 4799, 4805, 4807, 4800, 4803, - 4807, 4809, 4810, 4811, 4813, 4812, 4814, 4817, 4816, 4825, - 4827, 4828, 4829, 4830, 4831, 4832, 4833, 4839, 4840, 4843, - 4838, 4842, 6426, 4846, 4848, 4835, 4859, 4849, 4860, 4861, - 4868, 4872, 4873, 6426, 4875, 6426, 4877, 4869, 4879, 4880, - 4881, 6426, 4882, 4883, 4884, 4885, 4886, 4888, 4889, 4892, - 4893, 4897, 4903, 6426, 4910, 4900, 4894, 4898, 4918, 6426, - 4913, 4920, 4921, 4923, 4924, 4925, 4926, 4927, 4930, 4928, - 4933, 4935, 4929, 4936, 4937, 4951, 4953, 4948, 4938, 4955, - 4957, 4958, 4959, 4960, 4961, 4962, 4963, 4969, 4971, 4975, - 6426, 4966, 6426, 4977, 4978, 4979, 4982, 4983, 4984, 4987, + 4809, 4810, 4814, 4811, 4818, 4820, 4821, 4822, 4824, 4823, + 4825, 4828, 4827, 4836, 4838, 4839, 4840, 4841, 4842, 4843, + 4844, 4850, 4851, 4854, 4849, 4853, 6437, 4857, 4859, 4846, + 4870, 4860, 4871, 4872, 4879, 4883, 4884, 6437, 4886, 6437, + 4888, 4880, 4890, 4891, 4892, 6437, 4893, 4894, 4895, 4896, + 4897, 4899, 4900, 4903, 4904, 4908, 4914, 6437, 4921, 4911, + 4905, 4909, 4929, 6437, 4924, 4931, 4932, 4934, 4935, 4936, + 4937, 4938, 4941, 4939, 4944, 4946, 4940, 4947, 4948, 4962, + 4964, 4959, 4949, 4966, 4968, 4969, 4970, 4971, 4972, 4973, + 4974, 4980, 4982, 4986, 6437, 4977, 6437, 4988, 4989, 4990, - 6426, 6426, 4989, 4990, 4995, 4992, 4996, 4999, 5001, 6426, - 5000, 5008, 5011, 5003, 6426, 5013, 5017, 5018, 5020, 6426, - 5021, 5022, 5023, 5025, 5026, 5030, 5034, 5032, 5035, 5036, - 5043, 6426, 6426, 6426, 6426, 5046, 5040, 5050, 5044, 5052, - 5054, 5055, 5059, 5053, 6426, 5061, 6426, 6426, 5066, 5067, - 5056, 5069, 5073, 5075, 5076, 5078, 6426, 5077, 5079, 5082, - 5080, 5089, 5091, 5097, 5093, 5098, 5083, 5099, 5108, 5104, - 5105, 5107, 5110, 5112, 5114, 6426, 6426, 5116, 5119, 5120, - 5127, 5125, 5128, 5124, 5137, 5132, 5134, 5135, 5140, 5141, - 5142, 5151, 5152, 5143, 5147, 6426, 5150, 5153, 5161, 6426, + 4993, 4994, 4995, 4998, 6437, 6437, 5000, 5001, 5006, 5003, + 5007, 5010, 5012, 6437, 5011, 5019, 5022, 5014, 6437, 5024, + 5028, 5029, 5031, 6437, 5032, 5033, 5034, 5036, 5037, 5041, + 5045, 5043, 5046, 5047, 5054, 6437, 6437, 6437, 6437, 5057, + 5051, 5061, 5055, 5063, 5065, 5066, 5070, 5064, 6437, 5072, + 6437, 6437, 5077, 5078, 5067, 5080, 5084, 5086, 5087, 5089, + 6437, 5088, 5090, 5093, 5091, 5100, 5102, 5108, 5104, 5109, + 5094, 5110, 5119, 5115, 5116, 5118, 5121, 5123, 5125, 6437, + 6437, 5127, 5130, 5131, 5138, 5136, 5139, 5135, 5148, 5143, + 5145, 5146, 5151, 5152, 5153, 5162, 5163, 5154, 5158, 6437, - 5154, 6426, 5160, 5162, 5156, 5168, 5169, 5170, 5171, 5173, - 6426, 6426, 5175, 5183, 5180, 6426, 6426, 5176, 5184, 5187, - 5189, 5185, 5190, 5191, 5196, 5198, 5194, 6426, 5199, 6426, - 5201, 5203, 5216, 5202, 5218, 5223, 5225, 5229, 5222, 5205, - 6426, 5224, 5226, 6426, 5231, 5220, 5232, 6426, 5236, 5238, - 5241, 5243, 6426, 5245, 5246, 5248, 6426, 5252, 6426, 5249, - 5254, 5255, 5263, 6426, 5258, 5260, 6426, 5265, 5271, 5272, - 5266, 6426, 5268, 6426, 5273, 5277, 5280, 5283, 5274, 5285, - 5287, 5288, 5290, 5297, 5295, 5292, 6426, 6426, 135, 5308, - 5298, 5299, 5303, 5305, 5315, 5301, 5310, 5313, 6426, 6426, + 5161, 5164, 5172, 6437, 5165, 6437, 5171, 5173, 5167, 5179, + 5180, 5181, 5182, 5184, 6437, 6437, 5186, 5194, 5191, 6437, + 6437, 5187, 5195, 5198, 5200, 5196, 5201, 5202, 5207, 5209, + 5205, 6437, 5210, 6437, 5212, 5214, 5227, 5213, 5229, 5234, + 5236, 5240, 5233, 5216, 6437, 5235, 5237, 6437, 5242, 5231, + 5243, 6437, 5247, 5249, 5252, 5254, 6437, 5256, 5257, 5259, + 6437, 5263, 6437, 5260, 5265, 5266, 5274, 6437, 5269, 5271, + 6437, 5276, 5282, 5283, 5277, 6437, 5279, 6437, 5284, 5288, + 5291, 5294, 5285, 5296, 5298, 5299, 5301, 5308, 5306, 5303, + 6437, 6437, 135, 5319, 5309, 5310, 5314, 5316, 5326, 5312, - 5317, 6426, 5316, 5325, 6426, 5318, 5327, 5331, 5320, 5329, - 5333, 5335, 5336, 5340, 5342, 5341, 5345, 5346, 5349, 5354, - 5364, 5347, 5361, 5367, 5369, 5371, 5373, 5362, 5375, 5376, - 5377, 5379, 5381, 5382, 5383, 5385, 5386, 6426, 5389, 5391, - 5394, 5393, 6426, 5399, 5395, 5408, 5404, 6426, 5413, 5401, - 5414, 5415, 6426, 5416, 5418, 5421, 5419, 5420, 5432, 5427, - 5429, 5433, 6426, 6426, 6426, 5436, 5443, 6426, 5445, 5439, - 5422, 5430, 6426, 5446, 5449, 6426, 6426, 5450, 5451, 5452, - 5462, 6426, 5454, 6426, 5457, 6426, 5458, 5459, 5467, 5465, - 6426, 5471, 5469, 6426, 5480, 5482, 5484, 5477, 5485, 5487, + 5321, 5324, 6437, 6437, 5328, 6437, 5327, 5336, 6437, 5329, + 5338, 5342, 5331, 5340, 5344, 5346, 5347, 5351, 5353, 5352, + 5356, 5357, 5360, 5365, 5375, 5358, 5372, 5378, 5380, 5382, + 5384, 5373, 5386, 5387, 5388, 5390, 5392, 5393, 5394, 5396, + 5397, 6437, 5400, 5402, 5405, 5404, 6437, 5410, 5406, 5419, + 5415, 6437, 5424, 5412, 5425, 5426, 6437, 5427, 5429, 5432, + 5430, 5431, 5443, 5438, 5440, 5444, 6437, 6437, 6437, 5447, + 5454, 6437, 5456, 5450, 5433, 5441, 6437, 5457, 5460, 6437, + 6437, 5461, 5462, 5463, 5473, 6437, 5465, 6437, 5468, 6437, + 5469, 5470, 5478, 5476, 6437, 5482, 5480, 6437, 5491, 5493, - 5488, 6426, 5495, 5491, 5492, 5499, 5490, 5500, 5494, 5502, - 5501, 5509, 5504, 5511, 6426, 5513, 5516, 5518, 5524, 5514, - 5520, 5522, 6426, 5526, 6426, 5528, 6426, 5530, 5531, 5532, - 5538, 5534, 5539, 5540, 5549, 5541, 5551, 5545, 5552, 5556, - 5553, 6426, 6426, 5562, 5565, 6426, 5559, 6426, 5567, 6426, - 5557, 5568, 5569, 5570, 6426, 5577, 5571, 5574, 5579, 6426, - 5581, 5586, 5583, 5588, 6426, 6426, 5589, 5596, 5594, 5592, - 5604, 5606, 5593, 5608, 5601, 5610, 5595, 5617, 5616, 5618, - 5620, 5622, 5623, 5624, 6426, 6426, 6426, 5629, 5628, 5637, - 5633, 5636, 5644, 5634, 6426, 5642, 5646, 5649, 5643, 5656, + 5495, 5488, 5496, 5498, 5499, 6437, 5506, 5502, 5503, 5510, + 5501, 5511, 5505, 5513, 5512, 5520, 5515, 5522, 6437, 5524, + 5527, 5529, 5535, 5525, 5531, 5533, 6437, 5537, 6437, 5539, + 6437, 5541, 5542, 5543, 5549, 5545, 5550, 5551, 5560, 5552, + 5562, 5556, 5563, 5567, 5564, 6437, 6437, 5573, 5576, 6437, + 5570, 6437, 5578, 6437, 5568, 5579, 5580, 5581, 6437, 5588, + 5582, 5585, 5590, 6437, 5592, 5597, 5594, 5599, 6437, 6437, + 5600, 5607, 5605, 5603, 5615, 5617, 5604, 5619, 5612, 5621, + 5606, 5628, 5627, 5629, 5631, 5633, 5634, 5635, 6437, 6437, + 6437, 5640, 5639, 5648, 5644, 5647, 5655, 5645, 6437, 5653, - 5651, 5658, 6426, 5653, 5655, 5659, 5661, 5664, 5660, 5666, - 5667, 6426, 5671, 5678, 5675, 5672, 5683, 5690, 5692, 5694, - 5685, 5681, 5701, 5697, 6426, 5700, 6426, 6426, 5687, 6426, - 5696, 5703, 5704, 5708, 6426, 5711, 5705, 5712, 5713, 5715, - 5717, 6426, 5727, 5720, 5723, 5724, 6426, 6426, 5731, 6426, - 5734, 5736, 5735, 5743, 5738, 5739, 5745, 5746, 6426, 5728, - 5752, 5753, 5754, 5755, 6426, 5756, 5757, 5759, 5760, 6426, - 5763, 5762, 5765, 5767, 5768, 6426, 5769, 5770, 5777, 5784, - 6426, 5775, 5791, 5785, 6426, 6426, 5787, 5793, 5796, 6426, - 6426, 6426, 5802, 5799, 5797, 5806, 6426, 5808, 5812, 5817, + 5657, 5660, 5654, 5667, 5662, 5669, 6437, 5664, 5666, 5670, + 5672, 5675, 5671, 5677, 5678, 6437, 5682, 5689, 5686, 5683, + 5694, 5701, 5703, 5705, 5696, 5692, 5712, 5708, 6437, 5711, + 6437, 6437, 5698, 6437, 5707, 5714, 5715, 5719, 6437, 5722, + 5716, 5723, 5724, 5726, 5728, 6437, 5738, 5731, 5734, 5735, + 6437, 6437, 5742, 6437, 5745, 5747, 5746, 5754, 5749, 5750, + 5756, 5757, 6437, 5739, 5763, 5764, 5765, 5766, 6437, 5767, + 5768, 5770, 5771, 6437, 5774, 5773, 5776, 5778, 5779, 6437, + 5780, 5781, 5788, 5795, 6437, 5786, 5802, 5796, 6437, 6437, + 5798, 5804, 5807, 6437, 6437, 6437, 5813, 5810, 5808, 5817, - 5821, 5820, 6426, 5823, 5811, 5813, 6426, 6426, 5825, 5826, - 5828, 5831, 6426, 6426, 5832, 5834, 5835, 5838, 5836, 6426, - 5837, 5840, 5842, 5853, 5859, 5848, 5856, 5860, 5868, 5850, - 5854, 5865, 5864, 5866, 5870, 5873, 5877, 5884, 5881, 5883, - 5889, 5886, 5890, 6426, 6426, 5894, 6426, 5897, 5891, 6426, - 6426, 5899, 5903, 5905, 5907, 5909, 5911, 5913, 6426, 5914, - 5916, 5917, 5918, 5919, 6426, 5921, 5925, 5920, 5928, 5922, - 5931, 5927, 5937, 6426, 6426, 5929, 5943, 5933, 5944, 5938, - 6426, 5948, 5955, 5950, 5952, 5953, 5958, 5954, 6426, 5960, - 5962, 6426, 6426, 5961, 5963, 6426, 6426, 5967, 6426, 6426, + 6437, 5819, 5823, 5828, 5832, 5831, 6437, 5834, 5822, 5824, + 6437, 6437, 5836, 5837, 5839, 5842, 6437, 6437, 5843, 5845, + 5846, 5849, 5847, 6437, 5848, 5851, 5853, 5864, 5870, 5859, + 5867, 5871, 5879, 5861, 5865, 5876, 5875, 5877, 5881, 5884, + 5888, 5895, 5892, 5894, 5900, 5897, 5901, 6437, 6437, 5905, + 6437, 5908, 5902, 6437, 6437, 5910, 5914, 5916, 5918, 5920, + 5922, 5924, 6437, 5925, 5927, 5928, 5929, 5930, 6437, 5932, + 5936, 5931, 5939, 5933, 5942, 5938, 5948, 6437, 6437, 5940, + 5954, 5944, 5955, 5949, 6437, 5959, 5966, 5961, 5963, 5964, + 5969, 5965, 6437, 5971, 5973, 6437, 6437, 5972, 5974, 6437, - 6426, 6426, 6426, 6426, 6426, 5974, 6426, 5968, 5980, 5983, - 5985, 6426, 5969, 5986, 5987, 5988, 5975, 6426, 5973, 5990, - 5994, 5998, 5997, 6002, 6004, 6005, 6007, 6006, 6009, 6011, - 6010, 6015, 6013, 6014, 6016, 6020, 6023, 6426, 6426, 6426, - 6029, 6030, 6032, 6033, 6037, 6038, 6045, 6047, 6041, 6048, - 6049, 6051, 6053, 6054, 6055, 6063, 6059, 6062, 6061, 6065, - 6067, 6072, 6076, 6069, 6077, 6081, 6426, 6078, 6426, 6082, - 6426, 6426, 6086, 6088, 6083, 6090, 6098, 6101, 6094, 6097, - 6099, 6102, 6104, 6426, 6106, 6426, 6426, 6111, 6113, 6426, - 6112, 6115, 6426, 6114, 6116, 6117, 6122, 6124, 6120, 6123, + 6437, 5978, 6437, 6437, 6437, 6437, 6437, 6437, 6437, 5985, + 6437, 5979, 5991, 5994, 5996, 6437, 5980, 5997, 5998, 5999, + 5986, 6437, 5984, 6001, 6005, 6009, 6008, 6013, 6015, 6016, + 6018, 6017, 6020, 6022, 6021, 6026, 6024, 6025, 6027, 6031, + 6034, 6437, 6437, 6437, 6040, 6041, 6043, 6044, 6048, 6049, + 6056, 6058, 6052, 6059, 6060, 6062, 6064, 6065, 6066, 6074, + 6070, 6073, 6072, 6076, 6078, 6083, 6087, 6080, 6088, 6092, + 6437, 6089, 6437, 6093, 6437, 6437, 6097, 6099, 6094, 6101, + 6109, 6112, 6105, 6108, 6110, 6113, 6115, 6437, 6117, 6437, + 6437, 6122, 6124, 6437, 6123, 6126, 6437, 6125, 6127, 6128, - 6125, 6141, 6426, 6426, 6127, 6131, 6129, 6143, 6145, 6144, - 6151, 6153, 6154, 6155, 6146, 6162, 6426, 6164, 6161, 6168, - 6426, 6169, 6157, 6170, 6171, 6172, 6180, 6175, 6179, 6426, - 6181, 6426, 6184, 6186, 6188, 6178, 6185, 6187, 6201, 6203, - 6196, 6426, 6189, 6205, 6199, 6210, 6212, 6214, 6216, 6207, - 6221, 6217, 6225, 6229, 6224, 6230, 6232, 6233, 6234, 6426, - 6236, 6239, 6426, 6240, 6241, 6242, 6243, 6247, 6426, 6250, - 6244, 6252, 6254, 6257, 6259, 6426, 6265, 6268, 6269, 6426, - 6270, 6426, 6426, 6272, 6260, 6273, 6281, 6283, 6426, 6426, - 6426, 6306, 6313, 6320, 6327, 6334, 6341, 6348, 88, 6355, + 6133, 6135, 6131, 6134, 6136, 6152, 6437, 6437, 6138, 6142, + 6140, 6154, 6156, 6155, 6162, 6164, 6165, 6166, 6157, 6173, + 6437, 6175, 6172, 6179, 6437, 6180, 6168, 6181, 6182, 6183, + 6191, 6186, 6190, 6437, 6192, 6437, 6195, 6197, 6199, 6189, + 6196, 6198, 6212, 6214, 6207, 6437, 6200, 6216, 6210, 6221, + 6223, 6225, 6227, 6218, 6232, 6228, 6236, 6240, 6235, 6241, + 6243, 6244, 6245, 6437, 6247, 6250, 6437, 6251, 6252, 6253, + 6254, 6258, 6437, 6261, 6255, 6263, 6265, 6268, 6270, 6437, + 6276, 6279, 6280, 6437, 6281, 6437, 6437, 6283, 6271, 6284, + 6292, 6294, 6437, 6437, 6437, 6317, 6324, 6331, 6338, 6345, - 6362, 6369, 6376, 6383, 6390, 6397, 6404, 6411, 6418 + 6352, 6359, 88, 6366, 6373, 6380, 6387, 6394, 6401, 6408, + 6415, 6422, 6429 } ; -static const flex_int16_t yy_def[3310] = +static const flex_int16_t yy_def[3314] = { 0, - 3291, 1, 3292, 3292, 3293, 3293, 3294, 3294, 3295, 3295, - 3296, 3296, 3297, 3297, 3298, 3298, 3291, 3299, 3291, 3291, - 3291, 3291, 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3291, 3291, 3291, - 3301, 3302, 3291, 3291, 3291, 3302, 3303, 3291, 3291, 3291, - 3291, 3303, 3304, 3291, 3291, 3291, 3304, 3305, 3291, 3306, - 3291, 3305, 3305, 3307, 3291, 3291, 3291, 3291, 3307, 3308, - 3291, 3291, 3291, 3308, 3299, 3299, 3291, 3309, 3300, 3309, - 3300, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3295, 1, 3296, 3296, 3297, 3297, 3298, 3298, 3299, 3299, + 3300, 3300, 3301, 3301, 3302, 3302, 3295, 3303, 3295, 3295, + 3295, 3295, 3304, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3305, 3295, 3295, 3295, + 3305, 3306, 3295, 3295, 3295, 3306, 3307, 3295, 3295, 3295, + 3295, 3307, 3308, 3295, 3295, 3295, 3308, 3309, 3295, 3310, + 3295, 3309, 3309, 3311, 3295, 3295, 3295, 3295, 3311, 3312, + 3295, 3295, 3295, 3312, 3303, 3303, 3295, 3313, 3304, 3313, + 3304, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3301, 3301, 3302, - 3302, 3303, 3303, 3291, 3304, 3304, 3305, 3305, 3306, 3306, - 3305, 3307, 3307, 3291, 3308, 3308, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3305, 3305, + 3306, 3306, 3307, 3307, 3295, 3308, 3308, 3309, 3309, 3310, + 3310, 3309, 3311, 3311, 3295, 3312, 3312, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3309, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3309, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3309, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3291, 3299, 3291, 3291, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3309, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3295, 3295, 3303, 3295, 3295, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3309, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3305, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3295, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3309, 3309, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3305, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3309, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3309, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3295, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3305, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3309, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3295, 3303, 3303, 3303, 3295, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3305, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3309, 3303, 3295, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, + 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, + 3295, 3303, 3295, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3295, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3309, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3305, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, + 3303, 3303, 3303, 3309, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3291, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3295, + 3303, 3295, 3303, 3295, 3303, 3303, 3295, 3295, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3305, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3309, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, - 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3305, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291, + 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3295, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3295, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3309, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3299, 3291, 3299, - 3299, 3299, 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3305, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, + 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, 3303, 3295, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3295, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, + 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3295, 3309, 3303, 3303, 3303, 3303, 3303, 3303, 3303, - 3299, 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3291, 3299, 3299, 3291, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3295, 3295, 3303, 3295, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3295, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3295, + 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3295, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3295, 3303, 3303, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3291, 3299, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3291, 3299, 3299, 3291, 3299, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3291, 3291, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, 3303, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, 3295, + 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3295, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, + 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3291, 3291, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3291, - 3291, 3291, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3295, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3295, 3295, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3295, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3295, 3295, + 3303, 3303, 3303, 3295, 3295, 3295, 3303, 3303, 3303, 3303, - 3299, 3299, 3291, 3299, 3299, 3299, 3291, 3291, 3299, 3299, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3291, 3299, 3299, 3291, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3291, 3291, 3299, 3299, 3291, 3291, 3299, 3291, 3291, + 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, + 3295, 3295, 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, + 3295, 3303, 3303, 3295, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3295, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, + 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3295, 3295, 3303, 3303, 3295, - 3291, 3291, 3291, 3291, 3291, 3299, 3291, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3291, 3291, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3291, 3299, - 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3291, 3299, 3291, 3291, 3299, 3299, 3291, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, + 3295, 3303, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3303, + 3295, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3295, 3295, 3295, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3295, 3303, 3295, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3295, + 3295, 3303, 3303, 3295, 3303, 3303, 3295, 3303, 3303, 3303, - 3299, 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, - 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, - 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3299, 3291, - 3299, 3299, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3299, - 3299, 3299, 3299, 3299, 3299, 3291, 3299, 3299, 3299, 3291, - 3299, 3291, 3291, 3299, 3299, 3299, 3299, 3299, 3291, 3291, - 0, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, + 3303, 3303, 3303, 3303, 3303, 3303, 3295, 3295, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3295, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3295, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, 3303, + 3303, 3303, 3303, 3295, 3303, 3303, 3295, 3303, 3303, 3303, + 3303, 3303, 3295, 3303, 3303, 3303, 3303, 3303, 3303, 3295, + 3303, 3303, 3303, 3295, 3303, 3295, 3295, 3303, 3303, 3303, + 3303, 3303, 3295, 3295, 0, 3295, 3295, 3295, 3295, 3295, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291 + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295 } ; -static const flex_int16_t yy_nxt[6467] = +static const flex_int16_t yy_nxt[6478] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1520,708 +1522,709 @@ static const flex_int16_t yy_nxt[6467] = 67, 19, 20, 21, 69, 70, 71, 75, 76, 77, 78, 86, 22, 72, 121, 86, 120, 109, 86, 79, - 158, 158, 73, 19, 20, 21, 69, 70, 71, 75, - 76, 77, 78, 185, 22, 72, 81, 82, 83, 129, + 159, 159, 73, 19, 20, 21, 69, 70, 71, 75, + 76, 77, 78, 186, 22, 72, 81, 82, 83, 130, 90, 79, 90, 90, 73, 90, 86, 84, 81, 82, - 83, 90, 91, 86, 86, 98, 92, 93, 168, 84, - 94, 157, 99, 86, 110, 95, 100, 160, 86, 101, - 160, 168, 86, 112, 96, 86, 165, 165, 111, 86, - 102, 113, 135, 115, 103, 171, 116, 104, 86, 105, - 106, 177, 114, 117, 168, 118, 86, 122, 86, 126, - 107, 86, 154, 127, 176, 123, 155, 86, 86, 136, + 83, 90, 91, 86, 86, 98, 92, 93, 169, 84, + 94, 158, 99, 86, 110, 95, 100, 161, 86, 101, + 161, 169, 86, 112, 96, 86, 166, 166, 111, 86, + 102, 113, 136, 115, 103, 172, 116, 104, 86, 105, + 106, 178, 114, 117, 169, 118, 86, 122, 86, 126, + 107, 86, 155, 127, 177, 123, 156, 86, 86, 137, - 156, 124, 130, 137, 86, 125, 131, 86, 146, 128, - 147, 179, 132, 138, 139, 133, 140, 86, 86, 148, - 87, 150, 134, 141, 88, 149, 142, 162, 86, 162, - 162, 151, 162, 143, 174, 152, 153, 144, 145, 90, - 180, 90, 90, 167, 90, 167, 167, 172, 167, 172, - 172, 170, 172, 175, 175, 85, 86, 85, 85, 90, - 85, 90, 90, 86, 90, 86, 85, 178, 182, 86, - 90, 91, 183, 86, 86, 86, 181, 86, 86, 86, - 195, 188, 186, 86, 86, 184, 86, 189, 187, 190, - 86, 86, 86, 173, 86, 191, 192, 197, 194, 196, + 157, 124, 131, 138, 87, 125, 132, 128, 88, 129, + 176, 176, 133, 139, 140, 134, 141, 86, 86, 86, + 86, 179, 135, 142, 86, 147, 143, 148, 86, 86, + 86, 181, 183, 144, 151, 180, 149, 145, 146, 86, + 182, 86, 150, 206, 152, 175, 208, 86, 153, 154, + 163, 225, 163, 163, 90, 163, 90, 90, 168, 90, + 168, 168, 173, 168, 173, 173, 171, 173, 85, 86, + 85, 85, 90, 85, 90, 90, 86, 90, 86, 85, + 86, 184, 86, 90, 91, 187, 86, 192, 193, 86, + 86, 196, 189, 86, 185, 86, 188, 86, 190, 86, - 193, 86, 203, 86, 198, 200, 201, 205, 86, 86, - 204, 199, 86, 202, 207, 209, 86, 213, 210, 86, - 86, 206, 208, 86, 216, 86, 86, 86, 86, 218, - 86, 211, 212, 219, 223, 215, 86, 225, 226, 86, - 224, 86, 214, 86, 217, 922, 221, 86, 227, 220, - 86, 222, 228, 86, 231, 86, 86, 86, 236, 86, - 233, 86, 86, 229, 234, 230, 238, 86, 248, 86, - 86, 232, 86, 86, 86, 239, 235, 86, 86, 237, - 244, 240, 241, 247, 249, 86, 250, 242, 243, 86, - 86, 245, 256, 86, 255, 246, 253, 86, 86, 259, + 191, 86, 194, 86, 198, 86, 174, 199, 195, 86, + 197, 86, 201, 202, 86, 200, 86, 204, 214, 210, + 203, 205, 211, 209, 86, 207, 86, 86, 86, 86, + 216, 217, 86, 222, 86, 212, 213, 219, 223, 226, + 227, 220, 224, 215, 86, 86, 86, 86, 86, 231, + 86, 218, 228, 229, 233, 86, 86, 221, 86, 230, + 235, 86, 238, 86, 236, 232, 234, 86, 86, 86, + 169, 240, 86, 86, 252, 250, 237, 86, 239, 86, + 241, 86, 246, 243, 86, 249, 242, 86, 245, 244, + 86, 253, 86, 247, 254, 86, 251, 248, 259, 255, - 86, 86, 86, 251, 86, 263, 252, 254, 260, 258, - 262, 257, 86, 264, 158, 158, 267, 266, 160, 168, - 261, 160, 265, 162, 168, 162, 162, 268, 162, 165, - 165, 167, 86, 167, 167, 90, 167, 90, 90, 172, - 90, 172, 172, 86, 172, 175, 175, 170, 269, 270, - 272, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 274, 277, 86, 280, 271, 276, 273, 275, 86, 86, - 283, 282, 279, 86, 286, 278, 86, 284, 288, 281, - 86, 287, 86, 289, 86, 86, 292, 86, 290, 86, - 297, 293, 299, 285, 86, 86, 294, 86, 304, 298, + 86, 86, 86, 257, 261, 86, 265, 86, 86, 258, + 256, 260, 264, 262, 86, 159, 159, 266, 86, 268, + 161, 269, 86, 161, 367, 263, 267, 163, 169, 163, + 163, 270, 163, 166, 166, 168, 274, 168, 168, 90, + 168, 90, 90, 173, 90, 173, 173, 86, 173, 176, + 176, 171, 271, 272, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 276, 86, 279, 282, 278, 273, 275, + 277, 86, 285, 284, 290, 281, 86, 280, 86, 286, + 86, 288, 283, 86, 289, 291, 86, 86, 86, 86, + 292, 86, 294, 86, 299, 86, 287, 295, 300, 86, - 300, 86, 295, 296, 86, 291, 301, 86, 86, 302, - 86, 306, 86, 307, 303, 86, 86, 86, 86, 86, - 86, 86, 86, 86, 314, 315, 308, 305, 321, 309, - 311, 310, 322, 312, 339, 313, 86, 316, 323, 324, - 317, 326, 318, 86, 325, 86, 328, 86, 86, 330, - 86, 331, 86, 327, 319, 86, 320, 86, 334, 86, - 86, 336, 86, 337, 86, 335, 332, 86, 329, 86, - 86, 333, 86, 86, 86, 343, 86, 338, 340, 341, - 342, 345, 86, 86, 344, 86, 86, 347, 86, 346, - 352, 86, 348, 86, 86, 353, 86, 86, 354, 358, + 302, 304, 296, 86, 303, 306, 86, 293, 297, 298, + 301, 86, 86, 86, 86, 86, 308, 86, 309, 86, + 86, 86, 310, 305, 86, 316, 317, 86, 311, 313, + 312, 167, 314, 86, 307, 86, 318, 315, 323, 319, + 326, 320, 86, 325, 324, 328, 86, 86, 327, 86, + 330, 86, 332, 321, 333, 322, 86, 329, 86, 336, + 86, 86, 331, 86, 86, 86, 337, 338, 339, 334, + 335, 340, 86, 86, 86, 86, 342, 86, 86, 341, + 343, 86, 86, 86, 345, 86, 86, 86, 86, 86, + 348, 350, 86, 355, 346, 344, 349, 351, 356, 86, - 349, 356, 350, 86, 361, 86, 86, 86, 351, 355, - 86, 86, 363, 364, 86, 86, 357, 86, 86, 367, - 86, 359, 360, 368, 366, 86, 362, 86, 86, 86, - 370, 428, 371, 365, 369, 168, 86, 86, 373, 374, - 86, 372, 375, 377, 86, 86, 378, 382, 86, 86, - 381, 380, 86, 86, 86, 86, 86, 86, 388, 389, - 386, 384, 390, 379, 86, 86, 376, 86, 86, 392, - 86, 383, 391, 86, 385, 86, 86, 86, 86, 387, - 399, 86, 402, 393, 394, 397, 86, 86, 86, 86, - 396, 395, 400, 86, 403, 401, 86, 86, 86, 405, + 352, 86, 86, 347, 86, 353, 357, 354, 359, 361, + 358, 86, 364, 86, 86, 86, 86, 370, 86, 366, + 86, 86, 371, 86, 360, 373, 86, 369, 86, 362, + 363, 86, 86, 365, 86, 368, 86, 376, 374, 378, + 372, 377, 86, 380, 169, 86, 375, 86, 86, 86, + 381, 86, 384, 86, 86, 86, 385, 383, 86, 391, + 389, 387, 392, 379, 86, 86, 86, 382, 86, 393, + 386, 394, 395, 86, 388, 86, 86, 86, 86, 86, + 86, 390, 86, 406, 402, 403, 86, 400, 396, 397, + 86, 399, 86, 86, 398, 404, 86, 405, 86, 408, - 86, 406, 166, 398, 407, 404, 86, 86, 86, 409, - 86, 408, 410, 86, 413, 415, 411, 417, 86, 412, - 86, 86, 86, 86, 416, 86, 422, 414, 86, 418, - 86, 420, 86, 421, 423, 86, 86, 86, 425, 86, - 86, 86, 429, 432, 86, 86, 419, 430, 86, 86, - 435, 86, 86, 426, 440, 431, 86, 427, 86, 424, - 86, 437, 86, 86, 433, 441, 434, 86, 439, 436, - 450, 86, 86, 86, 455, 442, 449, 451, 438, 86, - 86, 86, 86, 452, 564, 453, 456, 86, 443, 458, - 459, 444, 86, 457, 86, 462, 445, 446, 447, 448, + 86, 409, 86, 86, 86, 401, 412, 86, 86, 416, + 407, 413, 86, 86, 418, 86, 86, 414, 410, 411, + 86, 415, 86, 420, 419, 86, 86, 417, 86, 86, + 421, 86, 423, 424, 425, 426, 428, 86, 86, 86, + 86, 86, 433, 429, 86, 432, 86, 422, 86, 86, + 165, 431, 435, 86, 86, 438, 86, 86, 430, 86, + 427, 443, 440, 86, 434, 86, 444, 86, 436, 442, + 86, 437, 86, 86, 439, 466, 86, 445, 454, 441, + 86, 452, 86, 86, 86, 455, 458, 456, 453, 446, + 86, 86, 447, 465, 86, 86, 460, 448, 449, 450, - 460, 454, 86, 86, 86, 461, 86, 468, 86, 86, - 86, 463, 466, 467, 464, 469, 86, 465, 86, 470, - 86, 471, 86, 86, 472, 86, 86, 473, 474, 478, - 86, 86, 479, 86, 480, 86, 86, 496, 483, 86, - 484, 477, 475, 481, 485, 476, 86, 86, 86, 86, - 482, 488, 486, 489, 86, 86, 497, 491, 487, 498, - 86, 86, 86, 490, 495, 86, 499, 86, 500, 86, - 492, 86, 164, 493, 501, 494, 86, 86, 502, 511, - 86, 86, 513, 516, 86, 515, 503, 86, 504, 510, - 505, 168, 514, 527, 86, 518, 528, 512, 86, 517, + 451, 86, 791, 457, 459, 86, 463, 461, 462, 469, + 86, 464, 86, 86, 472, 86, 86, 474, 467, 470, + 86, 468, 471, 86, 475, 473, 86, 86, 86, 86, + 86, 86, 477, 482, 86, 86, 483, 86, 484, 86, + 478, 476, 487, 488, 86, 86, 481, 485, 479, 86, + 480, 86, 86, 499, 486, 86, 489, 490, 492, 494, + 493, 86, 501, 491, 495, 86, 500, 86, 86, 502, + 86, 86, 503, 86, 86, 86, 515, 496, 504, 86, + 497, 86, 498, 86, 505, 164, 86, 86, 506, 517, + 520, 514, 86, 519, 516, 522, 507, 86, 508, 86, - 86, 529, 86, 506, 530, 86, 507, 86, 508, 526, - 509, 86, 531, 519, 520, 86, 534, 86, 536, 532, - 533, 86, 86, 521, 86, 522, 523, 524, 86, 540, - 525, 86, 86, 542, 535, 86, 539, 86, 86, 541, - 86, 538, 549, 537, 86, 547, 546, 86, 86, 86, - 550, 543, 544, 548, 86, 554, 86, 545, 86, 552, - 86, 86, 86, 86, 551, 557, 558, 559, 553, 86, - 86, 86, 86, 86, 556, 565, 566, 86, 571, 561, - 86, 555, 560, 86, 568, 563, 562, 569, 86, 86, - 86, 572, 86, 567, 585, 86, 86, 163, 86, 86, + 509, 518, 536, 86, 532, 86, 521, 530, 531, 533, + 86, 534, 86, 510, 86, 86, 511, 169, 512, 86, + 513, 86, 539, 523, 524, 540, 86, 537, 538, 86, + 86, 86, 162, 525, 542, 526, 527, 528, 535, 544, + 529, 541, 86, 543, 86, 86, 548, 546, 86, 545, + 549, 86, 553, 551, 86, 554, 86, 86, 86, 550, + 86, 558, 86, 86, 86, 547, 552, 86, 86, 556, + 86, 86, 86, 561, 557, 160, 555, 562, 563, 560, + 86, 86, 86, 568, 564, 567, 565, 559, 566, 86, + 86, 569, 570, 86, 572, 86, 575, 573, 86, 86, - 86, 580, 570, 573, 577, 574, 576, 586, 575, 581, - 582, 86, 86, 583, 584, 578, 587, 579, 86, 590, - 591, 589, 588, 86, 86, 86, 86, 86, 593, 592, - 594, 595, 86, 86, 597, 86, 599, 86, 86, 603, - 86, 86, 602, 600, 86, 86, 86, 86, 598, 86, - 604, 86, 596, 601, 607, 86, 608, 86, 609, 605, - 86, 86, 86, 86, 86, 86, 610, 611, 606, 86, - 619, 86, 615, 86, 614, 616, 617, 86, 618, 613, - 612, 86, 621, 86, 620, 86, 623, 86, 86, 86, - 86, 86, 86, 86, 86, 622, 625, 634, 626, 161, + 86, 576, 86, 86, 589, 86, 86, 592, 86, 571, + 86, 584, 574, 577, 581, 578, 580, 590, 579, 585, + 586, 86, 86, 587, 588, 582, 591, 583, 594, 86, + 86, 593, 86, 86, 86, 598, 596, 597, 86, 86, + 86, 601, 86, 599, 603, 86, 86, 86, 86, 606, + 595, 604, 607, 86, 86, 602, 86, 608, 86, 600, + 605, 86, 86, 86, 613, 86, 611, 612, 86, 609, + 86, 86, 614, 86, 86, 86, 619, 610, 620, 86, + 615, 86, 622, 618, 623, 616, 86, 621, 617, 86, + 625, 86, 86, 627, 86, 86, 86, 86, 86, 86, - 636, 86, 628, 86, 624, 86, 86, 627, 633, 629, - 631, 630, 86, 632, 635, 638, 86, 637, 86, 86, - 86, 641, 644, 86, 639, 647, 86, 640, 86, 646, - 86, 86, 86, 642, 86, 643, 86, 650, 86, 86, - 86, 86, 653, 645, 649, 654, 656, 86, 86, 648, - 86, 86, 86, 86, 655, 86, 651, 652, 86, 670, - 86, 86, 86, 657, 659, 692, 673, 658, 86, 660, - 668, 671, 86, 669, 661, 676, 662, 672, 86, 86, - 86, 680, 663, 677, 664, 674, 681, 665, 666, 675, - 86, 86, 86, 86, 667, 678, 685, 682, 679, 86, + 86, 86, 86, 629, 86, 630, 638, 624, 639, 86, + 632, 86, 86, 626, 86, 628, 641, 631, 633, 635, + 634, 640, 636, 637, 86, 86, 86, 86, 642, 645, + 86, 648, 643, 86, 651, 644, 86, 86, 86, 646, + 86, 650, 86, 86, 86, 647, 86, 654, 657, 86, + 653, 86, 86, 649, 658, 86, 86, 660, 652, 86, + 86, 86, 86, 86, 86, 655, 659, 656, 674, 86, + 86, 661, 663, 696, 677, 662, 86, 664, 673, 86, + 672, 675, 665, 177, 666, 676, 86, 86, 86, 86, + 667, 681, 668, 678, 680, 669, 670, 679, 684, 685, - 86, 86, 688, 86, 86, 683, 86, 684, 86, 690, - 86, 86, 86, 86, 86, 86, 86, 696, 86, 691, - 687, 693, 686, 697, 700, 701, 86, 168, 689, 694, - 699, 702, 698, 695, 703, 86, 86, 86, 704, 86, - 86, 86, 86, 86, 86, 86, 710, 712, 86, 86, - 705, 707, 715, 86, 708, 706, 711, 714, 716, 709, - 717, 718, 86, 86, 86, 86, 720, 86, 713, 86, - 86, 86, 86, 86, 719, 723, 724, 729, 86, 721, - 725, 86, 730, 86, 722, 732, 86, 726, 728, 734, - 727, 731, 733, 86, 737, 86, 735, 86, 736, 86, + 86, 86, 671, 682, 86, 86, 683, 689, 86, 86, + 686, 86, 692, 86, 86, 687, 86, 688, 86, 694, + 86, 86, 86, 86, 86, 701, 86, 175, 700, 691, + 86, 690, 86, 698, 86, 695, 697, 86, 693, 705, + 704, 703, 169, 702, 699, 707, 706, 709, 86, 708, + 86, 86, 86, 86, 86, 86, 86, 716, 714, 86, + 719, 86, 86, 86, 711, 86, 720, 710, 712, 715, + 713, 718, 86, 722, 721, 86, 86, 723, 724, 86, + 86, 86, 86, 717, 86, 728, 727, 86, 86, 86, + 725, 733, 86, 729, 829, 726, 734, 86, 736, 86, - 86, 738, 740, 86, 86, 86, 739, 86, 742, 743, - 86, 86, 86, 86, 86, 741, 746, 747, 86, 745, - 86, 751, 750, 86, 86, 86, 86, 86, 752, 744, - 754, 86, 756, 86, 86, 86, 86, 748, 86, 749, - 755, 753, 86, 759, 762, 86, 86, 763, 757, 765, - 86, 760, 86, 86, 766, 758, 761, 767, 768, 764, - 86, 770, 86, 86, 86, 86, 86, 777, 773, 774, - 769, 771, 86, 86, 86, 779, 86, 86, 772, 775, - 780, 776, 782, 778, 86, 86, 86, 783, 86, 86, - 784, 86, 86, 787, 86, 86, 789, 791, 86, 86, + 730, 738, 735, 731, 732, 737, 86, 86, 739, 86, + 740, 86, 741, 744, 742, 86, 86, 86, 86, 743, + 86, 86, 747, 86, 746, 86, 86, 745, 750, 86, + 755, 749, 86, 86, 751, 748, 86, 754, 86, 86, + 86, 86, 756, 86, 760, 758, 86, 86, 86, 752, + 86, 753, 86, 763, 766, 759, 86, 757, 86, 86, + 86, 761, 86, 767, 86, 774, 764, 174, 762, 86, + 768, 86, 765, 86, 769, 86, 86, 773, 777, 770, + 775, 778, 771, 772, 86, 776, 781, 86, 86, 779, + 86, 783, 86, 86, 784, 86, 782, 86, 786, 780, - 86, 86, 781, 86, 785, 788, 797, 786, 792, 86, - 795, 794, 86, 159, 790, 796, 86, 86, 86, 793, - 799, 802, 798, 800, 801, 86, 86, 804, 86, 806, - 803, 86, 808, 86, 86, 86, 807, 809, 86, 86, - 812, 86, 805, 86, 811, 813, 86, 86, 86, 819, - 86, 86, 816, 86, 814, 86, 815, 821, 810, 86, - 86, 824, 86, 86, 822, 826, 817, 818, 828, 820, - 825, 823, 86, 86, 86, 86, 831, 86, 830, 835, - 827, 832, 86, 86, 829, 86, 833, 86, 86, 837, - 86, 86, 86, 86, 86, 843, 86, 86, 844, 86, + 787, 86, 86, 86, 86, 86, 788, 86, 793, 795, + 86, 789, 86, 86, 86, 86, 785, 792, 801, 86, + 790, 796, 86, 799, 86, 794, 797, 800, 802, 798, + 86, 804, 805, 803, 86, 86, 86, 808, 806, 86, + 810, 807, 86, 812, 86, 86, 86, 811, 813, 86, + 86, 816, 86, 809, 86, 815, 817, 86, 86, 86, + 823, 86, 86, 820, 169, 818, 86, 819, 825, 814, + 86, 86, 828, 86, 86, 826, 830, 821, 822, 832, + 824, 86, 827, 86, 835, 86, 833, 86, 834, 836, + 86, 831, 86, 837, 86, 86, 839, 86, 86, 841, - 834, 86, 836, 86, 86, 845, 838, 86, 839, 840, - 86, 841, 846, 842, 847, 86, 852, 86, 86, 850, - 86, 848, 86, 849, 86, 851, 86, 86, 857, 853, - 854, 86, 86, 86, 86, 86, 855, 86, 866, 856, - 864, 86, 86, 859, 858, 867, 86, 86, 865, 860, - 861, 862, 863, 86, 86, 86, 868, 86, 870, 872, - 86, 86, 86, 86, 86, 869, 176, 871, 876, 877, - 878, 873, 86, 875, 86, 86, 874, 879, 86, 880, - 881, 86, 882, 86, 86, 168, 86, 883, 86, 888, - 887, 86, 885, 86, 86, 884, 886, 889, 86, 86, + 86, 86, 86, 847, 86, 842, 838, 86, 848, 86, + 86, 86, 86, 86, 840, 86, 843, 86, 844, 849, + 845, 86, 846, 86, 86, 852, 850, 851, 856, 854, + 855, 86, 853, 86, 86, 857, 858, 861, 86, 86, + 86, 86, 859, 86, 86, 86, 870, 86, 86, 868, + 860, 86, 871, 86, 86, 863, 862, 86, 864, 865, + 866, 869, 867, 86, 86, 872, 86, 86, 874, 876, + 877, 86, 873, 86, 86, 86, 86, 875, 880, 881, + 879, 883, 882, 86, 86, 878, 86, 86, 884, 86, + 86, 885, 169, 886, 86, 86, 887, 891, 888, 889, - 891, 86, 890, 895, 86, 86, 896, 898, 86, 892, - 86, 86, 893, 86, 897, 899, 86, 902, 86, 86, - 894, 903, 900, 86, 86, 86, 908, 86, 904, 86, - 901, 905, 86, 909, 910, 86, 907, 86, 86, 86, - 86, 906, 86, 86, 86, 929, 924, 911, 923, 925, - 86, 926, 86, 921, 928, 86, 930, 913, 86, 86, - 912, 86, 86, 914, 86, 935, 915, 86, 927, 931, - 916, 86, 943, 917, 86, 86, 933, 932, 86, 86, - 918, 919, 946, 920, 934, 86, 936, 937, 86, 938, - 86, 86, 939, 945, 948, 944, 950, 940, 951, 86, + 86, 890, 86, 892, 895, 86, 893, 86, 894, 86, + 899, 86, 86, 86, 900, 902, 86, 903, 86, 86, + 896, 897, 901, 906, 86, 86, 86, 904, 86, 86, + 898, 86, 908, 912, 86, 86, 86, 909, 905, 86, + 86, 86, 913, 914, 907, 86, 86, 86, 86, 911, + 86, 910, 86, 915, 928, 86, 927, 86, 929, 930, + 925, 917, 167, 926, 86, 916, 86, 86, 918, 937, + 86, 919, 86, 931, 932, 920, 86, 933, 921, 86, + 934, 86, 936, 935, 939, 922, 923, 938, 924, 86, + 86, 86, 940, 941, 947, 942, 86, 86, 943, 86, - 86, 955, 86, 941, 942, 954, 956, 86, 86, 86, - 949, 174, 947, 86, 952, 957, 86, 958, 960, 86, - 961, 86, 86, 86, 959, 953, 962, 86, 964, 86, - 963, 965, 86, 86, 967, 966, 86, 86, 86, 86, - 969, 86, 973, 86, 86, 86, 972, 86, 968, 86, - 976, 86, 982, 86, 980, 978, 86, 970, 971, 974, - 86, 975, 86, 977, 983, 1001, 86, 981, 986, 984, - 86, 985, 987, 979, 86, 86, 989, 86, 86, 86, - 988, 86, 86, 991, 990, 993, 86, 992, 994, 86, - 86, 86, 86, 86, 86, 1000, 86, 997, 995, 86, + 86, 950, 948, 944, 952, 86, 86, 86, 86, 945, + 946, 954, 86, 959, 949, 958, 86, 962, 960, 86, + 953, 86, 956, 951, 955, 86, 86, 86, 961, 86, + 965, 964, 966, 957, 86, 86, 86, 967, 969, 86, + 963, 968, 86, 86, 970, 86, 86, 971, 86, 973, + 86, 86, 977, 86, 86, 86, 86, 980, 976, 86, + 86, 86, 972, 1030, 984, 165, 974, 975, 978, 979, + 86, 982, 981, 86, 986, 86, 86, 990, 985, 987, + 991, 989, 983, 86, 988, 86, 86, 86, 993, 86, + 86, 86, 992, 994, 86, 995, 997, 86, 86, 996, - 998, 1003, 86, 86, 1004, 86, 86, 1002, 86, 996, - 86, 86, 86, 999, 1006, 1007, 1009, 86, 86, 86, - 1011, 1010, 1005, 1012, 86, 86, 86, 86, 1019, 86, - 1017, 86, 1008, 1013, 1015, 1018, 86, 86, 86, 1016, - 86, 1027, 86, 1024, 1020, 86, 1022, 1026, 86, 1014, - 1021, 1025, 86, 86, 86, 86, 86, 1029, 86, 86, - 86, 86, 1023, 1035, 86, 1037, 86, 1040, 86, 1028, - 86, 173, 86, 86, 1030, 1031, 1032, 1041, 86, 1034, - 1033, 86, 1038, 1036, 1042, 1039, 86, 1045, 86, 1043, - 1048, 86, 1044, 1047, 86, 86, 86, 86, 86, 86, + 998, 86, 86, 86, 86, 86, 999, 86, 1001, 1004, + 86, 1002, 1008, 86, 1007, 86, 1005, 86, 86, 86, + 1000, 1006, 86, 86, 1003, 86, 86, 86, 1010, 86, + 1013, 1011, 1015, 86, 86, 1014, 1009, 86, 1016, 86, + 86, 1017, 86, 1021, 86, 1023, 1019, 1012, 1022, 86, + 86, 86, 1020, 86, 86, 1024, 1028, 1031, 86, 1018, + 1026, 1025, 86, 86, 1029, 86, 86, 1033, 86, 86, + 86, 86, 86, 86, 1027, 1032, 1041, 86, 86, 1039, + 86, 1044, 1294, 86, 1034, 1035, 1036, 86, 86, 1038, + 1037, 1042, 1045, 86, 1040, 86, 1043, 1047, 86, 86, - 1046, 86, 86, 1057, 1050, 1052, 1058, 1060, 86, 86, - 86, 86, 86, 86, 1049, 86, 1051, 1063, 1053, 1065, - 1055, 1054, 1056, 86, 1059, 1061, 1064, 86, 1062, 86, - 86, 86, 86, 86, 1071, 1069, 1072, 86, 86, 1076, - 1073, 1067, 86, 86, 86, 86, 1066, 1078, 86, 1068, - 86, 86, 1070, 86, 1081, 86, 1074, 1075, 1080, 1082, - 168, 86, 86, 1077, 86, 1084, 1083, 86, 1079, 86, - 1085, 86, 1088, 86, 86, 86, 86, 1086, 86, 1101, - 86, 86, 1087, 1089, 1102, 1104, 86, 1091, 1092, 86, - 86, 86, 86, 1106, 1093, 1090, 1103, 1094, 86, 86, + 1046, 1049, 1052, 86, 1051, 86, 86, 1048, 86, 86, + 86, 86, 1050, 86, 86, 1054, 1061, 1056, 1062, 86, + 1064, 86, 86, 86, 86, 1053, 86, 86, 1055, 86, + 1057, 1069, 1059, 1058, 1060, 1063, 1067, 1065, 1068, 1066, + 86, 86, 86, 86, 86, 1076, 1073, 86, 1070, 86, + 1075, 86, 1071, 86, 86, 1080, 1077, 86, 1082, 86, + 1072, 86, 86, 86, 1074, 1078, 1085, 1079, 1084, 86, + 86, 1086, 169, 86, 1088, 86, 1089, 1081, 86, 86, + 1083, 86, 86, 86, 1087, 86, 1092, 86, 86, 86, + 1105, 86, 86, 1108, 86, 1090, 1106, 1095, 1091, 86, - 86, 1095, 86, 1096, 1120, 1109, 1107, 1097, 86, 1098, - 86, 86, 1111, 1108, 1099, 1105, 1110, 1112, 86, 1100, - 1113, 86, 1114, 86, 86, 1115, 86, 86, 86, 1118, - 86, 1121, 1133, 86, 86, 1130, 86, 1116, 1117, 1119, - 1126, 1122, 1125, 86, 1124, 1128, 1129, 1132, 1127, 1123, - 1131, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 1147, 86, 1144, 86, 86, 86, 1148, 86, 1143, - 86, 1146, 86, 1134, 1135, 86, 1136, 86, 1145, 1150, - 1149, 1137, 1154, 1138, 168, 1151, 1153, 1152, 86, 1139, - 86, 86, 86, 1158, 1140, 1141, 1155, 86, 1160, 86, + 1096, 1093, 86, 1094, 86, 1097, 1107, 86, 1110, 1098, + 86, 86, 1113, 1099, 86, 1100, 86, 1111, 86, 1101, + 86, 1102, 1119, 86, 1109, 1112, 1103, 1115, 1114, 1117, + 1118, 1104, 1116, 86, 1120, 86, 86, 86, 1121, 86, + 1122, 86, 1125, 86, 86, 86, 86, 86, 1124, 1131, + 1123, 1135, 1130, 1126, 1129, 1132, 86, 1128, 1133, 1134, + 86, 86, 1127, 1136, 86, 86, 1138, 86, 86, 86, + 86, 86, 86, 86, 1151, 1148, 86, 86, 86, 86, + 1147, 1152, 86, 1150, 86, 1139, 1149, 1137, 86, 1140, + 1153, 1154, 86, 1158, 1141, 86, 1142, 1155, 1156, 86, - 86, 1142, 1156, 86, 1161, 1163, 86, 86, 86, 1164, - 1157, 86, 86, 1166, 1168, 1159, 86, 86, 86, 86, - 86, 1169, 86, 1162, 1174, 1167, 1165, 1171, 1172, 86, - 86, 86, 86, 86, 86, 86, 1170, 1177, 1173, 86, - 1175, 86, 86, 86, 86, 86, 86, 86, 1176, 1179, - 1182, 1181, 1183, 1178, 1180, 86, 1186, 86, 86, 1185, - 1187, 1184, 86, 86, 1192, 1189, 1190, 86, 86, 86, - 86, 1188, 1191, 1194, 1195, 1196, 1197, 1199, 1193, 86, - 1198, 86, 86, 86, 1202, 86, 86, 86, 1204, 1203, - 86, 1205, 86, 86, 1200, 1206, 86, 86, 1201, 1207, + 1157, 86, 1143, 86, 1160, 86, 1159, 1144, 1145, 1164, + 86, 86, 86, 1161, 1146, 1165, 1167, 86, 86, 1162, + 1168, 86, 86, 1163, 1172, 86, 1170, 86, 86, 86, + 86, 86, 1166, 1173, 86, 1178, 86, 1169, 1171, 86, + 1175, 86, 86, 1176, 86, 1177, 1174, 1181, 1179, 86, + 86, 86, 86, 86, 86, 1180, 86, 86, 86, 86, + 1186, 1187, 1188, 1183, 1182, 1185, 1190, 86, 86, 86, + 1184, 1189, 86, 1191, 86, 86, 164, 1196, 1193, 86, + 1198, 1192, 86, 1195, 1199, 86, 86, 1194, 1203, 1197, + 1200, 1201, 86, 1202, 86, 86, 1206, 86, 86, 1204, - 86, 1213, 86, 86, 86, 1215, 1208, 86, 86, 1209, - 1211, 86, 86, 1217, 1210, 1212, 86, 86, 1216, 1219, - 86, 166, 1214, 86, 86, 1220, 1218, 86, 1221, 1222, - 86, 86, 1224, 1223, 86, 1225, 1228, 86, 86, 1230, - 1227, 1231, 86, 1226, 1229, 86, 1232, 86, 86, 86, - 1235, 1234, 86, 86, 86, 86, 86, 1241, 1239, 86, - 1242, 86, 86, 86, 1243, 1233, 86, 1244, 86, 1240, - 1236, 1246, 1237, 1245, 1238, 86, 1249, 86, 86, 1247, - 1251, 86, 86, 1250, 86, 86, 86, 86, 86, 86, - 86, 1256, 1257, 1252, 1253, 1248, 86, 86, 86, 86, + 1210, 1207, 86, 86, 1208, 86, 86, 1209, 86, 86, + 86, 1205, 1211, 1217, 86, 1219, 86, 86, 86, 86, + 1223, 86, 1213, 1215, 1216, 1212, 1214, 86, 86, 86, + 86, 1220, 1221, 86, 1218, 1225, 86, 86, 1226, 1224, + 86, 1228, 1222, 86, 86, 1227, 1231, 86, 1229, 1230, + 1234, 1235, 86, 1233, 86, 86, 86, 86, 86, 86, + 1232, 1238, 86, 1236, 86, 1239, 86, 86, 1245, 1243, + 1246, 86, 86, 1237, 86, 1240, 86, 1247, 1241, 86, + 1244, 86, 1242, 1250, 1248, 86, 1249, 1253, 86, 86, + 86, 1252, 86, 86, 86, 1254, 1255, 86, 86, 86, - 86, 1258, 1259, 1263, 1254, 1264, 1255, 86, 86, 86, - 1261, 86, 1266, 86, 1260, 1265, 1267, 86, 1262, 86, - 1271, 86, 86, 86, 86, 1270, 86, 1268, 86, 1277, - 86, 1273, 168, 1269, 86, 86, 86, 86, 86, 1272, - 86, 1282, 1274, 164, 86, 1284, 86, 1276, 1279, 1281, - 1280, 1275, 1278, 1283, 1286, 1287, 1288, 86, 1285, 86, - 86, 86, 1289, 86, 1291, 1290, 86, 86, 86, 86, - 86, 86, 86, 1294, 86, 1300, 86, 86, 1297, 86, - 1292, 1293, 86, 86, 1295, 86, 163, 1298, 1304, 1296, - 86, 1301, 86, 1299, 86, 1306, 1310, 1302, 1303, 86, + 86, 1256, 1260, 1251, 86, 86, 1258, 1257, 1261, 1263, + 86, 1262, 86, 1259, 86, 1267, 1268, 86, 86, 1271, + 86, 86, 86, 1270, 1265, 86, 86, 86, 1264, 86, + 1275, 86, 1269, 1266, 86, 86, 86, 86, 169, 1274, + 1273, 1281, 86, 86, 1272, 1277, 86, 1276, 86, 86, + 1278, 86, 86, 1286, 86, 86, 1280, 1283, 1282, 1301, + 1279, 1284, 1290, 1285, 1287, 1288, 86, 1291, 86, 1289, + 1292, 86, 86, 86, 86, 86, 1293, 1295, 86, 86, + 86, 86, 86, 1298, 1304, 86, 86, 86, 1296, 1297, + 86, 86, 86, 86, 1299, 1442, 1302, 86, 1308, 1300, - 1311, 1314, 86, 86, 1307, 1305, 1308, 1312, 86, 1309, - 1313, 86, 86, 86, 86, 1316, 86, 1315, 86, 86, - 86, 1320, 86, 1319, 1323, 86, 86, 1317, 86, 1327, - 86, 1318, 1322, 86, 86, 86, 1324, 1321, 1328, 1325, - 1329, 86, 86, 1333, 1326, 1332, 1330, 1331, 86, 86, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 1339, - 86, 86, 86, 1334, 1335, 1337, 1338, 1340, 1344, 1336, - 86, 86, 86, 1341, 86, 1343, 1345, 1342, 1346, 1348, - 1347, 86, 86, 86, 86, 86, 1349, 86, 1356, 86, - 86, 1350, 86, 1351, 86, 1359, 86, 86, 1354, 1353, + 1305, 1303, 1310, 86, 86, 1306, 1307, 1314, 86, 1315, + 1309, 1311, 86, 1312, 1317, 86, 1313, 1316, 86, 86, + 86, 86, 1322, 1320, 86, 1318, 86, 86, 86, 1324, + 86, 86, 86, 1319, 86, 1323, 1327, 1331, 86, 1329, + 1321, 86, 1326, 86, 86, 86, 1325, 86, 1328, 1332, + 1333, 1330, 1335, 86, 86, 86, 86, 1336, 1338, 86, + 86, 1334, 86, 1337, 86, 86, 86, 1343, 86, 86, + 1339, 1341, 86, 86, 86, 1340, 1344, 1342, 1348, 86, + 86, 86, 86, 86, 1345, 86, 1347, 1346, 1349, 1350, + 1352, 86, 86, 1360, 1351, 1353, 86, 1355, 1354, 86, - 1357, 1352, 1362, 1358, 1355, 86, 1364, 86, 1361, 86, - 1360, 1365, 86, 86, 1369, 1366, 86, 1363, 86, 1379, - 1383, 1367, 1368, 86, 1370, 86, 86, 1378, 1371, 1377, - 86, 1372, 1373, 86, 1380, 1381, 1374, 86, 86, 86, - 86, 86, 1375, 86, 1384, 1385, 1376, 1382, 86, 1386, - 86, 1388, 86, 86, 86, 1389, 86, 1390, 1387, 86, - 86, 1391, 86, 1393, 1395, 86, 1398, 1399, 86, 1525, - 1400, 1392, 86, 86, 1396, 86, 1394, 1402, 86, 1401, - 1397, 86, 1403, 86, 1404, 86, 1405, 1411, 1406, 86, - 1407, 1408, 1409, 1412, 86, 86, 1410, 1415, 86, 1413, + 86, 1356, 86, 86, 86, 86, 1358, 86, 1357, 162, + 1363, 1361, 1359, 86, 1362, 86, 1368, 1367, 1366, 86, + 1365, 1369, 86, 1364, 86, 1373, 1370, 86, 86, 1371, + 1383, 86, 1372, 86, 1374, 1405, 86, 1382, 1375, 86, + 1381, 1376, 1377, 86, 1384, 86, 1378, 1387, 1386, 86, + 1385, 86, 1379, 86, 1388, 86, 1380, 86, 1390, 86, + 1389, 86, 1392, 86, 86, 86, 1393, 86, 1394, 86, + 86, 86, 1391, 160, 1397, 1399, 86, 86, 1402, 1395, + 1403, 1404, 1396, 1400, 86, 86, 86, 1398, 1414, 1401, + 86, 1411, 1412, 1413, 1406, 86, 86, 86, 86, 1407, - 86, 86, 1416, 86, 1414, 86, 1419, 1417, 86, 86, - 86, 86, 1425, 86, 1426, 86, 86, 1421, 86, 1420, - 86, 86, 1418, 1427, 86, 1424, 1429, 86, 1422, 1423, - 1428, 86, 86, 1431, 1430, 1435, 86, 1434, 86, 1437, - 86, 86, 86, 1438, 86, 1432, 86, 1439, 86, 1443, - 86, 1440, 86, 1436, 1445, 86, 1433, 1442, 86, 1446, - 86, 1441, 86, 86, 86, 1447, 1450, 86, 86, 86, - 86, 86, 1444, 1452, 86, 1467, 1454, 86, 86, 86, - 1456, 86, 1457, 1448, 1449, 86, 1455, 86, 1451, 1453, - 1458, 86, 86, 1463, 1459, 1461, 1460, 1462, 86, 86, + 1415, 1408, 86, 1409, 1419, 1410, 86, 86, 86, 1420, + 86, 1418, 1416, 1423, 86, 1421, 1417, 86, 86, 86, + 86, 1429, 86, 1430, 86, 86, 1425, 86, 1424, 1422, + 86, 86, 1431, 86, 1428, 1433, 86, 1426, 1427, 1432, + 86, 86, 1435, 1439, 86, 1434, 1438, 86, 1441, 86, + 86, 86, 86, 1443, 1436, 86, 1444, 1447, 86, 86, + 1449, 86, 1440, 86, 1446, 1437, 86, 1450, 1451, 86, + 86, 1445, 1454, 86, 86, 86, 86, 86, 1456, 1448, + 86, 86, 1458, 1460, 86, 86, 86, 86, 1462, 1459, + 1452, 1453, 1464, 86, 1455, 86, 1457, 86, 86, 86, - 86, 86, 1465, 1464, 86, 1466, 1468, 86, 86, 86, - 86, 1473, 1474, 1470, 1475, 1471, 86, 86, 86, 1476, - 86, 86, 1469, 1472, 86, 86, 1480, 86, 168, 1477, - 86, 86, 1479, 1485, 1486, 1478, 86, 86, 86, 86, - 86, 1488, 1487, 1482, 1481, 86, 86, 86, 86, 86, - 1483, 1489, 86, 1496, 1484, 86, 86, 1490, 1491, 86, - 1493, 86, 86, 1494, 1495, 1492, 1500, 1501, 86, 86, - 86, 86, 86, 1505, 1503, 1497, 86, 1499, 1506, 86, - 1508, 1498, 86, 86, 1509, 1502, 86, 86, 86, 1504, - 1507, 86, 1514, 1517, 86, 1515, 1510, 1516, 1511, 1519, + 1466, 1463, 1461, 1468, 1470, 1467, 86, 1465, 86, 1469, + 86, 1471, 86, 1472, 86, 86, 86, 1477, 1478, 1480, + 1474, 86, 1475, 86, 86, 86, 1479, 86, 86, 1476, + 1473, 86, 1484, 86, 86, 169, 1481, 86, 86, 1489, + 1490, 86, 1483, 86, 86, 86, 86, 1482, 86, 1491, + 1486, 86, 1492, 1497, 1485, 86, 86, 1487, 86, 86, + 1500, 1488, 1493, 86, 1495, 86, 86, 86, 1494, 1498, + 86, 1496, 1504, 86, 1499, 1505, 86, 86, 1507, 86, + 1509, 86, 86, 1501, 1503, 1510, 86, 86, 86, 1513, + 1502, 1512, 86, 1506, 86, 86, 1508, 1511, 86, 1518, - 86, 1512, 86, 86, 1513, 86, 1520, 1522, 1518, 86, - 86, 1521, 1523, 86, 86, 1527, 86, 86, 86, 1528, - 86, 86, 1524, 1531, 86, 86, 86, 1526, 86, 1536, - 1537, 86, 86, 1540, 1529, 1533, 86, 1530, 86, 86, - 1532, 86, 1534, 1535, 86, 86, 86, 86, 1541, 1538, - 86, 1539, 1547, 86, 86, 1543, 86, 1542, 1549, 1544, - 1545, 1548, 86, 86, 1552, 1546, 86, 86, 1550, 86, - 1559, 1551, 86, 1556, 1557, 86, 1554, 1558, 1560, 86, - 86, 1553, 86, 86, 86, 86, 1565, 1566, 1561, 1555, - 1564, 1562, 86, 86, 1567, 86, 1568, 86, 1569, 86, + 1521, 1514, 1519, 1515, 1520, 86, 1523, 1516, 86, 86, + 1517, 86, 86, 1524, 86, 1526, 86, 86, 86, 1522, + 1527, 86, 1525, 1531, 86, 86, 86, 1528, 86, 1532, + 86, 1535, 86, 86, 1530, 1533, 86, 1540, 86, 86, + 1529, 86, 1541, 1544, 1537, 1534, 86, 86, 1536, 86, + 1538, 1539, 86, 86, 86, 86, 86, 1542, 1545, 86, + 1543, 1551, 86, 86, 1553, 86, 1546, 1547, 86, 1548, + 1549, 1550, 1552, 86, 1556, 86, 86, 1555, 1557, 1561, + 1554, 86, 1560, 1562, 1558, 86, 86, 1564, 86, 86, + 86, 86, 86, 86, 86, 1569, 1559, 1565, 1568, 1570, - 86, 1570, 86, 1571, 86, 1563, 86, 86, 86, 86, - 86, 86, 1578, 1572, 86, 86, 1577, 86, 86, 1574, - 86, 86, 1575, 1580, 1573, 1576, 1581, 1584, 86, 1589, - 1586, 1582, 1585, 86, 1579, 1587, 86, 1583, 86, 86, - 1588, 86, 86, 86, 86, 86, 1597, 1593, 86, 86, - 1592, 86, 86, 1598, 1600, 86, 86, 1590, 1591, 1603, - 86, 1602, 1594, 1596, 1595, 86, 86, 86, 86, 86, - 1601, 86, 1611, 161, 86, 1599, 86, 1609, 86, 86, - 86, 1612, 1614, 86, 1617, 1604, 1605, 1606, 1607, 1610, - 1608, 1613, 1615, 86, 86, 86, 86, 86, 86, 1616, + 1563, 86, 1571, 86, 1572, 86, 1566, 86, 86, 86, + 1573, 1574, 86, 1567, 86, 86, 1576, 86, 1575, 86, + 86, 86, 86, 1582, 86, 86, 1581, 86, 86, 1578, + 1585, 86, 1588, 1577, 1579, 1584, 1580, 1589, 86, 86, + 1590, 86, 1586, 86, 1583, 1591, 86, 86, 1593, 86, + 1587, 86, 86, 86, 86, 1601, 1597, 86, 1596, 1592, + 1594, 86, 1595, 86, 1604, 86, 86, 86, 1602, 86, + 86, 1598, 1600, 1599, 1607, 1606, 86, 86, 86, 86, + 86, 86, 86, 1603, 1605, 1608, 1609, 86, 1615, 86, + 86, 3295, 1612, 1616, 1622, 1610, 1611, 1614, 1618, 86, - 1621, 86, 86, 86, 1622, 1619, 86, 1625, 1618, 86, - 1620, 1629, 86, 86, 86, 86, 1631, 1623, 1626, 1624, - 1630, 86, 86, 86, 86, 1628, 1627, 1633, 1632, 1634, - 86, 86, 86, 1640, 1635, 1636, 1641, 86, 86, 86, - 86, 1637, 86, 1639, 86, 1645, 1646, 1644, 86, 86, - 1638, 86, 86, 1648, 86, 86, 1642, 86, 1649, 1650, - 86, 1643, 86, 86, 86, 1651, 1653, 1652, 1647, 86, - 1656, 1655, 86, 86, 86, 86, 86, 1654, 86, 1657, - 1660, 86, 1662, 86, 86, 1663, 86, 86, 1661, 86, - 1668, 86, 1659, 1658, 86, 86, 1664, 86, 1665, 86, + 1613, 1617, 1619, 86, 86, 86, 86, 86, 86, 1620, + 1621, 86, 86, 1625, 1623, 86, 86, 1626, 86, 86, + 1624, 1629, 1633, 86, 1634, 1635, 1628, 1630, 86, 86, + 1627, 86, 86, 86, 1632, 1631, 86, 1638, 86, 86, + 1639, 86, 1637, 1636, 1644, 1640, 1645, 86, 86, 86, + 86, 86, 86, 1641, 86, 1649, 1642, 1648, 1650, 1643, + 1652, 86, 86, 86, 86, 1653, 1646, 1654, 86, 86, + 1647, 1651, 86, 86, 86, 1657, 86, 1660, 86, 1655, + 86, 86, 86, 1659, 86, 1656, 86, 1664, 86, 1666, + 86, 86, 86, 1658, 86, 1661, 86, 1672, 1665, 1662, - 1671, 1669, 1673, 86, 86, 86, 1667, 86, 1674, 1666, - 168, 1675, 1670, 86, 1672, 86, 1676, 1679, 1678, 1677, - 86, 1682, 86, 86, 1680, 1681, 1683, 86, 86, 86, - 86, 86, 1690, 86, 86, 86, 86, 86, 1691, 1694, - 86, 1684, 1685, 1688, 1695, 86, 1686, 1687, 86, 86, - 1696, 1698, 1700, 1699, 1692, 1689, 1693, 1697, 86, 86, - 1702, 86, 1704, 86, 86, 86, 86, 86, 86, 86, - 1709, 1706, 1707, 86, 1710, 1703, 86, 86, 86, 1701, - 86, 86, 86, 1705, 1714, 86, 1715, 86, 86, 159, - 1711, 1722, 1708, 1713, 1717, 1712, 86, 86, 1716, 1719, + 1663, 1667, 86, 86, 1668, 1669, 86, 86, 1677, 86, + 86, 1675, 86, 1680, 1671, 86, 1670, 1673, 86, 1678, + 1674, 86, 1676, 86, 86, 169, 86, 1683, 1686, 86, + 1679, 1685, 1682, 86, 86, 86, 86, 86, 86, 1694, + 1681, 1687, 86, 1684, 86, 86, 86, 1695, 1689, 86, + 1692, 1688, 1698, 86, 1690, 1691, 86, 86, 1699, 1702, + 86, 1700, 1693, 86, 1696, 1697, 1701, 1704, 1703, 1706, + 86, 1708, 86, 86, 86, 86, 86, 86, 86, 86, + 1705, 86, 1710, 1711, 1707, 86, 1713, 86, 1714, 86, + 86, 86, 86, 1709, 1718, 1715, 86, 1716, 86, 1719, - 86, 86, 1720, 86, 1724, 1723, 86, 1718, 1730, 86, - 1731, 1727, 1726, 1728, 1721, 86, 86, 1732, 1729, 86, - 1725, 86, 1734, 86, 1733, 86, 1735, 1736, 86, 86, - 86, 86, 86, 86, 1737, 86, 1743, 1744, 1742, 86, - 1746, 1738, 86, 86, 1745, 86, 86, 86, 1739, 86, - 1740, 86, 1741, 86, 1748, 1749, 86, 86, 1750, 86, - 86, 86, 86, 86, 86, 1751, 86, 86, 1747, 1760, - 1759, 1752, 86, 1754, 1755, 1756, 86, 1753, 86, 1765, - 1757, 86, 86, 1761, 1762, 86, 86, 86, 1758, 1764, - 1763, 86, 1771, 86, 86, 86, 86, 86, 1767, 86, + 86, 1712, 86, 86, 1717, 1726, 1723, 1727, 1720, 1724, + 86, 86, 1721, 1728, 86, 86, 1722, 1732, 86, 86, + 1731, 1725, 1733, 1730, 1734, 86, 1735, 1736, 1740, 1729, + 86, 1742, 86, 86, 86, 1737, 86, 1738, 86, 1739, + 86, 86, 86, 86, 86, 1741, 1747, 1746, 1748, 86, + 86, 1750, 86, 86, 86, 1749, 86, 86, 1752, 1743, + 86, 1744, 86, 1745, 1753, 86, 86, 1754, 86, 86, + 86, 86, 1751, 86, 1755, 86, 86, 86, 1764, 1763, + 1756, 86, 1758, 1759, 1760, 86, 1757, 86, 1769, 1761, + 86, 86, 86, 1766, 86, 86, 1765, 1767, 1762, 86, - 1773, 1766, 86, 1775, 86, 1769, 1768, 86, 1770, 1774, - 86, 1776, 86, 1777, 1772, 86, 86, 86, 86, 1780, - 86, 86, 1782, 86, 1789, 1779, 1783, 1781, 1778, 1784, - 1790, 86, 1785, 1786, 1791, 86, 86, 86, 1787, 86, - 1794, 1793, 1795, 86, 86, 1788, 86, 86, 1792, 86, - 86, 1798, 1796, 86, 1799, 86, 86, 86, 86, 1802, - 1808, 86, 86, 1797, 1807, 1804, 1800, 1806, 1805, 1801, - 86, 86, 86, 86, 1803, 1810, 86, 1809, 86, 86, - 86, 1817, 86, 86, 86, 1814, 1812, 86, 1820, 1811, - 86, 1821, 1813, 1819, 86, 86, 1823, 1816, 1818, 1824, + 1768, 1775, 86, 86, 86, 86, 86, 1771, 86, 1773, + 1770, 1777, 1772, 86, 1779, 86, 1778, 86, 86, 1781, + 1774, 86, 86, 1776, 86, 86, 86, 1784, 86, 1786, + 1780, 86, 1782, 86, 1787, 1783, 1785, 1788, 86, 86, + 1789, 1790, 1793, 1794, 86, 1796, 1791, 1795, 86, 1797, + 86, 86, 86, 1792, 1798, 1799, 86, 1801, 86, 86, + 86, 86, 86, 1800, 1802, 1803, 86, 86, 1812, 86, + 1806, 1804, 86, 1811, 1805, 1808, 1810, 86, 1809, 86, + 86, 1807, 86, 86, 86, 86, 86, 86, 1821, 86, + 1814, 86, 1813, 86, 1825, 86, 1816, 1818, 1815, 1817, - 1825, 86, 86, 1815, 1829, 1822, 86, 86, 86, 1830, - 86, 86, 1826, 1835, 86, 86, 1834, 1837, 86, 86, - 1828, 1831, 1827, 1832, 1838, 86, 86, 1840, 1833, 86, - 86, 1839, 1836, 86, 86, 1841, 1844, 86, 86, 86, - 1848, 1846, 86, 86, 86, 1842, 86, 1847, 1843, 86, - 1845, 1849, 86, 86, 86, 86, 86, 1852, 1850, 1858, - 86, 1853, 1860, 1851, 86, 1861, 1854, 1855, 86, 1856, - 1857, 86, 1863, 86, 86, 86, 86, 1862, 1867, 86, - 1869, 1859, 86, 86, 86, 86, 86, 1873, 86, 86, - 86, 86, 3291, 1865, 1864, 1866, 1868, 86, 86, 1879, + 1823, 86, 86, 86, 1820, 1822, 1824, 86, 1826, 1819, + 86, 1827, 1829, 1830, 1828, 1833, 86, 86, 86, 1839, + 1834, 86, 86, 86, 1831, 86, 86, 1838, 1832, 1842, + 1835, 1843, 1836, 1841, 86, 86, 1844, 86, 86, 86, + 1837, 1840, 86, 1845, 1848, 86, 86, 86, 1850, 1852, + 86, 86, 86, 1847, 1851, 86, 86, 3295, 1846, 1849, + 1853, 86, 86, 86, 1856, 86, 1854, 86, 1862, 86, + 1855, 1857, 1864, 86, 1858, 86, 1859, 1865, 86, 1860, + 86, 1861, 86, 86, 1867, 86, 1866, 1871, 86, 86, + 1863, 1873, 86, 86, 86, 1868, 86, 86, 1869, 1877, - 1871, 1875, 86, 1872, 1870, 86, 86, 1876, 168, 1874, - 1877, 1878, 86, 1882, 1880, 1883, 86, 86, 86, 86, - 1881, 1887, 86, 86, 86, 86, 86, 86, 1894, 1885, - 1889, 1884, 86, 1888, 86, 86, 1890, 1886, 1891, 86, - 86, 1897, 1898, 86, 1892, 86, 86, 1893, 1899, 86, - 1896, 1895, 1900, 86, 1901, 1902, 1903, 1904, 86, 86, - 1908, 86, 86, 1906, 86, 86, 86, 1907, 86, 86, - 86, 1905, 86, 86, 1912, 1913, 86, 86, 86, 86, - 3291, 1914, 1917, 86, 1910, 1915, 1911, 1909, 1918, 86, - 86, 1916, 86, 1926, 1923, 1921, 1925, 86, 1920, 86, + 86, 1870, 1872, 86, 86, 86, 86, 1879, 86, 1875, + 1880, 1881, 1876, 1882, 1874, 86, 1878, 169, 86, 1887, + 86, 86, 86, 86, 1883, 1891, 86, 1884, 86, 1885, + 86, 86, 86, 1886, 1889, 1893, 86, 86, 86, 1898, + 1888, 86, 1890, 1894, 1892, 86, 86, 86, 1895, 3295, + 1899, 1896, 1901, 1902, 86, 86, 1906, 1897, 1903, 1900, + 1904, 86, 86, 1907, 1908, 86, 86, 1905, 86, 86, + 1910, 86, 86, 86, 1911, 86, 86, 86, 1909, 86, + 86, 86, 1916, 86, 1917, 86, 86, 86, 1921, 1918, + 86, 3295, 1912, 1914, 1915, 1913, 1920, 1919, 86, 1922, - 86, 1919, 1922, 86, 1927, 86, 86, 1924, 86, 86, - 1932, 86, 1935, 1936, 86, 1937, 86, 86, 86, 1928, - 86, 1930, 1929, 1933, 86, 1934, 1931, 1939, 86, 86, - 1940, 1943, 86, 86, 86, 86, 1945, 1938, 1944, 1941, - 86, 1942, 86, 1946, 1947, 86, 1949, 86, 1951, 1950, - 86, 1948, 86, 1952, 86, 1953, 86, 1955, 86, 86, - 86, 1954, 1956, 86, 1959, 1958, 86, 1961, 86, 86, - 86, 1960, 86, 86, 86, 86, 86, 86, 1969, 1975, - 1957, 1962, 1963, 1964, 86, 86, 1967, 1976, 1965, 1973, - 1966, 1971, 1968, 86, 1970, 1978, 1972, 86, 86, 86, + 86, 86, 1928, 1925, 86, 1927, 1924, 1929, 86, 1930, + 1926, 86, 1923, 86, 86, 86, 86, 86, 1936, 86, + 1939, 86, 1931, 1932, 1940, 86, 1941, 86, 86, 1934, + 1933, 1937, 86, 1938, 1935, 1943, 86, 86, 1944, 1947, + 86, 1942, 86, 86, 1949, 86, 1948, 86, 1950, 1945, + 86, 1951, 1953, 1946, 1956, 86, 86, 86, 86, 1955, + 86, 1952, 86, 1959, 86, 86, 86, 1958, 86, 86, + 1963, 86, 1954, 1962, 86, 86, 1964, 1965, 86, 86, + 1957, 1960, 86, 86, 1973, 86, 1961, 1966, 1967, 1968, + 86, 1975, 1971, 86, 1969, 86, 1976, 86, 1970, 1972, - 1974, 86, 86, 1982, 86, 86, 86, 1979, 1977, 86, - 1984, 86, 86, 1987, 1988, 86, 86, 1990, 86, 1980, - 86, 86, 86, 1981, 86, 86, 1985, 1996, 86, 1995, - 1992, 1983, 86, 1986, 1993, 86, 1989, 86, 86, 1998, - 86, 86, 2002, 1994, 1999, 1991, 86, 2000, 86, 86, - 2006, 86, 86, 1997, 2005, 2009, 86, 2010, 86, 2008, - 86, 86, 86, 86, 2004, 2012, 2001, 2011, 86, 86, - 86, 2007, 2003, 86, 86, 86, 86, 2015, 2013, 2017, - 86, 2020, 2014, 2021, 2022, 2016, 86, 86, 2018, 86, - 86, 2025, 86, 86, 86, 2023, 2030, 86, 86, 2029, + 1978, 86, 1974, 1979, 86, 1982, 1980, 1977, 86, 86, + 86, 86, 1986, 86, 86, 86, 1988, 1983, 86, 1981, + 86, 86, 1991, 1992, 86, 86, 1994, 86, 86, 1984, + 86, 1985, 86, 86, 2000, 86, 86, 1999, 1989, 1996, + 1987, 1997, 1990, 86, 86, 1993, 86, 86, 86, 86, + 2006, 86, 86, 1995, 1998, 2003, 2004, 2001, 86, 2002, + 2010, 86, 86, 2009, 2013, 2014, 86, 86, 2008, 2012, + 86, 86, 2005, 2015, 86, 86, 2017, 2007, 86, 86, + 2016, 2011, 86, 86, 86, 86, 2021, 86, 2024, 2025, + 2026, 2020, 86, 86, 86, 86, 86, 86, 2018, 86, - 2019, 2024, 86, 86, 86, 86, 86, 2026, 2034, 86, - 86, 2035, 2027, 2037, 86, 2028, 86, 2031, 2032, 2036, - 2038, 2033, 86, 2041, 86, 86, 86, 2042, 2044, 86, - 86, 2045, 86, 2039, 2048, 86, 86, 86, 2040, 2043, - 86, 2050, 2051, 86, 86, 2052, 2054, 2049, 86, 2046, - 2047, 86, 2053, 2058, 86, 2057, 2059, 86, 2060, 2062, - 2063, 86, 2055, 2061, 86, 86, 86, 2056, 86, 86, - 2067, 86, 86, 2065, 86, 86, 86, 86, 2069, 2072, - 2074, 2066, 86, 2068, 2070, 86, 86, 2064, 168, 86, - 86, 86, 86, 2075, 2076, 2080, 2079, 86, 2081, 2073, + 86, 2019, 2022, 2029, 86, 2034, 86, 86, 2028, 2033, + 86, 2023, 2027, 86, 2031, 86, 2035, 2038, 86, 2030, + 86, 2039, 2032, 2041, 86, 2036, 2037, 2040, 86, 2045, + 86, 2043, 2042, 86, 86, 86, 2044, 86, 86, 86, + 2049, 2052, 86, 86, 86, 2055, 86, 86, 2047, 2054, + 86, 2056, 2058, 86, 2046, 86, 2048, 2053, 2050, 2051, + 86, 2062, 86, 86, 2057, 86, 2059, 2063, 86, 2064, + 2066, 2060, 2067, 2061, 2065, 86, 86, 86, 86, 86, + 2071, 86, 2069, 86, 86, 86, 86, 2073, 2076, 2068, + 2075, 2070, 2078, 2072, 86, 169, 2074, 86, 86, 86, - 2071, 2077, 2082, 86, 2083, 86, 86, 2085, 86, 2078, - 86, 86, 86, 86, 2086, 2087, 86, 2088, 86, 2091, - 86, 2089, 86, 2090, 86, 2093, 2084, 86, 86, 2097, - 86, 86, 2092, 2096, 2094, 86, 86, 86, 2101, 2095, - 2098, 2099, 2100, 2102, 86, 86, 86, 86, 86, 86, - 2109, 2107, 86, 86, 86, 2104, 86, 2108, 86, 86, - 86, 2114, 86, 2111, 86, 2103, 2105, 86, 2106, 86, - 86, 2110, 2115, 2113, 86, 2119, 2112, 86, 2117, 2120, - 2116, 86, 86, 86, 2118, 86, 2123, 86, 2122, 2121, - 2125, 86, 86, 86, 2131, 2124, 2126, 86, 86, 2127, + 2079, 86, 86, 86, 86, 2084, 86, 2077, 2083, 2080, + 2111, 2081, 86, 2085, 2086, 86, 2087, 86, 86, 2089, + 2082, 86, 86, 2091, 2088, 86, 86, 2090, 2092, 86, + 86, 86, 86, 2095, 2094, 2093, 86, 2097, 86, 86, + 86, 2101, 86, 2096, 2098, 2100, 86, 86, 2102, 86, + 2099, 2103, 2104, 86, 2106, 86, 2105, 86, 86, 86, + 86, 2113, 86, 86, 86, 2112, 2108, 86, 86, 2107, + 86, 86, 2115, 86, 2118, 86, 2109, 86, 2110, 86, + 2114, 3295, 2116, 86, 2117, 2119, 2120, 2125, 2121, 86, + 2123, 2122, 2124, 86, 86, 2129, 86, 86, 2126, 2127, - 86, 2128, 2129, 86, 2133, 86, 2130, 2134, 2135, 86, - 86, 2137, 86, 86, 2132, 86, 2138, 2141, 2136, 2140, - 86, 2139, 86, 86, 86, 86, 86, 2142, 86, 2145, - 86, 86, 86, 2146, 86, 86, 86, 86, 86, 86, - 86, 3291, 2148, 2149, 2143, 2144, 2154, 2147, 2151, 2150, - 2153, 2158, 2159, 86, 86, 86, 86, 2156, 2152, 2155, - 86, 2157, 86, 2162, 86, 86, 86, 2163, 2166, 2165, - 86, 86, 2160, 86, 86, 2161, 2164, 2169, 2168, 86, - 2170, 86, 86, 2167, 2174, 86, 86, 86, 2172, 2176, - 2178, 86, 2171, 2173, 86, 86, 86, 2181, 86, 86, + 2130, 86, 86, 2135, 86, 86, 2128, 86, 86, 86, + 86, 2137, 86, 3295, 2138, 2139, 86, 2131, 2132, 2133, + 86, 2134, 2136, 2141, 86, 86, 2142, 86, 2140, 2145, + 86, 2143, 86, 2144, 86, 86, 86, 2146, 86, 2149, + 86, 86, 86, 2150, 86, 86, 86, 86, 86, 86, + 3295, 86, 86, 2152, 2147, 86, 2148, 2153, 2155, 2154, + 86, 2151, 2157, 2162, 2163, 86, 2158, 86, 2156, 2160, + 2164, 2161, 2167, 86, 86, 2165, 2166, 86, 86, 2159, + 2170, 86, 2169, 86, 86, 86, 86, 86, 2172, 86, + 86, 2173, 2178, 86, 2168, 2174, 2176, 86, 86, 2171, - 2177, 2180, 86, 2182, 2175, 86, 2186, 2183, 86, 86, - 86, 86, 86, 2187, 86, 2192, 86, 2184, 2189, 86, - 2179, 86, 2188, 86, 2193, 2185, 2196, 86, 2191, 2198, - 2190, 86, 86, 86, 2194, 86, 2197, 86, 2202, 86, - 86, 2195, 86, 2204, 86, 2200, 86, 2203, 86, 2205, - 86, 2199, 86, 2201, 86, 2206, 2211, 2207, 2208, 2209, - 86, 2213, 2210, 86, 86, 2212, 2214, 86, 86, 2215, - 86, 86, 86, 2218, 86, 2216, 2217, 2219, 86, 2223, - 86, 86, 86, 2220, 86, 86, 86, 2222, 86, 86, - 86, 2221, 2224, 86, 86, 2232, 2229, 2230, 2226, 2225, + 2180, 2177, 86, 2175, 2182, 86, 86, 86, 86, 2185, + 86, 2181, 2179, 2184, 86, 2186, 86, 2190, 86, 2187, + 86, 86, 86, 86, 2188, 2191, 86, 86, 2183, 2193, + 86, 2192, 2196, 86, 86, 2197, 2189, 2200, 86, 86, + 2195, 2194, 2198, 86, 2201, 86, 86, 2202, 2206, 86, + 2199, 86, 86, 2208, 2204, 86, 2203, 86, 2209, 86, + 86, 86, 2205, 2207, 2210, 2211, 86, 86, 2215, 2217, + 2213, 86, 86, 2214, 2218, 86, 86, 2212, 86, 86, + 2219, 2222, 86, 86, 2220, 86, 86, 2223, 2216, 86, + 2221, 86, 2224, 86, 2226, 2227, 86, 86, 86, 86, - 2227, 86, 2234, 2228, 86, 86, 2233, 86, 86, 2231, - 2235, 2237, 86, 2243, 86, 86, 86, 2238, 2245, 86, - 86, 86, 2239, 2236, 2242, 2244, 2240, 86, 86, 168, - 2251, 2247, 2253, 2248, 2249, 2252, 86, 2241, 86, 2246, - 2254, 86, 86, 86, 2255, 86, 86, 2258, 86, 86, - 2256, 2250, 86, 2259, 2262, 2263, 86, 86, 2264, 86, - 2267, 2265, 2272, 2257, 86, 86, 86, 2260, 86, 2268, - 86, 2269, 2270, 86, 86, 86, 86, 2266, 2261, 2271, - 2273, 86, 86, 86, 86, 2274, 2275, 86, 2278, 86, - 86, 86, 86, 86, 2281, 2276, 86, 2285, 2287, 86, + 86, 86, 86, 2225, 2228, 2231, 2236, 2229, 86, 2230, + 2233, 2234, 2232, 2237, 86, 86, 86, 86, 86, 86, + 2235, 2239, 2241, 2238, 86, 2242, 2247, 86, 86, 2249, + 86, 86, 2243, 2246, 2240, 86, 2244, 2248, 86, 2251, + 86, 169, 2255, 2252, 2245, 2257, 2258, 2256, 86, 86, + 2250, 86, 86, 2253, 86, 86, 86, 2259, 2262, 86, + 86, 2263, 86, 2254, 2260, 2267, 86, 86, 2268, 2261, + 86, 2266, 2271, 2270, 86, 2264, 86, 2273, 86, 2272, + 2274, 86, 2269, 86, 2276, 86, 2265, 86, 2275, 2277, + 86, 86, 86, 86, 86, 2279, 86, 86, 86, 2282, - 86, 86, 2280, 86, 2288, 86, 2277, 2279, 2282, 2283, - 2290, 2284, 86, 86, 86, 86, 2289, 86, 2286, 86, - 2295, 2298, 86, 86, 86, 2293, 86, 86, 86, 2291, - 2292, 2299, 2296, 2294, 86, 2297, 86, 86, 86, 86, - 86, 3291, 86, 2300, 86, 2301, 2311, 2313, 86, 2306, - 2302, 86, 2303, 2304, 2308, 2309, 2314, 2305, 2310, 2307, - 86, 86, 2312, 86, 2315, 86, 86, 86, 86, 2319, - 2320, 86, 86, 86, 2321, 86, 2316, 2322, 86, 2317, - 2318, 2323, 86, 2325, 2326, 86, 2324, 2327, 2328, 86, - 2329, 86, 86, 86, 86, 86, 86, 2330, 2331, 2335, + 86, 86, 2285, 86, 86, 86, 2289, 2278, 2291, 86, + 86, 86, 2280, 2284, 2292, 86, 2287, 86, 2281, 2283, + 2294, 2286, 86, 86, 2288, 86, 2293, 2290, 86, 86, + 86, 2302, 86, 2299, 86, 2297, 86, 86, 86, 86, + 2296, 86, 2300, 2295, 2298, 2303, 86, 86, 2301, 86, + 86, 86, 86, 2304, 3295, 2305, 86, 2317, 86, 2310, + 2308, 2306, 2315, 2307, 2313, 2312, 2314, 2309, 86, 86, + 2311, 2316, 86, 2318, 86, 2319, 86, 86, 86, 86, + 2323, 2324, 86, 86, 86, 2325, 86, 2320, 2326, 86, + 2321, 2322, 2327, 86, 2329, 2330, 86, 2328, 2331, 2332, - 86, 2336, 86, 2338, 86, 2332, 86, 2334, 2340, 86, - 86, 86, 2343, 86, 2333, 2337, 2342, 2344, 86, 86, - 86, 86, 86, 86, 2339, 2341, 2350, 86, 2349, 2346, - 86, 2352, 86, 2345, 86, 2347, 86, 86, 86, 2356, - 2355, 2348, 2354, 2358, 86, 86, 86, 86, 86, 2351, - 2362, 86, 2353, 86, 2357, 86, 86, 2367, 86, 86, - 2366, 2360, 86, 86, 2359, 86, 2361, 2369, 2363, 86, - 2365, 2372, 86, 86, 86, 86, 2364, 86, 2368, 86, - 2370, 2374, 86, 2373, 2371, 86, 2379, 2375, 86, 86, - 2381, 2380, 2382, 2376, 86, 2377, 86, 86, 86, 86, + 86, 2333, 86, 86, 86, 86, 86, 86, 2334, 2335, + 2339, 86, 2340, 86, 2342, 86, 2336, 86, 2338, 2344, + 86, 86, 86, 2347, 86, 2337, 2341, 2346, 2348, 86, + 86, 86, 86, 86, 86, 2343, 2345, 2354, 86, 2353, + 2350, 86, 2356, 86, 2349, 86, 2351, 86, 86, 86, + 2360, 2359, 2352, 2358, 2362, 86, 86, 86, 86, 86, + 2355, 2366, 86, 2357, 86, 2361, 86, 86, 2371, 86, + 86, 2370, 2364, 86, 86, 2363, 86, 2365, 2373, 2367, + 86, 2369, 2376, 86, 86, 86, 86, 2368, 86, 2372, + 86, 2374, 2378, 86, 2377, 2375, 86, 2383, 2379, 86, - 86, 2386, 2387, 86, 86, 2378, 2385, 2383, 2391, 2384, - 86, 86, 2389, 86, 2396, 2393, 2394, 86, 2398, 86, - 86, 2390, 86, 2388, 86, 86, 86, 2399, 2395, 86, - 2392, 2400, 86, 86, 2404, 2403, 86, 86, 2397, 86, - 86, 3291, 2402, 2409, 2401, 2405, 2406, 2408, 2407, 86, - 2410, 86, 86, 86, 2414, 2411, 86, 2415, 86, 2416, - 2412, 2413, 86, 86, 168, 86, 86, 2417, 86, 2418, - 86, 2423, 86, 86, 86, 2425, 86, 86, 86, 2434, - 86, 2421, 2419, 2424, 2420, 2426, 2422, 86, 86, 2429, - 2427, 2428, 86, 2431, 3291, 2430, 86, 2435, 2432, 2433, + 86, 2385, 2384, 2386, 2380, 86, 2381, 86, 86, 86, + 86, 86, 2390, 2391, 86, 86, 2382, 2389, 2387, 2395, + 2388, 86, 86, 2393, 86, 2400, 2397, 2398, 86, 2402, + 86, 86, 2394, 86, 2392, 86, 86, 86, 2403, 2399, + 86, 2396, 2404, 86, 86, 2408, 2407, 86, 86, 2401, + 86, 86, 3295, 2406, 2413, 2405, 2409, 2410, 2412, 2411, + 86, 2414, 86, 86, 86, 2418, 2415, 86, 2419, 86, + 2420, 2416, 2417, 86, 86, 169, 86, 86, 2421, 86, + 2422, 86, 2427, 86, 86, 86, 2429, 86, 86, 86, + 2438, 86, 2425, 2423, 2428, 2424, 2430, 2426, 86, 86, - 2436, 86, 86, 86, 2439, 2437, 2440, 86, 2438, 86, - 86, 86, 86, 2442, 86, 86, 2441, 86, 2444, 86, - 86, 2448, 2449, 2443, 86, 2446, 86, 2445, 86, 2451, - 86, 86, 86, 86, 2452, 2453, 2454, 86, 2447, 86, - 2450, 86, 2456, 86, 2455, 2460, 86, 2459, 86, 86, - 2457, 2458, 86, 86, 2462, 86, 86, 86, 86, 2469, - 2466, 2461, 86, 2468, 86, 86, 86, 86, 2470, 2465, - 86, 86, 2463, 2464, 86, 2474, 86, 2467, 86, 86, - 2484, 2479, 2471, 2478, 86, 2472, 2473, 86, 2476, 86, - 2477, 86, 2475, 2481, 86, 86, 86, 2480, 2483, 2485, + 2433, 2431, 2432, 86, 2435, 3295, 2434, 86, 2439, 2436, + 2437, 2440, 86, 86, 86, 2443, 2441, 2444, 86, 2442, + 86, 86, 86, 86, 2446, 86, 86, 2445, 86, 2448, + 86, 86, 2452, 2453, 2447, 86, 2450, 86, 2449, 86, + 2455, 86, 86, 86, 86, 2456, 2457, 2458, 86, 2451, + 86, 2454, 86, 2460, 86, 2459, 2464, 86, 2463, 86, + 86, 2461, 2462, 86, 86, 2466, 86, 86, 86, 86, + 2473, 2470, 2465, 86, 2472, 86, 86, 86, 86, 2474, + 2469, 86, 86, 2467, 2468, 86, 2478, 86, 2471, 86, + 86, 2488, 2483, 2475, 2482, 86, 2476, 2477, 86, 2480, - 86, 2487, 86, 2482, 2489, 86, 2488, 2491, 86, 86, - 86, 2493, 86, 86, 86, 86, 86, 2490, 2492, 86, - 2497, 2486, 86, 86, 86, 2501, 86, 2499, 2495, 2500, - 2503, 2494, 2496, 2502, 86, 86, 86, 86, 2504, 2505, - 86, 86, 86, 2510, 86, 2498, 2507, 86, 86, 2512, - 86, 2515, 86, 86, 2509, 86, 2511, 2506, 86, 2508, - 86, 2516, 86, 2519, 86, 2514, 2513, 2520, 86, 2521, - 86, 86, 2517, 86, 86, 2525, 86, 86, 2518, 2524, - 2523, 86, 86, 86, 86, 2532, 86, 2529, 2522, 2531, - 2526, 2527, 86, 2528, 2533, 86, 2534, 86, 2535, 86, + 86, 2481, 86, 2479, 2485, 86, 86, 86, 2484, 2487, + 2489, 86, 2491, 86, 2486, 2493, 86, 2492, 2495, 86, + 86, 86, 2497, 86, 86, 86, 86, 86, 2494, 2496, + 86, 2501, 2490, 86, 86, 86, 2505, 86, 2503, 2499, + 2504, 2507, 2498, 2500, 2506, 86, 86, 86, 86, 2508, + 2509, 86, 86, 86, 2514, 86, 2502, 2511, 86, 86, + 2516, 86, 2519, 86, 86, 2513, 86, 2515, 2510, 86, + 2512, 86, 2520, 86, 2523, 86, 2518, 2517, 2524, 86, + 2525, 86, 86, 2521, 86, 86, 2529, 86, 86, 2522, + 2528, 2527, 86, 86, 86, 86, 2536, 86, 2533, 2526, - 86, 86, 86, 2530, 2536, 86, 2538, 86, 2539, 86, - 2540, 86, 86, 86, 2541, 2545, 86, 2542, 2537, 2547, - 86, 2548, 86, 86, 86, 86, 86, 86, 2544, 86, - 86, 2543, 2546, 2551, 2549, 2554, 2550, 2552, 86, 2557, - 86, 86, 86, 86, 86, 86, 86, 2553, 86, 2555, - 2558, 86, 168, 86, 2565, 86, 86, 2561, 2556, 86, - 2563, 86, 86, 2560, 2564, 2566, 2567, 3291, 2559, 2562, - 2568, 2571, 86, 86, 86, 2572, 2573, 2569, 2574, 2575, - 2576, 86, 86, 2570, 2577, 86, 86, 2578, 86, 2579, - 86, 2580, 86, 86, 86, 86, 86, 86, 86, 86, + 2535, 2530, 2531, 86, 2532, 2537, 86, 2538, 86, 2539, + 86, 86, 86, 86, 2534, 2540, 86, 2542, 86, 2543, + 86, 2544, 86, 86, 86, 2545, 2549, 86, 2546, 2541, + 2551, 86, 2552, 86, 86, 86, 86, 86, 86, 2548, + 86, 86, 2547, 2550, 2555, 2553, 2558, 2554, 2556, 86, + 2561, 86, 86, 86, 86, 86, 86, 86, 2557, 86, + 2559, 2562, 86, 169, 86, 2569, 86, 86, 2565, 2560, + 86, 2567, 86, 86, 2564, 2568, 2570, 2571, 3295, 2563, + 2566, 2572, 2575, 86, 86, 86, 2576, 2577, 2573, 2578, + 2579, 2580, 86, 86, 2574, 2581, 86, 86, 2582, 86, - 2581, 86, 86, 2582, 2591, 86, 86, 86, 2589, 2584, - 86, 86, 2583, 86, 2586, 2585, 86, 2595, 2588, 2587, - 2599, 2590, 2596, 86, 2593, 2592, 86, 2597, 2594, 2598, - 2600, 86, 2602, 86, 86, 2601, 86, 86, 86, 86, - 86, 86, 86, 86, 2605, 2611, 86, 2612, 86, 86, - 86, 86, 2603, 2606, 2604, 2618, 2615, 2607, 2608, 2609, - 2610, 86, 2613, 2616, 86, 2617, 86, 2614, 86, 2619, - 86, 86, 86, 86, 86, 86, 86, 2623, 2627, 86, - 2626, 2628, 86, 2620, 86, 2622, 2629, 2630, 86, 2621, - 86, 86, 86, 2624, 2625, 86, 86, 86, 2631, 2632, + 2583, 86, 2584, 86, 86, 86, 86, 86, 86, 86, + 86, 2585, 86, 86, 2586, 2595, 86, 86, 86, 2593, + 2588, 86, 86, 2587, 86, 2590, 2589, 86, 2599, 2592, + 2591, 2603, 2594, 2600, 86, 2597, 2596, 86, 2601, 2598, + 2602, 2604, 86, 2606, 86, 86, 2605, 86, 86, 86, + 86, 86, 86, 86, 86, 2609, 2615, 86, 2616, 86, + 86, 86, 86, 2607, 2610, 2608, 2622, 2619, 2611, 2612, + 2613, 2614, 86, 2617, 2620, 86, 2621, 86, 2618, 86, + 2623, 86, 86, 86, 86, 86, 86, 86, 2627, 2631, + 86, 2630, 2632, 86, 2624, 86, 2626, 2633, 2634, 86, - 86, 2636, 86, 86, 2634, 86, 2640, 2641, 86, 86, - 2633, 2644, 86, 86, 86, 2635, 86, 2637, 2645, 2638, - 2642, 86, 2639, 2648, 86, 2647, 86, 2643, 2646, 2649, - 86, 86, 2653, 86, 86, 86, 86, 2657, 86, 86, - 2656, 2650, 2659, 86, 2655, 86, 2654, 86, 86, 86, - 2651, 2652, 2660, 86, 2661, 2664, 86, 86, 2658, 86, - 2665, 2663, 2667, 86, 2662, 86, 86, 86, 86, 86, - 2668, 2672, 86, 2674, 86, 2666, 2670, 2671, 2669, 86, - 86, 2673, 86, 2677, 2675, 2676, 86, 2678, 86, 86, - 86, 86, 86, 86, 2679, 86, 86, 2684, 2681, 2682, + 2625, 86, 86, 86, 2628, 2629, 86, 86, 86, 2635, + 2636, 86, 2640, 86, 86, 2638, 86, 2644, 2645, 86, + 86, 2637, 2648, 86, 86, 86, 2639, 86, 2641, 2649, + 2642, 2646, 86, 2643, 2652, 86, 2651, 86, 2647, 2650, + 2653, 86, 86, 2657, 86, 86, 86, 86, 2661, 86, + 86, 2660, 2654, 2663, 86, 2659, 86, 2658, 86, 86, + 86, 2655, 2656, 2664, 86, 2665, 2668, 86, 86, 2662, + 86, 2669, 2667, 2671, 86, 2666, 86, 86, 86, 86, + 86, 2672, 2676, 86, 2678, 86, 2670, 2674, 2675, 2673, + 86, 86, 2677, 86, 2681, 2679, 2680, 86, 2682, 86, - 2685, 2687, 86, 2688, 86, 2683, 86, 2680, 2686, 2689, - 168, 86, 86, 2690, 2692, 2694, 2691, 86, 86, 2696, - 86, 86, 2695, 86, 2699, 86, 2700, 86, 2698, 86, - 2693, 2702, 86, 86, 2704, 2697, 2703, 86, 86, 2705, - 86, 86, 2701, 2706, 2709, 86, 2707, 86, 86, 2710, - 86, 2708, 2711, 86, 86, 86, 86, 2712, 2716, 2717, - 86, 2718, 2714, 86, 86, 86, 86, 86, 2713, 86, - 2720, 2721, 2719, 86, 86, 86, 2715, 2722, 2724, 2723, - 2725, 86, 86, 86, 86, 2730, 86, 2726, 86, 86, - 2733, 2728, 2729, 86, 2727, 2731, 86, 86, 86, 2734, + 86, 86, 86, 86, 86, 2683, 86, 86, 2688, 2685, + 2686, 2689, 2691, 86, 2692, 86, 2687, 86, 2684, 2690, + 2693, 169, 86, 86, 2694, 2696, 2698, 2695, 86, 86, + 2700, 86, 86, 2699, 86, 2703, 86, 2704, 86, 2702, + 86, 2697, 2706, 86, 86, 2708, 2701, 2707, 86, 86, + 2709, 86, 86, 2705, 2710, 2713, 86, 2711, 86, 86, + 2714, 86, 2712, 2715, 86, 86, 86, 86, 2716, 2720, + 2721, 86, 2722, 2718, 86, 86, 86, 86, 86, 2717, + 86, 2724, 2725, 2723, 86, 86, 86, 2719, 2726, 2728, + 2727, 2729, 86, 86, 86, 86, 2734, 86, 2730, 86, - 86, 2738, 86, 86, 86, 2739, 2732, 86, 2735, 86, - 2743, 86, 86, 2741, 86, 86, 86, 2736, 86, 2737, - 2747, 3291, 2740, 2755, 2742, 2750, 2744, 2745, 2748, 86, - 2751, 86, 2752, 86, 2746, 86, 86, 86, 86, 86, - 2749, 2753, 86, 2754, 86, 86, 2756, 2759, 2758, 86, - 2761, 86, 2757, 2763, 86, 2764, 86, 2765, 86, 86, - 2760, 86, 86, 2766, 2768, 86, 2767, 86, 86, 2762, - 2772, 86, 2770, 86, 2775, 2773, 86, 2776, 86, 86, - 2771, 86, 2769, 2777, 86, 86, 86, 86, 2778, 2782, - 86, 2774, 2779, 86, 2783, 2784, 86, 2786, 86, 2780, + 86, 2737, 2732, 2733, 86, 2731, 2735, 86, 86, 86, + 2738, 86, 2742, 86, 86, 86, 2743, 2736, 86, 2739, + 86, 2747, 86, 86, 2745, 86, 86, 86, 2740, 86, + 2741, 2751, 3295, 2744, 2759, 2746, 2754, 2748, 2749, 2752, + 86, 2755, 86, 2756, 86, 2750, 86, 86, 86, 86, + 86, 2753, 2757, 86, 2758, 86, 86, 2760, 2763, 2762, + 86, 2765, 86, 2761, 2767, 86, 2768, 86, 2769, 86, + 86, 2764, 86, 86, 2770, 2772, 86, 2771, 86, 86, + 2766, 2776, 86, 2774, 86, 2779, 2777, 86, 2780, 86, + 86, 2775, 86, 2773, 2781, 86, 86, 86, 86, 2782, - 86, 86, 2785, 86, 2790, 86, 2781, 2791, 86, 2792, - 86, 86, 86, 2787, 86, 2793, 86, 2789, 86, 2788, - 2794, 86, 2799, 86, 2798, 2802, 86, 2801, 86, 86, - 86, 86, 2796, 86, 2795, 2803, 2797, 2804, 86, 2800, - 86, 2805, 86, 2807, 86, 2808, 86, 2811, 86, 86, - 2809, 2810, 2815, 86, 86, 86, 2806, 2817, 86, 86, - 86, 2822, 86, 2814, 2812, 2818, 2823, 86, 2813, 2816, - 2821, 2824, 2819, 2827, 86, 86, 2825, 86, 2820, 2826, - 86, 2828, 86, 2829, 86, 2830, 86, 2831, 86, 86, - 86, 2832, 86, 2833, 86, 86, 86, 2836, 86, 86, + 2786, 86, 2778, 2783, 86, 2787, 2788, 86, 2790, 86, + 2784, 86, 86, 2789, 86, 2794, 86, 2785, 2795, 86, + 2796, 86, 86, 86, 2791, 86, 2797, 86, 2793, 86, + 2792, 2798, 86, 2803, 86, 2802, 2806, 86, 2805, 86, + 86, 86, 86, 2800, 86, 2799, 2807, 2801, 2808, 86, + 2804, 86, 2809, 86, 2811, 86, 2812, 86, 2815, 86, + 86, 2813, 2814, 2819, 86, 86, 86, 2810, 2821, 86, + 86, 86, 2826, 86, 2818, 2816, 2822, 2827, 86, 2817, + 2820, 2825, 2828, 2823, 2831, 86, 86, 2829, 86, 2824, + 2830, 86, 2832, 86, 2833, 86, 2834, 86, 2835, 86, - 2838, 2842, 86, 2843, 86, 2839, 86, 86, 86, 2834, - 2844, 2846, 86, 2837, 86, 2847, 2835, 86, 2840, 2841, - 2848, 86, 2849, 2851, 2845, 2850, 86, 86, 86, 86, - 2855, 86, 86, 86, 86, 86, 2852, 2853, 2856, 2859, - 86, 2857, 86, 86, 2860, 86, 86, 2854, 2858, 86, - 2863, 2862, 86, 2861, 2864, 2865, 86, 2866, 86, 86, - 2868, 2869, 86, 86, 86, 86, 2867, 86, 2870, 2875, - 86, 86, 86, 2873, 2871, 86, 2878, 2879, 86, 2876, - 86, 2880, 86, 2883, 86, 2874, 2884, 2881, 2872, 2882, - 86, 2877, 2885, 86, 2886, 86, 2887, 86, 86, 2888, + 86, 86, 2836, 86, 2837, 86, 86, 86, 2840, 86, + 86, 2842, 2846, 86, 2847, 86, 2843, 86, 86, 86, + 2838, 2848, 2850, 86, 2841, 86, 2851, 2839, 86, 2844, + 2845, 2852, 86, 2853, 2855, 2849, 2854, 86, 86, 86, + 86, 2859, 86, 86, 86, 86, 86, 2856, 2857, 2860, + 2863, 86, 2861, 86, 86, 2864, 86, 86, 2858, 2862, + 86, 2867, 2866, 86, 2865, 2868, 2869, 86, 2870, 86, + 86, 2872, 2873, 86, 86, 86, 86, 2871, 86, 2874, + 2879, 86, 86, 86, 2877, 2875, 86, 2882, 2883, 86, + 2880, 86, 2884, 86, 2887, 86, 2878, 2888, 2885, 2876, - 86, 86, 2892, 86, 86, 86, 2891, 86, 86, 2893, - 2894, 2895, 86, 86, 86, 86, 2901, 86, 2889, 2890, - 2899, 2896, 86, 2903, 86, 2897, 86, 86, 2898, 86, - 2904, 86, 2900, 86, 2905, 86, 2906, 86, 2907, 86, - 2912, 86, 2902, 86, 86, 86, 2908, 86, 2909, 2915, - 2910, 86, 86, 86, 86, 2921, 2913, 2914, 86, 2911, - 2916, 2919, 86, 2917, 86, 86, 86, 2920, 2925, 86, - 86, 2918, 86, 2922, 2927, 86, 2923, 2928, 86, 2930, - 86, 86, 86, 86, 86, 2926, 2931, 86, 2934, 2935, - 86, 2924, 86, 2929, 86, 2939, 86, 2932, 2933, 86, + 2886, 86, 2881, 2889, 86, 2890, 86, 2891, 86, 86, + 2892, 86, 86, 2896, 86, 86, 86, 2895, 86, 86, + 2897, 2898, 2899, 86, 86, 86, 86, 2905, 86, 2893, + 2894, 2903, 2900, 86, 2907, 86, 2901, 86, 86, 2902, + 86, 2908, 86, 2904, 86, 2909, 86, 2910, 86, 2911, + 86, 2916, 86, 2906, 86, 86, 86, 2912, 86, 2913, + 2919, 2914, 86, 86, 86, 86, 2925, 2917, 2918, 86, + 2915, 2920, 2923, 86, 2921, 86, 86, 86, 2924, 2929, + 86, 86, 2922, 86, 2926, 2931, 86, 2927, 2932, 86, + 2934, 86, 86, 86, 86, 86, 2930, 2935, 86, 2938, - 2942, 86, 86, 2944, 2936, 86, 86, 86, 86, 86, - 2937, 2938, 2945, 2940, 86, 2941, 2947, 86, 2948, 86, - 2950, 86, 2943, 86, 2955, 2952, 2949, 2946, 2954, 86, - 86, 86, 2953, 86, 2959, 86, 86, 86, 2961, 2960, - 2951, 86, 86, 2957, 2964, 2965, 86, 86, 2956, 86, - 86, 2967, 2966, 2958, 2962, 86, 86, 86, 2970, 86, - 2969, 2963, 86, 2973, 86, 2968, 86, 2971, 86, 86, - 2976, 86, 86, 86, 86, 2972, 2981, 86, 2977, 86, - 86, 2974, 2975, 2985, 86, 86, 2978, 2980, 86, 2984, - 2986, 86, 2982, 2987, 86, 2983, 86, 2979, 86, 2988, + 2939, 86, 2928, 86, 2933, 86, 2943, 86, 2936, 2937, + 86, 2946, 86, 86, 2948, 2940, 86, 86, 86, 86, + 86, 2941, 2942, 2949, 2944, 86, 2945, 2951, 86, 2952, + 86, 2954, 86, 2947, 86, 2959, 2956, 2953, 2950, 2958, + 86, 86, 86, 2957, 86, 2963, 86, 86, 86, 2965, + 2964, 2955, 86, 86, 2961, 2968, 2969, 86, 86, 2960, + 86, 86, 2971, 2970, 2962, 2966, 86, 86, 86, 2974, + 86, 2973, 2967, 86, 2977, 86, 2972, 86, 2975, 86, + 86, 2980, 86, 86, 86, 86, 2976, 2985, 86, 2981, + 86, 86, 2978, 2979, 2989, 86, 86, 2982, 2984, 86, - 86, 2989, 2990, 86, 2991, 86, 2992, 86, 2995, 86, - 86, 2993, 2997, 86, 86, 2996, 86, 86, 86, 2998, - 2994, 86, 3002, 3003, 86, 86, 86, 3007, 86, 3008, - 86, 2999, 3004, 86, 3009, 3006, 86, 86, 3000, 3001, - 86, 86, 3012, 3013, 86, 3005, 3014, 86, 86, 86, - 3017, 86, 86, 3010, 3015, 3011, 86, 3020, 86, 86, - 3019, 3022, 3016, 3018, 3021, 86, 86, 86, 86, 86, - 86, 3024, 86, 86, 3026, 86, 86, 3027, 86, 3025, - 86, 86, 86, 86, 3039, 3023, 3036, 3037, 86, 3028, - 86, 3032, 3029, 3030, 3031, 3033, 3034, 86, 86, 3044, + 2988, 2990, 86, 2986, 2991, 86, 2987, 86, 2983, 86, + 2992, 86, 2993, 2994, 86, 2995, 86, 2996, 86, 2999, + 86, 86, 2997, 3001, 86, 86, 3000, 86, 86, 86, + 3002, 2998, 86, 3006, 3007, 86, 86, 86, 3011, 86, + 3012, 86, 3003, 3008, 86, 3013, 3010, 86, 86, 3004, + 3005, 86, 86, 3016, 3017, 86, 3009, 3018, 86, 86, + 86, 3021, 86, 86, 3014, 3019, 3015, 86, 3024, 86, + 86, 3023, 3026, 3020, 3022, 3025, 86, 86, 86, 86, + 86, 86, 3028, 86, 86, 3030, 86, 86, 3031, 86, + 3029, 86, 86, 86, 86, 3043, 3027, 3040, 3041, 86, - 86, 3035, 3040, 3038, 86, 3045, 86, 3042, 3041, 86, - 86, 3043, 86, 3046, 3047, 86, 3291, 3048, 3050, 86, - 3051, 86, 3052, 3053, 86, 86, 86, 3054, 3055, 3049, - 86, 3056, 3057, 86, 86, 3059, 86, 3058, 86, 86, - 3061, 86, 3060, 3065, 86, 86, 3064, 86, 86, 86, - 86, 86, 3068, 86, 3067, 86, 3073, 3082, 3062, 3063, - 3069, 86, 3072, 86, 3070, 3074, 86, 86, 3071, 86, - 3066, 3075, 86, 86, 3077, 3080, 3076, 86, 86, 86, - 3081, 86, 3078, 86, 3086, 3079, 86, 3291, 3087, 3089, - 86, 3090, 3083, 3084, 86, 3092, 86, 86, 3085, 86, + 3032, 86, 3036, 3033, 3034, 3035, 3037, 3038, 86, 86, + 3048, 86, 3039, 3044, 3042, 86, 3049, 86, 3046, 3045, + 86, 86, 3047, 86, 3050, 3051, 86, 3295, 3052, 3054, + 86, 3055, 86, 3056, 3057, 86, 86, 86, 3058, 3059, + 3053, 86, 3060, 3061, 86, 86, 3063, 86, 3062, 86, + 86, 3065, 86, 3064, 3069, 86, 86, 3068, 86, 86, + 86, 86, 86, 3072, 86, 3071, 86, 3077, 3086, 3066, + 3067, 3073, 86, 3076, 86, 3074, 3078, 86, 86, 3075, + 86, 3070, 3079, 86, 86, 3081, 3084, 3080, 86, 86, + 86, 3085, 86, 3082, 86, 3090, 3083, 86, 3295, 3091, - 3091, 3093, 86, 86, 86, 3088, 3096, 86, 3095, 3097, - 86, 3099, 86, 3098, 3094, 3100, 86, 3101, 86, 3102, - 86, 3103, 86, 3104, 86, 3105, 86, 86, 3107, 86, - 86, 86, 86, 86, 86, 86, 3106, 3112, 86, 3108, - 86, 86, 86, 3109, 86, 3116, 86, 3115, 3113, 3118, - 86, 86, 3110, 3111, 3114, 3117, 86, 86, 3122, 3120, - 3119, 86, 3125, 86, 3124, 86, 86, 86, 86, 3123, - 3127, 86, 3121, 86, 86, 86, 86, 3126, 3133, 3131, - 86, 86, 86, 3130, 3132, 3128, 86, 86, 86, 3129, - 3136, 3134, 3138, 86, 3137, 3139, 86, 3140, 86, 86, + 3093, 86, 3094, 3087, 3088, 86, 3096, 86, 86, 3089, + 86, 3095, 3097, 86, 86, 86, 3092, 3100, 86, 3099, + 3101, 86, 3103, 86, 3102, 3098, 3104, 86, 3105, 86, + 3106, 86, 3107, 86, 3108, 86, 3109, 86, 86, 3111, + 86, 86, 86, 86, 86, 86, 86, 3110, 3116, 86, + 3112, 86, 86, 86, 3113, 86, 3120, 86, 3119, 3117, + 3122, 86, 86, 3114, 3115, 3118, 3121, 86, 86, 3126, + 3124, 3123, 86, 3129, 86, 3128, 86, 86, 86, 86, + 3127, 3131, 86, 3125, 86, 86, 86, 86, 3130, 3137, + 3135, 86, 86, 86, 3134, 3136, 3132, 86, 86, 86, - 86, 86, 3145, 86, 3143, 3141, 3135, 86, 3142, 3146, - 86, 86, 3148, 3149, 3147, 86, 3151, 86, 86, 86, - 86, 3144, 86, 86, 86, 3150, 86, 86, 86, 86, - 3152, 3160, 3158, 86, 3162, 3155, 86, 3153, 3154, 3157, - 3159, 3164, 86, 86, 3167, 86, 86, 3156, 3161, 3169, - 86, 86, 3170, 3163, 86, 3168, 3165, 3171, 86, 3172, - 86, 86, 86, 3166, 86, 3175, 86, 86, 86, 3176, - 3180, 3177, 86, 3173, 86, 86, 86, 3184, 86, 3183, - 86, 3174, 86, 3179, 3186, 86, 3181, 3182, 3187, 86, - 86, 86, 3178, 3190, 86, 86, 86, 3188, 3193, 86, + 3133, 3140, 3138, 3142, 86, 3141, 3143, 86, 3144, 86, + 86, 86, 86, 3149, 86, 3147, 3145, 3139, 86, 3146, + 3150, 86, 86, 3152, 3153, 3151, 86, 3155, 86, 86, + 86, 86, 3148, 86, 86, 86, 3154, 86, 86, 86, + 86, 3156, 3164, 3162, 86, 3166, 3159, 86, 3157, 3158, + 3161, 3163, 3168, 86, 86, 3171, 86, 86, 3160, 3165, + 3173, 86, 86, 3174, 3167, 86, 3172, 3169, 3175, 86, + 3176, 86, 86, 86, 3170, 86, 3179, 86, 86, 86, + 3180, 3184, 3181, 86, 3177, 86, 86, 86, 3188, 86, + 3187, 86, 3178, 86, 3183, 3190, 86, 3185, 3186, 3191, - 3185, 86, 3194, 86, 3195, 3197, 3191, 86, 3198, 3189, - 86, 86, 86, 3192, 86, 86, 3203, 86, 3204, 86, - 3202, 3199, 3196, 3200, 86, 86, 86, 86, 86, 86, - 86, 3201, 3208, 86, 3210, 86, 86, 86, 86, 3207, - 86, 3215, 86, 3216, 86, 3205, 3206, 3209, 3212, 3211, - 3213, 3223, 3214, 3217, 86, 3221, 86, 86, 86, 86, - 3218, 3220, 3219, 3222, 86, 3224, 86, 86, 86, 3229, - 86, 3225, 3226, 3227, 86, 86, 3230, 86, 3228, 3231, - 3232, 86, 86, 86, 86, 86, 3233, 3238, 86, 3234, - 3235, 86, 86, 86, 86, 3241, 3242, 86, 86, 86, + 86, 86, 86, 3182, 3194, 86, 86, 86, 3192, 3197, + 86, 3189, 86, 3198, 86, 3199, 3201, 3195, 86, 3202, + 3193, 86, 86, 86, 3196, 86, 86, 3207, 86, 3208, + 86, 3206, 3203, 3200, 3204, 86, 86, 86, 86, 86, + 86, 86, 3205, 3212, 86, 3214, 86, 86, 86, 86, + 3211, 86, 3219, 86, 3220, 86, 3209, 3210, 3213, 3216, + 3215, 3217, 3227, 3218, 3221, 86, 3225, 86, 86, 86, + 86, 3222, 3224, 3223, 3226, 86, 3228, 86, 86, 86, + 3233, 86, 3229, 3230, 3231, 86, 86, 3234, 86, 3232, + 3235, 3236, 86, 86, 86, 86, 86, 3237, 3242, 86, - 86, 86, 86, 3236, 3237, 3240, 3245, 3239, 3243, 86, - 3246, 3244, 86, 3248, 86, 3249, 86, 3247, 86, 3253, - 86, 3250, 3251, 86, 3255, 86, 3256, 86, 3252, 86, - 86, 3254, 3257, 3260, 86, 3261, 3258, 86, 86, 3259, - 3262, 3263, 86, 86, 3264, 86, 86, 86, 3269, 86, - 3265, 3267, 86, 86, 86, 86, 86, 86, 3271, 3272, - 86, 3275, 3276, 86, 3266, 86, 3268, 86, 3279, 3280, - 86, 3270, 86, 86, 3273, 3274, 3277, 3282, 86, 3281, - 3283, 86, 86, 86, 3278, 86, 86, 3291, 3285, 3284, - 3286, 3291, 3287, 3289, 86, 3290, 86, 3291, 3291, 3291, + 3238, 3239, 86, 86, 86, 86, 3245, 3246, 86, 86, + 86, 86, 86, 86, 3240, 3241, 3244, 3249, 3243, 3247, + 86, 3250, 3248, 86, 3252, 86, 3253, 86, 3251, 86, + 3257, 86, 3254, 3255, 86, 3259, 86, 3260, 86, 3256, + 86, 86, 3258, 3261, 3264, 86, 3265, 3262, 86, 86, + 3263, 3266, 3267, 86, 86, 3268, 86, 86, 86, 3273, + 86, 3269, 3271, 86, 86, 86, 86, 86, 86, 3275, + 3276, 86, 3279, 3280, 86, 3270, 86, 3272, 86, 3283, + 3284, 86, 3274, 86, 86, 3277, 3278, 3281, 3286, 86, + 3285, 3287, 86, 86, 86, 3282, 86, 86, 3295, 3289, - 3291, 3291, 3291, 3291, 3291, 3288, 47, 47, 47, 47, - 47, 47, 47, 52, 52, 52, 52, 52, 52, 52, - 57, 57, 57, 57, 57, 57, 57, 63, 63, 63, - 63, 63, 63, 63, 68, 68, 68, 68, 68, 68, - 68, 74, 74, 74, 74, 74, 74, 74, 80, 80, - 80, 80, 80, 80, 80, 89, 89, 3291, 89, 89, - 89, 89, 158, 158, 3291, 3291, 3291, 158, 158, 160, - 160, 3291, 3291, 160, 3291, 160, 162, 3291, 3291, 3291, - 3291, 3291, 162, 165, 165, 3291, 3291, 3291, 165, 165, - 167, 3291, 3291, 3291, 3291, 3291, 167, 169, 169, 3291, + 3288, 3290, 3295, 3291, 3293, 86, 3294, 86, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3292, 47, 47, 47, + 47, 47, 47, 47, 52, 52, 52, 52, 52, 52, + 52, 57, 57, 57, 57, 57, 57, 57, 63, 63, + 63, 63, 63, 63, 63, 68, 68, 68, 68, 68, + 68, 68, 74, 74, 74, 74, 74, 74, 74, 80, + 80, 80, 80, 80, 80, 80, 89, 89, 3295, 89, + 89, 89, 89, 159, 159, 3295, 3295, 3295, 159, 159, + 161, 161, 3295, 3295, 161, 3295, 161, 163, 3295, 3295, + 3295, 3295, 3295, 163, 166, 166, 3295, 3295, 3295, 166, - 169, 169, 169, 169, 172, 3291, 3291, 3291, 3291, 3291, - 172, 175, 175, 3291, 3291, 3291, 175, 175, 90, 90, - 3291, 90, 90, 90, 90, 17, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291 + 166, 168, 3295, 3295, 3295, 3295, 3295, 168, 170, 170, + 3295, 170, 170, 170, 170, 173, 3295, 3295, 3295, 3295, + 3295, 173, 176, 176, 3295, 3295, 3295, 176, 176, 90, + 90, 3295, 90, 90, 90, 90, 17, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295 } ; -static const flex_int16_t yy_chk[6467] = +static const flex_int16_t yy_chk[6478] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2231,709 +2234,710 @@ static const flex_int16_t yy_chk[6467] = 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, 3299, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3303, 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, 2689, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 2693, 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, - 28, 92, 31, 32, 1082, 32, 36, 36, 37, 37, - 28, 45, 45, 37, 175, 36, 45, 39, 41, 41, + 28, 92, 31, 32, 1086, 32, 36, 36, 37, 37, + 28, 45, 45, 37, 176, 36, 45, 39, 41, 41, - 45, 36, 39, 41, 94, 36, 39, 43, 43, 37, - 43, 94, 39, 41, 41, 39, 41, 44, 42, 43, - 87, 44, 39, 42, 87, 43, 42, 62, 95, 62, - 62, 44, 62, 42, 174, 44, 44, 42, 42, 70, - 95, 70, 70, 72, 70, 72, 72, 79, 72, 79, - 79, 70, 79, 84, 84, 86, 96, 86, 86, 89, - 86, 89, 89, 93, 89, 97, 86, 93, 97, 98, - 89, 89, 98, 100, 101, 102, 96, 103, 104, 105, - 106, 102, 100, 107, 111, 98, 106, 102, 101, 102, - 108, 109, 112, 172, 110, 103, 103, 107, 105, 106, + 45, 36, 39, 41, 87, 36, 39, 37, 87, 37, + 84, 84, 39, 41, 41, 39, 41, 93, 42, 95, + 96, 93, 39, 42, 43, 43, 42, 43, 94, 97, + 44, 95, 97, 42, 44, 94, 43, 42, 42, 113, + 96, 115, 43, 113, 44, 175, 115, 124, 44, 44, + 62, 124, 62, 62, 70, 62, 70, 70, 72, 70, + 72, 72, 79, 72, 79, 79, 70, 79, 86, 103, + 86, 86, 89, 86, 89, 89, 100, 89, 98, 86, + 104, 98, 101, 89, 89, 100, 102, 103, 103, 105, + 107, 106, 102, 108, 98, 109, 101, 106, 102, 111, - 104, 114, 111, 113, 108, 110, 110, 113, 116, 115, - 112, 109, 117, 110, 115, 117, 119, 118, 117, 120, - 123, 114, 116, 118, 120, 126, 121, 122, 734, 121, - 125, 117, 117, 121, 123, 119, 124, 125, 126, 128, - 124, 127, 118, 129, 120, 734, 122, 130, 127, 121, - 131, 122, 128, 132, 131, 133, 134, 135, 135, 136, - 133, 139, 137, 129, 133, 130, 137, 138, 143, 140, - 142, 132, 144, 148, 143, 137, 134, 141, 147, 136, - 141, 137, 138, 142, 144, 145, 145, 139, 140, 146, - 149, 141, 148, 150, 147, 141, 146, 151, 152, 151, + 102, 110, 104, 112, 107, 114, 173, 108, 105, 116, + 106, 119, 110, 110, 122, 109, 117, 111, 118, 117, + 110, 112, 117, 116, 118, 114, 120, 126, 123, 130, + 119, 120, 125, 122, 121, 117, 117, 121, 122, 125, + 126, 121, 123, 118, 128, 127, 129, 131, 133, 130, + 132, 120, 127, 128, 132, 134, 135, 121, 137, 129, + 134, 136, 136, 140, 134, 131, 133, 138, 139, 141, + 168, 138, 143, 146, 146, 144, 135, 150, 137, 142, + 138, 144, 142, 139, 145, 143, 138, 148, 141, 140, + 149, 146, 147, 142, 146, 151, 145, 142, 150, 147, - 153, 154, 157, 145, 155, 153, 145, 146, 151, 150, - 152, 149, 156, 154, 159, 159, 157, 156, 161, 167, - 151, 161, 155, 163, 171, 163, 163, 171, 163, 166, - 166, 168, 179, 168, 168, 169, 168, 169, 169, 173, - 169, 173, 173, 177, 173, 176, 176, 169, 177, 178, - 179, 180, 181, 183, 182, 178, 184, 185, 186, 187, - 181, 183, 188, 186, 178, 182, 180, 181, 190, 191, - 189, 188, 185, 198, 191, 184, 189, 189, 193, 187, - 192, 192, 195, 194, 193, 194, 195, 197, 194, 196, - 196, 195, 198, 190, 202, 199, 195, 201, 203, 197, + 153, 154, 152, 148, 152, 155, 154, 158, 156, 149, + 147, 151, 153, 152, 157, 160, 160, 155, 180, 157, + 162, 158, 254, 162, 254, 152, 156, 164, 172, 164, + 164, 172, 164, 167, 167, 169, 180, 169, 169, 170, + 169, 170, 170, 174, 170, 174, 174, 178, 174, 177, + 177, 170, 178, 179, 181, 182, 183, 184, 185, 179, + 186, 187, 188, 182, 189, 184, 187, 183, 179, 181, + 182, 191, 190, 189, 194, 186, 192, 185, 190, 190, + 194, 192, 188, 193, 193, 195, 198, 195, 196, 202, + 195, 199, 196, 197, 197, 200, 191, 196, 198, 201, - 199, 200, 195, 195, 203, 194, 200, 204, 205, 201, - 206, 204, 215, 205, 202, 207, 208, 210, 209, 211, - 212, 230, 216, 214, 211, 212, 206, 203, 214, 207, - 209, 208, 215, 209, 230, 210, 213, 213, 216, 217, - 213, 219, 213, 218, 218, 217, 220, 219, 221, 222, - 224, 223, 220, 219, 213, 222, 213, 223, 225, 232, - 226, 227, 234, 228, 225, 226, 223, 227, 221, 228, - 229, 224, 231, 235, 233, 234, 236, 229, 231, 232, - 233, 235, 237, 238, 234, 239, 240, 237, 241, 236, - 242, 244, 238, 243, 246, 242, 242, 245, 243, 247, + 200, 202, 196, 203, 201, 204, 207, 195, 196, 196, + 199, 204, 205, 206, 208, 209, 205, 210, 206, 211, + 212, 213, 207, 203, 216, 212, 213, 217, 208, 210, + 209, 166, 210, 215, 204, 214, 214, 211, 215, 214, + 218, 214, 222, 217, 216, 220, 218, 219, 219, 225, + 221, 220, 223, 214, 224, 214, 221, 220, 223, 226, + 224, 227, 222, 232, 229, 226, 227, 228, 229, 224, + 225, 230, 231, 228, 233, 234, 232, 230, 235, 231, + 233, 236, 237, 238, 235, 241, 239, 243, 240, 242, + 237, 239, 246, 244, 236, 234, 238, 240, 244, 244, - 239, 245, 240, 248, 249, 247, 250, 251, 241, 244, - 249, 252, 251, 252, 253, 257, 246, 254, 312, 255, - 259, 248, 248, 256, 254, 255, 250, 260, 266, 256, - 258, 312, 259, 253, 257, 268, 258, 261, 261, 262, - 262, 260, 263, 264, 265, 267, 265, 268, 263, 264, - 267, 266, 269, 270, 271, 272, 273, 276, 274, 275, - 272, 270, 276, 265, 274, 275, 263, 277, 279, 278, - 280, 269, 277, 281, 271, 278, 282, 283, 284, 273, - 285, 288, 288, 279, 280, 283, 285, 290, 293, 286, - 282, 281, 286, 287, 289, 287, 294, 289, 291, 291, + 241, 245, 248, 236, 247, 242, 245, 243, 247, 249, + 246, 250, 251, 252, 253, 249, 255, 257, 251, 253, + 256, 259, 258, 257, 248, 260, 261, 256, 258, 250, + 250, 260, 262, 252, 268, 255, 263, 263, 261, 265, + 259, 264, 264, 266, 270, 265, 262, 269, 267, 266, + 267, 271, 269, 272, 273, 274, 270, 268, 275, 276, + 274, 272, 277, 265, 278, 276, 279, 267, 277, 278, + 271, 279, 280, 281, 273, 282, 283, 284, 280, 285, + 286, 275, 288, 291, 287, 288, 291, 285, 281, 282, + 287, 284, 292, 289, 283, 289, 290, 290, 293, 293, - 292, 292, 165, 284, 293, 290, 295, 297, 296, 295, - 298, 294, 296, 300, 299, 301, 297, 303, 309, 298, - 299, 301, 302, 303, 302, 304, 307, 300, 306, 304, - 305, 305, 307, 306, 308, 310, 311, 315, 309, 316, - 308, 313, 313, 316, 314, 317, 304, 314, 318, 319, - 319, 320, 328, 310, 323, 315, 322, 311, 321, 308, - 323, 321, 324, 325, 317, 324, 318, 327, 322, 320, - 328, 331, 329, 332, 331, 325, 327, 329, 321, 326, - 330, 333, 412, 330, 412, 330, 332, 334, 326, 334, - 334, 326, 336, 333, 337, 336, 326, 326, 326, 326, + 294, 294, 295, 297, 296, 286, 297, 298, 299, 301, + 292, 298, 300, 302, 303, 301, 311, 299, 295, 296, + 303, 300, 304, 305, 304, 312, 306, 302, 308, 305, + 306, 307, 307, 308, 309, 310, 311, 313, 314, 316, + 309, 310, 316, 312, 315, 315, 317, 306, 318, 319, + 165, 314, 318, 320, 321, 321, 322, 324, 313, 323, + 310, 325, 323, 326, 317, 327, 326, 325, 319, 324, + 330, 320, 329, 331, 322, 339, 339, 327, 331, 323, + 328, 329, 332, 333, 335, 332, 333, 332, 330, 328, + 338, 334, 328, 338, 341, 613, 335, 328, 328, 328, - 335, 330, 338, 339, 340, 335, 335, 341, 341, 345, - 342, 337, 339, 340, 337, 342, 347, 338, 343, 343, - 344, 344, 346, 348, 345, 349, 350, 346, 347, 351, - 354, 352, 352, 355, 352, 351, 363, 363, 355, 357, - 356, 350, 348, 352, 357, 349, 356, 358, 359, 360, - 354, 359, 358, 359, 361, 362, 364, 361, 358, 365, - 365, 366, 364, 360, 362, 367, 366, 371, 367, 369, - 361, 373, 164, 361, 367, 361, 370, 372, 367, 370, - 375, 376, 371, 375, 379, 373, 367, 368, 368, 369, - 368, 382, 372, 379, 378, 376, 380, 370, 381, 375, + 328, 340, 613, 332, 334, 336, 337, 336, 336, 341, + 342, 337, 337, 343, 344, 344, 346, 346, 340, 342, + 345, 340, 343, 347, 347, 345, 348, 349, 350, 351, + 352, 353, 349, 354, 357, 355, 355, 358, 355, 354, + 350, 348, 358, 359, 365, 363, 353, 355, 351, 359, + 352, 360, 361, 365, 357, 362, 360, 361, 362, 363, + 362, 364, 367, 361, 364, 366, 366, 369, 367, 368, + 368, 372, 369, 373, 374, 370, 373, 364, 370, 376, + 364, 379, 364, 386, 370, 163, 375, 378, 370, 374, + 378, 372, 381, 376, 373, 379, 370, 371, 371, 382, - 383, 380, 380, 368, 381, 384, 368, 385, 368, 378, - 368, 377, 382, 377, 377, 386, 385, 388, 387, 383, - 384, 389, 390, 377, 387, 377, 377, 377, 392, 391, - 377, 395, 393, 392, 386, 391, 390, 394, 397, 391, - 396, 389, 398, 388, 400, 396, 395, 401, 398, 399, - 399, 392, 393, 397, 402, 403, 404, 394, 405, 401, - 406, 403, 408, 409, 400, 406, 407, 407, 402, 407, - 410, 411, 417, 413, 405, 413, 413, 416, 416, 409, - 414, 404, 408, 415, 414, 411, 410, 415, 418, 419, - 420, 417, 421, 413, 424, 422, 423, 162, 425, 430, + 371, 375, 386, 389, 383, 384, 378, 381, 382, 383, + 383, 384, 387, 371, 392, 391, 371, 385, 371, 388, + 371, 380, 389, 380, 380, 390, 396, 387, 388, 393, + 397, 390, 161, 380, 392, 380, 380, 380, 385, 394, + 380, 391, 395, 393, 398, 394, 396, 395, 399, 394, + 397, 400, 401, 399, 402, 402, 403, 404, 401, 398, + 405, 406, 407, 408, 411, 395, 400, 406, 409, 404, + 412, 414, 413, 409, 405, 159, 403, 410, 410, 408, + 410, 415, 420, 415, 411, 414, 412, 407, 413, 416, + 417, 416, 416, 418, 417, 419, 419, 418, 421, 422, - 424, 423, 415, 418, 422, 419, 421, 425, 420, 423, - 423, 426, 428, 423, 423, 422, 426, 422, 427, 429, - 430, 428, 427, 431, 432, 429, 434, 433, 432, 431, - 433, 434, 435, 436, 436, 437, 438, 438, 439, 442, - 440, 441, 441, 439, 444, 442, 443, 445, 437, 446, - 443, 447, 435, 440, 446, 449, 447, 448, 448, 444, - 450, 451, 452, 458, 455, 457, 448, 449, 445, 453, - 457, 454, 453, 460, 452, 454, 455, 456, 456, 451, - 450, 459, 459, 463, 458, 462, 462, 466, 464, 465, - 467, 469, 470, 471, 472, 460, 464, 473, 465, 160, + 423, 420, 424, 430, 427, 425, 426, 430, 428, 416, + 427, 426, 418, 421, 425, 422, 424, 428, 423, 426, + 426, 429, 431, 426, 426, 425, 429, 425, 432, 433, + 434, 431, 436, 435, 432, 436, 434, 435, 437, 438, + 439, 439, 440, 437, 441, 441, 442, 443, 444, 444, + 433, 442, 445, 446, 447, 440, 448, 446, 445, 438, + 443, 449, 450, 451, 451, 453, 449, 450, 452, 447, + 454, 455, 451, 456, 457, 458, 456, 448, 457, 460, + 452, 459, 459, 455, 460, 453, 461, 458, 454, 462, + 462, 463, 465, 465, 467, 468, 469, 470, 471, 478, - 475, 477, 467, 473, 463, 474, 475, 466, 472, 469, - 470, 469, 476, 471, 474, 477, 478, 476, 479, 480, - 481, 479, 482, 483, 478, 485, 484, 478, 482, 484, - 486, 485, 487, 480, 488, 481, 489, 487, 490, 492, - 491, 493, 490, 483, 486, 491, 493, 494, 495, 485, - 499, 496, 502, 520, 492, 501, 488, 489, 500, 501, - 506, 503, 504, 494, 496, 520, 504, 495, 497, 497, - 499, 502, 509, 500, 497, 506, 497, 503, 507, 508, - 505, 509, 497, 507, 497, 505, 510, 497, 497, 505, - 511, 512, 510, 513, 497, 508, 513, 510, 508, 514, + 473, 474, 475, 468, 85, 469, 477, 461, 478, 476, + 471, 480, 477, 463, 481, 467, 480, 470, 473, 474, + 473, 479, 475, 476, 482, 484, 483, 479, 481, 483, + 485, 486, 482, 487, 489, 482, 490, 486, 488, 484, + 489, 488, 491, 492, 494, 485, 493, 491, 494, 495, + 490, 496, 497, 487, 495, 498, 499, 497, 489, 500, + 503, 524, 506, 504, 505, 492, 496, 493, 505, 507, + 508, 498, 500, 524, 508, 499, 501, 501, 504, 510, + 503, 506, 501, 80, 501, 507, 511, 512, 509, 513, + 501, 511, 501, 509, 510, 501, 501, 509, 513, 514, - 515, 516, 516, 517, 519, 511, 521, 512, 518, 518, - 522, 523, 524, 526, 525, 527, 530, 524, 528, 519, - 515, 521, 514, 525, 528, 530, 533, 531, 517, 522, - 527, 531, 526, 523, 532, 534, 535, 536, 533, 537, - 532, 538, 539, 540, 542, 541, 539, 541, 546, 543, - 534, 536, 544, 544, 537, 535, 540, 543, 545, 538, - 546, 547, 548, 549, 545, 550, 549, 547, 542, 551, - 552, 554, 555, 553, 548, 552, 553, 556, 557, 550, - 554, 565, 556, 556, 551, 558, 558, 554, 555, 560, - 554, 557, 559, 559, 563, 560, 561, 561, 562, 562, + 515, 516, 501, 512, 517, 514, 512, 517, 518, 519, + 514, 520, 520, 521, 526, 515, 529, 516, 522, 522, + 523, 525, 527, 528, 530, 529, 531, 75, 528, 519, + 534, 518, 538, 526, 532, 523, 525, 537, 521, 534, + 532, 531, 535, 530, 527, 536, 535, 538, 539, 537, + 540, 536, 542, 541, 543, 545, 544, 545, 543, 546, + 548, 548, 550, 547, 540, 552, 549, 539, 541, 544, + 542, 547, 549, 551, 550, 553, 554, 552, 553, 551, + 555, 556, 557, 546, 558, 557, 556, 647, 559, 561, + 554, 560, 569, 558, 647, 555, 560, 560, 562, 562, - 563, 564, 565, 566, 568, 567, 564, 564, 567, 568, - 569, 570, 572, 571, 573, 566, 571, 572, 575, 570, - 574, 576, 575, 578, 577, 579, 580, 576, 577, 569, - 579, 581, 581, 582, 583, 585, 586, 573, 584, 574, - 580, 578, 588, 584, 587, 589, 590, 588, 582, 590, - 587, 585, 591, 593, 590, 583, 586, 590, 590, 589, - 592, 592, 594, 595, 596, 597, 598, 600, 595, 596, - 591, 593, 602, 600, 601, 602, 603, 604, 594, 597, - 603, 598, 604, 601, 605, 606, 609, 605, 607, 608, - 606, 611, 610, 609, 612, 616, 611, 613, 613, 614, + 558, 564, 561, 558, 559, 563, 563, 564, 565, 565, + 566, 566, 567, 569, 568, 570, 573, 572, 567, 568, + 568, 571, 572, 574, 571, 575, 577, 570, 575, 576, + 580, 574, 578, 579, 576, 573, 580, 579, 581, 582, + 583, 584, 581, 585, 585, 583, 586, 587, 588, 577, + 589, 578, 590, 588, 591, 584, 593, 582, 592, 595, + 591, 586, 597, 592, 596, 596, 589, 74, 587, 598, + 593, 594, 590, 599, 594, 601, 600, 595, 599, 594, + 597, 600, 594, 594, 602, 598, 604, 605, 606, 601, + 607, 606, 604, 608, 607, 611, 605, 609, 608, 602, - 615, 617, 603, 618, 607, 610, 619, 608, 614, 625, - 617, 616, 619, 158, 612, 618, 620, 621, 623, 615, - 621, 623, 620, 622, 622, 624, 622, 625, 626, 627, - 624, 628, 629, 631, 630, 627, 628, 630, 629, 632, - 633, 634, 626, 635, 632, 633, 633, 636, 639, 637, - 638, 641, 636, 85, 634, 637, 635, 639, 631, 640, - 642, 642, 644, 643, 640, 644, 636, 636, 645, 638, - 643, 641, 646, 647, 645, 650, 648, 651, 647, 651, - 644, 648, 648, 652, 646, 649, 649, 653, 654, 653, - 655, 656, 657, 658, 660, 659, 661, 662, 660, 663, + 609, 610, 612, 615, 614, 616, 610, 619, 615, 617, + 617, 611, 618, 620, 621, 622, 607, 614, 623, 629, + 612, 618, 624, 621, 623, 616, 619, 622, 624, 620, + 625, 626, 626, 625, 626, 627, 628, 629, 627, 630, + 631, 628, 632, 633, 635, 634, 631, 632, 634, 633, + 636, 637, 638, 630, 639, 636, 637, 637, 640, 643, + 641, 642, 645, 640, 68, 638, 641, 639, 643, 635, + 644, 646, 646, 648, 650, 644, 648, 640, 640, 649, + 642, 654, 645, 651, 652, 649, 650, 658, 651, 652, + 652, 648, 653, 653, 655, 656, 655, 657, 659, 657, - 650, 659, 652, 664, 665, 661, 654, 666, 655, 656, - 667, 657, 662, 658, 663, 669, 668, 671, 670, 666, - 672, 664, 668, 665, 673, 667, 674, 675, 673, 669, - 670, 676, 677, 678, 680, 679, 671, 681, 681, 672, - 679, 682, 683, 675, 674, 682, 684, 685, 680, 676, - 677, 677, 678, 686, 687, 688, 683, 689, 685, 687, - 690, 691, 696, 693, 692, 684, 80, 686, 691, 692, - 693, 688, 694, 690, 695, 697, 689, 694, 698, 695, - 696, 699, 697, 700, 701, 702, 703, 698, 705, 703, - 702, 706, 700, 704, 707, 699, 701, 704, 708, 709, + 660, 661, 662, 663, 664, 658, 654, 668, 664, 663, + 665, 666, 667, 669, 656, 671, 659, 670, 660, 665, + 661, 673, 662, 675, 674, 668, 666, 667, 672, 670, + 671, 676, 669, 677, 672, 673, 674, 677, 678, 679, + 680, 681, 675, 682, 683, 685, 685, 684, 686, 683, + 676, 687, 686, 688, 692, 679, 678, 689, 680, 681, + 681, 684, 682, 690, 691, 687, 693, 694, 689, 691, + 692, 695, 688, 700, 696, 697, 698, 690, 695, 696, + 694, 698, 697, 699, 703, 693, 701, 702, 699, 705, + 704, 700, 706, 701, 709, 710, 702, 706, 703, 704, - 706, 718, 705, 710, 710, 711, 711, 712, 712, 707, - 713, 716, 708, 714, 711, 713, 721, 717, 722, 720, - 709, 718, 714, 717, 719, 724, 723, 725, 719, 726, - 716, 720, 723, 724, 725, 727, 722, 728, 731, 737, - 738, 721, 741, 740, 744, 744, 738, 726, 737, 740, - 743, 741, 742, 731, 743, 745, 745, 728, 746, 747, - 727, 729, 748, 729, 749, 750, 729, 752, 742, 746, - 729, 750, 752, 729, 753, 754, 748, 747, 755, 759, - 729, 729, 755, 729, 749, 751, 751, 751, 756, 751, - 757, 758, 751, 754, 757, 753, 758, 751, 759, 760, + 707, 705, 708, 707, 710, 711, 708, 712, 709, 713, + 714, 714, 717, 715, 715, 716, 716, 717, 718, 720, + 711, 712, 715, 721, 722, 724, 725, 718, 723, 721, + 713, 726, 723, 727, 728, 730, 729, 724, 720, 727, + 731, 732, 728, 729, 722, 735, 738, 741, 742, 726, + 745, 725, 744, 730, 742, 752, 741, 746, 744, 745, + 735, 732, 63, 738, 751, 731, 733, 753, 733, 752, + 747, 733, 750, 746, 747, 733, 748, 748, 733, 749, + 749, 757, 751, 750, 754, 733, 733, 753, 733, 756, + 754, 755, 755, 755, 756, 755, 758, 759, 755, 760, - 761, 763, 762, 751, 751, 762, 763, 763, 764, 766, - 757, 75, 756, 767, 760, 764, 765, 765, 767, 768, - 768, 769, 774, 771, 766, 761, 769, 770, 771, 775, - 770, 772, 772, 773, 774, 773, 776, 777, 779, 778, - 776, 780, 780, 785, 781, 784, 779, 782, 775, 783, - 783, 786, 789, 789, 787, 785, 808, 777, 778, 781, - 787, 782, 788, 784, 790, 808, 792, 788, 793, 790, - 790, 792, 794, 786, 793, 795, 796, 798, 794, 799, - 795, 797, 796, 798, 797, 800, 800, 799, 801, 801, - 802, 803, 804, 805, 806, 807, 807, 804, 802, 809, + 761, 759, 757, 755, 761, 763, 762, 764, 765, 755, + 755, 762, 766, 767, 758, 766, 769, 769, 767, 767, + 761, 768, 764, 760, 763, 770, 771, 773, 768, 772, + 772, 771, 773, 765, 774, 778, 775, 774, 776, 776, + 770, 775, 777, 779, 777, 780, 781, 778, 782, 780, + 783, 784, 784, 785, 788, 786, 787, 787, 783, 789, + 790, 837, 779, 837, 791, 58, 781, 782, 785, 786, + 791, 789, 788, 792, 793, 793, 796, 797, 792, 794, + 798, 796, 790, 797, 794, 794, 798, 799, 800, 802, + 801, 803, 799, 801, 800, 802, 804, 804, 806, 803, - 805, 810, 810, 812, 811, 814, 815, 809, 816, 803, - 811, 817, 818, 806, 814, 815, 817, 819, 820, 821, - 819, 818, 812, 820, 822, 823, 824, 826, 826, 827, - 825, 828, 816, 821, 823, 825, 825, 829, 830, 824, - 831, 834, 834, 831, 827, 833, 829, 833, 835, 822, - 828, 831, 836, 837, 842, 838, 839, 836, 840, 841, - 843, 844, 830, 842, 845, 844, 846, 847, 848, 835, - 850, 74, 849, 847, 837, 838, 839, 848, 851, 841, - 840, 852, 845, 843, 849, 846, 853, 852, 854, 850, - 855, 855, 851, 854, 856, 857, 858, 859, 860, 861, + 805, 805, 807, 808, 809, 810, 806, 812, 808, 811, + 811, 809, 815, 813, 814, 814, 812, 816, 815, 818, + 807, 813, 819, 820, 810, 821, 822, 825, 818, 823, + 821, 819, 823, 824, 826, 822, 816, 827, 824, 828, + 831, 825, 832, 829, 830, 830, 827, 820, 829, 829, + 834, 833, 828, 835, 839, 831, 835, 838, 838, 826, + 833, 832, 840, 841, 835, 842, 843, 840, 844, 845, + 846, 847, 848, 849, 834, 839, 848, 850, 854, 846, + 1098, 851, 1098, 852, 841, 842, 843, 851, 853, 845, + 844, 849, 852, 855, 847, 856, 850, 854, 857, 858, - 853, 862, 863, 864, 857, 859, 865, 867, 869, 864, - 866, 868, 865, 867, 856, 872, 858, 870, 860, 872, - 862, 861, 863, 870, 866, 868, 871, 873, 869, 874, - 875, 876, 871, 877, 877, 875, 878, 879, 880, 882, - 879, 874, 878, 883, 881, 882, 873, 884, 884, 874, - 885, 888, 876, 886, 887, 891, 880, 881, 886, 887, - 887, 889, 892, 883, 894, 889, 888, 893, 885, 890, - 890, 896, 893, 897, 900, 899, 901, 891, 903, 903, - 904, 905, 892, 894, 904, 906, 906, 897, 899, 908, - 907, 909, 919, 908, 900, 896, 905, 901, 902, 910, + 853, 856, 859, 859, 858, 860, 861, 855, 862, 863, + 864, 865, 857, 866, 867, 861, 868, 863, 869, 873, + 871, 870, 868, 872, 869, 860, 871, 876, 862, 877, + 864, 876, 866, 865, 867, 870, 874, 872, 875, 873, + 878, 879, 874, 880, 875, 882, 879, 884, 877, 881, + 881, 882, 878, 883, 885, 886, 883, 887, 888, 888, + 878, 886, 889, 890, 880, 884, 891, 885, 890, 892, + 893, 891, 891, 895, 893, 894, 894, 887, 896, 900, + 889, 897, 898, 901, 892, 904, 897, 903, 905, 907, + 907, 909, 908, 910, 910, 895, 908, 901, 896, 911, - 911, 902, 912, 902, 919, 911, 909, 902, 915, 902, - 932, 914, 913, 910, 902, 907, 912, 913, 913, 902, - 914, 916, 915, 917, 918, 916, 920, 921, 922, 918, - 923, 920, 932, 924, 925, 929, 929, 916, 917, 918, - 925, 921, 924, 926, 923, 927, 928, 931, 926, 922, - 930, 927, 928, 931, 933, 930, 934, 936, 937, 939, - 940, 940, 941, 937, 938, 943, 944, 941, 945, 936, - 946, 939, 942, 933, 934, 935, 935, 951, 938, 943, - 942, 935, 947, 935, 68, 944, 946, 945, 947, 935, - 949, 948, 950, 951, 935, 935, 948, 952, 953, 953, + 903, 898, 913, 900, 912, 904, 909, 915, 912, 905, + 906, 914, 915, 906, 916, 906, 919, 913, 920, 906, + 918, 906, 920, 921, 911, 914, 906, 917, 916, 918, + 919, 906, 917, 917, 920, 922, 923, 924, 921, 925, + 922, 926, 924, 927, 930, 928, 929, 937, 923, 930, + 922, 934, 929, 925, 928, 931, 934, 927, 932, 933, + 933, 931, 926, 935, 932, 936, 937, 938, 940, 935, + 941, 943, 942, 944, 944, 941, 945, 947, 948, 949, + 940, 945, 946, 943, 950, 938, 942, 936, 939, 939, + 946, 947, 953, 951, 939, 954, 939, 948, 949, 951, - 954, 935, 949, 955, 954, 957, 958, 959, 960, 958, - 950, 957, 961, 960, 962, 952, 963, 964, 966, 967, - 962, 963, 968, 955, 969, 961, 959, 966, 967, 971, - 969, 970, 972, 973, 975, 974, 964, 972, 968, 976, - 970, 977, 980, 978, 983, 986, 989, 987, 971, 974, - 977, 976, 978, 973, 975, 979, 981, 985, 988, 980, - 983, 979, 981, 990, 989, 986, 987, 996, 991, 992, - 995, 985, 988, 991, 992, 995, 996, 998, 990, 997, - 997, 999, 1001, 998, 1002, 1006, 1007, 1004, 1004, 1002, - 1002, 1004, 1005, 1008, 999, 1005, 1009, 1010, 1001, 1006, + 950, 952, 939, 955, 953, 956, 952, 939, 939, 957, + 957, 958, 959, 954, 939, 958, 961, 962, 963, 955, + 962, 964, 961, 956, 966, 965, 964, 968, 967, 972, + 966, 970, 959, 967, 971, 973, 975, 963, 965, 974, + 970, 973, 976, 971, 977, 972, 968, 976, 974, 978, + 979, 981, 982, 980, 984, 975, 983, 987, 990, 993, + 981, 982, 983, 978, 977, 980, 985, 989, 991, 992, + 979, 984, 985, 987, 994, 995, 57, 993, 990, 996, + 995, 989, 1000, 992, 996, 999, 1003, 991, 1002, 994, + 999, 1000, 1001, 1001, 1002, 1005, 1006, 1009, 1010, 1003, - 1011, 1012, 1013, 1015, 1020, 1014, 1007, 1012, 1016, 1008, - 1010, 1014, 1017, 1016, 1009, 1011, 1019, 1023, 1015, 1019, - 1029, 63, 1013, 1021, 1022, 1020, 1017, 1024, 1021, 1022, - 1025, 1026, 1024, 1023, 1028, 1025, 1029, 1033, 1030, 1031, - 1028, 1032, 1032, 1026, 1030, 1031, 1033, 1034, 1035, 1036, - 1036, 1035, 1037, 1038, 1039, 1040, 1041, 1042, 1040, 1044, - 1043, 1049, 1045, 1042, 1044, 1034, 1043, 1045, 1046, 1041, - 1037, 1047, 1038, 1046, 1039, 1050, 1051, 1047, 1052, 1049, - 1053, 1053, 1051, 1052, 1054, 1055, 1056, 1057, 1058, 1059, - 1060, 1058, 1059, 1054, 1055, 1050, 1062, 1061, 1063, 1064, + 1009, 1006, 1006, 1008, 1008, 1011, 1012, 1008, 1013, 1015, + 1014, 1005, 1010, 1016, 1017, 1018, 1019, 1023, 1024, 1016, + 1023, 1018, 1012, 1014, 1015, 1011, 1013, 1020, 1021, 1027, + 1025, 1019, 1020, 1026, 1017, 1025, 1028, 1030, 1026, 1024, + 1032, 1028, 1021, 1029, 1033, 1027, 1032, 1034, 1029, 1030, + 1035, 1036, 1036, 1034, 1037, 1038, 1035, 1041, 1039, 1042, + 1033, 1039, 1043, 1037, 1040, 1040, 1044, 1045, 1046, 1044, + 1047, 1054, 1048, 1038, 1046, 1041, 1047, 1048, 1042, 1049, + 1045, 1050, 1043, 1051, 1049, 1053, 1050, 1055, 1060, 1051, + 1056, 1054, 1058, 1055, 1061, 1056, 1057, 1057, 1059, 1062, - 1067, 1060, 1061, 1065, 1056, 1066, 1057, 1068, 1070, 1065, - 1063, 1066, 1068, 1072, 1062, 1067, 1069, 1069, 1064, 1071, - 1073, 1074, 1075, 1076, 1073, 1072, 1077, 1070, 1079, 1080, - 1080, 1075, 1081, 1071, 1083, 1084, 1086, 1085, 1089, 1074, - 1092, 1086, 1076, 58, 1087, 1088, 1088, 1079, 1083, 1085, - 1084, 1077, 1081, 1087, 1090, 1091, 1092, 1093, 1089, 1095, - 1090, 1091, 1093, 1094, 1095, 1094, 1096, 1097, 1098, 1099, - 1100, 1101, 1102, 1098, 1103, 1105, 1105, 1106, 1101, 1107, - 1096, 1097, 1109, 1108, 1099, 1110, 57, 1102, 1109, 1100, - 1111, 1106, 1113, 1103, 1117, 1111, 1113, 1107, 1108, 1114, + 1064, 1058, 1062, 1053, 1065, 1063, 1060, 1059, 1063, 1065, + 1066, 1064, 1067, 1061, 1068, 1069, 1070, 1071, 1072, 1073, + 1073, 1069, 1070, 1072, 1067, 1074, 1075, 1076, 1066, 1078, + 1077, 1080, 1071, 1068, 1077, 1081, 1079, 1083, 1085, 1076, + 1075, 1084, 1084, 1087, 1074, 1079, 1088, 1078, 1090, 1093, + 1080, 1089, 1105, 1090, 1096, 1091, 1083, 1087, 1085, 1105, + 1081, 1088, 1094, 1089, 1091, 1092, 1092, 1095, 1094, 1093, + 1096, 1097, 1099, 1095, 1100, 1101, 1097, 1099, 1102, 1103, + 1104, 1106, 1107, 1102, 1109, 1109, 1110, 1111, 1100, 1101, + 1114, 1112, 1113, 1234, 1103, 1234, 1106, 1115, 1113, 1104, - 1114, 1117, 1115, 1118, 1111, 1110, 1111, 1115, 1120, 1111, - 1116, 1116, 1119, 1121, 1122, 1119, 1123, 1118, 1124, 1126, - 1125, 1123, 1127, 1122, 1126, 1129, 1134, 1120, 1128, 1131, - 1131, 1121, 1125, 1132, 1137, 1133, 1127, 1124, 1132, 1128, - 1133, 1136, 1135, 1137, 1129, 1136, 1134, 1135, 1138, 1139, - 1140, 1142, 1143, 1141, 1145, 1144, 1146, 1147, 1150, 1143, - 1151, 1149, 1148, 1138, 1139, 1141, 1142, 1144, 1148, 1140, - 1152, 1153, 1154, 1145, 1157, 1147, 1149, 1146, 1150, 1152, - 1151, 1155, 1156, 1158, 1159, 1162, 1153, 1164, 1161, 1163, - 1165, 1154, 1166, 1155, 1161, 1164, 1170, 1167, 1158, 1157, + 1110, 1107, 1115, 1117, 1125, 1111, 1112, 1117, 1118, 1118, + 1114, 1115, 1119, 1115, 1120, 1120, 1115, 1119, 1121, 1122, + 1123, 1124, 1125, 1123, 1127, 1121, 1126, 1128, 1132, 1127, + 1129, 1130, 1133, 1122, 1131, 1126, 1130, 1135, 1135, 1132, + 1124, 1138, 1129, 1142, 1136, 1137, 1128, 1139, 1131, 1136, + 1137, 1133, 1139, 1140, 1141, 1143, 1144, 1140, 1142, 1145, + 1147, 1138, 1146, 1141, 1148, 1149, 1150, 1147, 1151, 1154, + 1143, 1145, 1152, 1153, 1155, 1144, 1148, 1146, 1152, 1158, + 1157, 1156, 1160, 1161, 1149, 1159, 1151, 1150, 1153, 1154, + 1156, 1162, 1163, 1165, 1155, 1157, 1166, 1159, 1158, 1165, - 1162, 1156, 1167, 1163, 1159, 1168, 1169, 1171, 1166, 1172, - 1165, 1169, 1169, 1173, 1173, 1170, 1175, 1168, 1176, 1177, - 1181, 1171, 1172, 1174, 1174, 1177, 1181, 1176, 1174, 1175, - 1179, 1174, 1174, 1178, 1178, 1179, 1174, 1185, 1180, 1182, - 1183, 1188, 1174, 1319, 1182, 1183, 1174, 1180, 1184, 1184, - 1186, 1186, 1187, 1189, 1190, 1187, 1191, 1187, 1185, 1192, - 1193, 1188, 1194, 1190, 1192, 1197, 1195, 1196, 1199, 1319, - 1197, 1189, 1195, 1196, 1193, 1198, 1191, 1199, 1205, 1198, - 1194, 1206, 1199, 1204, 1199, 1202, 1199, 1204, 1199, 1200, - 1200, 1201, 1201, 1205, 1201, 1207, 1202, 1208, 1209, 1206, + 1167, 1160, 1168, 1169, 1170, 1172, 1162, 1174, 1161, 52, + 1168, 1166, 1163, 1171, 1167, 1175, 1173, 1172, 1171, 1176, + 1170, 1173, 1173, 1169, 1177, 1177, 1174, 1179, 1180, 1175, + 1181, 1202, 1176, 1178, 1178, 1202, 1181, 1180, 1178, 1184, + 1179, 1178, 1178, 1182, 1182, 1183, 1178, 1185, 1184, 1186, + 1183, 1189, 1178, 1185, 1186, 1187, 1178, 1188, 1188, 1192, + 1187, 1190, 1190, 1191, 1193, 1194, 1191, 1195, 1191, 1197, + 1196, 1198, 1189, 47, 1194, 1196, 1201, 1206, 1199, 1192, + 1200, 1201, 1193, 1197, 1199, 1203, 1200, 1195, 1206, 1198, + 1204, 1204, 1205, 1205, 1203, 1205, 1208, 1209, 1210, 1203, - 1210, 1211, 1208, 1208, 1207, 1212, 1211, 1209, 1213, 1214, - 1215, 1216, 1217, 1218, 1218, 1219, 1220, 1213, 1217, 1212, - 1222, 1221, 1210, 1219, 1223, 1216, 1221, 1224, 1214, 1215, - 1220, 1225, 1226, 1223, 1222, 1227, 1227, 1226, 1228, 1229, - 1229, 1230, 1234, 1230, 1232, 1224, 1233, 1232, 1235, 1236, - 1236, 1233, 1237, 1228, 1238, 1238, 1225, 1235, 1239, 1239, - 1240, 1234, 1241, 1242, 1250, 1240, 1243, 1243, 1244, 1246, - 1245, 1247, 1237, 1245, 1261, 1261, 1247, 1248, 1249, 1253, - 1249, 1255, 1250, 1241, 1242, 1257, 1248, 1252, 1244, 1246, - 1252, 1254, 1256, 1257, 1253, 1255, 1254, 1256, 1258, 1259, + 1208, 1203, 1211, 1203, 1212, 1203, 1213, 1214, 1215, 1212, + 1212, 1211, 1209, 1215, 1216, 1213, 1210, 1217, 1218, 1219, + 1220, 1221, 1222, 1222, 1223, 1224, 1217, 1221, 1216, 1214, + 1225, 1226, 1223, 1227, 1220, 1225, 1228, 1218, 1219, 1224, + 1229, 1230, 1227, 1231, 1231, 1226, 1230, 1232, 1233, 1233, + 1236, 1237, 1238, 1236, 1228, 1239, 1237, 1240, 1240, 1241, + 1242, 1242, 1232, 1244, 1239, 1229, 1243, 1243, 1244, 1245, + 1246, 1238, 1247, 1247, 1248, 1249, 1250, 1251, 1249, 1241, + 1252, 1253, 1251, 1253, 1254, 1256, 1257, 1258, 1256, 1252, + 1245, 1246, 1258, 1259, 1248, 1260, 1250, 1261, 1262, 1264, - 1260, 1262, 1259, 1258, 1263, 1260, 1262, 1264, 1265, 1270, - 1266, 1268, 1269, 1264, 1270, 1265, 1273, 1268, 1269, 1271, - 1272, 1274, 1263, 1266, 1276, 1271, 1275, 1275, 1278, 1272, - 1279, 1280, 1274, 1281, 1282, 1273, 1283, 1286, 1287, 1281, - 1282, 1285, 1283, 1278, 1276, 1288, 1291, 1285, 1289, 1290, - 1279, 1286, 1292, 1292, 1280, 1293, 1294, 1286, 1287, 1295, - 1289, 1296, 1298, 1290, 1291, 1288, 1296, 1297, 1297, 1299, - 1301, 1304, 1303, 1302, 1299, 1293, 1305, 1295, 1302, 1302, - 1304, 1294, 1306, 1307, 1305, 1298, 1308, 1309, 1310, 1301, - 1303, 1311, 1309, 1311, 1312, 1309, 1306, 1310, 1307, 1314, + 1260, 1257, 1254, 1262, 1264, 1261, 1263, 1259, 1266, 1263, + 1265, 1265, 1267, 1266, 1268, 1269, 1270, 1272, 1273, 1275, + 1268, 1274, 1269, 1272, 1273, 1275, 1274, 1276, 1277, 1270, + 1267, 1278, 1279, 1279, 1280, 1282, 1276, 1283, 1284, 1285, + 1286, 1293, 1278, 1287, 1291, 1285, 1286, 1277, 1290, 1287, + 1282, 1292, 1289, 1293, 1280, 1294, 1295, 1283, 1289, 1296, + 1296, 1284, 1290, 1297, 1291, 1298, 1299, 1300, 1290, 1294, + 1302, 1292, 1300, 1303, 1295, 1301, 1301, 1305, 1303, 1307, + 1306, 1309, 1308, 1297, 1299, 1306, 1306, 1310, 1311, 1309, + 1298, 1308, 1312, 1302, 1313, 1314, 1305, 1307, 1315, 1313, - 1316, 1308, 1315, 1318, 1308, 1314, 1315, 1317, 1312, 1320, - 1321, 1316, 1317, 1317, 1322, 1321, 1323, 1324, 1325, 1322, - 1326, 1328, 1318, 1325, 1329, 1330, 1332, 1320, 1331, 1331, - 1332, 1333, 1334, 1335, 1323, 1328, 1336, 1324, 1337, 1335, - 1326, 1338, 1329, 1330, 1339, 1340, 1341, 1342, 1336, 1333, - 1345, 1334, 1342, 1344, 1343, 1338, 1354, 1337, 1344, 1339, - 1340, 1343, 1346, 1347, 1347, 1341, 1348, 1349, 1345, 1350, - 1354, 1346, 1351, 1351, 1352, 1357, 1349, 1353, 1355, 1355, - 1352, 1348, 1356, 1353, 1358, 1359, 1360, 1361, 1356, 1350, - 1359, 1357, 1360, 1361, 1362, 1363, 1363, 1364, 1364, 1367, + 1315, 1310, 1313, 1311, 1314, 1316, 1318, 1312, 1322, 1319, + 1312, 1320, 1318, 1319, 1323, 1321, 1324, 1327, 1325, 1316, + 1321, 1321, 1320, 1325, 1326, 1328, 1329, 1322, 1330, 1326, + 1332, 1329, 1333, 1334, 1324, 1327, 1335, 1335, 1336, 1337, + 1323, 1338, 1336, 1339, 1332, 1328, 1340, 1341, 1330, 1339, + 1333, 1334, 1345, 1342, 1343, 1344, 1346, 1337, 1340, 1348, + 1338, 1346, 1349, 1352, 1348, 1347, 1341, 1342, 1350, 1343, + 1344, 1345, 1347, 1351, 1351, 1353, 1354, 1350, 1352, 1356, + 1349, 1355, 1355, 1357, 1353, 1356, 1358, 1359, 1359, 1357, + 1361, 1360, 1362, 1363, 18, 1364, 1354, 1360, 1363, 1365, - 1362, 1366, 1366, 1367, 1368, 1358, 1369, 1370, 1371, 1373, - 1372, 1374, 1374, 1368, 1375, 1376, 1373, 1378, 1379, 1370, - 1382, 1377, 1371, 1376, 1369, 1372, 1377, 1380, 1383, 1383, - 1381, 1378, 1380, 1380, 1375, 1381, 1381, 1379, 1384, 1385, - 1382, 1386, 1387, 1388, 1389, 1390, 1391, 1387, 1392, 1393, - 1386, 1395, 1391, 1392, 1394, 1396, 1403, 1384, 1385, 1397, - 1394, 1396, 1388, 1390, 1389, 1397, 1398, 1399, 1400, 1401, - 1395, 1405, 1405, 52, 1404, 1393, 1402, 1403, 1406, 1407, - 1411, 1406, 1408, 1408, 1411, 1398, 1399, 1400, 1401, 1404, - 1402, 1407, 1409, 1409, 1410, 1412, 1413, 1414, 1415, 1410, + 1358, 1364, 1366, 1367, 1367, 1365, 1361, 1372, 1366, 1368, + 1368, 1370, 1370, 1362, 1371, 1373, 1372, 1374, 1371, 1377, + 1375, 1376, 1378, 1378, 1379, 1381, 1377, 1380, 1382, 1374, + 1381, 1383, 1384, 1373, 1375, 1380, 1376, 1384, 1384, 1386, + 1385, 1388, 1382, 1389, 1379, 1385, 1385, 1387, 1387, 1390, + 1383, 1391, 1392, 1393, 1394, 1395, 1391, 1397, 1390, 1386, + 1388, 1395, 1389, 1396, 1398, 1399, 1402, 1403, 1396, 1400, + 1398, 1392, 1394, 1393, 1401, 1400, 1404, 1405, 1406, 1407, + 1401, 1416, 1408, 1397, 1399, 1402, 1403, 1409, 1409, 1411, + 1410, 17, 1406, 1410, 1416, 1404, 1405, 1408, 1412, 1412, - 1415, 1417, 1418, 1419, 1415, 1413, 1420, 1418, 1412, 1421, - 1414, 1422, 1422, 1425, 1426, 1423, 1424, 1415, 1419, 1417, - 1423, 1430, 1424, 1432, 1427, 1421, 1420, 1426, 1425, 1427, - 1428, 1429, 1431, 1433, 1428, 1429, 1434, 1434, 1436, 1433, - 1438, 1430, 1439, 1432, 1440, 1440, 1441, 1439, 1442, 1448, - 1431, 1449, 1441, 1444, 1444, 1446, 1436, 1452, 1446, 1447, - 1447, 1438, 1453, 1451, 1455, 1448, 1451, 1449, 1442, 1454, - 1454, 1453, 1456, 1457, 1459, 1458, 1461, 1452, 1462, 1455, - 1458, 1460, 1460, 1463, 1464, 1461, 1465, 1467, 1459, 1466, - 1466, 1473, 1457, 1456, 1468, 1469, 1462, 1475, 1463, 1470, + 1407, 1411, 1413, 1413, 1414, 1417, 1415, 1418, 1421, 1414, + 1415, 1419, 1423, 1419, 1417, 1424, 1422, 1419, 1425, 1427, + 1418, 1422, 1426, 1426, 1427, 1428, 1421, 1423, 1429, 1430, + 1419, 1428, 1431, 1434, 1425, 1424, 1432, 1431, 1435, 1436, + 1432, 1433, 1430, 1429, 1437, 1433, 1438, 1438, 1440, 1442, + 1437, 1446, 1443, 1434, 1444, 1444, 1435, 1443, 1445, 1436, + 1448, 1448, 1450, 1452, 1445, 1450, 1440, 1451, 1451, 1453, + 1442, 1446, 1455, 1456, 1457, 1455, 1458, 1458, 1460, 1452, + 1459, 1461, 1462, 1457, 1463, 1453, 1466, 1462, 1464, 1464, + 1467, 1468, 1465, 1456, 1469, 1459, 1470, 1470, 1463, 1460, - 1469, 1467, 1471, 1471, 1472, 1478, 1465, 1476, 1472, 1464, - 1482, 1473, 1468, 1477, 1470, 1474, 1474, 1477, 1476, 1475, - 1479, 1481, 1481, 1483, 1478, 1479, 1482, 1485, 1484, 1486, - 1487, 1488, 1488, 1489, 1490, 1493, 1491, 1495, 1489, 1492, - 1492, 1483, 1484, 1486, 1493, 1494, 1485, 1485, 1497, 1496, - 1494, 1496, 1498, 1497, 1490, 1487, 1491, 1495, 1498, 1499, - 1500, 1502, 1503, 1503, 1504, 1505, 1500, 1507, 1508, 1509, - 1509, 1505, 1507, 1510, 1510, 1502, 1511, 1512, 1513, 1499, - 1516, 1514, 1517, 1504, 1514, 1515, 1515, 1518, 1526, 47, - 1511, 1520, 1508, 1513, 1517, 1512, 1519, 1520, 1516, 1519, + 1461, 1465, 1472, 1471, 1466, 1467, 1473, 1474, 1475, 1475, + 1477, 1473, 1478, 1478, 1469, 1476, 1468, 1471, 1479, 1476, + 1472, 1480, 1474, 1481, 1482, 1486, 1483, 1481, 1485, 1485, + 1477, 1483, 1480, 1487, 1488, 1489, 1490, 1491, 1492, 1492, + 1479, 1486, 1493, 1482, 1494, 1495, 1499, 1493, 1488, 1497, + 1490, 1487, 1496, 1496, 1489, 1489, 1498, 1500, 1497, 1500, + 1503, 1498, 1491, 1501, 1494, 1495, 1499, 1502, 1501, 1504, + 1506, 1507, 1507, 1502, 1508, 1504, 1509, 1512, 1511, 1516, + 1503, 1515, 1509, 1511, 1506, 1513, 1513, 1514, 1514, 1517, + 1520, 1518, 1530, 1508, 1518, 1515, 1522, 1516, 1519, 1519, - 1521, 1522, 1519, 1524, 1522, 1521, 1525, 1518, 1528, 1528, - 1529, 1525, 1524, 1526, 1519, 1527, 1529, 1530, 1527, 1531, - 1522, 1532, 1532, 1530, 1531, 1533, 1533, 1534, 1536, 1535, - 1537, 1538, 1539, 1534, 1535, 1540, 1541, 1542, 1540, 1543, - 1544, 1536, 1541, 1542, 1543, 1545, 1544, 1549, 1537, 1546, - 1538, 1550, 1539, 1548, 1546, 1547, 1547, 1551, 1548, 1552, - 1553, 1554, 1555, 1556, 1559, 1549, 1557, 1558, 1545, 1558, - 1557, 1550, 1561, 1552, 1553, 1554, 1563, 1551, 1562, 1564, - 1555, 1565, 1566, 1559, 1561, 1564, 1567, 1569, 1556, 1563, - 1562, 1568, 1571, 1571, 1572, 1573, 1576, 1574, 1566, 1577, + 1521, 1512, 1525, 1523, 1517, 1524, 1523, 1525, 1520, 1523, + 1526, 1524, 1521, 1526, 1528, 1529, 1522, 1530, 1540, 1531, + 1529, 1523, 1531, 1528, 1532, 1532, 1533, 1534, 1538, 1526, + 1535, 1540, 1533, 1534, 1538, 1535, 1536, 1536, 1537, 1537, + 1539, 1541, 1542, 1543, 1544, 1539, 1545, 1544, 1546, 1549, + 1547, 1548, 1545, 1550, 1546, 1547, 1553, 1548, 1550, 1541, + 1554, 1542, 1552, 1543, 1551, 1551, 1555, 1552, 1556, 1557, + 1558, 1559, 1549, 1560, 1553, 1561, 1562, 1563, 1562, 1561, + 1554, 1565, 1556, 1557, 1558, 1566, 1555, 1567, 1568, 1559, + 1569, 1570, 1571, 1565, 1568, 1572, 1563, 1566, 1560, 1573, - 1573, 1565, 1575, 1575, 1578, 1568, 1567, 1579, 1569, 1574, - 1580, 1576, 1581, 1577, 1572, 1582, 1584, 1583, 1586, 1580, - 1588, 1589, 1582, 1593, 1589, 1579, 1583, 1581, 1578, 1583, - 1590, 1590, 1584, 1586, 1591, 1591, 1592, 1594, 1586, 1596, - 1594, 1593, 1595, 1595, 1597, 1588, 1598, 1600, 1592, 1599, - 1602, 1598, 1596, 1601, 1599, 1603, 1604, 1608, 1605, 1602, - 1607, 1607, 1609, 1597, 1606, 1604, 1600, 1605, 1604, 1601, - 1606, 1610, 1611, 1613, 1603, 1609, 1612, 1608, 1616, 1617, - 1618, 1618, 1619, 1621, 1620, 1613, 1611, 1623, 1621, 1610, - 1622, 1622, 1612, 1620, 1625, 1624, 1623, 1617, 1619, 1623, + 1567, 1575, 1575, 1576, 1578, 1581, 1577, 1570, 1582, 1572, + 1569, 1577, 1571, 1579, 1579, 1580, 1578, 1583, 1584, 1581, + 1573, 1585, 1586, 1576, 1588, 1587, 1590, 1584, 1592, 1586, + 1580, 1597, 1582, 1596, 1587, 1583, 1585, 1587, 1601, 1593, + 1588, 1590, 1593, 1594, 1594, 1596, 1590, 1595, 1595, 1597, + 1600, 1598, 1604, 1592, 1598, 1599, 1599, 1601, 1605, 1602, + 1603, 1606, 1607, 1600, 1602, 1603, 1608, 1609, 1611, 1611, + 1606, 1604, 1612, 1610, 1605, 1608, 1609, 1613, 1608, 1610, + 1614, 1607, 1615, 1616, 1620, 1617, 1621, 1622, 1622, 1623, + 1613, 1624, 1612, 1626, 1626, 1629, 1615, 1617, 1614, 1616, - 1624, 1626, 1627, 1616, 1628, 1622, 1632, 1630, 1631, 1628, - 1628, 1633, 1625, 1634, 1635, 18, 1633, 1636, 1636, 1634, - 1627, 1630, 1626, 1631, 1637, 1642, 1638, 1639, 1632, 1640, - 1637, 1638, 1635, 1639, 1643, 1640, 1644, 1645, 1646, 1651, - 1647, 1646, 1644, 1649, 1652, 1642, 1647, 1646, 1643, 1653, - 1645, 1649, 1654, 1655, 1656, 1657, 1658, 1653, 1651, 1659, - 1659, 1654, 1660, 1652, 1662, 1661, 1655, 1656, 1660, 1657, - 1658, 1661, 1663, 1663, 1664, 1665, 1666, 1662, 1667, 1667, - 1669, 1659, 1670, 1668, 1671, 1672, 1669, 1674, 1674, 1675, - 1680, 1681, 17, 1665, 1664, 1666, 1668, 1676, 1684, 1680, + 1624, 1625, 1627, 1630, 1621, 1623, 1625, 1628, 1626, 1620, + 1631, 1627, 1628, 1629, 1627, 1632, 1634, 1635, 1636, 1638, + 1632, 1632, 1637, 1639, 1630, 1638, 1642, 1637, 1631, 1641, + 1634, 1642, 1635, 1640, 1640, 1641, 1643, 1644, 1646, 1647, + 1636, 1639, 1643, 1644, 1648, 1650, 1649, 1655, 1650, 1651, + 1648, 1656, 1653, 1647, 1650, 1651, 1657, 0, 1646, 1649, + 1653, 1659, 1658, 1660, 1657, 1661, 1655, 1662, 1663, 1663, + 1656, 1658, 1664, 1666, 1659, 1668, 1660, 1665, 1664, 1661, + 1669, 1662, 1670, 1665, 1667, 1667, 1666, 1671, 1671, 1672, + 1663, 1673, 1674, 1675, 1676, 1668, 1679, 1673, 1669, 1678, - 1671, 1676, 1677, 1672, 1670, 1678, 1679, 1677, 1683, 1675, - 1678, 1679, 1686, 1684, 1681, 1685, 1685, 1687, 1688, 1690, - 1683, 1689, 1689, 1691, 1692, 1695, 1693, 1696, 1697, 1687, - 1691, 1686, 1699, 1690, 1697, 1700, 1692, 1688, 1693, 1698, - 1712, 1700, 1701, 1701, 1695, 1702, 1706, 1696, 1702, 1705, - 1699, 1698, 1703, 1703, 1705, 1706, 1707, 1708, 1708, 1709, - 1712, 1710, 1707, 1710, 1711, 1713, 1714, 1711, 1715, 1716, - 1717, 1709, 1718, 1719, 1716, 1717, 1720, 1721, 1723, 1722, - 0, 1718, 1721, 1729, 1714, 1719, 1715, 1713, 1722, 1725, - 1724, 1720, 1726, 1728, 1725, 1724, 1727, 1727, 1723, 1728, + 1678, 1670, 1672, 1680, 1685, 1681, 1682, 1680, 1683, 1675, + 1681, 1682, 1676, 1683, 1674, 1684, 1679, 1687, 1688, 1689, + 1689, 1690, 1691, 1692, 1684, 1693, 1693, 1685, 1695, 1687, + 1694, 1696, 1699, 1688, 1691, 1695, 1697, 1700, 1702, 1701, + 1690, 1703, 1692, 1696, 1694, 1701, 1704, 1710, 1697, 0, + 1702, 1699, 1704, 1705, 1705, 1706, 1710, 1700, 1706, 1703, + 1707, 1707, 1709, 1711, 1712, 1712, 1713, 1709, 1714, 1711, + 1714, 1715, 1716, 1717, 1715, 1718, 1719, 1720, 1713, 1721, + 1722, 1724, 1720, 1725, 1721, 1723, 1727, 1730, 1725, 1722, + 1726, 0, 1716, 1718, 1719, 1717, 1724, 1723, 1728, 1726, - 1731, 1722, 1724, 1732, 1729, 1733, 1734, 1726, 1735, 1736, - 1735, 1737, 1737, 1738, 1738, 1739, 1739, 1740, 1743, 1731, - 1744, 1733, 1732, 1736, 1753, 1736, 1734, 1741, 1741, 1742, - 1742, 1745, 1745, 1751, 1746, 1756, 1747, 1740, 1746, 1743, - 1748, 1744, 1747, 1748, 1750, 1754, 1752, 1759, 1754, 1753, - 1750, 1751, 1752, 1755, 1755, 1756, 1757, 1758, 1758, 1760, - 1761, 1757, 1759, 1762, 1762, 1761, 1763, 1764, 1767, 1765, - 1766, 1763, 1768, 1764, 1770, 1773, 1776, 1775, 1769, 1775, - 1760, 1765, 1765, 1765, 1769, 1774, 1767, 1776, 1765, 1773, - 1766, 1772, 1768, 1777, 1770, 1778, 1772, 1772, 1779, 1780, + 1729, 1733, 1730, 1728, 1735, 1729, 1727, 1731, 1731, 1732, + 1728, 1736, 1726, 1737, 1738, 1732, 1739, 1740, 1739, 1741, + 1741, 1744, 1733, 1735, 1742, 1742, 1743, 1743, 1747, 1737, + 1736, 1740, 1748, 1740, 1738, 1745, 1745, 1746, 1746, 1749, + 1749, 1744, 1750, 1755, 1751, 1752, 1750, 1757, 1752, 1747, + 1751, 1754, 1756, 1748, 1759, 1759, 1758, 1754, 1756, 1758, + 1760, 1755, 1761, 1762, 1762, 1764, 1763, 1761, 1765, 1766, + 1766, 1767, 1757, 1765, 1771, 1769, 1767, 1768, 1770, 1772, + 1760, 1763, 1774, 1768, 1773, 1778, 1764, 1769, 1769, 1769, + 1773, 1776, 1771, 1777, 1769, 1780, 1776, 1776, 1770, 1772, - 1774, 1778, 1781, 1782, 1782, 1783, 1785, 1779, 1777, 1784, - 1784, 1786, 1787, 1787, 1788, 1788, 1789, 1792, 1792, 1780, - 1793, 1794, 1797, 1781, 1801, 1796, 1785, 1799, 1799, 1798, - 1794, 1783, 1800, 1786, 1796, 1798, 1789, 1802, 1803, 1801, - 1804, 1805, 1805, 1797, 1802, 1793, 1806, 1803, 1807, 1809, - 1810, 1811, 1812, 1800, 1809, 1813, 1810, 1814, 1819, 1812, - 1816, 1813, 1818, 1814, 1807, 1816, 1804, 1815, 1815, 1817, - 1822, 1811, 1806, 1820, 1823, 1827, 1821, 1819, 1817, 1821, - 1824, 1824, 1818, 1825, 1826, 1820, 1828, 1829, 1822, 1825, - 1826, 1829, 1831, 1832, 1833, 1827, 1834, 1834, 1835, 1833, + 1778, 1779, 1774, 1779, 1781, 1782, 1780, 1777, 1783, 1784, + 1785, 1782, 1786, 1786, 1787, 1788, 1788, 1783, 1789, 1781, + 1790, 1791, 1791, 1792, 1792, 1793, 1796, 1796, 1797, 1784, + 1798, 1785, 1800, 1801, 1803, 1803, 1804, 1802, 1789, 1798, + 1787, 1800, 1790, 1802, 1805, 1793, 1808, 1807, 1806, 1809, + 1809, 1810, 1811, 1797, 1801, 1806, 1807, 1804, 1813, 1805, + 1814, 1815, 1816, 1813, 1817, 1818, 1814, 1821, 1811, 1816, + 1817, 1818, 1808, 1819, 1819, 1820, 1821, 1810, 1822, 1824, + 1820, 1815, 1823, 1825, 1826, 1827, 1825, 1828, 1828, 1829, + 1830, 1824, 1831, 1832, 1835, 1829, 1830, 1839, 1822, 1833, - 1823, 1828, 1838, 1836, 1839, 1840, 1846, 1829, 1839, 1848, - 1841, 1840, 1831, 1842, 1842, 1832, 1843, 1835, 1836, 1841, - 1843, 1838, 1844, 1845, 1845, 1847, 1849, 1846, 1848, 1850, - 1851, 1849, 1853, 1844, 1852, 1861, 1854, 1859, 1844, 1847, - 1852, 1854, 1855, 1855, 1856, 1856, 1859, 1853, 1857, 1850, - 1851, 1860, 1857, 1862, 1862, 1861, 1864, 1864, 1865, 1866, - 1868, 1869, 1860, 1865, 1865, 1866, 1868, 1860, 1870, 1871, - 1872, 1874, 1876, 1870, 1875, 1877, 1872, 1879, 1875, 1878, - 1880, 1871, 1882, 1874, 1876, 1878, 1880, 1869, 1881, 1884, - 1885, 1886, 1888, 1881, 1882, 1888, 1886, 1889, 1889, 1879, + 1836, 1823, 1826, 1833, 1837, 1838, 1838, 1842, 1832, 1837, + 1840, 1827, 1831, 1843, 1835, 1844, 1839, 1843, 1845, 1833, + 1848, 1844, 1836, 1846, 1846, 1840, 1842, 1845, 1847, 1849, + 1849, 1848, 1847, 1850, 1851, 1853, 1848, 1852, 1854, 1855, + 1853, 1856, 1857, 1863, 1858, 1859, 1859, 1856, 1851, 1858, + 1860, 1860, 1863, 1865, 1850, 1864, 1852, 1857, 1854, 1855, + 1861, 1866, 1866, 1873, 1861, 1881, 1864, 1868, 1868, 1869, + 1870, 1864, 1872, 1865, 1869, 1869, 1870, 1874, 1872, 1875, + 1876, 1878, 1874, 1879, 1880, 1883, 1876, 1879, 1882, 1873, + 1881, 1875, 1884, 1878, 1882, 1885, 1880, 1886, 1884, 1888, - 1877, 1884, 1890, 1890, 1891, 1891, 1892, 1893, 1894, 1885, - 1895, 1896, 1897, 1893, 1894, 1895, 1901, 1896, 1899, 1901, - 1902, 1897, 1905, 1899, 1903, 1903, 1892, 1906, 1907, 1908, - 1908, 1909, 1902, 1907, 1905, 1912, 1910, 1911, 1912, 1906, - 1909, 1910, 1911, 1913, 1913, 1914, 1915, 1918, 1916, 1917, - 1920, 1918, 1919, 1921, 1922, 1915, 1920, 1919, 1923, 1924, - 1926, 1926, 1927, 1922, 1929, 1914, 1916, 1933, 1917, 1928, - 1931, 1921, 1926, 1924, 1930, 1930, 1923, 1932, 1928, 1931, - 1927, 1934, 1935, 1941, 1929, 1942, 1934, 1944, 1933, 1932, - 1938, 1938, 1945, 1940, 1946, 1935, 1940, 1947, 1956, 1941, + 1885, 1889, 1892, 1890, 1896, 1892, 1922, 1883, 1890, 1886, + 1922, 1888, 1893, 1893, 1894, 1894, 1895, 1895, 1899, 1897, + 1889, 1898, 1900, 1899, 1896, 1897, 1901, 1898, 1900, 1903, + 1905, 1906, 1909, 1905, 1903, 1901, 1907, 1907, 1910, 1913, + 1911, 1912, 1912, 1906, 1909, 1911, 1914, 1915, 1913, 1918, + 1910, 1914, 1915, 1916, 1917, 1917, 1916, 1919, 1920, 1921, + 1923, 1924, 1925, 1926, 1927, 1923, 1919, 1924, 1931, 1918, + 1928, 1933, 1926, 1930, 1930, 1936, 1920, 1937, 1921, 1932, + 1925, 0, 1927, 1935, 1928, 1930, 1931, 1936, 1932, 1934, + 1934, 1933, 1935, 1939, 1938, 1942, 1942, 1944, 1937, 1938, - 1946, 1942, 1944, 1948, 1948, 1949, 1945, 1949, 1950, 1950, - 1951, 1953, 1953, 1957, 1947, 1954, 1954, 1958, 1951, 1957, - 1959, 1956, 1960, 1958, 1963, 1961, 1964, 1959, 1962, 1962, - 1965, 1966, 1969, 1963, 1967, 1970, 1968, 1973, 1974, 1975, - 1971, 0, 1965, 1966, 1960, 1961, 1971, 1964, 1968, 1967, - 1970, 1975, 1976, 1976, 1977, 1978, 1981, 1973, 1969, 1971, - 1979, 1974, 1980, 1979, 1983, 1985, 1984, 1980, 1984, 1983, - 1987, 1989, 1977, 1986, 1991, 1978, 1981, 1987, 1986, 1992, - 1989, 1993, 1994, 1985, 1994, 1995, 1998, 1997, 1992, 1997, - 1999, 1999, 1991, 1993, 2000, 2002, 2001, 2002, 2003, 2005, + 1944, 1945, 1946, 1950, 1948, 1951, 1939, 1949, 1960, 1950, + 1952, 1952, 1953, 0, 1953, 1954, 1954, 1945, 1946, 1948, + 1955, 1949, 1951, 1957, 1957, 1958, 1958, 1961, 1955, 1962, + 1963, 1960, 1964, 1961, 1967, 1962, 1965, 1963, 1966, 1966, + 1968, 1969, 1973, 1967, 1971, 1970, 1972, 1974, 1978, 1977, + 0, 1979, 1981, 1969, 1964, 1982, 1965, 1970, 1972, 1971, + 1975, 1968, 1974, 1979, 1980, 1980, 1975, 1984, 1973, 1977, + 1981, 1978, 1984, 1983, 1985, 1982, 1983, 1987, 1988, 1975, + 1988, 1989, 1987, 1990, 1991, 1995, 1993, 1996, 1990, 1997, + 1998, 1991, 1998, 1999, 1985, 1993, 1996, 2002, 2001, 1989, - 1998, 2001, 2004, 2003, 1995, 2006, 2007, 2004, 2008, 2009, - 2010, 2012, 2007, 2008, 2013, 2014, 2014, 2005, 2010, 2016, - 2000, 2017, 2009, 2015, 2015, 2006, 2018, 2020, 2013, 2020, - 2012, 2019, 2018, 2021, 2016, 2024, 2019, 2022, 2023, 2023, - 2029, 2017, 2025, 2025, 2033, 2022, 2027, 2024, 2026, 2026, - 2031, 2021, 2028, 2022, 2032, 2027, 2032, 2028, 2029, 2031, - 2035, 2034, 2031, 2036, 2038, 2033, 2034, 2034, 2039, 2035, - 2042, 2043, 2040, 2039, 2046, 2036, 2038, 2040, 2044, 2045, - 2045, 2047, 2048, 2042, 2052, 2053, 2049, 2044, 2050, 2054, - 2055, 2043, 2046, 2057, 2063, 2055, 2052, 2053, 2048, 2047, + 2001, 1997, 2004, 1995, 2003, 2003, 2009, 2006, 2005, 2006, + 2007, 2002, 1999, 2005, 2008, 2007, 2010, 2011, 2013, 2008, + 2012, 2014, 2016, 2011, 2009, 2012, 2017, 2020, 2004, 2014, + 2021, 2013, 2018, 2018, 2019, 2019, 2010, 2022, 2025, 2023, + 2017, 2016, 2020, 2022, 2023, 2024, 2026, 2024, 2027, 2027, + 2021, 2028, 2029, 2029, 2026, 2031, 2025, 2030, 2030, 2033, + 2032, 2035, 2026, 2028, 2031, 2032, 2036, 2037, 2036, 2038, + 2035, 2039, 2040, 2035, 2038, 2038, 2043, 2033, 2042, 2046, + 2039, 2043, 2044, 2047, 2040, 2048, 2050, 2044, 2037, 2051, + 2042, 2053, 2046, 2052, 2048, 2049, 2049, 2054, 2056, 2057, - 2049, 2056, 2057, 2050, 2060, 2062, 2056, 2064, 2065, 2054, - 2060, 2062, 2066, 2068, 2068, 2067, 2069, 2063, 2070, 2070, - 2071, 2074, 2064, 2060, 2067, 2069, 2065, 2072, 2073, 2075, - 2076, 2072, 2077, 2073, 2074, 2076, 2076, 2066, 2077, 2071, - 2078, 2079, 2080, 2081, 2079, 2086, 2078, 2084, 2084, 2089, - 2080, 2075, 2085, 2085, 2086, 2087, 2087, 2088, 2088, 2090, - 2091, 2089, 2096, 2081, 2092, 2099, 2091, 2085, 2096, 2092, - 2093, 2093, 2094, 2094, 2095, 2101, 2098, 2090, 2085, 2095, - 2098, 2103, 2100, 2104, 2105, 2099, 2100, 2106, 2104, 2107, - 2108, 2110, 2111, 2109, 2107, 2101, 2112, 2111, 2113, 2113, + 2058, 2059, 2067, 2047, 2050, 2053, 2059, 2051, 2060, 2052, + 2056, 2057, 2054, 2060, 2061, 2064, 2066, 2068, 2069, 2070, + 2058, 2064, 2066, 2061, 2071, 2067, 2072, 2072, 2073, 2074, + 2074, 2075, 2068, 2071, 2064, 2076, 2069, 2073, 2077, 2076, + 2078, 2079, 2080, 2077, 2070, 2081, 2082, 2080, 2080, 2085, + 2075, 2081, 2082, 2078, 2083, 2094, 2084, 2083, 2088, 2088, + 2089, 2089, 2090, 2079, 2084, 2091, 2091, 2092, 2092, 2085, + 2093, 2090, 2095, 2094, 2096, 2089, 2097, 2097, 2095, 2096, + 2098, 2098, 2093, 2099, 2100, 2102, 2089, 2103, 2099, 2102, + 2100, 2104, 2105, 2107, 2108, 2104, 2109, 2111, 2110, 2108, - 2114, 2115, 2106, 2117, 2114, 2116, 2103, 2105, 2108, 2109, - 2116, 2110, 2118, 2119, 2120, 2121, 2115, 2123, 2112, 2122, - 2121, 2124, 2124, 2126, 2127, 2119, 2128, 2129, 2130, 2117, - 2118, 2126, 2122, 2120, 2131, 2123, 2132, 2133, 2134, 2136, - 2140, 0, 2138, 2127, 2139, 2128, 2140, 2142, 2142, 2133, - 2129, 2143, 2130, 2131, 2136, 2138, 2143, 2132, 2139, 2134, - 2141, 2144, 2141, 2145, 2144, 2146, 2152, 2147, 2148, 2148, - 2149, 2149, 2150, 2153, 2150, 2155, 2145, 2151, 2151, 2146, - 2147, 2152, 2154, 2154, 2155, 2161, 2153, 2155, 2156, 2156, - 2157, 2157, 2158, 2160, 2162, 2163, 2166, 2158, 2160, 2164, + 2113, 2115, 2111, 2112, 2114, 2116, 2115, 2103, 2117, 2117, + 2118, 2119, 2105, 2110, 2118, 2120, 2113, 2121, 2107, 2109, + 2120, 2112, 2122, 2123, 2114, 2124, 2119, 2116, 2125, 2126, + 2127, 2128, 2128, 2125, 2131, 2123, 2132, 2130, 2133, 2134, + 2122, 2135, 2126, 2121, 2124, 2130, 2136, 2137, 2127, 2138, + 2140, 2142, 2143, 2131, 0, 2132, 2144, 2146, 2146, 2137, + 2135, 2133, 2144, 2134, 2142, 2140, 2143, 2136, 2147, 2145, + 2138, 2145, 2148, 2147, 2149, 2148, 2150, 2156, 2151, 2152, + 2152, 2153, 2153, 2154, 2157, 2154, 2159, 2149, 2155, 2155, + 2150, 2151, 2156, 2158, 2158, 2159, 2165, 2157, 2159, 2160, - 2164, 2165, 2165, 2167, 2167, 2161, 2168, 2163, 2169, 2169, - 2170, 2171, 2172, 2172, 2162, 2166, 2171, 2173, 2173, 2174, - 2175, 2176, 2177, 2179, 2168, 2170, 2180, 2180, 2179, 2175, - 2181, 2182, 2182, 2174, 2183, 2176, 2184, 2185, 2186, 2186, - 2185, 2177, 2184, 2187, 2187, 2188, 2189, 2190, 2193, 2181, - 2191, 2191, 2183, 2194, 2186, 2195, 2196, 2197, 2197, 2198, - 2196, 2189, 2199, 2204, 2188, 2200, 2190, 2199, 2193, 2201, - 2195, 2203, 2203, 2206, 2205, 2207, 2194, 2208, 2198, 2209, - 2200, 2205, 2211, 2204, 2201, 2210, 2210, 2206, 2212, 2213, - 2212, 2211, 2213, 2207, 2215, 2208, 2216, 2217, 2218, 2219, + 2160, 2161, 2161, 2162, 2164, 2166, 2167, 2170, 2162, 2164, + 2168, 2168, 2169, 2169, 2171, 2171, 2165, 2172, 2167, 2173, + 2173, 2174, 2175, 2176, 2176, 2166, 2170, 2175, 2177, 2177, + 2178, 2179, 2180, 2181, 2183, 2172, 2174, 2184, 2184, 2183, + 2179, 2185, 2186, 2186, 2178, 2187, 2180, 2188, 2189, 2190, + 2190, 2189, 2181, 2188, 2191, 2191, 2192, 2193, 2194, 2197, + 2185, 2195, 2195, 2187, 2198, 2190, 2199, 2200, 2201, 2201, + 2202, 2200, 2193, 2203, 2208, 2192, 2204, 2194, 2203, 2197, + 2205, 2199, 2207, 2207, 2210, 2209, 2211, 2198, 2212, 2202, + 2213, 2204, 2209, 2215, 2208, 2205, 2214, 2214, 2210, 2216, - 2220, 2216, 2217, 2221, 2222, 2209, 2215, 2213, 2221, 2213, - 2224, 2225, 2219, 2226, 2227, 2224, 2225, 2228, 2229, 2232, - 2227, 2220, 2230, 2218, 2229, 2235, 2231, 2230, 2226, 2233, - 2222, 2231, 2234, 2239, 2235, 2234, 2236, 2237, 2228, 2238, - 2244, 0, 2233, 2240, 2232, 2236, 2237, 2239, 2238, 2240, - 2241, 2242, 2246, 2247, 2247, 2242, 2241, 2248, 2249, 2249, - 2244, 2246, 2251, 2248, 2250, 2253, 2257, 2249, 2256, 2250, - 2254, 2255, 2255, 2259, 2260, 2257, 2261, 2262, 2266, 2268, - 2268, 2253, 2251, 2256, 2251, 2259, 2254, 2267, 2265, 2262, - 2260, 2261, 2264, 2265, 0, 2264, 2269, 2269, 2266, 2267, + 2217, 2216, 2215, 2217, 2211, 2219, 2212, 2220, 2221, 2222, + 2223, 2224, 2220, 2221, 2225, 2226, 2213, 2219, 2217, 2225, + 2217, 2228, 2229, 2223, 2230, 2231, 2228, 2229, 2232, 2233, + 2236, 2231, 2224, 2234, 2222, 2233, 2239, 2235, 2234, 2230, + 2237, 2226, 2235, 2238, 2243, 2239, 2238, 2240, 2241, 2232, + 2242, 2248, 0, 2237, 2244, 2236, 2240, 2241, 2243, 2242, + 2244, 2245, 2246, 2250, 2251, 2251, 2246, 2245, 2252, 2253, + 2253, 2248, 2250, 2255, 2252, 2254, 2257, 2261, 2253, 2260, + 2254, 2258, 2259, 2259, 2263, 2264, 2261, 2265, 2266, 2270, + 2272, 2272, 2257, 2255, 2260, 2255, 2263, 2258, 2271, 2269, - 2271, 2271, 2272, 2273, 2274, 2272, 2275, 2276, 2273, 2278, - 2274, 2281, 2275, 2277, 2277, 2280, 2276, 2279, 2279, 2282, - 2283, 2283, 2284, 2278, 2286, 2281, 2285, 2280, 2284, 2286, - 2288, 2294, 2289, 2292, 2288, 2289, 2290, 2290, 2282, 2291, - 2285, 2293, 2292, 2295, 2291, 2296, 2296, 2295, 2297, 2299, - 2293, 2294, 2300, 2301, 2299, 2302, 2303, 2304, 2305, 2306, - 2303, 2297, 2307, 2305, 2308, 2306, 2309, 2310, 2307, 2302, - 2311, 2312, 2300, 2301, 2315, 2311, 2314, 2304, 2316, 2324, - 2324, 2317, 2308, 2316, 2323, 2309, 2310, 2317, 2314, 2318, - 2315, 2319, 2312, 2319, 2321, 2326, 2325, 2318, 2323, 2325, + 2266, 2264, 2265, 2268, 2269, 0, 2268, 2273, 2273, 2270, + 2271, 2275, 2275, 2276, 2277, 2278, 2276, 2279, 2280, 2277, + 2282, 2278, 2285, 2279, 2281, 2281, 2284, 2280, 2283, 2283, + 2286, 2287, 2287, 2288, 2282, 2290, 2285, 2289, 2284, 2288, + 2290, 2292, 2298, 2293, 2296, 2292, 2293, 2294, 2294, 2286, + 2295, 2289, 2297, 2296, 2299, 2295, 2300, 2300, 2299, 2301, + 2303, 2297, 2298, 2304, 2305, 2303, 2306, 2307, 2308, 2309, + 2310, 2307, 2301, 2311, 2309, 2312, 2310, 2313, 2314, 2311, + 2306, 2315, 2316, 2304, 2305, 2319, 2315, 2318, 2308, 2320, + 2328, 2328, 2321, 2312, 2320, 2327, 2313, 2314, 2321, 2318, - 2327, 2327, 2330, 2321, 2331, 2332, 2330, 2333, 2333, 2334, - 2331, 2337, 2337, 2339, 2341, 2345, 2342, 2332, 2334, 2346, - 2345, 2326, 2347, 2355, 2348, 2349, 2349, 2347, 2341, 2348, - 2353, 2339, 2342, 2351, 2351, 2356, 2353, 2354, 2354, 2355, - 2359, 2357, 2360, 2361, 2361, 2346, 2357, 2363, 2365, 2364, - 2366, 2368, 2368, 2370, 2360, 2364, 2363, 2356, 2369, 2359, - 2371, 2369, 2373, 2373, 2375, 2366, 2365, 2374, 2374, 2375, - 2376, 2377, 2370, 2379, 2378, 2379, 2380, 2381, 2371, 2378, - 2377, 2382, 2383, 2384, 2385, 2386, 2386, 2383, 2376, 2385, - 2380, 2381, 2390, 2382, 2387, 2387, 2388, 2388, 2389, 2389, + 2322, 2319, 2323, 2316, 2323, 2325, 2330, 2329, 2322, 2327, + 2329, 2331, 2331, 2334, 2325, 2335, 2336, 2334, 2337, 2337, + 2338, 2335, 2341, 2341, 2343, 2345, 2349, 2346, 2336, 2338, + 2350, 2349, 2330, 2351, 2359, 2352, 2353, 2353, 2351, 2345, + 2352, 2357, 2343, 2346, 2355, 2355, 2360, 2357, 2358, 2358, + 2359, 2363, 2361, 2364, 2365, 2365, 2350, 2361, 2367, 2369, + 2368, 2370, 2372, 2372, 2374, 2364, 2368, 2367, 2360, 2373, + 2363, 2375, 2373, 2377, 2377, 2379, 2370, 2369, 2378, 2378, + 2379, 2380, 2381, 2374, 2383, 2382, 2383, 2384, 2385, 2375, + 2382, 2381, 2386, 2387, 2388, 2389, 2390, 2390, 2387, 2380, - 2391, 2392, 2395, 2384, 2390, 2396, 2392, 2393, 2393, 2394, - 2394, 2397, 2398, 2400, 2395, 2399, 2399, 2396, 2391, 2401, - 2401, 2402, 2402, 2403, 2404, 2406, 2405, 2407, 2398, 2409, - 2408, 2397, 2400, 2405, 2403, 2408, 2404, 2406, 2410, 2411, - 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2407, 2426, 2409, - 2412, 2421, 2418, 2419, 2419, 2422, 2420, 2415, 2410, 2424, - 2417, 2425, 2428, 2414, 2418, 2420, 2421, 0, 2413, 2416, - 2422, 2426, 2427, 2429, 2430, 2427, 2428, 2424, 2429, 2430, - 2431, 2431, 2438, 2425, 2432, 2432, 2433, 2433, 2435, 2435, - 2437, 2437, 2439, 2440, 2441, 2443, 2444, 2445, 2446, 2447, + 2389, 2384, 2385, 2394, 2386, 2391, 2391, 2392, 2392, 2393, + 2393, 2395, 2396, 2399, 2388, 2394, 2400, 2396, 2397, 2397, + 2398, 2398, 2401, 2402, 2404, 2399, 2403, 2403, 2400, 2395, + 2405, 2405, 2406, 2406, 2407, 2408, 2410, 2409, 2411, 2402, + 2413, 2412, 2401, 2404, 2409, 2407, 2412, 2408, 2410, 2414, + 2415, 2415, 2416, 2417, 2418, 2419, 2420, 2421, 2411, 2430, + 2413, 2416, 2425, 2422, 2423, 2423, 2426, 2424, 2419, 2414, + 2428, 2421, 2429, 2432, 2418, 2422, 2424, 2425, 0, 2417, + 2420, 2426, 2430, 2431, 2433, 2434, 2431, 2432, 2428, 2433, + 2434, 2435, 2435, 2442, 2429, 2436, 2436, 2437, 2437, 2439, - 2438, 2448, 2449, 2439, 2449, 2450, 2451, 2457, 2447, 2441, - 2452, 2458, 2440, 2456, 2444, 2443, 2453, 2453, 2446, 2445, - 2458, 2448, 2455, 2455, 2451, 2450, 2461, 2456, 2452, 2457, - 2459, 2459, 2462, 2462, 2463, 2461, 2464, 2465, 2466, 2467, - 2468, 2470, 2473, 2469, 2465, 2471, 2471, 2472, 2472, 2474, - 2475, 2479, 2463, 2466, 2464, 2478, 2475, 2467, 2468, 2469, - 2470, 2478, 2473, 2476, 2476, 2477, 2477, 2474, 2480, 2479, - 2481, 2482, 2483, 2484, 2485, 2486, 2487, 2483, 2487, 2492, - 2486, 2488, 2488, 2480, 2489, 2482, 2489, 2490, 2490, 2481, - 2494, 2495, 2496, 2484, 2485, 2497, 2498, 2499, 2492, 2494, + 2439, 2441, 2441, 2443, 2444, 2445, 2447, 2448, 2449, 2450, + 2451, 2442, 2452, 2453, 2443, 2453, 2454, 2455, 2461, 2451, + 2445, 2456, 2462, 2444, 2460, 2448, 2447, 2457, 2457, 2450, + 2449, 2462, 2452, 2459, 2459, 2455, 2454, 2465, 2460, 2456, + 2461, 2463, 2463, 2466, 2466, 2467, 2465, 2468, 2469, 2470, + 2471, 2472, 2474, 2477, 2473, 2469, 2475, 2475, 2476, 2476, + 2478, 2479, 2483, 2467, 2470, 2468, 2482, 2479, 2471, 2472, + 2473, 2474, 2482, 2477, 2480, 2480, 2481, 2481, 2478, 2484, + 2483, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2487, 2491, + 2496, 2490, 2492, 2492, 2484, 2493, 2486, 2493, 2494, 2494, - 2500, 2498, 2503, 2504, 2496, 2506, 2504, 2505, 2505, 2507, - 2495, 2508, 2508, 2511, 2509, 2497, 2514, 2499, 2509, 2500, - 2506, 2512, 2503, 2513, 2513, 2512, 2516, 2507, 2511, 2514, - 2517, 2518, 2519, 2519, 2521, 2522, 2523, 2524, 2524, 2525, - 2523, 2516, 2526, 2526, 2522, 2528, 2521, 2527, 2529, 2530, - 2517, 2518, 2527, 2537, 2528, 2531, 2531, 2539, 2525, 2536, - 2536, 2530, 2538, 2538, 2529, 2540, 2544, 2541, 2542, 2551, - 2539, 2543, 2543, 2546, 2546, 2537, 2541, 2542, 2540, 2549, - 2550, 2544, 2552, 2551, 2549, 2550, 2553, 2552, 2554, 2555, - 2558, 2556, 2559, 2561, 2553, 2560, 2567, 2559, 2555, 2556, + 2485, 2498, 2499, 2500, 2488, 2489, 2501, 2502, 2503, 2496, + 2498, 2504, 2502, 2507, 2508, 2500, 2510, 2508, 2509, 2509, + 2511, 2499, 2512, 2512, 2515, 2513, 2501, 2518, 2503, 2513, + 2504, 2510, 2516, 2507, 2517, 2517, 2516, 2520, 2511, 2515, + 2518, 2521, 2522, 2523, 2523, 2525, 2526, 2527, 2528, 2528, + 2529, 2527, 2520, 2530, 2530, 2526, 2532, 2525, 2531, 2533, + 2534, 2521, 2522, 2531, 2541, 2532, 2535, 2535, 2543, 2529, + 2540, 2540, 2534, 2542, 2542, 2533, 2544, 2548, 2545, 2546, + 2555, 2543, 2547, 2547, 2550, 2550, 2541, 2545, 2546, 2544, + 2553, 2554, 2548, 2556, 2555, 2553, 2554, 2557, 2556, 2558, - 2560, 2562, 2562, 2563, 2563, 2558, 2565, 2554, 2561, 2564, - 2564, 2566, 2568, 2565, 2567, 2569, 2566, 2570, 2571, 2571, - 2572, 2569, 2570, 2573, 2574, 2574, 2575, 2575, 2573, 2578, - 2568, 2579, 2579, 2580, 2581, 2572, 2580, 2584, 2582, 2581, - 2581, 2583, 2578, 2582, 2585, 2586, 2583, 2587, 2588, 2586, - 2585, 2584, 2587, 2589, 2590, 2591, 2594, 2588, 2592, 2593, - 2595, 2594, 2590, 2597, 2592, 2593, 2598, 2601, 2589, 2605, - 2597, 2598, 2595, 2603, 2599, 2604, 2591, 2599, 2603, 2601, - 2604, 2606, 2607, 2608, 2609, 2609, 2610, 2605, 2613, 2618, - 2614, 2607, 2608, 2615, 2606, 2610, 2614, 2619, 2622, 2615, + 2559, 2562, 2560, 2563, 2565, 2557, 2564, 2571, 2563, 2559, + 2560, 2564, 2566, 2566, 2567, 2567, 2562, 2569, 2558, 2565, + 2568, 2568, 2570, 2572, 2569, 2571, 2573, 2570, 2574, 2575, + 2575, 2576, 2573, 2574, 2577, 2578, 2578, 2579, 2579, 2577, + 2582, 2572, 2583, 2583, 2584, 2585, 2576, 2584, 2588, 2586, + 2585, 2585, 2587, 2582, 2586, 2589, 2590, 2587, 2591, 2592, + 2590, 2589, 2588, 2591, 2593, 2594, 2595, 2598, 2592, 2596, + 2597, 2599, 2598, 2594, 2601, 2596, 2597, 2602, 2605, 2593, + 2609, 2601, 2602, 2599, 2607, 2603, 2608, 2595, 2603, 2607, + 2605, 2608, 2610, 2611, 2612, 2613, 2613, 2614, 2609, 2617, - 2620, 2621, 2621, 2623, 2624, 2622, 2613, 2627, 2618, 2625, - 2626, 2626, 2629, 2624, 2631, 2634, 2632, 2619, 2640, 2620, - 2632, 0, 2623, 2640, 2625, 2635, 2627, 2629, 2633, 2633, - 2636, 2635, 2637, 2646, 2631, 2639, 2636, 2642, 2637, 2643, - 2634, 2638, 2638, 2639, 2645, 2647, 2642, 2646, 2645, 2649, - 2649, 2650, 2643, 2651, 2651, 2652, 2652, 2654, 2654, 2655, - 2647, 2656, 2660, 2655, 2658, 2658, 2656, 2661, 2662, 2650, - 2663, 2665, 2661, 2666, 2666, 2663, 2663, 2668, 2668, 2671, - 2662, 2673, 2660, 2669, 2669, 2670, 2675, 2679, 2670, 2676, - 2676, 2665, 2671, 2677, 2677, 2678, 2678, 2680, 2680, 2673, + 2622, 2618, 2611, 2612, 2619, 2610, 2614, 2618, 2623, 2626, + 2619, 2624, 2625, 2625, 2627, 2628, 2626, 2617, 2631, 2622, + 2629, 2630, 2630, 2633, 2628, 2635, 2638, 2636, 2623, 2644, + 2624, 2636, 0, 2627, 2644, 2629, 2639, 2631, 2633, 2637, + 2637, 2640, 2639, 2641, 2650, 2635, 2643, 2640, 2646, 2641, + 2647, 2638, 2642, 2642, 2643, 2649, 2651, 2646, 2650, 2649, + 2653, 2653, 2654, 2647, 2655, 2655, 2656, 2656, 2658, 2658, + 2659, 2651, 2660, 2664, 2659, 2662, 2662, 2660, 2665, 2666, + 2654, 2667, 2669, 2665, 2670, 2670, 2667, 2667, 2672, 2672, + 2675, 2666, 2677, 2664, 2673, 2673, 2674, 2679, 2683, 2674, - 2681, 2682, 2679, 2683, 2684, 2686, 2675, 2685, 2685, 2686, - 2684, 2691, 2692, 2681, 2696, 2690, 2693, 2683, 2694, 2682, - 2690, 2690, 2695, 2697, 2694, 2698, 2698, 2697, 2695, 2703, - 2701, 2706, 2692, 2709, 2691, 2701, 2693, 2703, 2704, 2696, - 2707, 2704, 2710, 2707, 2708, 2708, 2711, 2710, 2712, 2713, - 2709, 2709, 2714, 2714, 2716, 2715, 2706, 2716, 2717, 2718, - 2722, 2720, 2719, 2713, 2711, 2716, 2720, 2720, 2712, 2715, - 2719, 2721, 2717, 2723, 2723, 2728, 2721, 2721, 2718, 2722, - 2724, 2724, 2725, 2725, 2726, 2726, 2727, 2727, 2729, 2730, - 2731, 2728, 2732, 2729, 2733, 2734, 2735, 2732, 2736, 2737, + 2680, 2680, 2669, 2675, 2681, 2681, 2682, 2682, 2684, 2684, + 2677, 2685, 2686, 2683, 2687, 2688, 2690, 2679, 2689, 2689, + 2690, 2688, 2695, 2696, 2685, 2700, 2694, 2697, 2687, 2698, + 2686, 2694, 2694, 2699, 2701, 2698, 2702, 2702, 2701, 2699, + 2707, 2705, 2710, 2696, 2713, 2695, 2705, 2697, 2707, 2708, + 2700, 2711, 2708, 2714, 2711, 2712, 2712, 2715, 2714, 2716, + 2717, 2713, 2713, 2718, 2718, 2720, 2719, 2710, 2720, 2721, + 2722, 2726, 2724, 2723, 2717, 2715, 2720, 2724, 2724, 2716, + 2719, 2723, 2725, 2721, 2727, 2727, 2732, 2725, 2725, 2722, + 2726, 2728, 2728, 2729, 2729, 2730, 2730, 2731, 2731, 2733, - 2734, 2739, 2739, 2740, 2740, 2735, 2742, 2741, 2745, 2730, - 2741, 2744, 2744, 2733, 2750, 2745, 2731, 2747, 2736, 2737, - 2746, 2746, 2747, 2750, 2742, 2749, 2749, 2751, 2752, 2754, - 2755, 2755, 2757, 2758, 2756, 2771, 2751, 2752, 2756, 2759, - 2760, 2757, 2761, 2772, 2759, 2759, 2762, 2754, 2758, 2766, - 2762, 2761, 2770, 2760, 2766, 2767, 2767, 2769, 2769, 2774, - 2771, 2772, 2775, 2778, 2779, 2780, 2770, 2783, 2774, 2781, - 2785, 2787, 2788, 2779, 2775, 2781, 2787, 2788, 2790, 2783, - 2789, 2789, 2793, 2793, 2792, 2780, 2793, 2790, 2778, 2792, - 2798, 2785, 2795, 2795, 2796, 2796, 2797, 2797, 2799, 2798, + 2734, 2735, 2732, 2736, 2733, 2737, 2738, 2739, 2736, 2740, + 2741, 2738, 2743, 2743, 2744, 2744, 2739, 2746, 2745, 2749, + 2734, 2745, 2748, 2748, 2737, 2754, 2749, 2735, 2751, 2740, + 2741, 2750, 2750, 2751, 2754, 2746, 2753, 2753, 2755, 2756, + 2758, 2759, 2759, 2761, 2762, 2760, 2775, 2755, 2756, 2760, + 2763, 2764, 2761, 2765, 2776, 2763, 2763, 2766, 2758, 2762, + 2770, 2766, 2765, 2774, 2764, 2770, 2771, 2771, 2773, 2773, + 2778, 2775, 2776, 2779, 2782, 2783, 2784, 2774, 2787, 2778, + 2785, 2789, 2791, 2792, 2783, 2779, 2785, 2791, 2792, 2794, + 2787, 2793, 2793, 2797, 2797, 2796, 2784, 2797, 2794, 2782, - 2800, 2801, 2803, 2807, 2804, 2805, 2801, 2809, 2803, 2804, - 2805, 2806, 2806, 2808, 2811, 2810, 2812, 2813, 2799, 2800, - 2810, 2807, 2812, 2814, 2814, 2808, 2816, 2820, 2809, 2817, - 2816, 2818, 2811, 2821, 2817, 2822, 2818, 2819, 2819, 2824, - 2826, 2826, 2813, 2828, 2829, 2830, 2820, 2832, 2821, 2830, - 2822, 2831, 2833, 2834, 2836, 2836, 2828, 2829, 2838, 2824, - 2831, 2834, 2835, 2832, 2837, 2839, 2841, 2835, 2840, 2840, - 2851, 2833, 2847, 2837, 2844, 2844, 2838, 2845, 2845, 2849, - 2849, 2852, 2853, 2854, 2857, 2841, 2851, 2858, 2854, 2856, - 2856, 2839, 2859, 2847, 2861, 2861, 2863, 2852, 2853, 2862, + 2796, 2802, 2789, 2799, 2799, 2800, 2800, 2801, 2801, 2803, + 2802, 2804, 2805, 2807, 2811, 2808, 2809, 2805, 2813, 2807, + 2808, 2809, 2810, 2810, 2812, 2815, 2814, 2816, 2817, 2803, + 2804, 2814, 2811, 2816, 2818, 2818, 2812, 2820, 2824, 2813, + 2821, 2820, 2822, 2815, 2825, 2821, 2826, 2822, 2823, 2823, + 2828, 2830, 2830, 2817, 2832, 2833, 2834, 2824, 2836, 2825, + 2834, 2826, 2835, 2837, 2838, 2840, 2840, 2832, 2833, 2842, + 2828, 2835, 2838, 2839, 2836, 2841, 2843, 2845, 2839, 2844, + 2844, 2855, 2837, 2851, 2841, 2848, 2848, 2842, 2849, 2849, + 2853, 2853, 2856, 2857, 2858, 2861, 2845, 2855, 2862, 2858, - 2864, 2864, 2867, 2868, 2857, 2870, 2873, 2869, 2877, 2868, - 2858, 2859, 2869, 2862, 2875, 2863, 2871, 2871, 2872, 2872, - 2874, 2874, 2867, 2876, 2878, 2875, 2873, 2870, 2877, 2879, - 2878, 2880, 2876, 2881, 2882, 2882, 2883, 2884, 2884, 2883, - 2874, 2889, 2888, 2880, 2890, 2891, 2891, 2894, 2879, 2892, - 2890, 2893, 2892, 2881, 2888, 2896, 2899, 2893, 2897, 2897, - 2896, 2889, 2898, 2900, 2901, 2894, 2904, 2898, 2905, 2900, - 2902, 2902, 2906, 2909, 2907, 2899, 2908, 2908, 2904, 2910, - 2911, 2901, 2901, 2913, 2913, 2916, 2905, 2907, 2915, 2911, - 2914, 2914, 2909, 2915, 2922, 2910, 2917, 2906, 2921, 2916, + 2860, 2860, 2843, 2863, 2851, 2865, 2865, 2867, 2856, 2857, + 2866, 2868, 2868, 2871, 2872, 2861, 2874, 2877, 2873, 2881, + 2872, 2862, 2863, 2873, 2866, 2879, 2867, 2875, 2875, 2876, + 2876, 2878, 2878, 2871, 2880, 2882, 2879, 2877, 2874, 2881, + 2883, 2882, 2884, 2880, 2885, 2886, 2886, 2887, 2888, 2888, + 2887, 2878, 2893, 2892, 2884, 2894, 2895, 2895, 2898, 2883, + 2896, 2894, 2897, 2896, 2885, 2892, 2900, 2903, 2897, 2901, + 2901, 2900, 2893, 2902, 2904, 2905, 2898, 2908, 2902, 2909, + 2904, 2906, 2906, 2910, 2913, 2911, 2903, 2912, 2912, 2908, + 2914, 2915, 2905, 2905, 2917, 2917, 2920, 2909, 2911, 2919, - 2929, 2917, 2918, 2918, 2919, 2919, 2920, 2920, 2923, 2931, - 2924, 2921, 2926, 2926, 2923, 2924, 2932, 2933, 2937, 2929, - 2922, 2934, 2934, 2936, 2936, 2938, 2939, 2940, 2940, 2941, - 2941, 2931, 2937, 2944, 2943, 2939, 2945, 2946, 2932, 2933, - 2943, 2960, 2946, 2949, 2949, 2938, 2951, 2951, 2953, 2952, - 2954, 2955, 2956, 2944, 2952, 2945, 2954, 2957, 2957, 2958, - 2956, 2960, 2953, 2955, 2958, 2961, 2962, 2963, 2964, 2966, - 2967, 2962, 2968, 2969, 2964, 2972, 2971, 2966, 2973, 2963, - 2974, 2975, 2977, 2978, 2979, 2961, 2975, 2977, 2982, 2967, - 2979, 2972, 2968, 2969, 2971, 2973, 2973, 2980, 2984, 2987, + 2915, 2918, 2918, 2913, 2919, 2926, 2914, 2921, 2910, 2925, + 2920, 2933, 2921, 2922, 2922, 2923, 2923, 2924, 2924, 2927, + 2935, 2928, 2925, 2930, 2930, 2927, 2928, 2936, 2937, 2941, + 2933, 2926, 2938, 2938, 2940, 2940, 2942, 2943, 2944, 2944, + 2945, 2945, 2935, 2941, 2948, 2947, 2943, 2949, 2950, 2936, + 2937, 2947, 2964, 2950, 2953, 2953, 2942, 2955, 2955, 2957, + 2956, 2958, 2959, 2960, 2948, 2956, 2949, 2958, 2961, 2961, + 2962, 2960, 2964, 2957, 2959, 2962, 2965, 2966, 2967, 2968, + 2970, 2971, 2966, 2972, 2973, 2968, 2976, 2975, 2970, 2977, + 2967, 2978, 2979, 2981, 2982, 2983, 2965, 2979, 2981, 2986, - 2987, 2974, 2980, 2978, 2983, 2988, 2988, 2983, 2982, 2989, - 2995, 2984, 2994, 2989, 2993, 2993, 0, 2994, 2996, 2996, - 2998, 2998, 2999, 2999, 3005, 2999, 3006, 3000, 3000, 2995, - 3000, 3001, 3001, 3002, 3001, 3004, 3004, 3002, 3009, 3010, - 3006, 3011, 3005, 3012, 3012, 3015, 3011, 3016, 3017, 3019, - 3021, 3018, 3017, 3022, 3016, 3023, 3023, 3030, 3009, 3010, - 3018, 3026, 3022, 3030, 3019, 3024, 3024, 3031, 3021, 3027, - 3015, 3025, 3025, 3028, 3027, 3029, 3026, 3033, 3032, 3034, - 3029, 3029, 3028, 3035, 3034, 3028, 3036, 0, 3035, 3037, - 3037, 3038, 3031, 3032, 3039, 3040, 3040, 3038, 3033, 3042, + 2971, 2983, 2976, 2972, 2973, 2975, 2977, 2977, 2984, 2988, + 2991, 2991, 2978, 2984, 2982, 2987, 2992, 2992, 2987, 2986, + 2993, 2999, 2988, 2998, 2993, 2997, 2997, 0, 2998, 3000, + 3000, 3002, 3002, 3003, 3003, 3009, 3003, 3010, 3004, 3004, + 2999, 3004, 3005, 3005, 3006, 3005, 3008, 3008, 3006, 3013, + 3014, 3010, 3015, 3009, 3016, 3016, 3019, 3015, 3020, 3021, + 3023, 3025, 3022, 3021, 3026, 3020, 3027, 3027, 3034, 3013, + 3014, 3022, 3030, 3026, 3034, 3023, 3028, 3028, 3035, 3025, + 3031, 3019, 3029, 3029, 3032, 3031, 3033, 3030, 3037, 3036, + 3038, 3033, 3033, 3032, 3039, 3038, 3032, 3040, 0, 3039, - 3039, 3041, 3041, 3043, 3049, 3036, 3046, 3046, 3043, 3048, - 3048, 3052, 3052, 3049, 3042, 3053, 3053, 3054, 3054, 3055, - 3055, 3056, 3056, 3057, 3057, 3058, 3058, 3060, 3061, 3061, - 3062, 3063, 3064, 3068, 3066, 3070, 3060, 3067, 3067, 3062, - 3072, 3069, 3076, 3063, 3071, 3071, 3078, 3070, 3068, 3073, - 3073, 3080, 3064, 3066, 3069, 3072, 3077, 3079, 3079, 3077, - 3076, 3082, 3083, 3084, 3082, 3085, 3086, 3088, 3083, 3080, - 3085, 3087, 3078, 3090, 3094, 3091, 3095, 3084, 3094, 3090, - 3098, 3108, 3113, 3088, 3091, 3086, 3119, 3106, 3117, 3087, - 3106, 3095, 3109, 3109, 3108, 3110, 3110, 3111, 3111, 3114, + 3041, 3041, 3042, 3035, 3036, 3043, 3044, 3044, 3042, 3037, + 3046, 3043, 3045, 3045, 3047, 3053, 3040, 3050, 3050, 3047, + 3052, 3052, 3056, 3056, 3053, 3046, 3057, 3057, 3058, 3058, + 3059, 3059, 3060, 3060, 3061, 3061, 3062, 3062, 3064, 3065, + 3065, 3066, 3067, 3068, 3072, 3070, 3074, 3064, 3071, 3071, + 3066, 3076, 3073, 3080, 3067, 3075, 3075, 3082, 3074, 3072, + 3077, 3077, 3084, 3068, 3070, 3073, 3076, 3081, 3083, 3083, + 3081, 3080, 3086, 3087, 3088, 3086, 3089, 3090, 3092, 3087, + 3084, 3089, 3091, 3082, 3094, 3098, 3095, 3099, 3088, 3098, + 3094, 3102, 3112, 3117, 3092, 3095, 3090, 3123, 3110, 3121, - 3115, 3116, 3117, 3120, 3115, 3113, 3098, 3121, 3114, 3119, - 3123, 3122, 3121, 3122, 3120, 3124, 3124, 3125, 3126, 3128, - 3127, 3116, 3129, 3131, 3130, 3123, 3133, 3134, 3132, 3135, - 3125, 3133, 3131, 3136, 3135, 3128, 3137, 3126, 3127, 3130, - 3132, 3137, 3141, 3142, 3143, 3143, 3144, 3129, 3134, 3145, - 3145, 3146, 3146, 3136, 3149, 3144, 3141, 3147, 3147, 3148, - 3148, 3150, 3151, 3142, 3152, 3151, 3153, 3154, 3155, 3152, - 3156, 3153, 3157, 3149, 3159, 3158, 3156, 3160, 3160, 3159, - 3161, 3150, 3164, 3155, 3162, 3162, 3157, 3158, 3163, 3163, - 3165, 3168, 3154, 3166, 3166, 3170, 3175, 3164, 3173, 3173, + 3091, 3110, 3099, 3113, 3113, 3112, 3114, 3114, 3115, 3115, + 3118, 3119, 3120, 3121, 3124, 3119, 3117, 3102, 3125, 3118, + 3123, 3127, 3126, 3125, 3126, 3124, 3128, 3128, 3129, 3130, + 3132, 3131, 3120, 3133, 3135, 3134, 3127, 3137, 3138, 3136, + 3139, 3129, 3137, 3135, 3140, 3139, 3132, 3141, 3130, 3131, + 3134, 3136, 3141, 3145, 3146, 3147, 3147, 3148, 3133, 3138, + 3149, 3149, 3150, 3150, 3140, 3153, 3148, 3145, 3151, 3151, + 3152, 3152, 3154, 3155, 3146, 3156, 3155, 3157, 3158, 3159, + 3156, 3160, 3157, 3161, 3153, 3163, 3162, 3160, 3164, 3164, + 3163, 3165, 3154, 3168, 3159, 3166, 3166, 3161, 3162, 3167, - 3161, 3174, 3174, 3176, 3175, 3177, 3168, 3179, 3178, 3165, - 3180, 3177, 3181, 3170, 3178, 3182, 3183, 3183, 3185, 3185, - 3182, 3179, 3176, 3180, 3188, 3191, 3189, 3194, 3192, 3195, - 3196, 3181, 3192, 3199, 3195, 3197, 3200, 3198, 3201, 3191, - 3205, 3200, 3207, 3201, 3206, 3188, 3189, 3194, 3197, 3196, - 3198, 3210, 3199, 3202, 3202, 3208, 3208, 3210, 3209, 3215, - 3205, 3207, 3206, 3209, 3211, 3211, 3212, 3213, 3214, 3216, - 3223, 3212, 3213, 3214, 3219, 3216, 3218, 3218, 3215, 3219, - 3220, 3220, 3222, 3224, 3225, 3226, 3222, 3227, 3228, 3223, - 3224, 3236, 3229, 3227, 3231, 3231, 3233, 3233, 3237, 3234, + 3167, 3169, 3172, 3158, 3170, 3170, 3174, 3179, 3168, 3177, + 3177, 3165, 3178, 3178, 3180, 3179, 3181, 3172, 3183, 3182, + 3169, 3184, 3181, 3185, 3174, 3182, 3186, 3187, 3187, 3189, + 3189, 3186, 3183, 3180, 3184, 3192, 3195, 3193, 3198, 3196, + 3199, 3200, 3185, 3196, 3203, 3199, 3201, 3204, 3202, 3205, + 3195, 3209, 3204, 3211, 3205, 3210, 3192, 3193, 3198, 3201, + 3200, 3202, 3214, 3203, 3206, 3206, 3212, 3212, 3214, 3213, + 3219, 3209, 3211, 3210, 3213, 3215, 3215, 3216, 3217, 3218, + 3220, 3227, 3216, 3217, 3218, 3223, 3220, 3222, 3222, 3219, + 3223, 3224, 3224, 3226, 3228, 3229, 3230, 3226, 3231, 3232, - 3238, 3235, 3243, 3225, 3226, 3229, 3235, 3228, 3234, 3241, - 3236, 3234, 3245, 3238, 3239, 3239, 3240, 3237, 3244, 3244, - 3250, 3240, 3241, 3246, 3246, 3247, 3247, 3248, 3243, 3249, - 3252, 3245, 3248, 3251, 3251, 3252, 3249, 3255, 3253, 3250, - 3253, 3254, 3254, 3256, 3255, 3257, 3258, 3259, 3261, 3261, - 3256, 3258, 3262, 3264, 3265, 3266, 3267, 3271, 3264, 3265, - 3268, 3268, 3270, 3270, 3257, 3272, 3259, 3273, 3273, 3274, - 3274, 3262, 3275, 3285, 3266, 3267, 3271, 3277, 3277, 3275, - 3278, 3278, 3279, 3281, 3272, 3284, 3286, 0, 3281, 3279, - 3284, 0, 3285, 3287, 3287, 3288, 3288, 0, 0, 0, + 3227, 3228, 3240, 3233, 3231, 3235, 3235, 3237, 3237, 3241, + 3238, 3242, 3239, 3247, 3229, 3230, 3233, 3239, 3232, 3238, + 3245, 3240, 3238, 3249, 3242, 3243, 3243, 3244, 3241, 3248, + 3248, 3254, 3244, 3245, 3250, 3250, 3251, 3251, 3252, 3247, + 3253, 3256, 3249, 3252, 3255, 3255, 3256, 3253, 3259, 3257, + 3254, 3257, 3258, 3258, 3260, 3259, 3261, 3262, 3263, 3265, + 3265, 3260, 3262, 3266, 3268, 3269, 3270, 3271, 3275, 3268, + 3269, 3272, 3272, 3274, 3274, 3261, 3276, 3263, 3277, 3277, + 3278, 3278, 3266, 3279, 3289, 3270, 3271, 3275, 3281, 3281, + 3279, 3282, 3282, 3283, 3285, 3276, 3288, 3290, 0, 3285, - 0, 0, 0, 0, 0, 3286, 3292, 3292, 3292, 3292, - 3292, 3292, 3292, 3293, 3293, 3293, 3293, 3293, 3293, 3293, - 3294, 3294, 3294, 3294, 3294, 3294, 3294, 3295, 3295, 3295, - 3295, 3295, 3295, 3295, 3296, 3296, 3296, 3296, 3296, 3296, - 3296, 3297, 3297, 3297, 3297, 3297, 3297, 3297, 3298, 3298, - 3298, 3298, 3298, 3298, 3298, 3300, 3300, 0, 3300, 3300, - 3300, 3300, 3301, 3301, 0, 0, 0, 3301, 3301, 3302, - 3302, 0, 0, 3302, 0, 3302, 3303, 0, 0, 0, - 0, 0, 3303, 3304, 3304, 0, 0, 0, 3304, 3304, - 3305, 0, 0, 0, 0, 0, 3305, 3306, 3306, 0, + 3283, 3288, 0, 3289, 3291, 3291, 3292, 3292, 0, 0, + 0, 0, 0, 0, 0, 0, 3290, 3296, 3296, 3296, + 3296, 3296, 3296, 3296, 3297, 3297, 3297, 3297, 3297, 3297, + 3297, 3298, 3298, 3298, 3298, 3298, 3298, 3298, 3299, 3299, + 3299, 3299, 3299, 3299, 3299, 3300, 3300, 3300, 3300, 3300, + 3300, 3300, 3301, 3301, 3301, 3301, 3301, 3301, 3301, 3302, + 3302, 3302, 3302, 3302, 3302, 3302, 3304, 3304, 0, 3304, + 3304, 3304, 3304, 3305, 3305, 0, 0, 0, 3305, 3305, + 3306, 3306, 0, 0, 3306, 0, 3306, 3307, 0, 0, + 0, 0, 0, 3307, 3308, 3308, 0, 0, 0, 3308, - 3306, 3306, 3306, 3306, 3307, 0, 0, 0, 0, 0, - 3307, 3308, 3308, 0, 0, 0, 3308, 3308, 3309, 3309, - 0, 3309, 3309, 3309, 3309, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, 3291, - 3291, 3291, 3291, 3291, 3291, 3291 + 3308, 3309, 0, 0, 0, 0, 0, 3309, 3310, 3310, + 0, 3310, 3310, 3310, 3310, 3311, 0, 0, 0, 0, + 0, 3311, 3312, 3312, 0, 0, 0, 3312, 3312, 3313, + 3313, 0, 3313, 3313, 3313, 3313, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, 3295, + 3295, 3295, 3295, 3295, 3295, 3295, 3295 } ; static yy_state_type yy_last_accepting_state; @@ -3139,7 +3143,7 @@ static void config_end_include(void) } #endif -#line 3140 "" +#line 3145 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3148,9 +3152,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3149 "" +#line 3154 "" -#line 3151 "" +#line 3156 "" #define INITIAL 0 #define quotedstring 1 @@ -3374,7 +3378,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3375 "" +#line 3380 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3407,13 +3411,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 >= 3292 ) + if ( yy_current_state >= 3296 ) 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] != 6426 ); + while ( yy_base[yy_current_state] != 6437 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4992,40 +4996,45 @@ YY_RULE_SETUP { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 534 "./util/configlexer.lex" +{ YDVAR(1, VAR_NSID ) } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 535 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 310: +case 311: YY_RULE_SETUP -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 538 "./util/configlexer.lex" +#line 539 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 311: -YY_RULE_SETUP -#line 543 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 312: -/* rule 312 can match eol */ YY_RULE_SETUP #line 544 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 313: +/* rule 313 can match eol */ +YY_RULE_SETUP +#line 545 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 313: +case 314: YY_RULE_SETUP -#line 546 "./util/configlexer.lex" +#line 547 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5038,34 +5047,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 314: +case 315: YY_RULE_SETUP -#line 558 "./util/configlexer.lex" +#line 559 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 315: -YY_RULE_SETUP -#line 564 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 316: -/* rule 316 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 317: +/* rule 317 can match eol */ +YY_RULE_SETUP +#line 566 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 317: +case 318: YY_RULE_SETUP -#line 567 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -5078,38 +5087,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 318: +case 319: YY_RULE_SETUP -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 581 "./util/configlexer.lex" +#line 582 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 319: -YY_RULE_SETUP -#line 585 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 320: -/* rule 320 can match eol */ YY_RULE_SETUP #line 586 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 321: +/* rule 321 can match eol */ YY_RULE_SETUP #line 587 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 322: YY_RULE_SETUP #line 588 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 323: +YY_RULE_SETUP +#line 589 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -5117,27 +5126,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 593 "./util/configlexer.lex" +#line 594 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 323: -YY_RULE_SETUP -#line 597 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 324: -/* rule 324 can match eol */ YY_RULE_SETUP #line 598 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 325: +/* rule 325 can match eol */ +YY_RULE_SETUP +#line 599 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 325: +case 326: YY_RULE_SETUP -#line 600 "./util/configlexer.lex" +#line 601 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -5147,7 +5156,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 606 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -5162,39 +5171,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 326: +case 327: YY_RULE_SETUP -#line 620 "./util/configlexer.lex" +#line 621 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 623 "./util/configlexer.lex" +#line 624 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 327: -YY_RULE_SETUP -#line 627 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 328: -/* rule 328 can match eol */ YY_RULE_SETUP #line 628 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 329: +/* rule 329 can match eol */ YY_RULE_SETUP #line 629 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 330: YY_RULE_SETUP #line 630 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 331: +YY_RULE_SETUP +#line 631 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5203,29 +5212,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 636 "./util/configlexer.lex" +#line 637 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 331: -YY_RULE_SETUP -#line 640 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 332: -/* rule 332 can match eol */ YY_RULE_SETUP #line 641 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 333: +/* rule 333 can match eol */ +YY_RULE_SETUP +#line 642 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 333: +case 334: YY_RULE_SETUP -#line 645 "./util/configlexer.lex" +#line 646 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5234,33 +5243,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 334: +case 335: YY_RULE_SETUP -#line 653 "./util/configlexer.lex" +#line 654 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 335: +case 336: YY_RULE_SETUP -#line 657 "./util/configlexer.lex" +#line 658 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 336: +case 337: YY_RULE_SETUP -#line 661 "./util/configlexer.lex" +#line 662 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 337: +case 338: YY_RULE_SETUP -#line 665 "./util/configlexer.lex" +#line 666 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5261 "" +#line 5271 "" case YY_END_OF_BUFFER: { @@ -5555,7 +5564,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 >= 3292 ) + if ( yy_current_state >= 3296 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5583,11 +5592,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 >= 3292 ) + if ( yy_current_state >= 3296 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3291); + yy_is_jam = (yy_current_state == 3295); return yy_is_jam ? 0 : yy_current_state; } @@ -6226,6 +6235,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 665 "./util/configlexer.lex" +#line 666 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 55c584a76..c23e6db8f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -531,6 +531,7 @@ udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNS tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } edns-client-string{COLON} { YDVAR(2, VAR_EDNS_CLIENT_STRING) } edns-client-string-opcode{COLON} { YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) } +nsid{COLON} { YDVAR(1, VAR_NSID ) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 4e5bf5a41..76ef9b877 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.7. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -34,6 +34,10 @@ /* C LALR(1) parser skeleton written by Richard Stallman, by simplifying the original so-called "semantic" parser. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ + /* All symbols defined below should begin with yy or YY, to avoid infringing on user name space. This should be done even for local variables, as they might otherwise be expanded by user macros. @@ -41,14 +45,11 @@ define necessary library symbols; they are noted "INFRINGES ON USER NAME SPACE" below. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ - /* Identify Bison output. */ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -95,8 +96,17 @@ extern struct config_parser_state* cfg_parser; #endif -#line 99 "util/configparser.c" +#line 100 "util/configparser.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -109,694 +119,731 @@ extern struct config_parser_state* cfg_parser; # endif # endif -/* Enabling verbose error messages. */ -#ifdef YYERROR_VERBOSE -# undef YYERROR_VERBOSE -# define YYERROR_VERBOSE 1 -#else -# define YYERROR_VERBOSE 0 -#endif - -/* Use api.header.include to #include this header - instead of duplicating it here. */ -#ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -# define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif - -/* Token type. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_EXTENDED_STATISTICS = 360, - VAR_LOCAL_DATA_PTR = 361, - VAR_JOSTLE_TIMEOUT = 362, - VAR_STUB_PRIME = 363, - VAR_UNWANTED_REPLY_THRESHOLD = 364, - VAR_LOG_TIME_ASCII = 365, - VAR_DOMAIN_INSECURE = 366, - VAR_PYTHON = 367, - VAR_PYTHON_SCRIPT = 368, - VAR_VAL_SIG_SKEW_MIN = 369, - VAR_VAL_SIG_SKEW_MAX = 370, - VAR_CACHE_MIN_TTL = 371, - VAR_VAL_LOG_LEVEL = 372, - VAR_AUTO_TRUST_ANCHOR_FILE = 373, - VAR_KEEP_MISSING = 374, - VAR_ADD_HOLDDOWN = 375, - VAR_DEL_HOLDDOWN = 376, - VAR_SO_RCVBUF = 377, - VAR_EDNS_BUFFER_SIZE = 378, - VAR_PREFETCH = 379, - VAR_PREFETCH_KEY = 380, - VAR_SO_SNDBUF = 381, - VAR_SO_REUSEPORT = 382, - VAR_HARDEN_BELOW_NXDOMAIN = 383, - VAR_IGNORE_CD_FLAG = 384, - VAR_LOG_QUERIES = 385, - VAR_LOG_REPLIES = 386, - VAR_LOG_LOCAL_ACTIONS = 387, - VAR_TCP_UPSTREAM = 388, - VAR_SSL_UPSTREAM = 389, - VAR_SSL_SERVICE_KEY = 390, - VAR_SSL_SERVICE_PEM = 391, - VAR_SSL_PORT = 392, - VAR_FORWARD_FIRST = 393, - VAR_STUB_SSL_UPSTREAM = 394, - VAR_FORWARD_SSL_UPSTREAM = 395, - VAR_TLS_CERT_BUNDLE = 396, - VAR_HTTPS_PORT = 397, - VAR_HTTP_ENDPOINT = 398, - VAR_HTTP_MAX_STREAMS = 399, - VAR_HTTP_QUERY_BUFFER_SIZE = 400, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, - VAR_HTTP_NODELAY = 402, - VAR_HTTP_NOTLS_DOWNSTREAM = 403, - VAR_STUB_FIRST = 404, - VAR_MINIMAL_RESPONSES = 405, - VAR_RRSET_ROUNDROBIN = 406, - VAR_MAX_UDP_SIZE = 407, - VAR_DELAY_CLOSE = 408, - VAR_UDP_CONNECT = 409, - VAR_UNBLOCK_LAN_ZONES = 410, - VAR_INSECURE_LAN_ZONES = 411, - VAR_INFRA_CACHE_MIN_RTT = 412, - VAR_INFRA_KEEP_PROBING = 413, - VAR_DNS64_PREFIX = 414, - VAR_DNS64_SYNTHALL = 415, - VAR_DNS64_IGNORE_AAAA = 416, - VAR_DNSTAP = 417, - VAR_DNSTAP_ENABLE = 418, - VAR_DNSTAP_SOCKET_PATH = 419, - VAR_DNSTAP_IP = 420, - VAR_DNSTAP_TLS = 421, - VAR_DNSTAP_TLS_SERVER_NAME = 422, - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, - VAR_DNSTAP_SEND_IDENTITY = 426, - VAR_DNSTAP_SEND_VERSION = 427, - VAR_DNSTAP_BIDIRECTIONAL = 428, - VAR_DNSTAP_IDENTITY = 429, - VAR_DNSTAP_VERSION = 430, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, - VAR_RESPONSE_IP_TAG = 437, - VAR_RESPONSE_IP = 438, - VAR_RESPONSE_IP_DATA = 439, - VAR_HARDEN_ALGO_DOWNGRADE = 440, - VAR_IP_TRANSPARENT = 441, - VAR_IP_DSCP = 442, - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, - VAR_IP_RATELIMIT = 444, - VAR_IP_RATELIMIT_SLABS = 445, - VAR_IP_RATELIMIT_SIZE = 446, - VAR_RATELIMIT = 447, - VAR_RATELIMIT_SLABS = 448, - VAR_RATELIMIT_SIZE = 449, - VAR_RATELIMIT_FOR_DOMAIN = 450, - VAR_RATELIMIT_BELOW_DOMAIN = 451, - VAR_IP_RATELIMIT_FACTOR = 452, - VAR_RATELIMIT_FACTOR = 453, - VAR_SEND_CLIENT_SUBNET = 454, - VAR_CLIENT_SUBNET_ZONE = 455, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, - VAR_CLIENT_SUBNET_OPCODE = 457, - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, - VAR_CAPS_WHITELIST = 464, - VAR_CACHE_MAX_NEGATIVE_TTL = 465, - VAR_PERMIT_SMALL_HOLDDOWN = 466, - VAR_QNAME_MINIMISATION = 467, - VAR_QNAME_MINIMISATION_STRICT = 468, - VAR_IP_FREEBIND = 469, - VAR_DEFINE_TAG = 470, - VAR_LOCAL_ZONE_TAG = 471, - VAR_ACCESS_CONTROL_TAG = 472, - VAR_LOCAL_ZONE_OVERRIDE = 473, - VAR_ACCESS_CONTROL_TAG_ACTION = 474, - VAR_ACCESS_CONTROL_TAG_DATA = 475, - VAR_VIEW = 476, - VAR_ACCESS_CONTROL_VIEW = 477, - VAR_VIEW_FIRST = 478, - VAR_SERVE_EXPIRED = 479, - VAR_SERVE_EXPIRED_TTL = 480, - VAR_SERVE_EXPIRED_TTL_RESET = 481, - VAR_SERVE_EXPIRED_REPLY_TTL = 482, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, - VAR_FAKE_DSA = 484, - VAR_FAKE_SHA1 = 485, - VAR_LOG_IDENTITY = 486, - VAR_HIDE_TRUSTANCHOR = 487, - VAR_TRUST_ANCHOR_SIGNALING = 488, - VAR_AGGRESSIVE_NSEC = 489, - VAR_USE_SYSTEMD = 490, - VAR_SHM_ENABLE = 491, - VAR_SHM_KEY = 492, - VAR_ROOT_KEY_SENTINEL = 493, - VAR_DNSCRYPT = 494, - VAR_DNSCRYPT_ENABLE = 495, - VAR_DNSCRYPT_PORT = 496, - VAR_DNSCRYPT_PROVIDER = 497, - VAR_DNSCRYPT_SECRET_KEY = 498, - VAR_DNSCRYPT_PROVIDER_CERT = 499, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, - VAR_IPSECMOD_ENABLED = 505, - VAR_IPSECMOD_HOOK = 506, - VAR_IPSECMOD_IGNORE_BOGUS = 507, - VAR_IPSECMOD_MAX_TTL = 508, - VAR_IPSECMOD_WHITELIST = 509, - VAR_IPSECMOD_STRICT = 510, - VAR_CACHEDB = 511, - VAR_CACHEDB_BACKEND = 512, - VAR_CACHEDB_SECRETSEED = 513, - VAR_CACHEDB_REDISHOST = 514, - VAR_CACHEDB_REDISPORT = 515, - VAR_CACHEDB_REDISTIMEOUT = 516, - VAR_CACHEDB_REDISEXPIRERECORDS = 517, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, - VAR_FOR_UPSTREAM = 519, - VAR_AUTH_ZONE = 520, - VAR_ZONEFILE = 521, - VAR_MASTER = 522, - VAR_URL = 523, - VAR_FOR_DOWNSTREAM = 524, - VAR_FALLBACK_ENABLED = 525, - VAR_TLS_ADDITIONAL_PORT = 526, - VAR_LOW_RTT = 527, - VAR_LOW_RTT_PERMIL = 528, - VAR_FAST_SERVER_PERMIL = 529, - VAR_FAST_SERVER_NUM = 530, - VAR_ALLOW_NOTIFY = 531, - VAR_TLS_WIN_CERT = 532, - VAR_TCP_CONNECTION_LIMIT = 533, - VAR_FORWARD_NO_CACHE = 534, - VAR_STUB_NO_CACHE = 535, - VAR_LOG_SERVFAIL = 536, - VAR_DENY_ANY = 537, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, - VAR_LOG_TAG_QUERYREPLY = 539, - VAR_STREAM_WAIT_SIZE = 540, - VAR_TLS_CIPHERS = 541, - VAR_TLS_CIPHERSUITES = 542, - VAR_TLS_USE_SNI = 543, - VAR_IPSET = 544, - VAR_IPSET_NAME_V4 = 545, - VAR_IPSET_NAME_V6 = 546, - VAR_TLS_SESSION_TICKET_KEYS = 547, - VAR_RPZ = 548, - VAR_TAGS = 549, - VAR_RPZ_ACTION_OVERRIDE = 550, - VAR_RPZ_CNAME_OVERRIDE = 551, - VAR_RPZ_LOG = 552, - VAR_RPZ_LOG_NAME = 553, - VAR_DYNLIB = 554, - VAR_DYNLIB_FILE = 555, - VAR_EDNS_CLIENT_STRING = 556, - VAR_EDNS_CLIENT_STRING_OPCODE = 557 - }; -#endif -/* Tokens. */ -#define SPACE 258 -#define LETTER 259 -#define NEWLINE 260 -#define COMMENT 261 -#define COLON 262 -#define ANY 263 -#define ZONESTR 264 -#define STRING_ARG 265 -#define VAR_FORCE_TOPLEVEL 266 -#define VAR_SERVER 267 -#define VAR_VERBOSITY 268 -#define VAR_NUM_THREADS 269 -#define VAR_PORT 270 -#define VAR_OUTGOING_RANGE 271 -#define VAR_INTERFACE 272 -#define VAR_PREFER_IP4 273 -#define VAR_DO_IP4 274 -#define VAR_DO_IP6 275 -#define VAR_PREFER_IP6 276 -#define VAR_DO_UDP 277 -#define VAR_DO_TCP 278 -#define VAR_TCP_MSS 279 -#define VAR_OUTGOING_TCP_MSS 280 -#define VAR_TCP_IDLE_TIMEOUT 281 -#define VAR_EDNS_TCP_KEEPALIVE 282 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 -#define VAR_CHROOT 284 -#define VAR_USERNAME 285 -#define VAR_DIRECTORY 286 -#define VAR_LOGFILE 287 -#define VAR_PIDFILE 288 -#define VAR_MSG_CACHE_SIZE 289 -#define VAR_MSG_CACHE_SLABS 290 -#define VAR_NUM_QUERIES_PER_THREAD 291 -#define VAR_RRSET_CACHE_SIZE 292 -#define VAR_RRSET_CACHE_SLABS 293 -#define VAR_OUTGOING_NUM_TCP 294 -#define VAR_INFRA_HOST_TTL 295 -#define VAR_INFRA_LAME_TTL 296 -#define VAR_INFRA_CACHE_SLABS 297 -#define VAR_INFRA_CACHE_NUMHOSTS 298 -#define VAR_INFRA_CACHE_LAME_SIZE 299 -#define VAR_NAME 300 -#define VAR_STUB_ZONE 301 -#define VAR_STUB_HOST 302 -#define VAR_STUB_ADDR 303 -#define VAR_TARGET_FETCH_POLICY 304 -#define VAR_HARDEN_SHORT_BUFSIZE 305 -#define VAR_HARDEN_LARGE_QUERIES 306 -#define VAR_FORWARD_ZONE 307 -#define VAR_FORWARD_HOST 308 -#define VAR_FORWARD_ADDR 309 -#define VAR_DO_NOT_QUERY_ADDRESS 310 -#define VAR_HIDE_IDENTITY 311 -#define VAR_HIDE_VERSION 312 -#define VAR_IDENTITY 313 -#define VAR_VERSION 314 -#define VAR_HARDEN_GLUE 315 -#define VAR_MODULE_CONF 316 -#define VAR_TRUST_ANCHOR_FILE 317 -#define VAR_TRUST_ANCHOR 318 -#define VAR_VAL_OVERRIDE_DATE 319 -#define VAR_BOGUS_TTL 320 -#define VAR_VAL_CLEAN_ADDITIONAL 321 -#define VAR_VAL_PERMISSIVE_MODE 322 -#define VAR_INCOMING_NUM_TCP 323 -#define VAR_MSG_BUFFER_SIZE 324 -#define VAR_KEY_CACHE_SIZE 325 -#define VAR_KEY_CACHE_SLABS 326 -#define VAR_TRUSTED_KEYS_FILE 327 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 -#define VAR_USE_SYSLOG 329 -#define VAR_OUTGOING_INTERFACE 330 -#define VAR_ROOT_HINTS 331 -#define VAR_DO_NOT_QUERY_LOCALHOST 332 -#define VAR_CACHE_MAX_TTL 333 -#define VAR_HARDEN_DNSSEC_STRIPPED 334 -#define VAR_ACCESS_CONTROL 335 -#define VAR_LOCAL_ZONE 336 -#define VAR_LOCAL_DATA 337 -#define VAR_INTERFACE_AUTOMATIC 338 -#define VAR_STATISTICS_INTERVAL 339 -#define VAR_DO_DAEMONIZE 340 -#define VAR_USE_CAPS_FOR_ID 341 -#define VAR_STATISTICS_CUMULATIVE 342 -#define VAR_OUTGOING_PORT_PERMIT 343 -#define VAR_OUTGOING_PORT_AVOID 344 -#define VAR_DLV_ANCHOR_FILE 345 -#define VAR_DLV_ANCHOR 346 -#define VAR_NEG_CACHE_SIZE 347 -#define VAR_HARDEN_REFERRAL_PATH 348 -#define VAR_PRIVATE_ADDRESS 349 -#define VAR_PRIVATE_DOMAIN 350 -#define VAR_REMOTE_CONTROL 351 -#define VAR_CONTROL_ENABLE 352 -#define VAR_CONTROL_INTERFACE 353 -#define VAR_CONTROL_PORT 354 -#define VAR_SERVER_KEY_FILE 355 -#define VAR_SERVER_CERT_FILE 356 -#define VAR_CONTROL_KEY_FILE 357 -#define VAR_CONTROL_CERT_FILE 358 -#define VAR_CONTROL_USE_CERT 359 -#define VAR_EXTENDED_STATISTICS 360 -#define VAR_LOCAL_DATA_PTR 361 -#define VAR_JOSTLE_TIMEOUT 362 -#define VAR_STUB_PRIME 363 -#define VAR_UNWANTED_REPLY_THRESHOLD 364 -#define VAR_LOG_TIME_ASCII 365 -#define VAR_DOMAIN_INSECURE 366 -#define VAR_PYTHON 367 -#define VAR_PYTHON_SCRIPT 368 -#define VAR_VAL_SIG_SKEW_MIN 369 -#define VAR_VAL_SIG_SKEW_MAX 370 -#define VAR_CACHE_MIN_TTL 371 -#define VAR_VAL_LOG_LEVEL 372 -#define VAR_AUTO_TRUST_ANCHOR_FILE 373 -#define VAR_KEEP_MISSING 374 -#define VAR_ADD_HOLDDOWN 375 -#define VAR_DEL_HOLDDOWN 376 -#define VAR_SO_RCVBUF 377 -#define VAR_EDNS_BUFFER_SIZE 378 -#define VAR_PREFETCH 379 -#define VAR_PREFETCH_KEY 380 -#define VAR_SO_SNDBUF 381 -#define VAR_SO_REUSEPORT 382 -#define VAR_HARDEN_BELOW_NXDOMAIN 383 -#define VAR_IGNORE_CD_FLAG 384 -#define VAR_LOG_QUERIES 385 -#define VAR_LOG_REPLIES 386 -#define VAR_LOG_LOCAL_ACTIONS 387 -#define VAR_TCP_UPSTREAM 388 -#define VAR_SSL_UPSTREAM 389 -#define VAR_SSL_SERVICE_KEY 390 -#define VAR_SSL_SERVICE_PEM 391 -#define VAR_SSL_PORT 392 -#define VAR_FORWARD_FIRST 393 -#define VAR_STUB_SSL_UPSTREAM 394 -#define VAR_FORWARD_SSL_UPSTREAM 395 -#define VAR_TLS_CERT_BUNDLE 396 -#define VAR_HTTPS_PORT 397 -#define VAR_HTTP_ENDPOINT 398 -#define VAR_HTTP_MAX_STREAMS 399 -#define VAR_HTTP_QUERY_BUFFER_SIZE 400 -#define VAR_HTTP_RESPONSE_BUFFER_SIZE 401 -#define VAR_HTTP_NODELAY 402 -#define VAR_HTTP_NOTLS_DOWNSTREAM 403 -#define VAR_STUB_FIRST 404 -#define VAR_MINIMAL_RESPONSES 405 -#define VAR_RRSET_ROUNDROBIN 406 -#define VAR_MAX_UDP_SIZE 407 -#define VAR_DELAY_CLOSE 408 -#define VAR_UDP_CONNECT 409 -#define VAR_UNBLOCK_LAN_ZONES 410 -#define VAR_INSECURE_LAN_ZONES 411 -#define VAR_INFRA_CACHE_MIN_RTT 412 -#define VAR_INFRA_KEEP_PROBING 413 -#define VAR_DNS64_PREFIX 414 -#define VAR_DNS64_SYNTHALL 415 -#define VAR_DNS64_IGNORE_AAAA 416 -#define VAR_DNSTAP 417 -#define VAR_DNSTAP_ENABLE 418 -#define VAR_DNSTAP_SOCKET_PATH 419 -#define VAR_DNSTAP_IP 420 -#define VAR_DNSTAP_TLS 421 -#define VAR_DNSTAP_TLS_SERVER_NAME 422 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 423 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 424 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 425 -#define VAR_DNSTAP_SEND_IDENTITY 426 -#define VAR_DNSTAP_SEND_VERSION 427 -#define VAR_DNSTAP_BIDIRECTIONAL 428 -#define VAR_DNSTAP_IDENTITY 429 -#define VAR_DNSTAP_VERSION 430 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 431 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 432 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 433 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 434 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 435 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 436 -#define VAR_RESPONSE_IP_TAG 437 -#define VAR_RESPONSE_IP 438 -#define VAR_RESPONSE_IP_DATA 439 -#define VAR_HARDEN_ALGO_DOWNGRADE 440 -#define VAR_IP_TRANSPARENT 441 -#define VAR_IP_DSCP 442 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 443 -#define VAR_IP_RATELIMIT 444 -#define VAR_IP_RATELIMIT_SLABS 445 -#define VAR_IP_RATELIMIT_SIZE 446 -#define VAR_RATELIMIT 447 -#define VAR_RATELIMIT_SLABS 448 -#define VAR_RATELIMIT_SIZE 449 -#define VAR_RATELIMIT_FOR_DOMAIN 450 -#define VAR_RATELIMIT_BELOW_DOMAIN 451 -#define VAR_IP_RATELIMIT_FACTOR 452 -#define VAR_RATELIMIT_FACTOR 453 -#define VAR_SEND_CLIENT_SUBNET 454 -#define VAR_CLIENT_SUBNET_ZONE 455 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 456 -#define VAR_CLIENT_SUBNET_OPCODE 457 -#define VAR_MAX_CLIENT_SUBNET_IPV4 458 -#define VAR_MAX_CLIENT_SUBNET_IPV6 459 -#define VAR_MIN_CLIENT_SUBNET_IPV4 460 -#define VAR_MIN_CLIENT_SUBNET_IPV6 461 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 462 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 463 -#define VAR_CAPS_WHITELIST 464 -#define VAR_CACHE_MAX_NEGATIVE_TTL 465 -#define VAR_PERMIT_SMALL_HOLDDOWN 466 -#define VAR_QNAME_MINIMISATION 467 -#define VAR_QNAME_MINIMISATION_STRICT 468 -#define VAR_IP_FREEBIND 469 -#define VAR_DEFINE_TAG 470 -#define VAR_LOCAL_ZONE_TAG 471 -#define VAR_ACCESS_CONTROL_TAG 472 -#define VAR_LOCAL_ZONE_OVERRIDE 473 -#define VAR_ACCESS_CONTROL_TAG_ACTION 474 -#define VAR_ACCESS_CONTROL_TAG_DATA 475 -#define VAR_VIEW 476 -#define VAR_ACCESS_CONTROL_VIEW 477 -#define VAR_VIEW_FIRST 478 -#define VAR_SERVE_EXPIRED 479 -#define VAR_SERVE_EXPIRED_TTL 480 -#define VAR_SERVE_EXPIRED_TTL_RESET 481 -#define VAR_SERVE_EXPIRED_REPLY_TTL 482 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 483 -#define VAR_FAKE_DSA 484 -#define VAR_FAKE_SHA1 485 -#define VAR_LOG_IDENTITY 486 -#define VAR_HIDE_TRUSTANCHOR 487 -#define VAR_TRUST_ANCHOR_SIGNALING 488 -#define VAR_AGGRESSIVE_NSEC 489 -#define VAR_USE_SYSTEMD 490 -#define VAR_SHM_ENABLE 491 -#define VAR_SHM_KEY 492 -#define VAR_ROOT_KEY_SENTINEL 493 -#define VAR_DNSCRYPT 494 -#define VAR_DNSCRYPT_ENABLE 495 -#define VAR_DNSCRYPT_PORT 496 -#define VAR_DNSCRYPT_PROVIDER 497 -#define VAR_DNSCRYPT_SECRET_KEY 498 -#define VAR_DNSCRYPT_PROVIDER_CERT 499 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 500 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 501 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 502 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 503 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 504 -#define VAR_IPSECMOD_ENABLED 505 -#define VAR_IPSECMOD_HOOK 506 -#define VAR_IPSECMOD_IGNORE_BOGUS 507 -#define VAR_IPSECMOD_MAX_TTL 508 -#define VAR_IPSECMOD_WHITELIST 509 -#define VAR_IPSECMOD_STRICT 510 -#define VAR_CACHEDB 511 -#define VAR_CACHEDB_BACKEND 512 -#define VAR_CACHEDB_SECRETSEED 513 -#define VAR_CACHEDB_REDISHOST 514 -#define VAR_CACHEDB_REDISPORT 515 -#define VAR_CACHEDB_REDISTIMEOUT 516 -#define VAR_CACHEDB_REDISEXPIRERECORDS 517 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 518 -#define VAR_FOR_UPSTREAM 519 -#define VAR_AUTH_ZONE 520 -#define VAR_ZONEFILE 521 -#define VAR_MASTER 522 -#define VAR_URL 523 -#define VAR_FOR_DOWNSTREAM 524 -#define VAR_FALLBACK_ENABLED 525 -#define VAR_TLS_ADDITIONAL_PORT 526 -#define VAR_LOW_RTT 527 -#define VAR_LOW_RTT_PERMIL 528 -#define VAR_FAST_SERVER_PERMIL 529 -#define VAR_FAST_SERVER_NUM 530 -#define VAR_ALLOW_NOTIFY 531 -#define VAR_TLS_WIN_CERT 532 -#define VAR_TCP_CONNECTION_LIMIT 533 -#define VAR_FORWARD_NO_CACHE 534 -#define VAR_STUB_NO_CACHE 535 -#define VAR_LOG_SERVFAIL 536 -#define VAR_DENY_ANY 537 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 538 -#define VAR_LOG_TAG_QUERYREPLY 539 -#define VAR_STREAM_WAIT_SIZE 540 -#define VAR_TLS_CIPHERS 541 -#define VAR_TLS_CIPHERSUITES 542 -#define VAR_TLS_USE_SNI 543 -#define VAR_IPSET 544 -#define VAR_IPSET_NAME_V4 545 -#define VAR_IPSET_NAME_V6 546 -#define VAR_TLS_SESSION_TICKET_KEYS 547 -#define VAR_RPZ 548 -#define VAR_TAGS 549 -#define VAR_RPZ_ACTION_OVERRIDE 550 -#define VAR_RPZ_CNAME_OVERRIDE 551 -#define VAR_RPZ_LOG 552 -#define VAR_RPZ_LOG_NAME 553 -#define VAR_DYNLIB 554 -#define VAR_DYNLIB_FILE 555 -#define VAR_EDNS_CLIENT_STRING 556 -#define VAR_EDNS_CLIENT_STRING_OPCODE 557 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE +#include "configparser.h" +/* Symbol kind. */ +enum yysymbol_kind_t { -#line 66 "./util/configparser.y" - - char* str; - -#line 750 "util/configparser.c" - + YYSYMBOL_YYEMPTY = -2, + YYSYMBOL_YYEOF = 0, /* "end of file" */ + YYSYMBOL_YYerror = 1, /* error */ + YYSYMBOL_YYUNDEF = 2, /* "invalid token" */ + YYSYMBOL_SPACE = 3, /* SPACE */ + YYSYMBOL_LETTER = 4, /* LETTER */ + YYSYMBOL_NEWLINE = 5, /* NEWLINE */ + YYSYMBOL_COMMENT = 6, /* COMMENT */ + YYSYMBOL_COLON = 7, /* COLON */ + YYSYMBOL_ANY = 8, /* ANY */ + YYSYMBOL_ZONESTR = 9, /* ZONESTR */ + YYSYMBOL_STRING_ARG = 10, /* STRING_ARG */ + YYSYMBOL_VAR_FORCE_TOPLEVEL = 11, /* VAR_FORCE_TOPLEVEL */ + YYSYMBOL_VAR_SERVER = 12, /* VAR_SERVER */ + YYSYMBOL_VAR_VERBOSITY = 13, /* VAR_VERBOSITY */ + YYSYMBOL_VAR_NUM_THREADS = 14, /* VAR_NUM_THREADS */ + YYSYMBOL_VAR_PORT = 15, /* VAR_PORT */ + YYSYMBOL_VAR_OUTGOING_RANGE = 16, /* VAR_OUTGOING_RANGE */ + YYSYMBOL_VAR_INTERFACE = 17, /* VAR_INTERFACE */ + YYSYMBOL_VAR_PREFER_IP4 = 18, /* VAR_PREFER_IP4 */ + YYSYMBOL_VAR_DO_IP4 = 19, /* VAR_DO_IP4 */ + YYSYMBOL_VAR_DO_IP6 = 20, /* VAR_DO_IP6 */ + YYSYMBOL_VAR_PREFER_IP6 = 21, /* VAR_PREFER_IP6 */ + YYSYMBOL_VAR_DO_UDP = 22, /* VAR_DO_UDP */ + YYSYMBOL_VAR_DO_TCP = 23, /* VAR_DO_TCP */ + YYSYMBOL_VAR_TCP_MSS = 24, /* VAR_TCP_MSS */ + YYSYMBOL_VAR_OUTGOING_TCP_MSS = 25, /* VAR_OUTGOING_TCP_MSS */ + YYSYMBOL_VAR_TCP_IDLE_TIMEOUT = 26, /* VAR_TCP_IDLE_TIMEOUT */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE = 27, /* VAR_EDNS_TCP_KEEPALIVE */ + YYSYMBOL_VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 28, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + YYSYMBOL_VAR_CHROOT = 29, /* VAR_CHROOT */ + YYSYMBOL_VAR_USERNAME = 30, /* VAR_USERNAME */ + YYSYMBOL_VAR_DIRECTORY = 31, /* VAR_DIRECTORY */ + YYSYMBOL_VAR_LOGFILE = 32, /* VAR_LOGFILE */ + YYSYMBOL_VAR_PIDFILE = 33, /* VAR_PIDFILE */ + YYSYMBOL_VAR_MSG_CACHE_SIZE = 34, /* VAR_MSG_CACHE_SIZE */ + YYSYMBOL_VAR_MSG_CACHE_SLABS = 35, /* VAR_MSG_CACHE_SLABS */ + YYSYMBOL_VAR_NUM_QUERIES_PER_THREAD = 36, /* VAR_NUM_QUERIES_PER_THREAD */ + YYSYMBOL_VAR_RRSET_CACHE_SIZE = 37, /* VAR_RRSET_CACHE_SIZE */ + YYSYMBOL_VAR_RRSET_CACHE_SLABS = 38, /* VAR_RRSET_CACHE_SLABS */ + YYSYMBOL_VAR_OUTGOING_NUM_TCP = 39, /* VAR_OUTGOING_NUM_TCP */ + YYSYMBOL_VAR_INFRA_HOST_TTL = 40, /* VAR_INFRA_HOST_TTL */ + YYSYMBOL_VAR_INFRA_LAME_TTL = 41, /* VAR_INFRA_LAME_TTL */ + YYSYMBOL_VAR_INFRA_CACHE_SLABS = 42, /* VAR_INFRA_CACHE_SLABS */ + YYSYMBOL_VAR_INFRA_CACHE_NUMHOSTS = 43, /* VAR_INFRA_CACHE_NUMHOSTS */ + YYSYMBOL_VAR_INFRA_CACHE_LAME_SIZE = 44, /* VAR_INFRA_CACHE_LAME_SIZE */ + YYSYMBOL_VAR_NAME = 45, /* VAR_NAME */ + YYSYMBOL_VAR_STUB_ZONE = 46, /* VAR_STUB_ZONE */ + YYSYMBOL_VAR_STUB_HOST = 47, /* VAR_STUB_HOST */ + YYSYMBOL_VAR_STUB_ADDR = 48, /* VAR_STUB_ADDR */ + YYSYMBOL_VAR_TARGET_FETCH_POLICY = 49, /* VAR_TARGET_FETCH_POLICY */ + YYSYMBOL_VAR_HARDEN_SHORT_BUFSIZE = 50, /* VAR_HARDEN_SHORT_BUFSIZE */ + YYSYMBOL_VAR_HARDEN_LARGE_QUERIES = 51, /* VAR_HARDEN_LARGE_QUERIES */ + YYSYMBOL_VAR_FORWARD_ZONE = 52, /* VAR_FORWARD_ZONE */ + YYSYMBOL_VAR_FORWARD_HOST = 53, /* VAR_FORWARD_HOST */ + YYSYMBOL_VAR_FORWARD_ADDR = 54, /* VAR_FORWARD_ADDR */ + YYSYMBOL_VAR_DO_NOT_QUERY_ADDRESS = 55, /* VAR_DO_NOT_QUERY_ADDRESS */ + YYSYMBOL_VAR_HIDE_IDENTITY = 56, /* VAR_HIDE_IDENTITY */ + YYSYMBOL_VAR_HIDE_VERSION = 57, /* VAR_HIDE_VERSION */ + YYSYMBOL_VAR_IDENTITY = 58, /* VAR_IDENTITY */ + YYSYMBOL_VAR_VERSION = 59, /* VAR_VERSION */ + YYSYMBOL_VAR_HARDEN_GLUE = 60, /* VAR_HARDEN_GLUE */ + YYSYMBOL_VAR_MODULE_CONF = 61, /* VAR_MODULE_CONF */ + YYSYMBOL_VAR_TRUST_ANCHOR_FILE = 62, /* VAR_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_TRUST_ANCHOR = 63, /* VAR_TRUST_ANCHOR */ + YYSYMBOL_VAR_VAL_OVERRIDE_DATE = 64, /* VAR_VAL_OVERRIDE_DATE */ + YYSYMBOL_VAR_BOGUS_TTL = 65, /* VAR_BOGUS_TTL */ + YYSYMBOL_VAR_VAL_CLEAN_ADDITIONAL = 66, /* VAR_VAL_CLEAN_ADDITIONAL */ + YYSYMBOL_VAR_VAL_PERMISSIVE_MODE = 67, /* VAR_VAL_PERMISSIVE_MODE */ + YYSYMBOL_VAR_INCOMING_NUM_TCP = 68, /* VAR_INCOMING_NUM_TCP */ + YYSYMBOL_VAR_MSG_BUFFER_SIZE = 69, /* VAR_MSG_BUFFER_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SIZE = 70, /* VAR_KEY_CACHE_SIZE */ + YYSYMBOL_VAR_KEY_CACHE_SLABS = 71, /* VAR_KEY_CACHE_SLABS */ + YYSYMBOL_VAR_TRUSTED_KEYS_FILE = 72, /* VAR_TRUSTED_KEYS_FILE */ + YYSYMBOL_VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 73, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + YYSYMBOL_VAR_USE_SYSLOG = 74, /* VAR_USE_SYSLOG */ + YYSYMBOL_VAR_OUTGOING_INTERFACE = 75, /* VAR_OUTGOING_INTERFACE */ + YYSYMBOL_VAR_ROOT_HINTS = 76, /* VAR_ROOT_HINTS */ + YYSYMBOL_VAR_DO_NOT_QUERY_LOCALHOST = 77, /* VAR_DO_NOT_QUERY_LOCALHOST */ + YYSYMBOL_VAR_CACHE_MAX_TTL = 78, /* VAR_CACHE_MAX_TTL */ + YYSYMBOL_VAR_HARDEN_DNSSEC_STRIPPED = 79, /* VAR_HARDEN_DNSSEC_STRIPPED */ + YYSYMBOL_VAR_ACCESS_CONTROL = 80, /* VAR_ACCESS_CONTROL */ + YYSYMBOL_VAR_LOCAL_ZONE = 81, /* VAR_LOCAL_ZONE */ + YYSYMBOL_VAR_LOCAL_DATA = 82, /* VAR_LOCAL_DATA */ + YYSYMBOL_VAR_INTERFACE_AUTOMATIC = 83, /* VAR_INTERFACE_AUTOMATIC */ + YYSYMBOL_VAR_STATISTICS_INTERVAL = 84, /* VAR_STATISTICS_INTERVAL */ + YYSYMBOL_VAR_DO_DAEMONIZE = 85, /* VAR_DO_DAEMONIZE */ + YYSYMBOL_VAR_USE_CAPS_FOR_ID = 86, /* VAR_USE_CAPS_FOR_ID */ + YYSYMBOL_VAR_STATISTICS_CUMULATIVE = 87, /* VAR_STATISTICS_CUMULATIVE */ + YYSYMBOL_VAR_OUTGOING_PORT_PERMIT = 88, /* VAR_OUTGOING_PORT_PERMIT */ + YYSYMBOL_VAR_OUTGOING_PORT_AVOID = 89, /* VAR_OUTGOING_PORT_AVOID */ + YYSYMBOL_VAR_DLV_ANCHOR_FILE = 90, /* VAR_DLV_ANCHOR_FILE */ + YYSYMBOL_VAR_DLV_ANCHOR = 91, /* VAR_DLV_ANCHOR */ + YYSYMBOL_VAR_NEG_CACHE_SIZE = 92, /* VAR_NEG_CACHE_SIZE */ + YYSYMBOL_VAR_HARDEN_REFERRAL_PATH = 93, /* VAR_HARDEN_REFERRAL_PATH */ + YYSYMBOL_VAR_PRIVATE_ADDRESS = 94, /* VAR_PRIVATE_ADDRESS */ + YYSYMBOL_VAR_PRIVATE_DOMAIN = 95, /* VAR_PRIVATE_DOMAIN */ + YYSYMBOL_VAR_REMOTE_CONTROL = 96, /* VAR_REMOTE_CONTROL */ + YYSYMBOL_VAR_CONTROL_ENABLE = 97, /* VAR_CONTROL_ENABLE */ + YYSYMBOL_VAR_CONTROL_INTERFACE = 98, /* VAR_CONTROL_INTERFACE */ + YYSYMBOL_VAR_CONTROL_PORT = 99, /* VAR_CONTROL_PORT */ + YYSYMBOL_VAR_SERVER_KEY_FILE = 100, /* VAR_SERVER_KEY_FILE */ + YYSYMBOL_VAR_SERVER_CERT_FILE = 101, /* VAR_SERVER_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_KEY_FILE = 102, /* VAR_CONTROL_KEY_FILE */ + YYSYMBOL_VAR_CONTROL_CERT_FILE = 103, /* VAR_CONTROL_CERT_FILE */ + YYSYMBOL_VAR_CONTROL_USE_CERT = 104, /* VAR_CONTROL_USE_CERT */ + YYSYMBOL_VAR_EXTENDED_STATISTICS = 105, /* VAR_EXTENDED_STATISTICS */ + YYSYMBOL_VAR_LOCAL_DATA_PTR = 106, /* VAR_LOCAL_DATA_PTR */ + YYSYMBOL_VAR_JOSTLE_TIMEOUT = 107, /* VAR_JOSTLE_TIMEOUT */ + YYSYMBOL_VAR_STUB_PRIME = 108, /* VAR_STUB_PRIME */ + YYSYMBOL_VAR_UNWANTED_REPLY_THRESHOLD = 109, /* VAR_UNWANTED_REPLY_THRESHOLD */ + YYSYMBOL_VAR_LOG_TIME_ASCII = 110, /* VAR_LOG_TIME_ASCII */ + YYSYMBOL_VAR_DOMAIN_INSECURE = 111, /* VAR_DOMAIN_INSECURE */ + YYSYMBOL_VAR_PYTHON = 112, /* VAR_PYTHON */ + YYSYMBOL_VAR_PYTHON_SCRIPT = 113, /* VAR_PYTHON_SCRIPT */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MIN = 114, /* VAR_VAL_SIG_SKEW_MIN */ + YYSYMBOL_VAR_VAL_SIG_SKEW_MAX = 115, /* VAR_VAL_SIG_SKEW_MAX */ + YYSYMBOL_VAR_CACHE_MIN_TTL = 116, /* VAR_CACHE_MIN_TTL */ + YYSYMBOL_VAR_VAL_LOG_LEVEL = 117, /* VAR_VAL_LOG_LEVEL */ + YYSYMBOL_VAR_AUTO_TRUST_ANCHOR_FILE = 118, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + YYSYMBOL_VAR_KEEP_MISSING = 119, /* VAR_KEEP_MISSING */ + YYSYMBOL_VAR_ADD_HOLDDOWN = 120, /* VAR_ADD_HOLDDOWN */ + YYSYMBOL_VAR_DEL_HOLDDOWN = 121, /* VAR_DEL_HOLDDOWN */ + YYSYMBOL_VAR_SO_RCVBUF = 122, /* VAR_SO_RCVBUF */ + YYSYMBOL_VAR_EDNS_BUFFER_SIZE = 123, /* VAR_EDNS_BUFFER_SIZE */ + YYSYMBOL_VAR_PREFETCH = 124, /* VAR_PREFETCH */ + YYSYMBOL_VAR_PREFETCH_KEY = 125, /* VAR_PREFETCH_KEY */ + YYSYMBOL_VAR_SO_SNDBUF = 126, /* VAR_SO_SNDBUF */ + YYSYMBOL_VAR_SO_REUSEPORT = 127, /* VAR_SO_REUSEPORT */ + YYSYMBOL_VAR_HARDEN_BELOW_NXDOMAIN = 128, /* VAR_HARDEN_BELOW_NXDOMAIN */ + YYSYMBOL_VAR_IGNORE_CD_FLAG = 129, /* VAR_IGNORE_CD_FLAG */ + YYSYMBOL_VAR_LOG_QUERIES = 130, /* VAR_LOG_QUERIES */ + YYSYMBOL_VAR_LOG_REPLIES = 131, /* VAR_LOG_REPLIES */ + YYSYMBOL_VAR_LOG_LOCAL_ACTIONS = 132, /* VAR_LOG_LOCAL_ACTIONS */ + YYSYMBOL_VAR_TCP_UPSTREAM = 133, /* VAR_TCP_UPSTREAM */ + YYSYMBOL_VAR_SSL_UPSTREAM = 134, /* VAR_SSL_UPSTREAM */ + YYSYMBOL_VAR_SSL_SERVICE_KEY = 135, /* VAR_SSL_SERVICE_KEY */ + YYSYMBOL_VAR_SSL_SERVICE_PEM = 136, /* VAR_SSL_SERVICE_PEM */ + YYSYMBOL_VAR_SSL_PORT = 137, /* VAR_SSL_PORT */ + YYSYMBOL_VAR_FORWARD_FIRST = 138, /* VAR_FORWARD_FIRST */ + YYSYMBOL_VAR_STUB_SSL_UPSTREAM = 139, /* VAR_STUB_SSL_UPSTREAM */ + YYSYMBOL_VAR_FORWARD_SSL_UPSTREAM = 140, /* VAR_FORWARD_SSL_UPSTREAM */ + YYSYMBOL_VAR_TLS_CERT_BUNDLE = 141, /* VAR_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_HTTPS_PORT = 142, /* VAR_HTTPS_PORT */ + YYSYMBOL_VAR_HTTP_ENDPOINT = 143, /* VAR_HTTP_ENDPOINT */ + YYSYMBOL_VAR_HTTP_MAX_STREAMS = 144, /* VAR_HTTP_MAX_STREAMS */ + YYSYMBOL_VAR_HTTP_QUERY_BUFFER_SIZE = 145, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_RESPONSE_BUFFER_SIZE = 146, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + YYSYMBOL_VAR_HTTP_NODELAY = 147, /* VAR_HTTP_NODELAY */ + YYSYMBOL_VAR_HTTP_NOTLS_DOWNSTREAM = 148, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + YYSYMBOL_VAR_STUB_FIRST = 149, /* VAR_STUB_FIRST */ + YYSYMBOL_VAR_MINIMAL_RESPONSES = 150, /* VAR_MINIMAL_RESPONSES */ + YYSYMBOL_VAR_RRSET_ROUNDROBIN = 151, /* VAR_RRSET_ROUNDROBIN */ + YYSYMBOL_VAR_MAX_UDP_SIZE = 152, /* VAR_MAX_UDP_SIZE */ + YYSYMBOL_VAR_DELAY_CLOSE = 153, /* VAR_DELAY_CLOSE */ + YYSYMBOL_VAR_UDP_CONNECT = 154, /* VAR_UDP_CONNECT */ + YYSYMBOL_VAR_UNBLOCK_LAN_ZONES = 155, /* VAR_UNBLOCK_LAN_ZONES */ + YYSYMBOL_VAR_INSECURE_LAN_ZONES = 156, /* VAR_INSECURE_LAN_ZONES */ + YYSYMBOL_VAR_INFRA_CACHE_MIN_RTT = 157, /* VAR_INFRA_CACHE_MIN_RTT */ + YYSYMBOL_VAR_INFRA_KEEP_PROBING = 158, /* VAR_INFRA_KEEP_PROBING */ + YYSYMBOL_VAR_DNS64_PREFIX = 159, /* VAR_DNS64_PREFIX */ + YYSYMBOL_VAR_DNS64_SYNTHALL = 160, /* VAR_DNS64_SYNTHALL */ + YYSYMBOL_VAR_DNS64_IGNORE_AAAA = 161, /* VAR_DNS64_IGNORE_AAAA */ + YYSYMBOL_VAR_DNSTAP = 162, /* VAR_DNSTAP */ + YYSYMBOL_VAR_DNSTAP_ENABLE = 163, /* VAR_DNSTAP_ENABLE */ + YYSYMBOL_VAR_DNSTAP_SOCKET_PATH = 164, /* VAR_DNSTAP_SOCKET_PATH */ + YYSYMBOL_VAR_DNSTAP_IP = 165, /* VAR_DNSTAP_IP */ + YYSYMBOL_VAR_DNSTAP_TLS = 166, /* VAR_DNSTAP_TLS */ + YYSYMBOL_VAR_DNSTAP_TLS_SERVER_NAME = 167, /* VAR_DNSTAP_TLS_SERVER_NAME */ + YYSYMBOL_VAR_DNSTAP_TLS_CERT_BUNDLE = 168, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 169, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + YYSYMBOL_VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 170, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + YYSYMBOL_VAR_DNSTAP_SEND_IDENTITY = 171, /* VAR_DNSTAP_SEND_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_SEND_VERSION = 172, /* VAR_DNSTAP_SEND_VERSION */ + YYSYMBOL_VAR_DNSTAP_BIDIRECTIONAL = 173, /* VAR_DNSTAP_BIDIRECTIONAL */ + YYSYMBOL_VAR_DNSTAP_IDENTITY = 174, /* VAR_DNSTAP_IDENTITY */ + YYSYMBOL_VAR_DNSTAP_VERSION = 175, /* VAR_DNSTAP_VERSION */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 176, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 177, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 178, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 179, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 180, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + YYSYMBOL_VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 181, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + YYSYMBOL_VAR_RESPONSE_IP_TAG = 182, /* VAR_RESPONSE_IP_TAG */ + YYSYMBOL_VAR_RESPONSE_IP = 183, /* VAR_RESPONSE_IP */ + YYSYMBOL_VAR_RESPONSE_IP_DATA = 184, /* VAR_RESPONSE_IP_DATA */ + YYSYMBOL_VAR_HARDEN_ALGO_DOWNGRADE = 185, /* VAR_HARDEN_ALGO_DOWNGRADE */ + YYSYMBOL_VAR_IP_TRANSPARENT = 186, /* VAR_IP_TRANSPARENT */ + YYSYMBOL_VAR_IP_DSCP = 187, /* VAR_IP_DSCP */ + YYSYMBOL_VAR_DISABLE_DNSSEC_LAME_CHECK = 188, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + YYSYMBOL_VAR_IP_RATELIMIT = 189, /* VAR_IP_RATELIMIT */ + YYSYMBOL_VAR_IP_RATELIMIT_SLABS = 190, /* VAR_IP_RATELIMIT_SLABS */ + YYSYMBOL_VAR_IP_RATELIMIT_SIZE = 191, /* VAR_IP_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT = 192, /* VAR_RATELIMIT */ + YYSYMBOL_VAR_RATELIMIT_SLABS = 193, /* VAR_RATELIMIT_SLABS */ + YYSYMBOL_VAR_RATELIMIT_SIZE = 194, /* VAR_RATELIMIT_SIZE */ + YYSYMBOL_VAR_RATELIMIT_FOR_DOMAIN = 195, /* VAR_RATELIMIT_FOR_DOMAIN */ + YYSYMBOL_VAR_RATELIMIT_BELOW_DOMAIN = 196, /* VAR_RATELIMIT_BELOW_DOMAIN */ + YYSYMBOL_VAR_IP_RATELIMIT_FACTOR = 197, /* VAR_IP_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_RATELIMIT_FACTOR = 198, /* VAR_RATELIMIT_FACTOR */ + YYSYMBOL_VAR_SEND_CLIENT_SUBNET = 199, /* VAR_SEND_CLIENT_SUBNET */ + YYSYMBOL_VAR_CLIENT_SUBNET_ZONE = 200, /* VAR_CLIENT_SUBNET_ZONE */ + YYSYMBOL_VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 201, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + YYSYMBOL_VAR_CLIENT_SUBNET_OPCODE = 202, /* VAR_CLIENT_SUBNET_OPCODE */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV4 = 203, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MAX_CLIENT_SUBNET_IPV6 = 204, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV4 = 205, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + YYSYMBOL_VAR_MIN_CLIENT_SUBNET_IPV6 = 206, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV4 = 207, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + YYSYMBOL_VAR_MAX_ECS_TREE_SIZE_IPV6 = 208, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + YYSYMBOL_VAR_CAPS_WHITELIST = 209, /* VAR_CAPS_WHITELIST */ + YYSYMBOL_VAR_CACHE_MAX_NEGATIVE_TTL = 210, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + YYSYMBOL_VAR_PERMIT_SMALL_HOLDDOWN = 211, /* VAR_PERMIT_SMALL_HOLDDOWN */ + YYSYMBOL_VAR_QNAME_MINIMISATION = 212, /* VAR_QNAME_MINIMISATION */ + YYSYMBOL_VAR_QNAME_MINIMISATION_STRICT = 213, /* VAR_QNAME_MINIMISATION_STRICT */ + YYSYMBOL_VAR_IP_FREEBIND = 214, /* VAR_IP_FREEBIND */ + YYSYMBOL_VAR_DEFINE_TAG = 215, /* VAR_DEFINE_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_TAG = 216, /* VAR_LOCAL_ZONE_TAG */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG = 217, /* VAR_ACCESS_CONTROL_TAG */ + YYSYMBOL_VAR_LOCAL_ZONE_OVERRIDE = 218, /* VAR_LOCAL_ZONE_OVERRIDE */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_ACTION = 219, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + YYSYMBOL_VAR_ACCESS_CONTROL_TAG_DATA = 220, /* VAR_ACCESS_CONTROL_TAG_DATA */ + YYSYMBOL_VAR_VIEW = 221, /* VAR_VIEW */ + YYSYMBOL_VAR_ACCESS_CONTROL_VIEW = 222, /* VAR_ACCESS_CONTROL_VIEW */ + YYSYMBOL_VAR_VIEW_FIRST = 223, /* VAR_VIEW_FIRST */ + YYSYMBOL_VAR_SERVE_EXPIRED = 224, /* VAR_SERVE_EXPIRED */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL = 225, /* VAR_SERVE_EXPIRED_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_TTL_RESET = 226, /* VAR_SERVE_EXPIRED_TTL_RESET */ + YYSYMBOL_VAR_SERVE_EXPIRED_REPLY_TTL = 227, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + YYSYMBOL_VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 228, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + YYSYMBOL_VAR_FAKE_DSA = 229, /* VAR_FAKE_DSA */ + YYSYMBOL_VAR_FAKE_SHA1 = 230, /* VAR_FAKE_SHA1 */ + YYSYMBOL_VAR_LOG_IDENTITY = 231, /* VAR_LOG_IDENTITY */ + YYSYMBOL_VAR_HIDE_TRUSTANCHOR = 232, /* VAR_HIDE_TRUSTANCHOR */ + YYSYMBOL_VAR_TRUST_ANCHOR_SIGNALING = 233, /* VAR_TRUST_ANCHOR_SIGNALING */ + YYSYMBOL_VAR_AGGRESSIVE_NSEC = 234, /* VAR_AGGRESSIVE_NSEC */ + YYSYMBOL_VAR_USE_SYSTEMD = 235, /* VAR_USE_SYSTEMD */ + YYSYMBOL_VAR_SHM_ENABLE = 236, /* VAR_SHM_ENABLE */ + YYSYMBOL_VAR_SHM_KEY = 237, /* VAR_SHM_KEY */ + YYSYMBOL_VAR_ROOT_KEY_SENTINEL = 238, /* VAR_ROOT_KEY_SENTINEL */ + YYSYMBOL_VAR_DNSCRYPT = 239, /* VAR_DNSCRYPT */ + YYSYMBOL_VAR_DNSCRYPT_ENABLE = 240, /* VAR_DNSCRYPT_ENABLE */ + YYSYMBOL_VAR_DNSCRYPT_PORT = 241, /* VAR_DNSCRYPT_PORT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER = 242, /* VAR_DNSCRYPT_PROVIDER */ + YYSYMBOL_VAR_DNSCRYPT_SECRET_KEY = 243, /* VAR_DNSCRYPT_SECRET_KEY */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT = 244, /* VAR_DNSCRYPT_PROVIDER_CERT */ + YYSYMBOL_VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 245, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 246, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 247, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SIZE = 248, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + YYSYMBOL_VAR_DNSCRYPT_NONCE_CACHE_SLABS = 249, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + YYSYMBOL_VAR_IPSECMOD_ENABLED = 250, /* VAR_IPSECMOD_ENABLED */ + YYSYMBOL_VAR_IPSECMOD_HOOK = 251, /* VAR_IPSECMOD_HOOK */ + YYSYMBOL_VAR_IPSECMOD_IGNORE_BOGUS = 252, /* VAR_IPSECMOD_IGNORE_BOGUS */ + YYSYMBOL_VAR_IPSECMOD_MAX_TTL = 253, /* VAR_IPSECMOD_MAX_TTL */ + YYSYMBOL_VAR_IPSECMOD_WHITELIST = 254, /* VAR_IPSECMOD_WHITELIST */ + YYSYMBOL_VAR_IPSECMOD_STRICT = 255, /* VAR_IPSECMOD_STRICT */ + YYSYMBOL_VAR_CACHEDB = 256, /* VAR_CACHEDB */ + YYSYMBOL_VAR_CACHEDB_BACKEND = 257, /* VAR_CACHEDB_BACKEND */ + YYSYMBOL_VAR_CACHEDB_SECRETSEED = 258, /* VAR_CACHEDB_SECRETSEED */ + YYSYMBOL_VAR_CACHEDB_REDISHOST = 259, /* VAR_CACHEDB_REDISHOST */ + YYSYMBOL_VAR_CACHEDB_REDISPORT = 260, /* VAR_CACHEDB_REDISPORT */ + YYSYMBOL_VAR_CACHEDB_REDISTIMEOUT = 261, /* VAR_CACHEDB_REDISTIMEOUT */ + YYSYMBOL_VAR_CACHEDB_REDISEXPIRERECORDS = 262, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + YYSYMBOL_VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 263, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + YYSYMBOL_VAR_FOR_UPSTREAM = 264, /* VAR_FOR_UPSTREAM */ + YYSYMBOL_VAR_AUTH_ZONE = 265, /* VAR_AUTH_ZONE */ + YYSYMBOL_VAR_ZONEFILE = 266, /* VAR_ZONEFILE */ + YYSYMBOL_VAR_MASTER = 267, /* VAR_MASTER */ + YYSYMBOL_VAR_URL = 268, /* VAR_URL */ + YYSYMBOL_VAR_FOR_DOWNSTREAM = 269, /* VAR_FOR_DOWNSTREAM */ + YYSYMBOL_VAR_FALLBACK_ENABLED = 270, /* VAR_FALLBACK_ENABLED */ + YYSYMBOL_VAR_TLS_ADDITIONAL_PORT = 271, /* VAR_TLS_ADDITIONAL_PORT */ + YYSYMBOL_VAR_LOW_RTT = 272, /* VAR_LOW_RTT */ + YYSYMBOL_VAR_LOW_RTT_PERMIL = 273, /* VAR_LOW_RTT_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_PERMIL = 274, /* VAR_FAST_SERVER_PERMIL */ + YYSYMBOL_VAR_FAST_SERVER_NUM = 275, /* VAR_FAST_SERVER_NUM */ + YYSYMBOL_VAR_ALLOW_NOTIFY = 276, /* VAR_ALLOW_NOTIFY */ + YYSYMBOL_VAR_TLS_WIN_CERT = 277, /* VAR_TLS_WIN_CERT */ + YYSYMBOL_VAR_TCP_CONNECTION_LIMIT = 278, /* VAR_TCP_CONNECTION_LIMIT */ + YYSYMBOL_VAR_FORWARD_NO_CACHE = 279, /* VAR_FORWARD_NO_CACHE */ + YYSYMBOL_VAR_STUB_NO_CACHE = 280, /* VAR_STUB_NO_CACHE */ + YYSYMBOL_VAR_LOG_SERVFAIL = 281, /* VAR_LOG_SERVFAIL */ + YYSYMBOL_VAR_DENY_ANY = 282, /* VAR_DENY_ANY */ + YYSYMBOL_VAR_UNKNOWN_SERVER_TIME_LIMIT = 283, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + YYSYMBOL_VAR_LOG_TAG_QUERYREPLY = 284, /* VAR_LOG_TAG_QUERYREPLY */ + YYSYMBOL_VAR_STREAM_WAIT_SIZE = 285, /* VAR_STREAM_WAIT_SIZE */ + YYSYMBOL_VAR_TLS_CIPHERS = 286, /* VAR_TLS_CIPHERS */ + YYSYMBOL_VAR_TLS_CIPHERSUITES = 287, /* VAR_TLS_CIPHERSUITES */ + YYSYMBOL_VAR_TLS_USE_SNI = 288, /* VAR_TLS_USE_SNI */ + YYSYMBOL_VAR_IPSET = 289, /* VAR_IPSET */ + YYSYMBOL_VAR_IPSET_NAME_V4 = 290, /* VAR_IPSET_NAME_V4 */ + YYSYMBOL_VAR_IPSET_NAME_V6 = 291, /* VAR_IPSET_NAME_V6 */ + YYSYMBOL_VAR_TLS_SESSION_TICKET_KEYS = 292, /* VAR_TLS_SESSION_TICKET_KEYS */ + YYSYMBOL_VAR_RPZ = 293, /* VAR_RPZ */ + YYSYMBOL_VAR_TAGS = 294, /* VAR_TAGS */ + YYSYMBOL_VAR_RPZ_ACTION_OVERRIDE = 295, /* VAR_RPZ_ACTION_OVERRIDE */ + YYSYMBOL_VAR_RPZ_CNAME_OVERRIDE = 296, /* VAR_RPZ_CNAME_OVERRIDE */ + YYSYMBOL_VAR_RPZ_LOG = 297, /* VAR_RPZ_LOG */ + YYSYMBOL_VAR_RPZ_LOG_NAME = 298, /* VAR_RPZ_LOG_NAME */ + YYSYMBOL_VAR_DYNLIB = 299, /* VAR_DYNLIB */ + YYSYMBOL_VAR_DYNLIB_FILE = 300, /* VAR_DYNLIB_FILE */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING = 301, /* VAR_EDNS_CLIENT_STRING */ + YYSYMBOL_VAR_EDNS_CLIENT_STRING_OPCODE = 302, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + YYSYMBOL_VAR_NSID = 303, /* VAR_NSID */ + YYSYMBOL_YYACCEPT = 304, /* $accept */ + YYSYMBOL_toplevelvars = 305, /* toplevelvars */ + YYSYMBOL_toplevelvar = 306, /* toplevelvar */ + YYSYMBOL_force_toplevel = 307, /* force_toplevel */ + YYSYMBOL_serverstart = 308, /* serverstart */ + YYSYMBOL_contents_server = 309, /* contents_server */ + YYSYMBOL_content_server = 310, /* content_server */ + YYSYMBOL_stubstart = 311, /* stubstart */ + YYSYMBOL_contents_stub = 312, /* contents_stub */ + YYSYMBOL_content_stub = 313, /* content_stub */ + YYSYMBOL_forwardstart = 314, /* forwardstart */ + YYSYMBOL_contents_forward = 315, /* contents_forward */ + YYSYMBOL_content_forward = 316, /* content_forward */ + YYSYMBOL_viewstart = 317, /* viewstart */ + YYSYMBOL_contents_view = 318, /* contents_view */ + YYSYMBOL_content_view = 319, /* content_view */ + YYSYMBOL_authstart = 320, /* authstart */ + YYSYMBOL_contents_auth = 321, /* contents_auth */ + YYSYMBOL_content_auth = 322, /* content_auth */ + YYSYMBOL_rpz_tag = 323, /* rpz_tag */ + YYSYMBOL_rpz_action_override = 324, /* rpz_action_override */ + YYSYMBOL_rpz_cname_override = 325, /* rpz_cname_override */ + YYSYMBOL_rpz_log = 326, /* rpz_log */ + YYSYMBOL_rpz_log_name = 327, /* rpz_log_name */ + YYSYMBOL_rpzstart = 328, /* rpzstart */ + YYSYMBOL_contents_rpz = 329, /* contents_rpz */ + YYSYMBOL_content_rpz = 330, /* content_rpz */ + YYSYMBOL_server_num_threads = 331, /* server_num_threads */ + YYSYMBOL_server_verbosity = 332, /* server_verbosity */ + YYSYMBOL_server_statistics_interval = 333, /* server_statistics_interval */ + YYSYMBOL_server_statistics_cumulative = 334, /* server_statistics_cumulative */ + YYSYMBOL_server_extended_statistics = 335, /* server_extended_statistics */ + YYSYMBOL_server_shm_enable = 336, /* server_shm_enable */ + YYSYMBOL_server_shm_key = 337, /* server_shm_key */ + YYSYMBOL_server_port = 338, /* server_port */ + YYSYMBOL_server_send_client_subnet = 339, /* server_send_client_subnet */ + YYSYMBOL_server_client_subnet_zone = 340, /* server_client_subnet_zone */ + YYSYMBOL_server_client_subnet_always_forward = 341, /* server_client_subnet_always_forward */ + YYSYMBOL_server_client_subnet_opcode = 342, /* server_client_subnet_opcode */ + YYSYMBOL_server_max_client_subnet_ipv4 = 343, /* server_max_client_subnet_ipv4 */ + YYSYMBOL_server_max_client_subnet_ipv6 = 344, /* server_max_client_subnet_ipv6 */ + YYSYMBOL_server_min_client_subnet_ipv4 = 345, /* server_min_client_subnet_ipv4 */ + YYSYMBOL_server_min_client_subnet_ipv6 = 346, /* server_min_client_subnet_ipv6 */ + YYSYMBOL_server_max_ecs_tree_size_ipv4 = 347, /* server_max_ecs_tree_size_ipv4 */ + YYSYMBOL_server_max_ecs_tree_size_ipv6 = 348, /* server_max_ecs_tree_size_ipv6 */ + YYSYMBOL_server_interface = 349, /* server_interface */ + YYSYMBOL_server_outgoing_interface = 350, /* server_outgoing_interface */ + YYSYMBOL_server_outgoing_range = 351, /* server_outgoing_range */ + YYSYMBOL_server_outgoing_port_permit = 352, /* server_outgoing_port_permit */ + YYSYMBOL_server_outgoing_port_avoid = 353, /* server_outgoing_port_avoid */ + YYSYMBOL_server_outgoing_num_tcp = 354, /* server_outgoing_num_tcp */ + YYSYMBOL_server_incoming_num_tcp = 355, /* server_incoming_num_tcp */ + YYSYMBOL_server_interface_automatic = 356, /* server_interface_automatic */ + YYSYMBOL_server_do_ip4 = 357, /* server_do_ip4 */ + YYSYMBOL_server_do_ip6 = 358, /* server_do_ip6 */ + YYSYMBOL_server_do_udp = 359, /* server_do_udp */ + YYSYMBOL_server_do_tcp = 360, /* server_do_tcp */ + YYSYMBOL_server_prefer_ip4 = 361, /* server_prefer_ip4 */ + YYSYMBOL_server_prefer_ip6 = 362, /* server_prefer_ip6 */ + YYSYMBOL_server_tcp_mss = 363, /* server_tcp_mss */ + YYSYMBOL_server_outgoing_tcp_mss = 364, /* server_outgoing_tcp_mss */ + YYSYMBOL_server_tcp_idle_timeout = 365, /* server_tcp_idle_timeout */ + YYSYMBOL_server_tcp_keepalive = 366, /* server_tcp_keepalive */ + YYSYMBOL_server_tcp_keepalive_timeout = 367, /* server_tcp_keepalive_timeout */ + YYSYMBOL_server_tcp_upstream = 368, /* server_tcp_upstream */ + YYSYMBOL_server_udp_upstream_without_downstream = 369, /* server_udp_upstream_without_downstream */ + YYSYMBOL_server_ssl_upstream = 370, /* server_ssl_upstream */ + YYSYMBOL_server_ssl_service_key = 371, /* server_ssl_service_key */ + YYSYMBOL_server_ssl_service_pem = 372, /* server_ssl_service_pem */ + YYSYMBOL_server_ssl_port = 373, /* server_ssl_port */ + YYSYMBOL_server_tls_cert_bundle = 374, /* server_tls_cert_bundle */ + YYSYMBOL_server_tls_win_cert = 375, /* server_tls_win_cert */ + YYSYMBOL_server_tls_additional_port = 376, /* server_tls_additional_port */ + YYSYMBOL_server_tls_ciphers = 377, /* server_tls_ciphers */ + YYSYMBOL_server_tls_ciphersuites = 378, /* server_tls_ciphersuites */ + YYSYMBOL_server_tls_session_ticket_keys = 379, /* server_tls_session_ticket_keys */ + YYSYMBOL_server_tls_use_sni = 380, /* server_tls_use_sni */ + YYSYMBOL_server_https_port = 381, /* server_https_port */ + YYSYMBOL_server_http_endpoint = 382, /* server_http_endpoint */ + YYSYMBOL_server_http_max_streams = 383, /* server_http_max_streams */ + YYSYMBOL_server_http_query_buffer_size = 384, /* server_http_query_buffer_size */ + YYSYMBOL_server_http_response_buffer_size = 385, /* server_http_response_buffer_size */ + YYSYMBOL_server_http_nodelay = 386, /* server_http_nodelay */ + YYSYMBOL_server_http_notls_downstream = 387, /* server_http_notls_downstream */ + YYSYMBOL_server_use_systemd = 388, /* server_use_systemd */ + YYSYMBOL_server_do_daemonize = 389, /* server_do_daemonize */ + YYSYMBOL_server_use_syslog = 390, /* server_use_syslog */ + YYSYMBOL_server_log_time_ascii = 391, /* server_log_time_ascii */ + YYSYMBOL_server_log_queries = 392, /* server_log_queries */ + YYSYMBOL_server_log_replies = 393, /* server_log_replies */ + YYSYMBOL_server_log_tag_queryreply = 394, /* server_log_tag_queryreply */ + YYSYMBOL_server_log_servfail = 395, /* server_log_servfail */ + YYSYMBOL_server_log_local_actions = 396, /* server_log_local_actions */ + YYSYMBOL_server_chroot = 397, /* server_chroot */ + YYSYMBOL_server_username = 398, /* server_username */ + YYSYMBOL_server_directory = 399, /* server_directory */ + YYSYMBOL_server_logfile = 400, /* server_logfile */ + YYSYMBOL_server_pidfile = 401, /* server_pidfile */ + YYSYMBOL_server_root_hints = 402, /* server_root_hints */ + YYSYMBOL_server_dlv_anchor_file = 403, /* server_dlv_anchor_file */ + YYSYMBOL_server_dlv_anchor = 404, /* server_dlv_anchor */ + YYSYMBOL_server_auto_trust_anchor_file = 405, /* server_auto_trust_anchor_file */ + YYSYMBOL_server_trust_anchor_file = 406, /* server_trust_anchor_file */ + YYSYMBOL_server_trusted_keys_file = 407, /* server_trusted_keys_file */ + YYSYMBOL_server_trust_anchor = 408, /* server_trust_anchor */ + YYSYMBOL_server_trust_anchor_signaling = 409, /* server_trust_anchor_signaling */ + YYSYMBOL_server_root_key_sentinel = 410, /* server_root_key_sentinel */ + YYSYMBOL_server_domain_insecure = 411, /* server_domain_insecure */ + YYSYMBOL_server_hide_identity = 412, /* server_hide_identity */ + YYSYMBOL_server_hide_version = 413, /* server_hide_version */ + YYSYMBOL_server_hide_trustanchor = 414, /* server_hide_trustanchor */ + YYSYMBOL_server_identity = 415, /* server_identity */ + YYSYMBOL_server_version = 416, /* server_version */ + YYSYMBOL_server_nsid = 417, /* server_nsid */ + YYSYMBOL_server_so_rcvbuf = 418, /* server_so_rcvbuf */ + YYSYMBOL_server_so_sndbuf = 419, /* server_so_sndbuf */ + YYSYMBOL_server_so_reuseport = 420, /* server_so_reuseport */ + YYSYMBOL_server_ip_transparent = 421, /* server_ip_transparent */ + YYSYMBOL_server_ip_freebind = 422, /* server_ip_freebind */ + YYSYMBOL_server_ip_dscp = 423, /* server_ip_dscp */ + YYSYMBOL_server_stream_wait_size = 424, /* server_stream_wait_size */ + YYSYMBOL_server_edns_buffer_size = 425, /* server_edns_buffer_size */ + YYSYMBOL_server_msg_buffer_size = 426, /* server_msg_buffer_size */ + YYSYMBOL_server_msg_cache_size = 427, /* server_msg_cache_size */ + YYSYMBOL_server_msg_cache_slabs = 428, /* server_msg_cache_slabs */ + YYSYMBOL_server_num_queries_per_thread = 429, /* server_num_queries_per_thread */ + YYSYMBOL_server_jostle_timeout = 430, /* server_jostle_timeout */ + YYSYMBOL_server_delay_close = 431, /* server_delay_close */ + YYSYMBOL_server_udp_connect = 432, /* server_udp_connect */ + YYSYMBOL_server_unblock_lan_zones = 433, /* server_unblock_lan_zones */ + YYSYMBOL_server_insecure_lan_zones = 434, /* server_insecure_lan_zones */ + YYSYMBOL_server_rrset_cache_size = 435, /* server_rrset_cache_size */ + YYSYMBOL_server_rrset_cache_slabs = 436, /* server_rrset_cache_slabs */ + YYSYMBOL_server_infra_host_ttl = 437, /* server_infra_host_ttl */ + YYSYMBOL_server_infra_lame_ttl = 438, /* server_infra_lame_ttl */ + YYSYMBOL_server_infra_cache_numhosts = 439, /* server_infra_cache_numhosts */ + YYSYMBOL_server_infra_cache_lame_size = 440, /* server_infra_cache_lame_size */ + YYSYMBOL_server_infra_cache_slabs = 441, /* server_infra_cache_slabs */ + YYSYMBOL_server_infra_cache_min_rtt = 442, /* server_infra_cache_min_rtt */ + YYSYMBOL_server_infra_keep_probing = 443, /* server_infra_keep_probing */ + YYSYMBOL_server_target_fetch_policy = 444, /* server_target_fetch_policy */ + YYSYMBOL_server_harden_short_bufsize = 445, /* server_harden_short_bufsize */ + YYSYMBOL_server_harden_large_queries = 446, /* server_harden_large_queries */ + YYSYMBOL_server_harden_glue = 447, /* server_harden_glue */ + YYSYMBOL_server_harden_dnssec_stripped = 448, /* server_harden_dnssec_stripped */ + YYSYMBOL_server_harden_below_nxdomain = 449, /* server_harden_below_nxdomain */ + YYSYMBOL_server_harden_referral_path = 450, /* server_harden_referral_path */ + YYSYMBOL_server_harden_algo_downgrade = 451, /* server_harden_algo_downgrade */ + YYSYMBOL_server_use_caps_for_id = 452, /* server_use_caps_for_id */ + YYSYMBOL_server_caps_whitelist = 453, /* server_caps_whitelist */ + YYSYMBOL_server_private_address = 454, /* server_private_address */ + YYSYMBOL_server_private_domain = 455, /* server_private_domain */ + YYSYMBOL_server_prefetch = 456, /* server_prefetch */ + YYSYMBOL_server_prefetch_key = 457, /* server_prefetch_key */ + YYSYMBOL_server_deny_any = 458, /* server_deny_any */ + YYSYMBOL_server_unwanted_reply_threshold = 459, /* server_unwanted_reply_threshold */ + YYSYMBOL_server_do_not_query_address = 460, /* server_do_not_query_address */ + YYSYMBOL_server_do_not_query_localhost = 461, /* server_do_not_query_localhost */ + YYSYMBOL_server_access_control = 462, /* server_access_control */ + YYSYMBOL_server_module_conf = 463, /* server_module_conf */ + YYSYMBOL_server_val_override_date = 464, /* server_val_override_date */ + YYSYMBOL_server_val_sig_skew_min = 465, /* server_val_sig_skew_min */ + YYSYMBOL_server_val_sig_skew_max = 466, /* server_val_sig_skew_max */ + YYSYMBOL_server_cache_max_ttl = 467, /* server_cache_max_ttl */ + YYSYMBOL_server_cache_max_negative_ttl = 468, /* server_cache_max_negative_ttl */ + YYSYMBOL_server_cache_min_ttl = 469, /* server_cache_min_ttl */ + YYSYMBOL_server_bogus_ttl = 470, /* server_bogus_ttl */ + YYSYMBOL_server_val_clean_additional = 471, /* server_val_clean_additional */ + YYSYMBOL_server_val_permissive_mode = 472, /* server_val_permissive_mode */ + YYSYMBOL_server_aggressive_nsec = 473, /* server_aggressive_nsec */ + YYSYMBOL_server_ignore_cd_flag = 474, /* server_ignore_cd_flag */ + YYSYMBOL_server_serve_expired = 475, /* server_serve_expired */ + YYSYMBOL_server_serve_expired_ttl = 476, /* server_serve_expired_ttl */ + YYSYMBOL_server_serve_expired_ttl_reset = 477, /* server_serve_expired_ttl_reset */ + YYSYMBOL_server_serve_expired_reply_ttl = 478, /* server_serve_expired_reply_ttl */ + YYSYMBOL_server_serve_expired_client_timeout = 479, /* server_serve_expired_client_timeout */ + YYSYMBOL_server_fake_dsa = 480, /* server_fake_dsa */ + YYSYMBOL_server_fake_sha1 = 481, /* server_fake_sha1 */ + YYSYMBOL_server_val_log_level = 482, /* server_val_log_level */ + YYSYMBOL_server_val_nsec3_keysize_iterations = 483, /* server_val_nsec3_keysize_iterations */ + YYSYMBOL_server_add_holddown = 484, /* server_add_holddown */ + YYSYMBOL_server_del_holddown = 485, /* server_del_holddown */ + YYSYMBOL_server_keep_missing = 486, /* server_keep_missing */ + YYSYMBOL_server_permit_small_holddown = 487, /* server_permit_small_holddown */ + YYSYMBOL_server_key_cache_size = 488, /* server_key_cache_size */ + YYSYMBOL_server_key_cache_slabs = 489, /* server_key_cache_slabs */ + YYSYMBOL_server_neg_cache_size = 490, /* server_neg_cache_size */ + YYSYMBOL_server_local_zone = 491, /* server_local_zone */ + YYSYMBOL_server_local_data = 492, /* server_local_data */ + YYSYMBOL_server_local_data_ptr = 493, /* server_local_data_ptr */ + YYSYMBOL_server_minimal_responses = 494, /* server_minimal_responses */ + YYSYMBOL_server_rrset_roundrobin = 495, /* server_rrset_roundrobin */ + YYSYMBOL_server_unknown_server_time_limit = 496, /* server_unknown_server_time_limit */ + YYSYMBOL_server_max_udp_size = 497, /* server_max_udp_size */ + YYSYMBOL_server_dns64_prefix = 498, /* server_dns64_prefix */ + YYSYMBOL_server_dns64_synthall = 499, /* server_dns64_synthall */ + YYSYMBOL_server_dns64_ignore_aaaa = 500, /* server_dns64_ignore_aaaa */ + YYSYMBOL_server_define_tag = 501, /* server_define_tag */ + YYSYMBOL_server_local_zone_tag = 502, /* server_local_zone_tag */ + YYSYMBOL_server_access_control_tag = 503, /* server_access_control_tag */ + YYSYMBOL_server_access_control_tag_action = 504, /* server_access_control_tag_action */ + YYSYMBOL_server_access_control_tag_data = 505, /* server_access_control_tag_data */ + YYSYMBOL_server_local_zone_override = 506, /* server_local_zone_override */ + YYSYMBOL_server_access_control_view = 507, /* server_access_control_view */ + YYSYMBOL_server_response_ip_tag = 508, /* server_response_ip_tag */ + YYSYMBOL_server_ip_ratelimit = 509, /* server_ip_ratelimit */ + YYSYMBOL_server_ratelimit = 510, /* server_ratelimit */ + YYSYMBOL_server_ip_ratelimit_size = 511, /* server_ip_ratelimit_size */ + YYSYMBOL_server_ratelimit_size = 512, /* server_ratelimit_size */ + YYSYMBOL_server_ip_ratelimit_slabs = 513, /* server_ip_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_slabs = 514, /* server_ratelimit_slabs */ + YYSYMBOL_server_ratelimit_for_domain = 515, /* server_ratelimit_for_domain */ + YYSYMBOL_server_ratelimit_below_domain = 516, /* server_ratelimit_below_domain */ + YYSYMBOL_server_ip_ratelimit_factor = 517, /* server_ip_ratelimit_factor */ + YYSYMBOL_server_ratelimit_factor = 518, /* server_ratelimit_factor */ + YYSYMBOL_server_low_rtt = 519, /* server_low_rtt */ + YYSYMBOL_server_fast_server_num = 520, /* server_fast_server_num */ + YYSYMBOL_server_fast_server_permil = 521, /* server_fast_server_permil */ + YYSYMBOL_server_qname_minimisation = 522, /* server_qname_minimisation */ + YYSYMBOL_server_qname_minimisation_strict = 523, /* server_qname_minimisation_strict */ + YYSYMBOL_server_ipsecmod_enabled = 524, /* server_ipsecmod_enabled */ + YYSYMBOL_server_ipsecmod_ignore_bogus = 525, /* server_ipsecmod_ignore_bogus */ + YYSYMBOL_server_ipsecmod_hook = 526, /* server_ipsecmod_hook */ + YYSYMBOL_server_ipsecmod_max_ttl = 527, /* server_ipsecmod_max_ttl */ + YYSYMBOL_server_ipsecmod_whitelist = 528, /* server_ipsecmod_whitelist */ + YYSYMBOL_server_ipsecmod_strict = 529, /* server_ipsecmod_strict */ + YYSYMBOL_server_edns_client_string = 530, /* server_edns_client_string */ + YYSYMBOL_server_edns_client_string_opcode = 531, /* server_edns_client_string_opcode */ + YYSYMBOL_stub_name = 532, /* stub_name */ + YYSYMBOL_stub_host = 533, /* stub_host */ + YYSYMBOL_stub_addr = 534, /* stub_addr */ + YYSYMBOL_stub_first = 535, /* stub_first */ + YYSYMBOL_stub_no_cache = 536, /* stub_no_cache */ + YYSYMBOL_stub_ssl_upstream = 537, /* stub_ssl_upstream */ + YYSYMBOL_stub_prime = 538, /* stub_prime */ + YYSYMBOL_forward_name = 539, /* forward_name */ + YYSYMBOL_forward_host = 540, /* forward_host */ + YYSYMBOL_forward_addr = 541, /* forward_addr */ + YYSYMBOL_forward_first = 542, /* forward_first */ + YYSYMBOL_forward_no_cache = 543, /* forward_no_cache */ + YYSYMBOL_forward_ssl_upstream = 544, /* forward_ssl_upstream */ + YYSYMBOL_auth_name = 545, /* auth_name */ + YYSYMBOL_auth_zonefile = 546, /* auth_zonefile */ + YYSYMBOL_auth_master = 547, /* auth_master */ + YYSYMBOL_auth_url = 548, /* auth_url */ + YYSYMBOL_auth_allow_notify = 549, /* auth_allow_notify */ + YYSYMBOL_auth_for_downstream = 550, /* auth_for_downstream */ + YYSYMBOL_auth_for_upstream = 551, /* auth_for_upstream */ + YYSYMBOL_auth_fallback_enabled = 552, /* auth_fallback_enabled */ + YYSYMBOL_view_name = 553, /* view_name */ + YYSYMBOL_view_local_zone = 554, /* view_local_zone */ + YYSYMBOL_view_response_ip = 555, /* view_response_ip */ + YYSYMBOL_view_response_ip_data = 556, /* view_response_ip_data */ + YYSYMBOL_view_local_data = 557, /* view_local_data */ + YYSYMBOL_view_local_data_ptr = 558, /* view_local_data_ptr */ + YYSYMBOL_view_first = 559, /* view_first */ + YYSYMBOL_rcstart = 560, /* rcstart */ + YYSYMBOL_contents_rc = 561, /* contents_rc */ + YYSYMBOL_content_rc = 562, /* content_rc */ + YYSYMBOL_rc_control_enable = 563, /* rc_control_enable */ + YYSYMBOL_rc_control_port = 564, /* rc_control_port */ + YYSYMBOL_rc_control_interface = 565, /* rc_control_interface */ + YYSYMBOL_rc_control_use_cert = 566, /* rc_control_use_cert */ + YYSYMBOL_rc_server_key_file = 567, /* rc_server_key_file */ + YYSYMBOL_rc_server_cert_file = 568, /* rc_server_cert_file */ + YYSYMBOL_rc_control_key_file = 569, /* rc_control_key_file */ + YYSYMBOL_rc_control_cert_file = 570, /* rc_control_cert_file */ + YYSYMBOL_dtstart = 571, /* dtstart */ + YYSYMBOL_contents_dt = 572, /* contents_dt */ + YYSYMBOL_content_dt = 573, /* content_dt */ + YYSYMBOL_dt_dnstap_enable = 574, /* dt_dnstap_enable */ + YYSYMBOL_dt_dnstap_bidirectional = 575, /* dt_dnstap_bidirectional */ + YYSYMBOL_dt_dnstap_socket_path = 576, /* dt_dnstap_socket_path */ + YYSYMBOL_dt_dnstap_ip = 577, /* dt_dnstap_ip */ + YYSYMBOL_dt_dnstap_tls = 578, /* dt_dnstap_tls */ + YYSYMBOL_dt_dnstap_tls_server_name = 579, /* dt_dnstap_tls_server_name */ + YYSYMBOL_dt_dnstap_tls_cert_bundle = 580, /* dt_dnstap_tls_cert_bundle */ + YYSYMBOL_dt_dnstap_tls_client_key_file = 581, /* dt_dnstap_tls_client_key_file */ + YYSYMBOL_dt_dnstap_tls_client_cert_file = 582, /* dt_dnstap_tls_client_cert_file */ + YYSYMBOL_dt_dnstap_send_identity = 583, /* dt_dnstap_send_identity */ + YYSYMBOL_dt_dnstap_send_version = 584, /* dt_dnstap_send_version */ + YYSYMBOL_dt_dnstap_identity = 585, /* dt_dnstap_identity */ + YYSYMBOL_dt_dnstap_version = 586, /* dt_dnstap_version */ + YYSYMBOL_dt_dnstap_log_resolver_query_messages = 587, /* dt_dnstap_log_resolver_query_messages */ + YYSYMBOL_dt_dnstap_log_resolver_response_messages = 588, /* dt_dnstap_log_resolver_response_messages */ + YYSYMBOL_dt_dnstap_log_client_query_messages = 589, /* dt_dnstap_log_client_query_messages */ + YYSYMBOL_dt_dnstap_log_client_response_messages = 590, /* dt_dnstap_log_client_response_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_query_messages = 591, /* dt_dnstap_log_forwarder_query_messages */ + YYSYMBOL_dt_dnstap_log_forwarder_response_messages = 592, /* dt_dnstap_log_forwarder_response_messages */ + YYSYMBOL_pythonstart = 593, /* pythonstart */ + YYSYMBOL_contents_py = 594, /* contents_py */ + YYSYMBOL_content_py = 595, /* content_py */ + YYSYMBOL_py_script = 596, /* py_script */ + YYSYMBOL_dynlibstart = 597, /* dynlibstart */ + YYSYMBOL_contents_dl = 598, /* contents_dl */ + YYSYMBOL_content_dl = 599, /* content_dl */ + YYSYMBOL_dl_file = 600, /* dl_file */ + YYSYMBOL_server_disable_dnssec_lame_check = 601, /* server_disable_dnssec_lame_check */ + YYSYMBOL_server_log_identity = 602, /* server_log_identity */ + YYSYMBOL_server_response_ip = 603, /* server_response_ip */ + YYSYMBOL_server_response_ip_data = 604, /* server_response_ip_data */ + YYSYMBOL_dnscstart = 605, /* dnscstart */ + YYSYMBOL_contents_dnsc = 606, /* contents_dnsc */ + YYSYMBOL_content_dnsc = 607, /* content_dnsc */ + YYSYMBOL_dnsc_dnscrypt_enable = 608, /* dnsc_dnscrypt_enable */ + YYSYMBOL_dnsc_dnscrypt_port = 609, /* dnsc_dnscrypt_port */ + YYSYMBOL_dnsc_dnscrypt_provider = 610, /* dnsc_dnscrypt_provider */ + YYSYMBOL_dnsc_dnscrypt_provider_cert = 611, /* dnsc_dnscrypt_provider_cert */ + YYSYMBOL_dnsc_dnscrypt_provider_cert_rotated = 612, /* dnsc_dnscrypt_provider_cert_rotated */ + YYSYMBOL_dnsc_dnscrypt_secret_key = 613, /* dnsc_dnscrypt_secret_key */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_size = 614, /* dnsc_dnscrypt_shared_secret_cache_size */ + YYSYMBOL_dnsc_dnscrypt_shared_secret_cache_slabs = 615, /* dnsc_dnscrypt_shared_secret_cache_slabs */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_size = 616, /* dnsc_dnscrypt_nonce_cache_size */ + YYSYMBOL_dnsc_dnscrypt_nonce_cache_slabs = 617, /* dnsc_dnscrypt_nonce_cache_slabs */ + YYSYMBOL_cachedbstart = 618, /* cachedbstart */ + YYSYMBOL_contents_cachedb = 619, /* contents_cachedb */ + YYSYMBOL_content_cachedb = 620, /* content_cachedb */ + YYSYMBOL_cachedb_backend_name = 621, /* cachedb_backend_name */ + YYSYMBOL_cachedb_secret_seed = 622, /* cachedb_secret_seed */ + YYSYMBOL_redis_server_host = 623, /* redis_server_host */ + YYSYMBOL_redis_server_port = 624, /* redis_server_port */ + YYSYMBOL_redis_timeout = 625, /* redis_timeout */ + YYSYMBOL_redis_expire_records = 626, /* redis_expire_records */ + YYSYMBOL_server_tcp_connection_limit = 627, /* server_tcp_connection_limit */ + YYSYMBOL_ipsetstart = 628, /* ipsetstart */ + YYSYMBOL_contents_ipset = 629, /* contents_ipset */ + YYSYMBOL_content_ipset = 630, /* content_ipset */ + YYSYMBOL_ipset_name_v4 = 631, /* ipset_name_v4 */ + YYSYMBOL_ipset_name_v6 = 632 /* ipset_name_v6 */ }; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif +typedef enum yysymbol_kind_t yysymbol_kind_t; -extern YYSTYPE yylval; - -int yyparse (void); - -#endif /* !YY_YY_UTIL_CONFIGPARSER_H_INCLUDED */ - #ifdef short # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -804,7 +851,20 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -818,22 +878,21 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) + +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -845,11 +904,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -862,10 +921,22 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + #define YY_ASSERT(E) ((void) (0 && (E))) -#if ! defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /* The parser invokes alloca or malloc; define the necessary symbols. */ @@ -930,8 +1001,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif # endif -#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ - +#endif /* !defined yyoverflow */ #if (! defined yyoverflow \ && (! defined __cplusplus \ @@ -940,17 +1010,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -963,11 +1033,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -979,12 +1049,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -996,28 +1066,31 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 641 +#define YYLAST 642 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 303 +#define YYNTOKENS 304 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 328 +#define YYNNTS 329 /* YYNRULES -- Number of rules. */ -#define YYNRULES 632 +#define YYNRULES 634 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 939 +#define YYNSTATES 942 + +/* YYMAXUTOK -- Last valid token kind. */ +#define YYMAXUTOK 558 -#define YYUNDEFTOK 2 -#define YYMAXUTOK 557 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ -#define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +#define YYTRANSLATE(YYX) \ + (0 <= (YYX) && (YYX) <= YYMAXUTOK \ + ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \ + : YYSYMBOL_YYUNDEF) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint16 yytranslate[] = +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1074,12 +1147,12 @@ static const yytype_uint16 yytranslate[] = 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 + 295, 296, 297, 298, 299, 300, 301, 302, 303 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { 0, 185, 185, 185, 186, 186, 187, 187, 188, 188, 188, 189, 189, 190, 190, 191, 191, 192, 194, 200, @@ -1103,61 +1176,68 @@ static const yytype_uint16 yyrline[] = 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, 284, 285, 285, 286, 286, 287, 287, 288, 288, 289, 289, 289, 290, 290, 290, 291, 291, 291, 292, 292, - 293, 293, 294, 294, 295, 295, 296, 298, 310, 311, - 312, 312, 312, 312, 312, 313, 313, 315, 327, 328, - 329, 329, 329, 329, 330, 330, 332, 346, 347, 348, - 348, 348, 348, 349, 349, 349, 351, 368, 369, 370, - 370, 370, 370, 371, 371, 371, 372, 375, 394, 411, - 419, 429, 437, 454, 455, 456, 456, 456, 456, 456, - 457, 457, 457, 458, 458, 460, 469, 478, 489, 498, - 507, 516, 527, 536, 548, 562, 577, 588, 605, 622, - 639, 656, 671, 686, 699, 714, 723, 732, 741, 750, - 759, 768, 777, 786, 795, 804, 813, 822, 831, 840, - 853, 862, 875, 884, 893, 902, 909, 916, 925, 932, - 941, 949, 956, 963, 971, 980, 988, 1004, 1012, 1020, - 1028, 1036, 1044, 1053, 1062, 1076, 1085, 1094, 1103, 1112, - 1121, 1130, 1137, 1144, 1170, 1178, 1185, 1192, 1199, 1206, - 1214, 1222, 1230, 1237, 1248, 1259, 1266, 1275, 1284, 1293, - 1300, 1307, 1315, 1323, 1333, 1343, 1353, 1367, 1375, 1388, - 1399, 1407, 1420, 1429, 1438, 1447, 1456, 1466, 1476, 1484, - 1497, 1506, 1514, 1523, 1531, 1544, 1553, 1563, 1570, 1580, - 1590, 1600, 1610, 1620, 1630, 1640, 1650, 1657, 1664, 1671, - 1680, 1689, 1698, 1707, 1714, 1724, 1744, 1751, 1769, 1782, - 1795, 1804, 1813, 1822, 1831, 1841, 1851, 1862, 1871, 1880, - 1889, 1898, 1907, 1916, 1929, 1942, 1951, 1958, 1967, 1976, - 1985, 1994, 2002, 2015, 2023, 2064, 2071, 2086, 2096, 2106, - 2113, 2120, 2127, 2136, 2144, 2158, 2179, 2200, 2212, 2224, - 2236, 2245, 2266, 2276, 2285, 2293, 2301, 2314, 2327, 2342, - 2357, 2366, 2375, 2381, 2390, 2399, 2409, 2419, 2432, 2445, - 2457, 2471, 2483, 2497, 2506, 2518, 2528, 2535, 2542, 2551, - 2560, 2570, 2580, 2590, 2597, 2604, 2613, 2622, 2632, 2642, - 2649, 2656, 2663, 2671, 2681, 2691, 2701, 2711, 2750, 2760, - 2768, 2776, 2791, 2800, 2805, 2806, 2807, 2807, 2807, 2808, - 2808, 2808, 2809, 2809, 2811, 2821, 2830, 2837, 2844, 2851, - 2858, 2865, 2872, 2877, 2878, 2879, 2879, 2879, 2880, 2880, - 2880, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, 2886, - 2887, 2888, 2889, 2890, 2892, 2901, 2911, 2918, 2925, 2934, - 2941, 2948, 2955, 2962, 2971, 2980, 2987, 2994, 3004, 3014, - 3024, 3034, 3044, 3054, 3059, 3060, 3061, 3063, 3069, 3074, - 3075, 3076, 3078, 3084, 3094, 3101, 3110, 3118, 3123, 3124, - 3126, 3126, 3126, 3127, 3127, 3128, 3129, 3130, 3131, 3132, - 3134, 3144, 3153, 3160, 3169, 3176, 3185, 3193, 3206, 3214, - 3227, 3232, 3233, 3234, 3234, 3235, 3235, 3235, 3236, 3238, - 3250, 3262, 3274, 3289, 3302, 3315, 3326, 3331, 3332, 3333, - 3333, 3335, 3350 + 293, 293, 294, 294, 295, 295, 296, 296, 298, 310, + 311, 312, 312, 312, 312, 312, 313, 313, 315, 327, + 328, 329, 329, 329, 329, 330, 330, 332, 346, 347, + 348, 348, 348, 348, 349, 349, 349, 351, 368, 369, + 370, 370, 370, 370, 371, 371, 371, 372, 375, 394, + 411, 419, 429, 437, 454, 455, 456, 456, 456, 456, + 456, 457, 457, 457, 458, 458, 460, 469, 478, 489, + 498, 507, 516, 527, 536, 548, 562, 577, 588, 605, + 622, 639, 656, 671, 686, 699, 714, 723, 732, 741, + 750, 759, 768, 777, 786, 795, 804, 813, 822, 831, + 840, 853, 862, 875, 884, 893, 902, 909, 916, 925, + 932, 941, 949, 956, 963, 971, 980, 988, 1004, 1012, + 1020, 1028, 1036, 1044, 1053, 1062, 1076, 1085, 1094, 1103, + 1112, 1121, 1130, 1137, 1144, 1170, 1178, 1185, 1192, 1199, + 1206, 1214, 1222, 1230, 1237, 1248, 1259, 1266, 1275, 1284, + 1293, 1300, 1307, 1323, 1331, 1339, 1349, 1359, 1369, 1383, + 1391, 1404, 1415, 1423, 1436, 1445, 1454, 1463, 1472, 1482, + 1492, 1500, 1513, 1522, 1530, 1539, 1547, 1560, 1569, 1579, + 1586, 1596, 1606, 1616, 1626, 1636, 1646, 1656, 1666, 1673, + 1680, 1687, 1696, 1705, 1714, 1723, 1730, 1740, 1760, 1767, + 1785, 1798, 1811, 1820, 1829, 1838, 1847, 1857, 1867, 1878, + 1887, 1896, 1905, 1914, 1923, 1932, 1945, 1958, 1967, 1974, + 1983, 1992, 2001, 2010, 2018, 2031, 2039, 2080, 2087, 2102, + 2112, 2122, 2129, 2136, 2143, 2152, 2160, 2174, 2195, 2216, + 2228, 2240, 2252, 2261, 2282, 2292, 2301, 2309, 2317, 2330, + 2343, 2358, 2373, 2382, 2391, 2397, 2406, 2415, 2425, 2435, + 2448, 2461, 2473, 2487, 2499, 2513, 2522, 2534, 2544, 2551, + 2558, 2567, 2576, 2586, 2596, 2606, 2613, 2620, 2629, 2638, + 2648, 2658, 2665, 2672, 2679, 2687, 2697, 2707, 2717, 2727, + 2766, 2776, 2784, 2792, 2807, 2816, 2821, 2822, 2823, 2823, + 2823, 2824, 2824, 2824, 2825, 2825, 2827, 2837, 2846, 2853, + 2860, 2867, 2874, 2881, 2888, 2893, 2894, 2895, 2895, 2895, + 2896, 2896, 2896, 2897, 2898, 2898, 2899, 2899, 2900, 2900, + 2901, 2902, 2903, 2904, 2905, 2906, 2908, 2917, 2927, 2934, + 2941, 2950, 2957, 2964, 2971, 2978, 2987, 2996, 3003, 3010, + 3020, 3030, 3040, 3050, 3060, 3070, 3075, 3076, 3077, 3079, + 3085, 3090, 3091, 3092, 3094, 3100, 3110, 3117, 3126, 3134, + 3139, 3140, 3142, 3142, 3142, 3143, 3143, 3144, 3145, 3146, + 3147, 3148, 3150, 3160, 3169, 3176, 3185, 3192, 3201, 3209, + 3222, 3230, 3243, 3248, 3249, 3250, 3250, 3251, 3251, 3251, + 3252, 3254, 3266, 3278, 3290, 3305, 3318, 3331, 3342, 3347, + 3348, 3349, 3349, 3351, 3366 }; #endif -#if YYDEBUG || YYERROR_VERBOSE || 0 +/** Accessing symbol of state STATE. */ +#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State]) + +#if YYDEBUG || 0 +/* The user-facing name of the symbol whose (internal) number is + YYSYMBOL. No bounds checking. */ +static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED; + /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. First, the terminals, then, starting at YYNTOKENS, nonterminals. */ static const char *const yytname[] = { - "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", - "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", - "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", - "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "\"end of file\"", "error", "\"invalid token\"", "SPACE", "LETTER", + "NEWLINE", "COMMENT", "COLON", "ANY", "ZONESTR", "STRING_ARG", + "VAR_FORCE_TOPLEVEL", "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", + "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", + "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", @@ -1265,7 +1345,7 @@ static const char *const yytname[] = "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_STRING", - "VAR_EDNS_CLIENT_STRING_OPCODE", "$accept", "toplevelvars", + "VAR_EDNS_CLIENT_STRING_OPCODE", "VAR_NSID", "$accept", "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", "contents_server", "content_server", "stubstart", "contents_stub", "content_stub", "forwardstart", "contents_forward", "content_forward", "viewstart", @@ -1307,7 +1387,7 @@ static const char *const yytname[] = "server_trust_anchor", "server_trust_anchor_signaling", "server_root_key_sentinel", "server_domain_insecure", "server_hide_identity", "server_hide_version", "server_hide_trustanchor", - "server_identity", "server_version", "server_so_rcvbuf", + "server_identity", "server_version", "server_nsid", "server_so_rcvbuf", "server_so_sndbuf", "server_so_reuseport", "server_ip_transparent", "server_ip_freebind", "server_ip_dscp", "server_stream_wait_size", "server_edns_buffer_size", "server_msg_buffer_size", @@ -1398,12 +1478,18 @@ static const char *const yytname[] = "server_tcp_connection_limit", "ipsetstart", "contents_ipset", "content_ipset", "ipset_name_v4", "ipset_name_v6", YY_NULLPTR }; + +static const char * +yysymbol_name (yysymbol_kind_t yysymbol) +{ + return yytname[yysymbol]; +} #endif -# ifdef YYPRINT +#ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +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, @@ -1435,18 +1521,18 @@ static const yytype_uint16 yytoknum[] = 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 + 555, 556, 557, 558 }; -# endif +#endif -#define YYPACT_NINF -291 +#define YYPACT_NINF (-291) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-291))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1478,6 +1564,7 @@ static const yytype_int16 yypact[] = 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 280, 281, 282, 284, 285, 286, 288, 322, 323, 324, 325, 329, 330, + 331, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, @@ -1497,67 +1584,67 @@ static const yytype_int16 yypact[] = -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, 373, 374, + 375, 376, 377, 378, 379, -291, -291, -291, -291, -291, + -291, -291, -291, 380, 381, 385, 389, 390, 415, -291, + -291, -291, -291, -291, -291, -291, 416, 417, 426, 439, + 440, 441, 442, -291, -291, -291, -291, -291, -291, -291, + -291, 443, 444, 445, 446, 447, 448, 449, 450, -291, + -291, -291, -291, -291, -291, -291, -291, -291, 451, 452, + 453, 454, 455, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, 456, 457, 458, 498, 500, 516, + 517, 518, -291, -291, -291, -291, -291, -291, -291, -291, + -291, 519, 520, 521, 522, 523, 524, 525, 526, 533, + 534, 535, 536, 537, 538, 539, 541, 542, 543, 544, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 331, 373, 374, 375, - 376, 377, 378, -291, -291, -291, -291, -291, -291, -291, - -291, 379, 380, 381, 385, 389, 390, -291, -291, -291, - -291, -291, -291, -291, 415, 416, 417, 426, 439, 440, - 441, -291, -291, -291, -291, -291, -291, -291, -291, 442, - 443, 444, 445, 446, 447, 448, 449, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 450, 451, 452, 453, - 454, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 455, 456, 457, 458, 498, 500, 516, 517, - -291, -291, -291, -291, -291, -291, -291, -291, -291, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 533, 534, - 535, 536, 537, 538, 539, 541, 542, 543, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, 544, -291, - -291, 545, -291, -291, 546, 547, 550, 553, 556, 557, - 566, 567, 568, 570, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, 571, 572, 573, 574, 575, - 576, -291, -291, -291, -291, -291, -291, -291, 577, 580, + 545, -291, -291, 546, -291, -291, 547, 550, 553, 556, + 557, 566, 567, 568, 570, 571, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, 572, 573, 574, + 575, 576, 577, -291, -291, -291, -291, -291, -291, -291, + 581, 582, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, 583, 584, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, 581, 582, -291, -291, -291, -291, -291, + -291, 585, 586, 587, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, 588, 589, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, 590, 591, 592, 593, 594, + 595, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + -291, -291, -291, -291, -291, -291, -291, -291, 596, -291, + -291, -291, -291, -291, -291, -291, -291, -291, 597, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, 583, - 584, 585, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 586, 587, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, 588, 589, 590, 591, 592, 593, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 594, -291, -291, -291, - -291, -291, -291, -291, -291, -291, 595, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, 596, -291, -291, 597, 598, -291, -291, -291, + -291, -291, -291, -291, -291, 598, -291, -291, 599, 600, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, 599, 600, 601, - -291, -291, -291, -291, -291, -291, -291, -291, -291 + -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, + 601, 602, 603, -291, -291, -291, -291, -291, -291, -291, + -291, -291 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 227, 237, 513, 573, 532, - 246, 587, 610, 256, 626, 272, 578, 3, 17, 21, - 229, 239, 248, 258, 274, 515, 534, 575, 580, 589, - 612, 628, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 228, 238, 515, 575, 534, + 247, 589, 612, 257, 628, 273, 580, 3, 17, 21, + 230, 240, 249, 259, 275, 517, 536, 577, 582, 591, + 614, 630, 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, @@ -1579,75 +1666,76 @@ static const yytype_uint16 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, 86, 89, 98, 195, 196, 24, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 37, - 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, - 31, 28, 29, 32, 33, 34, 35, 36, 121, 207, - 122, 124, 125, 126, 209, 214, 210, 221, 222, 223, - 224, 127, 128, 129, 130, 131, 132, 133, 191, 87, - 76, 102, 119, 120, 219, 216, 123, 38, 39, 40, - 41, 42, 78, 92, 93, 108, 64, 74, 65, 199, - 200, 103, 58, 59, 198, 60, 61, 112, 116, 137, - 147, 174, 150, 220, 113, 71, 43, 44, 45, 100, - 138, 139, 140, 141, 46, 47, 49, 50, 52, 53, - 51, 145, 151, 54, 55, 56, 62, 81, 117, 95, - 146, 88, 170, 96, 97, 114, 115, 217, 101, 57, - 79, 82, 63, 66, 104, 105, 80, 171, 106, 67, - 68, 69, 208, 118, 184, 185, 186, 187, 188, 189, - 197, 107, 75, 109, 110, 111, 172, 72, 73, 94, - 83, 84, 99, 134, 135, 218, 136, 142, 143, 144, - 175, 176, 178, 180, 181, 179, 182, 192, 148, 149, - 154, 155, 152, 153, 156, 157, 159, 158, 211, 213, - 212, 173, 183, 201, 203, 202, 204, 205, 206, 225, - 226, 177, 190, 193, 194, 215, 0, 0, 0, 0, - 0, 0, 0, 228, 230, 231, 232, 234, 235, 236, - 233, 0, 0, 0, 0, 0, 0, 238, 240, 241, - 242, 243, 244, 245, 0, 0, 0, 0, 0, 0, - 0, 247, 249, 250, 253, 254, 251, 255, 252, 0, - 0, 0, 0, 0, 0, 0, 0, 257, 259, 260, - 261, 262, 266, 263, 264, 265, 0, 0, 0, 0, - 0, 277, 281, 282, 283, 284, 273, 275, 276, 278, - 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, - 514, 516, 518, 517, 523, 519, 520, 521, 522, 0, + 0, 20, 22, 23, 86, 89, 98, 195, 196, 24, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 37, 77, 25, 90, 91, 48, 70, 85, 26, 27, + 30, 31, 28, 29, 32, 33, 34, 35, 36, 121, + 207, 122, 124, 125, 126, 209, 214, 210, 221, 222, + 223, 224, 127, 128, 129, 130, 131, 132, 133, 191, + 87, 76, 102, 119, 120, 219, 216, 123, 38, 39, + 40, 41, 42, 78, 92, 93, 108, 64, 74, 65, + 199, 200, 103, 58, 59, 198, 60, 61, 227, 112, + 116, 137, 147, 174, 150, 220, 113, 71, 43, 44, + 45, 100, 138, 139, 140, 141, 46, 47, 49, 50, + 52, 53, 51, 145, 151, 54, 55, 56, 62, 81, + 117, 95, 146, 88, 170, 96, 97, 114, 115, 217, + 101, 57, 79, 82, 63, 66, 104, 105, 80, 171, + 106, 67, 68, 69, 208, 118, 184, 185, 186, 187, + 188, 189, 197, 107, 75, 109, 110, 111, 172, 72, + 73, 94, 83, 84, 99, 134, 135, 218, 136, 142, + 143, 144, 175, 176, 178, 180, 181, 179, 182, 192, + 148, 149, 154, 155, 152, 153, 156, 157, 159, 158, + 211, 213, 212, 173, 183, 201, 203, 202, 204, 205, + 206, 225, 226, 177, 190, 193, 194, 215, 0, 0, + 0, 0, 0, 0, 0, 229, 231, 232, 233, 235, + 236, 237, 234, 0, 0, 0, 0, 0, 0, 239, + 241, 242, 243, 244, 245, 246, 0, 0, 0, 0, + 0, 0, 0, 248, 250, 251, 254, 255, 252, 256, + 253, 0, 0, 0, 0, 0, 0, 0, 0, 258, + 260, 261, 262, 263, 267, 264, 265, 266, 0, 0, + 0, 0, 0, 278, 282, 283, 284, 285, 274, 276, + 277, 279, 280, 281, 0, 0, 0, 0, 0, 0, + 0, 0, 516, 518, 520, 519, 525, 521, 522, 523, + 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 533, 535, - 537, 536, 538, 539, 540, 541, 542, 543, 544, 545, - 546, 547, 548, 549, 550, 551, 552, 553, 0, 574, - 576, 0, 579, 581, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 588, 590, 591, 592, 594, 595, - 593, 596, 597, 598, 599, 0, 0, 0, 0, 0, - 0, 611, 613, 614, 615, 616, 617, 618, 0, 0, - 627, 629, 630, 286, 285, 292, 305, 303, 315, 311, - 312, 316, 313, 314, 317, 318, 319, 320, 321, 351, - 352, 353, 354, 355, 380, 381, 382, 388, 389, 308, - 390, 391, 394, 392, 393, 397, 398, 399, 413, 366, - 367, 369, 370, 400, 416, 360, 362, 417, 423, 424, - 425, 309, 379, 441, 442, 361, 436, 344, 304, 356, - 414, 420, 401, 0, 0, 445, 310, 287, 343, 405, - 288, 306, 307, 357, 358, 443, 403, 407, 408, 289, - 446, 383, 412, 345, 365, 418, 419, 422, 435, 359, - 439, 437, 438, 371, 378, 409, 410, 372, 373, 402, - 427, 346, 347, 350, 322, 324, 325, 326, 327, 328, - 335, 336, 337, 338, 339, 340, 341, 447, 448, 450, - 384, 385, 386, 387, 395, 396, 451, 452, 453, 0, - 0, 0, 404, 374, 376, 583, 462, 466, 464, 463, - 467, 465, 0, 0, 470, 471, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 406, 421, 440, 475, - 476, 375, 454, 0, 0, 0, 0, 0, 0, 428, - 429, 430, 431, 432, 433, 434, 584, 368, 363, 426, - 342, 290, 291, 364, 477, 479, 478, 480, 481, 482, - 323, 330, 472, 474, 473, 329, 0, 349, 411, 449, - 348, 377, 331, 332, 334, 333, 0, 484, 485, 486, - 487, 491, 490, 488, 489, 492, 493, 494, 495, 497, - 496, 506, 0, 510, 511, 0, 0, 512, 498, 504, - 499, 500, 501, 503, 505, 502, 267, 268, 269, 270, - 271, 524, 526, 525, 528, 529, 530, 531, 527, 554, - 556, 557, 558, 559, 560, 561, 562, 563, 564, 555, - 565, 566, 567, 568, 569, 570, 571, 572, 577, 582, - 600, 601, 602, 605, 603, 604, 606, 607, 608, 609, - 619, 620, 621, 622, 623, 624, 631, 632, 415, 444, - 461, 585, 586, 468, 469, 455, 456, 0, 0, 0, - 460, 625, 483, 507, 508, 509, 459, 457, 458 + 535, 537, 539, 538, 540, 541, 542, 543, 544, 545, + 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, + 0, 576, 578, 0, 581, 583, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 590, 592, 593, 594, + 596, 597, 595, 598, 599, 600, 601, 0, 0, 0, + 0, 0, 0, 613, 615, 616, 617, 618, 619, 620, + 0, 0, 629, 631, 632, 287, 286, 293, 306, 304, + 316, 312, 313, 317, 314, 315, 318, 319, 320, 321, + 322, 352, 353, 354, 355, 356, 382, 383, 384, 390, + 391, 309, 392, 393, 396, 394, 395, 399, 400, 401, + 415, 367, 368, 370, 371, 402, 418, 361, 363, 419, + 425, 426, 427, 310, 381, 443, 444, 362, 438, 345, + 305, 357, 416, 422, 403, 0, 0, 447, 311, 288, + 344, 407, 289, 307, 308, 358, 359, 445, 405, 409, + 410, 290, 448, 385, 414, 346, 366, 420, 421, 424, + 437, 360, 441, 439, 440, 373, 380, 411, 412, 374, + 375, 404, 429, 347, 348, 351, 323, 325, 326, 327, + 328, 329, 336, 337, 338, 339, 340, 341, 342, 449, + 450, 452, 386, 387, 388, 389, 397, 398, 453, 454, + 455, 0, 0, 0, 406, 376, 378, 585, 464, 468, + 466, 465, 469, 467, 0, 0, 472, 473, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 408, 423, + 442, 477, 478, 377, 456, 0, 0, 0, 0, 0, + 0, 430, 431, 432, 433, 434, 435, 436, 586, 369, + 364, 428, 343, 291, 292, 365, 479, 481, 480, 482, + 483, 484, 324, 331, 474, 476, 475, 330, 0, 350, + 413, 451, 349, 379, 332, 333, 335, 334, 0, 486, + 372, 487, 488, 489, 493, 492, 490, 491, 494, 495, + 496, 497, 499, 498, 508, 0, 512, 513, 0, 0, + 514, 500, 506, 501, 502, 503, 505, 507, 504, 268, + 269, 270, 271, 272, 526, 528, 527, 530, 531, 532, + 533, 529, 556, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 557, 567, 568, 569, 570, 571, 572, 573, + 574, 579, 584, 602, 603, 604, 607, 605, 606, 608, + 609, 610, 611, 621, 622, 623, 624, 625, 626, 633, + 634, 417, 446, 463, 587, 588, 470, 471, 457, 458, + 0, 0, 0, 462, 627, 485, 509, 510, 511, 461, + 459, 460 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1677,7 +1765,7 @@ static const yytype_int16 yypgoto[] = -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - 578, 579, 602, 603, 604, -291, -291, -291, -291, -291, + -291, 578, 579, 580, 604, 605, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, @@ -1685,117 +1773,117 @@ static const yytype_int16 yypgoto[] = -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291 + -291, -291, -291, -291, -291, -291, -291, -291, -291 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 250, 20, 33, 463, - 21, 34, 477, 22, 35, 491, 23, 36, 507, 521, - 522, 523, 524, 525, 24, 37, 526, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 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, 464, 465, 466, - 467, 468, 469, 470, 478, 479, 480, 481, 482, 483, - 508, 509, 510, 511, 512, 513, 514, 515, 492, 493, - 494, 495, 496, 497, 498, 25, 38, 540, 541, 542, - 543, 544, 545, 546, 547, 548, 26, 39, 568, 569, - 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, - 580, 581, 582, 583, 584, 585, 586, 587, 27, 40, - 589, 590, 28, 41, 592, 593, 451, 452, 453, 454, - 29, 42, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 613, 614, 30, 43, 621, 622, 623, 624, 625, - 626, 627, 455, 31, 44, 630, 631, 632 + -1, 1, 17, 18, 19, 32, 251, 20, 33, 465, + 21, 34, 479, 22, 35, 493, 23, 36, 509, 523, + 524, 525, 526, 527, 24, 37, 528, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 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, 466, 467, + 468, 469, 470, 471, 472, 480, 481, 482, 483, 484, + 485, 510, 511, 512, 513, 514, 515, 516, 517, 494, + 495, 496, 497, 498, 499, 500, 25, 38, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 26, 39, 570, + 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 27, + 40, 591, 592, 28, 41, 594, 595, 453, 454, 455, + 456, 29, 42, 606, 607, 608, 609, 610, 611, 612, + 613, 614, 615, 616, 30, 43, 623, 624, 625, 626, + 627, 628, 629, 457, 31, 44, 632, 633, 634 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = +static const yytype_int16 yytable[] = { - 2, 499, 484, 456, 588, 457, 458, 471, 628, 629, - 591, 3, 4, 633, 634, 472, 473, 615, 616, 617, - 618, 619, 620, 635, 499, 594, 595, 596, 597, 598, - 599, 600, 601, 602, 603, 636, 637, 638, 485, 486, - 639, 640, 641, 642, 643, 644, 5, 645, 646, 647, - 648, 649, 6, 650, 651, 652, 653, 654, 655, 656, - 657, 658, 659, 487, 660, 661, 459, 549, 550, 551, - 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, - 562, 563, 564, 565, 566, 567, 532, 533, 534, 535, - 536, 537, 538, 539, 662, 663, 7, 460, 664, 665, - 474, 666, 475, 667, 668, 669, 670, 461, 671, 672, - 673, 674, 8, 675, 676, 677, 678, 679, 680, 681, - 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, - 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, - 488, 489, 702, 703, 704, 705, 706, 707, 708, 709, - 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, - 720, 721, 9, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, - 490, 739, 740, 741, 742, 743, 744, 745, 746, 747, - 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, - 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, - 778, 10, 501, 502, 503, 779, 780, 781, 782, 783, - 784, 785, 506, 786, 787, 788, 789, 790, 462, 11, - 791, 476, 792, 500, 793, 501, 502, 503, 504, 505, - 516, 517, 518, 519, 520, 506, 12, 794, 795, 796, - 797, 798, 799, 800, 801, 13, 802, 803, 804, 805, - 806, 807, 808, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 14, - 825, 826, 827, 15, 828, 829, 830, 0, 831, 16, + 2, 501, 486, 458, 590, 459, 460, 473, 630, 631, + 593, 3, 4, 635, 636, 474, 475, 617, 618, 619, + 620, 621, 622, 637, 501, 596, 597, 598, 599, 600, + 601, 602, 603, 604, 605, 638, 639, 640, 487, 488, + 641, 642, 643, 644, 645, 646, 5, 647, 648, 649, + 650, 651, 6, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 489, 662, 663, 461, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 565, 566, 567, 568, 569, 534, 535, 536, 537, + 538, 539, 540, 541, 664, 665, 7, 462, 666, 667, + 476, 668, 477, 669, 670, 671, 672, 463, 673, 674, + 675, 676, 8, 677, 678, 679, 680, 681, 682, 683, + 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, + 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, + 490, 491, 704, 705, 706, 707, 708, 709, 710, 711, + 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, + 722, 723, 9, 724, 725, 726, 727, 728, 729, 730, + 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, + 492, 741, 742, 743, 744, 745, 746, 747, 748, 749, + 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, + 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, + 780, 10, 503, 504, 505, 781, 782, 783, 784, 785, + 786, 787, 508, 788, 789, 790, 791, 792, 464, 11, + 793, 478, 794, 502, 795, 503, 504, 505, 506, 507, + 518, 519, 520, 521, 522, 508, 12, 796, 797, 798, + 799, 800, 801, 802, 803, 13, 804, 805, 806, 807, + 808, 809, 810, 811, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 14, + 827, 828, 829, 15, 830, 831, 832, 0, 833, 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, 832, 833, 834, 835, 77, 78, 79, 836, - 837, 838, 80, 81, 82, 83, 84, 85, 86, 87, + 75, 76, 834, 835, 836, 837, 77, 78, 79, 838, + 839, 840, 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, 839, 840, 841, 842, 843, 844, 845, - 846, 847, 121, 122, 123, 848, 124, 125, 126, 849, - 850, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 118, 119, 120, 841, 842, 843, 844, 845, 846, 847, + 848, 849, 121, 122, 123, 850, 124, 125, 126, 851, + 852, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 851, 852, 853, 151, 152, - 153, 154, 155, 156, 157, 158, 854, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 855, - 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, - 866, 867, 868, 869, 870, 871, 872, 873, 874, 171, + 146, 147, 148, 149, 150, 853, 854, 855, 151, 152, + 153, 154, 155, 156, 157, 158, 856, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 857, + 858, 859, 860, 861, 862, 863, 864, 865, 866, 867, + 868, 869, 870, 871, 872, 873, 874, 875, 876, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 875, 210, - 876, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 877, 878, 879, 880, - 881, 882, 883, 884, 885, 886, 887, 226, 227, 228, - 229, 230, 231, 888, 889, 890, 891, 892, 893, 894, - 232, 895, 896, 897, 898, 899, 900, 901, 233, 234, - 902, 235, 236, 903, 237, 238, 904, 905, 239, 240, - 241, 242, 243, 244, 245, 246, 906, 907, 908, 247, - 909, 910, 911, 912, 913, 914, 915, 916, 248, 249, - 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, - 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, - 937, 938, 0, 0, 0, 527, 528, 0, 0, 0, + 202, 203, 204, 205, 206, 207, 208, 209, 877, 210, + 878, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 226, 227, 228, + 229, 230, 231, 890, 891, 892, 893, 894, 895, 896, + 232, 897, 898, 899, 900, 901, 902, 903, 233, 234, + 904, 235, 236, 905, 237, 238, 906, 907, 239, 240, + 241, 242, 243, 244, 245, 246, 908, 909, 910, 247, + 911, 912, 913, 914, 915, 916, 917, 918, 248, 249, + 250, 919, 920, 921, 922, 923, 924, 925, 926, 927, + 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, + 938, 939, 940, 941, 0, 529, 530, 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 529, - 530, 531 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 532, 533 }; static const yytype_int16 yycheck[] = @@ -1859,23 +1947,23 @@ static const yytype_int16 yycheck[] = 10, 274, 275, 10, 277, 278, 10, 10, 281, 282, 283, 284, 285, 286, 287, 288, 10, 10, 10, 292, 10, 10, 10, 10, 10, 10, 10, 10, 301, 302, + 303, 10, 10, 10, 10, 10, 10, 10, 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, 37, 37, -1, -1, -1, + 10, 10, 10, 10, -1, 37, 37, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, - 37, 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_int16 yystos[] = { - 0, 304, 0, 11, 12, 46, 52, 96, 112, 162, - 221, 239, 256, 265, 289, 293, 299, 305, 306, 307, - 310, 313, 316, 319, 327, 558, 569, 591, 595, 603, - 616, 626, 308, 311, 314, 317, 320, 328, 559, 570, - 592, 596, 604, 617, 627, 13, 14, 15, 16, 17, + 0, 305, 0, 11, 12, 46, 52, 96, 112, 162, + 221, 239, 256, 265, 289, 293, 299, 306, 307, 308, + 311, 314, 317, 320, 328, 560, 571, 593, 597, 605, + 618, 628, 309, 312, 315, 318, 321, 329, 561, 572, + 594, 598, 606, 619, 629, 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, @@ -1896,7 +1984,7 @@ static const yytype_uint16 yystos[] = 233, 234, 235, 236, 237, 238, 250, 251, 252, 253, 254, 255, 263, 271, 272, 274, 275, 277, 278, 281, 282, 283, 284, 285, 286, 287, 288, 292, 301, 302, - 309, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 303, 310, 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, @@ -1916,25 +2004,25 @@ static const yytype_uint16 yystos[] = 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, 599, 600, 601, 602, 625, 45, 47, 48, 108, - 139, 149, 280, 312, 530, 531, 532, 533, 534, 535, - 536, 45, 53, 54, 138, 140, 279, 315, 537, 538, - 539, 540, 541, 542, 45, 81, 82, 106, 183, 184, - 223, 318, 551, 552, 553, 554, 555, 556, 557, 45, - 264, 266, 267, 268, 269, 270, 276, 321, 543, 544, - 545, 546, 547, 548, 549, 550, 294, 295, 296, 297, - 298, 322, 323, 324, 325, 326, 329, 543, 544, 545, - 546, 547, 97, 98, 99, 100, 101, 102, 103, 104, - 560, 561, 562, 563, 564, 565, 566, 567, 568, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 571, 572, + 529, 530, 531, 601, 602, 603, 604, 627, 45, 47, + 48, 108, 139, 149, 280, 313, 532, 533, 534, 535, + 536, 537, 538, 45, 53, 54, 138, 140, 279, 316, + 539, 540, 541, 542, 543, 544, 45, 81, 82, 106, + 183, 184, 223, 319, 553, 554, 555, 556, 557, 558, + 559, 45, 264, 266, 267, 268, 269, 270, 276, 322, + 545, 546, 547, 548, 549, 550, 551, 552, 294, 295, + 296, 297, 298, 323, 324, 325, 326, 327, 330, 545, + 546, 547, 548, 549, 97, 98, 99, 100, 101, 102, + 103, 104, 562, 563, 564, 565, 566, 567, 568, 569, + 570, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 588, 589, 590, 113, 593, - 594, 300, 597, 598, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 605, 606, 607, 608, 609, 610, - 611, 612, 613, 614, 615, 257, 258, 259, 260, 261, - 262, 618, 619, 620, 621, 622, 623, 624, 290, 291, - 628, 629, 630, 10, 10, 10, 10, 10, 10, 10, + 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, + 113, 595, 596, 300, 599, 600, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 607, 608, 609, 610, + 611, 612, 613, 614, 615, 616, 617, 257, 258, 259, + 260, 261, 262, 620, 621, 622, 623, 624, 625, 626, + 290, 291, 630, 631, 632, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1964,41 +2052,42 @@ static const yytype_uint16 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 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 303, 304, 304, 305, 305, 305, 305, 305, 305, - 305, 305, 305, 305, 305, 305, 305, 305, 306, 307, - 308, 308, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 310, 311, 311, - 312, 312, 312, 312, 312, 312, 312, 313, 314, 314, - 315, 315, 315, 315, 315, 315, 316, 317, 317, 318, - 318, 318, 318, 318, 318, 318, 319, 320, 320, 321, - 321, 321, 321, 321, 321, 321, 321, 322, 323, 324, - 325, 326, 327, 328, 328, 329, 329, 329, 329, 329, - 329, 329, 329, 329, 329, 330, 331, 332, 333, 334, + 0, 304, 305, 305, 306, 306, 306, 306, 306, 306, + 306, 306, 306, 306, 306, 306, 306, 306, 307, 308, + 309, 309, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 310, 310, 310, 310, 310, 310, 310, 310, 311, 312, + 312, 313, 313, 313, 313, 313, 313, 313, 314, 315, + 315, 316, 316, 316, 316, 316, 316, 317, 318, 318, + 319, 319, 319, 319, 319, 319, 319, 320, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 323, 324, + 325, 326, 327, 328, 329, 329, 330, 330, 330, 330, + 330, 330, 330, 330, 330, 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, @@ -2021,23 +2110,23 @@ static const yytype_uint16 yyr1[] = 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, 559, 560, 560, 560, 560, - 560, 560, 560, 560, 561, 562, 563, 564, 565, 566, - 567, 568, 569, 570, 570, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, - 571, 571, 571, 571, 572, 573, 574, 575, 576, 577, + 555, 556, 557, 558, 559, 560, 561, 561, 562, 562, + 562, 562, 562, 562, 562, 562, 563, 564, 565, 566, + 567, 568, 569, 570, 571, 572, 572, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, + 573, 573, 573, 573, 573, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 592, 593, 594, 595, 596, - 596, 597, 598, 599, 600, 601, 602, 603, 604, 604, - 605, 605, 605, 605, 605, 605, 605, 605, 605, 605, - 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 617, 617, 618, 618, 618, 618, 618, 618, 619, - 620, 621, 622, 623, 624, 625, 626, 627, 627, 628, - 628, 629, 630 + 588, 589, 590, 591, 592, 593, 594, 594, 595, 596, + 597, 598, 598, 599, 600, 601, 602, 603, 604, 605, + 606, 606, 607, 607, 607, 607, 607, 607, 607, 607, + 607, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 617, 618, 619, 619, 620, 620, 620, 620, 620, + 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, + 629, 630, 630, 631, 632 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2061,13 +2150,13 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2080,36 +2169,36 @@ static const yytype_uint8 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, + 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 4, + 4, 4, 3, 3, 2, 2, 2, 2, 2, 2, + 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, + 3, 3, 2, 2, 2, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, - 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, - 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 1, 2, 0, 1, 2, + 1, 2, 0, 1, 2, 2, 2, 3, 3, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, - 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, - 1, 2, 2 + 1, 2, 2, 2, 2, 2, 2, 3, 1, 2, + 0, 1, 1, 2, 2 }; +enum { YYENOMEM = -2 }; + #define yyerrok (yyerrstatus = 0) #define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab @@ -2135,10 +2224,9 @@ static const yytype_uint8 yyr2[] = } \ while (0) -/* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 - +/* Backward compatibility with an undocumented macro. + Use YYerror or YYUNDEF. */ +#define YYERRCODE YYUNDEF /* Enable debugging if requested. */ @@ -2156,18 +2244,18 @@ do { \ } while (0) /* This macro is provided for backward compatibility. */ -#ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -#endif +# ifndef YY_LOCATION_PRINT +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ do { \ if (yydebug) \ { \ YYFPRINTF (stderr, "%s ", Title); \ yy_symbol_print (stderr, \ - Type, Value); \ + Kind, Value); \ YYFPRINTF (stderr, "\n"); \ } \ } while (0) @@ -2178,17 +2266,20 @@ do { \ `-----------------------------------*/ static void -yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_value_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { FILE *yyoutput = yyo; YYUSE (yyoutput); if (!yyvaluep) return; # ifdef YYPRINT - if (yytype < YYNTOKENS) - YYPRINT (yyo, yytoknum[yytype], *yyvaluep); + if (yykind < YYNTOKENS) + YYPRINT (yyo, yytoknum[yykind], *yyvaluep); # endif - YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yykind); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2197,12 +2288,13 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `---------------------------*/ static void -yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) +yy_symbol_print (FILE *yyo, + yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep) { YYFPRINTF (yyo, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind)); - yy_symbol_value_print (yyo, yytype, yyvaluep); + yy_symbol_value_print (yyo, yykind, yyvaluep); YYFPRINTF (yyo, ")"); } @@ -2212,7 +2304,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2235,21 +2327,21 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, + int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &yyvsp[(yyi + 1) - (yynrhs)] - ); + YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]), + &yyvsp[(yyi + 1) - (yynrhs)]); YYFPRINTF (stderr, "\n"); } } @@ -2264,8 +2356,8 @@ do { \ multiple parsers can coexist. */ int yydebug; #else /* !YYDEBUG */ -# define YYDPRINTF(Args) -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YYDPRINTF(Args) ((void) 0) +# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) # define YY_STACK_PRINT(Bottom, Top) # define YY_REDUCE_PRINT(Rule) #endif /* !YYDEBUG */ @@ -2288,254 +2380,30 @@ int yydebug; #endif -#if YYERROR_VERBOSE -# ifndef yystrlen -# if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen -# else -/* Return the length of YYSTR. */ -static YYSIZE_T -yystrlen (const char *yystr) -{ - YYSIZE_T yylen; - for (yylen = 0; yystr[yylen]; yylen++) - continue; - return yylen; -} -# endif -# endif -# ifndef yystpcpy -# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE -# define yystpcpy stpcpy -# else -/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in - YYDEST. */ -static char * -yystpcpy (char *yydest, const char *yysrc) -{ - char *yyd = yydest; - const char *yys = yysrc; - while ((*yyd++ = *yys++) != '\0') - continue; - - return yyd - 1; -} -# endif -# endif - -# ifndef yytnamerr -/* Copy to YYRES the contents of YYSTR after stripping away unnecessary - quotes and backslashes, so that it's suitable for yyerror. The - heuristic is that double-quoting is unnecessary unless the string - contains an apostrophe, a comma, or backslash (other than - backslash-backslash). YYSTR is taken from yytname. If YYRES is - null, do not copy; instead, return the length of what the result - would have been. */ -static YYSIZE_T -yytnamerr (char *yyres, const char *yystr) -{ - if (*yystr == '"') - { - YYSIZE_T yyn = 0; - char const *yyp = yystr; - - for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; - - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - else - goto append; - - append: - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; - - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } - do_not_strip_quotes: ; - } - - if (! yyres) - return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); -} -# endif - -/* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message - about the unexpected token YYTOKEN for the state stack whose top is - YYSSP. - - Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is - not large enough to hold the message. In that case, also set - *YYMSG_ALLOC to the required number of bytes. Return 2 if the - required number of bytes is too large to store. */ -static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) -{ - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; - enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; - /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ - char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ - int yycount = 0; - - /* There are many possibilities here to consider: - - If this state is a consistent state with a default action, then - the only way this function was invoked is if the default action - is an error action. In that case, don't check for expected - tokens because there are none. - - The only way there can be no lookahead present (in yychar) is if - this state is a consistent state with a default action. Thus, - detecting the absence of a lookahead is sufficient to determine - that there is no unexpected or expected token to report. In that - case, just report a simple "syntax error". - - Don't assume there isn't a lookahead just because this state is a - consistent state with a default action. There might have been a - previous inconsistent state, consistent state with a non-default - action, or user semantic action that manipulated yychar. - - Of course, the expected token list depends on states to have - correct lookahead information, and it depends on the parser not - to perform extra reductions after fetching a lookahead from the - scanner and before detecting a syntax error. Thus, state merging - (from LALR or IELR) and default reductions corrupt the expected - token list. However, the list is correct for canonical LR with - one exception: it will still contain any token that will not be - accepted due to an error action in a later state. - */ - if (yytoken != YYEMPTY) - { - int yyn = yypact[*yyssp]; - yyarg[yycount++] = yytname[yytoken]; - if (!yypact_value_is_default (yyn)) - { - /* Start YYX at -YYN if negative to avoid negative indexes in - YYCHECK. In other words, skip the first -YYN actions for - this state because they are default actions. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn + 1; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yyx; - - for (yyx = yyxbegin; yyx < yyxend; ++yyx) - if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR - && !yytable_value_is_error (yytable[yyx + yyn])) - { - if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) - { - yycount = 1; - yysize = yysize0; - break; - } - yyarg[yycount++] = yytname[yyx]; - { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - } - } - } - - switch (yycount) - { -# define YYCASE_(N, S) \ - case N: \ - yyformat = S; \ - break - default: /* Avoid compiler warnings. */ - YYCASE_(0, YY_("syntax error")); - YYCASE_(1, YY_("syntax error, unexpected %s")); - YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s")); - YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s")); - YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s")); - YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s")); -# undef YYCASE_ - } - - { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); - if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) - yysize = yysize1; - else - return 2; - } - - if (*yymsg_alloc < yysize) - { - *yymsg_alloc = 2 * yysize; - if (! (yysize <= *yymsg_alloc - && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM)) - *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM; - return 1; - } - - /* Avoid sprintf, as that infringes on the user's name space. - Don't have undefined behavior even if the translation - produced a string with the wrong number of "%s"s. */ - { - char *yyp = *yymsg; - int yyi = 0; - while ((*yyp = *yyformat) != '\0') - if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount) - { - yyp += yytnamerr (yyp, yyarg[yyi++]); - yyformat += 2; - } - else - { - yyp++; - yyformat++; - } - } - return 0; -} -#endif /* YYERROR_VERBOSE */ /*-----------------------------------------------. | Release the memory associated to this symbol. | `-----------------------------------------------*/ static void -yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep) +yydestruct (const char *yymsg, + yysymbol_kind_t yykind, YYSTYPE *yyvaluep) { YYUSE (yyvaluep); if (!yymsg) yymsg = "Deleting"; - YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); + YYUSE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } - - -/* The lookahead symbol. */ +/* Lookahead token kind. */ int yychar; /* The semantic value of the lookahead symbol. */ @@ -2544,6 +2412,8 @@ YYSTYPE yylval; int yynerrs; + + /*----------. | yyparse. | `----------*/ @@ -2551,43 +2421,36 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate = 0; /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; + int yyerrstatus = 0; - /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - - Refer to the stacks through separate pointers, to allow yyoverflow + /* Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + /* Their size. */ + YYPTRDIFF_T yystacksize = YYINITDEPTH; - /* The semantic value stack. */ + /* The state stack: array, bottom, top. */ + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss = yyssa; + yy_state_t *yyssp = yyss; + + /* The semantic value stack: array, bottom, top. */ YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs; - YYSTYPE *yyvsp; - - YYSIZE_T yystacksize; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp = yyvs; int yyn; + /* The return value of yyparse. */ int yyresult; - /* Lookahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead symbol kind. */ + yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY; /* The variables used to return semantic value and location from the action routines. */ YYSTYPE yyval; -#if YYERROR_VERBOSE - /* Buffer for error messages, and its allocated size. */ - char yymsgbuf[128]; - char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif + #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2595,15 +2458,8 @@ yyparse (void) Keep to zero when no symbol should be popped. */ int yylen = 0; - yyssp = yyss = yyssa; - yyvsp = yyvs = yyvsa; - yystacksize = YYINITDEPTH; - YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 0; - yyerrstatus = 0; - yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ goto yysetstate; @@ -2618,12 +2474,15 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END + YY_STACK_PRINT (yyss, yyssp); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2631,23 +2490,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2661,14 +2520,15 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); -# undef YYSTACK_RELOCATE +# undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); } @@ -2677,8 +2537,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2705,18 +2567,29 @@ yybackup: /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ + /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */ if (yychar == YYEMPTY) { - YYDPRINTF ((stderr, "Reading a token: ")); + YYDPRINTF ((stderr, "Reading a token\n")); yychar = yylex (); } if (yychar <= YYEOF) { - yychar = yytoken = YYEOF; + yychar = YYEOF; + yytoken = YYSYMBOL_YYEOF; YYDPRINTF ((stderr, "Now at end of input.\n")); } + else if (yychar == YYerror) + { + /* The scanner already issued an error message, process directly + to error recovery. But do not keep the error token as + lookahead, it is too special and may lead us to an endless + loop in error recovery. */ + yychar = YYUNDEF; + yytoken = YYSYMBOL_YYerror; + goto yyerrlab1; + } else { yytoken = YYTRANSLATE (yychar); @@ -2744,14 +2617,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -2786,25 +2658,25 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 18: + case 18: /* force_toplevel: VAR_FORCE_TOPLEVEL */ #line 195 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2795 "util/configparser.c" +#line 2667 "util/configparser.c" break; - case 19: + case 19: /* serverstart: VAR_SERVER */ #line 201 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2803 "util/configparser.c" +#line 2675 "util/configparser.c" break; - case 227: + case 228: /* stubstart: VAR_STUB_ZONE */ #line 299 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2814,12 +2686,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2818 "util/configparser.c" +#line 2690 "util/configparser.c" break; - case 237: + case 238: /* forwardstart: VAR_FORWARD_ZONE */ #line 316 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2829,12 +2701,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2833 "util/configparser.c" +#line 2705 "util/configparser.c" break; - case 246: + case 247: /* viewstart: VAR_VIEW */ #line 333 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2846,12 +2718,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2850 "util/configparser.c" +#line 2722 "util/configparser.c" break; - case 256: + case 257: /* authstart: VAR_AUTH_ZONE */ #line 352 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2866,12 +2738,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2870 "util/configparser.c" +#line 2742 "util/configparser.c" break; - case 267: + case 268: /* rpz_tag: VAR_TAGS STRING_ARG */ #line 376 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2887,12 +2759,12 @@ yyreduce: } } -#line 2891 "util/configparser.c" +#line 2763 "util/configparser.c" break; - case 268: + case 269: /* rpz_action_override: VAR_RPZ_ACTION_OVERRIDE STRING_ARG */ #line 395 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2906,44 +2778,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2910 "util/configparser.c" +#line 2782 "util/configparser.c" break; - case 269: + case 270: /* rpz_cname_override: VAR_RPZ_CNAME_OVERRIDE STRING_ARG */ #line 412 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2920 "util/configparser.c" +#line 2792 "util/configparser.c" break; - case 270: + case 271: /* rpz_log: VAR_RPZ_LOG STRING_ARG */ #line 420 "./util/configparser.y" - { + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2932 "util/configparser.c" +#line 2804 "util/configparser.c" break; - case 271: + case 272: /* rpz_log_name: VAR_RPZ_LOG_NAME STRING_ARG */ #line 430 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2942 "util/configparser.c" +#line 2814 "util/configparser.c" break; - case 272: + case 273: /* rpzstart: VAR_RPZ */ #line 438 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2958,36 +2830,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2962 "util/configparser.c" +#line 2834 "util/configparser.c" break; - case 285: + case 286: /* server_num_threads: VAR_NUM_THREADS STRING_ARG */ #line 461 "./util/configparser.y" - { + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2974 "util/configparser.c" +#line 2846 "util/configparser.c" break; - case 286: + case 287: /* server_verbosity: VAR_VERBOSITY STRING_ARG */ #line 470 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2986 "util/configparser.c" +#line 2858 "util/configparser.c" break; - case 287: + case 288: /* server_statistics_interval: VAR_STATISTICS_INTERVAL STRING_ARG */ #line 479 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -2996,48 +2868,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3000 "util/configparser.c" +#line 2872 "util/configparser.c" break; - case 288: + case 289: /* server_statistics_cumulative: VAR_STATISTICS_CUMULATIVE STRING_ARG */ #line 490 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3012 "util/configparser.c" +#line 2884 "util/configparser.c" break; - case 289: + case 290: /* server_extended_statistics: VAR_EXTENDED_STATISTICS STRING_ARG */ #line 499 "./util/configparser.y" - { + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3024 "util/configparser.c" +#line 2896 "util/configparser.c" break; - case 290: + case 291: /* server_shm_enable: VAR_SHM_ENABLE STRING_ARG */ #line 508 "./util/configparser.y" - { + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3036 "util/configparser.c" +#line 2908 "util/configparser.c" break; - case 291: + case 292: /* server_shm_key: VAR_SHM_KEY STRING_ARG */ #line 517 "./util/configparser.y" - { + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -3046,24 +2918,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3050 "util/configparser.c" +#line 2922 "util/configparser.c" break; - case 292: + case 293: /* server_port: VAR_PORT STRING_ARG */ #line 528 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3062 "util/configparser.c" +#line 2934 "util/configparser.c" break; - case 293: + case 294: /* server_send_client_subnet: VAR_SEND_CLIENT_SUBNET STRING_ARG */ #line 537 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3073,12 +2945,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3077 "util/configparser.c" +#line 2949 "util/configparser.c" break; - case 294: + case 295: /* server_client_subnet_zone: VAR_CLIENT_SUBNET_ZONE STRING_ARG */ #line 549 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3089,12 +2961,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3093 "util/configparser.c" +#line 2965 "util/configparser.c" break; - case 295: + case 296: /* server_client_subnet_always_forward: VAR_CLIENT_SUBNET_ALWAYS_FORWARD STRING_ARG */ #line 563 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3107,12 +2979,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3111 "util/configparser.c" +#line 2983 "util/configparser.c" break; - case 296: + case 297: /* server_client_subnet_opcode: VAR_CLIENT_SUBNET_OPCODE STRING_ARG */ #line 578 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3121,12 +2993,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3125 "util/configparser.c" +#line 2997 "util/configparser.c" break; - case 297: + case 298: /* server_max_client_subnet_ipv4: VAR_MAX_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 589 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3141,12 +3013,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3017 "util/configparser.c" break; - case 298: + case 299: /* server_max_client_subnet_ipv6: VAR_MAX_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 606 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3161,12 +3033,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3165 "util/configparser.c" +#line 3037 "util/configparser.c" break; - case 299: + case 300: /* server_min_client_subnet_ipv4: VAR_MIN_CLIENT_SUBNET_IPV4 STRING_ARG */ #line 623 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3181,12 +3053,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3185 "util/configparser.c" +#line 3057 "util/configparser.c" break; - case 300: + case 301: /* server_min_client_subnet_ipv6: VAR_MIN_CLIENT_SUBNET_IPV6 STRING_ARG */ #line 640 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3201,12 +3073,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3205 "util/configparser.c" +#line 3077 "util/configparser.c" break; - case 301: + case 302: /* server_max_ecs_tree_size_ipv4: VAR_MAX_ECS_TREE_SIZE_IPV4 STRING_ARG */ #line 657 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3219,12 +3091,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3223 "util/configparser.c" +#line 3095 "util/configparser.c" break; - case 302: + case 303: /* server_max_ecs_tree_size_ipv6: VAR_MAX_ECS_TREE_SIZE_IPV6 STRING_ARG */ #line 672 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3237,12 +3109,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3241 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 303: + case 304: /* server_interface: VAR_INTERFACE STRING_ARG */ #line 687 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3253,12 +3125,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3257 "util/configparser.c" +#line 3129 "util/configparser.c" break; - case 304: + case 305: /* server_outgoing_interface: VAR_OUTGOING_INTERFACE STRING_ARG */ #line 700 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3271,180 +3143,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3275 "util/configparser.c" +#line 3147 "util/configparser.c" break; - case 305: + case 306: /* server_outgoing_range: VAR_OUTGOING_RANGE STRING_ARG */ #line 715 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3287 "util/configparser.c" +#line 3159 "util/configparser.c" break; - case 306: + case 307: /* server_outgoing_port_permit: VAR_OUTGOING_PORT_PERMIT STRING_ARG */ #line 724 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3299 "util/configparser.c" +#line 3171 "util/configparser.c" break; - case 307: + case 308: /* server_outgoing_port_avoid: VAR_OUTGOING_PORT_AVOID STRING_ARG */ #line 733 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3311 "util/configparser.c" +#line 3183 "util/configparser.c" break; - case 308: + case 309: /* server_outgoing_num_tcp: VAR_OUTGOING_NUM_TCP STRING_ARG */ #line 742 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3323 "util/configparser.c" +#line 3195 "util/configparser.c" break; - case 309: + case 310: /* server_incoming_num_tcp: VAR_INCOMING_NUM_TCP STRING_ARG */ #line 751 "./util/configparser.y" - { + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3335 "util/configparser.c" +#line 3207 "util/configparser.c" break; - case 310: + case 311: /* server_interface_automatic: VAR_INTERFACE_AUTOMATIC STRING_ARG */ #line 760 "./util/configparser.y" - { + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3347 "util/configparser.c" +#line 3219 "util/configparser.c" break; - case 311: + case 312: /* server_do_ip4: VAR_DO_IP4 STRING_ARG */ #line 769 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3359 "util/configparser.c" +#line 3231 "util/configparser.c" break; - case 312: + case 313: /* server_do_ip6: VAR_DO_IP6 STRING_ARG */ #line 778 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3371 "util/configparser.c" +#line 3243 "util/configparser.c" break; - case 313: + case 314: /* server_do_udp: VAR_DO_UDP STRING_ARG */ #line 787 "./util/configparser.y" - { + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3383 "util/configparser.c" +#line 3255 "util/configparser.c" break; - case 314: + case 315: /* server_do_tcp: VAR_DO_TCP STRING_ARG */ #line 796 "./util/configparser.y" - { + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3395 "util/configparser.c" +#line 3267 "util/configparser.c" break; - case 315: + case 316: /* server_prefer_ip4: VAR_PREFER_IP4 STRING_ARG */ #line 805 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3407 "util/configparser.c" +#line 3279 "util/configparser.c" break; - case 316: + case 317: /* server_prefer_ip6: VAR_PREFER_IP6 STRING_ARG */ #line 814 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3419 "util/configparser.c" +#line 3291 "util/configparser.c" break; - case 317: + case 318: /* server_tcp_mss: VAR_TCP_MSS STRING_ARG */ #line 823 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3431 "util/configparser.c" +#line 3303 "util/configparser.c" break; - case 318: + case 319: /* server_outgoing_tcp_mss: VAR_OUTGOING_TCP_MSS STRING_ARG */ #line 832 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3443 "util/configparser.c" +#line 3315 "util/configparser.c" break; - case 319: + case 320: /* server_tcp_idle_timeout: VAR_TCP_IDLE_TIMEOUT STRING_ARG */ #line 841 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3455,24 +3327,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3459 "util/configparser.c" +#line 3331 "util/configparser.c" break; - case 320: + case 321: /* server_tcp_keepalive: VAR_EDNS_TCP_KEEPALIVE STRING_ARG */ #line 854 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3471 "util/configparser.c" +#line 3343 "util/configparser.c" break; - case 321: + case 322: /* server_tcp_keepalive_timeout: VAR_EDNS_TCP_KEEPALIVE_TIMEOUT STRING_ARG */ #line 863 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3483,168 +3355,168 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3487 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 322: + case 323: /* server_tcp_upstream: VAR_TCP_UPSTREAM STRING_ARG */ #line 876 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 323: + case 324: /* server_udp_upstream_without_downstream: VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM STRING_ARG */ #line 885 "./util/configparser.y" - { + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3511 "util/configparser.c" +#line 3383 "util/configparser.c" break; - case 324: + case 325: /* server_ssl_upstream: VAR_SSL_UPSTREAM STRING_ARG */ #line 894 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3523 "util/configparser.c" +#line 3395 "util/configparser.c" break; - case 325: + case 326: /* server_ssl_service_key: VAR_SSL_SERVICE_KEY STRING_ARG */ #line 903 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3533 "util/configparser.c" +#line 3405 "util/configparser.c" break; - case 326: + case 327: /* server_ssl_service_pem: VAR_SSL_SERVICE_PEM STRING_ARG */ #line 910 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3543 "util/configparser.c" +#line 3415 "util/configparser.c" break; - case 327: + case 328: /* server_ssl_port: VAR_SSL_PORT STRING_ARG */ #line 917 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3555 "util/configparser.c" +#line 3427 "util/configparser.c" break; - case 328: + case 329: /* server_tls_cert_bundle: VAR_TLS_CERT_BUNDLE STRING_ARG */ #line 926 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3565 "util/configparser.c" +#line 3437 "util/configparser.c" break; - case 329: + case 330: /* server_tls_win_cert: VAR_TLS_WIN_CERT STRING_ARG */ #line 933 "./util/configparser.y" - { + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" +#line 3449 "util/configparser.c" break; - case 330: + case 331: /* server_tls_additional_port: VAR_TLS_ADDITIONAL_PORT STRING_ARG */ #line 942 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3588 "util/configparser.c" +#line 3460 "util/configparser.c" break; - case 331: + case 332: /* server_tls_ciphers: VAR_TLS_CIPHERS STRING_ARG */ #line 950 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3598 "util/configparser.c" +#line 3470 "util/configparser.c" break; - case 332: + case 333: /* server_tls_ciphersuites: VAR_TLS_CIPHERSUITES STRING_ARG */ #line 957 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3608 "util/configparser.c" +#line 3480 "util/configparser.c" break; - case 333: + case 334: /* server_tls_session_ticket_keys: VAR_TLS_SESSION_TICKET_KEYS STRING_ARG */ #line 964 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3619 "util/configparser.c" +#line 3491 "util/configparser.c" break; - case 334: + case 335: /* server_tls_use_sni: VAR_TLS_USE_SNI STRING_ARG */ #line 972 "./util/configparser.y" - { + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3631 "util/configparser.c" +#line 3503 "util/configparser.c" break; - case 335: + case 336: /* server_https_port: VAR_HTTPS_PORT STRING_ARG */ #line 981 "./util/configparser.y" - { + { OUTYY(("P(server_https_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->https_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3643 "util/configparser.c" +#line 3515 "util/configparser.c" break; - case 336: + case 337: /* server_http_endpoint: VAR_HTTP_ENDPOINT STRING_ARG */ #line 989 "./util/configparser.y" - { + { OUTYY(("P(server_http_endpoint:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->http_endpoint); if((yyvsp[0].str) && (yyvsp[0].str)[0] != '/') { @@ -3659,96 +3531,96 @@ yyreduce: cfg_parser->cfg->http_endpoint = (yyvsp[0].str); } } -#line 3663 "util/configparser.c" +#line 3535 "util/configparser.c" break; - case 337: + case 338: /* server_http_max_streams: VAR_HTTP_MAX_STREAMS STRING_ARG */ #line 1005 "./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) yyerror("number expected"); else cfg_parser->cfg->http_max_streams = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3675 "util/configparser.c" +#line 3547 "util/configparser.c" break; - case 338: + case 339: /* server_http_query_buffer_size: VAR_HTTP_QUERY_BUFFER_SIZE STRING_ARG */ #line 1013 "./util/configparser.y" - { + { OUTYY(("P(server_http_query_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_query_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3687 "util/configparser.c" +#line 3559 "util/configparser.c" break; - case 339: + case 340: /* server_http_response_buffer_size: VAR_HTTP_RESPONSE_BUFFER_SIZE STRING_ARG */ #line 1021 "./util/configparser.y" - { + { OUTYY(("P(server_http_response_buffer_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->http_response_buffer_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3699 "util/configparser.c" +#line 3571 "util/configparser.c" break; - case 340: + case 341: /* server_http_nodelay: VAR_HTTP_NODELAY STRING_ARG */ #line 1029 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->http_nodelay = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3711 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 341: + case 342: /* server_http_notls_downstream: VAR_HTTP_NOTLS_DOWNSTREAM STRING_ARG */ #line 1037 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->http_notls_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3723 "util/configparser.c" +#line 3595 "util/configparser.c" break; - case 342: + case 343: /* server_use_systemd: VAR_USE_SYSTEMD STRING_ARG */ #line 1045 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3735 "util/configparser.c" +#line 3607 "util/configparser.c" break; - case 343: + case 344: /* server_do_daemonize: VAR_DO_DAEMONIZE STRING_ARG */ #line 1054 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3747 "util/configparser.c" +#line 3619 "util/configparser.c" break; - case 344: + case 345: /* server_use_syslog: VAR_USE_SYSLOG STRING_ARG */ #line 1063 "./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) yyerror("expected yes or no."); @@ -3760,104 +3632,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3764 "util/configparser.c" +#line 3636 "util/configparser.c" break; - case 345: + case 346: /* server_log_time_ascii: VAR_LOG_TIME_ASCII STRING_ARG */ #line 1077 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3776 "util/configparser.c" +#line 3648 "util/configparser.c" break; - case 346: + case 347: /* server_log_queries: VAR_LOG_QUERIES STRING_ARG */ #line 1086 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3788 "util/configparser.c" +#line 3660 "util/configparser.c" break; - case 347: + case 348: /* server_log_replies: VAR_LOG_REPLIES STRING_ARG */ #line 1095 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3800 "util/configparser.c" +#line 3672 "util/configparser.c" break; - case 348: + case 349: /* server_log_tag_queryreply: VAR_LOG_TAG_QUERYREPLY STRING_ARG */ #line 1104 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3812 "util/configparser.c" +#line 3684 "util/configparser.c" break; - case 349: + case 350: /* server_log_servfail: VAR_LOG_SERVFAIL STRING_ARG */ #line 1113 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3824 "util/configparser.c" +#line 3696 "util/configparser.c" break; - case 350: + case 351: /* server_log_local_actions: VAR_LOG_LOCAL_ACTIONS STRING_ARG */ #line 1122 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3836 "util/configparser.c" +#line 3708 "util/configparser.c" break; - case 351: + case 352: /* server_chroot: VAR_CHROOT STRING_ARG */ #line 1131 "./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 3846 "util/configparser.c" +#line 3718 "util/configparser.c" break; - case 352: + case 353: /* server_username: VAR_USERNAME STRING_ARG */ #line 1138 "./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 3856 "util/configparser.c" +#line 3728 "util/configparser.c" break; - case 353: + case 354: /* server_directory: VAR_DIRECTORY STRING_ARG */ #line 1145 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3881,106 +3753,106 @@ yyreduce: } } } -#line 3885 "util/configparser.c" +#line 3757 "util/configparser.c" break; - case 354: + case 355: /* server_logfile: VAR_LOGFILE STRING_ARG */ #line 1171 "./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 3896 "util/configparser.c" +#line 3768 "util/configparser.c" break; - case 355: + case 356: /* server_pidfile: VAR_PIDFILE STRING_ARG */ #line 1179 "./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 3906 "util/configparser.c" +#line 3778 "util/configparser.c" break; - case 356: + case 357: /* server_root_hints: VAR_ROOT_HINTS STRING_ARG */ #line 1186 "./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 3916 "util/configparser.c" +#line 3788 "util/configparser.c" break; - case 357: + case 358: /* server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG */ #line 1193 "./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 3926 "util/configparser.c" +#line 3798 "util/configparser.c" break; - case 358: + case 359: /* server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG */ #line 1200 "./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 3936 "util/configparser.c" +#line 3808 "util/configparser.c" break; - case 359: + case 360: /* server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG */ #line 1207 "./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 3947 "util/configparser.c" +#line 3819 "util/configparser.c" break; - case 360: + case 361: /* server_trust_anchor_file: VAR_TRUST_ANCHOR_FILE STRING_ARG */ #line 1215 "./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 3958 "util/configparser.c" +#line 3830 "util/configparser.c" break; - case 361: + case 362: /* server_trusted_keys_file: VAR_TRUSTED_KEYS_FILE STRING_ARG */ #line 1223 "./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 3969 "util/configparser.c" +#line 3841 "util/configparser.c" break; - case 362: + case 363: /* server_trust_anchor: VAR_TRUST_ANCHOR STRING_ARG */ #line 1231 "./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 3979 "util/configparser.c" +#line 3851 "util/configparser.c" break; - case 363: + case 364: /* server_trust_anchor_signaling: VAR_TRUST_ANCHOR_SIGNALING STRING_ARG */ #line 1238 "./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) yyerror("expected yes or no."); @@ -3989,12 +3861,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3993 "util/configparser.c" +#line 3865 "util/configparser.c" break; - case 364: + case 365: /* server_root_key_sentinel: VAR_ROOT_KEY_SENTINEL STRING_ARG */ #line 1249 "./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) yyerror("expected yes or no."); @@ -4003,99 +3875,118 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4007 "util/configparser.c" +#line 3879 "util/configparser.c" break; - case 365: + case 366: /* server_domain_insecure: VAR_DOMAIN_INSECURE STRING_ARG */ #line 1260 "./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 4017 "util/configparser.c" +#line 3889 "util/configparser.c" break; - case 366: + case 367: /* server_hide_identity: VAR_HIDE_IDENTITY STRING_ARG */ #line 1267 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4029 "util/configparser.c" +#line 3901 "util/configparser.c" break; - case 367: + case 368: /* server_hide_version: VAR_HIDE_VERSION STRING_ARG */ #line 1276 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4041 "util/configparser.c" +#line 3913 "util/configparser.c" break; - case 368: + case 369: /* server_hide_trustanchor: VAR_HIDE_TRUSTANCHOR STRING_ARG */ #line 1285 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4053 "util/configparser.c" +#line 3925 "util/configparser.c" break; - case 369: + case 370: /* server_identity: VAR_IDENTITY STRING_ARG */ #line 1294 "./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 4063 "util/configparser.c" +#line 3935 "util/configparser.c" break; - case 370: + case 371: /* server_version: VAR_VERSION STRING_ARG */ #line 1301 "./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 4073 "util/configparser.c" +#line 3945 "util/configparser.c" break; - case 371: + case 372: /* server_nsid: VAR_NSID STRING_ARG */ #line 1308 "./util/configparser.y" - { + { + OUTYY(("P(server_nsid:%s)\n", (yyvsp[0].str))); + free(cfg_parser->cfg->nsid_cfg_str); + cfg_parser->cfg->nsid_cfg_str = (yyvsp[0].str); + free(cfg_parser->cfg->nsid); + cfg_parser->cfg->nsid = NULL; + cfg_parser->cfg->nsid_len = 0; + if (*(yyvsp[0].str) == 0) + ; /* pass; empty string is not setting nsid */ + else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( + (yyvsp[0].str), &cfg_parser->cfg->nsid_len))) + yyerror("the NSID must be either a hex string or an " + "ascii character string prepended with ascii_."); + } +#line 3964 "util/configparser.c" + break; + + case 373: /* server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG */ +#line 1324 "./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 4084 "util/configparser.c" +#line 3975 "util/configparser.c" break; - case 372: -#line 1316 "./util/configparser.y" - { + case 374: /* server_so_sndbuf: VAR_SO_SNDBUF STRING_ARG */ +#line 1332 "./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 4095 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 373: -#line 1324 "./util/configparser.y" + case 375: /* server_so_reuseport: VAR_SO_REUSEPORT STRING_ARG */ +#line 1340 "./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) @@ -4104,11 +3995,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4108 "util/configparser.c" +#line 3999 "util/configparser.c" break; - case 374: -#line 1334 "./util/configparser.y" + case 376: /* server_ip_transparent: VAR_IP_TRANSPARENT STRING_ARG */ +#line 1350 "./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) @@ -4117,11 +4008,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4121 "util/configparser.c" +#line 4012 "util/configparser.c" break; - case 375: -#line 1344 "./util/configparser.y" + case 377: /* server_ip_freebind: VAR_IP_FREEBIND STRING_ARG */ +#line 1360 "./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) @@ -4130,12 +4021,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4025 "util/configparser.c" break; - case 376: -#line 1354 "./util/configparser.y" - { + case 378: /* server_ip_dscp: VAR_IP_DSCP STRING_ARG */ +#line 1370 "./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) yyerror("number expected"); @@ -4147,23 +4038,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4151 "util/configparser.c" +#line 4042 "util/configparser.c" break; - case 377: -#line 1368 "./util/configparser.y" - { + case 379: /* server_stream_wait_size: VAR_STREAM_WAIT_SIZE STRING_ARG */ +#line 1384 "./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 4162 "util/configparser.c" +#line 4053 "util/configparser.c" break; - case 378: -#line 1376 "./util/configparser.y" - { + case 380: /* server_edns_buffer_size: VAR_EDNS_BUFFER_SIZE STRING_ARG */ +#line 1392 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4174,12 +4065,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4178 "util/configparser.c" +#line 4069 "util/configparser.c" break; - case 379: -#line 1389 "./util/configparser.y" - { + case 381: /* server_msg_buffer_size: VAR_MSG_BUFFER_SIZE STRING_ARG */ +#line 1405 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4188,23 +4079,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4192 "util/configparser.c" +#line 4083 "util/configparser.c" break; - case 380: -#line 1400 "./util/configparser.y" - { + case 382: /* server_msg_cache_size: VAR_MSG_CACHE_SIZE STRING_ARG */ +#line 1416 "./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 4203 "util/configparser.c" +#line 4094 "util/configparser.c" break; - case 381: -#line 1408 "./util/configparser.y" - { + case 383: /* server_msg_cache_slabs: VAR_MSG_CACHE_SLABS STRING_ARG */ +#line 1424 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4215,60 +4106,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4219 "util/configparser.c" +#line 4110 "util/configparser.c" break; - case 382: -#line 1421 "./util/configparser.y" - { + case 384: /* server_num_queries_per_thread: VAR_NUM_QUERIES_PER_THREAD STRING_ARG */ +#line 1437 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4231 "util/configparser.c" +#line 4122 "util/configparser.c" break; - case 383: -#line 1430 "./util/configparser.y" - { + case 385: /* server_jostle_timeout: VAR_JOSTLE_TIMEOUT STRING_ARG */ +#line 1446 "./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) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4243 "util/configparser.c" +#line 4134 "util/configparser.c" break; - case 384: -#line 1439 "./util/configparser.y" - { + case 386: /* server_delay_close: VAR_DELAY_CLOSE STRING_ARG */ +#line 1455 "./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) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4255 "util/configparser.c" +#line 4146 "util/configparser.c" break; - case 385: -#line 1448 "./util/configparser.y" - { + case 387: /* server_udp_connect: VAR_UDP_CONNECT STRING_ARG */ +#line 1464 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->udp_connect = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4158 "util/configparser.c" break; - case 386: -#line 1457 "./util/configparser.y" - { + case 388: /* server_unblock_lan_zones: VAR_UNBLOCK_LAN_ZONES STRING_ARG */ +#line 1473 "./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) yyerror("expected yes or no."); @@ -4276,12 +4167,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4171 "util/configparser.c" break; - case 387: -#line 1467 "./util/configparser.y" - { + case 389: /* server_insecure_lan_zones: VAR_INSECURE_LAN_ZONES STRING_ARG */ +#line 1483 "./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) yyerror("expected yes or no."); @@ -4289,23 +4180,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4184 "util/configparser.c" break; - case 388: -#line 1477 "./util/configparser.y" - { + case 390: /* server_rrset_cache_size: VAR_RRSET_CACHE_SIZE STRING_ARG */ +#line 1493 "./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 4304 "util/configparser.c" +#line 4195 "util/configparser.c" break; - case 389: -#line 1485 "./util/configparser.y" - { + case 391: /* server_rrset_cache_slabs: VAR_RRSET_CACHE_SLABS STRING_ARG */ +#line 1501 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4316,58 +4207,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 4211 "util/configparser.c" break; - case 390: -#line 1498 "./util/configparser.y" - { + case 392: /* server_infra_host_ttl: VAR_INFRA_HOST_TTL STRING_ARG */ +#line 1514 "./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) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4332 "util/configparser.c" +#line 4223 "util/configparser.c" break; - case 391: -#line 1507 "./util/configparser.y" - { + case 393: /* server_infra_lame_ttl: VAR_INFRA_LAME_TTL STRING_ARG */ +#line 1523 "./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 4343 "util/configparser.c" +#line 4234 "util/configparser.c" break; - case 392: -#line 1515 "./util/configparser.y" - { + case 394: /* server_infra_cache_numhosts: VAR_INFRA_CACHE_NUMHOSTS STRING_ARG */ +#line 1531 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4355 "util/configparser.c" +#line 4246 "util/configparser.c" break; - case 393: -#line 1524 "./util/configparser.y" - { + case 395: /* server_infra_cache_lame_size: VAR_INFRA_CACHE_LAME_SIZE STRING_ARG */ +#line 1540 "./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 4366 "util/configparser.c" +#line 4257 "util/configparser.c" break; - case 394: -#line 1532 "./util/configparser.y" - { + case 396: /* server_infra_cache_slabs: VAR_INFRA_CACHE_SLABS STRING_ARG */ +#line 1548 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4378,24 +4269,24 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4382 "util/configparser.c" +#line 4273 "util/configparser.c" break; - case 395: -#line 1545 "./util/configparser.y" - { + case 397: /* server_infra_cache_min_rtt: VAR_INFRA_CACHE_MIN_RTT STRING_ARG */ +#line 1561 "./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) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4394 "util/configparser.c" +#line 4285 "util/configparser.c" break; - case 396: -#line 1554 "./util/configparser.y" - { + case 398: /* server_infra_keep_probing: VAR_INFRA_KEEP_PROBING STRING_ARG */ +#line 1570 "./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) yyerror("expected yes or no."); @@ -4403,22 +4294,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4407 "util/configparser.c" +#line 4298 "util/configparser.c" break; - case 397: -#line 1564 "./util/configparser.y" - { + case 399: /* server_target_fetch_policy: VAR_TARGET_FETCH_POLICY STRING_ARG */ +#line 1580 "./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 4417 "util/configparser.c" +#line 4308 "util/configparser.c" break; - case 398: -#line 1571 "./util/configparser.y" - { + case 400: /* server_harden_short_bufsize: VAR_HARDEN_SHORT_BUFSIZE STRING_ARG */ +#line 1587 "./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) yyerror("expected yes or no."); @@ -4426,12 +4317,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4430 "util/configparser.c" +#line 4321 "util/configparser.c" break; - case 399: -#line 1581 "./util/configparser.y" - { + case 401: /* server_harden_large_queries: VAR_HARDEN_LARGE_QUERIES STRING_ARG */ +#line 1597 "./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) yyerror("expected yes or no."); @@ -4439,12 +4330,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4443 "util/configparser.c" +#line 4334 "util/configparser.c" break; - case 400: -#line 1591 "./util/configparser.y" - { + case 402: /* server_harden_glue: VAR_HARDEN_GLUE STRING_ARG */ +#line 1607 "./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) yyerror("expected yes or no."); @@ -4452,12 +4343,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4456 "util/configparser.c" +#line 4347 "util/configparser.c" break; - case 401: -#line 1601 "./util/configparser.y" - { + case 403: /* server_harden_dnssec_stripped: VAR_HARDEN_DNSSEC_STRIPPED STRING_ARG */ +#line 1617 "./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) yyerror("expected yes or no."); @@ -4465,12 +4356,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4469 "util/configparser.c" +#line 4360 "util/configparser.c" break; - case 402: -#line 1611 "./util/configparser.y" - { + case 404: /* server_harden_below_nxdomain: VAR_HARDEN_BELOW_NXDOMAIN STRING_ARG */ +#line 1627 "./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) yyerror("expected yes or no."); @@ -4478,12 +4369,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4482 "util/configparser.c" +#line 4373 "util/configparser.c" break; - case 403: -#line 1621 "./util/configparser.y" - { + case 405: /* server_harden_referral_path: VAR_HARDEN_REFERRAL_PATH STRING_ARG */ +#line 1637 "./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) yyerror("expected yes or no."); @@ -4491,12 +4382,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4495 "util/configparser.c" +#line 4386 "util/configparser.c" break; - case 404: -#line 1631 "./util/configparser.y" - { + case 406: /* server_harden_algo_downgrade: VAR_HARDEN_ALGO_DOWNGRADE STRING_ARG */ +#line 1647 "./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) yyerror("expected yes or no."); @@ -4504,12 +4395,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4508 "util/configparser.c" +#line 4399 "util/configparser.c" break; - case 405: -#line 1641 "./util/configparser.y" - { + case 407: /* server_use_caps_for_id: VAR_USE_CAPS_FOR_ID STRING_ARG */ +#line 1657 "./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) yyerror("expected yes or no."); @@ -4517,100 +4408,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4521 "util/configparser.c" +#line 4412 "util/configparser.c" break; - case 406: -#line 1651 "./util/configparser.y" - { + case 408: /* server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG */ +#line 1667 "./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 4531 "util/configparser.c" +#line 4422 "util/configparser.c" break; - case 407: -#line 1658 "./util/configparser.y" - { + case 409: /* server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG */ +#line 1674 "./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 4541 "util/configparser.c" +#line 4432 "util/configparser.c" break; - case 408: -#line 1665 "./util/configparser.y" - { + case 410: /* server_private_domain: VAR_PRIVATE_DOMAIN STRING_ARG */ +#line 1681 "./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 4551 "util/configparser.c" +#line 4442 "util/configparser.c" break; - case 409: -#line 1672 "./util/configparser.y" - { + case 411: /* server_prefetch: VAR_PREFETCH STRING_ARG */ +#line 1688 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4563 "util/configparser.c" +#line 4454 "util/configparser.c" break; - case 410: -#line 1681 "./util/configparser.y" - { + case 412: /* server_prefetch_key: VAR_PREFETCH_KEY STRING_ARG */ +#line 1697 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4575 "util/configparser.c" +#line 4466 "util/configparser.c" break; - case 411: -#line 1690 "./util/configparser.y" - { + case 413: /* server_deny_any: VAR_DENY_ANY STRING_ARG */ +#line 1706 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4587 "util/configparser.c" +#line 4478 "util/configparser.c" break; - case 412: -#line 1699 "./util/configparser.y" - { + case 414: /* server_unwanted_reply_threshold: VAR_UNWANTED_REPLY_THRESHOLD STRING_ARG */ +#line 1715 "./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) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4599 "util/configparser.c" +#line 4490 "util/configparser.c" break; - case 413: -#line 1708 "./util/configparser.y" - { + case 415: /* server_do_not_query_address: VAR_DO_NOT_QUERY_ADDRESS STRING_ARG */ +#line 1724 "./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 4609 "util/configparser.c" +#line 4500 "util/configparser.c" break; - case 414: -#line 1715 "./util/configparser.y" - { + case 416: /* server_do_not_query_localhost: VAR_DO_NOT_QUERY_LOCALHOST STRING_ARG */ +#line 1731 "./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) yyerror("expected yes or no."); @@ -4618,12 +4509,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4622 "util/configparser.c" +#line 4513 "util/configparser.c" break; - case 415: -#line 1725 "./util/configparser.y" - { + case 417: /* server_access_control: VAR_ACCESS_CONTROL STRING_ARG STRING_ARG */ +#line 1741 "./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 && @@ -4641,22 +4532,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4645 "util/configparser.c" +#line 4536 "util/configparser.c" break; - case 416: -#line 1745 "./util/configparser.y" - { + case 418: /* server_module_conf: VAR_MODULE_CONF STRING_ARG */ +#line 1761 "./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 4655 "util/configparser.c" +#line 4546 "util/configparser.c" break; - case 417: -#line 1752 "./util/configparser.y" - { + case 419: /* server_val_override_date: VAR_VAL_OVERRIDE_DATE STRING_ARG */ +#line 1768 "./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) { cfg_parser->cfg->val_date_override = 0; @@ -4672,12 +4563,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4676 "util/configparser.c" +#line 4567 "util/configparser.c" break; - case 418: -#line 1770 "./util/configparser.y" - { + case 420: /* server_val_sig_skew_min: VAR_VAL_SIG_SKEW_MIN STRING_ARG */ +#line 1786 "./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) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4688,12 +4579,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4692 "util/configparser.c" +#line 4583 "util/configparser.c" break; - case 419: -#line 1783 "./util/configparser.y" - { + case 421: /* server_val_sig_skew_max: VAR_VAL_SIG_SKEW_MAX STRING_ARG */ +#line 1799 "./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) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4704,60 +4595,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4708 "util/configparser.c" +#line 4599 "util/configparser.c" break; - case 420: -#line 1796 "./util/configparser.y" - { + case 422: /* server_cache_max_ttl: VAR_CACHE_MAX_TTL STRING_ARG */ +#line 1812 "./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) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4720 "util/configparser.c" +#line 4611 "util/configparser.c" break; - case 421: -#line 1805 "./util/configparser.y" - { + case 423: /* server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG */ +#line 1821 "./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) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4623 "util/configparser.c" break; - case 422: -#line 1814 "./util/configparser.y" - { + case 424: /* server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG */ +#line 1830 "./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) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4635 "util/configparser.c" break; - case 423: -#line 1823 "./util/configparser.y" - { + case 425: /* server_bogus_ttl: VAR_BOGUS_TTL STRING_ARG */ +#line 1839 "./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) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4647 "util/configparser.c" break; - case 424: -#line 1832 "./util/configparser.y" - { + case 426: /* server_val_clean_additional: VAR_VAL_CLEAN_ADDITIONAL STRING_ARG */ +#line 1848 "./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) yyerror("expected yes or no."); @@ -4765,12 +4656,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4660 "util/configparser.c" break; - case 425: -#line 1842 "./util/configparser.y" - { + case 427: /* server_val_permissive_mode: VAR_VAL_PERMISSIVE_MODE STRING_ARG */ +#line 1858 "./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) yyerror("expected yes or no."); @@ -4778,12 +4669,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4782 "util/configparser.c" +#line 4673 "util/configparser.c" break; - case 426: -#line 1852 "./util/configparser.y" - { + case 428: /* server_aggressive_nsec: VAR_AGGRESSIVE_NSEC STRING_ARG */ +#line 1868 "./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) yyerror("expected yes or no."); @@ -4792,84 +4683,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4687 "util/configparser.c" break; - case 427: -#line 1863 "./util/configparser.y" - { + case 429: /* server_ignore_cd_flag: VAR_IGNORE_CD_FLAG STRING_ARG */ +#line 1879 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4808 "util/configparser.c" +#line 4699 "util/configparser.c" break; - case 428: -#line 1872 "./util/configparser.y" - { + case 430: /* server_serve_expired: VAR_SERVE_EXPIRED STRING_ARG */ +#line 1888 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4820 "util/configparser.c" +#line 4711 "util/configparser.c" break; - case 429: -#line 1881 "./util/configparser.y" - { + case 431: /* server_serve_expired_ttl: VAR_SERVE_EXPIRED_TTL STRING_ARG */ +#line 1897 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4832 "util/configparser.c" +#line 4723 "util/configparser.c" break; - case 430: -#line 1890 "./util/configparser.y" - { + case 432: /* server_serve_expired_ttl_reset: VAR_SERVE_EXPIRED_TTL_RESET STRING_ARG */ +#line 1906 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4844 "util/configparser.c" +#line 4735 "util/configparser.c" break; - case 431: -#line 1899 "./util/configparser.y" - { + case 433: /* server_serve_expired_reply_ttl: VAR_SERVE_EXPIRED_REPLY_TTL STRING_ARG */ +#line 1915 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4856 "util/configparser.c" +#line 4747 "util/configparser.c" break; - case 432: -#line 1908 "./util/configparser.y" - { + case 434: /* server_serve_expired_client_timeout: VAR_SERVE_EXPIRED_CLIENT_TIMEOUT STRING_ARG */ +#line 1924 "./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) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4868 "util/configparser.c" +#line 4759 "util/configparser.c" break; - case 433: -#line 1917 "./util/configparser.y" - { + case 435: /* server_fake_dsa: VAR_FAKE_DSA STRING_ARG */ +#line 1933 "./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) yyerror("expected yes or no."); @@ -4880,12 +4771,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4884 "util/configparser.c" +#line 4775 "util/configparser.c" break; - case 434: -#line 1930 "./util/configparser.y" - { + case 436: /* server_fake_sha1: VAR_FAKE_SHA1 STRING_ARG */ +#line 1946 "./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) yyerror("expected yes or no."); @@ -4896,70 +4787,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4900 "util/configparser.c" +#line 4791 "util/configparser.c" break; - case 435: -#line 1943 "./util/configparser.y" - { + case 437: /* server_val_log_level: VAR_VAL_LOG_LEVEL STRING_ARG */ +#line 1959 "./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) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4912 "util/configparser.c" +#line 4803 "util/configparser.c" break; - case 436: -#line 1952 "./util/configparser.y" - { + case 438: /* server_val_nsec3_keysize_iterations: VAR_VAL_NSEC3_KEYSIZE_ITERATIONS STRING_ARG */ +#line 1968 "./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 4922 "util/configparser.c" +#line 4813 "util/configparser.c" break; - case 437: -#line 1959 "./util/configparser.y" - { + case 439: /* server_add_holddown: VAR_ADD_HOLDDOWN STRING_ARG */ +#line 1975 "./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) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4934 "util/configparser.c" +#line 4825 "util/configparser.c" break; - case 438: -#line 1968 "./util/configparser.y" - { + case 440: /* server_del_holddown: VAR_DEL_HOLDDOWN STRING_ARG */ +#line 1984 "./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) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4946 "util/configparser.c" +#line 4837 "util/configparser.c" break; - case 439: -#line 1977 "./util/configparser.y" - { + case 441: /* server_keep_missing: VAR_KEEP_MISSING STRING_ARG */ +#line 1993 "./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) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4958 "util/configparser.c" +#line 4849 "util/configparser.c" break; - case 440: -#line 1986 "./util/configparser.y" - { + case 442: /* server_permit_small_holddown: VAR_PERMIT_SMALL_HOLDDOWN STRING_ARG */ +#line 2002 "./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) yyerror("expected yes or no."); @@ -4967,23 +4858,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4971 "util/configparser.c" +#line 4862 "util/configparser.c" break; - case 441: -#line 1995 "./util/configparser.y" - { + case 443: /* server_key_cache_size: VAR_KEY_CACHE_SIZE STRING_ARG */ +#line 2011 "./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 4982 "util/configparser.c" +#line 4873 "util/configparser.c" break; - case 442: -#line 2003 "./util/configparser.y" - { + case 444: /* server_key_cache_slabs: VAR_KEY_CACHE_SLABS STRING_ARG */ +#line 2019 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4994,23 +4885,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4998 "util/configparser.c" +#line 4889 "util/configparser.c" break; - case 443: -#line 2016 "./util/configparser.y" - { + case 445: /* server_neg_cache_size: VAR_NEG_CACHE_SIZE STRING_ARG */ +#line 2032 "./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 5009 "util/configparser.c" +#line 4900 "util/configparser.c" break; - case 444: -#line 2024 "./util/configparser.y" - { + case 446: /* server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2040 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5049,22 +4940,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5053 "util/configparser.c" +#line 4944 "util/configparser.c" break; - case 445: -#line 2065 "./util/configparser.y" - { + case 447: /* server_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2081 "./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 5063 "util/configparser.c" +#line 4954 "util/configparser.c" break; - case 446: -#line 2072 "./util/configparser.y" - { + case 448: /* server_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2088 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5077,12 +4968,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5081 "util/configparser.c" +#line 4972 "util/configparser.c" break; - case 447: -#line 2087 "./util/configparser.y" - { + case 449: /* server_minimal_responses: VAR_MINIMAL_RESPONSES STRING_ARG */ +#line 2103 "./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) yyerror("expected yes or no."); @@ -5090,12 +4981,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 4985 "util/configparser.c" break; - case 448: -#line 2097 "./util/configparser.y" - { + case 450: /* server_rrset_roundrobin: VAR_RRSET_ROUNDROBIN STRING_ARG */ +#line 2113 "./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) yyerror("expected yes or no."); @@ -5103,65 +4994,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5107 "util/configparser.c" +#line 4998 "util/configparser.c" break; - case 449: -#line 2107 "./util/configparser.y" - { + case 451: /* server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG */ +#line 2123 "./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 5117 "util/configparser.c" +#line 5008 "util/configparser.c" break; - case 450: -#line 2114 "./util/configparser.y" - { + case 452: /* server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG */ +#line 2130 "./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 5127 "util/configparser.c" +#line 5018 "util/configparser.c" break; - case 451: -#line 2121 "./util/configparser.y" - { + case 453: /* server_dns64_prefix: VAR_DNS64_PREFIX STRING_ARG */ +#line 2137 "./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 5137 "util/configparser.c" +#line 5028 "util/configparser.c" break; - case 452: -#line 2128 "./util/configparser.y" - { + case 454: /* server_dns64_synthall: VAR_DNS64_SYNTHALL STRING_ARG */ +#line 2144 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5149 "util/configparser.c" +#line 5040 "util/configparser.c" break; - case 453: -#line 2137 "./util/configparser.y" - { + case 455: /* server_dns64_ignore_aaaa: VAR_DNS64_IGNORE_AAAA STRING_ARG */ +#line 2153 "./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 5160 "util/configparser.c" +#line 5051 "util/configparser.c" break; - case 454: -#line 2145 "./util/configparser.y" - { + case 456: /* server_define_tag: VAR_DEFINE_TAG STRING_ARG */ +#line 2161 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5173,12 +5064,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5177 "util/configparser.c" +#line 5068 "util/configparser.c" break; - case 455: -#line 2159 "./util/configparser.y" - { + case 457: /* server_local_zone_tag: VAR_LOCAL_ZONE_TAG STRING_ARG STRING_ARG */ +#line 2175 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5197,12 +5088,12 @@ yyreduce: } } } -#line 5201 "util/configparser.c" +#line 5092 "util/configparser.c" break; - case 456: -#line 2180 "./util/configparser.y" - { + case 458: /* server_access_control_tag: VAR_ACCESS_CONTROL_TAG STRING_ARG STRING_ARG */ +#line 2196 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5221,12 +5112,12 @@ yyreduce: } } } -#line 5225 "util/configparser.c" +#line 5116 "util/configparser.c" break; - case 457: -#line 2201 "./util/configparser.y" - { + case 459: /* server_access_control_tag_action: VAR_ACCESS_CONTROL_TAG_ACTION STRING_ARG STRING_ARG STRING_ARG */ +#line 2217 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5236,12 +5127,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5240 "util/configparser.c" +#line 5131 "util/configparser.c" break; - case 458: -#line 2213 "./util/configparser.y" - { + case 460: /* server_access_control_tag_data: VAR_ACCESS_CONTROL_TAG_DATA STRING_ARG STRING_ARG STRING_ARG */ +#line 2229 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5251,12 +5142,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5255 "util/configparser.c" +#line 5146 "util/configparser.c" break; - case 459: -#line 2225 "./util/configparser.y" - { + case 461: /* server_local_zone_override: VAR_LOCAL_ZONE_OVERRIDE STRING_ARG STRING_ARG STRING_ARG */ +#line 2241 "./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, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5266,24 +5157,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5270 "util/configparser.c" +#line 5161 "util/configparser.c" break; - case 460: -#line 2237 "./util/configparser.y" - { + case 462: /* server_access_control_view: VAR_ACCESS_CONTROL_VIEW STRING_ARG STRING_ARG */ +#line 2253 "./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, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5282 "util/configparser.c" +#line 5173 "util/configparser.c" break; - case 461: -#line 2246 "./util/configparser.y" - { + case 463: /* server_response_ip_tag: VAR_RESPONSE_IP_TAG STRING_ARG STRING_ARG */ +#line 2262 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5302,58 +5193,58 @@ yyreduce: } } } -#line 5306 "util/configparser.c" +#line 5197 "util/configparser.c" break; - case 462: -#line 2267 "./util/configparser.y" - { + case 464: /* server_ip_ratelimit: VAR_IP_RATELIMIT STRING_ARG */ +#line 2283 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5318 "util/configparser.c" +#line 5209 "util/configparser.c" break; - case 463: -#line 2277 "./util/configparser.y" - { + case 465: /* server_ratelimit: VAR_RATELIMIT STRING_ARG */ +#line 2293 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5330 "util/configparser.c" +#line 5221 "util/configparser.c" break; - case 464: -#line 2286 "./util/configparser.y" - { + case 466: /* server_ip_ratelimit_size: VAR_IP_RATELIMIT_SIZE STRING_ARG */ +#line 2302 "./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 5341 "util/configparser.c" +#line 5232 "util/configparser.c" break; - case 465: -#line 2294 "./util/configparser.y" - { + case 467: /* server_ratelimit_size: VAR_RATELIMIT_SIZE STRING_ARG */ +#line 2310 "./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 5352 "util/configparser.c" +#line 5243 "util/configparser.c" break; - case 466: -#line 2302 "./util/configparser.y" - { + case 468: /* server_ip_ratelimit_slabs: VAR_IP_RATELIMIT_SLABS STRING_ARG */ +#line 2318 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5364,12 +5255,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5368 "util/configparser.c" +#line 5259 "util/configparser.c" break; - case 467: -#line 2315 "./util/configparser.y" - { + case 469: /* server_ratelimit_slabs: VAR_RATELIMIT_SLABS STRING_ARG */ +#line 2331 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5380,12 +5271,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5384 "util/configparser.c" +#line 5275 "util/configparser.c" break; - case 468: -#line 2328 "./util/configparser.y" - { + case 470: /* server_ratelimit_for_domain: VAR_RATELIMIT_FOR_DOMAIN STRING_ARG STRING_ARG */ +#line 2344 "./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) { yyerror("number expected"); @@ -5398,12 +5289,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5402 "util/configparser.c" +#line 5293 "util/configparser.c" break; - case 469: -#line 2343 "./util/configparser.y" - { + case 471: /* server_ratelimit_below_domain: VAR_RATELIMIT_BELOW_DOMAIN STRING_ARG STRING_ARG */ +#line 2359 "./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) { yyerror("number expected"); @@ -5416,69 +5307,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5420 "util/configparser.c" +#line 5311 "util/configparser.c" break; - case 470: -#line 2358 "./util/configparser.y" - { + case 472: /* server_ip_ratelimit_factor: VAR_IP_RATELIMIT_FACTOR STRING_ARG */ +#line 2374 "./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) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5432 "util/configparser.c" +#line 5323 "util/configparser.c" break; - case 471: -#line 2367 "./util/configparser.y" - { + case 473: /* server_ratelimit_factor: VAR_RATELIMIT_FACTOR STRING_ARG */ +#line 2383 "./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) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5444 "util/configparser.c" +#line 5335 "util/configparser.c" break; - case 472: -#line 2376 "./util/configparser.y" - { + case 474: /* server_low_rtt: VAR_LOW_RTT STRING_ARG */ +#line 2392 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5453 "util/configparser.c" +#line 5344 "util/configparser.c" break; - case 473: -#line 2382 "./util/configparser.y" - { + case 475: /* server_fast_server_num: VAR_FAST_SERVER_NUM STRING_ARG */ +#line 2398 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5465 "util/configparser.c" +#line 5356 "util/configparser.c" break; - case 474: -#line 2391 "./util/configparser.y" - { + case 476: /* server_fast_server_permil: VAR_FAST_SERVER_PERMIL STRING_ARG */ +#line 2407 "./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) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5477 "util/configparser.c" +#line 5368 "util/configparser.c" break; - case 475: -#line 2400 "./util/configparser.y" - { + case 477: /* server_qname_minimisation: VAR_QNAME_MINIMISATION STRING_ARG */ +#line 2416 "./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) yyerror("expected yes or no."); @@ -5486,12 +5377,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5490 "util/configparser.c" +#line 5381 "util/configparser.c" break; - case 476: -#line 2410 "./util/configparser.y" - { + case 478: /* server_qname_minimisation_strict: VAR_QNAME_MINIMISATION_STRICT STRING_ARG */ +#line 2426 "./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) yyerror("expected yes or no."); @@ -5499,12 +5390,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 5394 "util/configparser.c" break; - case 477: -#line 2420 "./util/configparser.y" - { + case 479: /* server_ipsecmod_enabled: VAR_IPSECMOD_ENABLED STRING_ARG */ +#line 2436 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5515,12 +5406,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5519 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 478: -#line 2433 "./util/configparser.y" - { + case 480: /* server_ipsecmod_ignore_bogus: VAR_IPSECMOD_IGNORE_BOGUS STRING_ARG */ +#line 2449 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5531,12 +5422,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5535 "util/configparser.c" +#line 5426 "util/configparser.c" break; - case 479: -#line 2446 "./util/configparser.y" - { + case 481: /* server_ipsecmod_hook: VAR_IPSECMOD_HOOK STRING_ARG */ +#line 2462 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5546,12 +5437,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5550 "util/configparser.c" +#line 5441 "util/configparser.c" break; - case 480: -#line 2458 "./util/configparser.y" - { + case 482: /* server_ipsecmod_max_ttl: VAR_IPSECMOD_MAX_TTL STRING_ARG */ +#line 2474 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5563,12 +5454,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5567 "util/configparser.c" +#line 5458 "util/configparser.c" break; - case 481: -#line 2472 "./util/configparser.y" - { + case 483: /* server_ipsecmod_whitelist: VAR_IPSECMOD_WHITELIST STRING_ARG */ +#line 2488 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5578,12 +5469,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5582 "util/configparser.c" +#line 5473 "util/configparser.c" break; - case 482: -#line 2484 "./util/configparser.y" - { + case 484: /* server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG */ +#line 2500 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5595,24 +5486,24 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5599 "util/configparser.c" +#line 5490 "util/configparser.c" break; - case 483: -#line 2498 "./util/configparser.y" - { + case 485: /* server_edns_client_string: VAR_EDNS_CLIENT_STRING STRING_ARG STRING_ARG */ +#line 2514 "./util/configparser.y" + { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->edns_client_strings, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding " "edns-client-string"); } -#line 5611 "util/configparser.c" +#line 5502 "util/configparser.c" break; - case 484: -#line 2507 "./util/configparser.y" - { + case 486: /* server_edns_client_string_opcode: VAR_EDNS_CLIENT_STRING_OPCODE STRING_ARG */ +#line 2523 "./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) yyerror("option code expected"); @@ -5622,12 +5513,12 @@ yyreduce: free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" +#line 5517 "util/configparser.c" break; - case 485: -#line 2519 "./util/configparser.y" - { + case 487: /* stub_name: VAR_NAME STRING_ARG */ +#line 2535 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5635,56 +5526,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5639 "util/configparser.c" +#line 5530 "util/configparser.c" break; - case 486: -#line 2529 "./util/configparser.y" - { + case 488: /* stub_host: VAR_STUB_HOST STRING_ARG */ +#line 2545 "./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 5649 "util/configparser.c" +#line 5540 "util/configparser.c" break; - case 487: -#line 2536 "./util/configparser.y" - { + case 489: /* stub_addr: VAR_STUB_ADDR STRING_ARG */ +#line 2552 "./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 5659 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 488: -#line 2543 "./util/configparser.y" - { + case 490: /* stub_first: VAR_STUB_FIRST STRING_ARG */ +#line 2559 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5671 "util/configparser.c" +#line 5562 "util/configparser.c" break; - case 489: -#line 2552 "./util/configparser.y" - { + case 491: /* stub_no_cache: VAR_STUB_NO_CACHE STRING_ARG */ +#line 2568 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5683 "util/configparser.c" +#line 5574 "util/configparser.c" break; - case 490: -#line 2561 "./util/configparser.y" - { + case 492: /* stub_ssl_upstream: VAR_STUB_SSL_UPSTREAM STRING_ARG */ +#line 2577 "./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) yyerror("expected yes or no."); @@ -5692,12 +5583,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5696 "util/configparser.c" +#line 5587 "util/configparser.c" break; - case 491: -#line 2571 "./util/configparser.y" - { + case 493: /* stub_prime: VAR_STUB_PRIME STRING_ARG */ +#line 2587 "./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) yyerror("expected yes or no."); @@ -5705,12 +5596,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5709 "util/configparser.c" +#line 5600 "util/configparser.c" break; - case 492: -#line 2581 "./util/configparser.y" - { + case 494: /* forward_name: VAR_NAME STRING_ARG */ +#line 2597 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5718,56 +5609,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5722 "util/configparser.c" +#line 5613 "util/configparser.c" break; - case 493: -#line 2591 "./util/configparser.y" - { + case 495: /* forward_host: VAR_FORWARD_HOST STRING_ARG */ +#line 2607 "./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 5732 "util/configparser.c" +#line 5623 "util/configparser.c" break; - case 494: -#line 2598 "./util/configparser.y" - { + case 496: /* forward_addr: VAR_FORWARD_ADDR STRING_ARG */ +#line 2614 "./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 5742 "util/configparser.c" +#line 5633 "util/configparser.c" break; - case 495: -#line 2605 "./util/configparser.y" - { + case 497: /* forward_first: VAR_FORWARD_FIRST STRING_ARG */ +#line 2621 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5754 "util/configparser.c" +#line 5645 "util/configparser.c" break; - case 496: -#line 2614 "./util/configparser.y" - { + case 498: /* forward_no_cache: VAR_FORWARD_NO_CACHE STRING_ARG */ +#line 2630 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5766 "util/configparser.c" +#line 5657 "util/configparser.c" break; - case 497: -#line 2623 "./util/configparser.y" - { + case 499: /* forward_ssl_upstream: VAR_FORWARD_SSL_UPSTREAM STRING_ARG */ +#line 2639 "./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) yyerror("expected yes or no."); @@ -5775,12 +5666,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5779 "util/configparser.c" +#line 5670 "util/configparser.c" break; - case 498: -#line 2633 "./util/configparser.y" - { + case 500: /* auth_name: VAR_NAME STRING_ARG */ +#line 2649 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5788,53 +5679,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5792 "util/configparser.c" +#line 5683 "util/configparser.c" break; - case 499: -#line 2643 "./util/configparser.y" - { + case 501: /* auth_zonefile: VAR_ZONEFILE STRING_ARG */ +#line 2659 "./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 5802 "util/configparser.c" +#line 5693 "util/configparser.c" break; - case 500: -#line 2650 "./util/configparser.y" - { + case 502: /* auth_master: VAR_MASTER STRING_ARG */ +#line 2666 "./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 5812 "util/configparser.c" +#line 5703 "util/configparser.c" break; - case 501: -#line 2657 "./util/configparser.y" - { + case 503: /* auth_url: VAR_URL STRING_ARG */ +#line 2673 "./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 5822 "util/configparser.c" +#line 5713 "util/configparser.c" break; - case 502: -#line 2664 "./util/configparser.y" - { + case 504: /* auth_allow_notify: VAR_ALLOW_NOTIFY STRING_ARG */ +#line 2680 "./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 5833 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 503: -#line 2672 "./util/configparser.y" - { + case 505: /* auth_for_downstream: VAR_FOR_DOWNSTREAM STRING_ARG */ +#line 2688 "./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) yyerror("expected yes or no."); @@ -5842,12 +5733,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5846 "util/configparser.c" +#line 5737 "util/configparser.c" break; - case 504: -#line 2682 "./util/configparser.y" - { + case 506: /* auth_for_upstream: VAR_FOR_UPSTREAM STRING_ARG */ +#line 2698 "./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) yyerror("expected yes or no."); @@ -5855,12 +5746,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" +#line 5750 "util/configparser.c" break; - case 505: -#line 2692 "./util/configparser.y" - { + case 507: /* auth_fallback_enabled: VAR_FALLBACK_ENABLED STRING_ARG */ +#line 2708 "./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) yyerror("expected yes or no."); @@ -5868,12 +5759,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 5763 "util/configparser.c" break; - case 506: -#line 2702 "./util/configparser.y" - { + case 508: /* view_name: VAR_NAME STRING_ARG */ +#line 2718 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5881,12 +5772,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5885 "util/configparser.c" +#line 5776 "util/configparser.c" break; - case 507: -#line 2712 "./util/configparser.y" - { + case 509: /* view_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG */ +#line 2728 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5923,12 +5814,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5927 "util/configparser.c" +#line 5818 "util/configparser.c" break; - case 508: -#line 2751 "./util/configparser.y" - { + case 510: /* view_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 2767 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5936,34 +5827,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5940 "util/configparser.c" +#line 5831 "util/configparser.c" break; - case 509: -#line 2761 "./util/configparser.y" - { + case 511: /* view_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 2777 "./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 5951 "util/configparser.c" +#line 5842 "util/configparser.c" break; - case 510: -#line 2769 "./util/configparser.y" - { + case 512: /* view_local_data: VAR_LOCAL_DATA STRING_ARG */ +#line 2785 "./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 5962 "util/configparser.c" +#line 5853 "util/configparser.c" break; - case 511: -#line 2777 "./util/configparser.y" - { + case 513: /* view_local_data_ptr: VAR_LOCAL_DATA_PTR STRING_ARG */ +#line 2793 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5976,32 +5867,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5980 "util/configparser.c" +#line 5871 "util/configparser.c" break; - case 512: -#line 2792 "./util/configparser.y" - { + case 514: /* view_first: VAR_VIEW_FIRST STRING_ARG */ +#line 2808 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5992 "util/configparser.c" +#line 5883 "util/configparser.c" break; - case 513: -#line 2801 "./util/configparser.y" - { + case 515: /* rcstart: VAR_REMOTE_CONTROL */ +#line 2817 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 6000 "util/configparser.c" +#line 5891 "util/configparser.c" break; - case 524: -#line 2812 "./util/configparser.y" - { + case 526: /* rc_control_enable: VAR_CONTROL_ENABLE STRING_ARG */ +#line 2828 "./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) yyerror("expected yes or no."); @@ -6009,104 +5900,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6013 "util/configparser.c" +#line 5904 "util/configparser.c" break; - case 525: -#line 2822 "./util/configparser.y" - { + case 527: /* rc_control_port: VAR_CONTROL_PORT STRING_ARG */ +#line 2838 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 5916 "util/configparser.c" break; - case 526: -#line 2831 "./util/configparser.y" - { + case 528: /* rc_control_interface: VAR_CONTROL_INTERFACE STRING_ARG */ +#line 2847 "./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 6035 "util/configparser.c" +#line 5926 "util/configparser.c" break; - case 527: -#line 2838 "./util/configparser.y" - { + case 529: /* rc_control_use_cert: VAR_CONTROL_USE_CERT STRING_ARG */ +#line 2854 "./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 6045 "util/configparser.c" +#line 5936 "util/configparser.c" break; - case 528: -#line 2845 "./util/configparser.y" - { + case 530: /* rc_server_key_file: VAR_SERVER_KEY_FILE STRING_ARG */ +#line 2861 "./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 6055 "util/configparser.c" +#line 5946 "util/configparser.c" break; - case 529: -#line 2852 "./util/configparser.y" - { + case 531: /* rc_server_cert_file: VAR_SERVER_CERT_FILE STRING_ARG */ +#line 2868 "./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 6065 "util/configparser.c" +#line 5956 "util/configparser.c" break; - case 530: -#line 2859 "./util/configparser.y" - { + case 532: /* rc_control_key_file: VAR_CONTROL_KEY_FILE STRING_ARG */ +#line 2875 "./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 6075 "util/configparser.c" +#line 5966 "util/configparser.c" break; - case 531: -#line 2866 "./util/configparser.y" - { + case 533: /* rc_control_cert_file: VAR_CONTROL_CERT_FILE STRING_ARG */ +#line 2882 "./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 6085 "util/configparser.c" +#line 5976 "util/configparser.c" break; - case 532: -#line 2873 "./util/configparser.y" - { + case 534: /* dtstart: VAR_DNSTAP */ +#line 2889 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 6093 "util/configparser.c" +#line 5984 "util/configparser.c" break; - case 554: -#line 2893 "./util/configparser.y" - { + case 556: /* dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG */ +#line 2909 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6105 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 555: -#line 2902 "./util/configparser.y" - { + case 557: /* dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG */ +#line 2918 "./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) yyerror("expected yes or no."); @@ -6114,128 +6005,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6118 "util/configparser.c" +#line 6009 "util/configparser.c" break; - case 556: -#line 2912 "./util/configparser.y" - { + case 558: /* dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG */ +#line 2928 "./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 6128 "util/configparser.c" +#line 6019 "util/configparser.c" break; - case 557: -#line 2919 "./util/configparser.y" - { + case 559: /* dt_dnstap_ip: VAR_DNSTAP_IP STRING_ARG */ +#line 2935 "./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 6138 "util/configparser.c" +#line 6029 "util/configparser.c" break; - case 558: -#line 2926 "./util/configparser.y" - { + case 560: /* dt_dnstap_tls: VAR_DNSTAP_TLS STRING_ARG */ +#line 2942 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6041 "util/configparser.c" break; - case 559: -#line 2935 "./util/configparser.y" - { + case 561: /* dt_dnstap_tls_server_name: VAR_DNSTAP_TLS_SERVER_NAME STRING_ARG */ +#line 2951 "./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 6160 "util/configparser.c" +#line 6051 "util/configparser.c" break; - case 560: -#line 2942 "./util/configparser.y" - { + case 562: /* dt_dnstap_tls_cert_bundle: VAR_DNSTAP_TLS_CERT_BUNDLE STRING_ARG */ +#line 2958 "./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 6170 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 561: -#line 2949 "./util/configparser.y" - { + case 563: /* dt_dnstap_tls_client_key_file: VAR_DNSTAP_TLS_CLIENT_KEY_FILE STRING_ARG */ +#line 2965 "./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 6180 "util/configparser.c" +#line 6071 "util/configparser.c" break; - case 562: -#line 2956 "./util/configparser.y" - { + case 564: /* dt_dnstap_tls_client_cert_file: VAR_DNSTAP_TLS_CLIENT_CERT_FILE STRING_ARG */ +#line 2972 "./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 6190 "util/configparser.c" +#line 6081 "util/configparser.c" break; - case 563: -#line 2963 "./util/configparser.y" - { + case 565: /* dt_dnstap_send_identity: VAR_DNSTAP_SEND_IDENTITY STRING_ARG */ +#line 2979 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6093 "util/configparser.c" break; - case 564: -#line 2972 "./util/configparser.y" - { + case 566: /* dt_dnstap_send_version: VAR_DNSTAP_SEND_VERSION STRING_ARG */ +#line 2988 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6214 "util/configparser.c" +#line 6105 "util/configparser.c" break; - case 565: -#line 2981 "./util/configparser.y" - { + case 567: /* dt_dnstap_identity: VAR_DNSTAP_IDENTITY STRING_ARG */ +#line 2997 "./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 6224 "util/configparser.c" +#line 6115 "util/configparser.c" break; - case 566: -#line 2988 "./util/configparser.y" - { + case 568: /* dt_dnstap_version: VAR_DNSTAP_VERSION STRING_ARG */ +#line 3004 "./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 6234 "util/configparser.c" +#line 6125 "util/configparser.c" break; - case 567: -#line 2995 "./util/configparser.y" - { + case 569: /* dt_dnstap_log_resolver_query_messages: VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES STRING_ARG */ +#line 3011 "./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) yyerror("expected yes or no."); @@ -6243,12 +6134,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6247 "util/configparser.c" +#line 6138 "util/configparser.c" break; - case 568: -#line 3005 "./util/configparser.y" - { + case 570: /* dt_dnstap_log_resolver_response_messages: VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES STRING_ARG */ +#line 3021 "./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) yyerror("expected yes or no."); @@ -6256,12 +6147,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6260 "util/configparser.c" +#line 6151 "util/configparser.c" break; - case 569: -#line 3015 "./util/configparser.y" - { + case 571: /* dt_dnstap_log_client_query_messages: VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES STRING_ARG */ +#line 3031 "./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) yyerror("expected yes or no."); @@ -6269,12 +6160,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6164 "util/configparser.c" break; - case 570: -#line 3025 "./util/configparser.y" - { + case 572: /* dt_dnstap_log_client_response_messages: VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES STRING_ARG */ +#line 3041 "./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) yyerror("expected yes or no."); @@ -6282,12 +6173,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6177 "util/configparser.c" break; - case 571: -#line 3035 "./util/configparser.y" - { + case 573: /* dt_dnstap_log_forwarder_query_messages: VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES STRING_ARG */ +#line 3051 "./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) yyerror("expected yes or no."); @@ -6295,12 +6186,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6190 "util/configparser.c" break; - case 572: -#line 3045 "./util/configparser.y" - { + case 574: /* dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES STRING_ARG */ +#line 3061 "./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) yyerror("expected yes or no."); @@ -6308,48 +6199,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6203 "util/configparser.c" break; - case 573: -#line 3055 "./util/configparser.y" - { + case 575: /* pythonstart: VAR_PYTHON */ +#line 3071 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6320 "util/configparser.c" +#line 6211 "util/configparser.c" break; - case 577: -#line 3064 "./util/configparser.y" - { + case 579: /* py_script: VAR_PYTHON_SCRIPT STRING_ARG */ +#line 3080 "./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 6330 "util/configparser.c" +#line 6221 "util/configparser.c" break; - case 578: -#line 3070 "./util/configparser.y" - { + case 580: /* dynlibstart: VAR_DYNLIB */ +#line 3086 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6338 "util/configparser.c" +#line 6229 "util/configparser.c" break; - case 582: -#line 3079 "./util/configparser.y" - { + case 584: /* dl_file: VAR_DYNLIB_FILE STRING_ARG */ +#line 3095 "./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 6348 "util/configparser.c" +#line 6239 "util/configparser.c" break; - case 583: -#line 3085 "./util/configparser.y" - { + case 585: /* server_disable_dnssec_lame_check: VAR_DISABLE_DNSSEC_LAME_CHECK STRING_ARG */ +#line 3101 "./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) yyerror("expected yes or no."); @@ -6357,132 +6248,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6361 "util/configparser.c" +#line 6252 "util/configparser.c" break; - case 584: -#line 3095 "./util/configparser.y" - { + case 586: /* server_log_identity: VAR_LOG_IDENTITY STRING_ARG */ +#line 3111 "./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 6371 "util/configparser.c" +#line 6262 "util/configparser.c" break; - case 585: -#line 3102 "./util/configparser.y" - { + case 587: /* server_response_ip: VAR_RESPONSE_IP STRING_ARG STRING_ARG */ +#line 3118 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6383 "util/configparser.c" +#line 6274 "util/configparser.c" break; - case 586: -#line 3111 "./util/configparser.y" - { + case 588: /* server_response_ip_data: VAR_RESPONSE_IP_DATA STRING_ARG STRING_ARG */ +#line 3127 "./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 6394 "util/configparser.c" +#line 6285 "util/configparser.c" break; - case 587: -#line 3119 "./util/configparser.y" - { + case 589: /* dnscstart: VAR_DNSCRYPT */ +#line 3135 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6402 "util/configparser.c" +#line 6293 "util/configparser.c" break; - case 600: -#line 3135 "./util/configparser.y" - { + case 602: /* dnsc_dnscrypt_enable: VAR_DNSCRYPT_ENABLE STRING_ARG */ +#line 3151 "./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) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6305 "util/configparser.c" break; - case 601: -#line 3145 "./util/configparser.y" - { + case 603: /* dnsc_dnscrypt_port: VAR_DNSCRYPT_PORT STRING_ARG */ +#line 3161 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6426 "util/configparser.c" +#line 6317 "util/configparser.c" break; - case 602: -#line 3154 "./util/configparser.y" - { + case 604: /* dnsc_dnscrypt_provider: VAR_DNSCRYPT_PROVIDER STRING_ARG */ +#line 3170 "./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 6436 "util/configparser.c" +#line 6327 "util/configparser.c" break; - case 603: -#line 3161 "./util/configparser.y" - { + case 605: /* dnsc_dnscrypt_provider_cert: VAR_DNSCRYPT_PROVIDER_CERT STRING_ARG */ +#line 3177 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6448 "util/configparser.c" +#line 6339 "util/configparser.c" break; - case 604: -#line 3170 "./util/configparser.y" - { + case 606: /* dnsc_dnscrypt_provider_cert_rotated: VAR_DNSCRYPT_PROVIDER_CERT_ROTATED STRING_ARG */ +#line 3186 "./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 6458 "util/configparser.c" +#line 6349 "util/configparser.c" break; - case 605: -#line 3177 "./util/configparser.y" - { + case 607: /* dnsc_dnscrypt_secret_key: VAR_DNSCRYPT_SECRET_KEY STRING_ARG */ +#line 3193 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6470 "util/configparser.c" +#line 6361 "util/configparser.c" break; - case 606: -#line 3186 "./util/configparser.y" - { + case 608: /* dnsc_dnscrypt_shared_secret_cache_size: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE STRING_ARG */ +#line 3202 "./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 6481 "util/configparser.c" +#line 6372 "util/configparser.c" break; - case 607: -#line 3194 "./util/configparser.y" - { + case 609: /* dnsc_dnscrypt_shared_secret_cache_slabs: VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS STRING_ARG */ +#line 3210 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6493,23 +6384,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6497 "util/configparser.c" +#line 6388 "util/configparser.c" break; - case 608: -#line 3207 "./util/configparser.y" - { + case 610: /* dnsc_dnscrypt_nonce_cache_size: VAR_DNSCRYPT_NONCE_CACHE_SIZE STRING_ARG */ +#line 3223 "./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 6508 "util/configparser.c" +#line 6399 "util/configparser.c" break; - case 609: -#line 3215 "./util/configparser.y" - { + case 611: /* dnsc_dnscrypt_nonce_cache_slabs: VAR_DNSCRYPT_NONCE_CACHE_SLABS STRING_ARG */ +#line 3231 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6520,20 +6411,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6524 "util/configparser.c" +#line 6415 "util/configparser.c" break; - case 610: -#line 3228 "./util/configparser.y" - { + case 612: /* cachedbstart: VAR_CACHEDB */ +#line 3244 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6532 "util/configparser.c" +#line 6423 "util/configparser.c" break; - case 619: -#line 3239 "./util/configparser.y" - { + case 621: /* cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG */ +#line 3255 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6543,12 +6434,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6547 "util/configparser.c" +#line 6438 "util/configparser.c" break; - case 620: -#line 3251 "./util/configparser.y" - { + case 622: /* cachedb_secret_seed: VAR_CACHEDB_SECRETSEED STRING_ARG */ +#line 3267 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6558,12 +6449,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6562 "util/configparser.c" +#line 6453 "util/configparser.c" break; - case 621: -#line 3263 "./util/configparser.y" - { + case 623: /* redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG */ +#line 3279 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6573,12 +6464,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6577 "util/configparser.c" +#line 6468 "util/configparser.c" break; - case 622: -#line 3275 "./util/configparser.y" - { + case 624: /* redis_server_port: VAR_CACHEDB_REDISPORT STRING_ARG */ +#line 3291 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6591,12 +6482,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6595 "util/configparser.c" +#line 6486 "util/configparser.c" break; - case 623: -#line 3290 "./util/configparser.y" - { + case 625: /* redis_timeout: VAR_CACHEDB_REDISTIMEOUT STRING_ARG */ +#line 3306 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6607,12 +6498,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6611 "util/configparser.c" +#line 6502 "util/configparser.c" break; - case 624: -#line 3303 "./util/configparser.y" - { + case 626: /* redis_expire_records: VAR_CACHEDB_REDISEXPIRERECORDS STRING_ARG */ +#line 3319 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6623,12 +6514,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6627 "util/configparser.c" +#line 6518 "util/configparser.c" break; - case 625: -#line 3316 "./util/configparser.y" - { + case 627: /* server_tcp_connection_limit: VAR_TCP_CONNECTION_LIMIT STRING_ARG STRING_ARG */ +#line 3332 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6637,20 +6528,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6641 "util/configparser.c" +#line 6532 "util/configparser.c" break; - case 626: -#line 3327 "./util/configparser.y" - { + case 628: /* ipsetstart: VAR_IPSET */ +#line 3343 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6649 "util/configparser.c" +#line 6540 "util/configparser.c" break; - case 631: -#line 3336 "./util/configparser.y" - { + case 633: /* ipset_name_v4: VAR_IPSET_NAME_V4 STRING_ARG */ +#line 3352 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6663,12 +6554,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6667 "util/configparser.c" +#line 6558 "util/configparser.c" break; - case 632: -#line 3351 "./util/configparser.y" - { + case 634: /* ipset_name_v6: VAR_IPSET_NAME_V6 STRING_ARG */ +#line 3367 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6681,11 +6572,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6685 "util/configparser.c" +#line 6576 "util/configparser.c" break; -#line 6689 "util/configparser.c" +#line 6580 "util/configparser.c" default: break; } @@ -6700,11 +6591,10 @@ yyreduce: case of YYERROR or YYBACKUP, subsequent parser actions might lead to an incorrect destructor call or verbose syntax error message before the lookahead is translated. */ - YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc); YYPOPSTACK (yylen); yylen = 0; - YY_STACK_PRINT (yyss, yyssp); *++yyvsp = yyval; @@ -6728,50 +6618,14 @@ yyreduce: yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ - yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar); - + yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar); /* If not already recovering from an error, report this error. */ if (!yyerrstatus) { ++yynerrs; -#if ! YYERROR_VERBOSE yyerror (YY_("syntax error")); -#else -# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ - yyssp, yytoken) - { - char const *yymsgp = YY_("syntax error"); - int yysyntax_error_status; - yysyntax_error_status = YYSYNTAX_ERROR; - if (yysyntax_error_status == 0) - yymsgp = yymsg; - else if (yysyntax_error_status == 1) - { - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); - if (!yymsg) - { - yymsg = yymsgbuf; - yymsg_alloc = sizeof yymsgbuf; - yysyntax_error_status = 2; - } - else - { - yysyntax_error_status = YYSYNTAX_ERROR; - yymsgp = yymsg; - } - } - yyerror (yymsgp); - if (yysyntax_error_status == 2) - goto yyexhaustedlab; - } -# undef YYSYNTAX_ERROR -#endif } - - if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an @@ -6820,13 +6674,14 @@ yyerrorlab: yyerrlab1: yyerrstatus = 3; /* Each real token shifted decrements this. */ + /* Pop stack until we find a state that shifts the error token. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + yyn += YYSYMBOL_YYerror; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror) { yyn = yytable[yyn]; if (0 < yyn) @@ -6840,7 +6695,7 @@ yyerrlab1: yydestruct ("Error: popping", - yystos[yystate], yyvsp); + YY_ACCESSING_SYMBOL (yystate), yyvsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -6852,7 +6707,7 @@ yyerrlab1: /* Shift the error token. */ - YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp); yystate = yyn; goto yynewstate; @@ -6874,20 +6729,20 @@ yyabortlab: goto yyreturn; -#if !defined yyoverflow || YYERROR_VERBOSE +#if !defined yyoverflow /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: yyerror (YY_("memory exhausted")); yyresult = 2; - /* Fall through. */ + goto yyreturn; #endif -/*-----------------------------------------------------. -| yyreturn -- parsing is finished, return the result. | -`-----------------------------------------------------*/ +/*-------------------------------------------------------. +| yyreturn -- parsing is finished, clean up and return. | +`-------------------------------------------------------*/ yyreturn: if (yychar != YYEMPTY) { @@ -6904,20 +6759,18 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + YY_ACCESSING_SYMBOL (+*yyssp), yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow if (yyss != yyssa) YYSTACK_FREE (yyss); #endif -#if YYERROR_VERBOSE - if (yymsg != yymsgbuf) - YYSTACK_FREE (yymsg); -#endif + return yyresult; } -#line 3365 "./util/configparser.y" + +#line 3381 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 323d587dd..0e82fd03d 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.7. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -31,8 +31,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Undocumented macros, especially those whose name start with YY_, - are private implementation details. Do not rely on them. */ +/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, + especially those whose name start with YY_ or yy_. They are + private implementation details that can be changed or removed. */ #ifndef YY_YY_UTIL_CONFIGPARSER_H_INCLUDED # define YY_YY_UTIL_CONFIGPARSER_H_INCLUDED @@ -44,314 +45,323 @@ extern int yydebug; #endif -/* Token type. */ +/* Token kinds. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE enum yytokentype { - SPACE = 258, - LETTER = 259, - NEWLINE = 260, - COMMENT = 261, - COLON = 262, - ANY = 263, - ZONESTR = 264, - STRING_ARG = 265, - VAR_FORCE_TOPLEVEL = 266, - VAR_SERVER = 267, - VAR_VERBOSITY = 268, - VAR_NUM_THREADS = 269, - VAR_PORT = 270, - VAR_OUTGOING_RANGE = 271, - VAR_INTERFACE = 272, - VAR_PREFER_IP4 = 273, - VAR_DO_IP4 = 274, - VAR_DO_IP6 = 275, - VAR_PREFER_IP6 = 276, - VAR_DO_UDP = 277, - VAR_DO_TCP = 278, - VAR_TCP_MSS = 279, - VAR_OUTGOING_TCP_MSS = 280, - VAR_TCP_IDLE_TIMEOUT = 281, - VAR_EDNS_TCP_KEEPALIVE = 282, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, - VAR_CHROOT = 284, - VAR_USERNAME = 285, - VAR_DIRECTORY = 286, - VAR_LOGFILE = 287, - VAR_PIDFILE = 288, - VAR_MSG_CACHE_SIZE = 289, - VAR_MSG_CACHE_SLABS = 290, - VAR_NUM_QUERIES_PER_THREAD = 291, - VAR_RRSET_CACHE_SIZE = 292, - VAR_RRSET_CACHE_SLABS = 293, - VAR_OUTGOING_NUM_TCP = 294, - VAR_INFRA_HOST_TTL = 295, - VAR_INFRA_LAME_TTL = 296, - VAR_INFRA_CACHE_SLABS = 297, - VAR_INFRA_CACHE_NUMHOSTS = 298, - VAR_INFRA_CACHE_LAME_SIZE = 299, - VAR_NAME = 300, - VAR_STUB_ZONE = 301, - VAR_STUB_HOST = 302, - VAR_STUB_ADDR = 303, - VAR_TARGET_FETCH_POLICY = 304, - VAR_HARDEN_SHORT_BUFSIZE = 305, - VAR_HARDEN_LARGE_QUERIES = 306, - VAR_FORWARD_ZONE = 307, - VAR_FORWARD_HOST = 308, - VAR_FORWARD_ADDR = 309, - VAR_DO_NOT_QUERY_ADDRESS = 310, - VAR_HIDE_IDENTITY = 311, - VAR_HIDE_VERSION = 312, - VAR_IDENTITY = 313, - VAR_VERSION = 314, - VAR_HARDEN_GLUE = 315, - VAR_MODULE_CONF = 316, - VAR_TRUST_ANCHOR_FILE = 317, - VAR_TRUST_ANCHOR = 318, - VAR_VAL_OVERRIDE_DATE = 319, - VAR_BOGUS_TTL = 320, - VAR_VAL_CLEAN_ADDITIONAL = 321, - VAR_VAL_PERMISSIVE_MODE = 322, - VAR_INCOMING_NUM_TCP = 323, - VAR_MSG_BUFFER_SIZE = 324, - VAR_KEY_CACHE_SIZE = 325, - VAR_KEY_CACHE_SLABS = 326, - VAR_TRUSTED_KEYS_FILE = 327, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, - VAR_USE_SYSLOG = 329, - VAR_OUTGOING_INTERFACE = 330, - VAR_ROOT_HINTS = 331, - VAR_DO_NOT_QUERY_LOCALHOST = 332, - VAR_CACHE_MAX_TTL = 333, - VAR_HARDEN_DNSSEC_STRIPPED = 334, - VAR_ACCESS_CONTROL = 335, - VAR_LOCAL_ZONE = 336, - VAR_LOCAL_DATA = 337, - VAR_INTERFACE_AUTOMATIC = 338, - VAR_STATISTICS_INTERVAL = 339, - VAR_DO_DAEMONIZE = 340, - VAR_USE_CAPS_FOR_ID = 341, - VAR_STATISTICS_CUMULATIVE = 342, - VAR_OUTGOING_PORT_PERMIT = 343, - VAR_OUTGOING_PORT_AVOID = 344, - VAR_DLV_ANCHOR_FILE = 345, - VAR_DLV_ANCHOR = 346, - VAR_NEG_CACHE_SIZE = 347, - VAR_HARDEN_REFERRAL_PATH = 348, - VAR_PRIVATE_ADDRESS = 349, - VAR_PRIVATE_DOMAIN = 350, - VAR_REMOTE_CONTROL = 351, - VAR_CONTROL_ENABLE = 352, - VAR_CONTROL_INTERFACE = 353, - VAR_CONTROL_PORT = 354, - VAR_SERVER_KEY_FILE = 355, - VAR_SERVER_CERT_FILE = 356, - VAR_CONTROL_KEY_FILE = 357, - VAR_CONTROL_CERT_FILE = 358, - VAR_CONTROL_USE_CERT = 359, - VAR_EXTENDED_STATISTICS = 360, - VAR_LOCAL_DATA_PTR = 361, - VAR_JOSTLE_TIMEOUT = 362, - VAR_STUB_PRIME = 363, - VAR_UNWANTED_REPLY_THRESHOLD = 364, - VAR_LOG_TIME_ASCII = 365, - VAR_DOMAIN_INSECURE = 366, - VAR_PYTHON = 367, - VAR_PYTHON_SCRIPT = 368, - VAR_VAL_SIG_SKEW_MIN = 369, - VAR_VAL_SIG_SKEW_MAX = 370, - VAR_CACHE_MIN_TTL = 371, - VAR_VAL_LOG_LEVEL = 372, - VAR_AUTO_TRUST_ANCHOR_FILE = 373, - VAR_KEEP_MISSING = 374, - VAR_ADD_HOLDDOWN = 375, - VAR_DEL_HOLDDOWN = 376, - VAR_SO_RCVBUF = 377, - VAR_EDNS_BUFFER_SIZE = 378, - VAR_PREFETCH = 379, - VAR_PREFETCH_KEY = 380, - VAR_SO_SNDBUF = 381, - VAR_SO_REUSEPORT = 382, - VAR_HARDEN_BELOW_NXDOMAIN = 383, - VAR_IGNORE_CD_FLAG = 384, - VAR_LOG_QUERIES = 385, - VAR_LOG_REPLIES = 386, - VAR_LOG_LOCAL_ACTIONS = 387, - VAR_TCP_UPSTREAM = 388, - VAR_SSL_UPSTREAM = 389, - VAR_SSL_SERVICE_KEY = 390, - VAR_SSL_SERVICE_PEM = 391, - VAR_SSL_PORT = 392, - VAR_FORWARD_FIRST = 393, - VAR_STUB_SSL_UPSTREAM = 394, - VAR_FORWARD_SSL_UPSTREAM = 395, - VAR_TLS_CERT_BUNDLE = 396, - VAR_HTTPS_PORT = 397, - VAR_HTTP_ENDPOINT = 398, - VAR_HTTP_MAX_STREAMS = 399, - VAR_HTTP_QUERY_BUFFER_SIZE = 400, - VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, - VAR_HTTP_NODELAY = 402, - VAR_HTTP_NOTLS_DOWNSTREAM = 403, - VAR_STUB_FIRST = 404, - VAR_MINIMAL_RESPONSES = 405, - VAR_RRSET_ROUNDROBIN = 406, - VAR_MAX_UDP_SIZE = 407, - VAR_DELAY_CLOSE = 408, - VAR_UDP_CONNECT = 409, - VAR_UNBLOCK_LAN_ZONES = 410, - VAR_INSECURE_LAN_ZONES = 411, - VAR_INFRA_CACHE_MIN_RTT = 412, - VAR_INFRA_KEEP_PROBING = 413, - VAR_DNS64_PREFIX = 414, - VAR_DNS64_SYNTHALL = 415, - VAR_DNS64_IGNORE_AAAA = 416, - VAR_DNSTAP = 417, - VAR_DNSTAP_ENABLE = 418, - VAR_DNSTAP_SOCKET_PATH = 419, - VAR_DNSTAP_IP = 420, - VAR_DNSTAP_TLS = 421, - VAR_DNSTAP_TLS_SERVER_NAME = 422, - VAR_DNSTAP_TLS_CERT_BUNDLE = 423, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, - VAR_DNSTAP_SEND_IDENTITY = 426, - VAR_DNSTAP_SEND_VERSION = 427, - VAR_DNSTAP_BIDIRECTIONAL = 428, - VAR_DNSTAP_IDENTITY = 429, - VAR_DNSTAP_VERSION = 430, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, - VAR_RESPONSE_IP_TAG = 437, - VAR_RESPONSE_IP = 438, - VAR_RESPONSE_IP_DATA = 439, - VAR_HARDEN_ALGO_DOWNGRADE = 440, - VAR_IP_TRANSPARENT = 441, - VAR_IP_DSCP = 442, - VAR_DISABLE_DNSSEC_LAME_CHECK = 443, - VAR_IP_RATELIMIT = 444, - VAR_IP_RATELIMIT_SLABS = 445, - VAR_IP_RATELIMIT_SIZE = 446, - VAR_RATELIMIT = 447, - VAR_RATELIMIT_SLABS = 448, - VAR_RATELIMIT_SIZE = 449, - VAR_RATELIMIT_FOR_DOMAIN = 450, - VAR_RATELIMIT_BELOW_DOMAIN = 451, - VAR_IP_RATELIMIT_FACTOR = 452, - VAR_RATELIMIT_FACTOR = 453, - VAR_SEND_CLIENT_SUBNET = 454, - VAR_CLIENT_SUBNET_ZONE = 455, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, - VAR_CLIENT_SUBNET_OPCODE = 457, - VAR_MAX_CLIENT_SUBNET_IPV4 = 458, - VAR_MAX_CLIENT_SUBNET_IPV6 = 459, - VAR_MIN_CLIENT_SUBNET_IPV4 = 460, - VAR_MIN_CLIENT_SUBNET_IPV6 = 461, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, - VAR_CAPS_WHITELIST = 464, - VAR_CACHE_MAX_NEGATIVE_TTL = 465, - VAR_PERMIT_SMALL_HOLDDOWN = 466, - VAR_QNAME_MINIMISATION = 467, - VAR_QNAME_MINIMISATION_STRICT = 468, - VAR_IP_FREEBIND = 469, - VAR_DEFINE_TAG = 470, - VAR_LOCAL_ZONE_TAG = 471, - VAR_ACCESS_CONTROL_TAG = 472, - VAR_LOCAL_ZONE_OVERRIDE = 473, - VAR_ACCESS_CONTROL_TAG_ACTION = 474, - VAR_ACCESS_CONTROL_TAG_DATA = 475, - VAR_VIEW = 476, - VAR_ACCESS_CONTROL_VIEW = 477, - VAR_VIEW_FIRST = 478, - VAR_SERVE_EXPIRED = 479, - VAR_SERVE_EXPIRED_TTL = 480, - VAR_SERVE_EXPIRED_TTL_RESET = 481, - VAR_SERVE_EXPIRED_REPLY_TTL = 482, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, - VAR_FAKE_DSA = 484, - VAR_FAKE_SHA1 = 485, - VAR_LOG_IDENTITY = 486, - VAR_HIDE_TRUSTANCHOR = 487, - VAR_TRUST_ANCHOR_SIGNALING = 488, - VAR_AGGRESSIVE_NSEC = 489, - VAR_USE_SYSTEMD = 490, - VAR_SHM_ENABLE = 491, - VAR_SHM_KEY = 492, - VAR_ROOT_KEY_SENTINEL = 493, - VAR_DNSCRYPT = 494, - VAR_DNSCRYPT_ENABLE = 495, - VAR_DNSCRYPT_PORT = 496, - VAR_DNSCRYPT_PROVIDER = 497, - VAR_DNSCRYPT_SECRET_KEY = 498, - VAR_DNSCRYPT_PROVIDER_CERT = 499, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, - VAR_IPSECMOD_ENABLED = 505, - VAR_IPSECMOD_HOOK = 506, - VAR_IPSECMOD_IGNORE_BOGUS = 507, - VAR_IPSECMOD_MAX_TTL = 508, - VAR_IPSECMOD_WHITELIST = 509, - VAR_IPSECMOD_STRICT = 510, - VAR_CACHEDB = 511, - VAR_CACHEDB_BACKEND = 512, - VAR_CACHEDB_SECRETSEED = 513, - VAR_CACHEDB_REDISHOST = 514, - VAR_CACHEDB_REDISPORT = 515, - VAR_CACHEDB_REDISTIMEOUT = 516, - VAR_CACHEDB_REDISEXPIRERECORDS = 517, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, - VAR_FOR_UPSTREAM = 519, - VAR_AUTH_ZONE = 520, - VAR_ZONEFILE = 521, - VAR_MASTER = 522, - VAR_URL = 523, - VAR_FOR_DOWNSTREAM = 524, - VAR_FALLBACK_ENABLED = 525, - VAR_TLS_ADDITIONAL_PORT = 526, - VAR_LOW_RTT = 527, - VAR_LOW_RTT_PERMIL = 528, - VAR_FAST_SERVER_PERMIL = 529, - VAR_FAST_SERVER_NUM = 530, - VAR_ALLOW_NOTIFY = 531, - VAR_TLS_WIN_CERT = 532, - VAR_TCP_CONNECTION_LIMIT = 533, - VAR_FORWARD_NO_CACHE = 534, - VAR_STUB_NO_CACHE = 535, - VAR_LOG_SERVFAIL = 536, - VAR_DENY_ANY = 537, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, - VAR_LOG_TAG_QUERYREPLY = 539, - VAR_STREAM_WAIT_SIZE = 540, - VAR_TLS_CIPHERS = 541, - VAR_TLS_CIPHERSUITES = 542, - VAR_TLS_USE_SNI = 543, - VAR_IPSET = 544, - VAR_IPSET_NAME_V4 = 545, - VAR_IPSET_NAME_V6 = 546, - VAR_TLS_SESSION_TICKET_KEYS = 547, - VAR_RPZ = 548, - VAR_TAGS = 549, - VAR_RPZ_ACTION_OVERRIDE = 550, - VAR_RPZ_CNAME_OVERRIDE = 551, - VAR_RPZ_LOG = 552, - VAR_RPZ_LOG_NAME = 553, - VAR_DYNLIB = 554, - VAR_DYNLIB_FILE = 555, - VAR_EDNS_CLIENT_STRING = 556, - VAR_EDNS_CLIENT_STRING_OPCODE = 557 + YYEMPTY = -2, + YYEOF = 0, /* "end of file" */ + YYerror = 256, /* error */ + YYUNDEF = 257, /* "invalid token" */ + SPACE = 258, /* SPACE */ + LETTER = 259, /* LETTER */ + NEWLINE = 260, /* NEWLINE */ + COMMENT = 261, /* COMMENT */ + COLON = 262, /* COLON */ + ANY = 263, /* ANY */ + ZONESTR = 264, /* ZONESTR */ + STRING_ARG = 265, /* STRING_ARG */ + VAR_FORCE_TOPLEVEL = 266, /* VAR_FORCE_TOPLEVEL */ + VAR_SERVER = 267, /* VAR_SERVER */ + VAR_VERBOSITY = 268, /* VAR_VERBOSITY */ + VAR_NUM_THREADS = 269, /* VAR_NUM_THREADS */ + VAR_PORT = 270, /* VAR_PORT */ + VAR_OUTGOING_RANGE = 271, /* VAR_OUTGOING_RANGE */ + VAR_INTERFACE = 272, /* VAR_INTERFACE */ + VAR_PREFER_IP4 = 273, /* VAR_PREFER_IP4 */ + VAR_DO_IP4 = 274, /* VAR_DO_IP4 */ + VAR_DO_IP6 = 275, /* VAR_DO_IP6 */ + VAR_PREFER_IP6 = 276, /* VAR_PREFER_IP6 */ + VAR_DO_UDP = 277, /* VAR_DO_UDP */ + VAR_DO_TCP = 278, /* VAR_DO_TCP */ + VAR_TCP_MSS = 279, /* VAR_TCP_MSS */ + VAR_OUTGOING_TCP_MSS = 280, /* VAR_OUTGOING_TCP_MSS */ + VAR_TCP_IDLE_TIMEOUT = 281, /* VAR_TCP_IDLE_TIMEOUT */ + VAR_EDNS_TCP_KEEPALIVE = 282, /* VAR_EDNS_TCP_KEEPALIVE */ + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, /* VAR_EDNS_TCP_KEEPALIVE_TIMEOUT */ + VAR_CHROOT = 284, /* VAR_CHROOT */ + VAR_USERNAME = 285, /* VAR_USERNAME */ + VAR_DIRECTORY = 286, /* VAR_DIRECTORY */ + VAR_LOGFILE = 287, /* VAR_LOGFILE */ + VAR_PIDFILE = 288, /* VAR_PIDFILE */ + VAR_MSG_CACHE_SIZE = 289, /* VAR_MSG_CACHE_SIZE */ + VAR_MSG_CACHE_SLABS = 290, /* VAR_MSG_CACHE_SLABS */ + VAR_NUM_QUERIES_PER_THREAD = 291, /* VAR_NUM_QUERIES_PER_THREAD */ + VAR_RRSET_CACHE_SIZE = 292, /* VAR_RRSET_CACHE_SIZE */ + VAR_RRSET_CACHE_SLABS = 293, /* VAR_RRSET_CACHE_SLABS */ + VAR_OUTGOING_NUM_TCP = 294, /* VAR_OUTGOING_NUM_TCP */ + VAR_INFRA_HOST_TTL = 295, /* VAR_INFRA_HOST_TTL */ + VAR_INFRA_LAME_TTL = 296, /* VAR_INFRA_LAME_TTL */ + VAR_INFRA_CACHE_SLABS = 297, /* VAR_INFRA_CACHE_SLABS */ + VAR_INFRA_CACHE_NUMHOSTS = 298, /* VAR_INFRA_CACHE_NUMHOSTS */ + VAR_INFRA_CACHE_LAME_SIZE = 299, /* VAR_INFRA_CACHE_LAME_SIZE */ + VAR_NAME = 300, /* VAR_NAME */ + VAR_STUB_ZONE = 301, /* VAR_STUB_ZONE */ + VAR_STUB_HOST = 302, /* VAR_STUB_HOST */ + VAR_STUB_ADDR = 303, /* VAR_STUB_ADDR */ + VAR_TARGET_FETCH_POLICY = 304, /* VAR_TARGET_FETCH_POLICY */ + VAR_HARDEN_SHORT_BUFSIZE = 305, /* VAR_HARDEN_SHORT_BUFSIZE */ + VAR_HARDEN_LARGE_QUERIES = 306, /* VAR_HARDEN_LARGE_QUERIES */ + VAR_FORWARD_ZONE = 307, /* VAR_FORWARD_ZONE */ + VAR_FORWARD_HOST = 308, /* VAR_FORWARD_HOST */ + VAR_FORWARD_ADDR = 309, /* VAR_FORWARD_ADDR */ + VAR_DO_NOT_QUERY_ADDRESS = 310, /* VAR_DO_NOT_QUERY_ADDRESS */ + VAR_HIDE_IDENTITY = 311, /* VAR_HIDE_IDENTITY */ + VAR_HIDE_VERSION = 312, /* VAR_HIDE_VERSION */ + VAR_IDENTITY = 313, /* VAR_IDENTITY */ + VAR_VERSION = 314, /* VAR_VERSION */ + VAR_HARDEN_GLUE = 315, /* VAR_HARDEN_GLUE */ + VAR_MODULE_CONF = 316, /* VAR_MODULE_CONF */ + VAR_TRUST_ANCHOR_FILE = 317, /* VAR_TRUST_ANCHOR_FILE */ + VAR_TRUST_ANCHOR = 318, /* VAR_TRUST_ANCHOR */ + VAR_VAL_OVERRIDE_DATE = 319, /* VAR_VAL_OVERRIDE_DATE */ + VAR_BOGUS_TTL = 320, /* VAR_BOGUS_TTL */ + VAR_VAL_CLEAN_ADDITIONAL = 321, /* VAR_VAL_CLEAN_ADDITIONAL */ + VAR_VAL_PERMISSIVE_MODE = 322, /* VAR_VAL_PERMISSIVE_MODE */ + VAR_INCOMING_NUM_TCP = 323, /* VAR_INCOMING_NUM_TCP */ + VAR_MSG_BUFFER_SIZE = 324, /* VAR_MSG_BUFFER_SIZE */ + VAR_KEY_CACHE_SIZE = 325, /* VAR_KEY_CACHE_SIZE */ + VAR_KEY_CACHE_SLABS = 326, /* VAR_KEY_CACHE_SLABS */ + VAR_TRUSTED_KEYS_FILE = 327, /* VAR_TRUSTED_KEYS_FILE */ + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, /* VAR_VAL_NSEC3_KEYSIZE_ITERATIONS */ + VAR_USE_SYSLOG = 329, /* VAR_USE_SYSLOG */ + VAR_OUTGOING_INTERFACE = 330, /* VAR_OUTGOING_INTERFACE */ + VAR_ROOT_HINTS = 331, /* VAR_ROOT_HINTS */ + VAR_DO_NOT_QUERY_LOCALHOST = 332, /* VAR_DO_NOT_QUERY_LOCALHOST */ + VAR_CACHE_MAX_TTL = 333, /* VAR_CACHE_MAX_TTL */ + VAR_HARDEN_DNSSEC_STRIPPED = 334, /* VAR_HARDEN_DNSSEC_STRIPPED */ + VAR_ACCESS_CONTROL = 335, /* VAR_ACCESS_CONTROL */ + VAR_LOCAL_ZONE = 336, /* VAR_LOCAL_ZONE */ + VAR_LOCAL_DATA = 337, /* VAR_LOCAL_DATA */ + VAR_INTERFACE_AUTOMATIC = 338, /* VAR_INTERFACE_AUTOMATIC */ + VAR_STATISTICS_INTERVAL = 339, /* VAR_STATISTICS_INTERVAL */ + VAR_DO_DAEMONIZE = 340, /* VAR_DO_DAEMONIZE */ + VAR_USE_CAPS_FOR_ID = 341, /* VAR_USE_CAPS_FOR_ID */ + VAR_STATISTICS_CUMULATIVE = 342, /* VAR_STATISTICS_CUMULATIVE */ + VAR_OUTGOING_PORT_PERMIT = 343, /* VAR_OUTGOING_PORT_PERMIT */ + VAR_OUTGOING_PORT_AVOID = 344, /* VAR_OUTGOING_PORT_AVOID */ + VAR_DLV_ANCHOR_FILE = 345, /* VAR_DLV_ANCHOR_FILE */ + VAR_DLV_ANCHOR = 346, /* VAR_DLV_ANCHOR */ + VAR_NEG_CACHE_SIZE = 347, /* VAR_NEG_CACHE_SIZE */ + VAR_HARDEN_REFERRAL_PATH = 348, /* VAR_HARDEN_REFERRAL_PATH */ + VAR_PRIVATE_ADDRESS = 349, /* VAR_PRIVATE_ADDRESS */ + VAR_PRIVATE_DOMAIN = 350, /* VAR_PRIVATE_DOMAIN */ + VAR_REMOTE_CONTROL = 351, /* VAR_REMOTE_CONTROL */ + VAR_CONTROL_ENABLE = 352, /* VAR_CONTROL_ENABLE */ + VAR_CONTROL_INTERFACE = 353, /* VAR_CONTROL_INTERFACE */ + VAR_CONTROL_PORT = 354, /* VAR_CONTROL_PORT */ + VAR_SERVER_KEY_FILE = 355, /* VAR_SERVER_KEY_FILE */ + VAR_SERVER_CERT_FILE = 356, /* VAR_SERVER_CERT_FILE */ + VAR_CONTROL_KEY_FILE = 357, /* VAR_CONTROL_KEY_FILE */ + VAR_CONTROL_CERT_FILE = 358, /* VAR_CONTROL_CERT_FILE */ + VAR_CONTROL_USE_CERT = 359, /* VAR_CONTROL_USE_CERT */ + VAR_EXTENDED_STATISTICS = 360, /* VAR_EXTENDED_STATISTICS */ + VAR_LOCAL_DATA_PTR = 361, /* VAR_LOCAL_DATA_PTR */ + VAR_JOSTLE_TIMEOUT = 362, /* VAR_JOSTLE_TIMEOUT */ + VAR_STUB_PRIME = 363, /* VAR_STUB_PRIME */ + VAR_UNWANTED_REPLY_THRESHOLD = 364, /* VAR_UNWANTED_REPLY_THRESHOLD */ + VAR_LOG_TIME_ASCII = 365, /* VAR_LOG_TIME_ASCII */ + VAR_DOMAIN_INSECURE = 366, /* VAR_DOMAIN_INSECURE */ + VAR_PYTHON = 367, /* VAR_PYTHON */ + VAR_PYTHON_SCRIPT = 368, /* VAR_PYTHON_SCRIPT */ + VAR_VAL_SIG_SKEW_MIN = 369, /* VAR_VAL_SIG_SKEW_MIN */ + VAR_VAL_SIG_SKEW_MAX = 370, /* VAR_VAL_SIG_SKEW_MAX */ + VAR_CACHE_MIN_TTL = 371, /* VAR_CACHE_MIN_TTL */ + VAR_VAL_LOG_LEVEL = 372, /* VAR_VAL_LOG_LEVEL */ + VAR_AUTO_TRUST_ANCHOR_FILE = 373, /* VAR_AUTO_TRUST_ANCHOR_FILE */ + VAR_KEEP_MISSING = 374, /* VAR_KEEP_MISSING */ + VAR_ADD_HOLDDOWN = 375, /* VAR_ADD_HOLDDOWN */ + VAR_DEL_HOLDDOWN = 376, /* VAR_DEL_HOLDDOWN */ + VAR_SO_RCVBUF = 377, /* VAR_SO_RCVBUF */ + VAR_EDNS_BUFFER_SIZE = 378, /* VAR_EDNS_BUFFER_SIZE */ + VAR_PREFETCH = 379, /* VAR_PREFETCH */ + VAR_PREFETCH_KEY = 380, /* VAR_PREFETCH_KEY */ + VAR_SO_SNDBUF = 381, /* VAR_SO_SNDBUF */ + VAR_SO_REUSEPORT = 382, /* VAR_SO_REUSEPORT */ + VAR_HARDEN_BELOW_NXDOMAIN = 383, /* VAR_HARDEN_BELOW_NXDOMAIN */ + VAR_IGNORE_CD_FLAG = 384, /* VAR_IGNORE_CD_FLAG */ + VAR_LOG_QUERIES = 385, /* VAR_LOG_QUERIES */ + VAR_LOG_REPLIES = 386, /* VAR_LOG_REPLIES */ + VAR_LOG_LOCAL_ACTIONS = 387, /* VAR_LOG_LOCAL_ACTIONS */ + VAR_TCP_UPSTREAM = 388, /* VAR_TCP_UPSTREAM */ + VAR_SSL_UPSTREAM = 389, /* VAR_SSL_UPSTREAM */ + VAR_SSL_SERVICE_KEY = 390, /* VAR_SSL_SERVICE_KEY */ + VAR_SSL_SERVICE_PEM = 391, /* VAR_SSL_SERVICE_PEM */ + VAR_SSL_PORT = 392, /* VAR_SSL_PORT */ + VAR_FORWARD_FIRST = 393, /* VAR_FORWARD_FIRST */ + VAR_STUB_SSL_UPSTREAM = 394, /* VAR_STUB_SSL_UPSTREAM */ + VAR_FORWARD_SSL_UPSTREAM = 395, /* VAR_FORWARD_SSL_UPSTREAM */ + VAR_TLS_CERT_BUNDLE = 396, /* VAR_TLS_CERT_BUNDLE */ + VAR_HTTPS_PORT = 397, /* VAR_HTTPS_PORT */ + VAR_HTTP_ENDPOINT = 398, /* VAR_HTTP_ENDPOINT */ + VAR_HTTP_MAX_STREAMS = 399, /* VAR_HTTP_MAX_STREAMS */ + VAR_HTTP_QUERY_BUFFER_SIZE = 400, /* VAR_HTTP_QUERY_BUFFER_SIZE */ + VAR_HTTP_RESPONSE_BUFFER_SIZE = 401, /* VAR_HTTP_RESPONSE_BUFFER_SIZE */ + VAR_HTTP_NODELAY = 402, /* VAR_HTTP_NODELAY */ + VAR_HTTP_NOTLS_DOWNSTREAM = 403, /* VAR_HTTP_NOTLS_DOWNSTREAM */ + VAR_STUB_FIRST = 404, /* VAR_STUB_FIRST */ + VAR_MINIMAL_RESPONSES = 405, /* VAR_MINIMAL_RESPONSES */ + VAR_RRSET_ROUNDROBIN = 406, /* VAR_RRSET_ROUNDROBIN */ + VAR_MAX_UDP_SIZE = 407, /* VAR_MAX_UDP_SIZE */ + VAR_DELAY_CLOSE = 408, /* VAR_DELAY_CLOSE */ + VAR_UDP_CONNECT = 409, /* VAR_UDP_CONNECT */ + VAR_UNBLOCK_LAN_ZONES = 410, /* VAR_UNBLOCK_LAN_ZONES */ + VAR_INSECURE_LAN_ZONES = 411, /* VAR_INSECURE_LAN_ZONES */ + VAR_INFRA_CACHE_MIN_RTT = 412, /* VAR_INFRA_CACHE_MIN_RTT */ + VAR_INFRA_KEEP_PROBING = 413, /* VAR_INFRA_KEEP_PROBING */ + VAR_DNS64_PREFIX = 414, /* VAR_DNS64_PREFIX */ + VAR_DNS64_SYNTHALL = 415, /* VAR_DNS64_SYNTHALL */ + VAR_DNS64_IGNORE_AAAA = 416, /* VAR_DNS64_IGNORE_AAAA */ + VAR_DNSTAP = 417, /* VAR_DNSTAP */ + VAR_DNSTAP_ENABLE = 418, /* VAR_DNSTAP_ENABLE */ + VAR_DNSTAP_SOCKET_PATH = 419, /* VAR_DNSTAP_SOCKET_PATH */ + VAR_DNSTAP_IP = 420, /* VAR_DNSTAP_IP */ + VAR_DNSTAP_TLS = 421, /* VAR_DNSTAP_TLS */ + VAR_DNSTAP_TLS_SERVER_NAME = 422, /* VAR_DNSTAP_TLS_SERVER_NAME */ + VAR_DNSTAP_TLS_CERT_BUNDLE = 423, /* VAR_DNSTAP_TLS_CERT_BUNDLE */ + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 424, /* VAR_DNSTAP_TLS_CLIENT_KEY_FILE */ + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 425, /* VAR_DNSTAP_TLS_CLIENT_CERT_FILE */ + VAR_DNSTAP_SEND_IDENTITY = 426, /* VAR_DNSTAP_SEND_IDENTITY */ + VAR_DNSTAP_SEND_VERSION = 427, /* VAR_DNSTAP_SEND_VERSION */ + VAR_DNSTAP_BIDIRECTIONAL = 428, /* VAR_DNSTAP_BIDIRECTIONAL */ + VAR_DNSTAP_IDENTITY = 429, /* VAR_DNSTAP_IDENTITY */ + VAR_DNSTAP_VERSION = 430, /* VAR_DNSTAP_VERSION */ + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 431, /* VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 432, /* VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 433, /* VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 434, /* VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 435, /* VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES */ + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 436, /* VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES */ + VAR_RESPONSE_IP_TAG = 437, /* VAR_RESPONSE_IP_TAG */ + VAR_RESPONSE_IP = 438, /* VAR_RESPONSE_IP */ + VAR_RESPONSE_IP_DATA = 439, /* VAR_RESPONSE_IP_DATA */ + VAR_HARDEN_ALGO_DOWNGRADE = 440, /* VAR_HARDEN_ALGO_DOWNGRADE */ + VAR_IP_TRANSPARENT = 441, /* VAR_IP_TRANSPARENT */ + VAR_IP_DSCP = 442, /* VAR_IP_DSCP */ + VAR_DISABLE_DNSSEC_LAME_CHECK = 443, /* VAR_DISABLE_DNSSEC_LAME_CHECK */ + VAR_IP_RATELIMIT = 444, /* VAR_IP_RATELIMIT */ + VAR_IP_RATELIMIT_SLABS = 445, /* VAR_IP_RATELIMIT_SLABS */ + VAR_IP_RATELIMIT_SIZE = 446, /* VAR_IP_RATELIMIT_SIZE */ + VAR_RATELIMIT = 447, /* VAR_RATELIMIT */ + VAR_RATELIMIT_SLABS = 448, /* VAR_RATELIMIT_SLABS */ + VAR_RATELIMIT_SIZE = 449, /* VAR_RATELIMIT_SIZE */ + VAR_RATELIMIT_FOR_DOMAIN = 450, /* VAR_RATELIMIT_FOR_DOMAIN */ + VAR_RATELIMIT_BELOW_DOMAIN = 451, /* VAR_RATELIMIT_BELOW_DOMAIN */ + VAR_IP_RATELIMIT_FACTOR = 452, /* VAR_IP_RATELIMIT_FACTOR */ + VAR_RATELIMIT_FACTOR = 453, /* VAR_RATELIMIT_FACTOR */ + VAR_SEND_CLIENT_SUBNET = 454, /* VAR_SEND_CLIENT_SUBNET */ + VAR_CLIENT_SUBNET_ZONE = 455, /* VAR_CLIENT_SUBNET_ZONE */ + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 456, /* VAR_CLIENT_SUBNET_ALWAYS_FORWARD */ + VAR_CLIENT_SUBNET_OPCODE = 457, /* VAR_CLIENT_SUBNET_OPCODE */ + VAR_MAX_CLIENT_SUBNET_IPV4 = 458, /* VAR_MAX_CLIENT_SUBNET_IPV4 */ + VAR_MAX_CLIENT_SUBNET_IPV6 = 459, /* VAR_MAX_CLIENT_SUBNET_IPV6 */ + VAR_MIN_CLIENT_SUBNET_IPV4 = 460, /* VAR_MIN_CLIENT_SUBNET_IPV4 */ + VAR_MIN_CLIENT_SUBNET_IPV6 = 461, /* VAR_MIN_CLIENT_SUBNET_IPV6 */ + VAR_MAX_ECS_TREE_SIZE_IPV4 = 462, /* VAR_MAX_ECS_TREE_SIZE_IPV4 */ + VAR_MAX_ECS_TREE_SIZE_IPV6 = 463, /* VAR_MAX_ECS_TREE_SIZE_IPV6 */ + VAR_CAPS_WHITELIST = 464, /* VAR_CAPS_WHITELIST */ + VAR_CACHE_MAX_NEGATIVE_TTL = 465, /* VAR_CACHE_MAX_NEGATIVE_TTL */ + VAR_PERMIT_SMALL_HOLDDOWN = 466, /* VAR_PERMIT_SMALL_HOLDDOWN */ + VAR_QNAME_MINIMISATION = 467, /* VAR_QNAME_MINIMISATION */ + VAR_QNAME_MINIMISATION_STRICT = 468, /* VAR_QNAME_MINIMISATION_STRICT */ + VAR_IP_FREEBIND = 469, /* VAR_IP_FREEBIND */ + VAR_DEFINE_TAG = 470, /* VAR_DEFINE_TAG */ + VAR_LOCAL_ZONE_TAG = 471, /* VAR_LOCAL_ZONE_TAG */ + VAR_ACCESS_CONTROL_TAG = 472, /* VAR_ACCESS_CONTROL_TAG */ + VAR_LOCAL_ZONE_OVERRIDE = 473, /* VAR_LOCAL_ZONE_OVERRIDE */ + VAR_ACCESS_CONTROL_TAG_ACTION = 474, /* VAR_ACCESS_CONTROL_TAG_ACTION */ + VAR_ACCESS_CONTROL_TAG_DATA = 475, /* VAR_ACCESS_CONTROL_TAG_DATA */ + VAR_VIEW = 476, /* VAR_VIEW */ + VAR_ACCESS_CONTROL_VIEW = 477, /* VAR_ACCESS_CONTROL_VIEW */ + VAR_VIEW_FIRST = 478, /* VAR_VIEW_FIRST */ + VAR_SERVE_EXPIRED = 479, /* VAR_SERVE_EXPIRED */ + VAR_SERVE_EXPIRED_TTL = 480, /* VAR_SERVE_EXPIRED_TTL */ + VAR_SERVE_EXPIRED_TTL_RESET = 481, /* VAR_SERVE_EXPIRED_TTL_RESET */ + VAR_SERVE_EXPIRED_REPLY_TTL = 482, /* VAR_SERVE_EXPIRED_REPLY_TTL */ + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 483, /* VAR_SERVE_EXPIRED_CLIENT_TIMEOUT */ + VAR_FAKE_DSA = 484, /* VAR_FAKE_DSA */ + VAR_FAKE_SHA1 = 485, /* VAR_FAKE_SHA1 */ + VAR_LOG_IDENTITY = 486, /* VAR_LOG_IDENTITY */ + VAR_HIDE_TRUSTANCHOR = 487, /* VAR_HIDE_TRUSTANCHOR */ + VAR_TRUST_ANCHOR_SIGNALING = 488, /* VAR_TRUST_ANCHOR_SIGNALING */ + VAR_AGGRESSIVE_NSEC = 489, /* VAR_AGGRESSIVE_NSEC */ + VAR_USE_SYSTEMD = 490, /* VAR_USE_SYSTEMD */ + VAR_SHM_ENABLE = 491, /* VAR_SHM_ENABLE */ + VAR_SHM_KEY = 492, /* VAR_SHM_KEY */ + VAR_ROOT_KEY_SENTINEL = 493, /* VAR_ROOT_KEY_SENTINEL */ + VAR_DNSCRYPT = 494, /* VAR_DNSCRYPT */ + VAR_DNSCRYPT_ENABLE = 495, /* VAR_DNSCRYPT_ENABLE */ + VAR_DNSCRYPT_PORT = 496, /* VAR_DNSCRYPT_PORT */ + VAR_DNSCRYPT_PROVIDER = 497, /* VAR_DNSCRYPT_PROVIDER */ + VAR_DNSCRYPT_SECRET_KEY = 498, /* VAR_DNSCRYPT_SECRET_KEY */ + VAR_DNSCRYPT_PROVIDER_CERT = 499, /* VAR_DNSCRYPT_PROVIDER_CERT */ + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 500, /* VAR_DNSCRYPT_PROVIDER_CERT_ROTATED */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 501, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE */ + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 502, /* VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS */ + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 503, /* VAR_DNSCRYPT_NONCE_CACHE_SIZE */ + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 504, /* VAR_DNSCRYPT_NONCE_CACHE_SLABS */ + VAR_IPSECMOD_ENABLED = 505, /* VAR_IPSECMOD_ENABLED */ + VAR_IPSECMOD_HOOK = 506, /* VAR_IPSECMOD_HOOK */ + VAR_IPSECMOD_IGNORE_BOGUS = 507, /* VAR_IPSECMOD_IGNORE_BOGUS */ + VAR_IPSECMOD_MAX_TTL = 508, /* VAR_IPSECMOD_MAX_TTL */ + VAR_IPSECMOD_WHITELIST = 509, /* VAR_IPSECMOD_WHITELIST */ + VAR_IPSECMOD_STRICT = 510, /* VAR_IPSECMOD_STRICT */ + VAR_CACHEDB = 511, /* VAR_CACHEDB */ + VAR_CACHEDB_BACKEND = 512, /* VAR_CACHEDB_BACKEND */ + VAR_CACHEDB_SECRETSEED = 513, /* VAR_CACHEDB_SECRETSEED */ + VAR_CACHEDB_REDISHOST = 514, /* VAR_CACHEDB_REDISHOST */ + VAR_CACHEDB_REDISPORT = 515, /* VAR_CACHEDB_REDISPORT */ + VAR_CACHEDB_REDISTIMEOUT = 516, /* VAR_CACHEDB_REDISTIMEOUT */ + VAR_CACHEDB_REDISEXPIRERECORDS = 517, /* VAR_CACHEDB_REDISEXPIRERECORDS */ + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 518, /* VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM */ + VAR_FOR_UPSTREAM = 519, /* VAR_FOR_UPSTREAM */ + VAR_AUTH_ZONE = 520, /* VAR_AUTH_ZONE */ + VAR_ZONEFILE = 521, /* VAR_ZONEFILE */ + VAR_MASTER = 522, /* VAR_MASTER */ + VAR_URL = 523, /* VAR_URL */ + VAR_FOR_DOWNSTREAM = 524, /* VAR_FOR_DOWNSTREAM */ + VAR_FALLBACK_ENABLED = 525, /* VAR_FALLBACK_ENABLED */ + VAR_TLS_ADDITIONAL_PORT = 526, /* VAR_TLS_ADDITIONAL_PORT */ + VAR_LOW_RTT = 527, /* VAR_LOW_RTT */ + VAR_LOW_RTT_PERMIL = 528, /* VAR_LOW_RTT_PERMIL */ + VAR_FAST_SERVER_PERMIL = 529, /* VAR_FAST_SERVER_PERMIL */ + VAR_FAST_SERVER_NUM = 530, /* VAR_FAST_SERVER_NUM */ + VAR_ALLOW_NOTIFY = 531, /* VAR_ALLOW_NOTIFY */ + VAR_TLS_WIN_CERT = 532, /* VAR_TLS_WIN_CERT */ + VAR_TCP_CONNECTION_LIMIT = 533, /* VAR_TCP_CONNECTION_LIMIT */ + VAR_FORWARD_NO_CACHE = 534, /* VAR_FORWARD_NO_CACHE */ + VAR_STUB_NO_CACHE = 535, /* VAR_STUB_NO_CACHE */ + VAR_LOG_SERVFAIL = 536, /* VAR_LOG_SERVFAIL */ + VAR_DENY_ANY = 537, /* VAR_DENY_ANY */ + VAR_UNKNOWN_SERVER_TIME_LIMIT = 538, /* VAR_UNKNOWN_SERVER_TIME_LIMIT */ + VAR_LOG_TAG_QUERYREPLY = 539, /* VAR_LOG_TAG_QUERYREPLY */ + VAR_STREAM_WAIT_SIZE = 540, /* VAR_STREAM_WAIT_SIZE */ + VAR_TLS_CIPHERS = 541, /* VAR_TLS_CIPHERS */ + VAR_TLS_CIPHERSUITES = 542, /* VAR_TLS_CIPHERSUITES */ + VAR_TLS_USE_SNI = 543, /* VAR_TLS_USE_SNI */ + VAR_IPSET = 544, /* VAR_IPSET */ + VAR_IPSET_NAME_V4 = 545, /* VAR_IPSET_NAME_V4 */ + VAR_IPSET_NAME_V6 = 546, /* VAR_IPSET_NAME_V6 */ + VAR_TLS_SESSION_TICKET_KEYS = 547, /* VAR_TLS_SESSION_TICKET_KEYS */ + VAR_RPZ = 548, /* VAR_RPZ */ + VAR_TAGS = 549, /* VAR_TAGS */ + VAR_RPZ_ACTION_OVERRIDE = 550, /* VAR_RPZ_ACTION_OVERRIDE */ + VAR_RPZ_CNAME_OVERRIDE = 551, /* VAR_RPZ_CNAME_OVERRIDE */ + VAR_RPZ_LOG = 552, /* VAR_RPZ_LOG */ + VAR_RPZ_LOG_NAME = 553, /* VAR_RPZ_LOG_NAME */ + VAR_DYNLIB = 554, /* VAR_DYNLIB */ + VAR_DYNLIB_FILE = 555, /* VAR_DYNLIB_FILE */ + VAR_EDNS_CLIENT_STRING = 556, /* VAR_EDNS_CLIENT_STRING */ + VAR_EDNS_CLIENT_STRING_OPCODE = 557, /* VAR_EDNS_CLIENT_STRING_OPCODE */ + VAR_NSID = 558 /* VAR_NSID */ }; + typedef enum yytokentype yytoken_kind_t; #endif -/* Tokens. */ +/* Token kinds. */ +#define YYEOF 0 +#define YYerror 256 +#define YYUNDEF 257 #define SPACE 258 #define LETTER 259 #define NEWLINE 260 @@ -652,6 +662,7 @@ extern int yydebug; #define VAR_DYNLIB_FILE 555 #define VAR_EDNS_CLIENT_STRING 556 #define VAR_EDNS_CLIENT_STRING_OPCODE 557 +#define VAR_NSID 558 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -661,7 +672,7 @@ union YYSTYPE char* str; -#line 665 "util/configparser.h" +#line 676 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index 4d6b5e3fb..cb9d898b2 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -179,7 +179,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME %token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_STRING -%token VAR_EDNS_CLIENT_STRING_OPCODE +%token VAR_EDNS_CLIENT_STRING_OPCODE VAR_NSID %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -293,7 +293,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | server_tls_use_sni | server_edns_client_string | - server_edns_client_string_opcode + server_edns_client_string_opcode | server_nsid ; stubstart: VAR_STUB_ZONE { @@ -1304,6 +1304,22 @@ server_version: VAR_VERSION STRING_ARG cfg_parser->cfg->version = $2; } ; +server_nsid: VAR_NSID STRING_ARG + { + OUTYY(("P(server_nsid:%s)\n", $2)); + free(cfg_parser->cfg->nsid_cfg_str); + cfg_parser->cfg->nsid_cfg_str = $2; + free(cfg_parser->cfg->nsid); + cfg_parser->cfg->nsid = NULL; + cfg_parser->cfg->nsid_len = 0; + if (*$2 == 0) + ; /* pass; empty string is not setting nsid */ + else if (!(cfg_parser->cfg->nsid = cfg_parse_nsid( + $2, &cfg_parser->cfg->nsid_len))) + yyerror("the NSID must be either a hex string or an " + "ascii character string prepended with ascii_."); + } + ; server_so_rcvbuf: VAR_SO_RCVBUF STRING_ARG { OUTYY(("P(server_so_rcvbuf:%s)\n", $2)); diff --git a/util/edns.c b/util/edns.c index ddbb46e89..bfb6d65ca 100644 --- a/util/edns.c +++ b/util/edns.c @@ -160,5 +160,10 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, !edns_keepalive(edns_out, edns_in, c, region)) return 0; + if (cfg->nsid && edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_NSID) + && !edns_opt_list_append(&edns_out->opt_list, + LDNS_EDNS_NSID, cfg->nsid_len, cfg->nsid, region)) + return 0; + return 1; } From 1ebf851bf0906dab0739fed9426c8184e2f59746 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 09:51:26 +0100 Subject: [PATCH 314/394] - Fix #360: for the additionally reported TCP Fast Open makes TCP connections fail, in that case we print a hint that this is happening with the error in the logs. --- doc/Changelog | 5 +++++ util/netevent.c | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 30b8d34a1..1e895f9f2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +2 December 2020: Wouter + - Fix #360: for the additionally reported TCP Fast Open makes TCP + connections fail, in that case we print a hint that this is + happening with the error in the logs. + 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low verbosity. diff --git a/util/netevent.c b/util/netevent.c index 311a114ee..1a5d22892 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1594,6 +1594,13 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif +#ifdef ENOTCONN + if(errno == ENOTCONN) { + log_err_addr("read (in tcp s) failed and this could be because TCP Fast Open is enabled [--disable-tfo-client --disable-tfo-server] but does not work", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); + return 0; + } +#endif #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; From 16c496bff66faecef693ecadbd386f861b553752 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 10:10:27 +0100 Subject: [PATCH 315/394] - Fix #356: deadlock when listening tcp. --- doc/Changelog | 1 + services/listen_dnsport.c | 10 +++++----- util/netevent.c | 28 +++++++++++++++++----------- util/netevent.h | 10 ++++++++++ 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 1e895f9f2..405060fc4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix #360: for the additionally reported TCP Fast Open makes TCP connections fail, in that case we print a hint that this is happening with the error in the logs. + - Fix #356: deadlock when listening tcp. 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index d63c0e0aa..709c9e6ce 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1821,12 +1821,12 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) req->cp->tcp_is_reading = 0; comm_point_stop_listening(req->cp); comm_point_start_listening(req->cp, -1, - req->cp->tcp_timeout_msec); + adjusted_tcp_timeout(req->cp)); } else if(rd) { req->cp->tcp_is_reading = 1; comm_point_stop_listening(req->cp); comm_point_start_listening(req->cp, -1, - req->cp->tcp_timeout_msec); + adjusted_tcp_timeout(req->cp)); /* and also read it (from SSL stack buffers), so * no event read event is expected since the remainder of * the TLS frame is sitting in the buffers. */ @@ -1834,7 +1834,7 @@ tcp_req_info_setup_listen(struct tcp_req_info* req) } else { comm_point_stop_listening(req->cp); comm_point_start_listening(req->cp, -1, - req->cp->tcp_timeout_msec); + adjusted_tcp_timeout(req->cp)); comm_point_listen_for_rw(req->cp, 0, 0); } } @@ -1947,7 +1947,7 @@ tcp_req_info_handle_readdone(struct tcp_req_info* req) send_it: c->tcp_is_reading = 0; comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, adjusted_tcp_timeout(c)); return; } req->in_worker_handle = 0; @@ -2065,7 +2065,7 @@ tcp_req_info_send_reply(struct tcp_req_info* req) /* switch to listen to write events */ comm_point_stop_listening(req->cp); comm_point_start_listening(req->cp, -1, - req->cp->tcp_timeout_msec); + adjusted_tcp_timeout(req->cp)); return; } /* queue up the answer behind the others already pending */ diff --git a/util/netevent.c b/util/netevent.c index 1a5d22892..98796a788 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -762,6 +762,13 @@ comm_point_udp_callback(int fd, short event, void* arg) } } +int adjusted_tcp_timeout(struct comm_point* c) +{ + if(c->tcp_timeout_msec < TCP_QUERY_TIMEOUT_MINIMUM) + return TCP_QUERY_TIMEOUT_MINIMUM; + return c->tcp_timeout_msec; +} + /** Use a new tcp handler for new query fd, set to read query */ static void setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) @@ -795,10 +802,7 @@ setup_tcp_handler(struct comm_point* c, int fd, int cur, int max) c->tcp_timeout_msec /= 500; else if (handler_usage > 80) c->tcp_timeout_msec = 0; - comm_point_start_listening(c, fd, - c->tcp_timeout_msec < TCP_QUERY_TIMEOUT_MINIMUM - ? TCP_QUERY_TIMEOUT_MINIMUM - : c->tcp_timeout_msec); + comm_point_start_listening(c, fd, adjusted_tcp_timeout(c)); } void comm_base_handle_slow_accept(int ATTR_UNUSED(fd), @@ -1108,10 +1112,11 @@ tcp_callback_writer(struct comm_point* c) if( (*c->callback)(c, c->cb_arg, NETEVENT_PKT_WRITTEN, &c->repinfo) ) { comm_point_start_listening(c, -1, - c->tcp_timeout_msec); + adjusted_tcp_timeout(c)); } } else { - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, + adjusted_tcp_timeout(c)); } } } @@ -1132,7 +1137,8 @@ tcp_callback_reader(struct comm_point* c) comm_point_stop_listening(c); fptr_ok(fptr_whitelist_comm_point(c->callback)); if( (*c->callback)(c, c->cb_arg, NETEVENT_NOERROR, &c->repinfo) ) { - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, + adjusted_tcp_timeout(c)); } } } @@ -2656,7 +2662,7 @@ comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point* c) if(nghttp2_session_want_write(c->h2_session->session)) { c->tcp_is_reading = 0; comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, adjusted_tcp_timeout(c)); } else if(!nghttp2_session_want_read(c->h2_session->session)) return 0; /* connection can be closed */ return 1; @@ -2974,7 +2980,7 @@ comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point* c) if(nghttp2_session_want_read(c->h2_session->session)) { c->tcp_is_reading = 1; comm_point_stop_listening(c); - comm_point_start_listening(c, -1, c->tcp_timeout_msec); + comm_point_start_listening(c, -1, adjusted_tcp_timeout(c)); } else if(!nghttp2_session_want_write(c->h2_session->session)) return 0; /* connection can be closed */ return 1; @@ -3932,11 +3938,11 @@ comm_point_send_reply(struct comm_reply *repinfo) repinfo->c->tcp_is_reading = 0; comm_point_stop_listening(repinfo->c); comm_point_start_listening(repinfo->c, -1, - repinfo->c->tcp_timeout_msec); + adjusted_tcp_timeout(repinfo->c)); return; } else { comm_point_start_listening(repinfo->c, -1, - repinfo->c->tcp_timeout_msec); + adjusted_tcp_timeout(repinfo->c)); } } } diff --git a/util/netevent.h b/util/netevent.h index daa954b64..266a74ff3 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -661,6 +661,16 @@ void comm_point_start_listening(struct comm_point* c, int newfd, int msec); */ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr); +/** + * For TCP handlers that use c->tcp_timeout_msec, this routine adjusts + * it with the minimum. Otherwise, a 0 value advertised without the + * minimum applied moves to a 0 in comm_point_start_listening and that + * routine treats it as no timeout, listen forever, which is not wanted. + * @param c: comm point to use the tcp_timeout_msec of. + * @return adjusted tcp_timeout_msec value with the minimum if smaller. + */ +int adjusted_tcp_timeout(struct comm_point* c); + /** * Get size of memory used by comm point. * For TCP handlers this includes subhandlers. From cbb4575a18ecbda829b949306de38817d0b3495f Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Wed, 2 Dec 2020 10:58:05 +0100 Subject: [PATCH 316/394] Document existence of option --- doc/Changelog | 4 ++++ doc/FEATURES | 1 + doc/TODO | 1 - doc/unbound.conf.5.in | 5 +++++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 30b8d34a1..d5121864e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +2 December 2020: Willem + - Support for RFC5001: DNS Name Server Identifier (NSID) Option + with the nsid: option in unbound.conf + 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low verbosity. diff --git a/doc/FEATURES b/doc/FEATURES index 076988ea9..8d69aba9b 100644 --- a/doc/FEATURES +++ b/doc/FEATURES @@ -39,6 +39,7 @@ RFC 4343: case insensitive handling of domain names. RFC 4509: SHA256 DS hash. RFC 4592: wildcards. RFC 4697: No DNS Resolution Misbehavior. +RFC 5001: DNS Name Server Identifier (NSID) Option RFC 5011: update of trust anchors with timers. RFC 5155: NSEC3, NSEC3PARAM types RFC 5358: reflectors-are-evil: access control list for recursive diff --git a/doc/TODO b/doc/TODO index a2690451a..839656154 100644 --- a/doc/TODO +++ b/doc/TODO @@ -14,7 +14,6 @@ o (option) store primed key data in a overlaid keyhints file (sort of like draft o windows version, auto update feature, a query to check for the version. o command the server with TSIG inband. get-config, clearcache, get stats, get memstats, get ..., reload, clear one zone from cache -o NSID rfc 5001 support. o timers rfc 5011 support. o Treat YXDOMAIN from a DNAME properly, in iterator (not throwaway), validator. o make timeout backoffs randomized (a couple percent random) to spread traffic. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 38bbc44df..0423f6200 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -819,6 +819,11 @@ If enabled version.server and version.bind queries are refused. Set the version to report. If set to "", the default, then the package version is returned. .TP +.B nsid:\fR +Add the specified nsid to the EDNS section of the answer when queried +with an NSID EDNS enabled packet. As a sequence of hex characters or +with ascii_ prefix and then an ascii string. +.TP .B hide\-trustanchor: \fI If enabled trustanchor.unbound queries are refused. .TP From eb052e15434f933202b3067fc3fc68eaacdb6311 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 11:51:54 +0100 Subject: [PATCH 317/394] - Fix unbound-dnstap-socket to not use log routine from interrupt handler and not print so frequently when invoked in sequence. --- dnstap/unbound-dnstap-socket.c | 3 ++- doc/Changelog | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 3ebe2b4e4..8c37654e8 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -1166,7 +1166,8 @@ int sig_quit = 0; /** signal handler for user quit */ static RETSIGTYPE main_sigh(int sig) { - verbose(VERB_ALGO, "exit on signal %d\n", sig); + if(!sig_quit) + fprintf(stderr, "exit on signal %d\n", sig); if(sig_base) { ub_event_base_loopexit(sig_base); sig_base = NULL; diff --git a/doc/Changelog b/doc/Changelog index 405060fc4..9bb31615f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ connections fail, in that case we print a hint that this is happening with the error in the logs. - Fix #356: deadlock when listening tcp. + - Fix unbound-dnstap-socket to not use log routine from interrupt + handler and not print so frequently when invoked in sequence. 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low From e049fb303c39eef9cda4a70c6e161819d7e08ffd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 11:58:24 +0100 Subject: [PATCH 318/394] - Fix on windows to ignore connection failure on UDP, unless verbose. --- doc/Changelog | 1 + util/netevent.c | 11 ++++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9bb31615f..9d055b5df 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - Fix #356: deadlock when listening tcp. - Fix unbound-dnstap-socket to not use log routine from interrupt handler and not print so frequently when invoked in sequence. + - Fix on windows to ignore connection failure on UDP, unless verbose. 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low diff --git a/util/netevent.c b/util/netevent.c index 98796a788..e7a674f8a 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -583,6 +583,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, static int udp_recv_needs_log(int err) { switch(err) { +#ifndef USE_WINSOCK case ECONNREFUSED: # ifdef ENETUNREACH case ENETUNREACH: @@ -596,6 +597,13 @@ static int udp_recv_needs_log(int err) # ifdef ENETDOWN case ENETDOWN: # endif +#else /* USE_WINSOCK */ + case WSAECONNREFUSED: + case WSAENETUNREACH: + case WSAEHOSTDOWN: + case WSAEHOSTUNREACH: + case WSAENETDOWN: +#endif if(verbosity >= VERB_ALGO) return 1; return 0; @@ -736,7 +744,8 @@ comm_point_udp_callback(int fd, short event, void* arg) #else if(WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAECONNRESET && - WSAGetLastError()!= WSAEWOULDBLOCK) + WSAGetLastError()!= WSAEWOULDBLOCK && + udp_recv_needs_log(WSAGetLastError())) log_err("recvfrom failed: %s", wsa_strerror(WSAGetLastError())); #endif From 0502ab3026af59673b21133eb7c5a72126b37d66 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 15:42:24 +0100 Subject: [PATCH 319/394] - Fix for #283: fix stream reuse and tcp fast open. --- doc/Changelog | 1 + util/netevent.c | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 9d055b5df..890e439fe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ - Fix unbound-dnstap-socket to not use log routine from interrupt handler and not print so frequently when invoked in sequence. - Fix on windows to ignore connection failure on UDP, unless verbose. + - Fix for #283: fix stream reuse and tcp fast open. 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low diff --git a/util/netevent.c b/util/netevent.c index e7a674f8a..eca2df83f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2064,7 +2064,11 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } return; } - if(event&UB_EV_READ) { + if(event&UB_EV_READ +#ifdef USE_MSG_FASTOPEN + && !c->tcp_do_fastopen +#endif + ) { int has_tcpq = (c->tcp_req_info != NULL); int* moreread = c->tcp_more_read_again; if(!comm_point_tcp_handle_read(fd, c, 0)) { From 9eeb95a960460399d66f13fca02fb50464c50e10 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 2 Dec 2020 16:17:26 +0100 Subject: [PATCH 320/394] - Fix update, with write event check with streamreuse and fastopen. --- doc/Changelog | 1 + util/netevent.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 890e439fe..4b6a4a318 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,7 @@ handler and not print so frequently when invoked in sequence. - Fix on windows to ignore connection failure on UDP, unless verbose. - Fix for #283: fix stream reuse and tcp fast open. + - Fix update, with write event check with streamreuse and fastopen. 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low diff --git a/util/netevent.c b/util/netevent.c index eca2df83f..d3e268a01 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2066,7 +2066,7 @@ comm_point_tcp_handle_callback(int fd, short event, void* arg) } if(event&UB_EV_READ #ifdef USE_MSG_FASTOPEN - && !c->tcp_do_fastopen + && !(c->tcp_do_fastopen && (event&UB_EV_WRITE)) #endif ) { int has_tcpq = (c->tcp_req_info != NULL); From 37d751e1353b19dac1025c9b3a64c14812346ebc Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Dec 2020 10:14:14 +0100 Subject: [PATCH 321/394] Code repo continues for 1.13.1 in development. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 4 +++- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/configure b/configure index 7fa20f987..00d36a361 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.13.0. +# Generated by GNU Autoconf 2.69 for unbound 1.13.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.13.0' -PACKAGE_STRING='unbound 1.13.0' +PACKAGE_VERSION='1.13.1' +PACKAGE_STRING='unbound 1.13.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1459,7 +1459,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.13.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.13.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1524,7 +1524,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.13.0:";; + short | recursive ) echo "Configuration of unbound 1.13.1:";; esac cat <<\_ACEOF @@ -1752,7 +1752,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.13.0 +unbound configure 1.13.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2461,7 +2461,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.13.0, which was +It was created by unbound $as_me 1.13.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2813,11 +2813,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=13 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=11 +LIBUNBOUND_REVISION=12 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2896,6 +2896,7 @@ LIBUNBOUND_AGE=1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 # 1.13.0 had 9:11:1 +# 1.13.1 had 9:12:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21731,7 +21732,7 @@ _ACEOF -version=1.13.0 +version=1.13.1 date=`date +'%b %e, %Y'` @@ -22250,7 +22251,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.13.0, which was +This file was extended by unbound $as_me 1.13.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22316,7 +22317,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.13.0 +unbound config.status 1.13.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5385f7747..d648f55ad 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[13]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=11 +LIBUNBOUND_REVISION=12 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -97,6 +97,7 @@ LIBUNBOUND_AGE=1 # 1.11.0 had 9:9:1 # 1.12.0 had 9:10:1 # 1.13.0 had 9:11:1 +# 1.13.1 had 9:12:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 4b6a4a318..d8ffabd52 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -17,7 +17,9 @@ - Fix assertion failure on double callback when iterator loses interest in query at head of line that then has the tcp stream not kept for reuse. - - tag for the 1.13.0rc4 release. + - tag for the 1.13.0rc4 release. This also became the 1.13.0 + release version with the streamreuse and fastopen fix from + 2 dec 2020. The code repo continues for 1.13.1 in development. 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. From e21d38dcb9da0d500c0f1e988c72d21f17245598 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Dec 2020 10:26:37 +0100 Subject: [PATCH 322/394] - make depend. --- Makefile.in | 489 +++++++++++++++++++++++++++++--------------------- doc/Changelog | 8 +- 2 files changed, 289 insertions(+), 208 deletions(-) diff --git a/Makefile.in b/Makefile.in index d2600e71f..4ca46496b 100644 --- a/Makefile.in +++ b/Makefile.in @@ -429,6 +429,7 @@ dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h dnstap_fstrm.lo dnstap_fstrm.o: $(srcdir)/dnstap/dnstap_fstrm.c config.h $(srcdir)/dnstap/dnstap_fstrm.h unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnstap-socket.c config.h $(srcdir)/dnstap/dtstream.h +dynlibmod.lo dynlibdmod.o: $(srcdir)/dynlibmod/dynlibmod.c config.h $(srcdir)/dynlibmod/dynlibmod.h # dnscrypt dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ @@ -826,13 +827,16 @@ modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/service $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ - $(srcdir)/ipset/ipset.h $(srcdir)/dynlibmod/dynlibmod.h + $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ + $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) $(srcdir)/cachedb/cachedb.h \ + $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/alloc.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \ @@ -863,7 +867,8 @@ outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c confi $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ - $(srcdir)/dnstap/dnstap.h + $(srcdir)/util/edns.h $(srcdir)/dnstap/dnstap.h \ + alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -884,7 +889,8 @@ config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/ut $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/util/iana_ports.inc + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/util/iana_ports.inc configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \ $(srcdir)/util/config_file.h util/configparser.h configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \ @@ -913,38 +919,31 @@ authzone.lo authzone.o: $(srcdir)/services/authzone.c config.h $(srcdir)/service $(srcdir)/util/data/msgencode.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h \ $(srcdir)/services/cache/dns.h $(srcdir)/services/outside_network.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h $(srcdir)/validator/val_nsec3.h \ - $(srcdir)/validator/val_secalgo.h + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_secalgo.h fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/dnscrypt/cert.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \ - $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \ - $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \ - $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \ - $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \ - $(PYTHONMOD_HEADER) $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/util/net_help.h \ - $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h \ - $(srcdir)/dynlibmod/dynlibmod.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h \ + $(srcdir)/services/outside_network.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \ + $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \ + $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \ + $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/libunbound/worker.h $(PYTHONMOD_HEADER) $(DYNLIBMOD_HEADER) \ + $(srcdir)/cachedb/cachedb.h $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/ipset/ipset.h $(srcdir)/dnstap/dtstream.h locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h -mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h +mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h @@ -957,12 +956,14 @@ netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/neteve $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/services/listen_dnsport.h \ + net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h \ - $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h + $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ + random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ @@ -978,11 +979,11 @@ rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/util/rtt.h $(srcdir)/itera $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h -edns.lo edns.o: $(srcdir)/util/edns.c config.h $(srcdir)/util/edns.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/packed_rrset.h +edns.lo edns.o: $(srcdir)/util/edns.c config.h $(srcdir)/util/edns.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/regional.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/storage/dnstree.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/net_help.h @@ -1016,7 +1017,8 @@ tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/u $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/ub_event.h ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/util/tube.h \ + ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \ @@ -1026,7 +1028,8 @@ ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ @@ -1039,7 +1042,8 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/val $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h + $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \ + val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h \ @@ -1069,11 +1073,13 @@ val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/ val_kentry.lo val_kentry.o: $(srcdir)/validator/val_kentry.c config.h $(srcdir)/validator/val_kentry.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h -val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ + +val_neg.lo val_neg.o: $(srcdir)/validator/val_neg.c config.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ + $(srcdir)/validator/val_nsec.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_utils.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ $(srcdir)/services/cache/dns.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h val_nsec3.lo val_nsec3.o: $(srcdir)/validator/val_nsec3.c config.h $(srcdir)/validator/val_nsec3.h \ @@ -1091,15 +1097,17 @@ val_nsec.lo val_nsec.o: $(srcdir)/validator/val_nsec.c config.h $(srcdir)/valida val_secalgo.lo val_secalgo.o: $(srcdir)/validator/val_secalgo.c config.h $(srcdir)/util/data/packed_rrset.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/val_nsec3.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ - $(srcdir)/sldns/sbuffer.h + $(srcdir)/sldns/sbuffer.h \ + val_sigcrypt.lo val_sigcrypt.o: $(srcdir)/validator/val_sigcrypt.c config.h \ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/val_secalgo.h \ $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/dname.h $(srcdir)/util/rbtree.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \ - $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h \ - $(srcdir)/sldns/wire2str.h + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h \ + val_utils.lo val_utils.o: $(srcdir)/validator/val_utils.c config.h $(srcdir)/validator/val_utils.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/validator/validator.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ @@ -1120,15 +1128,43 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h -edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h -subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h +edns-subnet.lo edns-subnet.o: $(srcdir)/edns-subnet/edns-subnet.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h +subnetmod.lo subnetmod.o: $(srcdir)/edns-subnet/subnetmod.c config.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ + $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/respip/respip.h $(srcdir)/services/cache/dns.h $(srcdir)/util/regional.h \ + $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h addrtree.lo addrtree.o: $(srcdir)/edns-subnet/addrtree.c config.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/edns-subnet/addrtree.h -subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h -cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h -redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h +subnet-whitelist.lo subnet-whitelist.o: $(srcdir)/edns-subnet/subnet-whitelist.c config.h \ + $(srcdir)/edns-subnet/edns-subnet.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ + $(srcdir)/edns-subnet/subnet-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ + $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h +cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h $(srcdir)/cachedb/cachedb.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/cachedb/redis.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/msgencode.h $(srcdir)/services/cache/dns.h \ + $(srcdir)/validator/val_neg.h $(srcdir)/util/rbtree.h $(srcdir)/validator/val_secalgo.h \ + $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h +redis.lo redis.o: $(srcdir)/cachedb/redis.c config.h $(srcdir)/cachedb/redis.h $(srcdir)/cachedb/cachedb.h \ + $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h \ + $(srcdir)/sldns/sbuffer.h respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ @@ -1143,31 +1179,40 @@ checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/u $(srcdir)/testcode/checklocks.h dnstap.lo dnstap.o: $(srcdir)/dnstap/dnstap.c config.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/dnstap/dnstap.h \ - dnstap/dnstap.pb-c.h + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/dnstap/dnstap.h \ + $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h dnstap/dnstap.pb-c.h dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h \ -dynlibmod.lo dynlibmod.o: $(srcdir)/dynlibmod/dynlibmod.c config.h $(srcdir)/dynlibmod/dynlibmod.h \ +dnstap_fstrm.lo dnstap_fstrm.o: $(srcdir)/dnstap/dnstap_fstrm.c config.h $(srcdir)/dnstap/dnstap_fstrm.h \ + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h +dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ + $(srcdir)/util/net_help.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \ + $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/sldns/sbuffer.h \ + +ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h $(srcdir)/ipsecmod/ipsecmod.h \ $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h\ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h $(srcdir)/ipsecmod/ipsecmod-whitelist.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/tube.h \ - $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h -dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \ - $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/storage/lookup3.h -ipsecmod.lo ipsecmod.o: $(srcdir)/ipsecmod/ipsecmod.c config.h + $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ + $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/sldns/wire2str.h +ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h \ + $(srcdir)/ipsecmod/ipsecmod.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ + $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/rbtree.h \ + $(srcdir)/ipsecmod/ipsecmod-whitelist.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/regional.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/str2wire.h ipset.lo ipset.o: $(srcdir)/ipset/ipset.c config.h $(srcdir)/ipset/ipset.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h -ipsecmod-whitelist.lo ipsecmod-whitelist.o: $(srcdir)/ipsecmod/ipsecmod-whitelist.c config.h + $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h @@ -1176,7 +1221,8 @@ unitdname.lo unitdname.o: $(srcdir)/testcode/unitdname.c config.h $(srcdir)/util $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h unitlruhash.lo unitlruhash.o: $(srcdir)/testcode/unitlruhash.c config.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/util/log.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/storage/slabhash.h -unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ +unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/keyraw.h \ $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/util/timehist.h $(srcdir)/iterator/iterator.h \ $(srcdir)/services/outbound_list.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ @@ -1184,7 +1230,8 @@ unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h $(srcdir)/sldns/r $(srcdir)/sldns/pkthdr.h $(srcdir)/libunbound/unbound.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/random.h $(srcdir)/respip/respip.h \ - $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/outside_network.h unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \ $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ @@ -1216,7 +1263,13 @@ testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcod unitldns.lo unitldns.o: $(srcdir)/testcode/unitldns.c config.h $(srcdir)/util/log.h $(srcdir)/testcode/unitmain.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ $(srcdir)/sldns/parseutil.h -unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h +unitecs.lo unitecs.o: $(srcdir)/testcode/unitecs.c config.h $(srcdir)/util/log.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/edns-subnet/addrtree.h \ + $(srcdir)/edns-subnet/subnetmod.h $(srcdir)/services/outbound_list.h $(srcdir)/util/alloc.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/data/dname.h \ + $(srcdir)/edns-subnet/edns-subnet.h unitauth.lo unitauth.o: $(srcdir)/testcode/unitauth.c config.h $(srcdir)/services/authzone.h \ $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgparse.h \ @@ -1233,40 +1286,43 @@ acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/ac $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h $(srcdir)/daemon/cachedump.h \ - $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \ - $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \ - $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \ - $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \ - $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ +cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \ + $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ - $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \ + $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/sldns/str2wire.h +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ $(srcdir)/sldns/keyraw.h -remote.lo remote.o: $(srcdir)/daemon/remote.c config.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h \ - $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/alloc.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ +remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \ + $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ + $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \ $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1291,19 +1347,21 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \ $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ - $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/util/net_help.h \ - $(srcdir)/util/ub_event.h + $(srcdir)/daemon/remote.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ + $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ @@ -1311,23 +1369,24 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ - $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h \ - $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \ - $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c \ - $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/remote.h \ + $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \ @@ -1346,34 +1405,35 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/daemon.h \ - $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/listen_dnsport.h \ - $(srcdir)/services/outside_network.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h \ - $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/edns.h \ - $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/validator/autotrust.h \ - $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h $(srcdir)/libunbound/unbound-event.h \ - $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/shm_side/shm_main.h \ - $(srcdir)/dnstap/dtstream.h + $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ + $(srcdir)/util/rtt.h $(srcdir)/services/cache/dns.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/respip/respip.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \ + $(srcdir)/util/edns.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ + $(srcdir)/validator/autotrust.h $(srcdir)/validator/val_anchor.h $(srcdir)/libunbound/context.h \ + $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \ + $(srcdir)/util/shm_side/shm_main.h $(srcdir)/dnstap/dtstream.h acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/acl_list.h \ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \ $(srcdir)/services/localzone.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h -daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ - $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/util/data/msgreply.h \ - $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \ - $(srcdir)/daemon/remote.h $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \ - $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h \ - $(srcdir)/util/storage/lookup3.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h \ +daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \ + $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ + $(srcdir)/daemon/worker.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ + $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/shm_side/shm_main.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/util/tcp_conn_limit.h $(srcdir)/util/edns.h \ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h $(srcdir)/services/cache/infra.h \ $(srcdir)/util/rtt.h $(srcdir)/services/localzone.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/services/rpz.h $(srcdir)/respip/respip.h $(srcdir)/util/random.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \ @@ -1391,7 +1451,9 @@ stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(s $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ - $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h + $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_neg.h $(srcdir)/edns-subnet/subnetmod.h \ + $(srcdir)/util/data/dname.h $(srcdir)/edns-subnet/addrtree.h $(srcdir)/edns-subnet/edns-subnet.h \ + replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h \ @@ -1401,13 +1463,14 @@ fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/t $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ - $(srcdir)/util/rbtree.h $(srcdir)/services/cache/infra.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \ - $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h + $(srcdir)/util/edns.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/config_file.h \ + $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \ + $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ + $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \ + $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ + $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h \ + $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \ @@ -1442,7 +1505,8 @@ unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/modstack.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h + $(srcdir)/libunbound/unbound.h $(srcdir)/respip/respip.h $(srcdir)/sldns/str2wire.h \ + $(PYTHONMOD_HEADER) $(srcdir)/edns-subnet/subnet-whitelist.h worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libunbound/context.h \ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ @@ -1463,76 +1527,83 @@ context.lo context.o: $(srcdir)/libunbound/context.c config.h $(srcdir)/libunbou $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h \ - $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h + $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/util/edns.h libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/unbound-event.h config.h $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h \ $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/libunbound/libworker.h \ $(srcdir)/util/config_file.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h \ - $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/util/ub_event.h \ - $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \ + $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/util/ub_event.h $(srcdir)/util/edns.h \ + $(srcdir)/util/storage/dnstree.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h \ $(srcdir)/sldns/sbuffer.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/services/cache/rrset.h \ $(srcdir)/util/storage/slabhash.h $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h \ $(srcdir)/services/rpz.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h -libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h $(srcdir)/libunbound/libworker.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/libunbound/worker.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h $(srcdir)/util/netevent.h \ - $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ - $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/util/config_file.h \ - $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h \ - $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h \ - $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \ - $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h \ - $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \ - $(srcdir)/sldns/str2wire.h +libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \ + $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ + $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/unbound-event.h \ + $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/outside_network.h \ + $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ + $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \ + $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \ + $(srcdir)/services/view.h $(srcdir)/util/config_file.h $(srcdir)/services/authzone.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/respip/respip.h $(srcdir)/services/cache/rrset.h \ + $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h \ + $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h $(srcdir)/util/storage/lookup3.h \ + $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \ + $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/str2wire.h unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h \ + asynclook.lo asynclook.o: $(srcdir)/testcode/asynclook.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \ $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/data/packed_rrset.h \ - $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h + $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/rrdef.h \ + streamtcp.lo streamtcp.o: $(srcdir)/testcode/streamtcp.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ $(srcdir)/util/net_help.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgparse.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/dname.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h + $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h \ + perf.lo perf.o: $(srcdir)/testcode/perf.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h delayer.lo delayer.o: $(srcdir)/testcode/delayer.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \ $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h -unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h $(srcdir)/util/log.h \ - $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h $(srcdir)/util/shm_side/shm_main.h \ - $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h \ - $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h $(srcdir)/services/authzone.h \ - $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ +unbound-control.lo unbound-control.o: $(srcdir)/smallapp/unbound-control.c config.h \ + $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \ + $(srcdir)/util/shm_side/shm_main.h $(srcdir)/libunbound/unbound.h $(srcdir)/daemon/stats.h \ + $(srcdir)/util/timehist.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/rpz.h \ + $(srcdir)/services/localzone.h $(srcdir)/util/rbtree.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/module.h \ + $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \ + $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/sbuffer.h \ + $(srcdir)/services/authzone.h $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/services/modstack.h $(srcdir)/respip/respip.h unbound-anchor.lo unbound-anchor.o: $(srcdir)/smallapp/unbound-anchor.c config.h $(srcdir)/libunbound/unbound.h \ - $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h -petal.lo petal.o: $(srcdir)/testcode/petal.c config.h + $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ + +petal.lo petal.o: $(srcdir)/testcode/petal.c config.h \ + unbound-dnstap-socket.lo unbound-dnstap-socket.o: $(srcdir)/dnstap/unbound-dnstap-socket.c config.h \ $(srcdir)/dnstap/dtstream.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/dnstap/dnstap_fstrm.h \ $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h \ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/config_file.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \ + dnstap/dnstap.pb-c.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \ - $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h + $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h \ + win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \ $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \ $(srcdir)/daemon/worker.h \ @@ -1540,8 +1611,8 @@ win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/libunbound/unbound.h $(srcdir)/util/module.h \ - $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h \ - $(srcdir)/util/net_help.h + $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \ + $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h $(srcdir)/util/net_help.h w_inst.lo w_inst.o: $(srcdir)/winrc/w_inst.c config.h $(srcdir)/winrc/w_inst.h $(srcdir)/winrc/win_svc.h unbound-service-install.lo unbound-service-install.o: $(srcdir)/winrc/unbound-service-install.c config.h \ $(srcdir)/winrc/w_inst.h @@ -1549,12 +1620,14 @@ unbound-service-remove.lo unbound-service-remove.o: $(srcdir)/winrc/unbound-serv $(srcdir)/winrc/w_inst.h anchor-update.lo anchor-update.o: $(srcdir)/winrc/anchor-update.c config.h $(srcdir)/libunbound/unbound.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/wire2str.h -keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h $(srcdir)/sldns/rrdef.h +keyraw.lo keyraw.o: $(srcdir)/sldns/keyraw.c config.h $(srcdir)/sldns/keyraw.h \ + $(srcdir)/sldns/rrdef.h \ + sbuffer.lo sbuffer.o: $(srcdir)/sldns/sbuffer.c config.h $(srcdir)/sldns/sbuffer.h wire2str.lo wire2str.o: $(srcdir)/sldns/wire2str.c config.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \ $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h \ - $(srcdir)/sldns/keyraw.h $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \ - $(srcdir)/util/log.h + $(srcdir)/sldns/keyraw.h \ + $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h parse.lo parse.o: $(srcdir)/sldns/parse.c config.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h \ $(srcdir)/sldns/sbuffer.h parseutil.lo parseutil.o: $(srcdir)/sldns/parseutil.c config.h $(srcdir)/sldns/parseutil.h @@ -1562,9 +1635,11 @@ rrdef.lo rrdef.o: $(srcdir)/sldns/rrdef.c config.h $(srcdir)/sldns/rrdef.h $(src str2wire.lo str2wire.o: $(srcdir)/sldns/str2wire.c config.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h \ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parse.h $(srcdir)/sldns/parseutil.h dohclient.lo dohclient.o: $(srcdir)/testcode/dohclient.c config.h $(srcdir)/sldns/wire2str.h \ - $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \ - $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \ - $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/net_help.h + $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/parseutil.h \ + $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/storage/lruhash.h \ + $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \ + $(srcdir)/sldns/pkthdr.h $(srcdir)/util/net_help.h \ + ctime_r.lo ctime_r.o: $(srcdir)/compat/ctime_r.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h fake-rfc2553.lo fake-rfc2553.o: $(srcdir)/compat/fake-rfc2553.c $(srcdir)/compat/fake-rfc2553.h config.h gmtime_r.lo gmtime_r.o: $(srcdir)/compat/gmtime_r.c config.h @@ -1579,9 +1654,11 @@ strlcat.lo strlcat.o: $(srcdir)/compat/strlcat.c config.h strlcpy.lo strlcpy.o: $(srcdir)/compat/strlcpy.c config.h strptime.lo strptime.o: $(srcdir)/compat/strptime.c config.h getentropy_freebsd.lo getentropy_freebsd.o: $(srcdir)/compat/getentropy_freebsd.c -getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h +getentropy_linux.lo getentropy_linux.o: $(srcdir)/compat/getentropy_linux.c config.h \ + getentropy_osx.lo getentropy_osx.o: $(srcdir)/compat/getentropy_osx.c -getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h +getentropy_solaris.lo getentropy_solaris.o: $(srcdir)/compat/getentropy_solaris.c config.h \ + getentropy_win.lo getentropy_win.o: $(srcdir)/compat/getentropy_win.c explicit_bzero.lo explicit_bzero.o: $(srcdir)/compat/explicit_bzero.c config.h arc4random.lo arc4random.o: $(srcdir)/compat/arc4random.c config.h $(srcdir)/compat/chacha_private.h diff --git a/doc/Changelog b/doc/Changelog index d8ffabd52..e1753a2db 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +3 December 2020: Wouter + - make depend. + 2 December 2020: Wouter - Fix #360: for the additionally reported TCP Fast Open makes TCP connections fail, in that case we print a hint that this is @@ -18,8 +21,9 @@ interest in query at head of line that then has the tcp stream not kept for reuse. - tag for the 1.13.0rc4 release. This also became the 1.13.0 - release version with the streamreuse and fastopen fix from - 2 dec 2020. The code repo continues for 1.13.1 in development. + release version on 3 dec 2020 with the streamreuse and fastopen + fix from 2 dec 2020. The code repo continues for 1.13.1 in + development. 27 November 2020: Wouter - Fix compile warning for type cast in http2_submit_dns_response. From b49cc2e66797dcf66c991bd7ff1d4986642bb088 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 3 Dec 2020 10:27:19 +0100 Subject: [PATCH 323/394] - iana portlist updated. --- doc/Changelog | 1 + util/iana_ports.inc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index e1753a2db..3aaa19338 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 3 December 2020: Wouter - make depend. + - iana portlist updated. 2 December 2020: Wouter - Fix #360: for the additionally reported TCP Fast Open makes TCP diff --git a/util/iana_ports.inc b/util/iana_ports.inc index d9978f92e..adeafc4ad 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -2014,6 +2014,7 @@ 2368, 2370, 2372, +2378, 2381, 2382, 2383, From a4fc32809cee523acfa9a3b82a9f5d6d46006e98 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Dec 2020 09:33:56 +0100 Subject: [PATCH 324/394] - Fix #371: unbound-control timeout when Unbound is not running. --- doc/Changelog | 3 ++ smallapp/unbound-control.c | 106 +++++++++++++++++++++++++++++++------ 2 files changed, 94 insertions(+), 15 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3aaa19338..af111d8a0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +11 December 2020: Wouter + - Fix #371: unbound-control timeout when Unbound is not running. + 3 December 2020: Wouter - make depend. - iana portlist updated. diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 842dbe0d8..93281736a 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -82,6 +82,9 @@ static void usage(void) ATTR_NORETURN; static void ssl_err(const char* s) ATTR_NORETURN; static void ssl_path_err(const char* s, const char *path) ATTR_NORETURN; +/** timeout to wait for connection over stream, in msec */ +#define UNBOUND_CONTROL_CONNECT_TIMEOUT 5000 + /** Give unbound-control usage, and exit (1). */ static void usage(void) @@ -545,6 +548,30 @@ setup_ctx(struct config_file* cfg) return ctx; } +/** check connect error */ +static void +checkconnecterr(int err, const char* svr, struct sockaddr_storage* addr, + socklen_t addrlen, int statuscmd, int useport) +{ +#ifndef USE_WINSOCK + if(!useport) log_err("connect: %s for %s", strerror(err), svr); + else log_err_addr("connect", strerror(err), addr, addrlen); + if(err == ECONNREFUSED && statuscmd) { + printf("unbound is stopped\n"); + exit(3); + } +#else + int wsaerr = err; + if(!useport) log_err("connect: %s for %s", wsa_strerror(wsaerr), svr); + else log_err_addr("connect", wsa_strerror(wsaerr), addr, addrlen); + if(wsaerr == WSAECONNREFUSED && statuscmd) { + printf("unbound is stopped\n"); + exit(3); + } +#endif + exit(1); +} + /** contact the server with TCP connect */ static int contact_server(const char* svr, struct config_file* cfg, int statuscmd) @@ -598,26 +625,75 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) if(fd == -1) { fatal_exit("socket: %s", sock_strerror(errno)); } + fd_set_nonblock(fd); if(connect(fd, (struct sockaddr*)&addr, addrlen) < 0) { #ifndef USE_WINSOCK - int err = errno; - if(!useport) log_err("connect: %s for %s", strerror(err), svr); - else log_err_addr("connect", strerror(err), &addr, addrlen); - if(err == ECONNREFUSED && statuscmd) { - printf("unbound is stopped\n"); - exit(3); - } -#else - int wsaerr = WSAGetLastError(); - if(!useport) log_err("connect: %s for %s", wsa_strerror(wsaerr), svr); - else log_err_addr("connect", wsa_strerror(wsaerr), &addr, addrlen); - if(wsaerr == WSAECONNREFUSED && statuscmd) { - printf("unbound is stopped\n"); - exit(3); +#ifdef EINPROGRESS + if(errno != EINPROGRESS) { + checkconnecterr(errno, svr, &addr, + addrlen, statuscmd, useport); + } +#endif +#else + if(WSAGetLastError() != WSAEINPROGRESS && + WSAGetLastError() != WSAEWOULDBLOCK) { + checkconnecterr(WSAGetLastError(), svr, &addr, + addrlen, statuscmd, useport); } #endif - exit(1); } + while(1) { + fd_set rset, wset, eset; + struct timeval tv; + FD_ZERO(&rset); + FD_SET(FD_SET_T fd, &rset); + FD_ZERO(&wset); + FD_SET(FD_SET_T fd, &wset); + FD_ZERO(&eset); + FD_SET(FD_SET_T fd, &eset); + tv.tv_sec = UNBOUND_CONTROL_CONNECT_TIMEOUT/1000; + tv.tv_usec= (UNBOUND_CONTROL_CONNECT_TIMEOUT%1000)*1000; + if(select(fd+1, &rset, &wset, &eset, &tv) == -1) { + fatal_exit("select: %s", sock_strerror(errno)); + } + if(!FD_ISSET(fd, &rset) && !FD_ISSET(fd, &wset) && + !FD_ISSET(fd, &eset)) { + fatal_exit("timeout: could not connect to server"); + } else { + /* check nonblocking connect error */ + int error = 0; + socklen_t len = (socklen_t)sizeof(error); + if(getsockopt(fd, SOL_SOCKET, SO_ERROR, (void*)&error, + &len) < 0) { +#ifndef USE_WINSOCK + error = errno; /* on solaris errno is error */ +#else + error = WSAGetLastError(); +#endif + } + if(error != 0) { +#ifndef USE_WINSOCK +#ifdef EINPROGRESS + if(error == EINPROGRESS) + continue; /* try again later */ +#endif +#ifdef EWOULDBLOCK + if(error == EWOULDBLOCK) + continue; /* try again later */ +#endif +#else + if(error == WSAEINPROGRESS) + continue; /* try again later */ + if(error == WSAEWOULDBLOCK) + continue; /* try again later */ +#endif + checkconnecterr(error, svr, &addr, addrlen, + statuscmd, useport); + } + } + break; + } + fd_set_block(fd); return fd; } From 70776609322d4629fd1418224887470498a670e0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Dec 2020 10:30:54 +0100 Subject: [PATCH 325/394] - Fix to squelch permission denied and other errors from remote host, they are logged at higher verbosity but not on low verbosity. --- doc/Changelog | 2 ++ util/netevent.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index af111d8a0..26e423f8e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 11 December 2020: Wouter - Fix #371: unbound-control timeout when Unbound is not running. + - Fix to squelch permission denied and other errors from remote host, + they are logged at higher verbosity but not on low verbosity. 3 December 2020: Wouter - make depend. diff --git a/util/netevent.c b/util/netevent.c index d3e268a01..7e604a9fa 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -583,6 +583,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, static int udp_recv_needs_log(int err) { switch(err) { + case EACCES: /* some hosts send ICMP 'Permission Denied' */ #ifndef USE_WINSOCK case ECONNREFUSED: # ifdef ENETUNREACH @@ -1609,6 +1610,26 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif +#ifdef ENETUNREACH + if(errno == ENETUNREACH && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EHOSTDOWN + if(errno == EHOSTDOWN && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EHOSTUNREACH + if(errno == EHOSTUNREACH && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef ENETDOWN + if(errno == ENETDOWN && verbosity < 2) + return 0; /* silence it */ +#endif +#ifdef EACCES + if(errno == EACCES && verbosity < 2) + return 0; /* silence it */ +#endif #ifdef ENOTCONN if(errno == ENOTCONN) { log_err_addr("read (in tcp s) failed and this could be because TCP Fast Open is enabled [--disable-tfo-client --disable-tfo-server] but does not work", sock_strerror(errno), From 15e1b16da0d7a75220c7365de3cf91d027437d00 Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Fri, 11 Dec 2020 14:00:20 +0100 Subject: [PATCH 326/394] Warning: arithmetic on a pointer to void is a GNU extension. --- util/netevent.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/netevent.c b/util/netevent.c index 7e604a9fa..9eaa3c871 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -1935,7 +1935,7 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) log_assert(c->tcp_write_and_read || sldns_buffer_remaining(buffer) > 0); log_assert(!c->tcp_write_and_read || c->tcp_write_byte_count < c->tcp_write_pkt_len + 2); if(c->tcp_write_and_read) { - r = send(fd, (void*)c->tcp_write_pkt + c->tcp_write_byte_count - 2, + r = send(fd, (void*)(c->tcp_write_pkt + c->tcp_write_byte_count - 2), c->tcp_write_pkt_len + 2 - c->tcp_write_byte_count, 0); } else { r = send(fd, (void*)sldns_buffer_current(buffer), From f09b05877669ca41e5ec625bde14a2c468ed33ea Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Dec 2020 14:04:01 +0100 Subject: [PATCH 327/394] Changelog note for #335 - Merge PR #335 from fobser: Sprinkle in some static to prevent missing prototype warnings. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 26e423f8e..7e38775ec 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Fix #371: unbound-control timeout when Unbound is not running. - Fix to squelch permission denied and other errors from remote host, they are logged at higher verbosity but not on low verbosity. + - Merge PR #335 from fobser: Sprinkle in some static to prevent + missing prototype warnings. 3 December 2020: Wouter - make depend. From e1c678864d7d727d3bb729a577a21b235508c070 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Dec 2020 14:07:42 +0100 Subject: [PATCH 328/394] Changelog note for #373 - Merge PR #373 from fobser: Warning: arithmetic on a pointer to void is a GNU extension. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 7e38775ec..dc4dee115 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ they are logged at higher verbosity but not on low verbosity. - Merge PR #335 from fobser: Sprinkle in some static to prevent missing prototype warnings. + - Merge PR #373 from fobser: Warning: arithmetic on a pointer to void + is a GNU extension. 3 December 2020: Wouter - make depend. From 811cf6db0c722fc8be7ebd7bf3b719ab387601f0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 11 Dec 2020 14:34:39 +0100 Subject: [PATCH 329/394] - Fix missing prototypes in the code. --- dnstap/unbound-dnstap-socket.c | 6 +++++- doc/Changelog | 1 + dynlibmod/dynlibmod.c | 14 +++++++------- libunbound/libworker.c | 3 +++ pythonmod/pythonmod_utils.c | 1 + pythonmod/pythonmod_utils.h | 3 ++- services/listen_dnsport.c | 2 +- services/listen_dnsport.h | 2 +- smallapp/worker_cb.c | 3 +++ testcode/fake_event.c | 1 + testcode/testbound.c | 16 ++++++++++++++-- 11 files changed, 39 insertions(+), 13 deletions(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 8c37654e8..8e28be4e8 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -727,7 +727,7 @@ static ssize_t tap_receive(struct tap_data* data, void* buf, size_t len) } /** delete the tap structure */ -void tap_data_free(struct tap_data* data) +static void tap_data_free(struct tap_data* data) { ub_event_del(data->ev); ub_event_free(data->ev); @@ -1355,6 +1355,10 @@ int main(int argc, char** argv) struct tube; struct query_info; #include "util/data/packed_rrset.h" +#include "daemon/worker.h" +#include "daemon/remote.h" +#include "util/fptr_wlist.h" +#include "libunbound/context.h" void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len), diff --git a/doc/Changelog b/doc/Changelog index dc4dee115..07a8e6ea4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -6,6 +6,7 @@ missing prototype warnings. - Merge PR #373 from fobser: Warning: arithmetic on a pointer to void is a GNU extension. + - Fix missing prototypes in the code. 3 December 2020: Wouter - make depend. diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 3bf9d1acb..3f148ebb6 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -5,16 +5,16 @@ * module actions. */ #include "config.h" +#include "dynlibmod/dynlibmod.h" #include "util/module.h" #include "util/config_file.h" -#include "dynlibmod/dynlibmod.h" #if HAVE_WINDOWS_H #include #define __DYNMOD HMODULE #define __DYNSYM FARPROC #define __LOADSYM GetProcAddress -void log_dlerror() { +static void log_dlerror() { DWORD dwLastError = GetLastError(); LPSTR MessageBuffer; DWORD dwBufferLength; @@ -37,11 +37,11 @@ void log_dlerror() { } -HMODULE open_library(const char* fname) { +static HMODULE open_library(const char* fname) { return LoadLibrary(fname); } -void close_library(const char* fname, __DYNMOD handle) { +static void close_library(const char* fname, __DYNMOD handle) { (void)fname; (void)handle; } @@ -50,15 +50,15 @@ void close_library(const char* fname, __DYNMOD handle) { #define __DYNMOD void* #define __DYNSYM void* #define __LOADSYM dlsym -void log_dlerror() { +static void log_dlerror() { log_err("dynlibmod: %s", dlerror()); } -void* open_library(const char* fname) { +static void* open_library(const char* fname) { return dlopen(fname, RTLD_LAZY | RTLD_GLOBAL); } -void close_library(const char* fname, __DYNMOD handle) { +static void close_library(const char* fname, __DYNMOD handle) { if(!handle) return; if(dlclose(handle) != 0) { log_err("dlclose %s: %s", fname, strerror(errno)); diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 06cbb8869..03bbaf768 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -73,6 +73,9 @@ #include "iterator/iter_hints.h" #include "sldns/sbuffer.h" #include "sldns/str2wire.h" +#ifdef USE_DNSTAP +#include "dnstap/dtstream.h" +#endif #ifdef HAVE_TARGETCONDITIONALS_H #include diff --git a/pythonmod/pythonmod_utils.c b/pythonmod/pythonmod_utils.c index 5d70f2b4b..9f7282540 100644 --- a/pythonmod/pythonmod_utils.c +++ b/pythonmod/pythonmod_utils.c @@ -39,6 +39,7 @@ * conversions. */ #include "config.h" +#include "pythonmod/pythonmod_utils.h" #include "util/module.h" #include "util/netevent.h" #include "util/net_help.h" diff --git a/pythonmod/pythonmod_utils.h b/pythonmod/pythonmod_utils.h index 768eb46de..4ea86f9be 100644 --- a/pythonmod/pythonmod_utils.h +++ b/pythonmod/pythonmod_utils.h @@ -43,6 +43,7 @@ #include "util/module.h" struct delegpt_addr; +struct sldns_buffer; /** * Store the reply_info and query_info pair in message cache (qstate->msg_cache) @@ -77,7 +78,7 @@ void invalidateQueryInCache(struct module_qstate* qstate, struct query_info* qin * @param pkt: a sldns_buffer which contains sldns_packet data * @return 0 on failure, out of memory or parse error. */ -int createResponse(struct module_qstate* qstate, sldns_buffer* pkt); +int createResponse(struct module_qstate* qstate, struct sldns_buffer* pkt); /** * Convert reply->addr to string diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 709c9e6ce..629d4de72 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -2793,7 +2793,7 @@ void http2_req_stream_clear(struct http2_stream* h2_stream) } } -nghttp2_session_callbacks* http2_req_callbacks_create() +nghttp2_session_callbacks* http2_req_callbacks_create(void) { nghttp2_session_callbacks *callbacks; if(nghttp2_session_callbacks_new(&callbacks) == NGHTTP2_ERR_NOMEM) { diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 9d6ea2c33..f438ff458 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -404,7 +404,7 @@ size_t http2_get_response_buffer_size(void); * Create nghttp2 callbacks to handle HTTP2 requests. * @return malloc'ed struct, NULL on failure */ -nghttp2_session_callbacks* http2_req_callbacks_create(); +nghttp2_session_callbacks* http2_req_callbacks_create(void); /** Free http2 stream buffers and decrease buffer counters */ void http2_req_stream_clear(struct http2_stream* h2_stream); diff --git a/smallapp/worker_cb.c b/smallapp/worker_cb.c index 78d921a3c..cdf855dc3 100644 --- a/smallapp/worker_cb.c +++ b/smallapp/worker_cb.c @@ -46,6 +46,9 @@ #include "util/fptr_wlist.h" #include "util/log.h" #include "services/mesh.h" +#ifdef USE_DNSTAP +#include "dnstap/dtstream.h" +#endif void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len), diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 591557c35..75a6b8db9 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -64,6 +64,7 @@ #include "sldns/sbuffer.h" #include "sldns/wire2str.h" #include "sldns/str2wire.h" +#include "daemon/remote.h" #include struct worker; struct daemon_remote; diff --git a/testcode/testbound.c b/testcode/testbound.c index 3f3e106b0..5e10779fc 100644 --- a/testcode/testbound.c +++ b/testcode/testbound.c @@ -42,16 +42,22 @@ #ifdef HAVE_TIME_H # include #endif +#include #include "testcode/testpkts.h" #include "testcode/replay.h" #include "testcode/fake_event.h" #include "daemon/remote.h" +#include "libunbound/worker.h" #include "util/config_file.h" #include "sldns/keyraw.h" -#include +#ifdef UB_ON_WINDOWS +#include "winrc/win_svc.h" +#endif /** signal that this is a testbound compile */ #define unbound_testbound 1 +/** renamed main routine */ +int daemon_main(int argc, char* argv[]); /** * include the main program from the unbound daemon. * rename main to daemon_main to call it @@ -333,7 +339,7 @@ setup_playback(const char* filename, int* pass_argc, char* pass_argv[]) } /** remove config file at exit */ -void remove_configfile(void) +static void remove_configfile(void) { struct config_strlist* p; for(p=cfgfiles; p; p=p->next) @@ -551,22 +557,28 @@ void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg)) log_assert(0); } +#ifdef UB_ON_WINDOWS void wsvc_command_option(const char* ATTR_UNUSED(wopt), const char* ATTR_UNUSED(cfgfile), int ATTR_UNUSED(v), int ATTR_UNUSED(c)) { log_assert(0); } +#endif +#ifdef UB_ON_WINDOWS void wsvc_setup_worker(struct worker* ATTR_UNUSED(worker)) { /* do nothing */ } +#endif +#ifdef UB_ON_WINDOWS void wsvc_desetup_worker(struct worker* ATTR_UNUSED(worker)) { /* do nothing */ } +#endif #ifdef UB_ON_WINDOWS void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev), From 42d764eeda2ae2fb545bbffda603865892fa5fab Mon Sep 17 00:00:00 2001 From: Frank Riley Date: Sun, 13 Dec 2020 12:35:11 -0700 Subject: [PATCH 330/394] Add rpz_enable and rpz_disable commands to unbound-control. --- daemon/remote.c | 55 ++++++++++++++++++++++++++++++++++++++++ doc/unbound-control.8.in | 6 +++++ services/rpz.c | 18 +++++++++++-- services/rpz.h | 13 ++++++++++ 4 files changed, 90 insertions(+), 2 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 8324e1901..64057a57b 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -2860,6 +2860,57 @@ do_ip_ratelimit_list(RES* ssl, struct worker* worker, char* arg) slabhash_traverse(a.infra->client_ip_rates, 0, ip_rate_list, &a); } +/** do the rpz_enable/disable command */ +static void +do_rpz_enable_disable(RES* ssl, struct worker* worker, char* arg, int enable) { + size_t nmlen; + int nmlabs; + uint8_t *nm = NULL; + struct auth_zones *az = worker->env.auth_zones; + struct auth_zone *z = NULL; + if (!parse_arg_name(ssl, arg, &nm, &nmlen, &nmlabs)) + return; + if (az) { + lock_rw_rdlock(&az->lock); + z = auth_zone_find(az, nm, nmlen, LDNS_RR_CLASS_IN); + if (z) { + lock_rw_wrlock(&z->lock); + } + lock_rw_unlock(&az->lock); + } + free(nm); + if (!z) { + (void) ssl_printf(ssl, "error no auth-zone %s\n", arg); + return; + } + if (!z->rpz) { + (void) ssl_printf(ssl, "error auth-zone %s not RPZ\n", arg); + lock_rw_unlock(&z->lock); + return; + } + if (enable) { + rpz_enable(z->rpz); + } else { + rpz_disable(z->rpz); + } + lock_rw_unlock(&z->lock); + send_ok(ssl); +} + +/** do the rpz_enable command */ +static void +do_rpz_enable(RES* ssl, struct worker* worker, char* arg) +{ + do_rpz_enable_disable(ssl, worker, arg, 1); +} + +/** do the rpz_disable command */ +static void +do_rpz_disable(RES* ssl, struct worker* worker, char* arg) +{ + do_rpz_enable_disable(ssl, worker, arg, 0); +} + /** tell other processes to execute the command */ static void distribute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd) @@ -3060,6 +3111,10 @@ execute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd, do_flush_bogus(ssl, worker); } else if(cmdcmp(p, "flush_negative", 14)) { do_flush_negative(ssl, worker); + } else if(cmdcmp(p, "rpz_enable", 10)) { + do_rpz_enable(ssl, worker, skipwhite(p+10)); + } else if(cmdcmp(p, "rpz_disable", 11)) { + do_rpz_disable(ssl, worker, skipwhite(p+11)); } else { (void)ssl_printf(ssl, "error unknown command '%s'\n", p); } diff --git a/doc/unbound-control.8.in b/doc/unbound-control.8.in index 97972ff27..20325abf2 100644 --- a/doc/unbound-control.8.in +++ b/doc/unbound-control.8.in @@ -305,6 +305,12 @@ Transfer the auth zone from master. The auth zone probe sequence is started, where the masters are probed to see if they have an updated zone (with the SOA serial check). And then the zone is transferred for a newer zone version. .TP +.B rpz_enable \fIzone\fR +Enable the RPZ zone if it had previously been disabled. +.TP +.B rpz_enable \fIzone\fR +Disable the RPZ zone. +.TP .B view_list_local_zones \fIview\fR \fIlist_local_zones\fR for given view. .TP diff --git a/services/rpz.c b/services/rpz.c index 13304652c..d7dd17f7e 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -963,8 +963,8 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, for(a = az->rpz_first; a; a = a->rpz_az_next) { lock_rw_rdlock(&a->lock); r = a->rpz; - if(!r->taglist || taglist_intersect(r->taglist, - r->taglistlen, taglist, taglen)) { + if(!r->disabled && (!r->taglist || taglist_intersect(r->taglist, + r->taglistlen, taglist, taglen))) { z = rpz_find_zone(r, qinfo->qname, qinfo->qname_len, qinfo->qclass, 0, 0, 0); if(z && r->action_override == RPZ_DISABLED_ACTION) { @@ -1044,3 +1044,17 @@ rpz_apply_qname_trigger(struct auth_zones* az, struct module_env* env, return ret; } + +void rpz_enable(struct rpz* r) +{ + if(!r) + return; + r->disabled = 0; +} + +void rpz_disable(struct rpz* r) +{ + if(!r) + return; + r->disabled = 1; +} diff --git a/services/rpz.h b/services/rpz.h index 77a2db55c..d5996a6cf 100644 --- a/services/rpz.h +++ b/services/rpz.h @@ -99,6 +99,7 @@ struct rpz { int log; char* log_name; struct regional* region; + int disabled; }; /** @@ -198,4 +199,16 @@ void rpz_finish_config(struct rpz* r); enum respip_action rpz_action_to_respip_action(enum rpz_action a); +/** + * Enable RPZ + * @param r: RPZ struct to enable + */ +void rpz_enable(struct rpz* r); + +/** + * Disable RPZ + * @param r: RPZ struct to disable + */ +void rpz_disable(struct rpz* r); + #endif /* SERVICES_RPZ_H */ From 08968baec1122a58bb90d8f97ad948a75f8a5d69 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 16 Dec 2020 17:11:41 +0100 Subject: [PATCH 331/394] - Fix error cases when udp-connect is set and send() returns an error (modified patch from Xin Li @delphij). --- doc/Changelog | 4 ++++ services/authzone.c | 2 +- services/outside_network.c | 15 ++++----------- testcode/fake_event.c | 2 +- util/netevent.c | 29 +++++++++++++++++++---------- util/netevent.h | 3 ++- 6 files changed, 31 insertions(+), 24 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 07a8e6ea4..3b831fea1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +16 December 2020: George + - Fix error cases when udp-connect is set and send() returns an error + (modified patch from Xin Li @delphij). + 11 December 2020: Wouter - Fix #371: unbound-control timeout when Unbound is not running. - Fix to squelch permission denied and other errors from remote host, diff --git a/services/authzone.c b/services/authzone.c index 15be5d60c..e59548fc3 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -6093,7 +6093,7 @@ xfr_probe_send_probe(struct auth_xfer* xfr, struct module_env* env, /* send udp packet */ if(!comm_point_send_udp_msg(xfr->task_probe->cp, env->scratch_buffer, - (struct sockaddr*)&addr, addrlen)) { + (struct sockaddr*)&addr, addrlen, 0)) { char zname[255+1], as[256]; dname_str(xfr->name, zname); addr_to_str(&addr, addrlen, as, sizeof(as)); diff --git a/services/outside_network.c b/services/outside_network.c index 0886907f7..d8f9874e6 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -1899,17 +1899,10 @@ randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, int timeout) log_assert(pend->pc && pend->pc->cp); /* send it over the commlink */ - if(outnet->udp_connect) { - if(!comm_point_send_udp_msg(pend->pc->cp, packet, NULL, 0)) { - portcomm_loweruse(outnet, pend->pc); - return 0; - } - } else { - if(!comm_point_send_udp_msg(pend->pc->cp, packet, - (struct sockaddr*)&pend->addr, pend->addrlen)) { - portcomm_loweruse(outnet, pend->pc); - return 0; - } + if(!comm_point_send_udp_msg(pend->pc->cp, packet, + (struct sockaddr*)&pend->addr, pend->addrlen, outnet->udp_connect)) { + portcomm_loweruse(outnet, pend->pc); + return 0; } /* system calls to set timeout after sending UDP to make roundtrip diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 75a6b8db9..5164332c0 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1766,7 +1766,7 @@ struct comm_point* outnet_comm_point_for_http(struct outside_network* outnet, } int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, - struct sockaddr* addr, socklen_t addrlen) + struct sockaddr* addr, socklen_t addrlen, int ATTR_UNUSED(is_connected)) { struct fake_commpoint* fc = (struct fake_commpoint*)c; struct replay_runtime* runtime = fc->runtime; diff --git a/util/netevent.c b/util/netevent.c index 7c6da50be..88be007e7 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -333,7 +333,7 @@ int tcp_connect_errno_needs_log(struct sockaddr* addr, socklen_t addrlen) /* send a UDP reply */ int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, - struct sockaddr* addr, socklen_t addrlen) + struct sockaddr* addr, socklen_t addrlen, int is_connected) { ssize_t sent; log_assert(c->fd != -1); @@ -341,8 +341,8 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, if(sldns_buffer_remaining(packet) == 0) log_err("error: send empty UDP packet"); #endif - if(addr) { - log_assert(addr && addrlen > 0); + log_assert(addr && addrlen > 0); + if(!is_connected) { sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), sldns_buffer_remaining(packet), 0, addr, addrlen); @@ -367,9 +367,14 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, #endif int e; fd_set_block(c->fd); - sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), - sldns_buffer_remaining(packet), 0, - addr, addrlen); + if (!is_connected) { + sent = sendto(c->fd, (void*)sldns_buffer_begin(packet), + sldns_buffer_remaining(packet), 0, + addr, addrlen); + } else { + sent = send(c->fd, (void*)sldns_buffer_begin(packet), + sldns_buffer_remaining(packet), 0); + } e = errno; fd_set_nonblock(c->fd); errno = e; @@ -378,8 +383,12 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, if(sent == -1) { if(!udp_send_errno_needs_log(addr, addrlen)) return 0; - verbose(VERB_OPS, "sendto failed: %s", sock_strerror(errno)); - log_addr(VERB_OPS, "remote address is", + if (!is_connected) { + verbose(VERB_OPS, "sendto failed: %s", sock_strerror(errno)); + } else { + verbose(VERB_OPS, "send failed: %s", sock_strerror(errno)); + } + log_addr(VERB_OPS, "remote address is", (struct sockaddr_storage*)addr, addrlen); return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { @@ -764,7 +773,7 @@ comm_point_udp_callback(int fd, short event, void* arg) buffer = rep.c->buffer; #endif (void)comm_point_send_udp_msg(rep.c, buffer, - (struct sockaddr*)&rep.addr, rep.addrlen); + (struct sockaddr*)&rep.addr, rep.addrlen, 0); } if(!rep.c || rep.c->fd != fd) /* commpoint closed to -1 or reused for another UDP port. Note rep.c cannot be reused with TCP fd. */ @@ -3944,7 +3953,7 @@ comm_point_send_reply(struct comm_reply *repinfo) repinfo->addrlen, repinfo); else comm_point_send_udp_msg(repinfo->c, buffer, - (struct sockaddr*)&repinfo->addr, repinfo->addrlen); + (struct sockaddr*)&repinfo->addr, repinfo->addrlen, 0); #ifdef USE_DNSTAP if(repinfo->c->dtenv != NULL && repinfo->c->dtenv->log_client_response_messages) diff --git a/util/netevent.h b/util/netevent.h index 266a74ff3..810190683 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -633,10 +633,11 @@ void comm_point_drop_reply(struct comm_reply* repinfo); * @param addr: where to send it to. If NULL, send is performed, * for connected sockets, to the connected address. * @param addrlen: length of addr. + * @param is_connected: if the UDP socket is connect()ed. * @return: false on a failure. */ int comm_point_send_udp_msg(struct comm_point* c, struct sldns_buffer* packet, - struct sockaddr* addr, socklen_t addrlen); + struct sockaddr* addr, socklen_t addrlen,int is_connected); /** * Stop listening for input on the commpoint. No callbacks will happen. From e3abd772f7b247c9b97e8656f8cf765eaca7c431 Mon Sep 17 00:00:00 2001 From: Frank Riley Date: Fri, 1 Jan 2021 15:29:32 -0700 Subject: [PATCH 332/394] Add start_time to reply callbacks so modules can compute the response time. --- daemon/worker.c | 21 ++++++++++++++------- dynlibmod/dynlibmod.c | 6 +++--- dynlibmod/dynlibmod.h | 4 ++-- dynlibmod/examples/helloworld.c | 8 ++++---- pythonmod/interface.i | 24 +++++++++++++++++++++--- pythonmod/pythonmod.h | 4 ++-- services/authzone.c | 4 ++-- services/localzone.c | 4 ++-- services/mesh.c | 32 +++++++++++++++++++------------- util/data/msgreply.c | 25 +++++++++++++++---------- util/data/msgreply.h | 12 ++++++++---- util/module.h | 4 ++-- 12 files changed, 94 insertions(+), 54 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 76c4bb5b1..edf96988a 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -513,7 +513,8 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, - msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad)) + msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) return 0; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); @@ -544,7 +545,8 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, msg->rep, - (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad)) + (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) return 0; msg->rep->flags |= BIT_QR|BIT_RA; if(!apply_edns_options(edns, &edns_bak, worker->env.cfg, @@ -553,7 +555,8 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c->buffer, 0, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, - LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad)) + LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); @@ -684,7 +687,8 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, rep, - LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad)) + LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) goto bail_out; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -718,7 +722,8 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, rep, - (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad)) + (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) goto bail_out; *alias_rrset = NULL; /* avoid confusion if caller set it to non-NULL */ if((worker->daemon->use_response_ip || worker->daemon->use_rpz) && @@ -754,7 +759,8 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, repinfo->c->buffer, timenow, 1, worker->scratchpad, udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, - LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad)) + LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -842,7 +848,8 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, edns->udp_size = EDNS_ADVERTISED_SIZE; edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, - LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad)) + LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, + *worker->env.now_tv)) edns->opt_list = NULL; if(sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+calc_edns_field_size(edns)) diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index 3f148ebb6..e842c9d8a 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -212,10 +212,10 @@ size_t dynlibmod_get_mem(struct module_env* env, int id) { int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback) { + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* callback) { struct cb_pair* cb_pair = (struct cb_pair*) callback; - return ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, id, cb_pair->cb_arg); + return ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, start_time, id, cb_pair->cb_arg); } int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index c34cf0e88..f35dafa1a 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -70,8 +70,8 @@ size_t dynlibmod_get_mem(struct module_env* env, int id); int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* callback); int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, struct module_qstate* qstate, struct sockaddr_storage* addr, diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index acb6b5d9b..5ea9c51be 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -30,8 +30,8 @@ int reply_callback(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* callback); /* Init is called when the module is first loaded. It should be used to set up * the environment for this module and do any other initialisation required. */ @@ -116,8 +116,8 @@ EXPORT size_t get_mem(struct module_env* env, int id) { int reply_callback(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback) { + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* callback) { log_info("dynlib: hello world from callback"); struct dynlibmod_env* env = qstate->env->modinfo[id]; if (env->dyn_env != NULL) { diff --git a/pythonmod/interface.i b/pythonmod/interface.i index cbee4f714..8f44e52b6 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -20,6 +20,7 @@ * called to perform operations on queries. */ #include + #include #ifdef HAVE_SYS_SOCKET_H #include #endif @@ -696,6 +697,8 @@ struct edns_data { /* ************************************************************************************ * Structure module_env * ************************************************************************************ */ +%rename(_now) module_env::now; +%rename(_now_tv) module_env::now_tv; struct module_env { struct config_file* cfg; struct slabhash* msg_cache; @@ -739,6 +742,19 @@ struct module_env { size_t edns_known_options_num; }; +%inline %{ + PyObject* _module_env_now_get(struct module_env* env) { + double ts = env->now_tv->tv_sec + env->now_tv->tv_usec / 1e6; + return PyFloat_FromDouble(ts); + } +%} +%extend module_env { + %pythoncode %{ + def _now_get(self): return _module_env_now_get(self) + now = property(_now_get) + %} +} + /* ************************************************************************************ * Structure module_qstate * ************************************************************************************ */ @@ -1525,13 +1541,14 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, int python_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* python_callback) + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* python_callback) { PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; PyObject *py_rep, *py_repinfo, *py_region; PyObject *py_args, *py_kwargs, *result; int res = 0; + double py_start_time = start_time.tv_sec + start_time.tv_usec / 1e6; PyGILState_STATE gstate = PyGILState_Ensure(); func = (PyObject *) python_callback; @@ -1546,7 +1563,8 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, py_region = SWIG_NewPointerObj((void*) region, SWIGTYPE_p_regional, 0); py_args = Py_BuildValue("(OOOiOOO)", py_qinfo, py_qstate, py_rep, rcode, py_edns, py_opt_list_out, py_region); - py_kwargs = Py_BuildValue("{s:O}", "repinfo", py_repinfo); + py_kwargs = Py_BuildValue("{s:O,s:d}", "repinfo", py_repinfo, "start_time", + py_start_time); result = PyObject_Call(func, py_args, py_kwargs); Py_XDECREF(py_edns); Py_XDECREF(py_qstate); diff --git a/pythonmod/pythonmod.h b/pythonmod/pythonmod.h index ae8af27eb..222ebd71e 100644 --- a/pythonmod/pythonmod.h +++ b/pythonmod/pythonmod.h @@ -72,8 +72,8 @@ size_t pythonmod_get_mem(struct module_env* env, int id); int python_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* python_callback); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* python_callback); /** Declared here for fptr_wlist access. The definition is in interface.i. */ int python_inplace_cb_query_generic( diff --git a/services/authzone.c b/services/authzone.c index e59548fc3..0f6d691a2 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3286,7 +3286,7 @@ auth_answer_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, msg->rep, - (int)FLAGS_GET_RCODE(msg->rep->flags), edns, repinfo, temp) + (int)FLAGS_GET_RCODE(msg->rep->flags), edns, repinfo, temp, *env->now_tv) || !reply_info_answer_encode(qinfo, msg->rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), @@ -3310,7 +3310,7 @@ auth_error_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, - rcode, edns, repinfo, temp)) + rcode, edns, repinfo, temp, *env->now_tv)) edns->opt_list = NULL; error_encode(buf, rcode|BIT_AA, qinfo, *(uint16_t*)sldns_buffer_begin(buf), diff --git a/services/localzone.c b/services/localzone.c index cad460663..308150a00 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1215,7 +1215,7 @@ local_encode(struct query_info* qinfo, struct module_env* env, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, - repinfo, temp) || !reply_info_answer_encode(qinfo, &rep, + repinfo, temp, *env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, @@ -1237,7 +1237,7 @@ local_error_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, - rcode, edns, repinfo, temp)) + rcode, edns, repinfo, temp, *env->now_tv)) edns->opt_list = NULL; error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/mesh.c b/services/mesh.c index cd9050936..de481c0d5 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -498,7 +498,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, - LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch)) + LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -514,7 +514,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s->s.edns_opts_front_in) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -587,7 +587,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, servfail_mem: if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -1115,7 +1115,7 @@ int mesh_state_attachment(struct mesh_state* super, struct mesh_state* sub) */ static void mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, - struct mesh_cb* r) + struct mesh_cb* r, struct timeval start_time) { int secure; char* reason = NULL; @@ -1136,11 +1136,11 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, if(rcode) { if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, rcode, &r->edns, NULL, m->s.region)) + rep, rcode, &r->edns, NULL, m->s.region, start_time)) r->edns.opt_list = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, - &r->edns, NULL, m->s.region)) + &r->edns, NULL, m->s.region, start_time)) r->edns.opt_list = NULL; } fptr_ok(fptr_whitelist_mesh_cb(r->cb)); @@ -1155,7 +1155,7 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, r->edns.bits &= EDNS_DO; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, - LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region) || + LDNS_RCODE_NOERROR, &r->edns, NULL, m->s.region, start_time) || !reply_info_answer_encode(&m->s.qinfo, rep, r->qid, r->qflags, r->buf, 0, 1, m->s.env->scratch, udp_size, &r->edns, @@ -1256,11 +1256,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, rcode, &r->edns, &r->query_reply, m->s.region)) + rep, rcode, &r->edns, &r->query_reply, m->s.region, r->start_time)) r->edns.opt_list = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, - &r->edns, &r->query_reply, m->s.region)) + &r->edns, &r->query_reply, m->s.region, r->start_time)) r->edns.opt_list = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, @@ -1277,7 +1277,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, - LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region) || + LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, r->start_time) || !apply_edns_options(&r->edns, &edns_bak, m->s.env->cfg, r->query_reply.c, m->s.region) || @@ -1287,7 +1287,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region)) + rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, r->start_time)) r->edns.opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); @@ -1330,6 +1330,7 @@ void mesh_query_done(struct mesh_state* mstate) struct mesh_cb* c; struct reply_info* rep = (mstate->s.return_msg? mstate->s.return_msg->rep:NULL); + struct timeval tv = {0, 0}; /* No need for the serve expired timer anymore; we are going to reply. */ if(mstate->s.serve_expired_data) { comm_timer_delete(mstate->s.serve_expired_data->timer); @@ -1349,6 +1350,8 @@ void mesh_query_done(struct mesh_state* mstate) } } for(r = mstate->reply_list; r; r = r->next) { + tv = r->start_time; + /* if a response-ip address block has been stored the * information should be logged for each client. */ if(mstate->s.respip_action_info && @@ -1421,7 +1424,7 @@ void mesh_query_done(struct mesh_state* mstate) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) mstate->s.env->mesh->num_detached_states++; - mesh_do_callback(mstate, mstate->s.return_rcode, rep, c); + mesh_do_callback(mstate, mstate->s.return_rcode, rep, c, tv); } } @@ -1917,6 +1920,7 @@ mesh_serve_expired_callback(void* arg) struct respip_action_info actinfo; struct query_info* lookup_qinfo = &qstate->qinfo; struct query_info qinfo_tmp; + struct timeval tv = {0, 0}; int must_validate = (!(qstate->query_flags&BIT_CD) || qstate->env->cfg->ignore_cd) && qstate->env->need_to_validate; if(!qstate->serve_expired_data) return; @@ -1988,6 +1992,8 @@ mesh_serve_expired_callback(void* arg) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); for(r = mstate->reply_list; r; r = r->next) { + tv = r->start_time; + /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ if(actinfo.addrinfo) { @@ -2042,6 +2048,6 @@ mesh_serve_expired_callback(void* arg) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) qstate->env->mesh->num_detached_states++; - mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c); + mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c, tv); } } diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 927bf09a2..3f7eb5fc9 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1035,7 +1035,8 @@ static int inplace_cb_reply_call_generic( struct inplace_cb* callback_list, enum inplace_cb_list_type type, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time) { struct inplace_cb* cb; struct edns_option* opt_list_out = NULL; @@ -1048,7 +1049,7 @@ static int inplace_cb_reply_call_generic( fptr_ok(fptr_whitelist_inplace_cb_reply_generic( (inplace_cb_reply_func_type*)cb->cb, type)); (void)(*(inplace_cb_reply_func_type*)cb->cb)(qinfo, qstate, rep, - rcode, edns, &opt_list_out, repinfo, region, cb->id, cb->cb_arg); + rcode, edns, &opt_list_out, repinfo, region, start_time, cb->id, cb->cb_arg); } edns->opt_list = opt_list_out; return 1; @@ -1056,37 +1057,41 @@ static int inplace_cb_reply_call_generic( int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, - struct edns_data* edns, struct comm_reply* repinfo, struct regional* region) + struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, + struct timeval start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply], inplace_cb_reply, qinfo, - qstate, rep, rcode, edns, repinfo, region); + qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_cache], inplace_cb_reply_cache, - qinfo, qstate, rep, rcode, edns, repinfo, region); + qinfo, qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_local], inplace_cb_reply_local, - qinfo, qstate, rep, rcode, edns, repinfo, region); + qinfo, qstate, rep, rcode, edns, repinfo, region, start_time); } int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region) + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time) { /* We are going to servfail. Remove any potential edns options. */ if(qstate) @@ -1094,7 +1099,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_servfail], inplace_cb_reply_servfail, qinfo, qstate, rep, rcode, edns, repinfo, - region); + region, start_time); } int inplace_cb_query_call(struct module_env* env, struct query_info* qinfo, diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 385780268..b7706b023 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -558,7 +558,8 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); */ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, - struct edns_data* edns, struct comm_reply* repinfo, struct regional* region); + struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, + struct timeval start_time); /** * Call the registered functions in the inplace_cb_reply_cache linked list. @@ -576,7 +577,8 @@ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time); /** * Call the registered functions in the inplace_cb_reply_local linked list. @@ -594,7 +596,8 @@ int inplace_cb_reply_cache_call(struct module_env* env, int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time); /** * Call the registered functions in the inplace_cb_reply linked list. @@ -613,7 +616,8 @@ int inplace_cb_reply_local_call(struct module_env* env, int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, - struct comm_reply* repinfo, struct regional* region); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time); /** * Call the registered functions in the inplace_cb_query linked list. diff --git a/util/module.h b/util/module.h index 7b833f8ad..d29b6f318 100644 --- a/util/module.h +++ b/util/module.h @@ -257,8 +257,8 @@ struct inplace_cb { typedef int inplace_cb_reply_func_type(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, - struct comm_reply* repinfo, struct regional* region, int id, - void* callback); + struct comm_reply* repinfo, struct regional* region, + struct timeval start_time, int id, void* callback); /** * Inplace callback function called before sending the query to a nameserver. From 4d51c6b86e84e0786d9cd5134fce536e5cf1980f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 4 Jan 2021 14:05:50 +0100 Subject: [PATCH 333/394] - For #376: Fix that comm point event is not double removed or double added to event map. --- doc/Changelog | 4 ++++ util/netevent.c | 34 ++++++++++++++++++++++++++++------ util/netevent.h | 2 ++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 3b831fea1..be7d1756e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +4 January 2021: Wouter + - For #376: Fix that comm point event is not double removed or double + added to event map. + 16 December 2020: George - Fix error cases when udp-connect is set and send() returns an error (modified patch from Xin Li @delphij). diff --git a/util/netevent.c b/util/netevent.c index 88be007e7..5c7550805 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3230,6 +3230,7 @@ comm_point_create_udp(struct comm_base *base, int fd, sldns_buffer* buffer, comm_point_delete(c); return NULL; } + c->event_added = 1; return c; } @@ -3289,6 +3290,7 @@ comm_point_create_udp_ancil(struct comm_base *base, int fd, comm_point_delete(c); return NULL; } + c->event_added = 1; return c; } @@ -3573,6 +3575,7 @@ comm_point_create_tcp(struct comm_base *base, int fd, int num, comm_point_delete(c); return NULL; } + c->event_added = 1; /* now prealloc the handlers */ for(i=0; ievent_added = 1; return c; } @@ -3858,6 +3862,7 @@ comm_point_create_raw(struct comm_base* base, int fd, int writing, free(c); return NULL; } + c->event_added = 1; return c; } @@ -3868,8 +3873,11 @@ comm_point_close(struct comm_point* c) return; if(c->fd != -1) { verbose(5, "comm_point_close of %d: event_del", c->fd); - if(ub_event_del(c->ev->ev) != 0) { - log_err("could not event_del on close"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("could not event_del on close"); + } + c->event_added = 0; } } tcl_close_connection(c->tcl_addr); @@ -4018,8 +4026,11 @@ void comm_point_stop_listening(struct comm_point* c) { verbose(VERB_ALGO, "comm point stop listening %d", c->fd); - if(ub_event_del(c->ev->ev) != 0) { - log_err("event_del error to stoplisten"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to stoplisten"); + } + c->event_added = 0; } } @@ -4032,6 +4043,12 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) /* no use to start listening no free slots. */ return; } + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to startlisten"); + } + c->event_added = 0; + } if(msec != -1 && msec != 0) { if(!c->timeout) { c->timeout = (struct timeval*)malloc(sizeof( @@ -4071,13 +4088,17 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) if(ub_event_add(c->ev->ev, msec==0?NULL:c->timeout) != 0) { log_err("event_add failed. in cpsl."); } + c->event_added = 1; } void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) { verbose(VERB_ALGO, "comm point listen_for_rw %d %d", c->fd, wr); - if(ub_event_del(c->ev->ev) != 0) { - log_err("event_del error to cplf"); + if(c->event_added) { + if(ub_event_del(c->ev->ev) != 0) { + log_err("event_del error to cplf"); + } + c->event_added = 0; } ub_event_del_bits(c->ev->ev, UB_EV_READ|UB_EV_WRITE); if(rd) ub_event_add_bits(c->ev->ev, UB_EV_READ); @@ -4085,6 +4106,7 @@ void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr) if(ub_event_add(c->ev->ev, c->timeout) != 0) { log_err("event_add failed. in cplf."); } + c->event_added = 1; } size_t comm_point_get_mem(struct comm_point* c) diff --git a/util/netevent.h b/util/netevent.h index 810190683..4a2aa1677 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -166,6 +166,8 @@ struct comm_reply { struct comm_point { /** behind the scenes structure, with say libevent info. alloced. */ struct internal_event* ev; + /** if the event is added or not */ + int event_added; /** file descriptor for communication point */ int fd; From 64cccdb8d512e2d0205dc519bc884fc2ec30a925 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 4 Jan 2021 14:18:24 +0100 Subject: [PATCH 334/394] - iana portlist updated. --- doc/Changelog | 1 + util/iana_ports.inc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index be7d1756e..093a4b8aa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 4 January 2021: Wouter - For #376: Fix that comm point event is not double removed or double added to event map. + - iana portlist updated. 16 December 2020: George - Fix error cases when udp-connect is set and send() returns an error diff --git a/util/iana_ports.inc b/util/iana_ports.inc index adeafc4ad..875851e6a 100644 --- a/util/iana_ports.inc +++ b/util/iana_ports.inc @@ -3575,7 +3575,6 @@ 3977, 3978, 3979, -3980, 3981, 3982, 3983, From 4c4ca2433c522fd2c5d15a6fa7157791db741921 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 5 Jan 2021 10:27:13 +0100 Subject: [PATCH 335/394] - Fix #385: autoconf 2.70 impacts unbound build --- acx_nlnetlabs.m4 | 63 +++++++-------- acx_python.m4 | 6 +- config.h.in | 3 +- configure | 45 ++--------- configure.ac | 180 ++++++++++++++++++------------------------- dnscrypt/dnscrypt.m4 | 2 +- dnstap/dnstap.m4 | 2 +- doc/Changelog | 3 + 8 files changed, 117 insertions(+), 187 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 31e43d67e..2b7768075 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 35 +# Version 36 +# 2021-01-05 autoconf 2.70 autoupdate and fixes, no AC_TRY_COMPILE # 2020-08-24 Use EVP_sha256 instead of HMAC_Update (for openssl-3.0.0). # 2016-03-21 Check -ldl -pthread for libcrypto for ldns and openssl 1.1.0. # 2016-03-21 Use HMAC_Update instead of HMAC_CTX_Init (for openssl-1.1.0). @@ -447,15 +448,12 @@ AC_DEFUN([ACX_CHECK_FORMAT_ATTRIBUTE], AC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "format" attribute) AC_CACHE_VAL(ac_cv_c_format_attribute, [ac_cv_c_format_attribute=no -AC_TRY_COMPILE( -[#include +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include void f (char *format, ...) __attribute__ ((format (printf, 1, 2))); void (*pf) (char *format, ...) __attribute__ ((format (printf, 1, 2))); -], [ +]], [[ f ("%s", "str"); -], -[ac_cv_c_format_attribute="yes"], -[ac_cv_c_format_attribute="no"]) +]])],[ac_cv_c_format_attribute="yes"],[ac_cv_c_format_attribute="no"]) ]) AC_MSG_RESULT($ac_cv_c_format_attribute) @@ -484,14 +482,11 @@ AC_DEFUN([ACX_CHECK_UNUSED_ATTRIBUTE], AC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "unused" attribute) AC_CACHE_VAL(ac_cv_c_unused_attribute, [ac_cv_c_unused_attribute=no -AC_TRY_COMPILE( -[#include +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include void f (char *u __attribute__((unused))); -], [ +]], [[ f ("x"); -], -[ac_cv_c_unused_attribute="yes"], -[ac_cv_c_unused_attribute="no"]) +]])],[ac_cv_c_unused_attribute="yes"],[ac_cv_c_unused_attribute="no"]) ]) dnl Setup ATTR_UNUSED config.h parts. @@ -524,8 +519,8 @@ AC_DEFUN([AC_PROG_CXX], [:]) AC_DEFUN([AC_PROG_CXXCPP], [:]) AC_DEFUN([AC_PROG_OBJC], [:]) AC_DEFUN([AC_PROG_OBJCCPP], [:]) -AC_DEFUN([AC_LIBTOOL_CXX], [:]) -AC_DEFUN([AC_LIBTOOL_F77], [:]) +AC_DEFUN([LT_LANG([C++])], [:]) +AC_DEFUN([LT_LANG([Fortran 77])], [:]) # always use ./libtool unless override from commandline (libtool=mylibtool) if test -z "$libtool"; then libtool="./libtool" @@ -548,7 +543,7 @@ dnl as a requirement so that is gets called before LIBTOOL dnl because libtools 'AC_REQUIRE' names are right after this one, before dnl this function contents. AC_REQUIRE([ACX_LIBTOOL_C_PRE]) -AC_PROG_LIBTOOL +LT_INIT ]) dnl Detect if u_char type is defined, otherwise define it. @@ -677,14 +672,14 @@ AC_DEFUN([ACX_SSL_CHECKS], [ AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" - AC_TRY_LINK(, [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ int EVP_sha256(void); (void)EVP_sha256(); - ], [ + ]])],[ AC_MSG_RESULT(yes) AC_DEFINE([HAVE_EVP_SHA256], 1, [If you have EVP_sha256]) - ], [ + ],[ AC_MSG_RESULT(no) # check if -lwsock32 or -lgdi32 are needed. BAKLIBS="$LIBS" @@ -692,10 +687,10 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBS="$LIBS -lgdi32 -lws2_32" LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32" AC_MSG_CHECKING([if -lcrypto needs -lgdi32]) - AC_TRY_LINK([], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ int EVP_sha256(void); (void)EVP_sha256(); - ],[ + ]])],[ AC_DEFINE([HAVE_EVP_SHA256], 1, [If you have EVP_sha256]) AC_MSG_RESULT(yes) @@ -706,10 +701,10 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBS="$LIBS -ldl" LIBSSL_LIBS="$LIBSSL_LIBS -ldl" AC_MSG_CHECKING([if -lcrypto needs -ldl]) - AC_TRY_LINK([], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ int EVP_sha256(void); (void)EVP_sha256(); - ],[ + ]])],[ AC_DEFINE([HAVE_EVP_SHA256], 1, [If you have EVP_sha256]) AC_MSG_RESULT(yes) @@ -720,10 +715,10 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBS="$LIBS -ldl -pthread" LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread" AC_MSG_CHECKING([if -lcrypto needs -ldl -pthread]) - AC_TRY_LINK([], [ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ int EVP_sha256(void); (void)EVP_sha256(); - ],[ + ]])],[ AC_DEFINE([HAVE_EVP_SHA256], 1, [If you have EVP_sha256]) AC_MSG_RESULT(yes) @@ -750,8 +745,7 @@ dnl Checks main header files of SSL. dnl AC_DEFUN([ACX_WITH_SSL], [ -AC_ARG_WITH(ssl, AC_HELP_STRING([--with-ssl=pathname], - [enable SSL (will check /usr/local/ssl +AC_ARG_WITH(ssl, AS_HELP_STRING([--with-ssl=pathname],[enable SSL (will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr)]),[ ],[ withval="yes" @@ -769,8 +763,7 @@ dnl Checks main header files of SSL. dnl AC_DEFUN([ACX_WITH_SSL_OPTIONAL], [ -AC_ARG_WITH(ssl, AC_HELP_STRING([--with-ssl=pathname], - [enable SSL (will check /usr/local/ssl +AC_ARG_WITH(ssl, AS_HELP_STRING([--with-ssl=pathname],[enable SSL (will check /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /opt/local /usr/sfw /usr)]),[ ],[ withval="yes" @@ -1062,7 +1055,7 @@ dnl defines MKDIR_HAS_ONE_ARG AC_DEFUN([ACX_MKDIR_ONE_ARG], [ AC_MSG_CHECKING([whether mkdir has one arg]) -AC_TRY_COMPILE([ +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include #ifdef HAVE_WINSOCK2_H @@ -1071,14 +1064,12 @@ AC_TRY_COMPILE([ #ifdef HAVE_SYS_STAT_H #include #endif -], [ +]], [[ (void)mkdir("directory"); -], -AC_MSG_RESULT(yes) +]])],[AC_MSG_RESULT(yes) AC_DEFINE(MKDIR_HAS_ONE_ARG, 1, [Define if mkdir has one argument.]) -, -AC_MSG_RESULT(no) -) +],[AC_MSG_RESULT(no) +]) ])dnl end of ACX_MKDIR_ONE_ARG dnl Check for ioctlsocket function. works on mingw32 too. diff --git a/acx_python.m4 b/acx_python.m4 index a84daa035..767db5b65 100644 --- a/acx_python.m4 +++ b/acx_python.m4 @@ -85,11 +85,11 @@ $ac_distutils_result]) LIBS="$LIBS $PYTHON_LDFLAGS" CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS" - AC_TRY_LINK([ + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ #include - ],[ + ]],[[ Py_Initialize(); - ],[pythonexists=yes],[pythonexists=no]) + ]])],[pythonexists=yes],[pythonexists=no]) AC_MSG_RESULT([$pythonexists]) diff --git a/config.h.in b/config.h.in index f993b81b0..103ad9f00 100644 --- a/config.h.in +++ b/config.h.in @@ -747,7 +747,8 @@ your system. */ #undef PTHREAD_CREATE_JOINABLE -/* Define as the return type of signal handlers (`int' or `void'). */ +/* Return type of signal handlers, but autoconf 2.70 says 'your code may + safely assume C89 semantics that RETSIGTYPE is void.' */ #undef RETSIGTYPE /* if REUSEPORT is enabled by default */ diff --git a/configure b/configure index 00d36a361..87959deae 100755 --- a/configure +++ b/configure @@ -4177,7 +4177,6 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h - if test "$ac_cv_header_minix_config_h" = "yes"; then $as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h @@ -15596,38 +15595,8 @@ $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF +$as_echo "#define RETSIGTYPE void" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 $as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } @@ -18288,17 +18257,13 @@ $as_echo_n "checking if libssl needs -lcrypt32... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char EVP_sha256 (); int main () { -return EVP_sha256 (); + + int EVP_sha256(void); + (void)EVP_sha256(); + ; return 0; } diff --git a/configure.ac b/configure.ac index d648f55ad..02b9eb47b 100644 --- a/configure.ac +++ b/configure.ac @@ -1,6 +1,6 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. -AC_PREREQ(2.56) +AC_PREREQ([2.56]) sinclude(acx_nlnetlabs.m4) sinclude(ax_pthread.m4) sinclude(acx_python.m4) @@ -12,7 +12,7 @@ sinclude(dnscrypt/dnscrypt.m4) m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[13]) m4_define([VERSION_MICRO],[1]) -AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) +AC_INIT([unbound],m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]),[unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues],[unbound]) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) @@ -126,7 +126,7 @@ cmdln="`echo $@ | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/"/\\\\"/'g`" AC_DEFINE_UNQUOTED(CONFCMDLINE, ["$cmdln"], [Command line arguments used with configure]) CFLAGS="$CFLAGS" -AC_AIX +AC_USE_SYSTEM_EXTENSIONS if test "$ac_cv_header_minix_config_h" = "yes"; then AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix]) fi @@ -167,8 +167,7 @@ else ub_conf_file="C:\\Program Files\\Unbound\\service.conf" fi AC_ARG_WITH([conf_file], - AC_HELP_STRING([--with-conf-file=path], - [Pathname to the Unbound configuration file]), + AS_HELP_STRING([--with-conf-file=path],[Pathname to the Unbound configuration file]), [ub_conf_file="$withval"]) AC_SUBST(ub_conf_file) ACX_ESCAPE_BACKSLASH($ub_conf_file, hdr_config) @@ -178,8 +177,7 @@ AC_SUBST(ub_conf_dir) # Determine run, chroot directory and pidfile locations AC_ARG_WITH(run-dir, - AC_HELP_STRING([--with-run-dir=path], - [set default directory to chdir to (by default dir part of cfg file)]), + AS_HELP_STRING([--with-run-dir=path],[set default directory to chdir to (by default dir part of cfg file)]), UNBOUND_RUN_DIR="$withval", if test $on_mingw = no; then UNBOUND_RUN_DIR=`dirname "$ub_conf_file"` @@ -192,8 +190,7 @@ ACX_ESCAPE_BACKSLASH($UNBOUND_RUN_DIR, hdr_run) AC_DEFINE_UNQUOTED(RUN_DIR, ["$hdr_run"], [Directory to chdir to]) AC_ARG_WITH(chroot-dir, - AC_HELP_STRING([--with-chroot-dir=path], - [set default directory to chroot to (by default same as run-dir)]), + AS_HELP_STRING([--with-chroot-dir=path],[set default directory to chroot to (by default same as run-dir)]), UNBOUND_CHROOT_DIR="$withval", if test $on_mingw = no; then UNBOUND_CHROOT_DIR="$UNBOUND_RUN_DIR" @@ -206,16 +203,14 @@ ACX_ESCAPE_BACKSLASH($UNBOUND_CHROOT_DIR, hdr_chroot) AC_DEFINE_UNQUOTED(CHROOT_DIR, ["$hdr_chroot"], [Directory to chroot to]) AC_ARG_WITH(share-dir, - AC_HELP_STRING([--with-share-dir=path], - [set default directory with shared data (by default same as share/unbound)]), + AS_HELP_STRING([--with-share-dir=path],[set default directory with shared data (by default same as share/unbound)]), UNBOUND_SHARE_DIR="$withval", UNBOUND_SHARE_DIR="$UNBOUND_RUN_DIR") AC_SUBST(UNBOUND_SHARE_DIR) AC_DEFINE_UNQUOTED(SHARE_DIR, ["$UNBOUND_SHARE_DIR"], [Shared data]) AC_ARG_WITH(pidfile, - AC_HELP_STRING([--with-pidfile=filename], - [set default pathname to unbound pidfile (default run-dir/unbound.pid)]), + AS_HELP_STRING([--with-pidfile=filename],[set default pathname to unbound pidfile (default run-dir/unbound.pid)]), UNBOUND_PIDFILE="$withval", if test $on_mingw = no; then UNBOUND_PIDFILE="$UNBOUND_RUN_DIR/unbound.pid" @@ -228,8 +223,7 @@ ACX_ESCAPE_BACKSLASH($UNBOUND_PIDFILE, hdr_pid) AC_DEFINE_UNQUOTED(PIDFILE, ["$hdr_pid"], [default pidfile location]) AC_ARG_WITH(rootkey-file, - AC_HELP_STRING([--with-rootkey-file=filename], - [set default pathname to root key file (default run-dir/root.key). This file is read and written.]), + AS_HELP_STRING([--with-rootkey-file=filename],[set default pathname to root key file (default run-dir/root.key). This file is read and written.]), UNBOUND_ROOTKEY_FILE="$withval", if test $on_mingw = no; then UNBOUND_ROOTKEY_FILE="$UNBOUND_RUN_DIR/root.key" @@ -242,8 +236,7 @@ ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTKEY_FILE, hdr_rkey) AC_DEFINE_UNQUOTED(ROOT_ANCHOR_FILE, ["$hdr_rkey"], [default rootkey location]) AC_ARG_WITH(rootcert-file, - AC_HELP_STRING([--with-rootcert-file=filename], - [set default pathname to root update certificate file (default run-dir/icannbundle.pem). This file need not exist if you are content with the builtin.]), + AS_HELP_STRING([--with-rootcert-file=filename],[set default pathname to root update certificate file (default run-dir/icannbundle.pem). This file need not exist if you are content with the builtin.]), UNBOUND_ROOTCERT_FILE="$withval", if test $on_mingw = no; then UNBOUND_ROOTCERT_FILE="$UNBOUND_RUN_DIR/icannbundle.pem" @@ -256,8 +249,7 @@ ACX_ESCAPE_BACKSLASH($UNBOUND_ROOTCERT_FILE, hdr_rpem) AC_DEFINE_UNQUOTED(ROOT_CERT_FILE, ["$hdr_rpem"], [default rootcert location]) AC_ARG_WITH(username, - AC_HELP_STRING([--with-username=user], - [set default user that unbound changes to (default user is unbound)]), + AS_HELP_STRING([--with-username=user],[set default user that unbound changes to (default user is unbound)]), UNBOUND_USERNAME="$withval", UNBOUND_USERNAME="unbound") AC_SUBST(UNBOUND_USERNAME) @@ -269,7 +261,7 @@ AC_DEFINE_UNQUOTED(RSRC_PACKAGE_VERSION, [$wnvs], [version number for resource f # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST -AC_LANG_C +AC_LANG([C]) # allow user to override the -g -O2 flags. default_cflags=no if test "x$CFLAGS" = "x" ; then @@ -282,8 +274,8 @@ ACX_DEPFLAG ACX_DETERMINE_EXT_FLAGS_UNBOUND # debug mode flags warnings -AC_ARG_ENABLE(checking, AC_HELP_STRING([--enable-checking], [Enable warnings, asserts, makefile-dependencies])) -AC_ARG_ENABLE(debug, AC_HELP_STRING([--enable-debug], [same as enable-checking])) +AC_ARG_ENABLE(checking, AS_HELP_STRING([--enable-checking],[Enable warnings, asserts, makefile-dependencies])) +AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],[same as enable-checking])) if test "$enable_debug" = "yes"; then debug_enabled="$enable_debug"; else debug_enabled="$enable_checking"; fi AC_SUBST(debug_enabled) @@ -317,14 +309,11 @@ AC_DEFUN([CHECK_WEAK_ATTRIBUTE], AC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "weak" attribute) AC_CACHE_VAL(ac_cv_c_weak_attribute, [ac_cv_c_weak_attribute=no -AC_TRY_COMPILE( -[ #include +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include __attribute__((weak)) void f(int x) { printf("%d", x); } -], [ +]], [[ f(1); -], -[ac_cv_c_weak_attribute="yes"], -[ac_cv_c_weak_attribute="no"]) +]])],[ac_cv_c_weak_attribute="yes"],[ac_cv_c_weak_attribute="no"]) ]) AC_MSG_RESULT($ac_cv_c_weak_attribute) @@ -341,14 +330,11 @@ AC_DEFUN([CHECK_NORETURN_ATTRIBUTE], AC_MSG_CHECKING(whether the C compiler (${CC-cc}) accepts the "noreturn" attribute) AC_CACHE_VAL(ac_cv_c_noreturn_attribute, [ac_cv_c_noreturn_attribute=no -AC_TRY_COMPILE( -[ #include +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include __attribute__((noreturn)) void f(int x) { printf("%d", x); } -], [ +]], [[ f(1); -], -[ac_cv_c_noreturn_attribute="yes"], -[ac_cv_c_noreturn_attribute="no"]) +]])],[ac_cv_c_noreturn_attribute="yes"],[ac_cv_c_noreturn_attribute="no"]) ]) AC_MSG_RESULT($ac_cv_c_noreturn_attribute) @@ -386,7 +372,7 @@ EOF fi ]) -AC_PROG_LEX +AC_PROG_LEX([noyywrap]) if test "$LEX" != "" -a "$LEX" != ":"; then ACX_YYLEX_DESTROY fi @@ -495,7 +481,7 @@ fi # check some functions of the OS before linking libs (while still runnable). AC_FUNC_CHOWN AC_FUNC_FORK -AC_TYPE_SIGNAL +AC_DEFINE(RETSIGTYPE,void,[Return type of signal handlers, but autoconf 2.70 says 'your code may safely assume C89 semantics that RETSIGTYPE is void.']) AC_FUNC_FSEEKO ACX_SYS_LARGEFILE ACX_CHECK_NONBLOCKING_BROKEN @@ -514,14 +500,11 @@ sinclude(systemd.m4) # Include systemd.m4 - end # set memory allocation checking if requested -AC_ARG_ENABLE(alloc-checks, AC_HELP_STRING([--enable-alloc-checks], - [ enable to memory allocation statistics, for debug purposes ]), +AC_ARG_ENABLE(alloc-checks, AS_HELP_STRING([--enable-alloc-checks],[ enable to memory allocation statistics, for debug purposes ]), , ) -AC_ARG_ENABLE(alloc-lite, AC_HELP_STRING([--enable-alloc-lite], - [ enable for lightweight alloc assertions, for debug purposes ]), +AC_ARG_ENABLE(alloc-lite, AS_HELP_STRING([--enable-alloc-lite],[ enable for lightweight alloc assertions, for debug purposes ]), , ) -AC_ARG_ENABLE(alloc-nonregional, AC_HELP_STRING([--enable-alloc-nonregional], - [ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), +AC_ARG_ENABLE(alloc-nonregional, AS_HELP_STRING([--enable-alloc-nonregional],[ enable nonregional allocs, slow but exposes regional allocations to other memory purifiers, for debug purposes ]), , ) if test x_$enable_alloc_nonregional = x_yes; then AC_DEFINE(UNBOUND_ALLOC_NONREGIONAL, 1, [use malloc not regions, for debug use]) @@ -565,8 +548,7 @@ else # check this first, so that the pthread lib does not get linked in via # libssl or libpython, and thus distorts the tests, and we end up using # the non-threadsafe C libraries. -AC_ARG_WITH(pthreads, AC_HELP_STRING([--with-pthreads], - [use pthreads library, or --without-pthreads to disable threading support.]), +AC_ARG_WITH(pthreads, AS_HELP_STRING([--with-pthreads],[use pthreads library, or --without-pthreads to disable threading support.]), [ ],[ withval="yes" ]) ub_have_pthreads=no if test x_$withval != x_no; then @@ -613,12 +595,11 @@ int main(void) {return 0;} fi # check solaris thread library -AC_ARG_WITH(solaris-threads, AC_HELP_STRING([--with-solaris-threads], - [use solaris native thread library.]), [ ],[ withval="no" ]) +AC_ARG_WITH(solaris-threads, AS_HELP_STRING([--with-solaris-threads],[use solaris native thread library.]), [ ],[ withval="no" ]) ub_have_sol_threads=no if test x_$withval != x_no; then if test x_$ub_have_pthreads != x_no; then - AC_WARN([Have pthreads already, ignoring --with-solaris-threads]) + AC_MSG_WARN([Have pthreads already, ignoring --with-solaris-threads]) else AC_SEARCH_LIBS(thr_create, [thread], [ @@ -628,7 +609,7 @@ if test x_$withval != x_no; then [CFLAGS="$CFLAGS -D_REENTRANT"]) ub_have_sol_threads=yes ] , [ - AC_ERROR([no solaris threads found.]) + AC_MSG_ERROR([no solaris threads found.]) ]) fi fi @@ -636,7 +617,7 @@ fi fi # end of non-mingw check of thread libraries # Check for SYSLOG_FACILITY -AC_ARG_WITH(syslog-facility, AC_HELP_STRING([--with-syslog-facility=LOCAL0 - LOCAL7], [ set SYSLOG_FACILITY, default DAEMON ]), +AC_ARG_WITH(syslog-facility, AS_HELP_STRING([--with-syslog-facility=LOCAL0 - LOCAL7],[ set SYSLOG_FACILITY, default DAEMON ]), [ UNBOUND_SYSLOG_FACILITY="$withval" ], []) case "${UNBOUND_SYSLOG_FACILITY}" in @@ -649,8 +630,7 @@ AC_DEFINE_UNQUOTED(UB_SYSLOG_FACILITY,${UNBOUND_SYSLOG_FACILITY},[the SYSLOG_FAC # Check for dynamic library module AC_ARG_WITH(dynlibmodule, - AC_HELP_STRING([--with-dynlibmodule], - [build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), + AS_HELP_STRING([--with-dynlibmodule],[build dynamic library module, or --without-dynlibmodule to disable it. (default=no)]), [], [ withval="no" ]) if test x_$withval != x_no; then @@ -671,8 +651,7 @@ fi # Check for PyUnbound AC_ARG_WITH(pyunbound, - AC_HELP_STRING([--with-pyunbound], - [build PyUnbound, or --without-pyunbound to skip it. (default=no)]), + AS_HELP_STRING([--with-pyunbound],[build PyUnbound, or --without-pyunbound to skip it. (default=no)]), [], [ withval="no" ]) ub_test_python=no @@ -684,8 +663,7 @@ fi # Check for Python module AC_ARG_WITH(pythonmodule, - AC_HELP_STRING([--with-pythonmodule], - [build Python module, or --without-pythonmodule to disable script engine. (default=no)]), + AS_HELP_STRING([--with-pythonmodule],[build Python module, or --without-pythonmodule to disable script engine. (default=no)]), [], [ withval="no" ]) ub_with_pythonmod=no @@ -703,7 +681,7 @@ if test x_$ub_test_python != x_no; then AC_PYTHON_DEVEL if test ! -z "$PYTHON_VERSION"; then if test `$PYTHON -c "print('$PYTHON_VERSION' >= '2.4.0')"` = "False"; then - AC_ERROR([Python version >= 2.4.0 is required]) + AC_MSG_ERROR([Python version >= 2.4.0 is required]) fi [PY_MAJOR_VERSION="`$PYTHON -c \"import sys; print(sys.version_info[0])\"`"] @@ -731,7 +709,7 @@ if test x_$ub_test_python != x_no; then # Check for SWIG ub_have_swig=no - AC_ARG_ENABLE(swig-version-check, AC_HELP_STRING([--disable-swig-version-check], [Disable swig version check to build python modules with older swig even though that is unreliable])) + AC_ARG_ENABLE(swig-version-check, AS_HELP_STRING([--disable-swig-version-check],[Disable swig version check to build python modules with older swig even though that is unreliable])) if test "$enable_swig_version_check" = "yes"; then AC_PROG_SWIG(2.0.1) else @@ -739,7 +717,7 @@ if test x_$ub_test_python != x_no; then fi AC_MSG_CHECKING(SWIG) if test ! -x "$SWIG"; then - AC_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) + AC_MSG_ERROR([failed to find swig tool, install it, or do not build Python module and PyUnbound]) else AC_DEFINE(HAVE_SWIG, 1, [Define if you have Swig libraries and header files.]) AC_SUBST(swig, "$SWIG") @@ -794,8 +772,7 @@ AC_SUBST(CONFIG_DATE) # libnss USE_NSS="no" -AC_ARG_WITH([nss], AC_HELP_STRING([--with-nss=path], - [use libnss instead of openssl, installed at path.]), +AC_ARG_WITH([nss], AS_HELP_STRING([--with-nss=path],[use libnss instead of openssl, installed at path.]), [ USE_NSS="yes" AC_DEFINE(HAVE_NSS, 1, [Use libnss for crypto]) @@ -817,8 +794,7 @@ AC_ARG_WITH([nss], AC_HELP_STRING([--with-nss=path], # libnettle USE_NETTLE="no" -AC_ARG_WITH([nettle], AC_HELP_STRING([--with-nettle=path], - [use libnettle as crypto library, installed at path.]), +AC_ARG_WITH([nettle], AS_HELP_STRING([--with-nettle=path],[use libnettle as crypto library, installed at path.]), [ USE_NETTLE="yes" AC_DEFINE(HAVE_NETTLE, 1, [Use libnettle for crypto]) @@ -850,7 +826,10 @@ AC_SUBST(PC_CRYPTO_DEPENDENCY) BAKLIBS="$LIBS" LIBS="-lssl $LIBS" AC_MSG_CHECKING([if libssl needs -lcrypt32]) -AC_TRY_LINK_FUNC([EVP_sha256], [ +AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ + int EVP_sha256(void); + (void)EVP_sha256(); +]])], [ AC_MSG_RESULT([no]) LIBS="$BAKLIBS" ], [ @@ -938,7 +917,7 @@ fi AC_SUBST(SSLLIB) # libbsd -AC_ARG_WITH([libbsd], AC_HELP_STRING([--with-libbsd], [Use portable libbsd functions]), [ +AC_ARG_WITH([libbsd], AS_HELP_STRING([--with-libbsd],[Use portable libbsd functions]), [ AC_CHECK_HEADERS([bsd/string.h bsd/stdlib.h],,, [AC_INCLUDES_DEFAULT]) if test "x$ac_cv_header_bsd_string_h" = xyes -a "x$ac_cv_header_bsd_stdlib_h" = xyes; then for func in strlcpy strlcat arc4random arc4random_uniform reallocarray; do @@ -951,7 +930,7 @@ AC_ARG_WITH([libbsd], AC_HELP_STRING([--with-libbsd], [Use portable libbsd funct fi ]) -AC_ARG_ENABLE(sha1, AC_HELP_STRING([--disable-sha1], [Disable SHA1 RRSIG support, does not disable nsec3 support])) +AC_ARG_ENABLE(sha1, AS_HELP_STRING([--disable-sha1],[Disable SHA1 RRSIG support, does not disable nsec3 support])) case "$enable_sha1" in no) ;; @@ -961,7 +940,7 @@ case "$enable_sha1" in esac -AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support])) +AC_ARG_ENABLE(sha2, AS_HELP_STRING([--disable-sha2],[Disable SHA256 and SHA512 RRSIG support])) case "$enable_sha2" in no) ;; @@ -970,7 +949,7 @@ case "$enable_sha2" in ;; esac -AC_ARG_ENABLE(subnet, AC_HELP_STRING([--enable-subnet], [Enable client subnet])) +AC_ARG_ENABLE(subnet, AS_HELP_STRING([--enable-subnet],[Enable client subnet])) case "$enable_subnet" in yes) AC_DEFINE([CLIENT_SUBNET], [1], [Define this to enable client subnet option.]) @@ -1081,7 +1060,7 @@ fi AC_MSG_RESULT($ac_cv_c_gost_works) ])dnl -AC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support])) +AC_ARG_ENABLE(gost, AS_HELP_STRING([--disable-gost],[Disable GOST support])) use_gost="no" if test $USE_NSS = "no" -a $USE_NETTLE = "no"; then case "$enable_gost" in @@ -1099,7 +1078,7 @@ case "$enable_gost" in esac fi dnl !USE_NSS && !USE_NETTLE -AC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support])) +AC_ARG_ENABLE(ecdsa, AS_HELP_STRING([--disable-ecdsa],[Disable ECDSA support])) use_ecdsa="no" case "$enable_ecdsa" in no) @@ -1131,7 +1110,7 @@ case "$enable_ecdsa" in ;; esac -AC_ARG_ENABLE(dsa, AC_HELP_STRING([--disable-dsa], [Disable DSA support])) +AC_ARG_ENABLE(dsa, AS_HELP_STRING([--disable-dsa],[Disable DSA support])) use_dsa="no" case "$enable_dsa" in yes) @@ -1171,7 +1150,7 @@ AC_INCLUDES_DEFAULT ;; esac -AC_ARG_ENABLE(ed25519, AC_HELP_STRING([--disable-ed25519], [Disable ED25519 support])) +AC_ARG_ENABLE(ed25519, AS_HELP_STRING([--disable-ed25519],[Disable ED25519 support])) use_ed25519="no" case "$enable_ed25519" in no) @@ -1194,7 +1173,7 @@ case "$enable_ed25519" in ;; esac -AC_ARG_ENABLE(ed448, AC_HELP_STRING([--disable-ed448], [Disable ED448 support])) +AC_ARG_ENABLE(ed448, AS_HELP_STRING([--disable-ed448],[Disable ED448 support])) use_ed448="no" case "$enable_ed448" in no) @@ -1214,7 +1193,7 @@ case "$enable_ed448" in ;; esac -AC_ARG_ENABLE(event-api, AC_HELP_STRING([--enable-event-api], [Enable (experimental) pluggable event base libunbound API installed to unbound-event.h])) +AC_ARG_ENABLE(event-api, AS_HELP_STRING([--enable-event-api],[Enable (experimental) pluggable event base libunbound API installed to unbound-event.h])) case "$enable_event_api" in yes) AC_SUBST(UNBOUND_EVENT_INSTALL, [unbound-event-install]) @@ -1224,7 +1203,7 @@ case "$enable_event_api" in ;; esac -AC_ARG_ENABLE(tfo-client, AC_HELP_STRING([--enable-tfo-client], [Enable TCP Fast Open for client mode])) +AC_ARG_ENABLE(tfo-client, AS_HELP_STRING([--enable-tfo-client],[Enable TCP Fast Open for client mode])) case "$enable_tfo_client" in yes) case `uname` in @@ -1248,7 +1227,7 @@ case "$enable_tfo_client" in ;; esac -AC_ARG_ENABLE(tfo-server, AC_HELP_STRING([--enable-tfo-server], [Enable TCP Fast Open for server mode])) +AC_ARG_ENABLE(tfo-server, AS_HELP_STRING([--enable-tfo-server],[Enable TCP Fast Open for server mode])) case "$enable_tfo_server" in yes) AC_CHECK_DECL([TCP_FASTOPEN], [AC_MSG_WARN([Check the platform specific TFO kernel parameters are correctly configured to support server mode TFO])], [AC_MSG_ERROR([TCP Fast Open is not available for server mode: please rerun without --enable-tfo-server])], [AC_INCLUDES_DEFAULT @@ -1261,8 +1240,7 @@ case "$enable_tfo_server" in esac # check for libevent -AC_ARG_WITH(libevent, AC_HELP_STRING([--with-libevent=pathname], - [use libevent (will check /usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr or you can specify an explicit path). Slower, but allows use of large outgoing port ranges.]), +AC_ARG_WITH(libevent, AS_HELP_STRING([--with-libevent=pathname],[use libevent (will check /usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr or you can specify an explicit path). Slower, but allows use of large outgoing port ranges.]), [ ],[ with_libevent="no" ]) if test "x_$with_libevent" != x_no; then AC_DEFINE([USE_LIBEVENT], [1], [Define if you enable libevent]) @@ -1356,8 +1334,7 @@ else fi # check for libexpat -AC_ARG_WITH(libexpat, AC_HELP_STRING([--with-libexpat=path], - [specify explicit path for libexpat.]), +AC_ARG_WITH(libexpat, AS_HELP_STRING([--with-libexpat=path],[specify explicit path for libexpat.]), [ ],[ withval="/usr/local /opt/local /usr/lib /usr/pkg /usr/sfw /usr" ]) AC_MSG_CHECKING(for libexpat) found_libexpat="no" @@ -1374,7 +1351,7 @@ for dir in $withval ; do fi done if test x_$found_libexpat != x_yes; then - AC_ERROR([Could not find libexpat, expat.h]) + AC_MSG_ERROR([Could not find libexpat, expat.h]) fi AC_CHECK_HEADERS([expat.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT @@ -1382,8 +1359,7 @@ AC_CHECK_DECLS([XML_StopParser], [], [], [AC_INCLUDES_DEFAULT ]) # hiredis (redis C client for cachedb) -AC_ARG_WITH(libhiredis, AC_HELP_STRING([--with-libhiredis=path], - [specify explicit path for libhiredis.]), +AC_ARG_WITH(libhiredis, AS_HELP_STRING([--with-libhiredis=path],[specify explicit path for libhiredis.]), [ ],[ withval="no" ]) found_libhiredis="no" if test x_$withval = x_yes -o x_$withval != x_no; then @@ -1406,7 +1382,7 @@ if test x_$withval = x_yes -o x_$withval != x_no; then fi done if test x_$found_libhiredis != x_yes; then - AC_ERROR([Could not find libhiredis, hiredis.h]) + AC_MSG_ERROR([Could not find libhiredis, hiredis.h]) fi AC_CHECK_HEADERS([hiredis/hiredis.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_DECLS([redisConnect], [], [], [AC_INCLUDES_DEFAULT @@ -1415,8 +1391,7 @@ if test x_$withval = x_yes -o x_$withval != x_no; then fi # nghttp2 -AC_ARG_WITH(libnghttp2, AC_HELP_STRING([--with-libnghttp2=path], - [specify explicit path for libnghttp2.]), +AC_ARG_WITH(libnghttp2, AS_HELP_STRING([--with-libnghttp2=path],[specify explicit path for libnghttp2.]), [ ],[ withval="no" ]) found_libnghttp2="no" if test x_$withval = x_yes -o x_$withval != x_no; then @@ -1439,7 +1414,7 @@ if test x_$withval = x_yes -o x_$withval != x_no; then fi done if test x_$found_libnghttp2 != x_yes; then - AC_ERROR([Could not find libnghttp2, nghttp2.h]) + AC_MSG_ERROR([Could not find libnghttp2, nghttp2.h]) fi AC_CHECK_HEADERS([nghttp2/nghttp2.h],,, [AC_INCLUDES_DEFAULT]) AC_CHECK_DECLS([nghttp2_session_server_new], [], [], [AC_INCLUDES_DEFAULT @@ -1450,8 +1425,7 @@ fi # set static linking for uninstalled libraries if requested AC_SUBST(staticexe) staticexe="" -AC_ARG_ENABLE(static-exe, AC_HELP_STRING([--enable-static-exe], - [ enable to compile executables statically against (event) uninstalled libs, for debug purposes ]), +AC_ARG_ENABLE(static-exe, AS_HELP_STRING([--enable-static-exe],[ enable to compile executables statically against (event) uninstalled libs, for debug purposes ]), , ) if test x_$enable_static_exe = x_yes; then staticexe="-static" @@ -1468,8 +1442,7 @@ if test x_$enable_static_exe = x_yes; then fi # set full static linking if requested -AC_ARG_ENABLE(fully-static, AC_HELP_STRING([--enable-fully-static], - [ enable to compile fully static ]), +AC_ARG_ENABLE(fully-static, AS_HELP_STRING([--enable-fully-static],[ enable to compile fully static ]), , ) if test x_$enable_fully_static = x_yes; then staticexe="-all-static" @@ -1485,8 +1458,7 @@ if test x_$enable_fully_static = x_yes; then fi # set lock checking if requested -AC_ARG_ENABLE(lock_checks, AC_HELP_STRING([--enable-lock-checks], - [ enable to check lock and unlock calls, for debug purposes ]), +AC_ARG_ENABLE(lock_checks, AS_HELP_STRING([--enable-lock-checks],[ enable to check lock and unlock calls, for debug purposes ]), , ) if test x_$enable_lock_checks = x_yes; then AC_DEFINE(ENABLE_LOCK_CHECKS, 1, [Define if you want to use debug lock checking (slow).]) @@ -1728,7 +1700,7 @@ AC_SUBST(LIBOBJ_WITHOUT_CTIME) AC_REPLACE_FUNCS(ctime_r) AC_REPLACE_FUNCS(strsep) -AC_ARG_ENABLE(allsymbols, AC_HELP_STRING([--enable-allsymbols], [export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) +AC_ARG_ENABLE(allsymbols, AS_HELP_STRING([--enable-allsymbols],[export all symbols from libunbound and link binaries to it, smaller install size but libunbound export table is polluted by internal symbols])) case "$enable_allsymbols" in yes) COMMON_OBJ_ALL_SYMBOLS="" @@ -1794,7 +1766,7 @@ dnsc_DNSCRYPT([ ) # check for cachedb if requested -AC_ARG_ENABLE(cachedb, AC_HELP_STRING([--enable-cachedb], [enable cachedb module that can use external cache storage])) +AC_ARG_ENABLE(cachedb, AS_HELP_STRING([--enable-cachedb],[enable cachedb module that can use external cache storage])) # turn on cachedb when hiredis support is enabled. if test "$found_libhiredis" = "yes"; then enable_cachedb="yes"; fi case "$enable_cachedb" in @@ -1807,7 +1779,7 @@ case "$enable_cachedb" in esac # check for ipsecmod if requested -AC_ARG_ENABLE(ipsecmod, AC_HELP_STRING([--enable-ipsecmod], [Enable ipsecmod module that facilitates opportunistic IPsec])) +AC_ARG_ENABLE(ipsecmod, AS_HELP_STRING([--enable-ipsecmod],[Enable ipsecmod module that facilitates opportunistic IPsec])) case "$enable_ipsecmod" in yes) AC_DEFINE([USE_IPSECMOD], [1], [Define to 1 to use ipsecmod support.]) @@ -1822,7 +1794,7 @@ case "$enable_ipsecmod" in esac # check for ipset if requested -AC_ARG_ENABLE(ipset, AC_HELP_STRING([--enable-ipset], [enable ipset module])) +AC_ARG_ENABLE(ipset, AS_HELP_STRING([--enable-ipset],[enable ipset module])) case "$enable_ipset" in yes) AC_DEFINE([USE_IPSET], [1], [Define to 1 to use ipset support]) @@ -1832,8 +1804,7 @@ case "$enable_ipset" in AC_SUBST(IPSET_OBJ) # mnl - AC_ARG_WITH(libmnl, AC_HELP_STRING([--with-libmnl=path], - [specify explicit path for libmnl.]), + AC_ARG_WITH(libmnl, AS_HELP_STRING([--with-libmnl=path],[specify explicit path for libmnl.]), [ ],[ withval="yes" ]) found_libmnl="no" AC_MSG_CHECKING(for libmnl) @@ -1854,14 +1825,14 @@ case "$enable_ipset" in fi done if test x_$found_libmnl != x_yes; then - AC_ERROR([Could not find libmnl, libmnl.h]) + AC_MSG_ERROR([Could not find libmnl, libmnl.h]) fi ;; no|*) # nothing ;; esac -AC_ARG_ENABLE(explicit-port-randomisation, AC_HELP_STRING([--disable-explicit-port-randomisation], [disable explicit source port randomisation and rely on the kernel to provide random source ports])) +AC_ARG_ENABLE(explicit-port-randomisation, AS_HELP_STRING([--disable-explicit-port-randomisation],[disable explicit source port randomisation and rely on the kernel to provide random source ports])) case "$enable_explicit_port_randomisation" in no) AC_DEFINE([DISABLE_EXPLICIT_PORT_RANDOMISATION], [1], [Define this to enable kernel based UDP source port randomization.]) @@ -1909,8 +1880,7 @@ AC_SUBST(SOURCEFILE) # see if we want to build the library or everything ALLTARGET="alltargets" INSTALLTARGET="install-all" -AC_ARG_WITH(libunbound-only, AC_HELP_STRING([--with-libunbound-only], - [do not build daemon and tool programs]), +AC_ARG_WITH(libunbound-only, AS_HELP_STRING([--with-libunbound-only],[do not build daemon and tool programs]), [ if test "$withval" = "yes"; then ALLTARGET="lib" @@ -1919,10 +1889,10 @@ AC_ARG_WITH(libunbound-only, AC_HELP_STRING([--with-libunbound-only], ]) if test $ALLTARGET = "alltargets"; then if test $USE_NSS = "yes"; then - AC_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) + AC_MSG_ERROR([--with-nss can only be used in combination with --with-libunbound-only.]) fi if test $USE_NETTLE = "yes"; then - AC_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) + AC_MSG_ERROR([--with-nettle can only be used in combination with --with-libunbound-only.]) fi fi @@ -2199,5 +2169,5 @@ AC_SUBST(version, [VERSION_MAJOR.VERSION_MINOR.VERSION_MICRO]) AC_SUBST(date, [`date +'%b %e, %Y'`]) AC_CONFIG_FILES([Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h dnscrypt/dnscrypt_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service contrib/unbound_portable.service]) -AC_CONFIG_HEADER([config.h]) +AC_CONFIG_HEADERS([config.h]) AC_OUTPUT diff --git a/dnscrypt/dnscrypt.m4 b/dnscrypt/dnscrypt.m4 index 591bd1375..68964242a 100644 --- a/dnscrypt/dnscrypt.m4 +++ b/dnscrypt/dnscrypt.m4 @@ -11,7 +11,7 @@ AC_DEFUN([dnsc_DNSCRYPT], [opt_dnscrypt=$enableval], [opt_dnscrypt=no]) if test "x$opt_dnscrypt" != "xno"; then - AC_ARG_WITH([libsodium], AC_HELP_STRING([--with-libsodium=path], + AC_ARG_WITH([libsodium], AS_HELP_STRING([--with-libsodium=path], [Path where libsodium is installed, for dnscrypt]), [ CFLAGS="$CFLAGS -I$withval/include" LDFLAGS="$LDFLAGS -L$withval/lib" diff --git a/dnstap/dnstap.m4 b/dnstap/dnstap.m4 index ba723e0be..1ff6c3fea 100644 --- a/dnstap/dnstap.m4 +++ b/dnstap/dnstap.m4 @@ -20,7 +20,7 @@ AC_DEFUN([dt_DNSTAP], if test -z "$PROTOC_C"; then AC_MSG_ERROR([The protoc-c program was not found. Please install protobuf-c!]) fi - AC_ARG_WITH([protobuf-c], AC_HELP_STRING([--with-protobuf-c=path], + AC_ARG_WITH([protobuf-c], AS_HELP_STRING([--with-protobuf-c=path], [Path where protobuf-c is installed, for dnstap]), [ # workaround for protobuf-c includes at old dir before protobuf-c-1.0.0 if test -f $withval/include/google/protobuf-c/protobuf-c.h; then diff --git a/doc/Changelog b/doc/Changelog index 093a4b8aa..f48fe64c0 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 January 2021: Wouter + - Fix #385: autoconf 2.70 impacts unbound build + 4 January 2021: Wouter - For #376: Fix that comm point event is not double removed or double added to event map. From b788e292656c66d8a8ba9e5be793acd84c1e8881 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 5 Jan 2021 12:48:27 +0100 Subject: [PATCH 336/394] Fix acx_nlnetlabs.m4 for aclocal --- acx_nlnetlabs.m4 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 2b7768075..d33352f17 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 36 +# Version 37 +# 2021-01-05 fix defun for aclocal # 2021-01-05 autoconf 2.70 autoupdate and fixes, no AC_TRY_COMPILE # 2020-08-24 Use EVP_sha256 instead of HMAC_Update (for openssl-3.0.0). # 2016-03-21 Check -ldl -pthread for libcrypto for ldns and openssl 1.1.0. @@ -519,8 +520,8 @@ AC_DEFUN([AC_PROG_CXX], [:]) AC_DEFUN([AC_PROG_CXXCPP], [:]) AC_DEFUN([AC_PROG_OBJC], [:]) AC_DEFUN([AC_PROG_OBJCCPP], [:]) -AC_DEFUN([LT_LANG([C++])], [:]) -AC_DEFUN([LT_LANG([Fortran 77])], [:]) +AC_DEFUN([AC_LIBTOOL_CXX], [:]) +AC_DEFUN([AC_LIBTOOL_F77], [:]) # always use ./libtool unless override from commandline (libtool=mylibtool) if test -z "$libtool"; then libtool="./libtool" From c357e0fea46028225c9caec5494479f472741c36 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 5 Jan 2021 13:43:53 +0100 Subject: [PATCH 337/394] Changelog note for #375 and -h output. - Merge PR #375 by fhriley: Add rpz_enable and rpz_disable commands to unbound-control. --- doc/Changelog | 2 ++ smallapp/unbound-control.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f48fe64c0..a596befee 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 5 January 2021: Wouter - Fix #385: autoconf 2.70 impacts unbound build + - Merge PR #375 by fhriley: Add rpz_enable and rpz_disable commands + to unbound-control. 4 January 2021: Wouter - For #376: Fix that comm point event is not double removed or double diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 93281736a..d58f1b2f9 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -167,6 +167,9 @@ usage(void) printf(" view_local_data_remove view name remove local-data in view\n"); printf(" view_local_datas_remove view remove list of local-data from view\n"); printf(" one entry per line read from stdin\n"); + printf(" rpz_enable zone Enable the RPZ zone if it had previously\n"); + printf(" been disabled\n"); + printf(" rpz_disable zone Disable the RPZ zone\n"); printf("Version %s\n", PACKAGE_VERSION); printf("BSD licensed, see LICENSE in source package for details.\n"); printf("Report bugs to %s\n", PACKAGE_BUGREPORT); From 44075a06a5c716fe44d5c9756bc17a6f808a8748 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 6 Jan 2021 10:36:23 +0100 Subject: [PATCH 338/394] - Fix #379: zone loading over HTTP appears to have buffer issues. --- doc/Changelog | 3 +++ util/netevent.c | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a596befee..b450e75e2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +6 January 2021: Wouter + - Fix #379: zone loading over HTTP appears to have buffer issues. + 5 January 2021: Wouter - Fix #385: autoconf 2.70 impacts unbound build - Merge PR #375 by fhriley: Add rpz_enable and rpz_disable commands diff --git a/util/netevent.c b/util/netevent.c index 5c7550805..a5c3fe666 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -2412,7 +2412,7 @@ http_nonchunk_segment(struct comm_point* c) return 1; } -/** handle nonchunked data segment, return 0=fail, 1=wait, 2=process more */ +/** handle chunked data segment, return 0=fail, 1=wait, 2=process more */ static int http_chunked_segment(struct comm_point* c) { @@ -2422,6 +2422,7 @@ http_chunked_segment(struct comm_point* c) */ size_t remainbufferlen; size_t got_now = sldns_buffer_limit(c->buffer) - c->http_stored; + verbose(VERB_ALGO, "http_chunked_segment: got now %d, tcpbytcount %d, http_stored %d, buffer pos %d, buffer limit %d", (int)got_now, (int)c->tcp_byte_count, (int)c->http_stored, (int)sldns_buffer_position(c->buffer), (int)sldns_buffer_limit(c->buffer)); if(c->tcp_byte_count <= got_now) { /* the chunk has completed (with perhaps some extra data * from next chunk header and next chunk) */ @@ -2761,6 +2762,11 @@ comm_point_http_handle_read(int fd, struct comm_point* c) } sldns_buffer_flip(c->buffer); + /* if we are partway in a segment of data, position us at the point + * where we left off previously */ + if(c->http_stored < sldns_buffer_limit(c->buffer)) + sldns_buffer_set_position(c->buffer, c->http_stored); + else sldns_buffer_set_position(c->buffer, sldns_buffer_limit(c->buffer)); while(sldns_buffer_remaining(c->buffer) > 0) { /* Handle HTTP/1.x data */ From 422213c1719ca324faced1b4c6210a36b4c7506a Mon Sep 17 00:00:00 2001 From: Anton Lindqvist Date: Wed, 6 Jan 2021 12:35:22 +0100 Subject: [PATCH 339/394] add missing null check I have a unbound forward zone configured on my router for my $DAYJOB. The address associated with the zone is only accessible when the router is connected to a VPN. If the VPN connection is absent, trying to resolve any domain that must be handled by the zone crashes unbound. Turns out there's a missing NULL check in `comm_point_send_udp_msg()`. The same routine already has `if (addr) {} else {}` branches so I guess protecting the call to `log_addr()` using the same conditional is reasonable I have also committed the same fix to unbound shipped with OpenBSD[1]. [1] https://marc.info/?l=openbsd-cvs&m=160993335615698&w=2 --- util/netevent.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index a5c3fe666..a2c0e6073 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -388,8 +388,9 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, } else { verbose(VERB_OPS, "send failed: %s", sock_strerror(errno)); } - log_addr(VERB_OPS, "remote address is", - (struct sockaddr_storage*)addr, addrlen); + if(addr) + log_addr(VERB_OPS, "remote address is", + (struct sockaddr_storage*)addr, addrlen); return 0; } else if((size_t)sent != sldns_buffer_remaining(packet)) { log_err("sent %d in place of %d bytes", From 752aea84073f865d17cb6ed85d0fa5b6488a2c24 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 6 Jan 2021 13:19:46 +0100 Subject: [PATCH 340/394] Changelog note for #395 - Merge PR #395 from mptre: add missing null check. --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index b450e75e2..6c1e9a20e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. + - Merge PR #395 from mptre: add missing null check. 5 January 2021: Wouter - Fix #385: autoconf 2.70 impacts unbound build From 2e4d64684e0bc6352d469650689c14690218bf57 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 6 Jan 2021 13:42:00 +0100 Subject: [PATCH 341/394] - Fix #387: client-subnet-always-forward seems to effectively bypass any caching? --- doc/Changelog | 2 ++ doc/unbound.conf.5.in | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 6c1e9a20e..7e8313333 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. - Merge PR #395 from mptre: add missing null check. + - Fix #387: client-subnet-always-forward seems to effectively bypass + any caching? 5 January 2021: Wouter - Fix #385: autoconf 2.70 impacts unbound build diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 38bbc44df..fa6f91b7c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2033,7 +2033,8 @@ Specify whether the ECS address check (configured using query contains an ECS record, or only for queries for which the ECS record is generated using the querier address (and therefore did not contain ECS data in the client query). If enabled, the address check is skipped when the client -query contains an ECS record. Default is no. +query contains an ECS record. And the lookup in the regular cache is skipped. +Default is no. .TP .B max\-client\-subnet\-ipv6: \fI\fR Specifies the maximum prefix length of the client source address we are willing From 260837e05000e9f82977afd8c3887568f7c136e5 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 09:36:37 +0100 Subject: [PATCH 342/394] Changelog note for #391 - Merge PR #391 from fhriley: Add start_time to reply callbacks so modules can compute the response time. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 7e8313333..fa91a09bb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 January 2021: Wouter + - Merge PR #391 from fhriley: Add start_time to reply callbacks so + modules can compute the response time. + 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. - Merge PR #395 from mptre: add missing null check. From 3e03e2c26db500dff237a426de7688f9a8277625 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 09:47:46 +0100 Subject: [PATCH 343/394] - For #391: use struct timeval* start_time for callback information. --- daemon/worker.c | 14 +++++++------- doc/Changelog | 1 + dynlibmod/dynlibmod.c | 2 +- dynlibmod/dynlibmod.h | 2 +- dynlibmod/examples/helloworld.c | 4 ++-- pythonmod/interface.i | 4 ++-- pythonmod/pythonmod.h | 2 +- services/authzone.c | 4 ++-- services/localzone.c | 4 ++-- services/mesh.c | 20 ++++++++++---------- util/data/msgreply.c | 10 +++++----- util/data/msgreply.h | 8 ++++---- util/module.h | 2 +- 13 files changed, 39 insertions(+), 38 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index edf96988a..33b70e83e 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -514,7 +514,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, msg->rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) return 0; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); @@ -546,7 +546,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, msg->rep, (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) return 0; msg->rep->flags |= BIT_QR|BIT_RA; if(!apply_edns_options(edns, &edns_bak, worker->env.cfg, @@ -556,7 +556,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, udpsize, edns, (int)(edns->bits & EDNS_DO), secure)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, &msg->qinfo, id, flags, edns); @@ -688,7 +688,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) goto bail_out; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -723,7 +723,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, rep, (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) goto bail_out; *alias_rrset = NULL; /* avoid confusion if caller set it to non-NULL */ if((worker->daemon->use_response_ip || worker->daemon->use_rpz) && @@ -760,7 +760,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -849,7 +849,7 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, - *worker->env.now_tv)) + worker->env.now_tv)) edns->opt_list = NULL; if(sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+calc_edns_field_size(edns)) diff --git a/doc/Changelog b/doc/Changelog index fa91a09bb..e8da85d6a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 8 January 2021: Wouter - Merge PR #391 from fhriley: Add start_time to reply callbacks so modules can compute the response time. + - For #391: use struct timeval* start_time for callback information. 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. diff --git a/dynlibmod/dynlibmod.c b/dynlibmod/dynlibmod.c index e842c9d8a..ffac7ff30 100644 --- a/dynlibmod/dynlibmod.c +++ b/dynlibmod/dynlibmod.c @@ -213,7 +213,7 @@ int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* callback) { + struct timeval* start_time, int id, void* callback) { struct cb_pair* cb_pair = (struct cb_pair*) callback; return ((inplace_cb_reply_func_type*) cb_pair->cb)(qinfo, qstate, rep, rcode, edns, opt_list_out, repinfo, region, start_time, id, cb_pair->cb_arg); } diff --git a/dynlibmod/dynlibmod.h b/dynlibmod/dynlibmod.h index f35dafa1a..321f4f693 100644 --- a/dynlibmod/dynlibmod.h +++ b/dynlibmod/dynlibmod.h @@ -71,7 +71,7 @@ int dynlib_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* callback); + struct timeval* start_time, int id, void* callback); int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t flags, struct module_qstate* qstate, struct sockaddr_storage* addr, diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 5ea9c51be..7da32d9bb 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -31,7 +31,7 @@ int reply_callback(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* callback); + struct timeval* start_time, int id, void* callback); /* Init is called when the module is first loaded. It should be used to set up * the environment for this module and do any other initialisation required. */ @@ -117,7 +117,7 @@ int reply_callback(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* callback) { + struct timeval* start_time, int id, void* callback) { log_info("dynlib: hello world from callback"); struct dynlibmod_env* env = qstate->env->modinfo[id]; if (env->dyn_env != NULL) { diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 8f44e52b6..6e629fa70 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1542,13 +1542,13 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* python_callback) + struct timeval* start_time, int id, void* python_callback) { PyObject *func, *py_edns, *py_qstate, *py_opt_list_out, *py_qinfo; PyObject *py_rep, *py_repinfo, *py_region; PyObject *py_args, *py_kwargs, *result; int res = 0; - double py_start_time = start_time.tv_sec + start_time.tv_usec / 1e6; + double py_start_time = start_time->tv_sec + start_time->tv_usec / 1e6; PyGILState_STATE gstate = PyGILState_Ensure(); func = (PyObject *) python_callback; diff --git a/pythonmod/pythonmod.h b/pythonmod/pythonmod.h index 222ebd71e..f5ae9ca56 100644 --- a/pythonmod/pythonmod.h +++ b/pythonmod/pythonmod.h @@ -73,7 +73,7 @@ int python_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* python_callback); + struct timeval* start_time, int id, void* python_callback); /** Declared here for fptr_wlist access. The definition is in interface.i. */ int python_inplace_cb_query_generic( diff --git a/services/authzone.c b/services/authzone.c index 0f6d691a2..3ad38865e 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -3286,7 +3286,7 @@ auth_answer_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, msg->rep, - (int)FLAGS_GET_RCODE(msg->rep->flags), edns, repinfo, temp, *env->now_tv) + (int)FLAGS_GET_RCODE(msg->rep->flags), edns, repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, msg->rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), @@ -3310,7 +3310,7 @@ auth_error_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, - rcode, edns, repinfo, temp, *env->now_tv)) + rcode, edns, repinfo, temp, env->now_tv)) edns->opt_list = NULL; error_encode(buf, rcode|BIT_AA, qinfo, *(uint16_t*)sldns_buffer_begin(buf), diff --git a/services/localzone.c b/services/localzone.c index 308150a00..c7ae95888 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1215,7 +1215,7 @@ local_encode(struct query_info* qinfo, struct module_env* env, edns->ext_rcode = 0; edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, &rep, rcode, edns, - repinfo, temp, *env->now_tv) || !reply_info_answer_encode(qinfo, &rep, + repinfo, temp, env->now_tv) || !reply_info_answer_encode(qinfo, &rep, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), buf, 0, 0, temp, udpsize, edns, (int)(edns->bits&EDNS_DO), 0)) { error_encode(buf, (LDNS_RCODE_SERVFAIL|BIT_AA), qinfo, @@ -1237,7 +1237,7 @@ local_error_encode(struct query_info* qinfo, struct module_env* env, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(env, qinfo, NULL, NULL, - rcode, edns, repinfo, temp, *env->now_tv)) + rcode, edns, repinfo, temp, env->now_tv)) edns->opt_list = NULL; error_encode(buf, r, qinfo, *(uint16_t*)sldns_buffer_begin(buf), sldns_buffer_read_u16_at(buf, 2), edns); diff --git a/services/mesh.c b/services/mesh.c index de481c0d5..4c806dc4b 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -498,7 +498,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, - LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) + LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -514,7 +514,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s->s.edns_opts_front_in) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -587,7 +587,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, servfail_mem: if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, *s->s.env->now_tv)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -1115,7 +1115,7 @@ int mesh_state_attachment(struct mesh_state* super, struct mesh_state* sub) */ static void mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, - struct mesh_cb* r, struct timeval start_time) + struct mesh_cb* r, struct timeval* start_time) { int secure; char* reason = NULL; @@ -1256,11 +1256,11 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.local_alias = r->local_alias; if(rcode == LDNS_RCODE_SERVFAIL) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, rcode, &r->edns, &r->query_reply, m->s.region, r->start_time)) + rep, rcode, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list = NULL; } else { if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, rcode, - &r->edns, &r->query_reply, m->s.region, r->start_time)) + &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list = NULL; } error_encode(r_buffer, rcode, &m->s.qinfo, r->qid, @@ -1277,7 +1277,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, m->s.qinfo.qname = r->qname; m->s.qinfo.local_alias = r->local_alias; if(!inplace_cb_reply_call(m->s.env, &m->s.qinfo, &m->s, rep, - LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, r->start_time) || + LDNS_RCODE_NOERROR, &r->edns, &r->query_reply, m->s.region, &r->start_time) || !apply_edns_options(&r->edns, &edns_bak, m->s.env->cfg, r->query_reply.c, m->s.region) || @@ -1287,7 +1287,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, secure)) { if(!inplace_cb_reply_servfail_call(m->s.env, &m->s.qinfo, &m->s, - rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, r->start_time)) + rep, LDNS_RCODE_SERVFAIL, &r->edns, &r->query_reply, m->s.region, &r->start_time)) r->edns.opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, &m->s.qinfo, r->qid, r->qflags, &r->edns); @@ -1424,7 +1424,7 @@ void mesh_query_done(struct mesh_state* mstate) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) mstate->s.env->mesh->num_detached_states++; - mesh_do_callback(mstate, mstate->s.return_rcode, rep, c, tv); + mesh_do_callback(mstate, mstate->s.return_rcode, rep, c, &tv); } } @@ -2048,6 +2048,6 @@ mesh_serve_expired_callback(void* arg) if(!mstate->reply_list && !mstate->cb_list && mstate->super_set.count == 0) qstate->env->mesh->num_detached_states++; - mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c, tv); + mesh_do_callback(mstate, LDNS_RCODE_NOERROR, msg->rep, c, &tv); } } diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 3f7eb5fc9..a48cb78f1 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1036,7 +1036,7 @@ static int inplace_cb_reply_call_generic( struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time) + struct timeval* start_time) { struct inplace_cb* cb; struct edns_option* opt_list_out = NULL; @@ -1058,7 +1058,7 @@ static int inplace_cb_reply_call_generic( int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply], inplace_cb_reply, qinfo, @@ -1069,7 +1069,7 @@ int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_cache], inplace_cb_reply_cache, @@ -1080,7 +1080,7 @@ int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_local], inplace_cb_reply_local, @@ -1091,7 +1091,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time) + struct timeval* start_time) { /* We are going to servfail. Remove any potential edns options. */ if(qstate) diff --git a/util/data/msgreply.h b/util/data/msgreply.h index b7706b023..32466644f 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -559,7 +559,7 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_cache linked list. @@ -578,7 +578,7 @@ int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_local linked list. @@ -597,7 +597,7 @@ int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply linked list. @@ -617,7 +617,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_query linked list. diff --git a/util/module.h b/util/module.h index d29b6f318..9267b49e8 100644 --- a/util/module.h +++ b/util/module.h @@ -258,7 +258,7 @@ typedef int inplace_cb_reply_func_type(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval start_time, int id, void* callback); + struct timeval* start_time, int id, void* callback); /** * Inplace callback function called before sending the query to a nameserver. From ee2545d93926a8fc80ff0a0bac6df14425f32a02 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 09:53:52 +0100 Subject: [PATCH 344/394] - For #391: fix indentation. --- daemon/worker.c | 8 ++++---- doc/Changelog | 1 + pythonmod/pythonmod.h | 2 +- services/mesh.c | 4 ++-- util/data/msgreply.c | 10 +++++----- util/data/msgreply.h | 8 ++++---- util/module.h | 2 +- 7 files changed, 18 insertions(+), 17 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 33b70e83e..37a8e1fe0 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -546,7 +546,7 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_cache_call(&worker->env, qinfo, NULL, msg->rep, (int)(flags&LDNS_RCODE_MASK), edns, repinfo, worker->scratchpad, - worker->env.now_tv)) + worker->env.now_tv)) return 0; msg->rep->flags |= BIT_QR|BIT_RA; if(!apply_edns_options(edns, &edns_bak, worker->env.cfg, @@ -688,7 +688,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, edns->bits &= EDNS_DO; if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, rep, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - worker->env.now_tv)) + worker->env.now_tv)) goto bail_out; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -760,7 +760,7 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, udpsize, edns, (int)(edns->bits & EDNS_DO), *is_secure_answer)) { if(!inplace_cb_reply_servfail_call(&worker->env, qinfo, NULL, NULL, LDNS_RCODE_SERVFAIL, edns, repinfo, worker->scratchpad, - worker->env.now_tv)) + worker->env.now_tv)) edns->opt_list = NULL; error_encode(repinfo->c->buffer, LDNS_RCODE_SERVFAIL, qinfo, id, flags, edns); @@ -849,7 +849,7 @@ chaos_replystr(sldns_buffer* pkt, char** str, int num, struct edns_data* edns, edns->bits &= EDNS_DO; if(!inplace_cb_reply_local_call(&worker->env, NULL, NULL, NULL, LDNS_RCODE_NOERROR, edns, repinfo, worker->scratchpad, - worker->env.now_tv)) + worker->env.now_tv)) edns->opt_list = NULL; if(sldns_buffer_capacity(pkt) >= sldns_buffer_limit(pkt)+calc_edns_field_size(edns)) diff --git a/doc/Changelog b/doc/Changelog index e8da85d6a..c7d09cbb6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Merge PR #391 from fhriley: Add start_time to reply callbacks so modules can compute the response time. - For #391: use struct timeval* start_time for callback information. + - For #391: fix indentation. 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. diff --git a/pythonmod/pythonmod.h b/pythonmod/pythonmod.h index f5ae9ca56..26d74e09f 100644 --- a/pythonmod/pythonmod.h +++ b/pythonmod/pythonmod.h @@ -73,7 +73,7 @@ int python_inplace_cb_reply_generic(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time, int id, void* python_callback); + struct timeval* start_time, int id, void* python_callback); /** Declared here for fptr_wlist access. The definition is in interface.i. */ int python_inplace_cb_query_generic( diff --git a/services/mesh.c b/services/mesh.c index 4c806dc4b..270ffb8ba 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1350,7 +1350,7 @@ void mesh_query_done(struct mesh_state* mstate) } } for(r = mstate->reply_list; r; r = r->next) { - tv = r->start_time; + tv = r->start_time; /* if a response-ip address block has been stored the * information should be logged for each client. */ @@ -1992,7 +1992,7 @@ mesh_serve_expired_callback(void* arg) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); for(r = mstate->reply_list; r; r = r->next) { - tv = r->start_time; + tv = r->start_time; /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ diff --git a/util/data/msgreply.c b/util/data/msgreply.c index a48cb78f1..35cd8b93e 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -1036,7 +1036,7 @@ static int inplace_cb_reply_call_generic( struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time) + struct timeval* start_time) { struct inplace_cb* cb; struct edns_option* opt_list_out = NULL; @@ -1058,7 +1058,7 @@ static int inplace_cb_reply_call_generic( int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply], inplace_cb_reply, qinfo, @@ -1069,7 +1069,7 @@ int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_cache], inplace_cb_reply_cache, @@ -1080,7 +1080,7 @@ int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time) + struct timeval* start_time) { return inplace_cb_reply_call_generic( env->inplace_cb_lists[inplace_cb_reply_local], inplace_cb_reply_local, @@ -1091,7 +1091,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time) + struct timeval* start_time) { /* We are going to servfail. Remove any potential edns options. */ if(qstate) diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 32466644f..76b75ea8a 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -559,7 +559,7 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_cache linked list. @@ -578,7 +578,7 @@ int inplace_cb_reply_cache_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply_local linked list. @@ -597,7 +597,7 @@ int inplace_cb_reply_local_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_reply linked list. @@ -617,7 +617,7 @@ int inplace_cb_reply_servfail_call(struct module_env* env, struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time); + struct timeval* start_time); /** * Call the registered functions in the inplace_cb_query linked list. diff --git a/util/module.h b/util/module.h index 9267b49e8..81a31a9cc 100644 --- a/util/module.h +++ b/util/module.h @@ -258,7 +258,7 @@ typedef int inplace_cb_reply_func_type(struct query_info* qinfo, struct module_qstate* qstate, struct reply_info* rep, int rcode, struct edns_data* edns, struct edns_option** opt_list_out, struct comm_reply* repinfo, struct regional* region, - struct timeval* start_time, int id, void* callback); + struct timeval* start_time, int id, void* callback); /** * Inplace callback function called before sending the query to a nameserver. From 1aa7168c6a7f107892c82dc94d7aee3a84316e5b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 09:55:55 +0100 Subject: [PATCH 345/394] - For #391: more double casts in python start time calculation. --- doc/Changelog | 1 + pythonmod/interface.i | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index c7d09cbb6..f5861eb98 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ modules can compute the response time. - For #391: use struct timeval* start_time for callback information. - For #391: fix indentation. + - For #391: more double casts in python start time calculation. 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. diff --git a/pythonmod/interface.i b/pythonmod/interface.i index 6e629fa70..5dae04aa4 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -1548,7 +1548,7 @@ int edns_opt_list_append(struct edns_option** list, uint16_t code, size_t len, PyObject *py_rep, *py_repinfo, *py_region; PyObject *py_args, *py_kwargs, *result; int res = 0; - double py_start_time = start_time->tv_sec + start_time->tv_usec / 1e6; + double py_start_time = ((double)start_time->tv_sec) + ((double)start_time->tv_usec) / 1.0e6; PyGILState_STATE gstate = PyGILState_Ensure(); func = (PyObject *) python_callback; From d9dd7bc36f4e5b79e5966e51dffb7d9e26217709 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 11:01:06 +0100 Subject: [PATCH 346/394] - Add comment documentation. --- doc/Changelog | 1 + services/mesh.c | 2 ++ util/data/msgreply.h | 8 ++++++++ 3 files changed, 11 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f5861eb98..9f4f41265 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - For #391: use struct timeval* start_time for callback information. - For #391: fix indentation. - For #391: more double casts in python start time calculation. + - Add comment documentation. 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. diff --git a/services/mesh.c b/services/mesh.c index 270ffb8ba..27de47eef 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1112,6 +1112,8 @@ int mesh_state_attachment(struct mesh_state* super, struct mesh_state* sub) * @param rcode: if not 0, error code. * @param rep: reply to send (or NULL if rcode is set). * @param r: callback entry + * @param start_time: the time to pass to callback functions, it is 0 or + * a value from one of the packets if the mesh state had packets. */ static void mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep, diff --git a/util/data/msgreply.h b/util/data/msgreply.h index 76b75ea8a..c6b220ed8 100644 --- a/util/data/msgreply.h +++ b/util/data/msgreply.h @@ -554,6 +554,8 @@ struct edns_option* edns_opt_list_find(struct edns_option* list, uint16_t code); * @param edns: edns data of the reply. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, @@ -572,6 +574,8 @@ int inplace_cb_reply_call(struct module_env* env, struct query_info* qinfo, * @param edns: edns data of the reply. Edns input can be found here. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_cache_call(struct module_env* env, @@ -591,6 +595,8 @@ int inplace_cb_reply_cache_call(struct module_env* env, * @param edns: edns data of the reply. Edns input can be found here. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_local_call(struct module_env* env, @@ -611,6 +617,8 @@ int inplace_cb_reply_local_call(struct module_env* env, * is NULL. * @param repinfo: comm_reply. Reply information for a communication point. * @param region: region to store data. + * @param start_time: the start time of recursion, when the packet arrived, + * or the current time for cache responses. * @return false on failure (a callback function returned an error). */ int inplace_cb_reply_servfail_call(struct module_env* env, From 64f508fa00c8f456a89293b981496a62efd63689 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 8 Jan 2021 11:10:05 +0100 Subject: [PATCH 347/394] - Fix clang analysis warning. --- doc/Changelog | 1 + services/mesh.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9f4f41265..58a5bf69e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,7 @@ - For #391: fix indentation. - For #391: more double casts in python start time calculation. - Add comment documentation. + - Fix clang analysis warning. 6 January 2021: Wouter - Fix #379: zone loading over HTTP appears to have buffer issues. diff --git a/services/mesh.c b/services/mesh.c index 27de47eef..69f4d75e3 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -498,7 +498,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, NULL, - LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) + LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -514,7 +514,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, if(!s->s.edns_opts_front_in) { log_err("mesh_state_create: out of memory; SERVFAIL"); if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, NULL, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); @@ -587,7 +587,7 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo, servfail_mem: if(!inplace_cb_reply_servfail_call(mesh->env, qinfo, &s->s, - NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, s->s.env->now_tv)) + NULL, LDNS_RCODE_SERVFAIL, edns, rep, mesh->env->scratch, mesh->env->now_tv)) edns->opt_list = NULL; error_encode(r_buffer, LDNS_RCODE_SERVFAIL, qinfo, qid, qflags, edns); From 3322f631e5927c5d3adb66da05f867c64bdcb9c9 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 12 Jan 2021 13:35:05 +0100 Subject: [PATCH 348/394] - Fix #397: [Feature request] add new type always_null to local-zone similar to always_nxdomain. --- doc/Changelog | 4 + doc/example.conf.in | 1 + doc/unbound.conf.5.in | 7 +- services/localzone.c | 43 ++++ services/localzone.h | 3 + testdata/localdata.rpl | 35 +++ util/configparser.c | 559 +++++++++++++++++++++-------------------- util/configparser.y | 5 +- 8 files changed, 375 insertions(+), 282 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 58a5bf69e..2cd7baf00 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +12 January 2021: Wouter + - Fix #397: [Feature request] add new type always_null to local-zone + similar to always_nxdomain. + 8 January 2021: Wouter - Merge PR #391 from fhriley: Add start_time to reply callbacks so modules can compute the response time. diff --git a/doc/example.conf.in b/doc/example.conf.in index 9269461cf..c3c7c0f26 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -706,6 +706,7 @@ server: # o inform_redirect redirects queries and logs client IP address # o always_transparent, always_refuse, always_nxdomain, resolve in # that way but ignore local data for that name + # o always_null returns 0.0.0.0 or ::0 for any name in the zone. # o noview breaks out of that view towards global local-zones. # # defaults are localhost address, reverse for 127.0.0.1 and ::1 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index fa6f91b7c..4eeb41bf9 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1231,7 +1231,7 @@ address space are not validated. This is usually required whenever Configure a local zone. The type determines the answer to give if there is no match from local\-data. The types are deny, refuse, static, transparent, redirect, nodefault, typetransparent, inform, inform_deny, -inform_redirect, always_transparent, always_refuse, always_nxdomain, noview, +inform_redirect, always_transparent, always_refuse, always_nxdomain, always_null, noview, and are explained below. After that the default settings are listed. Use local\-data: to enter data into the local zone. Answers for local zones are authoritative DNS answers. By default the zones are class IN. @@ -1305,6 +1305,11 @@ Like refuse, but ignores local data and refuses the query. \h'5'\fIalways_nxdomain\fR Like static, but ignores local data and returns nxdomain for the query. .TP 10 +\h'5'\fIalways_null\fR +Always returns 0.0.0.0 or ::0 for every name in the zone. Like redirect +with zero data for A and AAAA. Ignores local data in the zone. Used for +some block lists. +.TP 10 \h'5'\fInoview\fR Breaks out of that view and moves towards the global local zones for answer to the query. If the view first is no, it'll resolve normally. If view first diff --git a/services/localzone.c b/services/localzone.c index c7ae95888..ed0d2c565 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -1558,6 +1558,46 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, || lz_type == local_zone_always_transparent) { /* no NODATA or NXDOMAINS for this zone type */ return 0; + } else if(lz_type == local_zone_always_null) { + /* 0.0.0.0 or ::0 or noerror/nodata for this zone type, + * used for blocklists. */ + if(qinfo->qtype == LDNS_RR_TYPE_A || + qinfo->qtype == LDNS_RR_TYPE_AAAA) { + struct ub_packed_rrset_key lrr; + struct packed_rrset_data d; + time_t rr_ttl = 3600; + size_t rr_len = 0; + uint8_t rr_data[2+16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + uint8_t* rr_datas = rr_data; + memset(&lrr, 0, sizeof(lrr)); + memset(&d, 0, sizeof(d)); + lrr.entry.data = &d; + lrr.rk.dname = qinfo->qname; + lrr.rk.dname_len = qinfo->qname_len; + lrr.rk.type = htons(qinfo->qtype); + lrr.rk.rrset_class = htons(qinfo->qclass); + if(qinfo->qtype == LDNS_RR_TYPE_A) { + rr_len = 4; + sldns_write_uint16(rr_data, rr_len); + rr_len += 2; + } else { + rr_len = 16; + sldns_write_uint16(rr_data, rr_len); + rr_len += 2; + } + d.ttl = rr_ttl; + d.count = 1; + d.rr_len = &rr_len; + d.rr_data = &rr_datas; + d.rr_ttl = &rr_ttl; + return local_encode(qinfo, env, edns, repinfo, buf, temp, + &lrr, 1, LDNS_RCODE_NOERROR); + } else { + local_error_encode(qinfo, env, edns, repinfo, buf, + temp, LDNS_RCODE_NOERROR, + (LDNS_RCODE_NOERROR|BIT_AA)); + } + return 1; } /* else lz_type == local_zone_transparent */ @@ -1762,6 +1802,7 @@ const char* local_zone_type2str(enum localzone_type t) case local_zone_always_nxdomain: return "always_nxdomain"; case local_zone_always_nodata: return "always_nodata"; case local_zone_always_deny: return "always_deny"; + case local_zone_always_null: return "always_null"; case local_zone_noview: return "noview"; case local_zone_invalid: return "invalid"; } @@ -1798,6 +1839,8 @@ int local_zone_str2type(const char* type, enum localzone_type* t) *t = local_zone_always_nodata; else if(strcmp(type, "always_deny") == 0) *t = local_zone_always_deny; + else if(strcmp(type, "always_null") == 0) + *t = local_zone_always_null; else if(strcmp(type, "noview") == 0) *t = local_zone_noview; else if(strcmp(type, "nodefault") == 0) diff --git a/services/localzone.h b/services/localzone.h index bb3593936..492629936 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -96,6 +96,9 @@ enum localzone_type { local_zone_always_nodata, /** drop query, even when there is local data */ local_zone_always_deny, + /** answer with 0.0.0.0 or ::0 or noerror/nodata, even when there is + * local data */ + local_zone_always_null, /** answer not from the view, but global or no-answer */ local_zone_noview, /** Invalid type, cannot be used to generate answer */ diff --git a/testdata/localdata.rpl b/testdata/localdata.rpl index a2e7eeba2..eb25ef573 100644 --- a/testdata/localdata.rpl +++ b/testdata/localdata.rpl @@ -35,6 +35,9 @@ server: local-zone: "redirect.top." redirect local-data: "redirect.top. A 20.30.40.54" + ; null zone + local-zone: "null.top." always_null + ; create implicit data in the IN domain as well local-data: "a.a.implicit. A 20.30.41.50" local-data: "b.a.implicit. A 20.30.42.50" @@ -355,4 +358,36 @@ SECTION ANSWER www.redirect.top. IN A 20.30.40.54 ENTRY_END +; always_null zone +STEP 60 QUERY +ENTRY_BEGIN +SECTION QUESTION +null.top. IN A +ENTRY_END +STEP 61 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +null.top. IN A +SECTION ANSWER +null.top. IN A 0.0.0.0 +ENTRY_END + +; always_null zone AAAA +STEP 62 QUERY +ENTRY_BEGIN +SECTION QUESTION +foo.null.top. IN AAAA +ENTRY_END +STEP 63 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RA AA NOERROR +SECTION QUESTION +foo.null.top. IN AAAA +SECTION ANSWER +foo.null.top. IN AAAA ::0 +ENTRY_END + SCENARIO_END diff --git a/util/configparser.c b/util/configparser.c index 4e5bf5a41..cc5d9fb5e 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1125,26 +1125,26 @@ static const yytype_uint16 yyrline[] = 1680, 1689, 1698, 1707, 1714, 1724, 1744, 1751, 1769, 1782, 1795, 1804, 1813, 1822, 1831, 1841, 1851, 1862, 1871, 1880, 1889, 1898, 1907, 1916, 1929, 1942, 1951, 1958, 1967, 1976, - 1985, 1994, 2002, 2015, 2023, 2064, 2071, 2086, 2096, 2106, - 2113, 2120, 2127, 2136, 2144, 2158, 2179, 2200, 2212, 2224, - 2236, 2245, 2266, 2276, 2285, 2293, 2301, 2314, 2327, 2342, - 2357, 2366, 2375, 2381, 2390, 2399, 2409, 2419, 2432, 2445, - 2457, 2471, 2483, 2497, 2506, 2518, 2528, 2535, 2542, 2551, - 2560, 2570, 2580, 2590, 2597, 2604, 2613, 2622, 2632, 2642, - 2649, 2656, 2663, 2671, 2681, 2691, 2701, 2711, 2750, 2760, - 2768, 2776, 2791, 2800, 2805, 2806, 2807, 2807, 2807, 2808, - 2808, 2808, 2809, 2809, 2811, 2821, 2830, 2837, 2844, 2851, - 2858, 2865, 2872, 2877, 2878, 2879, 2879, 2879, 2880, 2880, - 2880, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, 2886, - 2887, 2888, 2889, 2890, 2892, 2901, 2911, 2918, 2925, 2934, - 2941, 2948, 2955, 2962, 2971, 2980, 2987, 2994, 3004, 3014, - 3024, 3034, 3044, 3054, 3059, 3060, 3061, 3063, 3069, 3074, - 3075, 3076, 3078, 3084, 3094, 3101, 3110, 3118, 3123, 3124, - 3126, 3126, 3126, 3127, 3127, 3128, 3129, 3130, 3131, 3132, - 3134, 3144, 3153, 3160, 3169, 3176, 3185, 3193, 3206, 3214, - 3227, 3232, 3233, 3234, 3234, 3235, 3235, 3235, 3236, 3238, - 3250, 3262, 3274, 3289, 3302, 3315, 3326, 3331, 3332, 3333, - 3333, 3335, 3350 + 1985, 1994, 2002, 2015, 2023, 2065, 2072, 2087, 2097, 2107, + 2114, 2121, 2128, 2137, 2145, 2159, 2180, 2201, 2213, 2225, + 2237, 2246, 2267, 2277, 2286, 2294, 2302, 2315, 2328, 2343, + 2358, 2367, 2376, 2382, 2391, 2400, 2410, 2420, 2433, 2446, + 2458, 2472, 2484, 2498, 2507, 2519, 2529, 2536, 2543, 2552, + 2561, 2571, 2581, 2591, 2598, 2605, 2614, 2623, 2633, 2643, + 2650, 2657, 2664, 2672, 2682, 2692, 2702, 2712, 2751, 2761, + 2769, 2777, 2792, 2801, 2806, 2807, 2808, 2808, 2808, 2809, + 2809, 2809, 2810, 2810, 2812, 2822, 2831, 2838, 2845, 2852, + 2859, 2866, 2873, 2878, 2879, 2880, 2880, 2880, 2881, 2881, + 2881, 2882, 2883, 2883, 2884, 2884, 2885, 2885, 2886, 2887, + 2888, 2889, 2890, 2891, 2893, 2902, 2912, 2919, 2926, 2935, + 2942, 2949, 2956, 2963, 2972, 2981, 2988, 2995, 3005, 3015, + 3025, 3035, 3045, 3055, 3060, 3061, 3062, 3064, 3070, 3075, + 3076, 3077, 3079, 3085, 3095, 3102, 3111, 3119, 3124, 3125, + 3127, 3127, 3127, 3128, 3128, 3129, 3130, 3131, 3132, 3133, + 3135, 3145, 3154, 3161, 3170, 3177, 3186, 3194, 3207, 3215, + 3228, 3233, 3234, 3235, 3235, 3236, 3236, 3236, 3237, 3239, + 3251, 3263, 3275, 3290, 3303, 3316, 3327, 3332, 3333, 3334, + 3334, 3336, 3351 }; #endif @@ -5019,6 +5019,7 @@ yyreduce: && strcmp((yyvsp[0].str), "always_transparent")!=0 && strcmp((yyvsp[0].str), "always_refuse")!=0 && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "always_null")!=0 && strcmp((yyvsp[0].str), "noview")!=0 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 && strcmp((yyvsp[0].str), "inform_redirect") != 0 @@ -5027,8 +5028,8 @@ yyreduce: "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); + "always_refuse, always_nxdomain, always_null, " + "noview, nodefault or ipset"); free((yyvsp[-1].str)); free((yyvsp[0].str)); } else if(strcmp((yyvsp[0].str), "nodefault")==0) { @@ -5049,21 +5050,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5053 "util/configparser.c" +#line 5054 "util/configparser.c" break; case 445: -#line 2065 "./util/configparser.y" +#line 2066 "./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 5063 "util/configparser.c" +#line 5064 "util/configparser.c" break; case 446: -#line 2072 "./util/configparser.y" +#line 2073 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5077,11 +5078,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5081 "util/configparser.c" +#line 5082 "util/configparser.c" break; case 447: -#line 2087 "./util/configparser.y" +#line 2088 "./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) @@ -5090,11 +5091,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5095 "util/configparser.c" break; case 448: -#line 2097 "./util/configparser.y" +#line 2098 "./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) @@ -5103,41 +5104,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5107 "util/configparser.c" +#line 5108 "util/configparser.c" break; case 449: -#line 2107 "./util/configparser.y" +#line 2108 "./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 5117 "util/configparser.c" +#line 5118 "util/configparser.c" break; case 450: -#line 2114 "./util/configparser.y" +#line 2115 "./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 5127 "util/configparser.c" +#line 5128 "util/configparser.c" break; case 451: -#line 2121 "./util/configparser.y" +#line 2122 "./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 5137 "util/configparser.c" +#line 5138 "util/configparser.c" break; case 452: -#line 2128 "./util/configparser.y" +#line 2129 "./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) @@ -5145,22 +5146,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5149 "util/configparser.c" +#line 5150 "util/configparser.c" break; case 453: -#line 2137 "./util/configparser.y" +#line 2138 "./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 5160 "util/configparser.c" +#line 5161 "util/configparser.c" break; case 454: -#line 2145 "./util/configparser.y" +#line 2146 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5173,11 +5174,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5177 "util/configparser.c" +#line 5178 "util/configparser.c" break; case 455: -#line 2159 "./util/configparser.y" +#line 2160 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5197,11 +5198,11 @@ yyreduce: } } } -#line 5201 "util/configparser.c" +#line 5202 "util/configparser.c" break; case 456: -#line 2180 "./util/configparser.y" +#line 2181 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5221,11 +5222,11 @@ yyreduce: } } } -#line 5225 "util/configparser.c" +#line 5226 "util/configparser.c" break; case 457: -#line 2201 "./util/configparser.y" +#line 2202 "./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, @@ -5236,11 +5237,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5240 "util/configparser.c" +#line 5241 "util/configparser.c" break; case 458: -#line 2213 "./util/configparser.y" +#line 2214 "./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, @@ -5251,11 +5252,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5255 "util/configparser.c" +#line 5256 "util/configparser.c" break; case 459: -#line 2225 "./util/configparser.y" +#line 2226 "./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, @@ -5266,11 +5267,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5270 "util/configparser.c" +#line 5271 "util/configparser.c" break; case 460: -#line 2237 "./util/configparser.y" +#line 2238 "./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, @@ -5278,11 +5279,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5282 "util/configparser.c" +#line 5283 "util/configparser.c" break; case 461: -#line 2246 "./util/configparser.y" +#line 2247 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5302,11 +5303,11 @@ yyreduce: } } } -#line 5306 "util/configparser.c" +#line 5307 "util/configparser.c" break; case 462: -#line 2267 "./util/configparser.y" +#line 2268 "./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) @@ -5314,11 +5315,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5318 "util/configparser.c" +#line 5319 "util/configparser.c" break; case 463: -#line 2277 "./util/configparser.y" +#line 2278 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5326,33 +5327,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5330 "util/configparser.c" +#line 5331 "util/configparser.c" break; case 464: -#line 2286 "./util/configparser.y" +#line 2287 "./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 5341 "util/configparser.c" +#line 5342 "util/configparser.c" break; case 465: -#line 2294 "./util/configparser.y" +#line 2295 "./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 5352 "util/configparser.c" +#line 5353 "util/configparser.c" break; case 466: -#line 2302 "./util/configparser.y" +#line 2303 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5364,11 +5365,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5368 "util/configparser.c" +#line 5369 "util/configparser.c" break; case 467: -#line 2315 "./util/configparser.y" +#line 2316 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5380,11 +5381,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5384 "util/configparser.c" +#line 5385 "util/configparser.c" break; case 468: -#line 2328 "./util/configparser.y" +#line 2329 "./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) { @@ -5398,11 +5399,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5402 "util/configparser.c" +#line 5403 "util/configparser.c" break; case 469: -#line 2343 "./util/configparser.y" +#line 2344 "./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) { @@ -5416,11 +5417,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5420 "util/configparser.c" +#line 5421 "util/configparser.c" break; case 470: -#line 2358 "./util/configparser.y" +#line 2359 "./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) @@ -5428,11 +5429,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5432 "util/configparser.c" +#line 5433 "util/configparser.c" break; case 471: -#line 2367 "./util/configparser.y" +#line 2368 "./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) @@ -5440,20 +5441,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5444 "util/configparser.c" +#line 5445 "util/configparser.c" break; case 472: -#line 2376 "./util/configparser.y" +#line 2377 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5453 "util/configparser.c" +#line 5454 "util/configparser.c" break; case 473: -#line 2382 "./util/configparser.y" +#line 2383 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5461,11 +5462,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5465 "util/configparser.c" +#line 5466 "util/configparser.c" break; case 474: -#line 2391 "./util/configparser.y" +#line 2392 "./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) @@ -5473,11 +5474,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5477 "util/configparser.c" +#line 5478 "util/configparser.c" break; case 475: -#line 2400 "./util/configparser.y" +#line 2401 "./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) @@ -5486,11 +5487,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5490 "util/configparser.c" +#line 5491 "util/configparser.c" break; case 476: -#line 2410 "./util/configparser.y" +#line 2411 "./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) @@ -5499,11 +5500,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5503 "util/configparser.c" +#line 5504 "util/configparser.c" break; case 477: -#line 2420 "./util/configparser.y" +#line 2421 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5515,11 +5516,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5519 "util/configparser.c" +#line 5520 "util/configparser.c" break; case 478: -#line 2433 "./util/configparser.y" +#line 2434 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5531,11 +5532,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5535 "util/configparser.c" +#line 5536 "util/configparser.c" break; case 479: -#line 2446 "./util/configparser.y" +#line 2447 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5546,11 +5547,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5550 "util/configparser.c" +#line 5551 "util/configparser.c" break; case 480: -#line 2458 "./util/configparser.y" +#line 2459 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5563,11 +5564,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5567 "util/configparser.c" +#line 5568 "util/configparser.c" break; case 481: -#line 2472 "./util/configparser.y" +#line 2473 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5578,11 +5579,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5582 "util/configparser.c" +#line 5583 "util/configparser.c" break; case 482: -#line 2484 "./util/configparser.y" +#line 2485 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5595,11 +5596,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5599 "util/configparser.c" +#line 5600 "util/configparser.c" break; case 483: -#line 2498 "./util/configparser.y" +#line 2499 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5607,11 +5608,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5611 "util/configparser.c" +#line 5612 "util/configparser.c" break; case 484: -#line 2507 "./util/configparser.y" +#line 2508 "./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) @@ -5622,11 +5623,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5626 "util/configparser.c" +#line 5627 "util/configparser.c" break; case 485: -#line 2519 "./util/configparser.y" +#line 2520 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5635,31 +5636,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5639 "util/configparser.c" +#line 5640 "util/configparser.c" break; case 486: -#line 2529 "./util/configparser.y" +#line 2530 "./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 5649 "util/configparser.c" +#line 5650 "util/configparser.c" break; case 487: -#line 2536 "./util/configparser.y" +#line 2537 "./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 5659 "util/configparser.c" +#line 5660 "util/configparser.c" break; case 488: -#line 2543 "./util/configparser.y" +#line 2544 "./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) @@ -5667,11 +5668,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5671 "util/configparser.c" +#line 5672 "util/configparser.c" break; case 489: -#line 2552 "./util/configparser.y" +#line 2553 "./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) @@ -5679,11 +5680,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5683 "util/configparser.c" +#line 5684 "util/configparser.c" break; case 490: -#line 2561 "./util/configparser.y" +#line 2562 "./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) @@ -5692,11 +5693,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5696 "util/configparser.c" +#line 5697 "util/configparser.c" break; case 491: -#line 2571 "./util/configparser.y" +#line 2572 "./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) @@ -5705,11 +5706,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5709 "util/configparser.c" +#line 5710 "util/configparser.c" break; case 492: -#line 2581 "./util/configparser.y" +#line 2582 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5718,31 +5719,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5722 "util/configparser.c" +#line 5723 "util/configparser.c" break; case 493: -#line 2591 "./util/configparser.y" +#line 2592 "./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 5732 "util/configparser.c" +#line 5733 "util/configparser.c" break; case 494: -#line 2598 "./util/configparser.y" +#line 2599 "./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 5742 "util/configparser.c" +#line 5743 "util/configparser.c" break; case 495: -#line 2605 "./util/configparser.y" +#line 2606 "./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) @@ -5750,11 +5751,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5754 "util/configparser.c" +#line 5755 "util/configparser.c" break; case 496: -#line 2614 "./util/configparser.y" +#line 2615 "./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) @@ -5762,11 +5763,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5766 "util/configparser.c" +#line 5767 "util/configparser.c" break; case 497: -#line 2623 "./util/configparser.y" +#line 2624 "./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) @@ -5775,11 +5776,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5779 "util/configparser.c" +#line 5780 "util/configparser.c" break; case 498: -#line 2633 "./util/configparser.y" +#line 2634 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5788,52 +5789,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5792 "util/configparser.c" +#line 5793 "util/configparser.c" break; case 499: -#line 2643 "./util/configparser.y" +#line 2644 "./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 5802 "util/configparser.c" +#line 5803 "util/configparser.c" break; case 500: -#line 2650 "./util/configparser.y" +#line 2651 "./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 5812 "util/configparser.c" +#line 5813 "util/configparser.c" break; case 501: -#line 2657 "./util/configparser.y" +#line 2658 "./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 5822 "util/configparser.c" +#line 5823 "util/configparser.c" break; case 502: -#line 2664 "./util/configparser.y" +#line 2665 "./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 5833 "util/configparser.c" +#line 5834 "util/configparser.c" break; case 503: -#line 2672 "./util/configparser.y" +#line 2673 "./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) @@ -5842,11 +5843,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5846 "util/configparser.c" +#line 5847 "util/configparser.c" break; case 504: -#line 2682 "./util/configparser.y" +#line 2683 "./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) @@ -5855,11 +5856,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5859 "util/configparser.c" +#line 5860 "util/configparser.c" break; case 505: -#line 2692 "./util/configparser.y" +#line 2693 "./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) @@ -5868,11 +5869,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5872 "util/configparser.c" +#line 5873 "util/configparser.c" break; case 506: -#line 2702 "./util/configparser.y" +#line 2703 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5881,11 +5882,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5885 "util/configparser.c" +#line 5886 "util/configparser.c" break; case 507: -#line 2712 "./util/configparser.y" +#line 2713 "./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 && @@ -5923,11 +5924,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5927 "util/configparser.c" +#line 5928 "util/configparser.c" break; case 508: -#line 2751 "./util/configparser.y" +#line 2752 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5936,33 +5937,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5940 "util/configparser.c" +#line 5941 "util/configparser.c" break; case 509: -#line 2761 "./util/configparser.y" +#line 2762 "./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 5951 "util/configparser.c" +#line 5952 "util/configparser.c" break; case 510: -#line 2769 "./util/configparser.y" +#line 2770 "./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 5962 "util/configparser.c" +#line 5963 "util/configparser.c" break; case 511: -#line 2777 "./util/configparser.y" +#line 2778 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5976,11 +5977,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5980 "util/configparser.c" +#line 5981 "util/configparser.c" break; case 512: -#line 2792 "./util/configparser.y" +#line 2793 "./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) @@ -5988,19 +5989,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5992 "util/configparser.c" +#line 5993 "util/configparser.c" break; case 513: -#line 2801 "./util/configparser.y" +#line 2802 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6000 "util/configparser.c" +#line 6001 "util/configparser.c" break; case 524: -#line 2812 "./util/configparser.y" +#line 2813 "./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) @@ -6009,11 +6010,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6013 "util/configparser.c" +#line 6014 "util/configparser.c" break; case 525: -#line 2822 "./util/configparser.y" +#line 2823 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6021,79 +6022,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6026 "util/configparser.c" break; case 526: -#line 2831 "./util/configparser.y" +#line 2832 "./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 6035 "util/configparser.c" +#line 6036 "util/configparser.c" break; case 527: -#line 2838 "./util/configparser.y" +#line 2839 "./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 6045 "util/configparser.c" +#line 6046 "util/configparser.c" break; case 528: -#line 2845 "./util/configparser.y" +#line 2846 "./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 6055 "util/configparser.c" +#line 6056 "util/configparser.c" break; case 529: -#line 2852 "./util/configparser.y" +#line 2853 "./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 6065 "util/configparser.c" +#line 6066 "util/configparser.c" break; case 530: -#line 2859 "./util/configparser.y" +#line 2860 "./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 6075 "util/configparser.c" +#line 6076 "util/configparser.c" break; case 531: -#line 2866 "./util/configparser.y" +#line 2867 "./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 6085 "util/configparser.c" +#line 6086 "util/configparser.c" break; case 532: -#line 2873 "./util/configparser.y" +#line 2874 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6093 "util/configparser.c" +#line 6094 "util/configparser.c" break; case 554: -#line 2893 "./util/configparser.y" +#line 2894 "./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) @@ -6101,11 +6102,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6105 "util/configparser.c" +#line 6106 "util/configparser.c" break; case 555: -#line 2902 "./util/configparser.y" +#line 2903 "./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) @@ -6114,31 +6115,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6118 "util/configparser.c" +#line 6119 "util/configparser.c" break; case 556: -#line 2912 "./util/configparser.y" +#line 2913 "./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 6128 "util/configparser.c" +#line 6129 "util/configparser.c" break; case 557: -#line 2919 "./util/configparser.y" +#line 2920 "./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 6138 "util/configparser.c" +#line 6139 "util/configparser.c" break; case 558: -#line 2926 "./util/configparser.y" +#line 2927 "./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) @@ -6146,51 +6147,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6151 "util/configparser.c" break; case 559: -#line 2935 "./util/configparser.y" +#line 2936 "./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 6160 "util/configparser.c" +#line 6161 "util/configparser.c" break; case 560: -#line 2942 "./util/configparser.y" +#line 2943 "./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 6170 "util/configparser.c" +#line 6171 "util/configparser.c" break; case 561: -#line 2949 "./util/configparser.y" +#line 2950 "./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 6180 "util/configparser.c" +#line 6181 "util/configparser.c" break; case 562: -#line 2956 "./util/configparser.y" +#line 2957 "./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 6190 "util/configparser.c" +#line 6191 "util/configparser.c" break; case 563: -#line 2963 "./util/configparser.y" +#line 2964 "./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) @@ -6198,11 +6199,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6203 "util/configparser.c" break; case 564: -#line 2972 "./util/configparser.y" +#line 2973 "./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) @@ -6210,31 +6211,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6214 "util/configparser.c" +#line 6215 "util/configparser.c" break; case 565: -#line 2981 "./util/configparser.y" +#line 2982 "./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 6224 "util/configparser.c" +#line 6225 "util/configparser.c" break; case 566: -#line 2988 "./util/configparser.y" +#line 2989 "./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 6234 "util/configparser.c" +#line 6235 "util/configparser.c" break; case 567: -#line 2995 "./util/configparser.y" +#line 2996 "./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) @@ -6243,11 +6244,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6247 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 568: -#line 3005 "./util/configparser.y" +#line 3006 "./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) @@ -6256,11 +6257,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6260 "util/configparser.c" +#line 6261 "util/configparser.c" break; case 569: -#line 3015 "./util/configparser.y" +#line 3016 "./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) @@ -6269,11 +6270,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6274 "util/configparser.c" break; case 570: -#line 3025 "./util/configparser.y" +#line 3026 "./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) @@ -6282,11 +6283,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6286 "util/configparser.c" +#line 6287 "util/configparser.c" break; case 571: -#line 3035 "./util/configparser.y" +#line 3036 "./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) @@ -6295,11 +6296,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6299 "util/configparser.c" +#line 6300 "util/configparser.c" break; case 572: -#line 3045 "./util/configparser.y" +#line 3046 "./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) @@ -6308,47 +6309,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6312 "util/configparser.c" +#line 6313 "util/configparser.c" break; case 573: -#line 3055 "./util/configparser.y" +#line 3056 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6320 "util/configparser.c" +#line 6321 "util/configparser.c" break; case 577: -#line 3064 "./util/configparser.y" +#line 3065 "./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 6330 "util/configparser.c" +#line 6331 "util/configparser.c" break; case 578: -#line 3070 "./util/configparser.y" +#line 3071 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6338 "util/configparser.c" +#line 6339 "util/configparser.c" break; case 582: -#line 3079 "./util/configparser.y" +#line 3080 "./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 6348 "util/configparser.c" +#line 6349 "util/configparser.c" break; case 583: -#line 3085 "./util/configparser.y" +#line 3086 "./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) @@ -6357,21 +6358,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6361 "util/configparser.c" +#line 6362 "util/configparser.c" break; case 584: -#line 3095 "./util/configparser.y" +#line 3096 "./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 6371 "util/configparser.c" +#line 6372 "util/configparser.c" break; case 585: -#line 3102 "./util/configparser.y" +#line 3103 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6379,30 +6380,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6383 "util/configparser.c" +#line 6384 "util/configparser.c" break; case 586: -#line 3111 "./util/configparser.y" +#line 3112 "./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 6394 "util/configparser.c" +#line 6395 "util/configparser.c" break; case 587: -#line 3119 "./util/configparser.y" +#line 3120 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6402 "util/configparser.c" +#line 6403 "util/configparser.c" break; case 600: -#line 3135 "./util/configparser.y" +#line 3136 "./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) @@ -6410,11 +6411,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6415 "util/configparser.c" break; case 601: -#line 3145 "./util/configparser.y" +#line 3146 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6422,21 +6423,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6426 "util/configparser.c" +#line 6427 "util/configparser.c" break; case 602: -#line 3154 "./util/configparser.y" +#line 3155 "./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 6436 "util/configparser.c" +#line 6437 "util/configparser.c" break; case 603: -#line 3161 "./util/configparser.y" +#line 3162 "./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))) @@ -6444,21 +6445,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 6448 "util/configparser.c" +#line 6449 "util/configparser.c" break; case 604: -#line 3170 "./util/configparser.y" +#line 3171 "./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 6458 "util/configparser.c" +#line 6459 "util/configparser.c" break; case 605: -#line 3177 "./util/configparser.y" +#line 3178 "./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))) @@ -6466,22 +6467,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 6470 "util/configparser.c" +#line 6471 "util/configparser.c" break; case 606: -#line 3186 "./util/configparser.y" +#line 3187 "./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 6481 "util/configparser.c" +#line 6482 "util/configparser.c" break; case 607: -#line 3194 "./util/configparser.y" +#line 3195 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6493,22 +6494,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6497 "util/configparser.c" +#line 6498 "util/configparser.c" break; case 608: -#line 3207 "./util/configparser.y" +#line 3208 "./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 6508 "util/configparser.c" +#line 6509 "util/configparser.c" break; case 609: -#line 3215 "./util/configparser.y" +#line 3216 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6520,19 +6521,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6524 "util/configparser.c" +#line 6525 "util/configparser.c" break; case 610: -#line 3228 "./util/configparser.y" +#line 3229 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6532 "util/configparser.c" +#line 6533 "util/configparser.c" break; case 619: -#line 3239 "./util/configparser.y" +#line 3240 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6543,11 +6544,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6547 "util/configparser.c" +#line 6548 "util/configparser.c" break; case 620: -#line 3251 "./util/configparser.y" +#line 3252 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6558,11 +6559,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6562 "util/configparser.c" +#line 6563 "util/configparser.c" break; case 621: -#line 3263 "./util/configparser.y" +#line 3264 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6573,11 +6574,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6577 "util/configparser.c" +#line 6578 "util/configparser.c" break; case 622: -#line 3275 "./util/configparser.y" +#line 3276 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6591,11 +6592,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6595 "util/configparser.c" +#line 6596 "util/configparser.c" break; case 623: -#line 3290 "./util/configparser.y" +#line 3291 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6607,11 +6608,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6611 "util/configparser.c" +#line 6612 "util/configparser.c" break; case 624: -#line 3303 "./util/configparser.y" +#line 3304 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6623,11 +6624,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6627 "util/configparser.c" +#line 6628 "util/configparser.c" break; case 625: -#line 3316 "./util/configparser.y" +#line 3317 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6637,19 +6638,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6641 "util/configparser.c" +#line 6642 "util/configparser.c" break; case 626: -#line 3327 "./util/configparser.y" +#line 3328 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6649 "util/configparser.c" +#line 6650 "util/configparser.c" break; case 631: -#line 3336 "./util/configparser.y" +#line 3337 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6663,11 +6664,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6667 "util/configparser.c" +#line 6668 "util/configparser.c" break; case 632: -#line 3351 "./util/configparser.y" +#line 3352 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6681,11 +6682,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6685 "util/configparser.c" +#line 6686 "util/configparser.c" break; -#line 6689 "util/configparser.c" +#line 6690 "util/configparser.c" default: break; } @@ -6917,7 +6918,7 @@ yyreturn: #endif return yyresult; } -#line 3365 "./util/configparser.y" +#line 3366 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index 4d6b5e3fb..cc965a477 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2030,6 +2030,7 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "always_transparent")!=0 && strcmp($3, "always_refuse")!=0 && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "always_null")!=0 && strcmp($3, "noview")!=0 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 && strcmp($3, "inform_redirect") != 0 @@ -2038,8 +2039,8 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, noview " - ", nodefault or ipset"); + "always_refuse, always_nxdomain, always_null, " + "noview, nodefault or ipset"); free($2); free($3); } else if(strcmp($3, "nodefault")==0) { From d1b92a6ce22d1eb8c3da2a6691033a07046035a7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 12 Jan 2021 13:39:07 +0100 Subject: [PATCH 349/394] - Fix so local zone types always_nodata and always_deny can be used from the config file. --- doc/Changelog | 2 + doc/example.conf.in | 5 +- util/configparser.c | 559 ++++++++++++++++++++++---------------------- util/configparser.y | 5 +- 4 files changed, 290 insertions(+), 281 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2cd7baf00..b9d449371 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 12 January 2021: Wouter - Fix #397: [Feature request] add new type always_null to local-zone similar to always_nxdomain. + - Fix so local zone types always_nodata and always_deny can be used + from the config file. 8 January 2021: Wouter - Merge PR #391 from fhriley: Add start_time to reply callbacks so diff --git a/doc/example.conf.in b/doc/example.conf.in index c3c7c0f26..b51bcfca5 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -704,8 +704,9 @@ server: # o inform acts like transparent, but logs client IP address # o inform_deny drops queries and logs client IP address # o inform_redirect redirects queries and logs client IP address - # o always_transparent, always_refuse, always_nxdomain, resolve in - # that way but ignore local data for that name + # o always_transparent, always_refuse, always_nxdomain, always_nodata, + # always_deny resolve in that way but ignore local data for + # that name # o always_null returns 0.0.0.0 or ::0 for any name in the zone. # o noview breaks out of that view towards global local-zones. # diff --git a/util/configparser.c b/util/configparser.c index cc5d9fb5e..c8ea478ea 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1125,26 +1125,26 @@ static const yytype_uint16 yyrline[] = 1680, 1689, 1698, 1707, 1714, 1724, 1744, 1751, 1769, 1782, 1795, 1804, 1813, 1822, 1831, 1841, 1851, 1862, 1871, 1880, 1889, 1898, 1907, 1916, 1929, 1942, 1951, 1958, 1967, 1976, - 1985, 1994, 2002, 2015, 2023, 2065, 2072, 2087, 2097, 2107, - 2114, 2121, 2128, 2137, 2145, 2159, 2180, 2201, 2213, 2225, - 2237, 2246, 2267, 2277, 2286, 2294, 2302, 2315, 2328, 2343, - 2358, 2367, 2376, 2382, 2391, 2400, 2410, 2420, 2433, 2446, - 2458, 2472, 2484, 2498, 2507, 2519, 2529, 2536, 2543, 2552, - 2561, 2571, 2581, 2591, 2598, 2605, 2614, 2623, 2633, 2643, - 2650, 2657, 2664, 2672, 2682, 2692, 2702, 2712, 2751, 2761, - 2769, 2777, 2792, 2801, 2806, 2807, 2808, 2808, 2808, 2809, - 2809, 2809, 2810, 2810, 2812, 2822, 2831, 2838, 2845, 2852, - 2859, 2866, 2873, 2878, 2879, 2880, 2880, 2880, 2881, 2881, - 2881, 2882, 2883, 2883, 2884, 2884, 2885, 2885, 2886, 2887, - 2888, 2889, 2890, 2891, 2893, 2902, 2912, 2919, 2926, 2935, - 2942, 2949, 2956, 2963, 2972, 2981, 2988, 2995, 3005, 3015, - 3025, 3035, 3045, 3055, 3060, 3061, 3062, 3064, 3070, 3075, - 3076, 3077, 3079, 3085, 3095, 3102, 3111, 3119, 3124, 3125, - 3127, 3127, 3127, 3128, 3128, 3129, 3130, 3131, 3132, 3133, - 3135, 3145, 3154, 3161, 3170, 3177, 3186, 3194, 3207, 3215, - 3228, 3233, 3234, 3235, 3235, 3236, 3236, 3236, 3237, 3239, - 3251, 3263, 3275, 3290, 3303, 3316, 3327, 3332, 3333, 3334, - 3334, 3336, 3351 + 1985, 1994, 2002, 2015, 2023, 2068, 2075, 2090, 2100, 2110, + 2117, 2124, 2131, 2140, 2148, 2162, 2183, 2204, 2216, 2228, + 2240, 2249, 2270, 2280, 2289, 2297, 2305, 2318, 2331, 2346, + 2361, 2370, 2379, 2385, 2394, 2403, 2413, 2423, 2436, 2449, + 2461, 2475, 2487, 2501, 2510, 2522, 2532, 2539, 2546, 2555, + 2564, 2574, 2584, 2594, 2601, 2608, 2617, 2626, 2636, 2646, + 2653, 2660, 2667, 2675, 2685, 2695, 2705, 2715, 2754, 2764, + 2772, 2780, 2795, 2804, 2809, 2810, 2811, 2811, 2811, 2812, + 2812, 2812, 2813, 2813, 2815, 2825, 2834, 2841, 2848, 2855, + 2862, 2869, 2876, 2881, 2882, 2883, 2883, 2883, 2884, 2884, + 2884, 2885, 2886, 2886, 2887, 2887, 2888, 2888, 2889, 2890, + 2891, 2892, 2893, 2894, 2896, 2905, 2915, 2922, 2929, 2938, + 2945, 2952, 2959, 2966, 2975, 2984, 2991, 2998, 3008, 3018, + 3028, 3038, 3048, 3058, 3063, 3064, 3065, 3067, 3073, 3078, + 3079, 3080, 3082, 3088, 3098, 3105, 3114, 3122, 3127, 3128, + 3130, 3130, 3130, 3131, 3131, 3132, 3133, 3134, 3135, 3136, + 3138, 3148, 3157, 3164, 3173, 3180, 3189, 3197, 3210, 3218, + 3231, 3236, 3237, 3238, 3238, 3239, 3239, 3239, 3240, 3242, + 3254, 3266, 3278, 3293, 3306, 3319, 3330, 3335, 3336, 3337, + 3337, 3339, 3354 }; #endif @@ -5019,6 +5019,8 @@ yyreduce: && strcmp((yyvsp[0].str), "always_transparent")!=0 && strcmp((yyvsp[0].str), "always_refuse")!=0 && strcmp((yyvsp[0].str), "always_nxdomain")!=0 + && strcmp((yyvsp[0].str), "always_nodata")!=0 + && strcmp((yyvsp[0].str), "always_deny")!=0 && strcmp((yyvsp[0].str), "always_null")!=0 && strcmp((yyvsp[0].str), "noview")!=0 && strcmp((yyvsp[0].str), "inform")!=0 && strcmp((yyvsp[0].str), "inform_deny")!=0 @@ -5028,7 +5030,8 @@ yyreduce: "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, always_null, " + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); free((yyvsp[-1].str)); free((yyvsp[0].str)); @@ -5050,21 +5053,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5054 "util/configparser.c" +#line 5057 "util/configparser.c" break; case 445: -#line 2066 "./util/configparser.y" +#line 2069 "./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 5064 "util/configparser.c" +#line 5067 "util/configparser.c" break; case 446: -#line 2073 "./util/configparser.y" +#line 2076 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5078,11 +5081,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5082 "util/configparser.c" +#line 5085 "util/configparser.c" break; case 447: -#line 2088 "./util/configparser.y" +#line 2091 "./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) @@ -5091,11 +5094,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5095 "util/configparser.c" +#line 5098 "util/configparser.c" break; case 448: -#line 2098 "./util/configparser.y" +#line 2101 "./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) @@ -5104,41 +5107,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5108 "util/configparser.c" +#line 5111 "util/configparser.c" break; case 449: -#line 2108 "./util/configparser.y" +#line 2111 "./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 5118 "util/configparser.c" +#line 5121 "util/configparser.c" break; case 450: -#line 2115 "./util/configparser.y" +#line 2118 "./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 5128 "util/configparser.c" +#line 5131 "util/configparser.c" break; case 451: -#line 2122 "./util/configparser.y" +#line 2125 "./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 5138 "util/configparser.c" +#line 5141 "util/configparser.c" break; case 452: -#line 2129 "./util/configparser.y" +#line 2132 "./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) @@ -5146,22 +5149,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5150 "util/configparser.c" +#line 5153 "util/configparser.c" break; case 453: -#line 2138 "./util/configparser.y" +#line 2141 "./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 5161 "util/configparser.c" +#line 5164 "util/configparser.c" break; case 454: -#line 2146 "./util/configparser.y" +#line 2149 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -5174,11 +5177,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5178 "util/configparser.c" +#line 5181 "util/configparser.c" break; case 455: -#line 2160 "./util/configparser.y" +#line 2163 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5198,11 +5201,11 @@ yyreduce: } } } -#line 5202 "util/configparser.c" +#line 5205 "util/configparser.c" break; case 456: -#line 2181 "./util/configparser.y" +#line 2184 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5222,11 +5225,11 @@ yyreduce: } } } -#line 5226 "util/configparser.c" +#line 5229 "util/configparser.c" break; case 457: -#line 2202 "./util/configparser.y" +#line 2205 "./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, @@ -5237,11 +5240,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5241 "util/configparser.c" +#line 5244 "util/configparser.c" break; case 458: -#line 2214 "./util/configparser.y" +#line 2217 "./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, @@ -5252,11 +5255,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5256 "util/configparser.c" +#line 5259 "util/configparser.c" break; case 459: -#line 2226 "./util/configparser.y" +#line 2229 "./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, @@ -5267,11 +5270,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5271 "util/configparser.c" +#line 5274 "util/configparser.c" break; case 460: -#line 2238 "./util/configparser.y" +#line 2241 "./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, @@ -5279,11 +5282,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5283 "util/configparser.c" +#line 5286 "util/configparser.c" break; case 461: -#line 2247 "./util/configparser.y" +#line 2250 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5303,11 +5306,11 @@ yyreduce: } } } -#line 5307 "util/configparser.c" +#line 5310 "util/configparser.c" break; case 462: -#line 2268 "./util/configparser.y" +#line 2271 "./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) @@ -5315,11 +5318,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5319 "util/configparser.c" +#line 5322 "util/configparser.c" break; case 463: -#line 2278 "./util/configparser.y" +#line 2281 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5327,33 +5330,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5331 "util/configparser.c" +#line 5334 "util/configparser.c" break; case 464: -#line 2287 "./util/configparser.y" +#line 2290 "./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 5342 "util/configparser.c" +#line 5345 "util/configparser.c" break; case 465: -#line 2295 "./util/configparser.y" +#line 2298 "./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 5353 "util/configparser.c" +#line 5356 "util/configparser.c" break; case 466: -#line 2303 "./util/configparser.y" +#line 2306 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5365,11 +5368,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5369 "util/configparser.c" +#line 5372 "util/configparser.c" break; case 467: -#line 2316 "./util/configparser.y" +#line 2319 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5381,11 +5384,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5385 "util/configparser.c" +#line 5388 "util/configparser.c" break; case 468: -#line 2329 "./util/configparser.y" +#line 2332 "./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) { @@ -5399,11 +5402,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5403 "util/configparser.c" +#line 5406 "util/configparser.c" break; case 469: -#line 2344 "./util/configparser.y" +#line 2347 "./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) { @@ -5417,11 +5420,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5421 "util/configparser.c" +#line 5424 "util/configparser.c" break; case 470: -#line 2359 "./util/configparser.y" +#line 2362 "./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) @@ -5429,11 +5432,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5433 "util/configparser.c" +#line 5436 "util/configparser.c" break; case 471: -#line 2368 "./util/configparser.y" +#line 2371 "./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) @@ -5441,20 +5444,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5445 "util/configparser.c" +#line 5448 "util/configparser.c" break; case 472: -#line 2377 "./util/configparser.y" +#line 2380 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5457 "util/configparser.c" break; case 473: -#line 2383 "./util/configparser.y" +#line 2386 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5462,11 +5465,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5466 "util/configparser.c" +#line 5469 "util/configparser.c" break; case 474: -#line 2392 "./util/configparser.y" +#line 2395 "./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) @@ -5474,11 +5477,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5478 "util/configparser.c" +#line 5481 "util/configparser.c" break; case 475: -#line 2401 "./util/configparser.y" +#line 2404 "./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) @@ -5487,11 +5490,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5491 "util/configparser.c" +#line 5494 "util/configparser.c" break; case 476: -#line 2411 "./util/configparser.y" +#line 2414 "./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) @@ -5500,11 +5503,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5504 "util/configparser.c" +#line 5507 "util/configparser.c" break; case 477: -#line 2421 "./util/configparser.y" +#line 2424 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5516,11 +5519,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5520 "util/configparser.c" +#line 5523 "util/configparser.c" break; case 478: -#line 2434 "./util/configparser.y" +#line 2437 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5532,11 +5535,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5536 "util/configparser.c" +#line 5539 "util/configparser.c" break; case 479: -#line 2447 "./util/configparser.y" +#line 2450 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5547,11 +5550,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5551 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 480: -#line 2459 "./util/configparser.y" +#line 2462 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5564,11 +5567,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5568 "util/configparser.c" +#line 5571 "util/configparser.c" break; case 481: -#line 2473 "./util/configparser.y" +#line 2476 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5579,11 +5582,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5583 "util/configparser.c" +#line 5586 "util/configparser.c" break; case 482: -#line 2485 "./util/configparser.y" +#line 2488 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5596,11 +5599,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5600 "util/configparser.c" +#line 5603 "util/configparser.c" break; case 483: -#line 2499 "./util/configparser.y" +#line 2502 "./util/configparser.y" { OUTYY(("P(server_edns_client_string:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert( @@ -5608,11 +5611,11 @@ yyreduce: fatal_exit("out of memory adding " "edns-client-string"); } -#line 5612 "util/configparser.c" +#line 5615 "util/configparser.c" break; case 484: -#line 2508 "./util/configparser.y" +#line 2511 "./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) @@ -5623,11 +5626,11 @@ yyreduce: free((yyvsp[0].str)); } -#line 5627 "util/configparser.c" +#line 5630 "util/configparser.c" break; case 485: -#line 2520 "./util/configparser.y" +#line 2523 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5636,31 +5639,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5640 "util/configparser.c" +#line 5643 "util/configparser.c" break; case 486: -#line 2530 "./util/configparser.y" +#line 2533 "./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 5650 "util/configparser.c" +#line 5653 "util/configparser.c" break; case 487: -#line 2537 "./util/configparser.y" +#line 2540 "./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 5660 "util/configparser.c" +#line 5663 "util/configparser.c" break; case 488: -#line 2544 "./util/configparser.y" +#line 2547 "./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) @@ -5668,11 +5671,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5672 "util/configparser.c" +#line 5675 "util/configparser.c" break; case 489: -#line 2553 "./util/configparser.y" +#line 2556 "./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) @@ -5680,11 +5683,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5684 "util/configparser.c" +#line 5687 "util/configparser.c" break; case 490: -#line 2562 "./util/configparser.y" +#line 2565 "./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) @@ -5693,11 +5696,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5697 "util/configparser.c" +#line 5700 "util/configparser.c" break; case 491: -#line 2572 "./util/configparser.y" +#line 2575 "./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) @@ -5706,11 +5709,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5710 "util/configparser.c" +#line 5713 "util/configparser.c" break; case 492: -#line 2582 "./util/configparser.y" +#line 2585 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5719,31 +5722,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5723 "util/configparser.c" +#line 5726 "util/configparser.c" break; case 493: -#line 2592 "./util/configparser.y" +#line 2595 "./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 5733 "util/configparser.c" +#line 5736 "util/configparser.c" break; case 494: -#line 2599 "./util/configparser.y" +#line 2602 "./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 5743 "util/configparser.c" +#line 5746 "util/configparser.c" break; case 495: -#line 2606 "./util/configparser.y" +#line 2609 "./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) @@ -5751,11 +5754,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5755 "util/configparser.c" +#line 5758 "util/configparser.c" break; case 496: -#line 2615 "./util/configparser.y" +#line 2618 "./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) @@ -5763,11 +5766,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5767 "util/configparser.c" +#line 5770 "util/configparser.c" break; case 497: -#line 2624 "./util/configparser.y" +#line 2627 "./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) @@ -5776,11 +5779,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5780 "util/configparser.c" +#line 5783 "util/configparser.c" break; case 498: -#line 2634 "./util/configparser.y" +#line 2637 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5789,52 +5792,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5793 "util/configparser.c" +#line 5796 "util/configparser.c" break; case 499: -#line 2644 "./util/configparser.y" +#line 2647 "./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 5803 "util/configparser.c" +#line 5806 "util/configparser.c" break; case 500: -#line 2651 "./util/configparser.y" +#line 2654 "./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 5813 "util/configparser.c" +#line 5816 "util/configparser.c" break; case 501: -#line 2658 "./util/configparser.y" +#line 2661 "./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 5823 "util/configparser.c" +#line 5826 "util/configparser.c" break; case 502: -#line 2665 "./util/configparser.y" +#line 2668 "./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 5834 "util/configparser.c" +#line 5837 "util/configparser.c" break; case 503: -#line 2673 "./util/configparser.y" +#line 2676 "./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) @@ -5843,11 +5846,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5847 "util/configparser.c" +#line 5850 "util/configparser.c" break; case 504: -#line 2683 "./util/configparser.y" +#line 2686 "./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) @@ -5856,11 +5859,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5860 "util/configparser.c" +#line 5863 "util/configparser.c" break; case 505: -#line 2693 "./util/configparser.y" +#line 2696 "./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) @@ -5869,11 +5872,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5873 "util/configparser.c" +#line 5876 "util/configparser.c" break; case 506: -#line 2703 "./util/configparser.y" +#line 2706 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5882,11 +5885,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5886 "util/configparser.c" +#line 5889 "util/configparser.c" break; case 507: -#line 2713 "./util/configparser.y" +#line 2716 "./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 && @@ -5924,11 +5927,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5928 "util/configparser.c" +#line 5931 "util/configparser.c" break; case 508: -#line 2752 "./util/configparser.y" +#line 2755 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5937,33 +5940,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5941 "util/configparser.c" +#line 5944 "util/configparser.c" break; case 509: -#line 2762 "./util/configparser.y" +#line 2765 "./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 5952 "util/configparser.c" +#line 5955 "util/configparser.c" break; case 510: -#line 2770 "./util/configparser.y" +#line 2773 "./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 5963 "util/configparser.c" +#line 5966 "util/configparser.c" break; case 511: -#line 2778 "./util/configparser.y" +#line 2781 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5977,11 +5980,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5981 "util/configparser.c" +#line 5984 "util/configparser.c" break; case 512: -#line 2793 "./util/configparser.y" +#line 2796 "./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) @@ -5989,19 +5992,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5993 "util/configparser.c" +#line 5996 "util/configparser.c" break; case 513: -#line 2802 "./util/configparser.y" +#line 2805 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 6001 "util/configparser.c" +#line 6004 "util/configparser.c" break; case 524: -#line 2813 "./util/configparser.y" +#line 2816 "./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) @@ -6010,11 +6013,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6014 "util/configparser.c" +#line 6017 "util/configparser.c" break; case 525: -#line 2823 "./util/configparser.y" +#line 2826 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6022,79 +6025,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6026 "util/configparser.c" +#line 6029 "util/configparser.c" break; case 526: -#line 2832 "./util/configparser.y" +#line 2835 "./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 6036 "util/configparser.c" +#line 6039 "util/configparser.c" break; case 527: -#line 2839 "./util/configparser.y" +#line 2842 "./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 6046 "util/configparser.c" +#line 6049 "util/configparser.c" break; case 528: -#line 2846 "./util/configparser.y" +#line 2849 "./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 6056 "util/configparser.c" +#line 6059 "util/configparser.c" break; case 529: -#line 2853 "./util/configparser.y" +#line 2856 "./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 6066 "util/configparser.c" +#line 6069 "util/configparser.c" break; case 530: -#line 2860 "./util/configparser.y" +#line 2863 "./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 6076 "util/configparser.c" +#line 6079 "util/configparser.c" break; case 531: -#line 2867 "./util/configparser.y" +#line 2870 "./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 6086 "util/configparser.c" +#line 6089 "util/configparser.c" break; case 532: -#line 2874 "./util/configparser.y" +#line 2877 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 6094 "util/configparser.c" +#line 6097 "util/configparser.c" break; case 554: -#line 2894 "./util/configparser.y" +#line 2897 "./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) @@ -6102,11 +6105,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6106 "util/configparser.c" +#line 6109 "util/configparser.c" break; case 555: -#line 2903 "./util/configparser.y" +#line 2906 "./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) @@ -6115,31 +6118,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6119 "util/configparser.c" +#line 6122 "util/configparser.c" break; case 556: -#line 2913 "./util/configparser.y" +#line 2916 "./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 6129 "util/configparser.c" +#line 6132 "util/configparser.c" break; case 557: -#line 2920 "./util/configparser.y" +#line 2923 "./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 6139 "util/configparser.c" +#line 6142 "util/configparser.c" break; case 558: -#line 2927 "./util/configparser.y" +#line 2930 "./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) @@ -6147,51 +6150,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6151 "util/configparser.c" +#line 6154 "util/configparser.c" break; case 559: -#line 2936 "./util/configparser.y" +#line 2939 "./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 6161 "util/configparser.c" +#line 6164 "util/configparser.c" break; case 560: -#line 2943 "./util/configparser.y" +#line 2946 "./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 6171 "util/configparser.c" +#line 6174 "util/configparser.c" break; case 561: -#line 2950 "./util/configparser.y" +#line 2953 "./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 6181 "util/configparser.c" +#line 6184 "util/configparser.c" break; case 562: -#line 2957 "./util/configparser.y" +#line 2960 "./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 6191 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 563: -#line 2964 "./util/configparser.y" +#line 2967 "./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) @@ -6199,11 +6202,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6203 "util/configparser.c" +#line 6206 "util/configparser.c" break; case 564: -#line 2973 "./util/configparser.y" +#line 2976 "./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) @@ -6211,31 +6214,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6215 "util/configparser.c" +#line 6218 "util/configparser.c" break; case 565: -#line 2982 "./util/configparser.y" +#line 2985 "./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 6225 "util/configparser.c" +#line 6228 "util/configparser.c" break; case 566: -#line 2989 "./util/configparser.y" +#line 2992 "./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 6235 "util/configparser.c" +#line 6238 "util/configparser.c" break; case 567: -#line 2996 "./util/configparser.y" +#line 2999 "./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) @@ -6244,11 +6247,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6248 "util/configparser.c" +#line 6251 "util/configparser.c" break; case 568: -#line 3006 "./util/configparser.y" +#line 3009 "./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) @@ -6257,11 +6260,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6261 "util/configparser.c" +#line 6264 "util/configparser.c" break; case 569: -#line 3016 "./util/configparser.y" +#line 3019 "./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) @@ -6270,11 +6273,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6274 "util/configparser.c" +#line 6277 "util/configparser.c" break; case 570: -#line 3026 "./util/configparser.y" +#line 3029 "./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) @@ -6283,11 +6286,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6287 "util/configparser.c" +#line 6290 "util/configparser.c" break; case 571: -#line 3036 "./util/configparser.y" +#line 3039 "./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) @@ -6296,11 +6299,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6300 "util/configparser.c" +#line 6303 "util/configparser.c" break; case 572: -#line 3046 "./util/configparser.y" +#line 3049 "./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) @@ -6309,47 +6312,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6313 "util/configparser.c" +#line 6316 "util/configparser.c" break; case 573: -#line 3056 "./util/configparser.y" +#line 3059 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6321 "util/configparser.c" +#line 6324 "util/configparser.c" break; case 577: -#line 3065 "./util/configparser.y" +#line 3068 "./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 6331 "util/configparser.c" +#line 6334 "util/configparser.c" break; case 578: -#line 3071 "./util/configparser.y" +#line 3074 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6339 "util/configparser.c" +#line 6342 "util/configparser.c" break; case 582: -#line 3080 "./util/configparser.y" +#line 3083 "./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 6349 "util/configparser.c" +#line 6352 "util/configparser.c" break; case 583: -#line 3086 "./util/configparser.y" +#line 3089 "./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) @@ -6358,21 +6361,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6362 "util/configparser.c" +#line 6365 "util/configparser.c" break; case 584: -#line 3096 "./util/configparser.y" +#line 3099 "./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 6372 "util/configparser.c" +#line 6375 "util/configparser.c" break; case 585: -#line 3103 "./util/configparser.y" +#line 3106 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6380,30 +6383,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6384 "util/configparser.c" +#line 6387 "util/configparser.c" break; case 586: -#line 3112 "./util/configparser.y" +#line 3115 "./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 6395 "util/configparser.c" +#line 6398 "util/configparser.c" break; case 587: -#line 3120 "./util/configparser.y" +#line 3123 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6403 "util/configparser.c" +#line 6406 "util/configparser.c" break; case 600: -#line 3136 "./util/configparser.y" +#line 3139 "./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) @@ -6411,11 +6414,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6415 "util/configparser.c" +#line 6418 "util/configparser.c" break; case 601: -#line 3146 "./util/configparser.y" +#line 3149 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6423,21 +6426,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6427 "util/configparser.c" +#line 6430 "util/configparser.c" break; case 602: -#line 3155 "./util/configparser.y" +#line 3158 "./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 6437 "util/configparser.c" +#line 6440 "util/configparser.c" break; case 603: -#line 3162 "./util/configparser.y" +#line 3165 "./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))) @@ -6445,21 +6448,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 6449 "util/configparser.c" +#line 6452 "util/configparser.c" break; case 604: -#line 3171 "./util/configparser.y" +#line 3174 "./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 6459 "util/configparser.c" +#line 6462 "util/configparser.c" break; case 605: -#line 3178 "./util/configparser.y" +#line 3181 "./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))) @@ -6467,22 +6470,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 6471 "util/configparser.c" +#line 6474 "util/configparser.c" break; case 606: -#line 3187 "./util/configparser.y" +#line 3190 "./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 6482 "util/configparser.c" +#line 6485 "util/configparser.c" break; case 607: -#line 3195 "./util/configparser.y" +#line 3198 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6494,22 +6497,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6498 "util/configparser.c" +#line 6501 "util/configparser.c" break; case 608: -#line 3208 "./util/configparser.y" +#line 3211 "./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 6509 "util/configparser.c" +#line 6512 "util/configparser.c" break; case 609: -#line 3216 "./util/configparser.y" +#line 3219 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6521,19 +6524,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6525 "util/configparser.c" +#line 6528 "util/configparser.c" break; case 610: -#line 3229 "./util/configparser.y" +#line 3232 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6533 "util/configparser.c" +#line 6536 "util/configparser.c" break; case 619: -#line 3240 "./util/configparser.y" +#line 3243 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6544,11 +6547,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6548 "util/configparser.c" +#line 6551 "util/configparser.c" break; case 620: -#line 3252 "./util/configparser.y" +#line 3255 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6559,11 +6562,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6563 "util/configparser.c" +#line 6566 "util/configparser.c" break; case 621: -#line 3264 "./util/configparser.y" +#line 3267 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6574,11 +6577,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6578 "util/configparser.c" +#line 6581 "util/configparser.c" break; case 622: -#line 3276 "./util/configparser.y" +#line 3279 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6592,11 +6595,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6596 "util/configparser.c" +#line 6599 "util/configparser.c" break; case 623: -#line 3291 "./util/configparser.y" +#line 3294 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6608,11 +6611,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6612 "util/configparser.c" +#line 6615 "util/configparser.c" break; case 624: -#line 3304 "./util/configparser.y" +#line 3307 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6624,11 +6627,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6628 "util/configparser.c" +#line 6631 "util/configparser.c" break; case 625: -#line 3317 "./util/configparser.y" +#line 3320 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6638,19 +6641,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6642 "util/configparser.c" +#line 6645 "util/configparser.c" break; case 626: -#line 3328 "./util/configparser.y" +#line 3331 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6650 "util/configparser.c" +#line 6653 "util/configparser.c" break; case 631: -#line 3337 "./util/configparser.y" +#line 3340 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6664,11 +6667,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6668 "util/configparser.c" +#line 6671 "util/configparser.c" break; case 632: -#line 3352 "./util/configparser.y" +#line 3355 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6682,11 +6685,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6686 "util/configparser.c" +#line 6689 "util/configparser.c" break; -#line 6690 "util/configparser.c" +#line 6693 "util/configparser.c" default: break; } @@ -6918,7 +6921,7 @@ yyreturn: #endif return yyresult; } -#line 3366 "./util/configparser.y" +#line 3369 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index cc965a477..32419593a 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -2030,6 +2030,8 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG && strcmp($3, "always_transparent")!=0 && strcmp($3, "always_refuse")!=0 && strcmp($3, "always_nxdomain")!=0 + && strcmp($3, "always_nodata")!=0 + && strcmp($3, "always_deny")!=0 && strcmp($3, "always_null")!=0 && strcmp($3, "noview")!=0 && strcmp($3, "inform")!=0 && strcmp($3, "inform_deny")!=0 @@ -2039,7 +2041,8 @@ server_local_zone: VAR_LOCAL_ZONE STRING_ARG STRING_ARG "refuse, redirect, transparent, " "typetransparent, inform, inform_deny, " "inform_redirect, always_transparent, " - "always_refuse, always_nxdomain, always_null, " + "always_refuse, always_nxdomain, " + "always_nodata, always_deny, always_null, " "noview, nodefault or ipset"); free($2); free($3); From 4d1d8b4cddfde95d50bf3a4f5dcfe36f652c2f58 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 12 Jan 2021 13:40:45 +0100 Subject: [PATCH 350/394] And man page documentation for them. --- doc/unbound.conf.5.in | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 4eeb41bf9..e7964d969 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1305,6 +1305,12 @@ Like refuse, but ignores local data and refuses the query. \h'5'\fIalways_nxdomain\fR Like static, but ignores local data and returns nxdomain for the query. .TP 10 +\h'5'\fIalways_nodata\fR +Like static, but ignores local data and returns nodata for the query. +.TP 10 +\h'5'\fIalways_deny\fR +Like deny, but ignores local data and drops the query. +.TP 10 \h'5'\fIalways_null\fR Always returns 0.0.0.0 or ::0 for every name in the zone. Like redirect with zero data for A and AAAA. Ignores local data in the zone. Used for From 93e5705259d4ebc4131b46ffee4e68163d171f04 Mon Sep 17 00:00:00 2001 From: xiangbao227 <1004129700@qq.com> Date: Wed, 13 Jan 2021 10:33:41 +0800 Subject: [PATCH 351/394] I found that in function lruhash_remove, table was locked at first ,then lru_remove the entry , then unlock the table, and then markdel entry , but in function rrset_cache_touch , the entry will be touched to lru again before markdelling entry in function lruhash_remove. This is a bug! --- util/storage/lruhash.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/storage/lruhash.c b/util/storage/lruhash.c index 0003ff491..3500a4ef0 100644 --- a/util/storage/lruhash.c +++ b/util/storage/lruhash.c @@ -398,13 +398,13 @@ lruhash_remove(struct lruhash* table, hashvalue_type hash, void* key) return; } table->num--; - table->space_used -= (*table->sizefunc)(entry->key, entry->data); - lock_quick_unlock(&table->lock); + table->space_used -= (*table->sizefunc)(entry->key, entry->data); lock_rw_wrlock(&entry->lock); if(table->markdelfunc) (*table->markdelfunc)(entry->key); lock_rw_unlock(&entry->lock); lock_quick_unlock(&bin->lock); + lock_quick_unlock(&table->lock); /* finish removal */ d = entry->data; (*table->delkeyfunc)(entry->key, table->cb_arg); From 24fd871245b7520f23dcfdcbf420de1798c12cdf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 13 Jan 2021 10:07:15 +0100 Subject: [PATCH 352/394] Changelog note for #399 - Merge #399 from xiangbao227: The function rrset_cache_touch can touch an entry to the lru while markdelling the entry in lruhash_remove. --- doc/Changelog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b9d449371..c57e43179 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +13 January 2021: Wouter + - Merge #399 from xiangbao227: The function rrset_cache_touch can + touch an entry to the lru while markdelling the entry in + lruhash_remove. + 12 January 2021: Wouter - Fix #397: [Feature request] add new type always_null to local-zone similar to always_nxdomain. From 5314f633430b87816038531aeb903eeb302fc505 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 13 Jan 2021 10:10:12 +0100 Subject: [PATCH 353/394] Nicer changelog note for #399 - Merge #399 from xiangbao227: The lock of lruhash table should unlocked after markdel entry. --- doc/Changelog | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index c57e43179..ce922f6fc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,6 @@ 13 January 2021: Wouter - - Merge #399 from xiangbao227: The function rrset_cache_touch can - touch an entry to the lru while markdelling the entry in - lruhash_remove. + - Merge #399 from xiangbao227: The lock of lruhash table should + unlocked after markdel entry. 12 January 2021: Wouter - Fix #397: [Feature request] add new type always_null to local-zone From 3b82e690efc83a96c9e559750fc4576034ad2ea7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 13 Jan 2021 14:56:25 +0100 Subject: [PATCH 354/394] - Fix for #93: dynlibmodule link fix for Windows. --- Makefile.in | 24 ++++++++++++------------ doc/Changelog | 1 + 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/Makefile.in b/Makefile.in index 4ca46496b..99943a650 100644 --- a/Makefile.in +++ b/Makefile.in @@ -349,10 +349,10 @@ unbound$(EXEEXT): $(DAEMON_OBJ_LINK) libunbound.la $(LINK) -o $@ $(DAEMON_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) unbound-checkconf$(EXEEXT): $(CHECKCONF_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(CHECKCONF_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-control$(EXEEXT): $(CONTROL_OBJ_LINK) libunbound.la - $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(CONTROL_OBJ_LINK) $(EXTRALINK) $(SSLLIB) $(LIBS) unbound-host$(EXEEXT): $(HOST_OBJ_LINK) libunbound.la $(LINK) -o $@ $(HOST_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) @@ -370,37 +370,37 @@ anchor-update$(EXEEXT): $(ANCHORUPD_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ANCHORUPD_OBJ_LINK) -L. -L.libs -lunbound $(LIBS) unittest$(EXEEXT): $(UNITTEST_OBJ_LINK) - $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(UNITTEST_OBJ_LINK) $(SSLLIB) $(LIBS) testbound$(EXEEXT): $(TESTBOUND_OBJ_LINK) - $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(TESTBOUND_OBJ_LINK) $(SSLLIB) $(LIBS) lock-verify$(EXEEXT): $(LOCKVERIFY_OBJ_LINK) - $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(LOCKVERIFY_OBJ_LINK) $(SSLLIB) $(LIBS) petal$(EXEEXT): $(PETAL_OBJ_LINK) $(LINK) -o $@ $(PETAL_OBJ_LINK) $(SSLLIB) $(LIBS) pktview$(EXEEXT): $(PKTVIEW_OBJ_LINK) - $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(PKTVIEW_OBJ_LINK) $(SSLLIB) $(LIBS) memstats$(EXEEXT): $(MEMSTATS_OBJ_LINK) - $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(MEMSTATS_OBJ_LINK) $(SSLLIB) $(LIBS) asynclook$(EXEEXT): $(ASYNCLOOK_OBJ_LINK) libunbound.la $(LINK) -o $@ $(ASYNCLOOK_OBJ_LINK) -L. -L.libs -lunbound $(SSLLIB) $(LIBS) streamtcp$(EXEEXT): $(STREAMTCP_OBJ_LINK) - $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(STREAMTCP_OBJ_LINK) $(SSLLIB) $(LIBS) dohclient$(EXEEXT): $(DOHCLIENT_OBJ_LINK) - $(LINK) -o $@ $(DOHCLIENT_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(DOHCLIENT_OBJ_LINK) $(SSLLIB) $(LIBS) perf$(EXEEXT): $(PERF_OBJ_LINK) - $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(PERF_OBJ_LINK) $(SSLLIB) $(LIBS) delayer$(EXEEXT): $(DELAYER_OBJ_LINK) - $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(DELAYER_OBJ_LINK) $(SSLLIB) $(LIBS) signit$(EXEEXT): testcode/signit.c $(CC) $(CPPFLAGS) $(CFLAGS) @PTHREAD_CFLAGS_ONLY@ -o $@ testcode/signit.c $(LDFLAGS) -lldns $(SSLLIB) $(LIBS) @@ -423,7 +423,7 @@ dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h: $(srcdir)/dnstap/dnstap.proto $(PROTOC_C) --c_out=. --proto_path=$(srcdir) $(srcdir)/dnstap/dnstap.proto unbound-dnstap-socket$(EXEEXT): $(DNSTAP_SOCKET_OBJ_LINK) - $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) $(DYNLIBMOD_EXTRALIBS) + $(LINK) -o $@ $(DNSTAP_SOCKET_OBJ_LINK) $(SSLLIB) $(LIBS) dnstap.pb-c.lo dnstap.pb-c.o: dnstap/dnstap.pb-c.c dnstap/dnstap.pb-c.h dtstream.lo dtstream.o: $(srcdir)/dnstap/dtstream.c config.h $(srcdir)/dnstap/dtstream.h diff --git a/doc/Changelog b/doc/Changelog index ce922f6fc..c3223b05a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 13 January 2021: Wouter - Merge #399 from xiangbao227: The lock of lruhash table should unlocked after markdel entry. + - Fix for #93: dynlibmodule link fix for Windows. 12 January 2021: Wouter - Fix #397: [Feature request] add new type always_null to local-zone From 4613d2bf047857442c63d8f9177cda91b82e84e0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 14 Jan 2021 16:50:17 +0100 Subject: [PATCH 355/394] - Fix for #93: dynlibmodule import library is named libunbound.dll.a. --- configure | 2 +- configure.ac | 2 +- doc/Changelog | 3 +++ dynlibmod/examples/helloworld.c | 6 ++++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 87959deae..7957f0dd6 100755 --- a/configure +++ b/configure @@ -17237,7 +17237,7 @@ $as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h if test $on_mingw = "no"; then DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" else - DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi fi diff --git a/configure.ac b/configure.ac index 02b9eb47b..3e872bca9 100644 --- a/configure.ac +++ b/configure.ac @@ -644,7 +644,7 @@ if test x_$withval != x_no; then if test $on_mingw = "no"; then DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" else - DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.a" + DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi AC_SUBST(DYNLIBMOD_EXTRALIBS) fi diff --git a/doc/Changelog b/doc/Changelog index c3223b05a..335ecf89b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +14 January 2021: Wouter + - Fix for #93: dynlibmodule import library is named libunbound.dll.a. + 13 January 2021: Wouter - Merge #399 from xiangbao227: The lock of lruhash table should unlocked after markdel entry. diff --git a/dynlibmod/examples/helloworld.c b/dynlibmod/examples/helloworld.c index 7da32d9bb..be2116843 100644 --- a/dynlibmod/examples/helloworld.c +++ b/dynlibmod/examples/helloworld.c @@ -7,8 +7,10 @@ * And to build for windows, first make unbound with the --with-dynlibmod * switch, then use this command: * x86_64-w64-mingw32-gcc -m64 -I../.. -shared -Wall -Werror -fpic - * -o helloworld.dll helloworld.c -L../.. -l:libunbound.a - * to cross-compile a 64-bit Windows DLL. + * -o helloworld.dll helloworld.c -L../.. -l:libunbound.dll.a + * to cross-compile a 64-bit Windows DLL. The libunbound.dll.a is produced + * by the compile step that makes unbound.exe and allows the dynlib dll to + * access definitions in unbound.exe. */ #include "../../config.h" From 285a7fdd2151672ba3d60914848c2113d4ed9d15 Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Thu, 14 Jan 2021 19:15:30 +0100 Subject: [PATCH 356/394] Implement IPv4-Embedded addresses according to RFC6052. The original algorithm assumed that any prefix length would be valid and did not skip over bits 64 to 71 and set them to zero. This means that only dns64 prefixes with length 32 and 96 generated embedded addresses according to RFC6052, cf. Figure 1 in 2.2. --- dns64/dns64.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index 5c70119a5..e7552bb7d 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -198,14 +198,17 @@ uitoa(unsigned n, char* s) static uint32_t extract_ipv4(const uint8_t ipv6[], size_t ipv6_len, const int offset) { - uint32_t ipv4; + uint32_t ipv4 = 0; + int i, pos; log_assert(ipv6_len == 16); (void)ipv6_len; - ipv4 = (uint32_t)ipv6[offset/8+0] << (24 + (offset%8)) - | (uint32_t)ipv6[offset/8+1] << (16 + (offset%8)) - | (uint32_t)ipv6[offset/8+2] << ( 8 + (offset%8)) - | (uint32_t)ipv6[offset/8+3] << ( 0 + (offset%8)); - if (offset/8+4 < 16) - ipv4 |= (uint32_t)ipv6[offset/8+4] >> (8 - offset%8); + log_assert(offset == 32 || offset == 40 || offset == 48 || offset == 56 || + offset == 64 || offset == 96); + for(i = 0, pos = offset / 8; i < 4; i++, pos++) { + if (pos == 8) + pos++; + ipv4 = ipv4 << 8; + ipv4 |= ipv6[pos]; + } return ipv4; } @@ -297,17 +300,16 @@ synthesize_aaaa(const uint8_t prefix_addr[], size_t prefix_addr_len, size_t aaaa_len) { log_assert(prefix_addr_len == 16 && a_len == 4 && aaaa_len == 16); + log_assert(prefix_net == 32 || prefix_net == 40 || prefix_net == 48 || + prefix_net == 56 || prefix_net == 64 || prefix_net == 96); + int i, pos; (void)prefix_addr_len; (void)a_len; (void)aaaa_len; memcpy(aaaa, prefix_addr, 16); - aaaa[prefix_net/8+0] |= a[0] >> (0+prefix_net%8); - aaaa[prefix_net/8+1] |= a[0] << (8-prefix_net%8); - aaaa[prefix_net/8+1] |= a[1] >> (0+prefix_net%8); - aaaa[prefix_net/8+2] |= a[1] << (8-prefix_net%8); - aaaa[prefix_net/8+2] |= a[2] >> (0+prefix_net%8); - aaaa[prefix_net/8+3] |= a[2] << (8-prefix_net%8); - aaaa[prefix_net/8+3] |= a[3] >> (0+prefix_net%8); - if (prefix_net/8+4 < 16) /* <-- my beautiful symmetry is destroyed! */ - aaaa[prefix_net/8+4] |= a[3] << (8-prefix_net%8); + for(i = 0, pos = prefix_net / 8; i < a_len; i++, pos++) { + if(pos == 8) + aaaa[pos++] = 0; + aaaa[pos] = a[i]; + } } @@ -374,8 +376,10 @@ dns64_apply_cfg(struct dns64_env* dns64_env, struct config_file* cfg) log_err("dns64_prefix is not IPv6: %s", cfg->dns64_prefix); return 0; } - if (dns64_env->prefix_net < 0 || dns64_env->prefix_net > 96) { - log_err("dns64-prefix length it not between 0 and 96: %s", + if (dns64_env->prefix_net != 32 && dns64_env->prefix_net != 40 && + dns64_env->prefix_net != 48 && dns64_env->prefix_net != 56 && + dns64_env->prefix_net != 64 && dns64_env->prefix_net != 96 ) { + log_err("dns64-prefix length it not 32, 40, 48, 56, 64 or 96: %s", cfg->dns64_prefix); return 0; } From e55f38fa83f5d43f202ca489cc72078adeeb694f Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 15 Jan 2021 08:15:54 +0100 Subject: [PATCH 357/394] Changelog entry for #402. - Merge #402 from fobser: Implement IPv4-Embedded addresses according to RFC6052. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 335ecf89b..2edaa330d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +15 January 2021: Wouter + - Merge #402 from fobser: Implement IPv4-Embedded addresses according + to RFC6052. + 14 January 2021: Wouter - Fix for #93: dynlibmodule import library is named libunbound.dll.a. From c125fe67bc42ec732ad53a3d2f095d656c9a03f4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 Jan 2021 08:29:52 +0100 Subject: [PATCH 358/394] - Fix #404: DNS query with small edns bufsize fail. --- doc/Changelog | 3 +++ doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 5 ++--- util/config_file.c | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 2edaa330d..27e8621c3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +18 January 2021: Wouter + - Fix #404: DNS query with small edns bufsize fail. + 15 January 2021: Wouter - Merge #402 from fobser: Implement IPv4-Embedded addresses according to RFC6052. diff --git a/doc/example.conf.in b/doc/example.conf.in index b51bcfca5..c1c3eb9b3 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -388,7 +388,7 @@ server: # target-fetch-policy: "3 2 1 0 0" # Harden against very small EDNS buffer sizes. - # harden-short-bufsize: no + # harden-short-bufsize: yes # Harden against unseemly large queries. # harden-large-queries: no diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index e7964d969..2fa8e7a95 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -839,9 +839,8 @@ closer to that of BIND 9, while setting "\-1 \-1 \-1 \-1 \-1" gives behaviour rumoured to be closer to that of BIND 8. .TP .B harden\-short\-bufsize: \fI -Very small EDNS buffer sizes from queries are ignored. Default is off, since -it is legal protocol wise to send these, and unbound tries to give very -small answers to these queries, where possible. +Very small EDNS buffer sizes from queries are ignored. Default is on, as +described in the standard. .TP .B harden\-large\-queries: \fI Very large queries are ignored. Default is off, since it is legal protocol diff --git a/util/config_file.c b/util/config_file.c index 4c827b74e..a845dde23 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -220,7 +220,7 @@ config_create(void) cfg->views = NULL; cfg->acls = NULL; cfg->tcp_connection_limits = NULL; - cfg->harden_short_bufsize = 0; + cfg->harden_short_bufsize = 1; cfg->harden_large_queries = 0; cfg->harden_glue = 1; cfg->harden_dnssec_stripped = 1; @@ -388,6 +388,7 @@ struct config_file* config_create_forlib(void) cfg->val_log_level = 2; /* to fill why_bogus with */ cfg->val_log_squelch = 1; cfg->minimal_responses = 0; + cfg->harden_short_bufsize = 1; return cfg; } From f273716b8045e2b4f91306966582adafabb4f3f0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 18 Jan 2021 10:23:01 +0100 Subject: [PATCH 359/394] - Fix declaration before statement and signed comparison warning in dns64. --- dns64/dns64.c | 3 ++- doc/Changelog | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/dns64/dns64.c b/dns64/dns64.c index e7552bb7d..0a40fd49e 100644 --- a/dns64/dns64.c +++ b/dns64/dns64.c @@ -299,10 +299,11 @@ synthesize_aaaa(const uint8_t prefix_addr[], size_t prefix_addr_len, int prefix_net, const uint8_t a[], size_t a_len, uint8_t aaaa[], size_t aaaa_len) { + size_t i; + int pos; log_assert(prefix_addr_len == 16 && a_len == 4 && aaaa_len == 16); log_assert(prefix_net == 32 || prefix_net == 40 || prefix_net == 48 || prefix_net == 56 || prefix_net == 64 || prefix_net == 96); - int i, pos; (void)prefix_addr_len; (void)a_len; (void)aaaa_len; memcpy(aaaa, prefix_addr, 16); for(i = 0, pos = prefix_net / 8; i < a_len; i++, pos++) { diff --git a/doc/Changelog b/doc/Changelog index 27e8621c3..f50f294af 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 18 January 2021: Wouter - Fix #404: DNS query with small edns bufsize fail. + - Fix declaration before statement and signed comparison warning in + dns64. 15 January 2021: Wouter - Merge #402 from fobser: Implement IPv4-Embedded addresses according From 9056613a79c08a26ae70463e748aa0988a85c8a9 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 19 Jan 2021 12:15:18 +0100 Subject: [PATCH 360/394] - Fix TTL of SOA record for negative answers (localzone data and authzone) to be the minimum of the SOA TTL and the SOA.MINIMUM. --- services/authzone.c | 11 ++- services/localzone.c | 57 ++++++++++-- services/localzone.h | 4 + testdata/auth_zonefile_down.rpl | 157 +++++++++++++++++++++++++++++++- testdata/localdata.rpl | 18 ++-- 5 files changed, 227 insertions(+), 20 deletions(-) diff --git a/services/authzone.c b/services/authzone.c index 3ad38865e..3d7f49388 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -2331,7 +2331,8 @@ static int az_add_negative_soa(struct auth_zone* z, struct regional* region, struct dns_msg* msg) { - uint32_t minimum; + time_t minimum; + size_t i; struct packed_rrset_data* d; struct auth_rrset* soa; struct auth_data* apex = az_find_name(z, z->name, z->namelen); @@ -2348,9 +2349,11 @@ az_add_negative_soa(struct auth_zone* z, struct regional* region, /* last 4 bytes are minimum ttl in network format */ if(d->count == 0) return 0; if(d->rr_len[0] < 2+4) return 0; - minimum = sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-4)); - d->ttl = (time_t)minimum; - d->rr_ttl[0] = (time_t)minimum; + minimum = (time_t)sldns_read_uint32(d->rr_data[0]+(d->rr_len[0]-4)); + minimum = d->ttlttl:minimum; + d->ttl = minimum; + for(i=0; i < d->count + d->rrsig_count; i++) + d->rr_ttl[i] = minimum; msg->rep->ttl = get_rrset_ttl(msg->rep->rrsets[0]); msg->rep->prefetch_ttl = PREFETCH_TTL_CALC(msg->rep->ttl); msg->rep->serve_expired_ttl = msg->rep->ttl + SERVE_EXPIRED_TTL; diff --git a/services/localzone.c b/services/localzone.c index ed0d2c565..00067705e 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -463,6 +463,48 @@ lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t nmlen, return 1; } +/* Mark the SOA record for the zone. This only marks the SOA rrset; the data + * for the RR is entered later on local_zone_enter_rr() as with the other + * records. An artifical soa_negative record with a modified TTL (minimum of + * the TTL and the SOA.MINIMUM) is also created and marked for usage with + * negative answers and to avoid allocations during those answers. */ +static int +lz_mark_soa_for_zone(struct local_zone* z, struct ub_packed_rrset_key* soa_rrset, + uint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr) +{ + struct packed_rrset_data* pd = (struct packed_rrset_data*) + regional_alloc_zero(z->region, sizeof(*pd)); + struct ub_packed_rrset_key* rrset_negative = (struct ub_packed_rrset_key*) + regional_alloc_zero(z->region, sizeof(*rrset_negative)); + time_t minimum; + if(!rrset_negative||!pd) { + log_err("out of memory"); + return 0; + } + /* Mark the original SOA record and then continue with the negative one. */ + z->soa = soa_rrset; + rrset_negative->entry.key = rrset_negative; + pd->trust = rrset_trust_prim_noglue; + pd->security = sec_status_insecure; + rrset_negative->entry.data = pd; + rrset_negative->rk.dname = soa_rrset->rk.dname; + rrset_negative->rk.dname_len = soa_rrset->rk.dname_len; + rrset_negative->rk.type = soa_rrset->rk.type; + rrset_negative->rk.rrset_class = soa_rrset->rk.rrset_class; + if(!rrset_insert_rr(z->region, pd, rdata, rdata_len, ttl, rrstr)) + return 0; + /* last 4 bytes are minimum ttl in network format */ + if(pd->count == 0 || pd->rr_len[0] < 2+4) { + return 0; + } + minimum = (time_t)sldns_read_uint32(pd->rr_data[0]+(pd->rr_len[0]-4)); + pd->ttl = ttlrr_ttl[0] = pd->ttl; + + z->soa_negative = rrset_negative; + return 1; +} + int local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t nmlen, int nmlabs, uint16_t rrtype, uint16_t rrclass, time_t ttl, @@ -502,8 +544,10 @@ local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t nmlen, if(query_dname_compare(node->name, z->name) == 0) { if(rrtype == LDNS_RR_TYPE_NSEC) rrset->rrset->rk.flags = PACKED_RRSET_NSEC_AT_APEX; - if(rrtype == LDNS_RR_TYPE_SOA) - z->soa = rrset->rrset; + if(rrtype == LDNS_RR_TYPE_SOA && + !lz_mark_soa_for_zone(z, rrset->rrset, rdata, rdata_len, ttl, + rrstr)) + return 0; } } pd = (struct packed_rrset_data*)rrset->rrset->entry.data; @@ -1548,9 +1592,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, lz_type == local_zone_inform_redirect || lz_type == local_zone_always_nodata)? LDNS_RCODE_NOERROR:LDNS_RCODE_NXDOMAIN; - if(z->soa) + if(z->soa && z->soa_negative) return local_encode(qinfo, env, edns, repinfo, buf, temp, - z->soa, 0, rcode); + z->soa_negative, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, (rcode|BIT_AA)); return 1; @@ -1605,9 +1649,9 @@ local_zones_zone_answer(struct local_zone* z, struct module_env* env, * does not, then we should make this noerror/nodata */ if(ld && ld->rrsets) { int rcode = LDNS_RCODE_NOERROR; - if(z->soa) + if(z->soa && z->soa_negative) return local_encode(qinfo, env, edns, repinfo, buf, temp, - z->soa, 0, rcode); + z->soa_negative, 0, rcode); local_error_encode(qinfo, env, edns, repinfo, buf, temp, rcode, (rcode|BIT_AA)); return 1; @@ -2045,6 +2089,7 @@ void local_zones_del_data(struct local_zones* zones, /* did we delete the soa record ? */ if(query_dname_compare(d->name, z->name) == 0) z->soa = NULL; + z->soa_negative = NULL; /* cleanup the empty nonterminals for this name */ del_empty_term(z, d, name, len, labs); diff --git a/services/localzone.h b/services/localzone.h index 492629936..3da5c8754 100644 --- a/services/localzone.h +++ b/services/localzone.h @@ -158,6 +158,10 @@ struct local_zone { rbtree_type data; /** if data contains zone apex SOA data, this is a ptr to it. */ struct ub_packed_rrset_key* soa; + /** if data contains zone apex SOA data, this is a prt to an + * artificial negative SOA rrset (TTL is the minimum of the TTL and the + * SOA.MINIMUM). */ + struct ub_packed_rrset_key* soa_negative; }; /** diff --git a/testdata/auth_zonefile_down.rpl b/testdata/auth_zonefile_down.rpl index 09e7fd061..2b17c8433 100644 --- a/testdata/auth_zonefile_down.rpl +++ b/testdata/auth_zonefile_down.rpl @@ -1,6 +1,12 @@ ; config options server: target-fetch-policy: "0 0 0 0 0" + ; Options for singed zone. The zone is partially copied from val_negcache_nxdomain.rpl + trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" + val-override-date: "20180213111425" + qname-minimisation: "no" + trust-anchor-signaling: no + aggressive-nsec: yes auth-zone: name: "example.com." @@ -41,6 +47,50 @@ ns1 3600 IN A 1.2.3.4 ns2 3600 IN AAAA ::2 TEMPFILE_END +auth-zone: + name: "soa.high.com." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME soa.high.com +TEMPFILE_CONTENTS soa.high.com +$ORIGIN high.com. +soa 500 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 200 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +TEMPFILE_END + +auth-zone: + name: "soa.low.com." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME soa.low.com +TEMPFILE_CONTENTS soa.low.com +$ORIGIN low.com. +soa 200 IN SOA dns.example.de. hostmaster.dns.example.de. ( + 1379078166 28800 7200 604800 500 ) + 3600 IN NS ns1.example.com. + 3600 IN NS ns2.example.com. +TEMPFILE_END + +auth-zone: + name: "testzone.nlnetlabs.nl." + for-downstream: yes + for-upstream: no + zonefile: +TEMPFILE_NAME testzone.nlnetlabs.nl +TEMPFILE_CONTENTS testzone.nlnetlabs.nl +$ORIGIN testzone.nlnetlabs.nl. +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 4600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 4600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +TEMPFILE_END + stub-zone: name: "." stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. @@ -50,7 +100,7 @@ SCENARIO_BEGIN Test authority zone with zonefile for downstream responses ; K.ROOT-SERVERS.NET. RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 + ADDRESS 193.0.14.129 ENTRY_BEGIN MATCH opcode qtype qname ADJUST copy_id @@ -182,4 +232,109 @@ SECTION ANSWER www.example.com. IN A 1.2.3.4 ENTRY_END +; check SOA TTL to be the minimum of the SOA.minimum and the SOA TTL +STEP 30 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nonexistent.soa.high.com. IN A +ENTRY_END +STEP 31 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NXDOMAIN +SECTION QUESTION +nonexistent.soa.high.com IN A +SECTION AUTHORITY +soa.high.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 200 +ENTRY_END +; check that the original SOA is also returned +STEP 32 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +soa.high.com. IN SOA +ENTRY_END +STEP 33 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NOERROR +SECTION QUESTION +soa.high.com. IN SOA +SECTION ANSWER +soa.high.com. 500 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 200 +ENTRY_END + +; check SOA TTL to be the minimum of the SOA.minimum and the SOA TTL +STEP 40 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +nonexistent.soa.low.com. IN A +ENTRY_END +STEP 41 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NXDOMAIN +SECTION QUESTION +nonexistent.soa.low.com. IN A +SECTION AUTHORITY +soa.low.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 500 +ENTRY_END +; check that the original SOA is also returned +STEP 42 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +soa.low.com. IN SOA +ENTRY_END +STEP 43 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD RA AA NOERROR +SECTION QUESTION +soa.low.com. IN SOA +SECTION ANSWER +soa.low.com. 200 IN SOA dns.example.de. hostmaster.dns.example.de. 1379078166 28800 7200 604800 500 +ENTRY_END + +; check SOA TTL to be minimum of the SOA.minimum and the SOA TTL for DNSSEC +STEP 50 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN A +ENTRY_END +STEP 51 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD DO RA AA NXDOMAIN +SECTION QUESTION +ant.testzone.nlnetlabs.nl. IN A +SECTION AUTHORITY +testzone.nlnetlabs.nl. 3600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 3600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +alligator.testzone.nlnetlabs.nl. 3600 IN NSEC cheetah.testzone.nlnetlabs.nl. TXT RRSIG NSEC +alligator.testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 4 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. QAgQ0AsMoYG02+VPfoOctSPlTHdQOkQt5fFkSkzIbVhUzNOqa+dB/Qkc81AwFeJosA+PvYjt6utcVkIWmK2Djy9eXC49gILtVF79vUe4G7ZrybO5NXjqNa5ANoUGM+yew4wkjeNOMVAsvs+1kvFY7S8RAa/0AIYlZHQ8vNBPNaI= +testzone.nlnetlabs.nl. 3600 IN NSEC alligator.testzone.nlnetlabs.nl. NS SOA RRSIG NSEC DNSKEY +testzone.nlnetlabs.nl. 3600 IN RRSIG NSEC 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. gTKn6U1nal9oA79IRxLa/7zexl6A0yJZzeEGBbZ5rh5feyAr2X4LTR9bPCgcHeMVggf4FP+kD1L/sxzj/YLwB1ZKGKlwnzsHtPFTlmvDClaqQ76DRZq5Vejr2ZfnclBUb2vtxaXywTRW8oueaaq9flcShEQ/cQ+KRU8sc344qd0= +ENTRY_END +; check that the original SOA is also returned +STEP 52 QUERY +ENTRY_BEGIN +REPLY RD DO +SECTION QUESTION +testzone.nlnetlabs.nl. IN SOA +ENTRY_END +STEP 53 CHECK_ANSWER +ENTRY_BEGIN +MATCH all ttl +REPLY QR RD DO RA AA NOERROR +SECTION QUESTION +testzone.nlnetlabs.nl. IN SOA +SECTION ANSWER +testzone.nlnetlabs.nl. 4600 IN SOA ns.nlnetlabs.nl. ralph.nlnetlabs.nl. 1 14400 3600 604800 3600 +testzone.nlnetlabs.nl. 4600 IN RRSIG SOA 8 3 3600 20180313102201 20180213102201 44940 testzone.nlnetlabs.nl. GhmXNFQktZIgaBpGKwj9Q2mfq5+jcbRPK+PPgtRVicUPZga/d/iGEL8PV/8DzGwkaZbM14pamSUMgdJibW4zNhLz/ukjPilbjoj6giH1jtbdZLAQ6iK9pZ/4jKUEq4txviTczZNnDeolgPEEl4xo4NclQmi7zj1XBlQRbjvG0/0= +ENTRY_END + SCENARIO_END diff --git a/testdata/localdata.rpl b/testdata/localdata.rpl index eb25ef573..047fbeeba 100644 --- a/testdata/localdata.rpl +++ b/testdata/localdata.rpl @@ -88,12 +88,12 @@ local. IN A ENTRY_END STEP 6 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION local. IN A SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; positive SOA @@ -104,7 +104,7 @@ local. IN SOA ENTRY_END STEP 8 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION local. IN SOA @@ -136,12 +136,12 @@ serv.local. IN MX ENTRY_END STEP 12 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION serv.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; no such type, empty nonterminal @@ -152,12 +152,12 @@ bla.local. IN MX ENTRY_END STEP 14 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA SECTION QUESTION bla.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; nxdomain with SOA @@ -168,12 +168,12 @@ doing.local. IN MX ENTRY_END STEP 16 CHECK_ANSWER ENTRY_BEGIN -MATCH all +MATCH all ttl REPLY QR RA AA NXDOMAIN SECTION QUESTION doing.local. IN MX SECTION AUTHORITY -local. 3600 IN SOA nobody nobody 1 2 3 4 5 +local. 5 IN SOA nobody nobody 1 2 3 4 5 ENTRY_END ; nxdomain without SOA From 7ba51fce244f242ceeba3ecd0d77b37ce48c0ae3 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 19 Jan 2021 16:18:36 +0100 Subject: [PATCH 361/394] example.conf.in entry for nsid --- doc/example.conf.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/example.conf.in b/doc/example.conf.in index c1c3eb9b3..08d1620cf 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -377,6 +377,9 @@ server: # the version to report. Leave "" or default to return package version. # version: "" + # NSID identity (hex string, or "ascii_somestring"). default disabled. + # nsid: "aabbccdd" + # the target fetch policy. # series of integers describing the policy per dependency depth. # The number of values in the list determines the maximum dependency From 68d92b7bbbf1ffc5ff1300ec7f4f5361294155ab Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Tue, 19 Jan 2021 17:12:14 +0100 Subject: [PATCH 362/394] Prevent a few more yacc clashes. --- util/configyyrename.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/util/configyyrename.h b/util/configyyrename.h index f529be577..8c7ff5b5c 100644 --- a/util/configyyrename.h +++ b/util/configyyrename.h @@ -84,5 +84,11 @@ #define yyget_leng ub_c_get_leng #define yylineno ub_c_lineno #define yyget_text ub_c_get_text +#define yyss ub_c_ss +#define yysslim ub_c_sslim +#define yyssp ub_c_ssp +#define yystacksize ub_c_stacksize +#define yyvs ub_c_vs +#define yyvsp ub_c_vsp #endif /* UTIL_CONFIGYYRENAME_H */ From 68d51317fe6b8869b52c3f6c5dcc68bf5e9a70bf Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Tue, 19 Jan 2021 17:18:26 +0100 Subject: [PATCH 363/394] rpl tests for nsid --- testdata/nsid_ascii.rpl | 54 +++++++++++++++++++++++++++++++++++++++ testdata/nsid_hex.rpl | 54 +++++++++++++++++++++++++++++++++++++++ testdata/nsid_not_set.rpl | 47 ++++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+) create mode 100644 testdata/nsid_ascii.rpl create mode 100644 testdata/nsid_hex.rpl create mode 100644 testdata/nsid_not_set.rpl diff --git a/testdata/nsid_ascii.rpl b/testdata/nsid_ascii.rpl new file mode 100644 index 000000000..f357db5ae --- /dev/null +++ b/testdata/nsid_ascii.rpl @@ -0,0 +1,54 @@ +; config options +server: + nsid: "ascii_hopsa kidee" + +stub-zone: + name: "example." + stub-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test EDNS string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 00 ; Length 0 + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 0b ; Length 11 + 68 6F 70 73 61 20 ; "hopsa " + 6B 69 64 65 65 ; "kidee" + HEX_EDNSDATA_END +ENTRY_END +SCENARIO_END diff --git a/testdata/nsid_hex.rpl b/testdata/nsid_hex.rpl new file mode 100644 index 000000000..0d5e8f40d --- /dev/null +++ b/testdata/nsid_hex.rpl @@ -0,0 +1,54 @@ +; config options +server: + nsid: "0123456789abcdef" + +stub-zone: + name: "example." + stub-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test EDNS string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 00 ; Length 0 + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 08 ; Length 8 + 01 23 45 67 ; + 89 ab cd ef ; + HEX_EDNSDATA_END +ENTRY_END +SCENARIO_END diff --git a/testdata/nsid_not_set.rpl b/testdata/nsid_not_set.rpl new file mode 100644 index 000000000..06abe5985 --- /dev/null +++ b/testdata/nsid_not_set.rpl @@ -0,0 +1,47 @@ +; config options +stub-zone: + name: "example." + stub-addr: 192.0.2.1 +CONFIG_END + +SCENARIO_BEGIN Test EDNS string tag option + +RANGE_BEGIN 0 1000 + ADDRESS 192.0.2.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +example. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 03 ; Opcode NSID (3) + 00 00 ; Length 0 + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +example. IN A +SECTION ANSWER +example. IN A 198.51.100.1 +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + HEX_EDNSDATA_END +ENTRY_END +SCENARIO_END From 38e12229b8e6cd5c6b45c61851574492af5a2fa6 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 19 Jan 2021 20:09:34 +0100 Subject: [PATCH 364/394] - Feedback for PR #407. --- services/localzone.c | 8 ++++---- testdata/auth_zonefile_down.rpl | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/services/localzone.c b/services/localzone.c index 00067705e..4369e23c1 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -494,12 +494,12 @@ lz_mark_soa_for_zone(struct local_zone* z, struct ub_packed_rrset_key* soa_rrset if(!rrset_insert_rr(z->region, pd, rdata, rdata_len, ttl, rrstr)) return 0; /* last 4 bytes are minimum ttl in network format */ - if(pd->count == 0 || pd->rr_len[0] < 2+4) { + if(pd->count == 0 || pd->rr_len[0] < 2+4) return 0; - } minimum = (time_t)sldns_read_uint32(pd->rr_data[0]+(pd->rr_len[0]-4)); - pd->ttl = ttlrr_ttl[0] = pd->ttl; + minimum = ttlttl = minimum; + pd->rr_ttl[0] = minimum; z->soa_negative = rrset_negative; return 1; diff --git a/testdata/auth_zonefile_down.rpl b/testdata/auth_zonefile_down.rpl index 2b17c8433..9c5ecbb1c 100644 --- a/testdata/auth_zonefile_down.rpl +++ b/testdata/auth_zonefile_down.rpl @@ -1,7 +1,7 @@ ; config options server: target-fetch-policy: "0 0 0 0 0" - ; Options for singed zone. The zone is partially copied from val_negcache_nxdomain.rpl + ; Options for signed zone. The zone is partially copied from val_negcache_nxdomain.rpl trust-anchor: "testzone.nlnetlabs.nl. IN DS 2926 8 2 6f8512d1e82eecbd684fc4a76f39f8c5b411af385494873bdead663ddb78a88b" val-override-date: "20180213111425" qname-minimisation: "no" From dc23502abb07eba7e0819ee24f0e2bf51a2516f5 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Fri, 22 Jan 2021 12:33:56 +0100 Subject: [PATCH 365/394] - Updated Changelog for PR #407. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f50f294af..2b093005b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 January 2021: George + - Fix TTL of SOA record for negative answers (localzone and + authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. + 18 January 2021: Wouter - Fix #404: DNS query with small edns bufsize fail. - Fix declaration before statement and signed comparison warning in From 3a6f1ecafae3e34444089f2d81f4de49d9e94f3c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 22 Jan 2021 13:11:41 +0100 Subject: [PATCH 366/394] Fixup if brackets. --- services/localzone.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/localzone.c b/services/localzone.c index 4369e23c1..fd2ff2bb6 100644 --- a/services/localzone.c +++ b/services/localzone.c @@ -2087,9 +2087,10 @@ void local_zones_del_data(struct local_zones* zones, /* no memory recycling for zone deletions ... */ d->rrsets = NULL; /* did we delete the soa record ? */ - if(query_dname_compare(d->name, z->name) == 0) + if(query_dname_compare(d->name, z->name) == 0) { z->soa = NULL; z->soa_negative = NULL; + } /* cleanup the empty nonterminals for this name */ del_empty_term(z, d, name, len, labs); From 2a3548e1efbdfcc6d5e04d8633c13b1b5ea63e0a Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 22 Jan 2021 15:10:57 +0100 Subject: [PATCH 367/394] Move NSID Changelog entry to day of merge --- doc/Changelog | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index d7b4c21ee..5cb33ef2e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,10 @@ - Fix TTL of SOA record for negative answers (localzone and authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. +19 January 2021: Willem + - Support for RFC5001: DNS Name Server Identifier (NSID) Option + with the nsid: option in unbound.conf + 18 January 2021: Wouter - Fix #404: DNS query with small edns bufsize fail. - Fix declaration before statement and signed comparison warning in @@ -79,10 +83,6 @@ - Fix for #283: fix stream reuse and tcp fast open. - Fix update, with write event check with streamreuse and fastopen. -2 December 2020: Willem - - Support for RFC5001: DNS Name Server Identifier (NSID) Option - with the nsid: option in unbound.conf - 1 December 2020: Wouter - Fix #358: Squelch udp connect 'no route to host' errors on low verbosity. From fc49d145b51faefe45db538a9a57c8e1524babc6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Fri, 22 Jan 2021 15:14:10 +0100 Subject: [PATCH 368/394] Changelog entry for padding option --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 5cb33ef2e..f77355945 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +22 January 2022: Willem + - Padding of queries and responses with DNS over TLS as specified in + RFC7830 and RFC8467. + 22 January 2021: George - Fix TTL of SOA record for negative answers (localzone and authzone data) to be the minimum of the SOA TTL and the SOA.MINIMUM. From d253db04fddb915bdd98de1683bb9c5bfd8f862b Mon Sep 17 00:00:00 2001 From: Roland van Rijswijk-Deij Date: Fri, 22 Jan 2021 18:56:09 +0000 Subject: [PATCH 369/394] Addressed review comment from @wcawijngaards --- util/data/packed_rrset.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/util/data/packed_rrset.c b/util/data/packed_rrset.c index 6147233ab..e1a0833a2 100644 --- a/util/data/packed_rrset.c +++ b/util/data/packed_rrset.c @@ -276,6 +276,7 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, entry.data; uint8_t rr[65535]; size_t rlen = rrset->rk.dname_len + 2 + 2 + 4 + d->rr_len[i]; + time_t adjust = 0; log_assert(dest_len > 0 && dest); if(rlen > dest_len) { dest[0] = 0; @@ -286,8 +287,10 @@ int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t i, memmove(rr+rrset->rk.dname_len, &rrset->rk.type, 2); else sldns_write_uint16(rr+rrset->rk.dname_len, LDNS_RR_TYPE_RRSIG); memmove(rr+rrset->rk.dname_len+2, &rrset->rk.rrset_class, 2); + adjust = SERVE_ORIGINAL_TTL ? d->ttl_add : now; + if (d->rr_ttl[i] < adjust) adjust = d->rr_ttl[i]; /* Prevent negative TTL overflow */ sldns_write_uint32(rr+rrset->rk.dname_len+4, - (uint32_t)(d->rr_ttl[i]-(SERVE_ORIGINAL_TTL ? d->ttl_add : now))); + (uint32_t)(d->rr_ttl[i]-adjust)); memmove(rr+rrset->rk.dname_len+8, d->rr_data[i], d->rr_len[i]); if(sldns_wire2str_rr_buf(rr, rlen, dest, dest_len) == -1) { log_info("rrbuf failure %d %s", (int)d->rr_len[i], dest); @@ -333,6 +336,7 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, struct packed_rrset_data* data = (struct packed_rrset_data*) key->entry.data; size_t dsize, i; + time_t adjust = 0; if(!ck) return NULL; ck->id = key->id; @@ -351,14 +355,15 @@ packed_rrset_copy_region(struct ub_packed_rrset_key* key, ck->entry.data = d; packed_rrset_ptr_fixup(d); /* make TTLs relative - once per rrset */ + adjust = SERVE_ORIGINAL_TTL ? data->ttl_add : now; for(i=0; icount + d->rrsig_count; i++) { - if(d->rr_ttl[i] < now) + if(d->rr_ttl[i] < adjust) d->rr_ttl[i] = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->rr_ttl[i] -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + else d->rr_ttl[i] -= adjust; } - if(d->ttl < now) + if(d->ttl < adjust) d->ttl = SERVE_EXPIRED?SERVE_EXPIRED_REPLY_TTL:0; - else d->ttl -= SERVE_ORIGINAL_TTL ? data->ttl_add : now; + else d->ttl -= adjust; d->ttl_add = 0; /* TTLs have been made relative */ return ck; } From 54b84381f43937f26e3826f2c4024ae83645599b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 18:12:08 +0100 Subject: [PATCH 370/394] tdir test for padding option --- testdata/padding.tdir/padding.conf | 18 ++++ testdata/padding.tdir/padding.conf2 | 36 +++++++ testdata/padding.tdir/padding.dsc | 16 ++++ testdata/padding.tdir/padding.msgsizes | 4 + testdata/padding.tdir/padding.post | 23 +++++ testdata/padding.tdir/padding.pre | 65 +++++++++++++ testdata/padding.tdir/padding.test | 109 ++++++++++++++++++++++ testdata/padding.tdir/padding.testns | 33 +++++++ testdata/padding.tdir/unbound_control.key | 39 ++++++++ testdata/padding.tdir/unbound_control.pem | 22 +++++ testdata/padding.tdir/unbound_server.key | 39 ++++++++ testdata/padding.tdir/unbound_server.pem | 22 +++++ 12 files changed, 426 insertions(+) create mode 100644 testdata/padding.tdir/padding.conf create mode 100644 testdata/padding.tdir/padding.conf2 create mode 100644 testdata/padding.tdir/padding.dsc create mode 100644 testdata/padding.tdir/padding.msgsizes create mode 100644 testdata/padding.tdir/padding.post create mode 100644 testdata/padding.tdir/padding.pre create mode 100644 testdata/padding.tdir/padding.test create mode 100644 testdata/padding.tdir/padding.testns create mode 100644 testdata/padding.tdir/unbound_control.key create mode 100644 testdata/padding.tdir/unbound_control.pem create mode 100644 testdata/padding.tdir/unbound_server.key create mode 100644 testdata/padding.tdir/unbound_server.pem diff --git a/testdata/padding.tdir/padding.conf b/testdata/padding.tdir/padding.conf new file mode 100644 index 000000000..8ae6428cc --- /dev/null +++ b/testdata/padding.tdir/padding.conf @@ -0,0 +1,18 @@ +server: + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + + tls-cert-bundle: "unbound_server.pem" + tls-upstream: yes + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@#unbound" + + diff --git a/testdata/padding.tdir/padding.conf2 b/testdata/padding.tdir/padding.conf2 new file mode 100644 index 000000000..193209233 --- /dev/null +++ b/testdata/padding.tdir/padding.conf2 @@ -0,0 +1,36 @@ +# this is the upstream server that has pipelining and responds to queries. +server: + verbosity: 1 + # num-threads: 1 + interface: 127.0.0.1@@PORT@ + port: @PORT@ + use-syslog: no + directory: . + pidfile: "unbound2.pid" + chroot: "" + username: "" + do-not-query-localhost: no + tls-port: @PORT@ + tls-service-key: "unbound_server.key" + tls-service-pem: "unbound_server.pem" + tcp-idle-timeout: 10000 + log-queries: yes + log-replies: yes + log-identity: "upstream" + +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" +dnstap: + dnstap-enable: yes + dnstap-socket-path: "dnstap.socket" + dnstap-send-identity: yes + dnstap-send-version: yes + #dnstap-identity + #dnstap-version + dnstap-log-resolver-query-messages: no + dnstap-log-resolver-response-messages: no + dnstap-log-client-query-messages: yes + dnstap-log-client-response-messages: yes + dnstap-log-forwarder-query-messages: no + dnstap-log-forwarder-response-messages: no diff --git a/testdata/padding.tdir/padding.dsc b/testdata/padding.tdir/padding.dsc new file mode 100644 index 000000000..37aceb353 --- /dev/null +++ b/testdata/padding.tdir/padding.dsc @@ -0,0 +1,16 @@ +BaseName: padding +Version: 1.0 +Description: Test EDNS0 padding option (RFC7830 and RFC8467). +CreationDate: Sun Jan 24 16:41:42 CET 2021 +Maintainer: Willem Toorop +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: padding.pre +Post: padding.post +Test: padding.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/padding.tdir/padding.msgsizes b/testdata/padding.tdir/padding.msgsizes new file mode 100644 index 000000000..c43d05a96 --- /dev/null +++ b/testdata/padding.tdir/padding.msgsizes @@ -0,0 +1,4 @@ +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 468 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 936 diff --git a/testdata/padding.tdir/padding.post b/testdata/padding.tdir/padding.post new file mode 100644 index 000000000..826798a8f --- /dev/null +++ b/testdata/padding.tdir/padding.post @@ -0,0 +1,23 @@ +# #-- padding.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +PRE="../.." +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi +kill_pid $DNSTAP_SOCKET_PID +kill_pid $FWD_PID +kill_pid `cat unbound2.pid` +if test -f unbound2.log; then + echo ">>> upstream log" + cat unbound2.log +fi +#kill_pid $UNBOUND_PID +kill_pid `cat unbound.pid` +if test -f unbound.log; then + echo ">>> unbound log" + cat unbound.log +fi diff --git a/testdata/padding.tdir/padding.pre b/testdata/padding.tdir/padding.pre new file mode 100644 index 000000000..6022cf4e4 --- /dev/null +++ b/testdata/padding.tdir/padding.pre @@ -0,0 +1,65 @@ +# #-- padding.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +get_random_port 3 +UNBOUND_PORT=$RND_PORT +UPSTREAM_PORT=$(($RND_PORT + 1)) +FWD_PORT=$(($RND_PORT + 2)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test + +# start ldns-testnd +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT padding.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start the dnstap log server +# the -vvvv flag prints protocol and connection information from the +# unbound-dnstap-socket server. +# the -l flag prints the DNS info in the DNSTAP packet in multiline output. +# stderr is the '-vvvv' server logs and errors. +# stdout is the one-line packet logs (or with -l, multiline). +$PRE/unbound-dnstap-socket -u dnstap.socket -l -vvvv 2>tap.errlog >tap.log & +if test $? -ne 0; then + echo "could not start unbound-dnstap-socket server" + exit 1 +fi +DNSTAP_SOCKET_PID=$! +echo "DNSTAP_SOCKET_PID=$DNSTAP_SOCKET_PID" >> .tpkg.var.test +# wait for the server to go up and make the dnstap.socket file +wait_server_up "tap.errlog" "creating unix socket" +if test ! -S dnstap.socket; then + echo "the dnstap.socket file does not exist!" +fi + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < padding.conf > ub.conf +# start unbound in the background +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +#$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +# make upstream config file +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < padding.conf2 > ub2.conf +# start upstream unbound in the background +$PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & +#$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & +UPSTREAM_PID=$! +echo "UPSTREAM_PID=$UPSTREAM_PID" >> .tpkg.var.test + +wait_ldns_testns_up fwd.log +wait_unbound_up unbound.log +wait_unbound_up unbound2.log + +cat .tpkg.var.test + diff --git a/testdata/padding.tdir/padding.test b/testdata/padding.tdir/padding.test new file mode 100644 index 000000000..53874b585 --- /dev/null +++ b/testdata/padding.tdir/padding.test @@ -0,0 +1,109 @@ +echo There we go... + +# #-- padding.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +PRE="../.." +. ../common.sh +if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi + +echo "> query www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> wait for log to happen on timer" +sleep 3 +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "www.example.com" tap.log >/dev/null; then :; else sleep 10; fi +if grep "www.example.com" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> query txt.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> check answer" +if grep "Lorem ipsum" outfile; then + echo "OK" +else + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound2.log + cat unbound.log + echo "Not OK" + exit 1 +fi +echo "> wait for log to happen on timer" +sleep 3 +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 1; fi +if grep "txt.example.com" tap.log >/dev/null; then :; else sleep 10; fi +if grep "txt.example.com" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + +echo "> wait for message to be fully written to log" +sleep 1 +grep '^;; MSG SIZE rcvd: ' tap.log > message.sizes +if diff message.sizes padding.msgsizes +then + echo "OK" + exit 0 +else + echo "unexpected message sizes" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns new file mode 100644 index 000000000..714c35912 --- /dev/null +++ b/testdata/padding.tdir/padding.testns @@ -0,0 +1,33 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +txt IN TXT +SECTION ANSWER +txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing " +txt IN TXT "elit, sed do eiusmod tempor incididunt ut labore et " +txt IN TXT "dolore magna aliqua. Ut enim ad minim veniam, quis " +txt IN TXT "nostrud exercitation ullamco laboris nisi ut aliquip " +txt IN TXT "ex ea commodo consequat. Duis aute irure dolor in " +txt IN TXT "reprehenderit in voluptate velit esse cillum dolore " +txt IN TXT "eu fugiat nulla pariatur. Excepteur sint occaecat " +txt IN TXT "cupidatat non proident, sunt in culpa qui officia " +txt IN TXT "deserunt mollit anim id est laborum." +ENTRY_END + + diff --git a/testdata/padding.tdir/unbound_control.key b/testdata/padding.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/padding.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG4gIBAAKCAYEAstEp+Pyh8XGrtZ77A4FhYjvbeB3dMa7Q2rGWxobzlA9przhA +1aChAvUtCOAuM+rB6NTNB8YWfZJbQHawyMNpmC77cg6vXLYCGUQHZyAqidN049RJ +F5T7j4N8Vniv17LiRdr0S6swy4PRvEnIPPV43EQHZqC5jVvHsKkhIfmBF/Dj5TXR +ypeawWV/m5jeU6/4HRYMfytBZdO1mPXuWLh0lgbQ4SCbgrOUVD3rniMk1yZIbQOm +vlDHYqekjDb/vOW2KxUQLG04aZMJ1mWfdbwG0CKQkSjISEDZ1l76vhM6mTM0fwXb +IvyFZ9yPPCle1mF5aSlxS2cmGuGVSRQaw8XF9fe3a9ACJJTr33HdSpyaZkKRAUzL +cKqLCl323daKv3NwwAT03Tj4iQM416ASMoiyfFa/2GWTKQVjddu8Crar7tGaf5xr +lig4DBmrBvdYA3njy72/RD71hLwmlRoCGU7dRuDr9O6KASUm1Ri91ONZ/qdjMvov +15l2vj4GV+KXR00dAgMBAAECggGAHepIL1N0dEQkCdpy+/8lH54L9WhpnOo2HqAf +LU9eaKK7d4jdr9+TkD8cLaPzltPrZNxVALvu/0sA4SP6J1wpyj/x6P7z73qzly5+ +Xo5PD4fEwmi9YaiW/UduAblnEZrnp/AddptJKoL/D5T4XtpiQddPtael4zQ7kB57 +YIexRSQTvEDovA/o3/nvA0TrzOxfgd4ycQP3iOWGN/TMzyLsvjydrUwbOB567iz9 +whL3Etdgvnwh5Sz2blbFfH+nAR8ctvFFz+osPvuIVR21VMEI6wm7kTpSNnQ6sh/c +lrLb/bTADn4g7z/LpIZJ+MrLvyEcoqValrLYeFBhM9CV8woPxvkO2P3pU47HVGax +tC7GV6a/kt5RoKFd/TNdiA3OC7NGZtaeXv9VkPf4fVwBtSO9d5ZZXTGEynDD/rUQ +U4KFJe6OD23APjse08HiiKqTPhsOneOONU67iqoaTdIkT2R4EdlkVEDpXVtWb+G9 +Q+IqYzVljlzuyHrhWXLJw/FMa2aBAoHBAOnZbi4gGpH+P6886WDWVgIlTccuXoyc +Mg9QQYk9UDeXxL0AizR5bZy49Sduegz9vkHpAiZARQsUnizHjZ8YlRcrmn4t6tx3 +ahTIKAjdprnxJfYINM580j8CGbXvX5LhIlm3O267D0Op+co3+7Ujy+cjsIuFQrP+ +1MqMgXSeBjzC1APivmps7HeFE+4w0k2PfN5wSMDNCzLo99PZuUG5XZ93OVOS5dpN +b+WskdcD8NOoJy/X/5A08veEI/jYO/DyqQKBwQDDwUQCOWf41ecvJLtBHKmEnHDz +ftzHino9DRKG8a9XaN4rmetnoWEaM2vHGX3pf3mwH+dAe8vJdAQueDhBKYeEpm6C +TYNOpou1+Zs5s99BilCTNYo8fkMOAyqwRwmz9zgHS6QxXuPwsghKefLJGt6o6RFF +tfWVTfLlYJ+I3GQe3ySsk3wjVz4oUTKiyiq5+KzD+HhEkS7u+RQ7Z0ZI2xd2cF8Y +aN2hjKDpcOiFf3CDoqka5D1qMNLgIHO52AHww1UCgcA1h7o7AMpURRka6hyaODY0 +A4oMYEbwdQjYjIyT998W+rzkbu1us6UtzQEBZ760npkgyU/epbOoV63lnkCC/MOU +LD0PST+L/CHiY/cWIHb79YG1EifUZKpUFg0Aoq0EGFkepF0MefGCkbRGYA5UZr9U +R80wAu9D+L+JJiS0J0BSRF74DL196zUuHt5zFeXuLzxsRtPAnq9DliS08BACRYZy +7H3I7cWD9Vn5/0jbKWHFcaaWwyETR6uekTcSzZzbCRECgcBeoE3/xUA9SSk34Mmj +7/cB4522Ft0imA3+9RK/qJTZ7Bd5fC4PKjOGNtUiqW/0L2rjeIiQ40bfWvWqgPKw +jSK1PL6uvkl6+4cNsFsYyZpiVDoe7wKju2UuoNlB3RUTqa2r2STFuNj2wRjA57I1 +BIgdnox65jqQsd14g/yaa+75/WP9CE45xzKEyrtvdcqxm0Pod3OrsYK+gikFjiar +kT0GQ8u0QPzh2tjt/2ZnIfOBrl+QYERP0MofDZDjhUdq2wECgcB0Lu841+yP5cdR +qbJhXO4zJNh7oWNcJlOuQp3ZMNFrA1oHpe9pmLukiROOy01k9WxIMQDzU5GSqRv3 +VLkYOIcbhJ3kClKAcM3j95SkKbU2H5/RENb3Ck52xtl4pNU1x/3PnVFZfDVuuHO9 +MZ9YBcIeK98MyP2jr5JtFKnOyPE7xKq0IHIhXadpbc2wjje5FtZ1cUtMyEECCXNa +C1TpXebHGyXGpY9WdWXhjdE/1jPvfS+uO5WyuDpYPr339gsdq1g= +-----END RSA PRIVATE KEY----- diff --git a/testdata/padding.tdir/unbound_control.pem b/testdata/padding.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/padding.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/padding.tdir/unbound_server.key b/testdata/padding.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/padding.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== +-----END RSA PRIVATE KEY----- diff --git a/testdata/padding.tdir/unbound_server.pem b/testdata/padding.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/padding.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- From efc8022ca4d5de01017915c87d375c82362e450a Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 18:29:00 +0100 Subject: [PATCH 371/394] padding.tdir text in single TXT RR So the sentences are not re-ordered and the text makes sense! --- testdata/padding.tdir/padding.testns | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns index 714c35912..599323646 100644 --- a/testdata/padding.tdir/padding.testns +++ b/testdata/padding.tdir/padding.testns @@ -19,15 +19,7 @@ ADJUST copy_id SECTION QUESTION txt IN TXT SECTION ANSWER -txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing " -txt IN TXT "elit, sed do eiusmod tempor incididunt ut labore et " -txt IN TXT "dolore magna aliqua. Ut enim ad minim veniam, quis " -txt IN TXT "nostrud exercitation ullamco laboris nisi ut aliquip " -txt IN TXT "ex ea commodo consequat. Duis aute irure dolor in " -txt IN TXT "reprehenderit in voluptate velit esse cillum dolore " -txt IN TXT "eu fugiat nulla pariatur. Excepteur sint occaecat " -txt IN TXT "cupidatat non proident, sunt in culpa qui officia " -txt IN TXT "deserunt mollit anim id est laborum." +txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ENTRY_END From 4694323b1cfe38bc4cc53e65d1d0899ed11e1a2b Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Sun, 24 Jan 2021 20:17:44 +0100 Subject: [PATCH 372/394] Test some different padding sizes --- testdata/padding.tdir/padding.conf | 9 ++++ testdata/padding.tdir/padding.conf2 | 11 ++++ testdata/padding.tdir/padding.msgsizes | 16 ++++++ testdata/padding.tdir/padding.pre | 10 ++-- testdata/padding.tdir/padding.test | 75 +++++++++++++++++++++++--- testdata/padding.tdir/padding.testns | 9 ++++ 6 files changed, 120 insertions(+), 10 deletions(-) diff --git a/testdata/padding.tdir/padding.conf b/testdata/padding.tdir/padding.conf index 8ae6428cc..c310d355d 100644 --- a/testdata/padding.tdir/padding.conf +++ b/testdata/padding.tdir/padding.conf @@ -11,6 +11,15 @@ server: tls-cert-bundle: "unbound_server.pem" tls-upstream: yes +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@#unbound" diff --git a/testdata/padding.tdir/padding.conf2 b/testdata/padding.tdir/padding.conf2 index 193209233..98be8fec7 100644 --- a/testdata/padding.tdir/padding.conf2 +++ b/testdata/padding.tdir/padding.conf2 @@ -18,9 +18,20 @@ server: log-replies: yes log-identity: "upstream" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT2@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" + forward-zone: name: "." forward-addr: "127.0.0.1@@TOPORT@" + dnstap: dnstap-enable: yes dnstap-socket-path: "dnstap.socket" diff --git a/testdata/padding.tdir/padding.msgsizes b/testdata/padding.tdir/padding.msgsizes index c43d05a96..f0d4a496d 100644 --- a/testdata/padding.tdir/padding.msgsizes +++ b/testdata/padding.tdir/padding.msgsizes @@ -2,3 +2,19 @@ ;; MSG SIZE rcvd: 468 ;; MSG SIZE rcvd: 128 ;; MSG SIZE rcvd: 936 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 60 +;; MSG SIZE rcvd: 128 +;; MSG SIZE rcvd: 502 +;; MSG SIZE rcvd: 44 +;; MSG SIZE rcvd: 60 +;; MSG SIZE rcvd: 44 +;; MSG SIZE rcvd: 502 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 64 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 +;; MSG SIZE rcvd: 48 +;; MSG SIZE rcvd: 512 diff --git a/testdata/padding.tdir/padding.pre b/testdata/padding.tdir/padding.pre index 6022cf4e4..4a13d0229 100644 --- a/testdata/padding.tdir/padding.pre +++ b/testdata/padding.tdir/padding.pre @@ -8,13 +8,17 @@ PRE="../.." . ../common.sh if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi -get_random_port 3 +get_random_port 5 UNBOUND_PORT=$RND_PORT UPSTREAM_PORT=$(($RND_PORT + 1)) FWD_PORT=$(($RND_PORT + 2)) +CONTROL_PORT=$(($RND_PORT + 3)) +CONTROL_PORT2=$(($RND_PORT + 4)) echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test echo "UPSTREAM_PORT=$UPSTREAM_PORT" >> .tpkg.var.test echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test +echo "CONTROL_PORT2=$CONTROL_PORT2" >> .tpkg.var.test # start ldns-testnd get_ldns_testns @@ -42,7 +46,7 @@ if test ! -S dnstap.socket; then fi # make config file -sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' < padding.conf > ub.conf +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$UPSTREAM_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < padding.conf > ub.conf # start unbound in the background $PRE/unbound -d -c ub.conf >unbound.log 2>&1 & #$PRE/unbound -d -c ub.conf 2>&1 | tee unbound.log & @@ -50,7 +54,7 @@ UNBOUND_PID=$! echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test # make upstream config file -sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' < padding.conf2 > ub2.conf +sed -e 's/@PORT\@/'$UPSTREAM_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@CONTROL_PORT2\@/'$CONTROL_PORT2'/' < padding.conf2 > ub2.conf # start upstream unbound in the background $PRE/unbound -d -c ub2.conf >unbound2.log 2>&1 & #$PRE/unbound -d -c ub2.conf 2>&1 | tee unbound2.log & diff --git a/testdata/padding.tdir/padding.test b/testdata/padding.tdir/padding.test index 53874b585..5111d8139 100644 --- a/testdata/padding.tdir/padding.test +++ b/testdata/padding.tdir/padding.test @@ -10,7 +10,7 @@ PRE="../.." . ../common.sh if grep "define USE_DNSTAP 1" $PRE/config.h; then echo test enabled; else echo test skipped; exit 0; fi -echo "> query www.example.com." +echo "> query www.example.com. A" dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile echo "> check answer" if grep "10.20.30.40" outfile; then @@ -50,7 +50,7 @@ else exit 1 fi -echo "> query txt.example.com." +echo "> query txt.example.com. TXT" dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile echo "> check answer" if grep "Lorem ipsum" outfile; then @@ -65,8 +65,6 @@ else echo "Not OK" exit 1 fi -echo "> wait for log to happen on timer" -sleep 3 echo "> check tap.log for dnstap info" # see if it logged the information in tap.log # wait for a moment for filesystem to catch up. @@ -89,12 +87,75 @@ else exit 1 fi -echo "> wait for message to be fully written to log" -sleep 1 +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> disable padding of responses." +$PRE/unbound-control -c ub2.conf set_option pad-responses: no +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> enable padding of responses." +$PRE/unbound-control -c ub2.conf set_option pad-responses: yes +echo "> set pad responses block size to 64" +$PRE/unbound-control -c ub2.conf set_option pad-responses-block-size: 64 +echo "> disable padding of queries." +$PRE/unbound-control -c ub.conf set_option pad-queries: no +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> enable padding of queries." +$PRE/unbound-control -c ub.conf set_option pad-queries: yes +echo "> set pad queries block size to 48" +$PRE/unbound-control -c ub.conf set_option pad-queries-block-size: 48 +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query txt.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT txt.example.com. TXT | tee outfile +echo "> flush cache entries." +$PRE/unbound-control -c ub.conf flush_type www.example.com A +$PRE/unbound-control -c ub.conf flush_type txt.example.com TXT +echo "> set pad responses block size to 512" +$PRE/unbound-control -c ub2.conf set_option pad-responses-block-size: 512 +echo "> query www.example.com. A" +dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. A | tee outfile +echo "> query fin.example.com. TXT" +dig @127.0.0.1 -p $UNBOUND_PORT fin.example.com. TXT | tee outfile +echo "> check tap.log for dnstap info" +# see if it logged the information in tap.log +# wait for a moment for filesystem to catch up. +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 1; fi +if grep "fini" tap.log >/dev/null; then :; else sleep 10; fi +if grep "fini" tap.log; then echo "yes it is in tap.log"; +else + echo "information not in tap.log" + echo "failed" + echo "> cat logfiles" + cat tap.log + cat tap.errlog + cat fwd.log + cat unbound.log + echo "Not OK" + exit 1 +fi + grep '^;; MSG SIZE rcvd: ' tap.log > message.sizes + if diff message.sizes padding.msgsizes then - echo "OK" + echo "OK - Message sizes matched expected sizes" exit 0 else echo "unexpected message sizes" diff --git a/testdata/padding.tdir/padding.testns b/testdata/padding.tdir/padding.testns index 599323646..bd3718ff6 100644 --- a/testdata/padding.tdir/padding.testns +++ b/testdata/padding.tdir/padding.testns @@ -22,4 +22,13 @@ SECTION ANSWER txt IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ENTRY_END +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +fin IN TXT +SECTION ANSWER +fin IN TXT "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." "fini" +ENTRY_END From ca2139bf3d4e10aa7fb8b810c08ca861194f72f6 Mon Sep 17 00:00:00 2001 From: Willem Toorop Date: Mon, 25 Jan 2021 15:13:54 +0100 Subject: [PATCH 373/394] Some review nits from George --- services/outside_network.c | 2 +- util/config_file.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index 7527a6321..11559ffac 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -3039,7 +3039,7 @@ outnet_serviced_query(struct outside_network* outnet, addrlen, zone, zonelen, (int)qinfo->qtype, qstate->edns_opts_back_out, ( ssl_upstream && env->cfg->pad_queries - ? env->cfg->pad_queries_block_size : 0)); + ? env->cfg->pad_queries_block_size : 0 )); if(!sq) { free(cb); return NULL; diff --git a/util/config_file.h b/util/config_file.h index 480b800c0..8f9dfa75a 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -601,12 +601,12 @@ struct config_file { /** number of slabs for dnscrypt nonces cache */ size_t dnscrypt_nonce_cache_slabs; - /** EDNS padding according to FC7830 and RFC8467 */ + /** EDNS padding according to RFC7830 and RFC8467 */ /** true to enable padding of responses (default: on) */ int pad_responses; /** block size with which to pad encrypted responses (default: 468) */ size_t pad_responses_block_size; - /** true to enable padding of queries (default: off) */ + /** true to enable padding of queries (default: on) */ int pad_queries; /** block size with which to pad encrypted queries (default: 128) */ size_t pad_queries_block_size; From b7acaaa9b836bec4dc934d9c73f6655989699ba4 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 25 Jan 2021 19:26:19 +0100 Subject: [PATCH 374/394] - Update example.con.in and add a testcase for PR #275. --- doc/example.conf.in | 7 ++ testdata/serve_original_ttl.rpl | 136 ++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 testdata/serve_original_ttl.rpl diff --git a/doc/example.conf.in b/doc/example.conf.in index b9b1c0525..9db622a47 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -598,6 +598,13 @@ server: # A recommended value is 1800. # serve-expired-client-timeout: 0 + # Return the original TTL as received from the upstream name server rather + # than the decrementing TTL as stored in the cache. Enabling this feature + # does not impact cache expiry, it only changes the TTL unbound embeds in + # responses to queries. Note that enabling this feature implicitly disables + # enforcement of the configured minimum and maximum TTL. + # serve-original-ttl: no + # Have the validator log failed validations for your diagnosis. # 0: off. 1: A line per failed user query. 2: With reason and bad IP. # val-log-level: 0 diff --git a/testdata/serve_original_ttl.rpl b/testdata/serve_original_ttl.rpl new file mode 100644 index 000000000..630fb39a4 --- /dev/null +++ b/testdata/serve_original_ttl.rpl @@ -0,0 +1,136 @@ +; config options +server: + access-control: 127.0.0.1 allow_snoop + module-config: "validator iterator" + qname-minimisation: "no" + minimal-responses: no + serve-original-ttl: yes + cache-max-ttl: 1000 + cache-min-ttl: 20 + serve-expired: yes + serve-expired-reply-ttl: 123 + +stub-zone: + name: "example.com" + stub-addr: 1.2.3.4 +CONFIG_END + +SCENARIO_BEGIN Test serve-original-ttl +; Scenario overview: +; - query for example.com. IN A +; - check that we get an answer for example.com. IN A with the correct TTL +; - query again after a couple seconds and check that we get the original TTL +; (next steps are combination with serve-expired) +; - query again after the TTL expired +; - check that we get the expired cached answer with the original TTL + +; ns.example.com. +RANGE_BEGIN 0 100 + ADDRESS 1.2.3.4 + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN NS + SECTION ANSWER + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END + + ENTRY_BEGIN + MATCH opcode qtype qname + ADJUST copy_id + REPLY QR NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 + ENTRY_END +RANGE_END + +; Query with RD flag +STEP 1 QUERY +ENTRY_BEGIN + REPLY RD + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got the correct answer (should be cached) +STEP 10 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RD RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 IN A 5.6.7.8 + SECTION AUTHORITY + example.com. IN NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. IN A 1.2.3.4 +ENTRY_END + +; Wait a couple of seconds (< 10) +STEP 11 TIME_PASSES ELAPSE 5 + +; Query again +STEP 20 QUERY +ENTRY_BEGIN + REPLY + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got the cached answer with the original TTL +; (Passively checks that minimum and maximum TTLs are ignored) +STEP 30 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 A 5.6.7.8 + SECTION AUTHORITY + example.com. 3600 NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. 3600 A 1.2.3.4 +ENTRY_END + +; Wait for the TTL to expire +STEP 31 TIME_PASSES ELAPSE 3601 + +; Query again +STEP 40 QUERY +ENTRY_BEGIN + REPLY + SECTION QUESTION + example.com. IN A +ENTRY_END + +; Check that we got a stale answer with the original TTL +STEP 50 CHECK_ANSWER +ENTRY_BEGIN + MATCH all ttl + REPLY QR RA NOERROR + SECTION QUESTION + example.com. IN A + SECTION ANSWER + example.com. 10 A 5.6.7.8 + SECTION AUTHORITY + example.com. NS ns.example.com. + SECTION ADDITIONAL + ns.example.com. A 1.2.3.4 +ENTRY_END + +; Give time for the pending query to get answered +STEP 51 TRAFFIC + +SCENARIO_END From 83d9f9d26801296fd1f5ee6200f5b15c1092da30 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 12:55:55 +0100 Subject: [PATCH 375/394] Changelog entry for: - Merge PR #408 from fobser: Prevent a few more yacc clashes. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f77355945..2bad8d96b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 January 2022: George + - Merge PR #408 from fobser: Prevent a few more yacc clashes. + 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From 2925fa46b06e1fef72c523d65635875754280bab Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 13:01:33 +0100 Subject: [PATCH 376/394] Changelog entry for: - Merge PR #275 by Roland van Rijswijk-Deij, Add feature to return the original instead of a decrementing TTL ('serve-original-ttl'). --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2bad8d96b..1c8af380d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,7 @@ 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. + - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the + original instead of a decrementing TTL ('serve-original-ttl') 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in From 3b9c7e28263da07e69e38e1739a5d4c77eea6d67 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 13:19:05 +0100 Subject: [PATCH 377/394] Changelog entry for: - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor static data. --- doc/Changelog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 1c8af380d..fed967d55 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the original instead of a decrementing TTL ('serve-original-ttl') + - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor + static data. 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in From 3124eb052df3144f3b996e8367ed76bc23e927ac Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 26 Jan 2021 15:31:50 +0100 Subject: [PATCH 378/394] - Ignore cache blacklisting when trying to reply with expired data from cache. (#394) --- doc/Changelog | 2 ++ services/mesh.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index fed967d55..af53d7836 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,8 @@ original instead of a decrementing TTL ('serve-original-ttl') - Merge PR #355 from noloader: Make ICANN Update CA and DS Trust Anchor static data. + - Ignore cache blacklisting when trying to reply with expired data from + cache (#394). 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in diff --git a/services/mesh.c b/services/mesh.c index 69f4d75e3..91d23debf 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1929,7 +1929,9 @@ mesh_serve_expired_callback(void* arg) verbose(VERB_ALGO, "Serve expired: Trying to reply with expired data"); comm_timer_delete(qstate->serve_expired_data->timer); qstate->serve_expired_data->timer = NULL; - if(qstate->blacklist || qstate->no_cache_lookup || qstate->is_drop) { + /* If is_drop or no_cache_lookup (modules that handle their own cache e.g., + * subnetmod) ignore stale data from the main cache. */ + if(qstate->no_cache_lookup || qstate->is_drop) { verbose(VERB_ALGO, "Serve expired: Not allowed to look into cache for stale"); return; From 8ad4c9f92ae3acafac386925d12c1ee084e5a777 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 26 Jan 2021 17:29:22 +0100 Subject: [PATCH 379/394] - Fix compile of unbound-dnstap-socket without dnstap installed. --- Makefile.in | 3 ++- configure | 2 ++ configure.ac | 2 +- doc/Changelog | 3 +++ 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile.in b/Makefile.in index 99943a650..6809881b6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -248,6 +248,7 @@ DNSTAP_SOCKET_SRC=dnstap/unbound-dnstap-socket.c DNSTAP_SOCKET_OBJ=unbound-dnstap-socket.lo DNSTAP_SOCKET_OBJ_LINK=$(DNSTAP_SOCKET_OBJ) $(COMMON_OBJ) \ $(COMPAT_OBJ) $(SLDNS_OBJ) +DNSTAP_SOCKET_TESTBIN=@DNSTAP_SOCKET_TESTBIN@ LIBUNBOUND_SRC=libunbound/context.c libunbound/libunbound.c \ libunbound/libworker.c LIBUNBOUND_OBJ=context.lo libunbound.lo libworker.lo ub_event_pluggable.lo @@ -323,7 +324,7 @@ rsrc_unbound_checkconf.o: $(srcdir)/winrc/rsrc_unbound_checkconf.rc config.h TEST_BIN=asynclook$(EXEEXT) delayer$(EXEEXT) \ lock-verify$(EXEEXT) memstats$(EXEEXT) perf$(EXEEXT) \ petal$(EXEEXT) pktview$(EXEEXT) streamtcp$(EXEEXT) \ - unbound-dnstap-socket$(EXEEXT) dohclient$(EXEEXT) \ + $(DNSTAP_SOCKET_TESTBIN) dohclient$(EXEEXT) \ testbound$(EXEEXT) unittest$(EXEEXT) tests: all $(TEST_BIN) diff --git a/configure b/configure index 7957f0dd6..9d10e6ee7 100755 --- a/configure +++ b/configure @@ -649,6 +649,7 @@ ENABLE_DNSCRYPT ENABLE_DNSCRYPT_XCHACHA20 DNSTAP_OBJ DNSTAP_SRC +DNSTAP_SOCKET_TESTBIN DNSTAP_SOCKET_PATH opt_dnstap_socket_path ENABLE_DNSTAP @@ -21191,6 +21192,7 @@ _ACEOF DNSTAP_SOCKET_PATH="$hdr_dnstap_socket_path" + DNSTAP_SOCKET_TESTBIN='unbound-dnstap-socket$(EXEEXT)' DNSTAP_SRC="dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c" diff --git a/configure.ac b/configure.ac index 3e872bca9..ee9ff1696 100644 --- a/configure.ac +++ b/configure.ac @@ -1743,7 +1743,7 @@ dt_DNSTAP([$UNBOUND_RUN_DIR/dnstap.sock], AC_DEFINE_UNQUOTED(DNSTAP_SOCKET_PATH, ["$hdr_dnstap_socket_path"], [default dnstap socket path]) AC_SUBST(DNSTAP_SOCKET_PATH,["$hdr_dnstap_socket_path"]) - + AC_SUBST(DNSTAP_SOCKET_TESTBIN,['unbound-dnstap-socket$(EXEEXT)']) AC_SUBST([DNSTAP_SRC], ["dnstap/dnstap.c dnstap/dnstap.pb-c.c dnstap/dnstap_fstrm.c dnstap/dtstream.c"]) AC_SUBST([DNSTAP_OBJ], ["dnstap.lo dnstap.pb-c.lo dnstap_fstrm.lo dtstream.lo"]) ], diff --git a/doc/Changelog b/doc/Changelog index af53d7836..0ccec087a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,9 @@ - Ignore cache blacklisting when trying to reply with expired data from cache (#394). +26 January 2022: Wouter + - Fix compile of unbound-dnstap-socket without dnstap installed. + 22 January 2022: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From 9d700e1f850fca1c687789e57f9c43236474a133 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:04:00 +0100 Subject: [PATCH 380/394] - Annotate that we ignore the return value of if_indextoname. --- doc/Changelog | 3 +++ services/listen_dnsport.c | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 0ccec087a..268d51ff2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +28 January 2022: Wouter + - Annotate that we ignore the return value of if_indextoname. + 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 629d4de72..b790660f2 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1456,7 +1456,7 @@ resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addres log_err("inet_ntop failed"); return 0; } - if_indextoname(in6->sin6_scope_id, + (void)if_indextoname(in6->sin6_scope_id, (char *)if_index_name); if (strlen(if_index_name) != 0) { snprintf(addr_buf, sizeof(addr_buf), From 9e6f8567ded09f432842afd96b9fb0a160e037c0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:07:16 +0100 Subject: [PATCH 381/394] - Fix to use correct type for label count in rpz routine. --- doc/Changelog | 1 + services/rpz.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 268d51ff2..f6d32249b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. + - Fix to use correct type for label count in rpz routine. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/services/rpz.c b/services/rpz.c index d7dd17f7e..2b6b0ac3f 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -668,7 +668,8 @@ rpz_find_zone(struct rpz* r, uint8_t* qname, size_t qname_len, uint16_t qclass, int only_exact, int wr, int zones_keep_lock) { uint8_t* ce; - size_t ce_len, ce_labs; + size_t ce_len; + int ce_labs; uint8_t wc[LDNS_MAX_DOMAINLEN+1]; int exact; struct local_zone* z = NULL; From cb55b5906a5748462eb720d2bd5278ecfbef8503 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:11:46 +0100 Subject: [PATCH 382/394] - Fix empty clause warning in config_file nsid parse. --- doc/Changelog | 1 + util/config_file.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index f6d32249b..8e6794136 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. + - Fix empty clause warning in config_file nsid parse. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/config_file.c b/util/config_file.c index 28816f747..4d87dee9b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -2064,8 +2064,9 @@ uint8_t* cfg_parse_nsid(const char* str, uint16_t* nsid_len) if ((nsid = (uint8_t *)strdup(str + 6))) *nsid_len = strlen(str + 6); - } else if (strlen(str) % 2) + } else if (strlen(str) % 2) { ; /* hex string has even number of characters */ + } else if (*str && (nsid = calloc(1, strlen(str) / 2))) { const char *ch; From 3a19ceaae67fc0d33dd79a3057834f1f54d2999c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:14:19 +0100 Subject: [PATCH 383/394] - Fix to use correct type for label count in ipdnametoaddr rpz routine. --- doc/Changelog | 1 + util/net_help.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8e6794136..83e617c9a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. + - Fix to use correct type for label count in ipdnametoaddr rpz routine. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/net_help.c b/util/net_help.c index c5216bc2d..3b5527adf 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -321,7 +321,7 @@ static int ipdnametoaddr(uint8_t* dname, size_t dnamelen, struct sockaddr_storage* addr, socklen_t* addrlen, int* af) { uint8_t* ia; - size_t dnamelabs = dname_count_labels(dname); + int dnamelabs = dname_count_labels(dname); uint8_t lablen; char* e = NULL; int z = 0; From ad8104bb7c3d27a3f70a27e764455112d541e454 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 09:15:45 +0100 Subject: [PATCH 384/394] - Fix empty clause warning in edns pass for padding. --- doc/Changelog | 1 + util/edns.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 83e617c9a..66b46d230 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. - Fix to use correct type for label count in ipdnametoaddr rpz routine. + - Fix empty clause warning in edns pass for padding. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/util/edns.c b/util/edns.c index 5d2121636..84308449c 100644 --- a/util/edns.c +++ b/util/edns.c @@ -166,8 +166,9 @@ int apply_edns_options(struct edns_data* edns_out, struct edns_data* edns_in, return 0; if(!cfg->pad_responses || c->type != comm_tcp || !c->ssl - || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) + || !edns_opt_list_find(edns_in->opt_list, LDNS_EDNS_PADDING)) { ; /* pass */ + } else if(!edns_opt_list_append(&edns_out->opt_list, LDNS_EDNS_PADDING , 0, NULL, region)) From 0ea86f6ccb68f885b2ed0d553e4627bc97b6f329 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 28 Jan 2021 11:19:34 +0100 Subject: [PATCH 385/394] - Fix fwd ancil test post script when not supported. --- doc/Changelog | 1 + testdata/fwd_ancil.tdir/fwd_ancil.post | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 66b46d230..cae27729a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix empty clause warning in config_file nsid parse. - Fix to use correct type for label count in ipdnametoaddr rpz routine. - Fix empty clause warning in edns pass for padding. + - Fix fwd ancil test post script when not supported. 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. diff --git a/testdata/fwd_ancil.tdir/fwd_ancil.post b/testdata/fwd_ancil.tdir/fwd_ancil.post index a74ba856e..6578151af 100644 --- a/testdata/fwd_ancil.tdir/fwd_ancil.post +++ b/testdata/fwd_ancil.tdir/fwd_ancil.post @@ -14,5 +14,9 @@ fi kill_pid $FWD_PID if fgrep "service stopped" unbound.log; then exit 0 -fi +fi +if fgrep "disable interface-automatic" unbound.log; then + echo "skip test" + exit 0 +fi kill_pid $UNBOUND_PID From 7262a249f1c55116b14e8e6bae08a6b0224d00cd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 29 Jan 2021 16:34:46 +0100 Subject: [PATCH 386/394] - Fix for doxygen 1.8.20 compatibility. --- doc/Changelog | 3 +++ doc/unbound.doxygen | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index cae27729a..33668733c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +29 January 2022: Wouter + - Fix for doxygen 1.8.20 compatibility. + 28 January 2022: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. diff --git a/doc/unbound.doxygen b/doc/unbound.doxygen index 45f49b367..4c32d8943 100644 --- a/doc/unbound.doxygen +++ b/doc/unbound.doxygen @@ -1143,7 +1143,7 @@ COMPACT_LATEX = NO # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. -PAPER_TYPE = a4wide +#PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. @@ -1451,7 +1451,7 @@ EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). -PERL_PATH = /usr/bin/perl +#PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool @@ -1473,7 +1473,7 @@ CLASS_DIAGRAMS = YES # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. -MSCGEN_PATH = +#MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented From a8485d58ca33b9841841e552dc98230e401b5588 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 Feb 2021 16:57:56 +0100 Subject: [PATCH 387/394] - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. --- doc/Changelog | 3 +++ services/outside_network.c | 25 +++++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index af53d7836..4a095a076 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +1 February 2022: George + - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. + 26 January 2022: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the diff --git a/services/outside_network.c b/services/outside_network.c index 11559ffac..6c6b42ccb 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -90,6 +90,10 @@ static int randomize_and_send_udp(struct pending* pend, sldns_buffer* packet, static void waiting_list_remove(struct outside_network* outnet, struct waiting_tcp* w); +/** remove reused element from tree and lru list */ +static void reuse_tcp_remove_tree_list(struct outside_network* outnet, + struct reuse_tcp* reuse); + int pending_cmp(const void* key1, const void* key2) { @@ -424,8 +428,11 @@ static int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp* pend_tcp) { log_reuse_tcp(VERB_CLIENT, "reuse_tcp_insert", &pend_tcp->reuse); - if(pend_tcp->reuse.item_on_lru_list) + if(pend_tcp->reuse.item_on_lru_list) { + if(!pend_tcp->reuse.node.key) + log_err("internal error: reuse_tcp_insert: on lru list without key"); return 1; + } pend_tcp->reuse.node.key = &pend_tcp->reuse; pend_tcp->reuse.pending = pend_tcp; if(!rbtree_insert(&outnet->tcp_reuse, &pend_tcp->reuse.node)) { @@ -477,7 +484,7 @@ reuse_tcp_find(struct outside_network* outnet, struct sockaddr_storage* addr, if(outnet->tcp_reuse.root == NULL || outnet->tcp_reuse.root == RBTREE_NULL) return NULL; - if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse.node, + if(rbtree_find_less_equal(&outnet->tcp_reuse, &key_p.reuse, &result)) { /* exact match */ /* but the key is on stack, and ptr is compared, impossible */ @@ -661,6 +668,14 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) pend->reuse.cp_more_write_again = 0; memcpy(&pend->c->repinfo.addr, &w->addr, w->addrlen); pend->reuse.pending = pend; + + /* Remove from tree in case the is_ssl will be different and causes the + * identity of the reuse_tcp to change; could result in nodes not being + * deleted from the tree (because the new identity does not match the + * previous node) but their ->key would be changed to NULL. */ + if(pend->reuse.node.key) + reuse_tcp_remove_tree_list(w->outnet, &pend->reuse); + if(pend->c->ssl) pend->reuse.is_ssl = 1; else pend->reuse.is_ssl = 0; @@ -677,8 +692,10 @@ outnet_tcp_take_into_use(struct waiting_tcp* w) static void reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp* reuse) { - if(!reuse->item_on_lru_list) + if(!reuse->item_on_lru_list) { + log_err("internal error: we need to touch the lru_list but item not in list"); return; /* not on the list, no lru to modify */ + } if(!reuse->lru_prev) return; /* already first in the list */ /* remove at current position */ @@ -847,7 +864,7 @@ reuse_tcp_remove_tree_list(struct outside_network* outnet, verbose(VERB_CLIENT, "reuse_tcp_remove_tree_list"); if(reuse->node.key) { /* delete it from reuse tree */ - (void)rbtree_delete(&outnet->tcp_reuse, &reuse->node); + (void)rbtree_delete(&outnet->tcp_reuse, reuse); reuse->node.key = NULL; } /* delete from reuse list */ From 21def26405345915711af8a43c191627dce305ed Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Mon, 1 Feb 2021 17:02:19 +0100 Subject: [PATCH 388/394] - Hide our time traveling abilities. --- doc/Changelog | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 0e8687470..b4778827c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,10 +1,10 @@ -1 February 2022: George +1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. -29 January 2022: Wouter +29 January 2021: Wouter - Fix for doxygen 1.8.20 compatibility. -28 January 2022: Wouter +28 January 2021: Wouter - Annotate that we ignore the return value of if_indextoname. - Fix to use correct type for label count in rpz routine. - Fix empty clause warning in config_file nsid parse. @@ -12,7 +12,7 @@ - Fix empty clause warning in edns pass for padding. - Fix fwd ancil test post script when not supported. -26 January 2022: George +26 January 2021: George - Merge PR #408 from fobser: Prevent a few more yacc clashes. - Merge PR #275 from Roland van Rijswijk-Deij: Add feature to return the original instead of a decrementing TTL ('serve-original-ttl') @@ -21,10 +21,10 @@ - Ignore cache blacklisting when trying to reply with expired data from cache (#394). -26 January 2022: Wouter +26 January 2021: Wouter - Fix compile of unbound-dnstap-socket without dnstap installed. -22 January 2022: Willem +22 January 2021: Willem - Padding of queries and responses with DNS over TLS as specified in RFC7830 and RFC8467. From a5a9672dc426ff0213cb3a1004cb3ffcf5e9ee84 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 08:48:44 +0100 Subject: [PATCH 389/394] - branch-1.13.1 is created, with release-1.13.1rc1 tag. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index b4778827c..690b0b268 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +2 February 2021: Wouter + - branch-1.13.1 is created, with release-1.13.1rc1 tag. + 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. From bc013b66ed1716a1a703cc98b4d8406e75a54fe7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 13:18:18 +0100 Subject: [PATCH 390/394] - Fix dynlibmod link on rhel8 for -ldl inclusion. --- configure | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++- configure.ac | 6 ++++- doc/Changelog | 1 + 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/configure b/configure index 9d10e6ee7..c896bbc96 100755 --- a/configure +++ b/configure @@ -17236,7 +17236,66 @@ $as_echo "#define WITH_DYNLIBMODULE 1" >>confdefs.h DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' if test $on_mingw = "no"; then - DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + # link with -ldl if not already there, for all executables because + # dlopen call is in the dynlib module. For unbound executable, also + # export symbols. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +$as_echo_n "checking for library containing dlopen... " >&6; } +if ${ac_cv_search_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +for ac_lib in '' dl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_dlopen=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_dlopen+:} false; then : + break +fi +done +if ${ac_cv_search_dlopen+:} false; then : + +else + ac_cv_search_dlopen=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +$as_echo "$ac_cv_search_dlopen" >&6; } +ac_res=$ac_cv_search_dlopen +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +fi + + DYNLIBMOD_EXTRALIBS="-export-dynamic" else DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi diff --git a/configure.ac b/configure.ac index ee9ff1696..0b37bfc30 100644 --- a/configure.ac +++ b/configure.ac @@ -642,7 +642,11 @@ if test x_$withval != x_no; then DYNLIBMOD_HEADER='$(srcdir)/dynlibmod/dynlibmod.h' AC_SUBST(DYNLIBMOD_HEADER) if test $on_mingw = "no"; then - DYNLIBMOD_EXTRALIBS="-ldl -export-dynamic" + # link with -ldl if not already there, for all executables because + # dlopen call is in the dynlib module. For unbound executable, also + # export symbols. + AC_SEARCH_LIBS([dlopen], [dl]) + DYNLIBMOD_EXTRALIBS="-export-dynamic" else DYNLIBMOD_EXTRALIBS="-Wl,--export-all-symbols,--out-implib,libunbound.dll.a" fi diff --git a/doc/Changelog b/doc/Changelog index 690b0b268..fcf84deb5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. + - Fix dynlibmod link on rhel8 for -ldl inclusion. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. From f9a1ac3f0b1a415d8085e113d44797e62c436a52 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:30:53 +0100 Subject: [PATCH 391/394] - Fix windows dependency on libssp.dll because of default stack protector in mingw. --- configure.ac | 2 ++ doc/Changelog | 2 ++ makedist.sh | 5 +++++ 3 files changed, 9 insertions(+) diff --git a/configure.ac b/configure.ac index 0b37bfc30..9f3455c0f 100644 --- a/configure.ac +++ b/configure.ac @@ -1442,6 +1442,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi @@ -1458,6 +1459,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi diff --git a/doc/Changelog b/doc/Changelog index fcf84deb5..328b84663 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,8 @@ 2 February 2021: Wouter - branch-1.13.1 is created, with release-1.13.1rc1 tag. - Fix dynlibmod link on rhel8 for -ldl inclusion. + - Fix windows dependency on libssp.dll because of default stack + protector in mingw. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. diff --git a/makedist.sh b/makedist.sh index c3bfcaad3..25cabe136 100755 --- a/makedist.sh +++ b/makedist.sh @@ -412,6 +412,11 @@ if [ "$DOWIN" = "yes" ]; then cp ../unbound.exe ../unbound-anchor.exe ../unbound-host.exe ../unbound-control.exe ../unbound-checkconf.exe ../unbound-service-install.exe ../unbound-service-remove.exe ../LICENSE ../winrc/unbound-control-setup.cmd ../winrc/unbound-website.url ../winrc/service.conf ../winrc/README.txt ../contrib/create_unbound_ad_servers.cmd ../contrib/warmup.cmd ../contrib/unbound_cache.cmd . mkdir libunbound cp ../../unbound_shared/unbound.h ../../unbound_shared/.libs/libunbound*.dll ../../unbound_shared/.libs/libunbound.dll.a ../../unbound_shared/.libs/libunbound.a ../../unbound_shared/.libs/libunbound*.def ../../sslsharedinstall/lib/libcrypto.dll.a ../../sslsharedinstall/lib/libssl.dll.a ../../sslsharedinstall/bin/libcrypto*.dll ../../sslsharedinstall/bin/libssl*.dll ../../wxpinstall/bin/libexpat*.dll ../../wxpinstall/lib/libexpat.dll.a libunbound/. + if test "$W64" = "no"; then + cp /usr/i686-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. + else + cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libssp-0.dll libunbound/. + fi # zipfile zip -r ../$file LICENSE README.txt unbound.exe unbound-anchor.exe unbound-host.exe unbound-control.exe unbound-checkconf.exe unbound-service-install.exe unbound-service-remove.exe unbound-control-setup.cmd example.conf service.conf root.key unbound-website.url create_unbound_ad_servers.cmd warmup.cmd unbound_cache.cmd Changelog libunbound info "Testing $file" From 18840665bcbb28c9de07bc3b20157a0dde13f8fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:31:05 +0100 Subject: [PATCH 392/394] And autoconf. --- configure | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configure b/configure index c896bbc96..12f6a97d6 100755 --- a/configure +++ b/configure @@ -19825,6 +19825,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi @@ -19844,6 +19845,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" + staticexe="$staticexe -l:libssp.a" fi fi From aa8dfe94d31e11c19897444b955af6ac10aec1cd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 14:52:05 +0100 Subject: [PATCH 393/394] Fixup to add to LIBS. --- configure | 4 ++-- configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index 12f6a97d6..622f51e87 100755 --- a/configure +++ b/configure @@ -19825,7 +19825,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi @@ -19845,7 +19845,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi diff --git a/configure.ac b/configure.ac index 9f3455c0f..2d88048f7 100644 --- a/configure.ac +++ b/configure.ac @@ -1442,7 +1442,7 @@ if test x_$enable_static_exe = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi @@ -1459,7 +1459,7 @@ if test x_$enable_fully_static = x_yes; then LIBS="$LIBS -lgdi32" fi LIBS="$LIBS -lz" - staticexe="$staticexe -l:libssp.a" + LIBS="$LIBS -l:libssp.a" fi fi From 46939294710d24a37f9f838141f26e6b063b01f3 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 2 Feb 2021 17:04:29 +0100 Subject: [PATCH 394/394] - Fix indentation of root anchor for use by windows install script. --- doc/Changelog | 1 + smallapp/unbound-anchor.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 328b84663..eea220c41 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ - Fix dynlibmod link on rhel8 for -ldl inclusion. - Fix windows dependency on libssp.dll because of default stack protector in mingw. + - Fix indentation of root anchor for use by windows install script. 1 February 2021: George - Attempt to fix NULL keys in the reuse_tcp tree; relates to #411. diff --git a/smallapp/unbound-anchor.c b/smallapp/unbound-anchor.c index c4e9b3bfd..3e6fc6e6f 100644 --- a/smallapp/unbound-anchor.c +++ b/smallapp/unbound-anchor.c @@ -183,7 +183,7 @@ static const char DS_TRUST_ANCHOR[] = /* The anchors must start on a new line with ". IN DS and end with \n"[;] * because the makedist script greps on the source here */ /* anchor 20326 is from 2017 */ - ". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; +". IN DS 20326 8 2 E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D\n"; /** verbosity for this application */ static int verb = 0;